summaryrefslogtreecommitdiff
path: root/src/battle/anim/espeed.c
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2018-06-25 17:50:27 -0500
committerMarcus Huderle <huderlem@gmail.com>2018-06-25 17:50:27 -0500
commit605f8ac1141daf66d3428923e004f82f5a5e1594 (patch)
treea3e5fae5d271175c7f10b6b455fcdc7f0fdd553e /src/battle/anim/espeed.c
parente88e39d5fda1644f77e41fd652d4310612da7532 (diff)
parent659437f07a44b6f560bb58d6c12d141ed8ba7643 (diff)
Merge branch 'master' into contest_link_80C2020
Diffstat (limited to 'src/battle/anim/espeed.c')
-rw-r--r--src/battle/anim/espeed.c70
1 files changed, 58 insertions, 12 deletions
diff --git a/src/battle/anim/espeed.c b/src/battle/anim/espeed.c
index 469522092..a4f11c823 100644
--- a/src/battle/anim/espeed.c
+++ b/src/battle/anim/espeed.c
@@ -8,11 +8,7 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern s8 gUnknown_083D7A00[4][2];
-
-extern struct AffineAnimFrameCmd gUnknown_083D79BC;
-extern struct SpriteTemplate gSpriteTemplate_83D79E8;
-
+void sub_80D1A70(struct Sprite* sprite);
static void sub_80D15E0(u8 taskId);
static void sub_80D16A0(u8 taskId);
static void sub_80D1808(u8 taskId);
@@ -21,13 +17,53 @@ static void sub_80D1930(u8 taskId);
// espeed (the Pokemon's width decreases as the sprite becomes vertically compressed)
// Used in Extremespeed.
+const union AffineAnimCmd gSpriteAffineAnim_83D79BC[] =
+{
+ AFFINEANIMCMD_FRAME(96, -13, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D79CC[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(4, 3),
+ ANIMCMD_FRAME(8, 3),
+ ANIMCMD_FRAME(4, 3),
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D79E4[] =
+{
+ gSpriteAnim_83D79CC,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D79E8 =
+{
+ .tileTag = 10207,
+ .paletteTag = 10207,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D79E4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D1A70,
+};
+
+const s8 gUnknown_083D7A00[][2] =
+{
+ {30, 28},
+ {-20, 24},
+ {16, 26},
+ {-10, 28},
+};
+
// apply espeed
void sub_80D15A4(u8 taskId)
{
struct Task* task = &gTasks[taskId];
- u8 spriteId = GetAnimBankSpriteId(0);
+ u8 spriteId = GetAnimBattlerSpriteId(0);
task->data[0] = spriteId;
- sub_80798F4(task, spriteId, &gUnknown_083D79BC);
+ sub_80798F4(task, spriteId, &gSpriteAffineAnim_83D79BC);
task->func = sub_80D15E0;
}
@@ -51,7 +87,7 @@ void sub_80D1638(u8 taskId)
task->data[2] = 0;
task->data[3] = 0;
task->data[12] = 3;
- if (GetBankSide(gAnimBankTarget) == 0)
+ if (GetBattlerSide(gAnimBankTarget) == 0)
{
task->data[13] = 0xFFFF;
task->data[14] = 8;
@@ -62,7 +98,7 @@ void sub_80D1638(u8 taskId)
task->data[14] = -8;
}
- task->data[15] = GetAnimBankSpriteId(1);
+ task->data[15] = GetAnimBattlerSpriteId(1);
task->func = sub_80D16A0;
}
@@ -123,7 +159,7 @@ void sub_80D17C4(u8 taskId)
task->data[4] = 1;
task->data[13] = 14;
task->data[14] = 2;
- task->data[15] = GetAnimBankSpriteId(0);
+ task->data[15] = GetAnimBattlerSpriteId(0);
task->func = sub_80D1808;
}
@@ -169,8 +205,8 @@ void sub_80D18D4(u8 taskId)
task->data[7] = 0;
task->data[8] = 0;
task->data[13] = 0;
- task->data[14] = GetBankPosition(gAnimBankAttacker, 0);
- task->data[15] = GetBankPosition(gAnimBankAttacker, 1);
+ task->data[14] = GetBattlerSpriteCoord(gAnimBankAttacker, 0);
+ task->data[15] = GetBattlerSpriteCoord(gAnimBankAttacker, 1);
task->func = sub_80D1930;
}
@@ -239,3 +275,13 @@ void sub_80D1930(u8 taskId)
break;
}
}
+
+void sub_80D1A70(struct Sprite* sprite)
+{
+ sprite->invisible = gTasks[sprite->data[0]].data[5];
+ if (sprite->animEnded)
+ {
+ gTasks[sprite->data[0]].data[sprite->data[1]]--;
+ DestroySprite(sprite);
+ }
+}