summaryrefslogtreecommitdiff
path: root/src/battle_anim_effects_2.c
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2018-12-17 22:08:08 -0600
committerMarcus Huderle <huderlem@gmail.com>2018-12-17 22:16:17 -0600
commitc74468fd11b551e1babf18a4d320e114fe495bd8 (patch)
tree8ba43db879ed511759d2ea1329f63243316b83fa /src/battle_anim_effects_2.c
parentc04ce0ee64c4bffa4f01ca7aaa1b608b40357711 (diff)
Document a bunch of battle anim stuff
Diffstat (limited to 'src/battle_anim_effects_2.c')
-rwxr-xr-xsrc/battle_anim_effects_2.c427
1 files changed, 233 insertions, 194 deletions
diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c
index ba2ee3723..244823d13 100755
--- a/src/battle_anim_effects_2.c
+++ b/src/battle_anim_effects_2.c
@@ -23,19 +23,19 @@ void sub_8103448(struct Sprite *);
void sub_8103498(struct Sprite *);
void sub_810358C(struct Sprite *);
void sub_8103620(struct Sprite *);
-void sub_81037D8(struct Sprite *);
-void sub_810387C(struct Sprite *);
+void Anim_KinesisZapEnergy(struct Sprite *);
+void Anim_SwordsDanceBlade(struct Sprite *);
void AnimSonicBoomProjectile(struct Sprite *);
void sub_8103AA4(struct Sprite *);
void sub_8103FE8(struct Sprite *);
void sub_8104088(struct Sprite *);
void sub_810413C(struct Sprite *);
void sub_81041C4(struct Sprite *);
-void sub_8104304(struct Sprite *);
-void sub_8104364(struct Sprite *);
-void sub_8104414(struct Sprite *);
-void sub_8104B1C(struct Sprite *);
-void sub_8104BAC(struct Sprite *);
+void Anim_RazorWindTornado(struct Sprite *);
+void Anim_ViceGripPincer(struct Sprite *);
+void Anim_GuillotinePincer(struct Sprite *);
+void Anim_BreathPuff(struct Sprite *);
+void Anim_AngerMark(struct Sprite *);
void sub_810501C(struct Sprite *);
void sub_81051C4(struct Sprite *);
void sub_81052A4(struct Sprite *);
@@ -63,22 +63,22 @@ void sub_81070AC(struct Sprite *);
static void sub_81034D8(struct Sprite *);
static void sub_8103658(struct Sprite *);
static void sub_8103680(struct Sprite *);
-static void sub_81036DC(u8);
-static void sub_81038A0(struct Sprite *);
+static void AnimTask_WithdrawStep(u8);
+static void Anim_SwordsDanceBladeStep(struct Sprite *);
static void sub_8104018(struct Sprite *);
static void sub_8104154(struct Sprite *);
static void sub_810421C(struct Sprite *);
static void sub_81042A0(struct Sprite *);
-static void sub_81043F8(struct Sprite *);
-static void sub_81044BC(struct Sprite *);
-static void sub_8104530(struct Sprite *);
-static void sub_8104594(struct Sprite *);
-static void sub_8104614(u8);
-static void sub_81046CC(u8);
-static void sub_8104800(struct Task *, u8);
-static void sub_81048F0(struct Sprite *);
+static void Anim_ViceGripPincerStep(struct Sprite *);
+static void Anim_GuillotinePincerStep1(struct Sprite *);
+static void Anim_GuillotinePincerStep2(struct Sprite *);
+static void Anim_GuillotinePincerStep3(struct Sprite *);
+static void AnimTask_GrowAndGreyscaleStep(u8);
+static void AnimTask_MinimizeStep1(u8);
+static void CreateMinimizeSprite(struct Task *, u8);
+static void ClonedMinizeSprite_Step(struct Sprite *);
static void AnimTask_SplashStep(u8);
-static void sub_8104AF0(u8);
+static void AnimTask_GrowAndShrinkStep(u8);
static void sub_8104C78(u8);
static void sub_8104D28(u8);
static void sub_8104F54(u8);
@@ -219,7 +219,7 @@ const union AnimCmd *const gUnknown_08593340[] =
gUnknown_0859331C,
};
-const struct SpriteTemplate gUnknown_08593344 =
+const struct SpriteTemplate gKinesisZapEnergySpriteTemplate =
{
.tileTag = ANIM_TAG_ALERT,
.paletteTag = ANIM_TAG_ALERT,
@@ -227,7 +227,7 @@ const struct SpriteTemplate gUnknown_08593344 =
.anims = gUnknown_08593340,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81037D8,
+ .callback = Anim_KinesisZapEnergy,
};
const union AffineAnimCmd gUnknown_0859335C[] =
@@ -243,7 +243,7 @@ const union AffineAnimCmd *const gUnknown_0859337C[] =
gUnknown_0859335C,
};
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8593380 =
+const struct SpriteTemplate gSwordsDanceBladeSpriteTemplate =
{
.tileTag = ANIM_TAG_SWORD,
.paletteTag = ANIM_TAG_SWORD,
@@ -251,7 +251,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_8593380 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gUnknown_0859337C,
- .callback = sub_810387C,
+ .callback = Anim_SwordsDanceBlade,
};
const struct SpriteTemplate gSonicBoomSpriteTemplate =
@@ -449,7 +449,7 @@ const union AffineAnimCmd *const gUnknown_0859354C[] =
gUnknown_08593534,
};
-const struct SpriteTemplate gUnknown_08593550 =
+const struct SpriteTemplate gRazorWindTornadoSpriteTemplate =
{
.tileTag = ANIM_TAG_GUST,
.paletteTag = ANIM_TAG_GUST,
@@ -457,7 +457,7 @@ const struct SpriteTemplate gUnknown_08593550 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gUnknown_0859354C,
- .callback = sub_8104304,
+ .callback = Anim_RazorWindTornado,
};
const union AnimCmd gUnknown_08593568[] =
@@ -482,7 +482,7 @@ const union AnimCmd *const gUnknown_08593588[] =
gUnknown_08593578,
};
-const struct SpriteTemplate gUnknown_08593590 =
+const struct SpriteTemplate gViceGripSpriteTemplate =
{
.tileTag = ANIM_TAG_CUT,
.paletteTag = ANIM_TAG_CUT,
@@ -490,7 +490,7 @@ const struct SpriteTemplate gUnknown_08593590 =
.anims = gUnknown_08593588,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8104364,
+ .callback = Anim_ViceGripPincer,
};
const union AnimCmd gUnknown_085935A8[] =
@@ -515,7 +515,7 @@ const union AnimCmd *const gUnknown_085935C8[] =
gUnknown_085935B8,
};
-const struct SpriteTemplate gUnknown_085935D0 =
+const struct SpriteTemplate gGuillotineSpriteTemplate =
{
.tileTag = ANIM_TAG_CUT,
.paletteTag = ANIM_TAG_CUT,
@@ -523,10 +523,10 @@ const struct SpriteTemplate gUnknown_085935D0 =
.anims = gUnknown_085935C8,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8104414,
+ .callback = Anim_GuillotinePincer,
};
-const union AffineAnimCmd gUnknown_085935E8[] =
+const union AffineAnimCmd gSplashEffectAffineAnimCmds[] =
{
AFFINEANIMCMD_FRAME(-6, 4, 0, 8),
AFFINEANIMCMD_FRAME(10, -10, 0, 8),
@@ -534,7 +534,7 @@ const union AffineAnimCmd gUnknown_085935E8[] =
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_08593608[] =
+const union AffineAnimCmd gGrowAndShrinkAffineAnimCmds[] =
{
AFFINEANIMCMD_FRAME(-4, -5, 0, 12),
AFFINEANIMCMD_FRAME(0, 0, 0, 24),
@@ -566,7 +566,7 @@ const union AnimCmd *const gUnknown_08593650[] =
gUnknown_0859363C,
};
-const struct SpriteTemplate gUnknown_08593658 =
+const struct SpriteTemplate gBreathPuffSpriteTemplate =
{
.tileTag = ANIM_TAG_BREATH,
.paletteTag = ANIM_TAG_BREATH,
@@ -574,7 +574,7 @@ const struct SpriteTemplate gUnknown_08593658 =
.anims = gUnknown_08593650,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8104B1C,
+ .callback = Anim_BreathPuff,
};
const union AffineAnimCmd gUnknown_08593670[] =
@@ -589,7 +589,7 @@ const union AffineAnimCmd *const gUnknown_08593688[] =
gUnknown_08593670,
};
-const struct SpriteTemplate gUnknown_0859368C =
+const struct SpriteTemplate gAngerMarkSpriteTemplate =
{
.tileTag = ANIM_TAG_ANGER,
.paletteTag = ANIM_TAG_ANGER,
@@ -597,7 +597,7 @@ const struct SpriteTemplate gUnknown_0859368C =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gUnknown_08593688,
- .callback = sub_8104BAC,
+ .callback = Anim_AngerMark,
};
const union AffineAnimCmd gUnknown_085936A4[] =
@@ -1256,14 +1256,14 @@ const struct SpriteTemplate gUnknown_08593C64 =
void sub_8103448(struct Sprite *sprite)
{
- sub_80A6838(sprite);
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
sub_80A6864(sprite, gBattleAnimArgs[0]);
sprite->pos1.y += gBattleAnimArgs[1];
sprite->data[1] = gBattleAnimArgs[2];
sprite->data[2] = gBattleAnimArgs[4];
sprite->data[3] = gBattleAnimArgs[5];
sprite->data[4] = gBattleAnimArgs[3];
- StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_80A6450;
sprite->callback(sprite);
}
@@ -1312,7 +1312,7 @@ static void sub_810353C(struct Sprite *sprite)
if (sprite->data[0] == 0)
{
gSprites[sprite->data[2]].pos2.x = 0;
- move_anim_8074EE0(sprite);
+ DestroySpriteAndMatrix(sprite);
}
sprite->data[0]--;
@@ -1339,7 +1339,7 @@ void sub_810358C(struct Sprite *sprite)
void sub_8103620(struct Sprite *sprite)
{
- InitAnimSpritePos(sprite, 1);
+ InitAnimSpritePos(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[4];
@@ -1364,25 +1364,28 @@ static void sub_8103680(struct Sprite *sprite)
sprite->data[5]--;
}
-void sub_81036A0(u8 taskId)
+// Rotates the attacking mon sprite downwards and then back upwards to its original position.
+// No args.
+void AnimTask_Withdraw(u8 taskId)
{
- sub_80A7270(gBattlerSpriteIds[gBattleAnimAttacker], 0);
- gTasks[taskId].func = sub_81036DC;
+ PrepareBattlerSpriteForRotScale(gBattlerSpriteIds[gBattleAnimAttacker], ST_OAM_OBJ_NORMAL);
+ gTasks[taskId].func = AnimTask_WithdrawStep;
}
-static void sub_81036DC(u8 taskId)
+static void AnimTask_WithdrawStep(u8 taskId)
{
u8 spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
s16 rotation;
- if (GetBattlerSide(gBattleAnimAttacker) == 0)
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
rotation = -gTasks[taskId].data[0];
else
rotation = gTasks[taskId].data[0];
- obj_id_set_rotscale(spriteId, 0x100, 0x100, rotation);
+ SetSpriteRotScale(spriteId, 0x100, 0x100, rotation);
if (gTasks[taskId].data[1] == 0)
{
gTasks[taskId].data[0] += 0xB0;
+ // this y position update gets overwritten by SetBattlerSpriteYOffsetFromRotation()
gSprites[spriteId].pos2.y++;
}
else if (gTasks[taskId].data[1] == 1)
@@ -1395,15 +1398,16 @@ static void sub_81036DC(u8 taskId)
else
{
gTasks[taskId].data[0] -= 0xB0;
+ // this y position update gets overwritten by SetBattlerSpriteYOffsetFromRotation()
gSprites[spriteId].pos2.y--;
}
- sub_80A73A0(spriteId);
+ SetBattlerSpriteYOffsetFromRotation(spriteId);
if (gTasks[taskId].data[0] == 0xF20 || gTasks[taskId].data[0] == 0)
{
if (gTasks[taskId].data[1] == 2)
{
- sub_80A7344(spriteId);
+ ResetSpriteRotScale(spriteId);
DestroyAnimVisualTask(taskId);
}
else
@@ -1413,9 +1417,13 @@ static void sub_81036DC(u8 taskId)
}
}
-void sub_81037D8(struct Sprite *sprite)
+// Animates a "zap of energy" used in KINESIS.
+// arg 0: x pixel offset
+// arg 1: y pixel offset
+// arg 2: vertical flip
+void Anim_KinesisZapEnergy(struct Sprite *sprite)
{
- sub_80A6838(sprite);
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
sprite->pos1.x -= gBattleAnimArgs[0];
else
@@ -1434,18 +1442,21 @@ void sub_81037D8(struct Sprite *sprite)
sprite->vFlip = 1;
}
- sprite->callback = sub_80A67D8;
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
-void sub_810387C(struct Sprite *sprite)
+// Animates a sword that rises into the air after a brief pause.
+// arg 0: x pixel offset
+// arg 1: y pixel offset
+void Anim_SwordsDanceBlade(struct Sprite *sprite)
{
- InitAnimSpritePos(sprite, 0);
- sprite->callback = sub_80A67BC;
- StoreSpriteCallbackInData6(sprite, sub_81038A0);
+ InitAnimSpritePos(sprite, FALSE);
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
+ StoreSpriteCallbackInData6(sprite, Anim_SwordsDanceBladeStep);
}
-static void sub_81038A0(struct Sprite *sprite)
+static void Anim_SwordsDanceBladeStep(struct Sprite *sprite)
{
sprite->data[0] = 6;
sprite->data[2] = sprite->pos1.x;
@@ -1478,7 +1489,7 @@ void AnimSonicBoomProjectile(struct Sprite *sprite)
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
}
- InitAnimSpritePos(sprite, 1);
+ InitAnimSpritePos(sprite, TRUE);
targetXPos = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
targetYPos = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
rotation = ArcTan2Neg(targetXPos - sprite->pos1.x, targetYPos - sprite->pos1.y);
@@ -1486,7 +1497,7 @@ void AnimSonicBoomProjectile(struct Sprite *sprite)
if (IsContest())
rotation -= 0x6000;
- sub_80A73E0(sprite, 0, 0x100, 0x100, rotation);
+ TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rotation);
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = targetXPos;
sprite->data[4] = targetYPos;
@@ -1621,11 +1632,11 @@ static void sub_8103C0C(u8 taskId)
void sub_8103CF0(u8 taskId)
{
- s16 r9 = 0;
- s16 r6 = 0;
- s16 sp1 = 0;
- s16 sp2 = 0;
- s16 r4;
+ s16 attackerY = 0;
+ s16 attackerX = 0;
+ s16 targetX = 0;
+ s16 targetY = 0;
+ s16 xDiff, yDiff;
if (IsContest())
{
@@ -1650,38 +1661,38 @@ void sub_8103CF0(u8 taskId)
}
}
- r6 = gTasks[taskId].data[9] = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- r9 = gTasks[taskId].data[10] = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ attackerX = gTasks[taskId].data[9] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
+ attackerY = gTasks[taskId].data[10] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
&& IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget)))
{
- SetAverageBattlerPositions(gBattleAnimTarget, 0, &sp1, &sp2);
+ SetAverageBattlerPositions(gBattleAnimTarget, 0, &targetX, &targetY);
}
else
{
- sp1 = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
- sp2 = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
+ targetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y);
}
- sp1 = gTasks[taskId].data[11] = sp1 + gBattleAnimArgs[0];
- sp2 = gTasks[taskId].data[12] = sp2 + gBattleAnimArgs[1];
- if (sp1 >= r6)
- r4 = sp1 - r6;
+ targetX = gTasks[taskId].data[11] = targetX + gBattleAnimArgs[0];
+ targetY = gTasks[taskId].data[12] = targetY + gBattleAnimArgs[1];
+ if (targetX >= attackerX)
+ xDiff = targetX - attackerX;
else
- r4 = r6 - sp1;
+ xDiff = attackerX - targetX;
- gTasks[taskId].data[5] = sub_8151534(r4, sub_8151624(gBattleAnimArgs[2] & ~1));
+ gTasks[taskId].data[5] = sub_8151534(xDiff, sub_8151624(gBattleAnimArgs[2] & ~1));
gTasks[taskId].data[6] = sub_8151534(gTasks[taskId].data[5], 0x80);
gTasks[taskId].data[7] = gBattleAnimArgs[2];
- if (sp2 >= r9)
+ if (targetY >= attackerY)
{
- r4 = sp2 - r9;
- gTasks[taskId].data[8] = sub_8151534(r4, sub_8151624(gTasks[taskId].data[5])) & ~1;
+ yDiff = targetY - attackerY;
+ gTasks[taskId].data[8] = sub_8151534(yDiff, sub_8151624(gTasks[taskId].data[5])) & ~1;
}
else
{
- r4 = r9 - sp2;
- gTasks[taskId].data[8] = sub_8151534(r4, sub_8151624(gTasks[taskId].data[5])) | 1;
+ yDiff = attackerY - targetY;
+ gTasks[taskId].data[8] = sub_8151534(yDiff, sub_8151624(gTasks[taskId].data[5])) | 1;
}
gTasks[taskId].data[3] = gBattleAnimArgs[3];
@@ -1690,12 +1701,12 @@ void sub_8103CF0(u8 taskId)
gBattleAnimArgs[4] ^= 0x80;
if (gBattleAnimArgs[4] >= 64)
{
- u16 var = sub_80A82E4(gBattleAnimTarget) + (gBattleAnimArgs[4] - 64);
+ u16 var = GetBattlerSpriteSubpriority(gBattleAnimTarget) + (gBattleAnimArgs[4] - 64);
gTasks[taskId].data[2] = var;
}
else
{
- u16 var = sub_80A82E4(gBattleAnimTarget) - gBattleAnimArgs[4];
+ u16 var = GetBattlerSpriteSubpriority(gBattleAnimTarget) - gBattleAnimArgs[4];
gTasks[taskId].data[2] = var;
}
}
@@ -1703,12 +1714,12 @@ void sub_8103CF0(u8 taskId)
{
if (gBattleAnimArgs[4] >= 64)
{
- u16 var = sub_80A82E4(gBattleAnimTarget) + (gBattleAnimArgs[4] - 64);
+ u16 var = GetBattlerSpriteSubpriority(gBattleAnimTarget) + (gBattleAnimArgs[4] - 64);
gTasks[taskId].data[2] = var;
}
else
{
- u16 var = sub_80A82E4(gBattleAnimTarget) - gBattleAnimArgs[4];
+ u16 var = GetBattlerSpriteSubpriority(gBattleAnimTarget) - gBattleAnimArgs[4];
gTasks[taskId].data[2] = var;
}
}
@@ -1721,7 +1732,7 @@ void sub_8103CF0(u8 taskId)
void sub_8103FE8(struct Sprite *sprite)
{
- InitAnimSpritePos(sprite, 0);
+ InitAnimSpritePos(sprite, FALSE);
sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(gUnknown_085934A0.paletteTag) << 4);
sprite->callback = sub_8104018;
}
@@ -1817,7 +1828,7 @@ void sub_8104088(struct Sprite *sprite)
s16 r7;
u16 var;
- InitAnimSpritePos(sprite, 1);
+ InitAnimSpritePos(sprite, TRUE);
r6 = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
r7 = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
@@ -1826,7 +1837,7 @@ void sub_8104088(struct Sprite *sprite)
r6 += gBattleAnimArgs[2];
var = ArcTan2Neg(r6 - sprite->pos1.x, r7 - sprite->pos1.y);
var += 0xC000;
- sub_80A73E0(sprite, 0, 0x100, 0x100, var);
+ TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, var);
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = r6;
sprite->data[4] = r7;
@@ -1861,10 +1872,10 @@ static void sub_8104154(struct Sprite *sprite)
void sub_81041C4(struct Sprite *sprite)
{
- InitAnimSpritePos(sprite, 1);
+ InitAnimSpritePos(sprite, TRUE);
sprite->data[0] = 20;
- sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
sprite->callback = StartAnimLinearTranslation;
sprite->affineAnimPaused = 1;
StoreSpriteCallbackInData6(sprite, sub_810421C);
@@ -1910,9 +1921,17 @@ static void sub_81042A0(struct Sprite *sprite)
}
}
-void sub_8104304(struct Sprite *sprite)
-{
- InitAnimSpritePos(sprite, 0);
+// Moves a tornado in a circlular motion.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: wave amplitude
+// arg 3: unused
+// arg 4: initial wave offset
+// arg 5: wave period (higher means faster wave)
+// arg 6: duration
+void Anim_RazorWindTornado(struct Sprite *sprite)
+{
+ InitAnimSpritePos(sprite, FALSE);
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
sprite->pos1.y += 16;
@@ -1921,72 +1940,76 @@ void sub_8104304(struct Sprite *sprite)
sprite->data[2] = gBattleAnimArgs[5];
sprite->data[3] = gBattleAnimArgs[6];
sprite->data[4] = gBattleAnimArgs[3];
- sprite->callback = sub_80A62EC;
+ sprite->callback = TranslateSpriteInCircleOverDuration;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
sprite->callback(sprite);
}
-void sub_8104364(struct Sprite *sprite)
+// Animates a single pincer line that extends towards the center of the target mon.
+// arg 0: invert
+void Anim_ViceGripPincer(struct Sprite *sprite)
{
- s16 r7 = 32;
- s16 r4 = -32;
- s16 xDiff = 16;
- s16 yDiff = -16;
+ s16 startXOffset = 32;
+ s16 startYOffset = -32;
+ s16 endXOffset = 16;
+ s16 endYOffset = -16;
if (gBattleAnimArgs[0])
{
- r7 = r4;
- r4 = 32;
- xDiff = yDiff;
- yDiff = 16;
+ startXOffset = -32;
+ startYOffset = 32;
+ endXOffset = -16;
+ endYOffset = 16;
StartSpriteAnim(sprite, 1);
}
- sprite->pos1.x += r7;
- sprite->pos1.y += r4;
+ sprite->pos1.x += startXOffset;
+ sprite->pos1.y += startYOffset;
sprite->data[0] = 6;
- sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + xDiff;
- sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + yDiff;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + endXOffset;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + endYOffset;
sprite->callback = StartAnimLinearTranslation;
- StoreSpriteCallbackInData6(sprite, sub_81043F8);
+ StoreSpriteCallbackInData6(sprite, Anim_ViceGripPincerStep);
}
-static void sub_81043F8(struct Sprite *sprite)
+static void Anim_ViceGripPincerStep(struct Sprite *sprite)
{
- if (sprite->animEnded == 1)
+ if (sprite->animEnded)
DestroyAnimSprite(sprite);
}
-void sub_8104414(struct Sprite *sprite)
+// Animates a single pincer line that extends towards the center of the target mon, and then back out.
+// arg 0: animation id
+void Anim_GuillotinePincer(struct Sprite *sprite)
{
- s16 r8 = 32;
- s16 r4 = -32;
- s16 xDiff = 16;
- s16 yDiff = -16;
- if (gBattleAnimArgs[0] != 0)
+ s16 startXOffset = 32;
+ s16 startYOffset = -32;
+ s16 endXOffset = 16;
+ s16 endYOffset = -16;
+ if (gBattleAnimArgs[0])
{
- r8 = r4;
- r4 = 32;
- xDiff = yDiff;
- yDiff = 16;
+ startXOffset = -32;
+ startYOffset = 32;
+ endXOffset = -16;
+ endYOffset = 16;
StartSpriteAnim(sprite, gBattleAnimArgs[0]);
}
- sprite->pos1.x += r8;
- sprite->pos1.y += r4;
+ sprite->pos1.x += startXOffset;
+ sprite->pos1.y += startYOffset;
sprite->data[0] = 6;
sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + xDiff;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + endXOffset;
sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + yDiff;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + endYOffset;
InitAnimLinearTranslation(sprite);
sprite->data[5] = gBattleAnimArgs[0];
sprite->data[6] = sprite->data[0];
- sprite->callback = sub_81044BC;
+ sprite->callback = Anim_GuillotinePincerStep1;
}
-static void sub_81044BC(struct Sprite *sprite)
+static void Anim_GuillotinePincerStep1(struct Sprite *sprite)
{
- if (TranslateAnimLinear(sprite) && sprite->animEnded == 1)
+ if (TranslateAnimLinear(sprite) && sprite->animEnded)
{
SeekSpriteAnim(sprite, 0);
sprite->animPaused = 1;
@@ -1999,11 +2022,11 @@ static void sub_81044BC(struct Sprite *sprite)
sprite->data[2] ^= 1;
sprite->data[4] = 0;
sprite->data[3] = 0;
- sprite->callback = sub_8104530;
+ sprite->callback = Anim_GuillotinePincerStep2;
}
}
-static void sub_8104530(struct Sprite *sprite)
+static void Anim_GuillotinePincerStep2(struct Sprite *sprite)
{
if (sprite->data[3])
{
@@ -2020,65 +2043,71 @@ static void sub_8104530(struct Sprite *sprite)
sprite->data[3] = 0;
sprite->animPaused = 0;
StartSpriteAnim(sprite, sprite->data[5] ^ 1);
- sprite->callback = sub_8104594;
+ sprite->callback = Anim_GuillotinePincerStep3;
}
}
-static void sub_8104594(struct Sprite *sprite)
+static void Anim_GuillotinePincerStep3(struct Sprite *sprite)
{
if (TranslateAnimLinear(sprite))
DestroyAnimSprite(sprite);
}
-void sub_81045B0(u8 taskId)
+// Scales up the target mon sprite, and sets the palette to greyscale.
+// Used in MOVE_DISABLE.
+// No args.
+void AnimTask_GrowAndGreyscale(u8 taskId)
{
u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
- sub_80A7270(spriteId, 1);
- obj_id_set_rotscale(spriteId, 0xD0, 0xD0, 0);
- sub_80A750C(gSprites[spriteId].oam.paletteNum + 16, 0);
+ PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_BLEND);
+ SetSpriteRotScale(spriteId, 0xD0, 0xD0, 0);
+ SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, FALSE);
gTasks[taskId].data[0] = 80;
- gTasks[taskId].func = sub_8104614;
+ gTasks[taskId].func = AnimTask_GrowAndGreyscaleStep;
}
-static void sub_8104614(u8 taskId)
+static void AnimTask_GrowAndGreyscaleStep(u8 taskId)
{
if (--gTasks[taskId].data[0] == -1)
{
u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
- sub_80A7344(spriteId);
- sub_80A750C(gSprites[spriteId].oam.paletteNum + 16, 1);
+ ResetSpriteRotScale(spriteId);
+ SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, TRUE);
DestroyAnimVisualTask(taskId);
}
}
-void sub_8104674(u8 taskId)
+// Shrinks and grows the attacking mon several times. Also creates transparent versions of the
+// mon's sprite while it is shrinking.
+// No args.
+void AnimTask_Minimize(u8 taskId)
{
struct Task* task = &gTasks[taskId];
u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
task->data[0] = spriteId;
- sub_80A7270(spriteId, 0);
+ PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
task->data[1] = 0;
task->data[2] = 0;
task->data[3] = 0;
task->data[4] = 0x100;
task->data[5] = 0;
task->data[6] = 0;
- task->data[7] = sub_80A82E4(gBattleAnimAttacker);
- task->func = sub_81046CC;
+ task->data[7] = GetBattlerSpriteSubpriority(gBattleAnimAttacker);
+ task->func = AnimTask_MinimizeStep1;
}
-static void sub_81046CC(u8 taskId)
+static void AnimTask_MinimizeStep1(u8 taskId)
{
struct Task* task = &gTasks[taskId];
switch (task->data[1])
{
case 0:
if (task->data[2] == 0 || task->data[2] == 3 || task->data[2] == 6)
- sub_8104800(task, taskId);
+ CreateMinimizeSprite(task, taskId);
task->data[2]++;
task->data[4] += 0x28;
- obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0);
- sub_80A7E6C(task->data[0]);
+ SetSpriteRotScale(task->data[0], task->data[4], task->data[4], 0);
+ SetBattlerSpriteYOffsetFromYScale(task->data[0]);
if (task->data[2] == 32)
{
task->data[5]++;
@@ -2098,8 +2127,8 @@ static void sub_81046CC(u8 taskId)
task->data[2] = 0;
task->data[3] = 0;
task->data[4] = 0x100;
- obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0);
- sub_80A7E6C(task->data[0]);
+ SetSpriteRotScale(task->data[0], task->data[4], task->data[4], 0);
+ SetBattlerSpriteYOffsetFromYScale(task->data[0]);
task->data[1] = 2;
}
}
@@ -2117,8 +2146,8 @@ static void sub_81046CC(u8 taskId)
case 4:
task->data[2] += 2;
task->data[4] -= 0x50;
- obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0);
- sub_80A7E6C(task->data[0]);
+ SetSpriteRotScale(task->data[0], task->data[4], task->data[4], 0);
+ SetBattlerSpriteYOffsetFromYScale(task->data[0]);
if (task->data[2] == 32)
{
task->data[2] = 0;
@@ -2126,17 +2155,17 @@ static void sub_81046CC(u8 taskId)
}
break;
case 5:
- sub_80A7344(task->data[0]);
+ ResetSpriteRotScale(task->data[0]);
gSprites[task->data[15]].pos2.y = 0;
DestroyAnimVisualTask(taskId);
break;
}
}
-static void sub_8104800(struct Task* task, u8 taskId)
+static void CreateMinimizeSprite(struct Task* task, u8 taskId)
{
u16 matrixNum;
- s16 spriteId = duplicate_obj_of_side_rel2move_in_transparent_mode(0);
+ s16 spriteId = CloneBattlerSpriteWithBlend(ANIM_ATTACKER);
if (spriteId >= 0)
{
if ((matrixNum = AllocOamMatrix()) == 0xFF)
@@ -2155,15 +2184,15 @@ static void sub_8104800(struct Task* task, u8 taskId)
gSprites[spriteId].data[0] = 16;
gSprites[spriteId].data[1] = taskId;
gSprites[spriteId].data[2] = 6;
- gSprites[spriteId].callback = sub_81048F0;
- obj_id_set_rotscale(spriteId, task->data[4], task->data[4], 0);
+ gSprites[spriteId].callback = ClonedMinizeSprite_Step;
+ SetSpriteRotScale(spriteId, task->data[4], task->data[4], 0);
gSprites[spriteId].oam.affineMode = 1;
CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode);
}
}
}
-static void sub_81048F0(struct Sprite *sprite)
+static void ClonedMinizeSprite_Step(struct Sprite *sprite)
{
if (--sprite->data[0] == 0)
{
@@ -2191,7 +2220,7 @@ void AnimTask_Splash(u8 taskId)
task->data[2] = gBattleAnimArgs[1];
task->data[3] = 0;
task->data[4] = 0;
- sub_80A7CFC(task, spriteId, &gUnknown_085935E8);
+ PrepareAffineAnimInTaskData(task, spriteId, gSplashEffectAffineAnimCmds);
task->func = AnimTask_SplashStep;
}
}
@@ -2202,7 +2231,7 @@ static void AnimTask_SplashStep(u8 taskId)
switch (task->data[1])
{
case 0:
- sub_80A7D34(task);
+ RunAffineAnimFromTaskData(task);
task->data[4] += 3;
gSprites[task->data[0]].pos2.y += task->data[4];
if (++task->data[3] > 7)
@@ -2212,7 +2241,7 @@ static void AnimTask_SplashStep(u8 taskId)
}
break;
case 1:
- sub_80A7D34(task);
+ RunAffineAnimFromTaskData(task);
gSprites[task->data[0]].pos2.y += task->data[4];
if (++task->data[3] > 7)
{
@@ -2230,7 +2259,7 @@ static void AnimTask_SplashStep(u8 taskId)
task->data[1]++;
break;
case 3:
- if (!sub_80A7D34(task))
+ if (!RunAffineAnimFromTaskData(task))
{
if (--task->data[2] == 0)
{
@@ -2239,7 +2268,7 @@ static void AnimTask_SplashStep(u8 taskId)
}
else
{
- sub_80A7CFC(task, task->data[0], &gUnknown_085935E8);
+ PrepareAffineAnimInTaskData(task, task->data[0], gSplashEffectAffineAnimCmds);
task->data[1] = 0;
}
}
@@ -2247,49 +2276,59 @@ static void AnimTask_SplashStep(u8 taskId)
}
}
-void sub_8104AB4(u8 taskId)
+// Grows, pauses, then shrinks the attacking mon.
+// Used by MOVE_SWAGGER and MOVE_BULK_UP
+// No args.
+void AnimTask_GrowAndShrink(u8 taskId)
{
struct Task* task = &gTasks[taskId];
u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
- sub_80A7CFC(task, spriteId, &gUnknown_08593608);
- task->func = sub_8104AF0;
+ PrepareAffineAnimInTaskData(task, spriteId, gGrowAndShrinkAffineAnimCmds);
+ task->func = AnimTask_GrowAndShrinkStep;
}
-static void sub_8104AF0(u8 taskId)
+static void AnimTask_GrowAndShrinkStep(u8 taskId)
{
struct Task* task = &gTasks[taskId];
- if (!sub_80A7D34(task))
+ if (!RunAffineAnimFromTaskData(task))
DestroyAnimVisualTask(taskId);
}
-void sub_8104B1C(struct Sprite *sprite)
+// Animates a little puff of the mon's breath.
+// Used by MOVE_SWAGGER and MOVE_BULK_UP
+// No args.
+void Anim_BreathPuff(struct Sprite *sprite)
{
- if (GetBattlerSide(gBattleAnimAttacker) == 0)
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
StartSpriteAnim(sprite, 0);
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + 32;
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + 32;
sprite->data[1] = 64;
}
else
{
StartSpriteAnim(sprite, 1);
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - 32;
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - 32;
sprite->data[1] = -64;
}
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
sprite->data[0] = 52;
sprite->data[2] = 0;
sprite->data[3] = 0;
sprite->data[4] = 0;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
- sprite->callback = sub_80A656C;
+ sprite->callback = TranslateAnimLinearSimple;
}
-void sub_8104BAC(struct Sprite *sprite)
+// Animates an "angry" mark above a mon's head.
+// arg 0: target mon (0 = attacker, 1 = target)
+// arg 1: x pixel offset
+// arg 2: y pixel offset
+void Anim_AngerMark(struct Sprite *sprite)
{
u8 battler;
- if (gBattleAnimArgs[0] == 0)
+ if (!gBattleAnimArgs[0])
battler = gBattleAnimAttacker;
else
battler = gBattleAnimTarget;
@@ -2297,13 +2336,13 @@ void sub_8104BAC(struct Sprite *sprite)
if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
gBattleAnimArgs[1] *= -1;
- sprite->pos1.x = GetBattlerSpriteCoord(battler, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(battler, 3) + gBattleAnimArgs[2];
+ sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2];
if (sprite->pos1.y < 8)
sprite->pos1.y = 8;
- StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
- sprite->callback = sub_80A67BC;
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
}
// left/right movements
@@ -2313,14 +2352,14 @@ void sub_8104C38(u8 taskId)
u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
task->data[0] = spriteId;
task->data[1] = 0;
- sub_80A7CFC(task, spriteId, &gUnknown_085936A4);
+ PrepareAffineAnimInTaskData(task, spriteId, gUnknown_085936A4);
task->func = sub_8104C78;
}
static void sub_8104C78(u8 taskId)
{
struct Task* task = &gTasks[taskId];
- if (!sub_80A7D34(task))
+ if (!RunAffineAnimFromTaskData(task))
DestroyAnimVisualTask(taskId);
}
@@ -2697,7 +2736,7 @@ void sub_81054E8(struct Sprite *sprite)
void sub_8105538(struct Sprite *sprite)
{
s16 r1;
- InitAnimSpritePos(sprite, 0);
+ InitAnimSpritePos(sprite, FALSE);
r1 = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? -160 : 160;
sprite->data[0] = 0x380;
sprite->data[1] = r1;
@@ -2801,14 +2840,14 @@ void sub_810577C(u8 taskId)
struct Task* task = &gTasks[taskId];
u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
task->data[0] = spriteId;
- sub_80A7CFC(task, spriteId, &gUnknown_085938B0);
+ PrepareAffineAnimInTaskData(task, spriteId, gUnknown_085938B0);
task->func = sub_81057B8;
}
static void sub_81057B8(u8 taskId)
{
struct Task* task = &gTasks[taskId];
- if (!sub_80A7D34(task))
+ if (!RunAffineAnimFromTaskData(task))
{
gSprites[task->data[0]].pos2.y = 0;
gSprites[task->data[0]].invisible = 1;
@@ -3059,7 +3098,7 @@ static void sub_8105D88(struct Sprite *sprite, u8 a, u8 b)
void sub_8105DE8(struct Sprite *sprite)
{
- InitAnimSpritePos(sprite, 0);
+ InitAnimSpritePos(sprite, FALSE);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
@@ -3074,7 +3113,7 @@ void sub_8105DE8(struct Sprite *sprite)
void sub_8105E60(struct Sprite *sprite)
{
if (++sprite->data[0] == 1)
- InitAnimSpritePos(sprite, 0);
+ InitAnimSpritePos(sprite, FALSE);
sprite->pos2.x = Sin(sprite->data[1], 8);
sprite->pos2.y = sprite->data[2] >> 8;
@@ -3142,13 +3181,13 @@ void sub_8106020(u8 taskId)
u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
if (++gTasks[taskId].data[0] == 1)
{
- sub_80A7CFC(&gTasks[taskId], GetAnimBattlerSpriteId(1), &gUnknown_08593988);
+ PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(1), gUnknown_08593988);
gSprites[spriteId].pos2.x = 4;
}
else
{
gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
- if (!sub_80A7D34(&gTasks[taskId]))
+ if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
{
gSprites[spriteId].pos2.x = 0;
gSprites[spriteId].pos2.y = 0;
@@ -3162,13 +3201,13 @@ void sub_81060B0(u8 taskId)
u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
if (++gTasks[taskId].data[0] == 1)
{
- sub_80A7CFC(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08593988);
+ PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), gUnknown_08593988);
gSprites[spriteId].pos2.x = 4;
}
else
{
gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
- if (!sub_80A7D34(&gTasks[taskId]))
+ if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
{
gSprites[spriteId].pos2.x = 0;
gSprites[spriteId].pos2.y = 0;
@@ -3179,7 +3218,7 @@ void sub_81060B0(u8 taskId)
void sub_8106140(struct Sprite *sprite)
{
- InitAnimSpritePos(sprite, 1);
+ InitAnimSpritePos(sprite, TRUE);
sprite->data[0] = 95;
sprite->data[1] = sprite->pos1.x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
@@ -3424,7 +3463,7 @@ void AnimOrbitFast(struct Sprite *sprite)
sprite->affineAnimPaused = 1;
sprite->data[0] = gBattleAnimArgs[0];
sprite->data[1] = gBattleAnimArgs[1];
- sprite->data[7] = sub_80A82E4(gBattleAnimAttacker);
+ sprite->data[7] = GetBattlerSpriteSubpriority(gBattleAnimAttacker);
sprite->callback = AnimOrbitFastStep;
sprite->callback(sprite);
}
@@ -3511,7 +3550,7 @@ static void sub_810699C(struct Sprite *sprite)
void sub_81069B8(struct Sprite *sprite)
{
- InitAnimSpritePos(sprite, 1);
+ InitAnimSpritePos(sprite, TRUE);
sprite->callback = sub_810699C;
}
@@ -3586,7 +3625,7 @@ void sub_8106B54(struct Sprite *sprite)
sprite->pos1.x += gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
StartSpriteAnim(sprite, 0);
- sprite->subpriority = sub_80A82E4(gBattleAnimTarget) - 1;
+ sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) - 1;
sprite->data[2] = 1;
}
sprite->data[0] += sprite->data[2];
@@ -3669,13 +3708,13 @@ void sub_8106D90(u8 taskId)
{
u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
- sub_80A7CFC(&gTasks[taskId], spriteId, gUnknown_08593B98);
+ PrepareAffineAnimInTaskData(&gTasks[taskId], spriteId, gUnknown_08593B98);
gTasks[taskId].func = sub_8106DD4;
}
static void sub_8106DD4(u8 taskId)
{
- if (!sub_80A7D34(&gTasks[taskId]))
+ if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
DestroyAnimVisualTask(taskId);
}
@@ -3726,7 +3765,7 @@ void sub_8106F00(struct Sprite *sprite)
}
if (++sprite->data[0] == sprite->data[1])
- sub_80A750C(sprite->oam.paletteNum + 16, 0);
+ SetGreyscaleOrOriginalPalette(sprite->oam.paletteNum + 16, 0);
if (sprite->data[0] == sprite->data[1] + 80)
DestroyAnimSprite(sprite);