summaryrefslogtreecommitdiff
path: root/src/battle/anim/slice.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle/anim/slice.c')
-rw-r--r--src/battle/anim/slice.c62
1 files changed, 50 insertions, 12 deletions
diff --git a/src/battle/anim/slice.c b/src/battle/anim/slice.c
index 80c58dddf..4da414cbf 100644
--- a/src/battle/anim/slice.c
+++ b/src/battle/anim/slice.c
@@ -8,8 +8,46 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void AnimCuttingSlice(struct Sprite* sprite);
+void sub_80CC9BC(struct Sprite* sprite);
static void AnimSliceStep(struct Sprite* sprite);
+const union AnimCmd gSpriteAnim_83D6B10[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6B24[] =
+{
+ gSpriteAnim_83D6B10,
+};
+
+const struct SpriteTemplate gCuttingSliceSpriteTemplate =
+{
+ .tileTag = 10138,
+ .paletteTag = 10138,
+ .oam = &gOamData_837E054,
+ .anims = gSpriteAnimTable_83D6B24,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimCuttingSlice,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6B40 =
+{
+ .tileTag = 10138,
+ .paletteTag = 10138,
+ .oam = &gOamData_837E054,
+ .anims = gSpriteAnimTable_83D6B24,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CC9BC,
+};
+
// Moves the sprite in a diagonally slashing motion across the target mon.
// Used by moves such as MOVE_CUT and MOVE_AERIAL_ACE.
// arg 0: initial x pixel offset
@@ -17,9 +55,9 @@ static void AnimSliceStep(struct Sprite* sprite);
// arg 2: slice direction; 0 = right-to-left, 1 = left-to-right
void AnimCuttingSlice(struct Sprite* sprite)
{
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0);
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1);
- if (GetBankSide(gAnimBankTarget) == 0)
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 1);
+ if (GetBattlerSide(gAnimBankTarget) == 0)
sprite->pos1.y += 8;
sprite->callback = AnimSliceStep;
@@ -48,28 +86,28 @@ void sub_80CC9BC(struct Sprite* sprite)
switch (gBattleAnimArgs[3])
{
case 1:
- a = GetBankPosition(gAnimBankTarget ^ 2, 0);
- b = GetBankPosition(gAnimBankTarget ^ 2, 1);
+ a = GetBattlerSpriteCoord(gAnimBankTarget ^ 2, 0);
+ b = GetBattlerSpriteCoord(gAnimBankTarget ^ 2, 1);
break;
case 2:
- a = GetBankPosition(gAnimBankTarget, 0);
- b = GetBankPosition(gAnimBankTarget, 1);
+ a = GetBattlerSpriteCoord(gAnimBankTarget, 0);
+ b = GetBattlerSpriteCoord(gAnimBankTarget, 1);
if (IsAnimBankSpriteVisible(gAnimBankTarget ^ 2))
{
- a = (GetBankPosition(gAnimBankTarget ^ 2, 0) + a) / 2;
- b = (GetBankPosition(gAnimBankTarget ^ 2, 1) + b) / 2;
+ a = (GetBattlerSpriteCoord(gAnimBankTarget ^ 2, 0) + a) / 2;
+ b = (GetBattlerSpriteCoord(gAnimBankTarget ^ 2, 1) + b) / 2;
}
break;
case 0:
default:
- a = GetBankPosition(gAnimBankTarget, 0);
- b = GetBankPosition(gAnimBankTarget, 1);
+ a = GetBattlerSpriteCoord(gAnimBankTarget, 0);
+ b = GetBattlerSpriteCoord(gAnimBankTarget, 1);
break;
}
sprite->pos1.x = a;
sprite->pos1.y = b;
- if (GetBankSide(gAnimBankTarget) == 0)
+ if (GetBattlerSide(gAnimBankTarget) == 0)
sprite->pos1.y += 8;
sprite->callback = AnimSliceStep;