summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle/anim/beta_beat_up.c25
-rw-r--r--src/battle/anim/bug.c186
-rwxr-xr-xsrc/battle/anim/current.c335
-rw-r--r--src/battle/anim/dark.c164
-rw-r--r--src/battle/anim/dragon.c196
-rw-r--r--src/battle/anim/energy_wave.c144
-rw-r--r--src/battle/anim/fight.c394
-rw-r--r--src/battle/anim/fire.c172
-rw-r--r--src/battle/anim/fire_2.c302
-rwxr-xr-xsrc/battle/anim/flying.c346
-rwxr-xr-xsrc/battle/anim/ghost.c191
-rwxr-xr-xsrc/battle/anim/ground.c125
-rw-r--r--src/battle/anim/heated_rock.c129
-rwxr-xr-xsrc/battle/anim/ice.c495
-rwxr-xr-xsrc/battle/anim/normal.c240
-rw-r--r--src/battle/anim/poison.c192
-rw-r--r--src/battle/anim/psychic.c408
-rw-r--r--src/battle/anim/rock.c295
-rw-r--r--src/battle/anim/shock.c51
-rw-r--r--src/battle/anim/sunlight.c25
-rw-r--r--src/battle/anim/thunder.c27
-rw-r--r--src/battle/anim/water.c182
-rw-r--r--src/battle/anim/wisp_fire.c43
-rw-r--r--src/battle/anim/wisp_orb.c47
24 files changed, 4521 insertions, 193 deletions
diff --git a/src/battle/anim/beta_beat_up.c b/src/battle/anim/beta_beat_up.c
index ee889492c..166782362 100644
--- a/src/battle/anim/beta_beat_up.c
+++ b/src/battle/anim/beta_beat_up.c
@@ -7,10 +7,35 @@ extern s16 gBattleAnimArgs[8];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80D6234(struct Sprite *sprite);
static void sub_80D6278(struct Sprite *);
// beta_beat_up
+const union AffineAnimCmd gSpriteAffineAnim_83D97E8[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 20),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 60),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9808[] =
+{
+ gSpriteAffineAnim_83D97E8,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D980C =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9808,
+ .callback = sub_80D6234,
+};
+
void sub_80D6234(struct Sprite *sprite)
{
if (GetBattlerSide(gAnimBankAttacker) != 0)
diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c
index 245e45774..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)
{
diff --git a/src/battle/anim/current.c b/src/battle/anim/current.c
index af9003e87..af72edef0 100755
--- a/src/battle/anim/current.c
+++ b/src/battle/anim/current.c
@@ -12,14 +12,20 @@ extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
extern u8 gAnimVisualTaskCount;
-extern const struct SpriteTemplate gSpriteTemplate_83D9938;
-extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9950;
-extern const struct SpriteTemplate gSpriteTemplate_83D99B8;
-extern const struct SpriteTemplate gSpriteTemplate_83D9B10;
-extern const struct SpriteTemplate gSpriteTemplate_83D9B40;
extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83D97D0;
-extern s8 gUnknown_083D9968[][2];
+void sub_80D648C(struct Sprite *sprite);
+void sub_80D65DC(struct Sprite *sprite);
+void sub_80D6658(struct Sprite *sprite);
+void sub_80D679C(struct Sprite *sprite);
+void sub_80D6A1C(struct Sprite *sprite);
+void sub_80D6A6C(struct Sprite *sprite);
+void sub_80D6D18(struct Sprite *sprite);
+void sub_80D6D70(struct Sprite *sprite);
+void sub_80D6DD8(struct Sprite *sprite);
+void sub_80D7230(struct Sprite *sprite);
+void sub_80D727C(struct Sprite *sprite);
+void sub_80D755C(struct Sprite *sprite);
static void sub_80D6514(struct Sprite *sprite);
static void sub_80D672C(struct Sprite *sprite);
static void sub_80D6874(u8 taskId);
@@ -32,6 +38,323 @@ static bool8 sub_80D7470(struct Task *task, u8 taskId);
static bool8 sub_80D7654(struct Task *task, u8 taskId);
static void sub_80D76C4(struct Sprite *sprite);
+const union AffineAnimCmd gSpriteAffineAnim_83D988C[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 20, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D989C[] =
+{
+ gSpriteAffineAnim_83D988C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D98A0 =
+{
+ .tileTag = 10011,
+ .paletteTag = 10011,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D989C,
+ .callback = sub_80D648C,
+};
+
+const union AnimCmd gSpriteAnim_83D98B8[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D98C8[] =
+{
+ gSpriteAnim_83D98B8,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D98CC[] =
+{
+ AFFINEANIMCMD_FRAME(0xE8, 0xE8, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 10),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 10),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D98EC[] =
+{
+ gSpriteAffineAnim_83D98CC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D98F0 =
+{
+ .tileTag = 10282,
+ .paletteTag = 10282,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83D98C8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D98EC,
+ .callback = sub_80D65DC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9908 =
+{
+ .tileTag = 10011,
+ .paletteTag = 10011,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D989C,
+ .callback = sub_80D6658,
+};
+
+const struct SpriteTemplate gElectricitySpriteTemplate =
+{
+ .tileTag = 10011,
+ .paletteTag = 10011,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D679C,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9938 =
+{
+ .tileTag = 10001,
+ .paletteTag = 10001,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D6A1C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9950 =
+{
+ .tileTag = 10173,
+ .paletteTag = 10173,
+ .oam = &gOamData_837DF54,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D6A6C,
+};
+
+const s8 gUnknown_083D9968[][2] =
+{
+ { 58, -60},
+ {-56, -36},
+ { 8, -56},
+ {-16, 56},
+ { 58, -10},
+ {-58, 10},
+ { 48, -18},
+ {-8, 56},
+ { 16, -56},
+ {-58, -42},
+ { 58, 30},
+ {-48, 40},
+ { 12, -48},
+ { 48, -12},
+ {-56, 18},
+ { 48, 48},
+};
+
+const union AnimCmd gSpriteAnim_83D9988[] =
+{
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D999C[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(1, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D99B0[] =
+{
+ gSpriteAnim_83D9988,
+ gSpriteAnim_83D999C,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D99B8 =
+{
+ .tileTag = 10211,
+ .paletteTag = 10211,
+ .oam = &gOamData_837DF24,
+ .anims = gSpriteAnimTable_83D99B0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D99D0[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 60),
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0xFFFC, 0xFFFC, 0, 5),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 5),
+ AFFINEANIMCMD_LOOP(10),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9A10[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 30),
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFFC, 0xFFFC, 0, 5),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 5),
+ AFFINEANIMCMD_JUMP(3),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9A40[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 30),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 30),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9A60[] =
+{
+ gSpriteAffineAnim_83D99D0,
+ gSpriteAffineAnim_83D9A10,
+ gSpriteAffineAnim_83D9A40,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9A6C =
+{
+ .tileTag = 10212,
+ .paletteTag = 10212,
+ .oam = &gOamData_837E0BC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9A60,
+ .callback = sub_80D6D18,
+};
+
+const union AnimCmd gSpriteAnim_83D9A84[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9A98[] =
+{
+ gSpriteAnim_83D9A84,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9A9C =
+{
+ .tileTag = 10213,
+ .paletteTag = 10213,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9A98,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D6D70,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9AB4 =
+{
+ .tileTag = 10212,
+ .paletteTag = 10212,
+ .oam = &gOamData_837E0BC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9A60,
+ .callback = sub_80D6DD8,
+};
+
+const union AnimCmd gSpriteAnim_83D9ACC[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9AD4[] =
+{
+ ANIMCMD_FRAME(2, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9ADC[] =
+{
+ ANIMCMD_FRAME(4, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9AE4[] =
+{
+ ANIMCMD_FRAME(6, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9AEC[] =
+{
+ gSpriteAnim_83D9ACC,
+ gSpriteAnim_83D9AD4,
+ gSpriteAnim_83D9ADC,
+ gSpriteAnim_83D9AE4,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9AFC[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9B0C[] =
+{
+ gSpriteAffineAnim_83D9AFC,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9B10 =
+{
+ .tileTag = 10001,
+ .paletteTag = 10001,
+ .oam = &gOamData_837E024,
+ .anims = gSpriteAnimTable_83D9AEC,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9B0C,
+ .callback = sub_80D7230,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9B28 =
+{
+ .tileTag = 10212,
+ .paletteTag = 10212,
+ .oam = &gOamData_837E0BC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9A60,
+ .callback = sub_80D727C,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9B40 =
+{
+ .tileTag = 10001,
+ .paletteTag = 10001,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D755C,
+};
void sub_80D648C(struct Sprite *sprite)
{
diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c
index 55d500950..a7026edff 100644
--- a/src/battle/anim/dark.c
+++ b/src/battle/anim/dark.c
@@ -28,6 +28,10 @@ extern const u8 gUnknown_08D1D574[];
extern const u8 gUnknown_08D1D410[];
extern const u16 gUnknown_08D1D54C[];
+void sub_80DFE14(struct Sprite *sprite);
+void sub_80DFF1C(struct Sprite *sprite);
+void sub_80DFFD0(struct Sprite *sprite);
+void sub_80E0A10(struct Sprite *sprite);
static void sub_80DFE90(struct Sprite *sprite);
static void sub_80DFC9C(u8 taskId);
static void sub_80DFD58(u8 taskId);
@@ -40,6 +44,166 @@ static void sub_80E08CC(u8 priority);
static void sub_80E079C(struct Task *task);
static void sub_80E0CD0(u8 taskId);
+const struct SpriteTemplate gSpriteTemplate_83DB118 =
+{
+ .tileTag = 10015,
+ .paletteTag = 10015,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DFE14,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB130[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB140[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 32, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB150[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 64, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB160[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 96, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB170[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -128, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB180[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -96, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB190[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -64, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB1A0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -32, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB1B0[] =
+{
+ gSpriteAffineAnim_83DB130,
+ gSpriteAffineAnim_83DB140,
+ gSpriteAffineAnim_83DB150,
+ gSpriteAffineAnim_83DB160,
+ gSpriteAffineAnim_83DB170,
+ gSpriteAffineAnim_83DB180,
+ gSpriteAffineAnim_83DB190,
+ gSpriteAffineAnim_83DB1A0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB1D0 =
+{
+ .tileTag = 10139,
+ .paletteTag = 10139,
+ .oam = &gOamData_837E0BC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB1B0,
+ .callback = sub_80DFF1C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB1E8 =
+{
+ .tileTag = 10145,
+ .paletteTag = 10145,
+ .oam = &gOamData_837E0BC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB1B0,
+ .callback = sub_80DFF1C,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB200[] =
+{
+ AFFINEANIMCMD_FRAME(0xC0, 0xC0, 80, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -2, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB218[] =
+{
+ AFFINEANIMCMD_FRAME(0xC0, 0xC0, -80, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB230[] =
+{
+ gSpriteAffineAnim_83DB200,
+ gSpriteAffineAnim_83DB218,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB238 =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB230,
+ .callback = sub_80DFFD0,
+};
+
+const union AnimCmd gSpriteAnim_83DB250[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DB268[] =
+{
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(64, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DB280[] =
+{
+ gSpriteAnim_83DB250,
+ gSpriteAnim_83DB268,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB288 =
+{
+ .tileTag = 10039,
+ .paletteTag = 10039,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DB280,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E0A10,
+};
// used in Smoke Ball escape, Sky Attack, Feint Attack and Camouflage
void sub_80DFC24(u8 taskId)
diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c
index 4c8448636..163529ecb 100644
--- a/src/battle/anim/dragon.c
+++ b/src/battle/anim/dragon.c
@@ -5,13 +5,6 @@
#include "sound.h"
#include "scanline_effect.h"
-void sub_80DF81C(struct Sprite *sprite);
-void sub_80DFBD8(struct Sprite *sprite);
-
-void sub_80DF9F4(u8 taskId);
-
-void sub_80DFAB0(struct Task *task);
-
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
@@ -21,6 +14,187 @@ extern u16 gBattle_BG2_X;
extern u16 gUnknown_03000730[];
extern u8 gBankSpriteIds[];
+void sub_80DF5A0(struct Sprite *sprite);
+void sub_80DF760(struct Sprite *sprite);
+void sub_80DF6F0(struct Sprite *sprite);
+void sub_80DF760(struct Sprite *sprite);
+void sub_80DF78C(struct Sprite *sprite);
+void sub_80DFB28(struct Sprite *sprite);
+static void sub_80DF81C(struct Sprite *sprite);
+static void sub_80DFBD8(struct Sprite *sprite);
+static void sub_80DF9F4(u8 taskId);
+static void sub_80DFAB0(struct Task *task);
+
+const union AnimCmd gSpriteAnim_83DAFB0[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DAFC8[] =
+{
+ gSpriteAnim_83DAFB0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAFCC =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DAFC8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DF5A0,
+};
+
+const union AnimCmd gSpriteAnim_83DAFE4[] =
+{
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gSpriteAnim_83DAFF4[] =
+{
+ ANIMCMD_FRAME(16, 3, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 3, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 3, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DB004[] =
+{
+ gSpriteAnim_83DAFE4,
+ gSpriteAnim_83DAFF4,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB00C[] =
+{
+ AFFINEANIMCMD_FRAME(0x50, 0x50, 127, 0),
+ AFFINEANIMCMD_FRAME(0xD, 0xD, 0, 100),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB024[] =
+{
+ AFFINEANIMCMD_FRAME(0x50, 0x50, 0, 0),
+ AFFINEANIMCMD_FRAME(0xD, 0xD, 0, 100),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB03C[] =
+{
+ gSpriteAffineAnim_83DB00C,
+ gSpriteAffineAnim_83DB024,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB044 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DFF4,
+ .anims = gSpriteAnimTable_83DB004,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB03C,
+ .callback = sub_80DF760,
+};
+
+const union AnimCmd gSpriteAnim_83DB05C[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DB074[] =
+{
+ gSpriteAnim_83DB05C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB078 =
+{
+ .tileTag = 10035,
+ .paletteTag = 10035,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DB074,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DF6F0,
+};
+
+const union AnimCmd gSpriteAnim_83DB090[] =
+{
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DB0A0[] =
+{
+ gSpriteAnim_83DB090,
+ gSpriteAnim_83DB090,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB0A8[] =
+{
+ AFFINEANIMCMD_FRAME(0x64, 0x64, 127, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB0B8[] =
+{
+ AFFINEANIMCMD_FRAME(0x64, 0x64, 0, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB0C8[] =
+{
+ gSpriteAffineAnim_83DB0A8,
+ gSpriteAffineAnim_83DB0B8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB0D0 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DFF4,
+ .anims = gSpriteAnimTable_83DB0A0,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB0C8,
+ .callback = sub_80DF760,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB0E8 =
+{
+ .tileTag = 10249,
+ .paletteTag = 10249,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DF78C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB100 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DAFC8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DFB28,
+};
+
// Outrage
void sub_80DF5A0(struct Sprite *sprite)
@@ -123,7 +297,7 @@ void sub_80DF78C(struct Sprite *sprite)
sprite->callback = sub_80DF81C;
}
-void sub_80DF81C(struct Sprite *sprite)
+static void sub_80DF81C(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -196,7 +370,7 @@ void sub_80DF924(u8 taskId)
task->func = sub_80DF9F4;
}
-void sub_80DF9F4(u8 taskId)
+static void sub_80DF9F4(u8 taskId)
{
struct Task *task = &gTasks[taskId];
switch (task->data[0])
@@ -234,7 +408,7 @@ void sub_80DF9F4(u8 taskId)
}
}
-void sub_80DFAB0(struct Task *task)
+static void sub_80DFAB0(struct Task *task)
{
u16 r3 = task->data[5];
u16 i;
@@ -264,7 +438,7 @@ void sub_80DFB28(struct Sprite *sprite)
gUnknown_03000730[i] = sprite->data[i];
}
-void sub_80DFBD8(struct Sprite *sprite)
+static void sub_80DFBD8(struct Sprite *sprite)
{
sprite->data[4] += sprite->data[1];
sprite->data[5] += sprite->data[2];
diff --git a/src/battle/anim/energy_wave.c b/src/battle/anim/energy_wave.c
index 7980c7b34..9ac362b57 100644
--- a/src/battle/anim/energy_wave.c
+++ b/src/battle/anim/energy_wave.c
@@ -8,8 +8,11 @@
extern s16 gBattleAnimArgs[8];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern const struct SpriteTemplate gSpriteTemplate_83D9130[];
+extern const union AffineAnimCmd *const gSpriteAffineAnimTable_83D752C[];
+void sub_80D3554(struct Sprite *sprite);
+void sub_80D3698(struct Sprite *sprite);
+void sub_80D3728(struct Sprite *sprite);
static void sub_80D35DC(struct Sprite *);
static void sub_80D365C(u8);
static void sub_80D370C(struct Sprite *);
@@ -18,6 +21,145 @@ static void sub_80D370C(struct Sprite *);
// Used in Hydro Pump, Mud Shot, Signal Beam, Flamethrower, Psywave, and
// Hydro Cannon.
+const union AnimCmd gSpriteAnim_83D91DC[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_FRAME(12, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D91F0[] =
+{
+ gSpriteAnim_83D91DC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D91F4 =
+{
+ .tileTag = 10149,
+ .paletteTag = 10149,
+ .oam = &gOamData_837E04C,
+ .anims = gSpriteAnimTable_83D91F0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D3554,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D920C =
+{
+ .tileTag = 10259,
+ .paletteTag = 10259,
+ .oam = &gOamData_837E04C,
+ .anims = gSpriteAnimTable_83D91F0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D3554,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9224 =
+{
+ .tileTag = 10264,
+ .paletteTag = 10264,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D3554,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D923C =
+{
+ .tileTag = 10265,
+ .paletteTag = 10265,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D3554,
+};
+
+const union AnimCmd gSpriteAnim_83D9254[] =
+{
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_FRAME(48, 2),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9264[] =
+{
+ gSpriteAnim_83D9254,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9268 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9264,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D3554,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9280 =
+{
+ .tileTag = 10165,
+ .paletteTag = 10165,
+ .oam = &gOamData_837E034,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D752C,
+ .callback = sub_80D3554,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9298[] =
+{
+ AFFINEANIMCMD_FRAME(0x3, 0x3, 10, 50),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 10),
+ AFFINEANIMCMD_FRAME(0xFFEC, 0xFFEC, -10, 20),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D92B8[] =
+{
+ AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D92C8[] =
+{
+ gSpriteAffineAnim_83D9298,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D92CC[] =
+{
+ gSpriteAffineAnim_83D92B8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D92D0 =
+{
+ .tileTag = 10149,
+ .paletteTag = 10149,
+ .oam = &gOamData_837E10C,
+ .anims = gSpriteAnimTable_83D91F0,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D92C8,
+ .callback = sub_80D3698,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D92E8 =
+{
+ .tileTag = 10149,
+ .paletteTag = 10149,
+ .oam = &gOamData_837E10C,
+ .anims = gSpriteAnimTable_83D91F0,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D92CC,
+ .callback = sub_80D3728,
+};
+
void sub_80D3554(struct Sprite *sprite)
{
InitAnimSpritePos(sprite, 1);
diff --git a/src/battle/anim/fight.c b/src/battle/anim/fight.c
index 5e25d664a..af2af1981 100644
--- a/src/battle/anim/fight.c
+++ b/src/battle/anim/fight.c
@@ -26,6 +26,25 @@ extern u8 gAnimMoveTurn;
extern struct SpriteTemplate gBasicHitSplatSpriteTemplate;
+void sub_080B08A0(struct Sprite *sprite);
+void sub_80D902C(struct Sprite *sprite);
+void sub_80D9078(struct Sprite *sprite);
+void AnimBasicFistOrFoot(struct Sprite *sprite);
+void sub_80D90F4(struct Sprite *sprite);
+void sub_80D92D0(struct Sprite *sprite);
+void sub_80D9378(struct Sprite *sprite);
+void AnimSpinningKickOrPunch(struct Sprite *sprite);
+void AnimSpinningKickOrPunch(struct Sprite *sprite);
+void AnimStompFoot(struct Sprite *sprite);
+void sub_80D9540(struct Sprite *sprite);
+void sub_80D95D0(struct Sprite *sprite);
+void sub_80D96B8(struct Sprite *sprite);
+void sub_80D97CC(struct Sprite *sprite);
+void sub_80D98D8(struct Sprite *sprite);
+void sub_80D9A38(struct Sprite *sprite);
+void sub_80D9B48(struct Sprite *sprite);
+void sub_80D9BD4(struct Sprite *sprite);
+void sub_80D9C40(struct Sprite *sprite);
static void sub_80D927C(struct Sprite *sprite);
static void sub_80D9328(struct Sprite *sprite);
static void sub_80D9404(struct Sprite *sprite);
@@ -38,6 +57,381 @@ static void sub_80D986C(struct Sprite *sprite);
static void sub_80D9934(struct Sprite *sprite);
static void sub_80D99F4(struct Sprite *sprite);
+const struct SpriteTemplate gSpriteTemplate_83D9F24 =
+{
+ .tileTag = 10050,
+ .paletteTag = 10050,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_080B08A0,
+};
+
+const union AnimCmd gSpriteAnim_83D9F3C[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9F44[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9F4C[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9F54[] =
+{
+ ANIMCMD_FRAME(48, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9F5C[] =
+{
+ ANIMCMD_FRAME(48, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9F64[] =
+{
+ gSpriteAnim_83D9F3C,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9F68[] =
+{
+ gSpriteAnim_83D9F44,
+ gSpriteAnim_83D9F4C,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9F70[] =
+{
+ gSpriteAnim_83D9F54,
+ gSpriteAnim_83D9F5C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9F78 =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9F64,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D902C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9F90 =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9F64,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D9078,
+};
+
+const struct SpriteTemplate gFistFootSpriteTemplate =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9F64,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimBasicFistOrFoot,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9FC0 =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9F64,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D90F4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9FD8 =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9F70,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D92D0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9FF0 =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9F68,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D9378,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA008[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 20, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA020[] =
+{
+ gSpriteAffineAnim_83DA008,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA024 =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DFF4,
+ .anims = gSpriteAnimTable_83D9F64,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA020,
+ .callback = AnimSpinningKickOrPunch,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA03C[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFFC, 0xFFFC, 20, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA054[] =
+{
+ gSpriteAffineAnim_83DA03C,
+};
+
+const struct SpriteTemplate gMegaPunchKickSpriteTemplate =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DFF4,
+ .anims = gSpriteAnimTable_83D9F64,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA054,
+ .callback = AnimSpinningKickOrPunch,
+};
+
+const struct SpriteTemplate gStompFootSpriteTemplate =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9F68,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimStompFoot,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA088 =
+{
+ .tileTag = 10073,
+ .paletteTag = 10073,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D9540,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA0A0 =
+{
+ .tileTag = 10167,
+ .paletteTag = 10167,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D95D0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA0B8 =
+{
+ .tileTag = 10208,
+ .paletteTag = 10208,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D96B8,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA0D0[] =
+{
+ AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 64),
+ AFFINEANIMCMD_FRAME(0xFFFA, 0xFFFA, 0, 8),
+ AFFINEANIMCMD_FRAME(0x6, 0x6, 0, 8),
+ AFFINEANIMCMD_JUMP(2),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA0F8[] =
+{
+ gSpriteAffineAnim_83DA0D0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA0FC =
+{
+ .tileTag = 10212,
+ .paletteTag = 10212,
+ .oam = &gOamData_837E11C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA0F8,
+ .callback = sub_80D97CC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA114 =
+{
+ .tileTag = 10257,
+ .paletteTag = 10257,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D98D8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA12C =
+{
+ .tileTag = 10256,
+ .paletteTag = 10256,
+ .oam = &gOamData_837DF3C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D9A38,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA144 =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9F64,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D9B48,
+};
+
+const union AnimCmd gSpriteAnim_83DA15C[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DA16C[] =
+{
+ ANIMCMD_FRAME(0, 4, .vFlip = TRUE),
+ ANIMCMD_FRAME(16, 4, .vFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DA17C[] =
+{
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA18C[] =
+{
+ gSpriteAnim_83DA15C,
+ gSpriteAnim_83DA16C,
+ gSpriteAnim_83DA17C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA198 =
+{
+ .tileTag = 10245,
+ .paletteTag = 10245,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DA18C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D9BD4,
+};
+
+const union AnimCmd gSpriteAnim_83DA1B0[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(64, 6),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DA1BC[] =
+{
+ ANIMCMD_FRAME(0, 6, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(64, 6, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DA1C8[] =
+{
+ ANIMCMD_FRAME(0, 6, .hFlip = TRUE),
+ ANIMCMD_FRAME(64, 6, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA1D4[] =
+{
+ gSpriteAnim_83DA1B0,
+ gSpriteAnim_83DA1BC,
+ gSpriteAnim_83DA1C8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA1E0 =
+{
+ .tileTag = 10246,
+ .paletteTag = 10246,
+ .oam = &gOamData_837DF3C,
+ .anims = gSpriteAnimTable_83DA1D4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D9BD4,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA1F8[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFE0, 0xFFE0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA210[] =
+{
+ gSpriteAffineAnim_83DA1F8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA214 =
+{
+ .tileTag = 10143,
+ .paletteTag = 10143,
+ .oam = &gOamData_837DFF4,
+ .anims = gSpriteAnimTable_83D9F64,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA210,
+ .callback = sub_80D9C40,
+};
void sub_080B08A0(struct Sprite *sprite)
{
diff --git a/src/battle/anim/fire.c b/src/battle/anim/fire.c
index 0939c938c..929828ed4 100644
--- a/src/battle/anim/fire.c
+++ b/src/battle/anim/fire.c
@@ -6,8 +6,170 @@
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
-void sub_80D5038(struct Sprite *);
-void sub_80D50E8(struct Sprite *);
+void sub_80D4ED8(struct Sprite *sprite);
+void sub_80D4F18(struct Sprite *sprite);
+void sub_80D4FCC(struct Sprite *sprite);
+void sub_80D4F5C(struct Sprite *sprite);
+void sub_80D5074(struct Sprite *sprite);
+static void sub_80D5038(struct Sprite *);
+static void sub_80D50E8(struct Sprite *);
+
+const union AnimCmd gSpriteAnim_83D9450[] =
+{
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gSpriteAnim_83D9460[] =
+{
+ ANIMCMD_FRAME(16, 4, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 4, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9470[] =
+{
+ gSpriteAnim_83D9450,
+ gSpriteAnim_83D9460,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9478 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9470,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D4ED8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9490 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9470,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D4F18,
+};
+
+const union AnimCmd gSpriteAnim_83D94A8[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_FRAME(64, 3),
+ ANIMCMD_FRAME(80, 3),
+ ANIMCMD_FRAME(96, 3),
+ ANIMCMD_FRAME(112, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D94CC[] =
+{
+ gSpriteAnim_83D94A8,
+};
+
+const union AnimCmd gSpriteAnim_83D94D0[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D94E8[] =
+{
+ gSpriteAnim_83D94D0,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D94EC[] =
+{
+ AFFINEANIMCMD_FRAME(0x32, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x20, 0x0, 0, 7),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9504[] =
+{
+ gSpriteAffineAnim_83D94EC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9508 =
+{
+ .tileTag = 10033,
+ .paletteTag = 10033,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83D94CC,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9504,
+ .callback = sub_80D4FCC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9520 =
+{
+ .tileTag = 10033,
+ .paletteTag = 10033,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D94CC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D4FCC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9538 =
+{
+ .tileTag = 10035,
+ .paletteTag = 10035,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D94E8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D4F5C,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9550 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D94E8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D4F5C,
+};
+
+const union AnimCmd gSpriteAnim_83D9568[] =
+{
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_FRAME(48, 6),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9578[] =
+{
+ gSpriteAnim_83D9568,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D957C =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9578,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D5074,
+};
void sub_80D4ED8(struct Sprite *sprite)
{
@@ -20,7 +182,7 @@ void sub_80D4ED8(struct Sprite *sprite)
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
sprite->callback = sub_8078174;
- sub_8078174(sprite);
+ sprite->callback(sprite);
}
void sub_80D4F18(struct Sprite *sprite)
@@ -82,7 +244,7 @@ void sub_80D4FCC(struct Sprite *sprite)
sprite->callback = sub_80D5038;
}
-void sub_80D5038(struct Sprite *sprite)
+static void sub_80D5038(struct Sprite *sprite)
{
if (++sprite->data[0] < sprite->data[4])
{
@@ -119,7 +281,7 @@ void sub_80D5074(struct Sprite *sprite)
sprite->callback = sub_80D50E8;
}
-void sub_80D50E8(struct Sprite *sprite)
+static void sub_80D50E8(struct Sprite *sprite)
{
if (sprite->data[3])
{
diff --git a/src/battle/anim/fire_2.c b/src/battle/anim/fire_2.c
index 97ac2e933..b055d7c80 100644
--- a/src/battle/anim/fire_2.c
+++ b/src/battle/anim/fire_2.c
@@ -9,18 +9,180 @@
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern struct SpriteTemplate gSpriteTemplate_83D96C4;
-extern s16 gHeatedRockCoords[7][2];
+void AnimEmberFlare(struct Sprite *sprite);
+void sub_80D5210(struct Sprite *sprite);
+void AnimFireRing(struct Sprite *sprite);
+void AnimFireCross(struct Sprite *sprite);
+void sub_80D53B4(struct Sprite *sprite);
+void sub_80D58FC(struct Sprite *sprite);
+void sub_80D5A20(struct Sprite *sprite);
static void AnimFireRingStep1(struct Sprite *);
static void UpdateFireRingCircleOffset(struct Sprite *);
static void AnimFireRingStep2(struct Sprite *);
static void AnimFireRingStep3(struct Sprite *);
-void sub_80D53F4(struct Sprite *);
-void sub_80D541C(struct Sprite *);
-void sub_80D54E0(u8 taskId);
-void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3);
+static void sub_80D53F4(struct Sprite *);
+static void sub_80D541C(struct Sprite *);
+static void sub_80D54E0(u8 taskId);
+static void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3);
+static void sub_80D59B0(struct Sprite *);
+static void sub_80D5A74(struct Sprite *);
+
+const union AnimCmd gSpriteAnim_83D95C8[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D95E0[] =
+{
+ gSpriteAnim_83D95C8,
+};
+
+const struct SpriteTemplate gEmberSpriteTemplate =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const struct SpriteTemplate gEmberFlareSpriteTemplate =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D95E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimEmberFlare,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9614 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D95E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D5210,
+};
+
+const struct SpriteTemplate gFireRingSpriteTemplate =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D95E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimFireRing,
+};
+
+const union AnimCmd gSpriteAnim_83D9644[] =
+{
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_FRAME(48, 6),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9650[] =
+{
+ gSpriteAnim_83D9644,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9654[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9664[] =
+{
+ AFFINEANIMCMD_FRAME(0xA0, 0xA0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9674[] =
+{
+ gSpriteAffineAnim_83D9654,
+ gSpriteAffineAnim_83D9664,
+};
+
+const struct SpriteTemplate gFireCrossSpriteTemplate =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9650,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimFireCross,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9694 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D95E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D53B4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D96AC =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D95E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_807A9BC,
+};
+
+
+const struct SpriteTemplate gSpriteTemplate_83D96C4 =
+{
+ .tileTag = 10201,
+ .paletteTag = 10201,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D58FC,
+};
+
+const s16 gHeatedRockCoords[][2] =
+{
+ {-2, -5},
+ {-1, -1},
+ { 3, -6},
+ { 4, -2},
+ { 2, -8},
+ {-5, -5},
+ { 4, -7},
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D96F8 =
+{
+ .tileTag = 10201,
+ .paletteTag = 10201,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D5A20,
+};
// Animates the secondary effect of MOVE_EMBER, where the flames grow and slide
// horizontally a bit.
@@ -42,13 +204,12 @@ void AnimEmberFlare(struct Sprite *sprite)
sprite->callback(sprite);
}
-struct Sprite *sub_80D5210(struct Sprite *sprite)
+void sub_80D5210(struct Sprite *sprite)
{
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->callback = sub_8079534;
- return sprite;
}
// Animates the a fire sprite in the first-half of the MOVE_FIRE_BLAST
@@ -157,7 +318,7 @@ void sub_80D53B4(struct Sprite *sprite)
StoreSpriteCallbackInData(sprite, sub_80D53F4);
}
-void sub_80D53F4(struct Sprite *sprite)
+static void sub_80D53F4(struct Sprite *sprite)
{
sprite->invisible = FALSE;
@@ -168,7 +329,7 @@ void sub_80D53F4(struct Sprite *sprite)
sub_80D541C(sprite);
}
-void sub_80D541C(struct Sprite *sprite)
+static void sub_80D541C(struct Sprite *sprite)
{
sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8);
sprite->pos2.y = Cos(sprite->data[1], sprite->data[2] >> 8);
@@ -199,7 +360,7 @@ void sub_80D5470(u8 taskId) // initialize animation task for Move_ERUPTION?
task->func = sub_80D54E0;
}
-void sub_80D54E0(u8 taskId) // animate Move_ERUPTION?
+static void sub_80D54E0(u8 taskId) // animate Move_ERUPTION?
{
struct Task *task = &gTasks[taskId];
@@ -309,7 +470,7 @@ void sub_80D54E0(u8 taskId) // animate Move_ERUPTION?
}
}
-void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3)
+static void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3)
{
u16 i, j;
s8 sign;
@@ -346,4 +507,119 @@ void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3)
gTasks[taskId].data[a3]++;
}
}
-} \ No newline at end of file
+}
+
+void sub_80D58FC(struct Sprite *sprite)
+{
+ sub_80D59B0(sprite);
+
+ if (sprite->invisible)
+ {
+ gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ DestroySprite(sprite);
+ }
+}
+
+u16 sub_80D5940(u8 spriteId)
+{
+ u16 var1 = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y + gSprites[spriteId].centerToCornerVecY;
+
+ if (GetBattlerSide(gAnimBankAttacker) == 0)
+ {
+ var1 = ((var1 << 16) + 0x4A0000) >> 16;
+ }
+ else
+ {
+ var1 = ((var1 << 16) + 0x2C0000) >> 16;
+ }
+
+ return var1;
+}
+
+void sub_80D5994(struct Sprite *sprite, s16 x, s16 y)
+{
+ sprite->data[0] = 0;
+ sprite->data[1] = 0;
+ sprite->data[2] = (u16)sprite->pos1.x * 8;
+ sprite->data[3] = (u16)sprite->pos1.y * 8;
+ sprite->data[4] = x * 8;
+ sprite->data[5] = y * 8;
+}
+
+static void sub_80D59B0(struct Sprite *sprite)
+{
+ int var1;
+ if (++sprite->data[0] > 2)
+ {
+ sprite->data[0] = 0;
+ ++sprite->data[1];
+ var1 = (u16)sprite->data[1] * (u16)sprite->data[1];
+ sprite->data[3] += var1;
+ }
+
+ sprite->data[2] += sprite->data[4];
+ sprite->pos1.x = sprite->data[2] >> 3;
+ sprite->data[3] += sprite->data[5];
+ sprite->pos1.y = sprite->data[3] >> 3;
+
+ if (sprite->pos1.x < -8 || sprite->pos1.x > 0xf8 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
+ sprite->invisible = TRUE;
+}
+
+void sub_80D5A20(struct Sprite *sprite)
+{
+ sprite->pos1.x = gBattleAnimArgs[0];
+ sprite->pos1.y = gBattleAnimArgs[1];
+
+ sprite->data[0] = 0;
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ sprite->data[6] = gBattleAnimArgs[2];
+ sprite->data[7] = gBattleAnimArgs[3];
+
+ sprite->oam.tileNum += gBattleAnimArgs[4] * 16;
+ sprite->callback = sub_80D5A74;
+}
+
+static void sub_80D5A74(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (sprite->data[6] != 0)
+ {
+ sprite->data[6]--;
+ return;
+ }
+
+ sprite->data[0]++;
+ // fall through
+ case 1:
+ sprite->pos1.y += 8;
+ if (sprite->pos1.y >= sprite->data[7])
+ {
+ sprite->pos1.y = sprite->data[7];
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ if (++sprite->data[1] > 1)
+ {
+ sprite->data[1] = 0;
+ if ((++sprite->data[2] & 1) != 0)
+ {
+ sprite->pos2.y = -3;
+ }
+ else
+ {
+ sprite->pos2.y = 3;
+ }
+ }
+
+ if (++sprite->data[3] > 16)
+ {
+ DestroyAnimSprite(sprite);
+ }
+ break;
+ }
+}
diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c
new file mode 100755
index 000000000..ec40e26c4
--- /dev/null
+++ b/src/battle/anim/flying.c
@@ -0,0 +1,346 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "battle_anim.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+void sub_80DA034(struct Sprite *sprite);
+void sub_80DA16C(struct Sprite *sprite);
+void sub_80DA208(struct Sprite *sprite);
+void sub_80DA300(struct Sprite *sprite);
+void sub_80DA38C(struct Sprite *sprite);
+void sub_80DA4D8(struct Sprite *sprite);
+void sub_80DAD30(struct Sprite *sprite);
+void sub_80DAD84(struct Sprite *sprite);
+void sub_80DB000(struct Sprite *sprite);
+void sub_80DB194(struct Sprite *sprite);
+void sub_80DB1F4(struct Sprite *sprite);
+void sub_80DB288(struct Sprite *sprite);
+void sub_80DB374(struct Sprite *sprite);
+void sub_80DB458(struct Sprite *sprite);
+void sub_80DB564(struct Sprite *sprite);
+void sub_80DB5E4(struct Sprite *sprite);
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA380 =
+{
+ .tileTag = 10009,
+ .paletteTag = 10009,
+ .oam = &gOamData_837DF7C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DA034,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA398[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xA, 0x0, 0, 24),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA3B0[] =
+{
+ gSpriteAffineAnim_83DA398,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA3B4 =
+{
+ .tileTag = 10009,
+ .paletteTag = 10009,
+ .oam = &gOamData_837DFDC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA3B0,
+ .callback = sub_80DA16C,
+};
+
+const union AnimCmd gSpriteAnim_83DA3CC[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(0, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 3, .vFlip = TRUE),
+ ANIMCMD_FRAME(0, 3, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA3E0[] =
+{
+ gSpriteAnim_83DA3CC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA3E4 =
+{
+ .tileTag = 10154,
+ .paletteTag = 10154,
+ .oam = &gOamData_837DF54,
+ .anims = gSpriteAnimTable_83DA3E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DA208,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA3FC[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6),
+ AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5),
+ AFFINEANIMCMD_FRAME(0xFFF0, 0x20, 0, 10),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA424[] =
+{
+ gSpriteAffineAnim_83DA3FC,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA428[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 50, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA438[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -40, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA448[] =
+{
+ gSpriteAffineAnim_83DA428,
+ gSpriteAffineAnim_83DA438,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA450 =
+{
+ .tileTag = 10156,
+ .paletteTag = 10156,
+ .oam = &gOamData_837DFFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA424,
+ .callback = sub_80DA300,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA468 =
+{
+ .tileTag = 10156,
+ .paletteTag = 10156,
+ .oam = &gOamData_837DF9C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA448,
+ .callback = sub_80DA38C,
+};
+
+const union AnimCmd gSpriteAnim_83DA480[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DA488[] =
+{
+ ANIMCMD_FRAME(16, 0, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA490[] =
+{
+ gSpriteAnim_83DA480,
+ gSpriteAnim_83DA488,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA498 =
+{
+ .tileTag = 10270,
+ .paletteTag = 10270,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83DA490,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DA4D8,
+};
+
+const u16 gUnknownPalette_83DA4B0[] = INCBIN_U16("graphics/unknown/unknown_3DA4B0.gbapal");
+
+const struct SpriteTemplate gSpriteTemplate_83DA4D0 =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DAD30,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DA4E8 =
+{
+ .tileTag = 10270,
+ .paletteTag = 10270,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83DA490,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DAD84,
+};
+
+const union AnimCmd gSpriteAnim_83DA500[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_FRAME(8, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA518[] =
+{
+ gSpriteAnim_83DA500,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA51C =
+{
+ .tileTag = 10162,
+ .paletteTag = 10162,
+ .oam = &gOamData_837DF54,
+ .anims = gSpriteAnimTable_83DA518,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB000,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA534[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6),
+ AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5),
+ AFFINEANIMCMD_FRAME(0xFFEC, 0x0, 0, 7),
+ AFFINEANIMCMD_FRAME(0xFFEC, 0xFFEC, 0, 5),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA564[] =
+{
+ gSpriteAffineAnim_83DA534,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA568 =
+{
+ .tileTag = 10156,
+ .paletteTag = 10156,
+ .oam = &gOamData_837DFFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA564,
+ .callback = sub_80DB194,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA580[] =
+{
+ AFFINEANIMCMD_FRAME(0xA0, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA590[] =
+{
+ gSpriteAffineAnim_83DA580,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA594 =
+{
+ .tileTag = 10156,
+ .paletteTag = 10156,
+ .oam = &gOamData_837DFFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA590,
+ .callback = sub_80DB1F4,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA5AC[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6),
+ AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5),
+ AFFINEANIMCMD_FRAME(0xFFF0, 0x20, 0, 10),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA5D4[] =
+{
+ gSpriteAffineAnim_83DA5AC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA5D8 =
+{
+ .tileTag = 10156,
+ .paletteTag = 10156,
+ .oam = &gOamData_837DFFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA5D4,
+ .callback = sub_80DB288,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA5F0[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x0, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x20, 0, 12),
+ AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 11),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA610[] =
+{
+ gSpriteAffineAnim_83DA5F0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA614 =
+{
+ .tileTag = 10272,
+ .paletteTag = 10272,
+ .oam = &gOamData_837DFFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB374,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA62C =
+{
+ .tileTag = 10273,
+ .paletteTag = 10273,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB458,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DA644 =
+{
+ .tileTag = 10212,
+ .paletteTag = 10212,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB564,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA65C =
+{
+ .tileTag = 10284,
+ .paletteTag = 10284,
+ .oam = &gOamData_837DFFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB5E4,
+};
diff --git a/src/battle/anim/ghost.c b/src/battle/anim/ghost.c
new file mode 100755
index 000000000..fd33d4782
--- /dev/null
+++ b/src/battle/anim/ghost.c
@@ -0,0 +1,191 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "battle_anim.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+void sub_80DDB6C(struct Sprite *sprite);
+void sub_80DDD58(struct Sprite *sprite);
+void sub_80DDF40(struct Sprite *sprite);
+void sub_80DE0FC(struct Sprite *sprite);
+void sub_80DE7B8(struct Sprite *sprite);
+void sub_80DEF3C(struct Sprite *sprite);
+void sub_80DF0B8(struct Sprite *sprite);
+void sub_80DF0B8(struct Sprite *sprite);
+void sub_80DF3D8(struct Sprite *sprite);
+void sub_80DF49C(struct Sprite *sprite);
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAE48[] =
+{
+ AFFINEANIMCMD_FRAME(0x1E, 0x1E, 10, 5),
+ AFFINEANIMCMD_FRAME(0xFFE2, 0xFFE2, 10, 5),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAE60[] =
+{
+ gSpriteAffineAnim_83DAE48,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAE64 =
+{
+ .tileTag = 10013,
+ .paletteTag = 10013,
+ .oam = &gOamData_837DFEC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DAE60,
+ .callback = sub_80DDB6C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAE7C =
+{
+ .tileTag = 10013,
+ .paletteTag = 10013,
+ .oam = &gOamData_837E04C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DDD58,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAE94[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 10, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAEA4[] =
+{
+ gSpriteAffineAnim_83DAE94,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAEA8 =
+{
+ .tileTag = 10176,
+ .paletteTag = 10176,
+ .oam = &gOamData_837DF94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DAEA4,
+ .callback = sub_80DDF40,
+};
+
+const union AnimCmd gSpriteAnim_83DAEC0[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(8, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(24, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DAED8[] =
+{
+ gSpriteAnim_83DAEC0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAEDC =
+{
+ .tileTag = 10177,
+ .paletteTag = 10177,
+ .oam = &gOamData_837DF74,
+ .anims = gSpriteAnimTable_83DAED8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DE0FC,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAEF4[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAF04[] =
+{
+ gSpriteAffineAnim_83DAEF4,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DAF08 =
+{
+ .tileTag = 10188,
+ .paletteTag = 10188,
+ .oam = &gOamData_837E07C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DE7B8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAF20 =
+{
+ .tileTag = 10199,
+ .paletteTag = 10199,
+ .oam = &gOamData_837E074,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DEF3C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAF38 =
+{
+ .tileTag = 10200,
+ .paletteTag = 10200,
+ .oam = &gOamData_837E054,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DF0B8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAF50 =
+{
+ .tileTag = 10221,
+ .paletteTag = 10221,
+ .oam = &gOamData_837E054,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DF0B8,
+};
+
+const union AnimCmd gSpriteAnim_83DAF68[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(24, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DAF7C[] =
+{
+ gSpriteAnim_83DAF68,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DAF80 =
+{
+ .tileTag = 10253,
+ .paletteTag = 10253,
+ .oam = &gOamData_837E094,
+ .anims = gSpriteAnimTable_83DAF7C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DF3D8,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DAF98 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DF49C,
+};
diff --git a/src/battle/anim/ground.c b/src/battle/anim/ground.c
new file mode 100755
index 000000000..a523df20e
--- /dev/null
+++ b/src/battle/anim/ground.c
@@ -0,0 +1,125 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "battle_anim.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+void sub_80E0F1C(struct Sprite *sprite);
+void sub_80E1004(struct Sprite *sprite);
+void sub_80E1078(struct Sprite *sprite);
+void sub_80E1078(struct Sprite *sprite);
+void sub_80E1108(struct Sprite *sprite);
+void sub_80E1728(struct Sprite *sprite);
+void sub_80E17CC(struct Sprite *sprite);
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB2A0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 15, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB2B0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 20, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB2C0[] =
+{
+ gSpriteAffineAnim_83DB2A0,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB2C4[] =
+{
+ gSpriteAffineAnim_83DB2B0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB2C8 =
+{
+ .tileTag = 10000,
+ .paletteTag = 10000,
+ .oam = &gOamData_837DF94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB2C0,
+ .callback = sub_80E0F1C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB2E0 =
+{
+ .tileTag = 10000,
+ .paletteTag = 10000,
+ .oam = &gOamData_837DF94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB2C4,
+ .callback = sub_80E1004,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB2F8 =
+{
+ .tileTag = 10074,
+ .paletteTag = 10074,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E1078,
+};
+
+const union AnimCmd gSpriteAnim_83DB310[] =
+{
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DB318[] =
+{
+ gSpriteAnim_83DB310,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB31C =
+{
+ .tileTag = 10074,
+ .paletteTag = 10074,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83DB318,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E1078,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB334 =
+{
+ .tileTag = 10074,
+ .paletteTag = 10074,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E1108,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB34C =
+{
+ .tileTag = 10074,
+ .paletteTag = 10074,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E1728,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB364 =
+{
+ .tileTag = 10281,
+ .paletteTag = 10281,
+ .oam = &gOamData_837DF54,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E17CC,
+};
diff --git a/src/battle/anim/heated_rock.c b/src/battle/anim/heated_rock.c
deleted file mode 100644
index 6f1a1344a..000000000
--- a/src/battle/anim/heated_rock.c
+++ /dev/null
@@ -1,129 +0,0 @@
-#include "global.h"
-#include "battle_anim.h"
-#include "rom_8077ABC.h"
-
-extern s16 gBattleAnimArgs[8];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-extern u16 gBattleTypeFlags;
-
-void sub_80D59B0(struct Sprite *);
-static void sub_80D5A74(struct Sprite *);
-
-// heated_rock (moves heated rock sprites)
-// Used in Eruption.
-
-void sub_80D58FC(struct Sprite *sprite)
-{
- sub_80D59B0(sprite);
-
- if (sprite->invisible)
- {
- gTasks[sprite->data[6]].data[sprite->data[7]]--;
- DestroySprite(sprite);
- }
-}
-
-u16 sub_80D5940(u8 spriteId)
-{
- u16 var1 = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y + gSprites[spriteId].centerToCornerVecY;
-
- if (GetBattlerSide(gAnimBankAttacker) == 0)
- {
- var1 = ((var1 << 16) + 0x4A0000) >> 16;
- }
- else
- {
- var1 = ((var1 << 16) + 0x2C0000) >> 16;
- }
-
- return var1;
-}
-
-void sub_80D5994(struct Sprite *sprite, s16 x, s16 y)
-{
- sprite->data[0] = 0;
- sprite->data[1] = 0;
- sprite->data[2] = (u16)sprite->pos1.x * 8;
- sprite->data[3] = (u16)sprite->pos1.y * 8;
- sprite->data[4] = x * 8;
- sprite->data[5] = y * 8;
-}
-
-void sub_80D59B0(struct Sprite *sprite)
-{
- int var1;
- if (++sprite->data[0] > 2)
- {
- sprite->data[0] = 0;
- ++sprite->data[1];
- var1 = (u16)sprite->data[1] * (u16)sprite->data[1];
- sprite->data[3] += var1;
- }
-
- sprite->data[2] += sprite->data[4];
- sprite->pos1.x = sprite->data[2] >> 3;
- sprite->data[3] += sprite->data[5];
- sprite->pos1.y = sprite->data[3] >> 3;
-
- if (sprite->pos1.x < -8 || sprite->pos1.x > 0xf8 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
- sprite->invisible = TRUE;
-}
-
-void sub_80D5A20(struct Sprite *sprite)
-{
- sprite->pos1.x = gBattleAnimArgs[0];
- sprite->pos1.y = gBattleAnimArgs[1];
-
- sprite->data[0] = 0;
- sprite->data[1] = 0;
- sprite->data[2] = 0;
- sprite->data[6] = gBattleAnimArgs[2];
- sprite->data[7] = gBattleAnimArgs[3];
-
- sprite->oam.tileNum += gBattleAnimArgs[4] * 16;
- sprite->callback = sub_80D5A74;
-}
-
-static void sub_80D5A74(struct Sprite *sprite)
-{
- switch (sprite->data[0])
- {
- case 0:
- if (sprite->data[6] != 0)
- {
- sprite->data[6]--;
- return;
- }
-
- sprite->data[0]++;
- // fall through
- case 1:
- sprite->pos1.y += 8;
- if (sprite->pos1.y >= sprite->data[7])
- {
- sprite->pos1.y = sprite->data[7];
- sprite->data[0]++;
- }
- break;
- case 2:
- if (++sprite->data[1] > 1)
- {
- sprite->data[1] = 0;
- if ((++sprite->data[2] & 1) != 0)
- {
- sprite->pos2.y = -3;
- }
- else
- {
- sprite->pos2.y = 3;
- }
- }
-
- if (++sprite->data[3] > 16)
- {
- DestroyAnimSprite(sprite);
- }
- break;
- }
-}
diff --git a/src/battle/anim/ice.c b/src/battle/anim/ice.c
new file mode 100755
index 000000000..50c8b9030
--- /dev/null
+++ b/src/battle/anim/ice.c
@@ -0,0 +1,495 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "battle_anim.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+void sub_80D7704(struct Sprite *sprite);
+void sub_80D78EC(struct Sprite *sprite);
+void sub_80D792C(struct Sprite *sprite);
+void sub_80D79B4(struct Sprite *sprite);
+void sub_80D7A64(struct Sprite *sprite);
+void sub_80D7CD4(struct Sprite *sprite);
+void sub_80D7E88(struct Sprite *sprite);
+void sub_80D7F10(struct Sprite *sprite);
+void sub_80D83E0(struct Sprite *sprite);
+void sub_80D8700(struct Sprite *sprite);
+void sub_80D8D1C(struct Sprite *sprite);
+void sub_807A9BC(struct Sprite *sprite);
+void unc_080B06FC(struct Sprite *sprite);
+void sub_80D8F10(struct Sprite *sprite);
+
+const union AnimCmd gSpriteAnim_83D9B58[] =
+{
+ ANIMCMD_FRAME(0, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 5, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9B64[] =
+{
+ gSpriteAnim_83D9B58,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9B68 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D7704,
+};
+
+const union AnimCmd gSpriteAnim_83D9B80[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9B88[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9B90[] =
+{
+ ANIMCMD_FRAME(6, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9B98[] =
+{
+ ANIMCMD_FRAME(7, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9BA0[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9BA8[] =
+{
+ ANIMCMD_FRAME(12, 6),
+ ANIMCMD_FRAME(13, 6),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9BB4[] =
+{
+ gSpriteAnim_83D9B80,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9BB8[] =
+{
+ gSpriteAnim_83D9B88,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9BBC[] =
+{
+ gSpriteAnim_83D9B90,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9BC0[] =
+{
+ gSpriteAnim_83D9B98,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9BC4[] =
+{
+ gSpriteAnim_83D9BA0,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9BC8[] =
+{
+ gSpriteAnim_83D9BA8,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9BCC[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 40, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9BDC[] =
+{
+ gSpriteAffineAnim_83D9BCC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9BE0 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837E144,
+ .anims = gSpriteAnimTable_83D9BB8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9BDC,
+ .callback = sub_80D78EC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9BF8 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837E044,
+ .anims = gSpriteAnimTable_83D9BBC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D78EC,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9C10[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 10, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9C20[] =
+{
+ gSpriteAffineAnim_83D9C10,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C24 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837E0E4,
+ .anims = gSpriteAnimTable_83D9BB8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9C20,
+ .callback = sub_80D792C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C3C =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837E044,
+ .anims = gSpriteAnimTable_83D9BBC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D792C,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9C54[] =
+{
+ AFFINEANIMCMD_FRAME(0xCE, 0xCE, 0, 0),
+ AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 10),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9C74[] =
+{
+ gSpriteAffineAnim_83D9C54,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C78 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837E0E4,
+ .anims = gSpriteAnimTable_83D9BB8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9C74,
+ .callback = sub_80D79B4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C90 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837E0A4,
+ .anims = gSpriteAnimTable_83D9BBC,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9C74,
+ .callback = sub_80D79B4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9CA8 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837DF24,
+ .anims = gSpriteAnimTable_83D9BC0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D7A64,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9CC0 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D9BC4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D7CD4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9CD8 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837DF24,
+ .anims = gSpriteAnimTable_83D9BC0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D7CD4,
+};
+
+const union AnimCmd gSpriteAnim_83D9CF0[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(6, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9D10[] =
+{
+ gSpriteAnim_83D9CF0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D14 =
+{
+ .tileTag = 10142,
+ .paletteTag = 10142,
+ .oam = &gOamData_837E084,
+ .anims = gSpriteAnimTable_83D9D10,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D7E88,
+};
+
+const union AnimCmd gSpriteAnim_83D9D2C[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9D38[] =
+{
+ gSpriteAnim_83D9D2C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D3C =
+{
+ .tileTag = 10144,
+ .paletteTag = 10144,
+ .oam = &gOamData_837E074,
+ .anims = gSpriteAnimTable_83D9D38,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D7F10,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D54 =
+{
+ .tileTag = 10172,
+ .paletteTag = 10172,
+ .oam = &gOamData_837E074,
+ .anims = gSpriteAnimTable_83D9D38,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D7F10,
+};
+
+const u8 gUnknown_083D9D6C[] =
+{
+ 0, 1, 2, 2, 2, 2, 3, 4, 4, 4, 5, 6, 6, 6, 6, 7, 8, 8, 8, 9,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D80 =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D83E0,
+};
+
+const u8 gUnknown_083D9D98[] =
+{
+ 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9DAC =
+{
+ .tileTag = 10172,
+ .paletteTag = 10172,
+ .oam = &gOamData_837E074,
+ .anims = gSpriteAnimTable_83D9D38,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D8700,
+};
+
+// bitfield array
+const u32 gUnknown_083D9DC4[] =
+{
+ 0x2001E064,
+ 0x0001E055,
+ 0x1011E0F2,
+ 0x1021E042,
+ 0x0031E0B6,
+ 0x2001E03C,
+ 0x0011E0D6,
+ 0x1001E071,
+ 0x1031E0D2,
+ 0x0021E026,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9DEC[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9DFC[] =
+{
+ AFFINEANIMCMD_FRAME(0xF0, 0xF0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9E0C[] =
+{
+ AFFINEANIMCMD_FRAME(0xE0, 0xE0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9E1C[] =
+{
+ AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9E2C[] =
+{
+ gSpriteAffineAnim_83D9DEC,
+ gSpriteAffineAnim_83D9DFC,
+ gSpriteAffineAnim_83D9E0C,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9E38[] =
+{
+ gSpriteAffineAnim_83D9E1C,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9E3C =
+{
+ .tileTag = 10263,
+ .paletteTag = 10263,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9E2C,
+ .callback = sub_80D8D1C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9E54 =
+{
+ .tileTag = 10263,
+ .paletteTag = 10263,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9E38,
+ .callback = sub_807A9BC,
+};
+
+const union AnimCmd gSpriteAnim_83D9E6C[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9E74[] =
+{
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9E88[] =
+{
+ gSpriteAnim_83D9E6C,
+ gSpriteAnim_83D9E74,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9E90[] =
+{
+ AFFINEANIMCMD_FRAME(0xE0, 0xE0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9EA0[] =
+{
+ AFFINEANIMCMD_FRAME(0x118, 0x118, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9EB0[] =
+{
+ AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9EC0[] =
+{
+ AFFINEANIMCMD_FRAME(0x180, 0x180, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D9ED0[] =
+{
+ AFFINEANIMCMD_FRAME(0x1C0, 0x1C0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9EE0[] =
+{
+ gSpriteAffineAnim_83D9E90,
+ gSpriteAffineAnim_83D9EA0,
+ gSpriteAffineAnim_83D9EB0,
+ gSpriteAffineAnim_83D9EC0,
+ gSpriteAffineAnim_83D9ED0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9EF4 =
+{
+ .tileTag = 10043,
+ .paletteTag = 10043,
+ .oam = &gOamData_837DFF4,
+ .anims = gSpriteAnimTable_83D9E88,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9EE0,
+ .callback = unc_080B06FC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9F0C =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837DF24,
+ .anims = gSpriteAnimTable_83D9BBC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D8F10,
+};
diff --git a/src/battle/anim/normal.c b/src/battle/anim/normal.c
new file mode 100755
index 000000000..8303e7c68
--- /dev/null
+++ b/src/battle/anim/normal.c
@@ -0,0 +1,240 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "battle_anim.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+void sub_80E1CB4(struct Sprite *sprite);
+void sub_80E1D84(struct Sprite *sprite);
+void sub_80E1E2C(struct Sprite *sprite);
+void sub_80E1F3C(struct Sprite *sprite);
+void sub_80E24B8(struct Sprite *sprite);
+void sub_80E27A0(struct Sprite *sprite);
+void sub_80E2838(struct Sprite *sprite);
+void sub_80E27A0(struct Sprite *sprite);
+void sub_80E2870(struct Sprite *sprite);
+void sub_80E2908(struct Sprite *sprite);
+void sub_80E2978(struct Sprite *sprite);
+void sub_80E29C0(struct Sprite *sprite);
+void sub_80E27E8(struct Sprite *sprite);
+
+const union AnimCmd gSpriteAnim_83DB37C[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(0, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gSpriteAnim_83DB390[] =
+{
+ ANIMCMD_FRAME(0, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DB3A4[] =
+{
+ gSpriteAnim_83DB37C,
+ gSpriteAnim_83DB390,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB3AC =
+{
+ .tileTag = 10073,
+ .paletteTag = 10073,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83DB3A4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E1CB4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB3C4 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E1D84,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB3DC =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E1E2C,
+};
+
+const union AnimCmd gSpriteAnim_83DB3F4[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_FRAME(64, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DB40C[] =
+{
+ gSpriteAnim_83DB3F4,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DB410 =
+{
+ .tileTag = 10071,
+ .paletteTag = 10071,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DB40C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E1F3C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB428 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E24B8,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB440[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB450[] =
+{
+ AFFINEANIMCMD_FRAME(0xD8, 0xD8, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB468[] =
+{
+ AFFINEANIMCMD_FRAME(0xB0, 0xB0, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DB480[] =
+{
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB498[] =
+{
+ gSpriteAffineAnim_83DB440,
+ gSpriteAffineAnim_83DB450,
+ gSpriteAffineAnim_83DB468,
+ gSpriteAffineAnim_83DB480,
+};
+
+const struct SpriteTemplate gBasicHitSplatSpriteTemplate =
+{
+ .tileTag = 10135,
+ .paletteTag = 10135,
+ .oam = &gOamData_837E0B4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB498,
+ .callback = sub_80E27A0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB4C0 =
+{
+ .tileTag = 10135,
+ .paletteTag = 10135,
+ .oam = &gOamData_837E0B4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB498,
+ .callback = sub_80E2838,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB4D8 =
+{
+ .tileTag = 10148,
+ .paletteTag = 10148,
+ .oam = &gOamData_837E0B4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB498,
+ .callback = sub_80E27A0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB4F0 =
+{
+ .tileTag = 10135,
+ .paletteTag = 10135,
+ .oam = &gOamData_837E0B4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB498,
+ .callback = sub_80E2870,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB508 =
+{
+ .tileTag = 10135,
+ .paletteTag = 10135,
+ .oam = &gOamData_837E0B4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB498,
+ .callback = sub_80E2908,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB520 =
+{
+ .tileTag = 10285,
+ .paletteTag = 10285,
+ .oam = &gOamData_837E054,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80E2978,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB538 =
+{
+ .tileTag = 10135,
+ .paletteTag = 10135,
+ .oam = &gOamData_837DF94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB498,
+ .callback = sub_80E29C0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB550 =
+{
+ .tileTag = 10135,
+ .paletteTag = 10135,
+ .oam = &gOamData_837E0B4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DB498,
+ .callback = sub_80E27E8,
+};
+
+const u16 gUnknown_083DB568 = RGB(31, 31, 31);
diff --git a/src/battle/anim/poison.c b/src/battle/anim/poison.c
index 2cc104c07..4d6673adf 100644
--- a/src/battle/anim/poison.c
+++ b/src/battle/anim/poison.c
@@ -7,11 +7,191 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-void sub_80D9DD4(struct Sprite *sprite);
-void sub_80D9E78(struct Sprite *sprite);
-void sub_80D9EE8(struct Sprite *sprite);
+extern const union AnimCmd *const gSpriteAnimTable_83D9310[];
+
+void sub_80793C4(struct Sprite *sprite);
+void sub_80D9D70(struct Sprite *sprite);
+void sub_80D9DF0(struct Sprite *sprite);
+void sub_80D9E94(struct Sprite *sprite);
+void sub_80D9F14(struct Sprite *sprite);
+void AnimBubbleEffect(struct Sprite *sprite);
+static void sub_80D9DD4(struct Sprite *sprite);
+static void sub_80D9E78(struct Sprite *sprite);
+static void sub_80D9EE8(struct Sprite *sprite);
static void AnimBubbleEffectStep(struct Sprite *sprite);
+const union AnimCmd gSpriteAnim_83DA22C[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(24, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA240[] =
+{
+ gSpriteAnim_83DA22C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA244 =
+{
+ .tileTag = 10151,
+ .paletteTag = 10151,
+ .oam = &gOamData_837DF74,
+ .anims = gSpriteAnimTable_83DA240,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80793C4,
+};
+
+const union AnimCmd gSpriteAnim_83DA25C[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DA264[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DA26C[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA274[] =
+{
+ gSpriteAnim_83DA25C,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA278[] =
+{
+ gSpriteAnim_83DA264,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA27C[] =
+{
+ gSpriteAnim_83DA26C,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA280[] =
+{
+ AFFINEANIMCMD_FRAME(0x160, 0x160, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10),
+ AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA2A0[] =
+{
+ AFFINEANIMCMD_FRAME(0xEC, 0xEC, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA2B0[] =
+{
+ gSpriteAffineAnim_83DA280,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA2B4[] =
+{
+ gSpriteAffineAnim_83DA2A0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA2B8 =
+{
+ .tileTag = 10150,
+ .paletteTag = 10150,
+ .oam = &gOamData_837DFEC,
+ .anims = gSpriteAnimTable_83DA274,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA2B0,
+ .callback = sub_80D9D70,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA2D0 =
+{
+ .tileTag = 10150,
+ .paletteTag = 10150,
+ .oam = &gOamData_837DFEC,
+ .anims = gSpriteAnimTable_83DA274,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA2B0,
+ .callback = sub_80D9DF0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA2E8 =
+{
+ .tileTag = 10150,
+ .paletteTag = 10150,
+ .oam = &gOamData_837DF8C,
+ .anims = gSpriteAnimTable_83DA27C,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA2B4,
+ .callback = sub_80D9E94,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA300[] =
+{
+ AFFINEANIMCMD_FRAME(0xFFF0, 0x10, 0, 6),
+ AFFINEANIMCMD_FRAME(0x10, 0xFFF0, 0, 6),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA318[] =
+{
+ gSpriteAffineAnim_83DA300,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA31C =
+{
+ .tileTag = 10150,
+ .paletteTag = 10150,
+ .oam = &gOamData_837DFEC,
+ .anims = gSpriteAnimTable_83DA278,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA318,
+ .callback = sub_80D9F14,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA334[] =
+{
+ AFFINEANIMCMD_FRAME(0x9C, 0x9C, 0, 0),
+ AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 20),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA34C[] =
+{
+ gSpriteAffineAnim_83DA334,
+};
+
+const struct SpriteTemplate gPoisonBubbleSpriteTemplate =
+{
+ .tileTag = 10150,
+ .paletteTag = 10150,
+ .oam = &gOamData_837DF8C,
+ .anims = gSpriteAnimTable_83DA274,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA34C,
+ .callback = AnimBubbleEffect,
+};
+
+const struct SpriteTemplate gWaterBubbleSpriteTemplate =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837E0AC,
+ .anims = gSpriteAnimTable_83D9310,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA34C,
+ .callback = AnimBubbleEffect,
+};
+
void sub_80D9D70(struct Sprite *sprite)
{
if (!gBattleAnimArgs[3])
@@ -29,7 +209,7 @@ void sub_80D9D70(struct Sprite *sprite)
sprite->callback = sub_80D9DD4;
}
-void sub_80D9DD4(struct Sprite *sprite) // same as sub_80D9E78
+static void sub_80D9DD4(struct Sprite *sprite) // same as sub_80D9E78
{
if (TranslateAnimSpriteLinearAndSine(sprite))
DestroyAnimSprite(sprite);
@@ -57,7 +237,7 @@ void sub_80D9DF0(struct Sprite *sprite)
sprite->callback = sub_80D9E78;
}
-void sub_80D9E78(struct Sprite *sprite) // same as sub_80D9DD4
+static void sub_80D9E78(struct Sprite *sprite) // same as sub_80D9DD4
{
if (TranslateAnimSpriteLinearAndSine(sprite))
DestroyAnimSprite(sprite);
@@ -79,7 +259,7 @@ void sub_80D9E94(struct Sprite *sprite)
sprite->callback = sub_80D9EE8;
}
-void sub_80D9EE8(struct Sprite *sprite)
+static void sub_80D9EE8(struct Sprite *sprite)
{
sub_8078394(sprite);
diff --git a/src/battle/anim/psychic.c b/src/battle/anim/psychic.c
index 7babb3a19..a63652646 100644
--- a/src/battle/anim/psychic.c
+++ b/src/battle/anim/psychic.c
@@ -16,12 +16,13 @@ extern u16 gBattle_BG1_X;
extern u16 gBattle_BG2_X;
extern u8 gBankSpriteIds[];
-extern const union AffineAnimCmd *const gUnknown_083DA888[];
-extern struct AffineAnimFrameCmd gUnknown_083DA8A4;
-extern struct AffineAnimFrameCmd gUnknown_083DA8C4;
-extern const struct SpriteTemplate gSpriteTemplate_83DA8DC;
-extern const struct SpriteTemplate gSpriteTemplate_83DA9AC;
-
+void sub_80DB74C(struct Sprite *sprite);
+void sub_80DBA4C(struct Sprite *sprite);
+void sub_80DBAF4(struct Sprite *sprite);
+void sub_80DBB70(struct Sprite *sprite);
+void sub_80DC068(struct Sprite *sprite);
+void sub_80DC2B0(struct Sprite *sprite);
+void sub_80DC700(struct Sprite *sprite);
static void sub_80DB88C(struct Sprite *sprite);
static void sub_80DB8C0(struct Sprite *sprite);
static void sub_80DB92C(struct Sprite *sprite);
@@ -35,6 +36,395 @@ static void sub_80DC1FC(u8 taskId);
static void sub_80DC3F4(u8 taskId);
void sub_80DC5F4(u8 taskId);
+const union AffineAnimCmd gSpriteAffineAnim_83DA674[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFFE, 0xFFFE, -10, 120),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA68C[] =
+{
+ gSpriteAffineAnim_83DA674,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA690 =
+{
+ .tileTag = 10196,
+ .paletteTag = 10196,
+ .oam = &gOamData_837E0BC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA68C,
+ .callback = sub_80793C4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA6A8 =
+{
+ .tileTag = 10166,
+ .paletteTag = 10166,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB74C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA6C0 =
+{
+ .tileTag = 10167,
+ .paletteTag = 10167,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB74C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA6D8 =
+{
+ .tileTag = 10168,
+ .paletteTag = 10168,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB74C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA6F0 =
+{
+ .tileTag = 10169,
+ .paletteTag = 10169,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB74C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA708 =
+{
+ .tileTag = 10170,
+ .paletteTag = 10170,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DB74C,
+};
+
+const union AnimCmd gSpriteAnim_83DA720[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_FRAME(64, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA738[] =
+{
+ gSpriteAnim_83DA720,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA73C =
+{
+ .tileTag = 10071,
+ .paletteTag = 10071,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DA738,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DBA4C,
+};
+
+const union AnimCmd gSpriteAnim_83DA754[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA768[] =
+{
+ gSpriteAnim_83DA754,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA76C =
+{
+ .tileTag = 10070,
+ .paletteTag = 10070,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83DA768,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DBA4C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA784 =
+{
+ .tileTag = 10163,
+ .paletteTag = 10163,
+ .oam = &gOamData_837DF74,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const union AnimCmd gSpriteAnim_83DA79C[] =
+{
+ ANIMCMD_FRAME(8, 60, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 22, .hFlip = TRUE),
+ ANIMCMD_LOOP(0),
+ ANIMCMD_FRAME(16, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 5, .hFlip = TRUE),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME(8, 22, .hFlip = TRUE),
+ ANIMCMD_FRAME(24, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(40, 22, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DA7DC[] =
+{
+ ANIMCMD_FRAME(8, 60),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(8, 22),
+ ANIMCMD_LOOP(0),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME(8, 22),
+ ANIMCMD_FRAME(24, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(40, 22),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA81C[] =
+{
+ gSpriteAnim_83DA79C,
+ gSpriteAnim_83DA7DC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA824 =
+{
+ .tileTag = 10097,
+ .paletteTag = 10097,
+ .oam = &gOamData_837DF74,
+ .anims = gSpriteAnimTable_83DA81C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DBAF4,
+};
+
+const union AnimCmd gSpriteAnim_83DA83C[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_FRAME(48, 6),
+ ANIMCMD_FRAME(64, 6),
+ ANIMCMD_FRAME(80, 6),
+ ANIMCMD_FRAME(96, 18),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DA85C[] =
+{
+ gSpriteAnim_83DA83C,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_3DA860[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, 4, 4),
+ AFFINEANIMCMD_FRAME(0, 0, -4, 8),
+ AFFINEANIMCMD_FRAME(0, 0, 4, 4),
+ AFFINEANIMCMD_LOOP(2),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_083DA888[] =
+{
+ gSpriteAffineAnim_3DA860,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA88C =
+{
+ .tileTag = 10093,
+ .paletteTag = 10093,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DA85C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DBB70,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_083DA8A4[] =
+{
+ AFFINEANIMCMD_FRAME(-8, 10, 0, 16),
+ AFFINEANIMCMD_FRAME(18, -18, 0, 16),
+ AFFINEANIMCMD_FRAME(-20, 16, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_083DA8C4[] =
+{
+ AFFINEANIMCMD_FRAME(64, -4, 0, 20),
+ AFFINEANIMCMD_FRAME(0, 0, 0, -56),
+ AFFINEANIMCMD_END,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DA8DC =
+{
+ .tileTag = 10249,
+ .paletteTag = 10249,
+ .oam = &gOamData_837E04C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA8F4 =
+{
+ .tileTag = 10250,
+ .paletteTag = 10250,
+ .oam = &gOamData_837DF3C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DC068,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA90C[] =
+{
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 8),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA924[] =
+{
+ AFFINEANIMCMD_FRAME(0xF0, 0xF0, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 6),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 2),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA94C[] =
+{
+ AFFINEANIMCMD_FRAME(0xD0, 0xD0, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 4),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 4),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA974[] =
+{
+ AFFINEANIMCMD_FRAME(0xB0, 0xB0, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 2),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 6),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA99C[] =
+{
+ gSpriteAffineAnim_83DA90C,
+ gSpriteAffineAnim_83DA924,
+ gSpriteAffineAnim_83DA94C,
+ gSpriteAffineAnim_83DA974,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DA9AC =
+{
+ .tileTag = 10251,
+ .paletteTag = 10251,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA99C,
+ .callback = sub_80DC2B0,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA9C4[] =
+{
+ AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 120),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA9DC[] =
+{
+ gSpriteAffineAnim_83DA9C4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA9E0 =
+{
+ .tileTag = 10267,
+ .paletteTag = 10267,
+ .oam = &gOamData_837E11C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA9DC,
+ .callback = sub_80793C4,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DA9F8[] =
+{
+ AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0),
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 17),
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 10),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 10),
+ AFFINEANIMCMD_LOOP(4),
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0xFFF0, 0xFFF0, 0, 5),
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 5),
+ AFFINEANIMCMD_LOOP(7),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAA50[] =
+{
+ AFFINEANIMCMD_FRAME(0xFFEC, 0x18, 0, 15),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAA60[] =
+{
+ gSpriteAffineAnim_83DA9F8,
+ gSpriteAffineAnim_83DAA50,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAA68 =
+{
+ .tileTag = 10212,
+ .paletteTag = 10212,
+ .oam = &gOamData_837E11C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DAA60,
+ .callback = sub_80DC700,
+};
void sub_80DB74C(struct Sprite *sprite)
{
@@ -254,7 +644,7 @@ void sub_80DBB70(struct Sprite *sprite)
static void sub_80DBC00(struct Sprite *sprite)
{
sprite->oam.affineMode = 1;
- sprite->affineAnims = gUnknown_083DA888;
+ sprite->affineAnims = gSpriteAffineAnimTable_083DA888;
sprite->data[0] = 0;
InitSpriteAffineAnim(sprite);
sprite->callback = sub_80DBC34;
@@ -287,7 +677,7 @@ void sub_80DBC94(u8 taskId)
struct Task *task = &gTasks[taskId];
u8 spriteId = GetAnimBattlerSpriteId(0);
task->data[0] = spriteId;
- sub_80798F4(task, spriteId, &gUnknown_083DA8A4);
+ sub_80798F4(task, spriteId, &gSpriteAffineAnim_083DA8A4);
task->func = sub_80DBCD0;
}
@@ -308,7 +698,7 @@ void sub_80DBCFC(u8 taskId)
task->data[2] = 0;
task->data[3] = GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER ? 4 : 8;
- sub_80798F4(task, task->data[0], &gUnknown_083DA8C4);
+ sub_80798F4(task, task->data[0], &gSpriteAffineAnim_083DA8C4);
task->func = sub_80DBD58;
}
diff --git a/src/battle/anim/rock.c b/src/battle/anim/rock.c
index 73be7c42b..595df3168 100644
--- a/src/battle/anim/rock.c
+++ b/src/battle/anim/rock.c
@@ -20,11 +20,20 @@ extern u16 gBattle_BG3_Y;
extern const u8 gBattleAnimBackgroundTilemap_SandstormBrew[];
extern const u8 gBattleAnimBackgroundImage_SandstormBrew[];
extern const u16 gBattleAnimSpritePalette_261[];
-extern const struct SpriteTemplate gSpriteTemplate_83DAD78;
-extern const struct SpriteTemplate gSpriteTemplate_83DAD90;
-
-extern const struct SubspriteTable gUnknown_083DAD10;
-
+extern const union AnimCmd *const gSpriteAnimTable_83D91F0[];
+extern const union AnimCmd *const gSpriteAnimTable_83D95E0[];
+
+extern void AnimMoveTwisterParticle(struct Sprite *sprite);
+
+void sub_80DCE9C(struct Sprite *sprite);
+void sub_80DCF60(struct Sprite *sprite);
+void sub_80DCFE4(struct Sprite *sprite);
+void sub_80DD3AC(struct Sprite *sprite);
+void sub_80DD490(struct Sprite *sprite);
+void sub_80DD87C(struct Sprite *sprite);
+void sub_80DD8E8(struct Sprite *sprite);
+void sub_80DD978(struct Sprite *sprite);
+void sub_80DD9A4(struct Sprite *sprite);
static void sub_80DCF1C(struct Sprite *sprite);
static void sub_80DD02C(struct Sprite *sprite);
static void sub_80DD190(u8 taskId);
@@ -34,6 +43,280 @@ static u8 sub_80DD8BC(void);
static void sub_80DD928(struct Sprite *sprite);
static void sub_80DD9FC(struct Sprite *sprite);
+const union AnimCmd gSpriteAnim_83DAC28[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DAC30[] =
+{
+ ANIMCMD_FRAME(48, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DAC38[] =
+{
+ ANIMCMD_FRAME(64, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DAC40[] =
+{
+ gSpriteAnim_83DAC28,
+ gSpriteAnim_83DAC30,
+ gSpriteAnim_83DAC38,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAC4C =
+{
+ .tileTag = 10058,
+ .paletteTag = 10058,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DAC40,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DCE9C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAC64 =
+{
+ .tileTag = 10058,
+ .paletteTag = 10058,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DAC40,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DCF60,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAC7C =
+{
+ .tileTag = 10074,
+ .paletteTag = 10074,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DCFE4,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DAC94[] =
+{
+ AFFINEANIMCMD_FRAME(0xC0, 0xC0, 0, 0),
+ AFFINEANIMCMD_FRAME(0x2, 0xFFFD, 0, 5),
+ AFFINEANIMCMD_FRAME(0xFFFE, 0x3, 0, 5),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DACB4[] =
+{
+ gSpriteAffineAnim_83DAC94,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DACB8 =
+{
+ .tileTag = 10149,
+ .paletteTag = 10149,
+ .oam = &gOamData_837E0AC,
+ .anims = gSpriteAnimTable_83D91F0,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DACB4,
+ .callback = sub_80DCFE4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DACD0 =
+{
+ .tileTag = 10029,
+ .paletteTag = 10029,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D95E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DCFE4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DACE8 =
+{
+ .tileTag = 10261,
+ .paletteTag = 10261,
+ .oam = &gOamData_837DF54,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DD3AC,
+};
+
+const struct Subsprite gSubspriteTable_83DAD00[] =
+{
+ {.x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .size = 2, .tileOffset = 0, .priority = 1},
+ {.x = 16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .size = 2, .tileOffset = 8, .priority = 1},
+};
+
+const struct SubspriteTable gSubspriteTables_83DAD10[] =
+{
+ {ARRAY_COUNT(gSubspriteTable_83DAD00), gSubspriteTable_83DAD00},
+};
+
+const union AnimCmd gSpriteAnim_83DAD18[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DAD20[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DAD28[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DAD30[] =
+{
+ ANIMCMD_FRAME(48, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DAD38[] =
+{
+ ANIMCMD_FRAME(64, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83DAD40[] =
+{
+ ANIMCMD_FRAME(80, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DAD48[] =
+{
+ gSpriteAnim_83DAD18,
+ gSpriteAnim_83DAD20,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DAD50[] =
+{
+ gSpriteAnim_83DAD28,
+ gSpriteAnim_83DAD30,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83DAD58[] =
+{
+ gSpriteAnim_83DAD38,
+ gSpriteAnim_83DAD40,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAD60 =
+{
+ .tileTag = 10058,
+ .paletteTag = 10058,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DAD48,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DD490,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DAD78 =
+{
+ .tileTag = 10074,
+ .paletteTag = 10074,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DD87C,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83DAD90 =
+{
+ .tileTag = 10058,
+ .paletteTag = 10058,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DD87C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DADA8 =
+{
+ .tileTag = 10058,
+ .paletteTag = 10058,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DAD48,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80DD8E8,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DADC0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -5, 5),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83DADD0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 5, 5),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83DADE0[] =
+{
+ gSpriteAffineAnim_83DADC0,
+ gSpriteAffineAnim_83DADD0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DADE8 =
+{
+ .tileTag = 10058,
+ .paletteTag = 10058,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83DAD48,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DADE0,
+ .callback = sub_80DD978,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAE00 =
+{
+ .tileTag = 10058,
+ .paletteTag = 10058,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83DAD48,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DADE0,
+ .callback = sub_80DD9A4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAE18 =
+{
+ .tileTag = 10058,
+ .paletteTag = 10058,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83DAD58,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DADE0,
+ .callback = AnimMoveTwisterParticle,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAE30 =
+{
+ .tileTag = 10058,
+ .paletteTag = 10058,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83DAD50,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DADE0,
+ .callback = sub_807A9BC,
+};
void sub_80DCE9C(struct Sprite *sprite)
{
@@ -244,7 +527,7 @@ void sub_80DD3AC(struct Sprite *sprite)
}
sprite->pos1.y = gBattleAnimArgs[0];
- SetSubspriteTables(sprite, &gUnknown_083DAD10);
+ SetSubspriteTables(sprite, gSubspriteTables_83DAD10);
sprite->data[1] = gBattleAnimArgs[1];
sprite->data[2] = gBattleAnimArgs[2];
sprite->data[0]++;
diff --git a/src/battle/anim/shock.c b/src/battle/anim/shock.c
index 19e4d0fb2..5b82d9319 100644
--- a/src/battle/anim/shock.c
+++ b/src/battle/anim/shock.c
@@ -8,11 +8,62 @@ extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
extern struct OamMatrix gOamMatrices[];
+void sub_80D6294(struct Sprite *sprite);
+void sub_80D6328(struct Sprite *sprite);
extern void sub_80DA48C(struct Sprite *);
// shock (moves the little electricity lines)
// Used in Shock.
+const union AnimCmd gSpriteAnim_83D9824[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_FRAME(80, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9840[] =
+{
+ gSpriteAnim_83D9824,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9844 =
+{
+ .tileTag = 10079,
+ .paletteTag = 10079,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9840,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D6294,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D985C =
+{
+ .tileTag = 10011,
+ .paletteTag = 10011,
+ .oam = &gOamData_837DF8C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D6328,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9874 =
+{
+ .tileTag = 10171,
+ .paletteTag = 10171,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
void sub_80D6294(struct Sprite *sprite)
{
sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2);
diff --git a/src/battle/anim/sunlight.c b/src/battle/anim/sunlight.c
index 88112c74a..7efc85b37 100644
--- a/src/battle/anim/sunlight.c
+++ b/src/battle/anim/sunlight.c
@@ -2,9 +2,34 @@
#include "battle_anim.h"
#include "rom_8077ABC.h"
+void sub_80D517C(struct Sprite *sprite);
+
// sunlight (creates sunlight orbs)
// Used in Sunny Day
+const union AffineAnimCmd gSpriteAffineAnim_83D9594[] =
+{
+ AFFINEANIMCMD_FRAME(0x50, 0x50, 0, 0),
+ AFFINEANIMCMD_FRAME(0x2, 0x2, 10, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D95AC[] =
+{
+ gSpriteAffineAnim_83D9594,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D95B0 =
+{
+ .tileTag = 10157,
+ .paletteTag = 10157,
+ .oam = &gOamData_837E0B4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D95AC,
+ .callback = sub_80D517C,
+};
+
void sub_80D517C(struct Sprite *sprite)
{
sprite->pos1.x = 0;
diff --git a/src/battle/anim/thunder.c b/src/battle/anim/thunder.c
index 70d4dc232..9cd04e61f 100644
--- a/src/battle/anim/thunder.c
+++ b/src/battle/anim/thunder.c
@@ -7,11 +7,38 @@ extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
extern u16 gBattleTypeFlags;
+void sub_80D61C8(struct Sprite *sprite);
static void sub_80D6218(struct Sprite *);
// thunder (positions the lightning bolts)
// Used in Thunder, Thunder Punch, and Tri Attack.
+const union AnimCmd gSpriteAnim_83D97B4[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D97CC[] =
+{
+ gSpriteAnim_83D97B4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D97D0 =
+{
+ .tileTag = 10037,
+ .paletteTag = 10037,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D97CC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D61C8,
+};
+
void sub_80D61C8(struct Sprite *sprite)
{
if (GetBattlerSide(gAnimBankAttacker) != 0)
diff --git a/src/battle/anim/water.c b/src/battle/anim/water.c
index a7e1883f3..0afe133f0 100644
--- a/src/battle/anim/water.c
+++ b/src/battle/anim/water.c
@@ -8,7 +8,187 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-static void sub_80D3874(struct Sprite *);
+extern const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA318[];
+extern const union AnimCmd *const gSpriteAnimTable_83D9BC8[];
+
+void sub_80D37FC(struct Sprite *sprite);
+void sub_80D3838(struct Sprite *sprite);
+void sub_80D4044(struct Sprite *sprite);
+void sub_80D452C(struct Sprite *sprite);
+void sub_80D4BF0(struct Sprite *sprite);
+void sub_80D4C64(struct Sprite *sprite);
+static void sub_80D3874(struct Sprite *sprite);
+
+const union AnimCmd gSpriteAnim_83D9300[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9308[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9310[] =
+{
+ gSpriteAnim_83D9300,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9314[] =
+{
+ gSpriteAnim_83D9308,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9318 =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837E04C,
+ .anims = gSpriteAnimTable_83D9310,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80794A8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9330 =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837E10C,
+ .anims = gSpriteAnimTable_83D9314,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83DA318,
+ .callback = sub_80D37FC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9348 =
+{
+ .tileTag = 10141,
+ .paletteTag = 10141,
+ .oam = &gOamData_837DF24,
+ .anims = gSpriteAnimTable_83D9BC8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D3838,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9360 =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D4044,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9378 =
+{
+ .tileTag = 10268,
+ .paletteTag = 10268,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D452C,
+};
+
+const union AnimCmd gSpriteAnim_83D9390[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9398[] =
+{
+ ANIMCMD_FRAME(9, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D93A0[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D93A8[] =
+{
+ gSpriteAnim_83D9390,
+ gSpriteAnim_83D9398,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D93B0[] =
+{
+ gSpriteAnim_83D93A0,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D93B4[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 15),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D93CC[] =
+{
+ AFFINEANIMCMD_FRAME(0xE0, 0xE0, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 15),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D93E4[] =
+{
+ AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 15),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D93FC[] =
+{
+ gSpriteAffineAnim_83D93B4,
+ gSpriteAffineAnim_83D93CC,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9404[] =
+{
+ gSpriteAffineAnim_83D93E4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9408 =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837DF24,
+ .anims = gSpriteAnimTable_83D93A8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D4BF0,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D9420 =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837DF84,
+ .anims = gSpriteAnimTable_83D93A8,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D93FC,
+ .callback = sub_80D4C64,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9438 =
+{
+ .tileTag = 10155,
+ .paletteTag = 10155,
+ .oam = &gOamData_837DF8C,
+ .anims = gSpriteAnimTable_83D93B0,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D9404,
+ .callback = sub_807A9BC,
+};
void sub_80D37FC(struct Sprite *sprite)
{
diff --git a/src/battle/anim/wisp_fire.c b/src/battle/anim/wisp_fire.c
index 5a51986c7..c96a3a86f 100644
--- a/src/battle/anim/wisp_fire.c
+++ b/src/battle/anim/wisp_fire.c
@@ -9,12 +9,45 @@
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankTarget;
extern u8 gAnimBankAttacker;
-
extern u8 gBankSpriteIds[];
-extern s8 gUnknown_083D9794[16];
-extern s8 gUnknown_083D97A4[16];
-void sub_80D5E4C(u8 taskId);
+void sub_80D5CC0(struct Sprite *sprite);
+static void sub_80D5E4C(u8 taskId);
+
+const union AnimCmd gSpriteAnim_83D9764[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D9778[] =
+{
+ gSpriteAnim_83D9764,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D977C =
+{
+ .tileTag = 10232,
+ .paletteTag = 10232,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D9778,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D5CC0,
+};
+
+const s8 gUnknown_083D9794[16] =
+{
+ -1, -1, 0, 1, 1, 0, 0, -1, -1, 1, 1, 0, 0, -1, 0, 1,
+};
+
+const s8 gUnknown_083D97A4[16] =
+{
+ -1, 0, 1, 0, -1, 1, 0, -1, 0, 1, 0, -1, 0, 1, 0, 1,
+};
void sub_80D5CC0(struct Sprite *sprite)
{
@@ -66,7 +99,7 @@ void sub_80D5DDC(u8 taskId)
task->func = sub_80D5E4C;
}
-void sub_80D5E4C(u8 taskId)
+static void sub_80D5E4C(u8 taskId)
{
struct Task *task = &gTasks[taskId];
diff --git a/src/battle/anim/wisp_orb.c b/src/battle/anim/wisp_orb.c
index 90b90acb7..32373ca2a 100644
--- a/src/battle/anim/wisp_orb.c
+++ b/src/battle/anim/wisp_orb.c
@@ -11,11 +11,58 @@ extern u8 gAnimBankTarget;
extern u16 gBattleTypeFlags;
extern u8 gUnknown_0202F7D2;
+void sub_80D5B0C(struct Sprite *sprite);
static void sub_80D5C5C(struct Sprite *);
// wisp_orb (animates the wisp orbs)
// Used in Will-O-Wisp
+const union AnimCmd gSpriteAnim_83D9710[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gSpriteAnim_83D9724[] =
+{
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D972C[] =
+{
+ ANIMCMD_FRAME(20, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D9734[] =
+{
+ ANIMCMD_FRAME(20, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D973C[] =
+{
+ gSpriteAnim_83D9710,
+ gSpriteAnim_83D9724,
+ gSpriteAnim_83D972C,
+ gSpriteAnim_83D9734,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D974C =
+{
+ .tileTag = 10231,
+ .paletteTag = 10231,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D973C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D5B0C,
+};
+
void sub_80D5B0C(struct Sprite *sprite)
{
switch (sprite->data[0])