summaryrefslogtreecommitdiff
path: root/src/battle/anim/bug.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle/anim/bug.c')
-rw-r--r--src/battle/anim/bug.c230
1 files changed, 207 insertions, 23 deletions
diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c
index d57a1046e..c4c7fe937 100644
--- a/src/battle/anim/bug.c
+++ b/src/battle/anim/bug.c
@@ -3,18 +3,202 @@
#include "contest.h"
#include "rom_8077ABC.h"
#include "trig.h"
-// #include "util.h"
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80DC824(struct Sprite *sprite);
+void sub_80DC8F4(struct Sprite *sprite);
+void sub_80DC9A0(struct Sprite *sprite);
+void sub_80DCA70(struct Sprite *sprite);
+void sub_80DCB38(struct Sprite *sprite);
+void AnimTranslateStinger(struct Sprite *sprite);
+void AnimMissileArc(struct Sprite *sprite);
+void sub_80DCE40(struct Sprite *sprite);
static void sub_80DCA38(struct Sprite *sprite);
static void sub_80DCAEC(struct Sprite *sprite);
static void sub_80DCB5C(struct Sprite *sprite);
static void sub_80DCBB4(struct Sprite *sprite);
static void AnimMissileArcStep(struct Sprite *sprite);
+const union AffineAnimCmd gSpriteAffineAnim_83DAA80[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 30, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAA90[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, -99, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAAA0[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 94, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAAB0[] =
+{
+ gSpriteAffineAnim_83DAA80,
+ gSpriteAffineAnim_83DAA90,
+ gSpriteAffineAnim_83DAAA0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAABC =
+{
+ .tileTag = 10153,
+ .paletteTag = 10153,
+ .oam = &gOamData_837E014,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DAAB0,
+ .callback = sub_80DC824,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAAD4[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -33, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAAE4[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 96, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAAF4[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -96, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAB04[] =
+{
+ gSpriteAffineAnim_83DAAD4,
+ gSpriteAffineAnim_83DAAE4,
+ gSpriteAffineAnim_83DAAF4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAB10 =
+{
+ .tileTag = 10161,
+ .paletteTag = 10161,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DAB04,
+ .callback = sub_80DC8F4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAB28 =
+{
+ .tileTag = 10180,
+ .paletteTag = 10180,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DC9A0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAB40 =
+{
+ .tileTag = 10179,
+ .paletteTag = 10179,
+ .oam = &gOamData_837DF5C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DCA70,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAB58[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x6, 0x6, 0, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAB70[] =
+{
+ gSpriteAffineAnim_83DAB58,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAB74 =
+{
+ .tileTag = 10181,
+ .paletteTag = 10181,
+ .oam = &gOamData_837E11C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DAB70,
+ .callback = sub_80DCB38,
+};
+
+const struct SpriteTemplate gLinearStingerSpriteTemplate =
+{
+ .tileTag = 10161,
+ .paletteTag = 10161,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimTranslateStinger,
+};
+
+const struct SpriteTemplate gPinMissileSpriteTemplate =
+{
+ .tileTag = 10161,
+ .paletteTag = 10161,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMissileArc,
+};
+
+const struct SpriteTemplate gIcicleSpearSpriteTemplate =
+{
+ .tileTag = 10262,
+ .paletteTag = 10262,
+ .oam = &gOamData_837DF94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMissileArc,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DABD4[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 18),
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0xFFFB, 0xFFFB, 0, 8),
+ AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 8),
+ AFFINEANIMCMD_LOOP(5),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAC0C[] =
+{
+ gSpriteAffineAnim_83DABD4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAC10 =
+{
+ .tileTag = 10212,
+ .paletteTag = 10212,
+ .oam = &gOamData_837E0BC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DAC0C,
+ .callback = sub_80DCE40,
+};
+
// used in Move_MEGAHORN
void sub_80DC824(struct Sprite *sprite)
{
@@ -24,7 +208,7 @@ void sub_80DC824(struct Sprite *sprite)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
}
- else if (!GetBankSide(gAnimBankTarget))
+ else if (!GetBattlerSide(gAnimBankTarget))
{
StartSpriteAffineAnim(sprite, 1);
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
@@ -37,8 +221,8 @@ void sub_80DC824(struct Sprite *sprite)
sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 3) + gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3];
sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
@@ -52,7 +236,7 @@ void sub_80DC8F4(struct Sprite *sprite)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
StartSpriteAffineAnim(sprite, 2);
}
- else if (!GetBankSide(gAnimBankTarget))
+ else if (!GetBattlerSide(gAnimBankTarget))
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
@@ -62,8 +246,8 @@ void sub_80DC8F4(struct Sprite *sprite)
sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 3) + gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
@@ -83,8 +267,8 @@ void sub_80DC9A0(struct Sprite *sprite)
if (!gBattleAnimArgs[4])
{
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
}
else
{
@@ -112,13 +296,13 @@ static void sub_80DCA38(struct Sprite *sprite)
void sub_80DCA70(struct Sprite *sprite)
{
SetAverageBattlerPositions(gAnimBankTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
sprite->pos1.x -= gBattleAnimArgs[0];
else
sprite->pos1.x += gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
- if (!GetBankSide(gAnimBankTarget))
+ if (!GetBattlerSide(gAnimBankTarget))
sprite->pos1.y += 8;
sprite->callback = sub_80DCAEC;
@@ -193,7 +377,7 @@ void AnimTranslateStinger(struct Sprite *sprite)
}
else
{
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
@@ -203,9 +387,9 @@ void AnimTranslateStinger(struct Sprite *sprite)
if (!IsContest())
{
- if (GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget))
+ if (GetBattlerSide(gAnimBankAttacker) == GetBattlerSide(gAnimBankTarget))
{
- if (GetBankIdentity(gAnimBankTarget) == 0 || GetBankIdentity(gAnimBankTarget) == 1)
+ if (GetBattlerPosition(gAnimBankTarget) == 0 || GetBattlerPosition(gAnimBankTarget) == 1)
{
s16 temp1, temp2;
@@ -220,8 +404,8 @@ void AnimTranslateStinger(struct Sprite *sprite)
InitAnimSpritePos(sprite, 1);
- lVarX = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
- lVarY = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+ lVarX = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ lVarY = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3];
rot = ArcTan2Neg(lVarX - sprite->pos1.x, lVarY - sprite->pos1.y);
rot += 0xC000;
sub_8078FDC(sprite, FALSE, 0x100, 0x100, rot);
@@ -247,12 +431,12 @@ void AnimMissileArc(struct Sprite *sprite)
{
InitAnimSpritePos(sprite, 1);
- if (GetBankSide(gAnimBankAttacker))
+ if (GetBattlerSide(gAnimBankAttacker))
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
- sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[5];
InitAnimSpriteTranslationOverDuration(sprite);
@@ -301,13 +485,13 @@ void sub_80DCE40(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + 18;
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + 18;
}
else
{
- sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2);
- sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3) + 18;
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3) + 18;
}
StoreSpriteCallbackInData(sprite, move_anim_8074EE0);