summaryrefslogtreecommitdiff
path: root/src/battle/anim/bubble.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle/anim/bubble.c')
-rw-r--r--src/battle/anim/bubble.c53
1 files changed, 45 insertions, 8 deletions
diff --git a/src/battle/anim/bubble.c b/src/battle/anim/bubble.c
index d6ec06be9..e024091d7 100644
--- a/src/battle/anim/bubble.c
+++ b/src/battle/anim/bubble.c
@@ -8,6 +8,7 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D31C8(struct Sprite* sprite);
static void sub_80D32E8(struct Sprite *sprite);
static void sub_80D3370(struct Sprite *sprite);
static void sub_80D3398(struct Sprite *sprite);
@@ -15,33 +16,69 @@ static void sub_80D3398(struct Sprite *sprite);
// bubble (indidivual bubble that floats around)
// Used in Bubble and Bubblebeam
+const union AffineAnimCmd gSpriteAffineAnim_83D9148[] =
+{
+ AFFINEANIMCMD_FRAME(0xFFFB, 0xFFFB, 0, 10),
+ AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 10),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9160[] =
+{
+ gSpriteAffineAnim_83D9148,
+};
+
+const union AnimCmd gSpriteAnim_83D9164[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9174[] =
+{
+ gSpriteAnim_83D9164,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9178 =
+{
+ .tileTag = 10146,
+ .paletteTag = 10146,
+ .oam = &gOamData_837E0AC,
+ .anims = gSpriteAnimTable_83D9174,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9160,
+ .callback = sub_80D31C8,
+};
+
void sub_80D31C8(struct Sprite* sprite)
{
u8 newSpriteId;
- if (GetBankSide(gAnimBankAttacker) != 0)
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2) - gBattleAnimArgs[0];
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[1];
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2) - gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + gBattleAnimArgs[1];
}
else
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[1];
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + gBattleAnimArgs[1];
}
sprite->animPaused = 1;
- if (GetBankSide(gAnimBankAttacker) != 0)
+ if (GetBattlerSide(gAnimBankAttacker) != 0)
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
}
sprite->data[0] = gBattleAnimArgs[6];
sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
InitAnimSpriteTranslationDeltas(sprite);