summaryrefslogtreecommitdiff
path: root/src/battle/anim/switch.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle/anim/switch.c')
-rw-r--r--src/battle/anim/switch.c70
1 files changed, 61 insertions, 9 deletions
diff --git a/src/battle/anim/switch.c b/src/battle/anim/switch.c
index c4082b6aa..fcb1d9fc3 100644
--- a/src/battle/anim/switch.c
+++ b/src/battle/anim/switch.c
@@ -7,9 +7,11 @@
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+extern const union AffineAnimCmd gSpriteAffineAnim_83D66BC[];
+extern const union AffineAnimCmd gSpriteAffineAnim_83D66DC[];
+extern const union AnimCmd *const gSpriteAnimTable_83D66B8[];
-extern s8 gUnknown_083D680C[11][3];
-
+void sub_80CBBF0(struct Sprite* sprite);
static void sub_80CBC8C(struct Sprite* sprite);
static void sub_80CBCF8(struct Sprite* sprite);
static void sub_80CBDB0(struct Sprite* sprite);
@@ -17,6 +19,56 @@ static void sub_80CBDB0(struct Sprite* sprite);
// switch (makes an item and circles it from side to side on the field.)
// Used in Trick.
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6794[] = {
+ AFFINEANIMCMD_FRAME(0, 0, 0, 3),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D67A4[] = {
+ AFFINEANIMCMD_FRAME(0, -10, 0, 3),
+ AFFINEANIMCMD_FRAME(0, -6, 0, 3),
+ AFFINEANIMCMD_FRAME(0, -2, 0, 3),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 3),
+ AFFINEANIMCMD_FRAME(0, 2, 0, 3),
+ AFFINEANIMCMD_FRAME(0, 6, 0, 3),
+ AFFINEANIMCMD_FRAME(0, 10, 0, 3),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D67E4[] = {
+ gSpriteAffineAnim_83D6794,
+ gSpriteAffineAnim_83D67A4,
+ gSpriteAffineAnim_83D66BC,
+ gSpriteAffineAnim_83D66DC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D67F4 =
+{
+ .tileTag = 10224,
+ .paletteTag = 10224,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83D66B8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D67E4,
+ .callback = sub_80CBBF0,
+};
+
+const s8 gUnknown_083D680C[][3] =
+{
+ {5, 24, 1},
+ {0, 4, 0},
+ {8, 16, -1},
+ {0, 2, 0},
+ {8, 16, 1},
+ {0, 2, 0},
+ {8, 16, 1},
+ {0, 2, 0},
+ {8, 16, 1},
+ {0, 16, 0},
+ {0, 0, 127},
+};
+
void sub_80CBBF0(struct Sprite* sprite)
{
int a;
@@ -27,7 +79,7 @@ void sub_80CBBF0(struct Sprite* sprite)
if (!IsContest())
{
sprite->data[1] = gBattleAnimArgs[1];
- sprite->pos1.x = 0x78;
+ sprite->pos1.x = 120;
}
else
{
@@ -38,13 +90,13 @@ void sub_80CBBF0(struct Sprite* sprite)
b = a;
sprite->data[1] = a - ((b >> 8) << 8);
- sprite->pos1.x = 0x46;
+ sprite->pos1.x = 70;
}
sprite->pos1.y = gBattleAnimArgs[0];
sprite->data[2] = gBattleAnimArgs[0];
sprite->data[4] = 20;
- sprite->pos2.x = Cos(sprite->data[1], 0x3C);
+ sprite->pos2.x = Cos(sprite->data[1], 60);
sprite->pos2.y = Sin(sprite->data[1], 20);
sprite->callback = sub_80CBC8C;
if (sprite->data[1] > 0 && sprite->data[1] < 0xC0)
@@ -54,7 +106,7 @@ void sub_80CBBF0(struct Sprite* sprite)
}
}
-void sub_80CBC8C(struct Sprite* sprite)
+static void sub_80CBC8C(struct Sprite* sprite)
{
switch (sprite->data[3])
{
@@ -84,7 +136,7 @@ void sub_80CBC8C(struct Sprite* sprite)
}
}
-void sub_80CBCF8(struct Sprite* sprite)
+static void sub_80CBCF8(struct Sprite* sprite)
{
if (sprite->data[2] == gUnknown_083D680C[sprite->data[0]][1])
{
@@ -113,12 +165,12 @@ void sub_80CBCF8(struct Sprite* sprite)
}
}
- sprite->pos2.x = Cos(sprite->data[1], 0x3C);
+ sprite->pos2.x = Cos(sprite->data[1], 60);
sprite->pos2.y = Sin(sprite->data[1], 20);
}
}
-void sub_80CBDB0(struct Sprite* sprite)
+static void sub_80CBDB0(struct Sprite* sprite)
{
if (sprite->data[0] > 20)
DestroyAnimSprite(sprite);