summaryrefslogtreecommitdiff
path: root/src/battle/battle_anim_812C144.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle/battle_anim_812C144.c')
-rw-r--r--src/battle/battle_anim_812C144.c6065
1 files changed, 0 insertions, 6065 deletions
diff --git a/src/battle/battle_anim_812C144.c b/src/battle/battle_anim_812C144.c
deleted file mode 100644
index 90e7d8e2c..000000000
--- a/src/battle/battle_anim_812C144.c
+++ /dev/null
@@ -1,6065 +0,0 @@
-#include "global.h"
-#include "battle.h"
-#include "battle_anim.h"
-#include "blend_palette.h"
-#include "contest.h"
-#include "data2.h"
-#include "decompress.h"
-#include "ewram.h"
-#include "palette.h"
-#include "random.h"
-#include "rom_8077ABC.h"
-#include "scanline_effect.h"
-#include "sound.h"
-#include "trig.h"
-#include "constants/songs.h"
-#include "constants/species.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gBattleAnimAttacker;
-extern u8 gBattleAnimTarget;
-extern u8 gAnimVisualTaskCount;
-extern u8 gAnimFriendship;
-extern s32 gAnimMoveDmg;
-extern u16 gBattle_WIN0H;
-extern u16 gBattle_WIN0V;
-extern u16 gBattle_WIN1H;
-extern u16 gBattle_WIN1V;
-extern u16 gBattle_BG1_X;
-extern u16 gBattle_BG1_Y;
-extern u16 gBattle_BG2_X;
-extern u16 gBattle_BG2_Y;
-extern u16 gWeatherMoveAnim;
-
-extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7220;
-extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18[];
-extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7BEC[];
-extern const u32 gUnknown_08D2AA98[];
-extern const u32 gUnknown_08D2A9E0[];
-extern const u16 gUnknown_08D2AA80[];
-extern const u8 gUnknown_08D2E014[];
-extern const u8 gUnknown_08D2E170[];
-extern const u16 gUnknown_08D2E150[];
-extern u8 gBattleMonForms[];
-extern u8 gBankSpriteIds[];
-extern u16 gBattlerPartyIndexes[];
-
-extern u8 sub_8046234(s16 x, s16 y, u8 a3);
-extern void sub_80DA48C(struct Sprite *);
-extern void sub_80E3C4C(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u8 *arg8, const u8 *arg9, const u16 *palette);
-
-static void sub_812C184(struct Sprite *sprite);
-static void sub_812C268(struct Sprite *sprite);
-static void sub_812C2A4(struct Sprite *sprite);
-static void sub_812C380(struct Sprite *sprite);
-static void sub_812C40C(struct Sprite *sprite);
-static void sub_812C450(struct Sprite *sprite);
-static void sub_812C4FC(struct Sprite *sprite);
-static void sub_812C588(u8 taskId);
-static void sub_812C64C(u8 taskId);
-static void sub_812C798(struct Sprite *sprite);
-static void sub_812C7C8(struct Sprite *sprite);
-static void sub_812CA04(struct Sprite *sprite);
-static void sub_812CAD0(struct Sprite *sprite);
-static void sub_812CBB4(struct Sprite *sprite);
-static void sub_812CD64(struct Sprite *sprite);
-static void sub_812CEF0(u8 taskId);
-static void sub_812D06C(u8 taskId);
-static void sub_812D254(struct Sprite *sprite);
-static void sub_812D4EC(struct Sprite *sprite);
-static void sub_812D5E8(struct Sprite *sprite);
-static void sub_812DFEC(struct Sprite *sprite);
-static void sub_812E09C(struct Sprite *sprite);
-static void sub_812E0F8(struct Sprite *sprite);
-static void sub_812E638(u8 taskId);
-static void sub_812E7F0(struct Sprite *sprite);
-static void sub_812E8B4(u8 taskId);
-static void sub_812ED24(struct Sprite *sprite);
-static void sub_812EE00(struct Sprite *sprite);
-static void sub_812EEEC(struct Sprite *sprite);
-static void AnimTask_RolePlaySilhouetteStep1(u8 taskId);
-static void sub_812F290(u8 taskId);
-static void sub_812F474(u8 taskId);
-static void sub_812F76C(u8 taskId);
-static void sub_812F8DC(struct Sprite *sprite);
-static void sub_812FE20(u8 taskId);
-static void sub_812FEB8(u8, bool8);
-static void sub_813003C(u8 taskId);
-static void sub_81301B4(struct Sprite *sprite);
-static void sub_81302E4(u8 taskId);
-static void sub_8130424(s16, s16, s16, s16, u8, u8, s16*, s16*);
-static void sub_81306A4(u8 taskId);
-static void sub_813085C(struct Sprite *sprite);
-static void sub_8130970(u8 taskId);
-static void sub_8130A94(struct Sprite *sprite);
-static void sub_8130B38(struct Sprite *sprite);
-static void sub_8130DBC(u8 taskId);
-static void sub_8130FE0(struct Sprite *sprite);
-static void sub_8131408(u8 taskId);
-static void sub_81315C8(struct Sprite *sprite);
-static void sub_8131810(u8 taskId);
-static void sub_8131838(struct Sprite *sprite);
-static void sub_812C144(struct Sprite *sprite);
-static void sub_812C220(struct Sprite *sprite);
-static void sub_812C2BC(struct Sprite *sprite);
-static void sub_812C358(struct Sprite *sprite);
-static void sub_812C720(struct Sprite *sprite);
-static void sub_812C80C(struct Sprite *sprite);
-static void sub_812C848(struct Sprite *sprite);
-static void sub_812C908(struct Sprite *sprite);
-static void sub_812C990(struct Sprite *sprite);
-static void sub_812CAFC(struct Sprite *sprite);
-static void sub_812CC28(struct Sprite *sprite);
-static void sub_812CCE8(struct Sprite *sprite);
-static void sub_812D294(struct Sprite *sprite);
-static void sub_812D3AC(struct Sprite *sprite);
-static void sub_812D4B4(struct Sprite *sprite);
-static void sub_812D588(struct Sprite *sprite);
-static void sub_812DEAC(struct Sprite *sprite);
-static void sub_812D724(struct Sprite *sprite);
-static void sub_812E4F0(struct Sprite *sprite);
-static void sub_812E7A0(struct Sprite *sprite);
-static void sub_812EA4C(struct Sprite *sprite);
-static void sub_812EC78(struct Sprite *sprite);
-static void sub_812ED84(struct Sprite *sprite);
-static void sub_812EEA4(struct Sprite *sprite);
-static void sub_812F88C(struct Sprite *sprite);
-static void sub_812F948(struct Sprite *sprite);
-static void sub_812FF94(struct Sprite *sprite);
-static void sub_81300F4(struct Sprite *sprite);
-static void sub_81304DC(struct Sprite *sprite);
-static void sub_813051C(struct Sprite *sprite);
-static void sub_81307B0(struct Sprite *sprite);
-static void sub_8130A2C(struct Sprite *sprite);
-static void sub_8130AEC(struct Sprite *sprite);
-static void sub_8130F5C(struct Sprite *sprite);
-static void sub_8131264(struct Sprite *sprite);
-extern void sub_80D1FDC(struct Sprite *sprite);// kiss_fountain.c
-static void sub_8131564(struct Sprite *sprite);
-static void AnimTask_TeeterDanceMovementStep(u8);
-
-/*static*/ void sub_8131EB8(struct Sprite *sprite);// rest not yet decompiled
-void AnimKnockOffStrike(struct Sprite *sprite);
-void AnimRecycle(struct Sprite *sprite);
-static void AnimRecycleStep(struct Sprite *sprite);
-static void AnimTask_SlackOffSquishStep(u8 taskId);
-
-const union AnimCmd gSpriteAnim_8402164[] =
-{
- 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 *const gSpriteAnimTable_840217C[] =
-{
- gSpriteAnim_8402164,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8402180 =
-{
- .tileTag = ANIM_TAG_SCRATCH,
- .paletteTag = ANIM_TAG_SCRATCH,
- .oam = &gOamData_837E054,
- .anims = gSpriteAnimTable_840217C,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80793C4,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8402198 =
-{
- .tileTag = ANIM_TAG_BLACK_SMOKE,
- .paletteTag = ANIM_TAG_BLACK_SMOKE,
- .oam = &gOamData_837DF54,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812C144,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_84021B0 =
-{
- .tileTag = ANIM_TAG_BLACK_BALL,
- .paletteTag = ANIM_TAG_BLACK_BALL,
- .oam = &gOamData_837DF24,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80794A8,
-};
-
-const union AnimCmd gSpriteAnim_84021C8[] =
-{
- ANIMCMD_FRAME(0, 40),
- ANIMCMD_FRAME(16, 8),
- ANIMCMD_FRAME(32, 40),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gSpriteAnimTable_84021D8[] =
-{
- gSpriteAnim_84021C8,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_84021DC =
-{
- .tileTag = ANIM_TAG_OPENING_EYE,
- .paletteTag = ANIM_TAG_OPENING_EYE,
- .oam = &gOamData_837DF34,
- .anims = gSpriteAnimTable_84021D8,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80793C4,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_84021F4 =
-{
- .tileTag = ANIM_TAG_ROUND_WHITE_HALO,
- .paletteTag = ANIM_TAG_ROUND_WHITE_HALO,
- .oam = &gOamData_837E05C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812C220,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_840220C =
-{
- .tileTag = ANIM_TAG_TEAL_ALERT,
- .paletteTag = ANIM_TAG_TEAL_ALERT,
- .oam = &gOamData_837DF94,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812C2BC,
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_8402224[] =
-{
- AFFINEANIMCMD_FRAME(0x180, 0x180, 0, 0),
- AFFINEANIMCMD_FRAME(0xFFE0, 0x18, 0, 5),
- AFFINEANIMCMD_FRAME(0x18, 0xFFE0, 0, 5),
- AFFINEANIMCMD_JUMP(1),
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_8402244[] =
-{
- AFFINEANIMCMD_FRAME(0x30, 0x30, 0, 0),
- AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 6),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd *const gSpriteAffineAnimTable_840225C[] =
-{
- gSpriteAffineAnim_8402224,
- gSpriteAffineAnim_8402244,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8402264 =
-{
- .tileTag = ANIM_TAG_EYE,
- .paletteTag = ANIM_TAG_EYE,
- .oam = &gOamData_837E11C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gSpriteAffineAnimTable_840225C,
- .callback = sub_812C358,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_840227C =
-{
- .tileTag = ANIM_TAG_SPIKES,
- .paletteTag = ANIM_TAG_SPIKES,
- .oam = &gOamData_837DF2C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812C720,
-};
-
-const union AnimCmd gSpriteAnim_8402294[] =
-{
- 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_84022AC[] =
-{
- gSpriteAnim_8402294,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_84022B0 =
-{
- .tileTag = ANIM_TAG_LEER,
- .paletteTag = ANIM_TAG_LEER,
- .oam = &gOamData_837DF34,
- .anims = gSpriteAnimTable_84022AC,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812C80C,
-};
-
-const union AnimCmd gSpriteAnim_84022C8[] =
-{
- ANIMCMD_FRAME(0, 3),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gSpriteAnimTable_84022D0[] =
-{
- gSpriteAnim_84022C8,
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_84022D4[] =
-{
- AFFINEANIMCMD_FRAME(0xFFF9, 0xFFF9, -3, 16),
- AFFINEANIMCMD_FRAME(0x7, 0x7, 3, 16),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd *const gSpriteAffineAnimTable_84022EC[] =
-{
- gSpriteAffineAnim_84022D4,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_84022F0 =
-{
- .tileTag = ANIM_TAG_LETTER_Z,
- .paletteTag = ANIM_TAG_LETTER_Z,
- .oam = &gOamData_837DF94,
- .anims = gSpriteAnimTable_84022D0,
- .images = NULL,
- .affineAnims = gSpriteAffineAnimTable_84022EC,
- .callback = sub_812C848,
-};
-
-const union AnimCmd gSpriteAnim_8402308[] =
-{
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(16, 16),
- ANIMCMD_FRAME(32, 4),
- ANIMCMD_FRAME(48, 4),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gSpriteAnimTable_840231C[] =
-{
- gSpriteAnim_8402308,
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_8402320[] =
-{
- AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
- AFFINEANIMCMD_FRAME(0xFFE0, 0xFFE0, 0, 8),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd *const gSpriteAffineAnimTable_8402338[] =
-{
- gSpriteAffineAnim_8402320,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_840233C =
-{
- .tileTag = ANIM_TAG_FANG_ATTACK,
- .paletteTag = ANIM_TAG_FANG_ATTACK,
- .oam = &gOamData_837DFF4,
- .anims = gSpriteAnimTable_840231C,
- .images = NULL,
- .affineAnims = gSpriteAffineAnimTable_8402338,
- .callback = sub_812C908,
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_8402354[] =
-{
- AFFINEANIMCMD_FRAME(0x0, 0x180, 0, 0),
- AFFINEANIMCMD_FRAME(0x10, 0x0, 0, 20),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_840236C[] =
-{
- AFFINEANIMCMD_FRAME(0x140, 0x180, 0, 0),
- AFFINEANIMCMD_FRAME(0xFFF0, 0x0, 0, 19),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd *const gSpriteAffineAnimTable_8402384[] =
-{
- gSpriteAffineAnim_8402354,
- gSpriteAffineAnim_840236C,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_840238C =
-{
- .tileTag = ANIM_TAG_SPOTLIGHT,
- .paletteTag = ANIM_TAG_SPOTLIGHT,
- .oam = &gOamData_837DFFC,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gSpriteAffineAnimTable_8402384,
- .callback = sub_812C990,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_84023A4 =
-{
- .tileTag = ANIM_TAG_TAG_HAND,
- .paletteTag = ANIM_TAG_TAG_HAND,
- .oam = &gOamData_837DF34,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812CAFC,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_84023BC =
-{
- .tileTag = ANIM_TAG_TAG_HAND,
- .paletteTag = ANIM_TAG_TAG_HAND,
- .oam = &gOamData_837DF34,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812CC28,
-};
-
-const union AnimCmd gSpriteAnim_84023D4[] =
-{
- ANIMCMD_FRAME(0, 2),
- ANIMCMD_FRAME(8, 2),
- ANIMCMD_FRAME(16, 2),
- ANIMCMD_JUMP(0),
-};
-
-const union AnimCmd *const gSpriteAnimTable_84023E4[] =
-{
- gSpriteAnim_84023D4,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_84023E8 =
-{
- .tileTag = ANIM_TAG_RAPID_SPIN,
- .paletteTag = ANIM_TAG_RAPID_SPIN,
- .oam = &gOamData_837DF54,
- .anims = gSpriteAnimTable_84023E4,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812CCE8,
-};
-
-const union AffineAnimCmd gUnknown_08402400[] =
-{
- AFFINEANIMCMD_FRAME(-12, 8, 0, 4),
- AFFINEANIMCMD_FRAME(20, -20, 0, 4),
- AFFINEANIMCMD_FRAME(-8, 12, 0, 4),
- AFFINEANIMCMD_END,
-};
-
-const union AnimCmd gSpriteAnim_8402420[] =
-{
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gSpriteAnimTable_8402428[] =
-{
- gSpriteAnim_8402420,
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_840242C[] =
-{
- AFFINEANIMCMD_FRAME(0x0, 0x0, 5, 40),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 10, 10),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 15, 10),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 20, 40),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd *const gSpriteAffineAnimTable_8402454[] =
-{
- gSpriteAffineAnim_840242C,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8402458 =
-{
- .tileTag = ANIM_TAG_TRI_FORCE_TRIANGLE,
- .paletteTag = ANIM_TAG_TRI_FORCE_TRIANGLE,
- .oam = &gOamData_837DFFC,
- .anims = gSpriteAnimTable_8402428,
- .images = NULL,
- .affineAnims = gSpriteAffineAnimTable_8402454,
- .callback = sub_812D294,
-};
-
-const union AnimCmd gSpriteAnim_8402470[] =
-{
- ANIMCMD_FRAME(0, 3),
- ANIMCMD_FRAME(16, 3),
- ANIMCMD_FRAME(32, 3),
- ANIMCMD_FRAME(48, 3),
- ANIMCMD_FRAME(32, 3, .hFlip = TRUE),
- ANIMCMD_FRAME(16, 3, .hFlip = TRUE),
- ANIMCMD_FRAME(0, 3, .hFlip = TRUE),
- ANIMCMD_LOOP(1),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gSpriteAnimTable_8402494[] =
-{
- gSpriteAnim_8402470,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8402498 =
-{
- .tileTag = ANIM_TAG_ECLIPSING_ORB,
- .paletteTag = ANIM_TAG_ECLIPSING_ORB,
- .oam = &gOamData_837DF34,
- .anims = gSpriteAnimTable_8402494,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80793C4,
-};
-
-const union AffineAnimCmd gUnknown_084024B0[] =
-{
- AFFINEANIMCMD_FRAME(-12, 20, 0, 8),
- AFFINEANIMCMD_FRAME(12, -20, 0, 8),
- AFFINEANIMCMD_LOOP(2),
- AFFINEANIMCMD_END,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_84024D0 =
-{
- .tileTag = ANIM_TAG_POKEBALL,
- .paletteTag = ANIM_TAG_POKEBALL,
- .oam = &gOamData_837DF2C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812D3AC,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_84024E8 =
-{
- .tileTag = ANIM_TAG_GOLD_STARS,
- .paletteTag = ANIM_TAG_GOLD_STARS,
- .oam = &gOamData_837DF2C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812D4B4,
-};
-
-const struct SpriteTemplate gSpriteTemplate_8402500 =
-{
- .tileTag = ANIM_TAG_GOLD_STARS,
- .paletteTag = ANIM_TAG_GOLD_STARS,
- .oam = &gOamData_837DF24,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812D588,
-};
-
-const union AffineAnimCmd gUnknown_08402518[] =
-{
- AFFINEANIMCMD_FRAME(8, -8, 0, 12),
- AFFINEANIMCMD_FRAME(-16, 16, 0, 12),
- AFFINEANIMCMD_FRAME(8, -8, 0, 12),
- AFFINEANIMCMD_LOOP(1),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gUnknown_08402540[] =
-{
- AFFINEANIMCMD_FRAME(0, 6, 0, 20),
- AFFINEANIMCMD_FRAME(0, 0, 0, 20),
- AFFINEANIMCMD_FRAME(0, -18, 0, 6),
- AFFINEANIMCMD_FRAME(-18, -18, 0, 3),
- AFFINEANIMCMD_FRAME(0, 0, 0, 15),
- AFFINEANIMCMD_FRAME(4, 4, 0, 13),
- AFFINEANIMCMD_END,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8402578 =
-{
- .tileTag = ANIM_TAG_BLUE_ORB,
- .paletteTag = ANIM_TAG_BLUE_ORB,
- .oam = &gOamData_837DF24,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812D724,
-};
-
-const union AffineAnimCmd gUnknown_08402590[] =
-{
- AFFINEANIMCMD_FRAME(0, 6, 0, 20),
- AFFINEANIMCMD_FRAME(0, 0, 0, 20),
- AFFINEANIMCMD_FRAME(7, -30, 0, 6),
- AFFINEANIMCMD_FRAME(0, 0, 0, 20),
- AFFINEANIMCMD_FRAME(-2, 3, 0, 20),
- AFFINEANIMCMD_END,
-};
-
-const s8 gUnknown_084025C0[] =
-{
- 0xE8,
- 0x18,
- 0xFC,
- 0x00,
-};
-
-const union AnimCmd gSpriteAnim_84025C4[] =
-{
- ANIMCMD_FRAME(0, 6),
- ANIMCMD_FRAME(4, 6),
- ANIMCMD_JUMP(0),
-};
-
-const union AnimCmd gSpriteAnim_84025D0[] =
-{
- ANIMCMD_FRAME(8, 6),
- ANIMCMD_END,
-};
-
-const union AnimCmd gSpriteAnim_84025D8[] =
-{
- ANIMCMD_FRAME(12, 6),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gSpriteAnimTable_84025E0[] =
-{
- gSpriteAnim_84025C4,
- gSpriteAnim_84025D0,
- gSpriteAnim_84025D8,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_84025EC =
-{
- .tileTag = ANIM_TAG_GREEN_STAR,
- .paletteTag = ANIM_TAG_GREEN_STAR,
- .oam = &gOamData_837DF2C,
- .anims = gSpriteAnimTable_84025E0,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812DEAC,
-};
-
-const s8 gUnknown_08402604[] =
-{
- 0x78,
- 0x50,
- 0x28,
- 0x00,
-};
-
-const u8 gUnknown_08402608[] =
-{
- 0,
- 0,
- 0,
- 0,
- 50,
-};
-
-const union AffineAnimCmd gUnknown_08402610[] =
-{
- AFFINEANIMCMD_FRAME(0, -15, 0, 7),
- AFFINEANIMCMD_FRAME(0, 15, 0, 7),
- AFFINEANIMCMD_LOOP(2),
- AFFINEANIMCMD_END,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8402630 =
-{
- .tileTag = ANIM_TAG_ANGER,
- .paletteTag = ANIM_TAG_ANGER,
- .oam = &gOamData_837DF2C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812E4F0,
-};
-
-const union AnimCmd gSpriteAnim_8402648[] =
-{
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(1, 8),
- ANIMCMD_FRAME(2, 8),
- ANIMCMD_FRAME(3, 8),
- ANIMCMD_FRAME(3, 8, .vFlip = TRUE),
- ANIMCMD_FRAME(2, 8, .vFlip = TRUE),
- ANIMCMD_FRAME(0, 8, .vFlip = TRUE),
- ANIMCMD_FRAME(1, 8, .vFlip = TRUE),
- ANIMCMD_JUMP(0),
-};
-
-const union AnimCmd gSpriteAnim_840266C[] =
-{
- ANIMCMD_FRAME(0, 8, .hFlip = TRUE),
- ANIMCMD_FRAME(1, 8, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
- ANIMCMD_FRAME(3, 8, .hFlip = TRUE),
- ANIMCMD_FRAME(3, 8, .vFlip = TRUE, .hFlip = TRUE),
- ANIMCMD_FRAME(2, 8, .vFlip = TRUE, .hFlip = TRUE),
- ANIMCMD_FRAME(0, 8, .vFlip = TRUE, .hFlip = TRUE),
- ANIMCMD_FRAME(1, 8, .vFlip = TRUE, .hFlip = TRUE),
- ANIMCMD_JUMP(0),
-};
-
-const union AnimCmd gSpriteAnim_8402690[] =
-{
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gSpriteAnimTable_8402698[] =
-{
- gSpriteAnim_8402648,
- gSpriteAnim_840266C,
- gSpriteAnim_8402690,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_84026A4 =
-{
- .tileTag = ANIM_TAG_PINK_PETAL,
- .paletteTag = ANIM_TAG_PINK_PETAL,
- .oam = &gOamData_837DF24,
- .anims = gSpriteAnimTable_8402698,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812E7A0,
-};
-
-const u16 gUnknown_4026BC[] = INCBIN_U16("graphics/unknown/unknown_4026BC.gbapal");
-
-const union AnimCmd gSpriteAnim_84026DC[] =
-{
- ANIMCMD_FRAME(0, 5),
- ANIMCMD_FRAME(4, 9),
- ANIMCMD_FRAME(8, 5),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gSpriteAnimTable_84026EC[] =
-{
- gSpriteAnim_84026DC,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_84026F0 =
-{
- .tileTag = ANIM_TAG_PAIN_SPLIT,
- .paletteTag = ANIM_TAG_PAIN_SPLIT,
- .oam = &gOamData_837DF2C,
- .anims = gSpriteAnimTable_84026EC,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812EA4C,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8402708 =
-{
- .tileTag = ANIM_TAG_CONFETTI,
- .paletteTag = ANIM_TAG_CONFETTI,
- .oam = &gOamData_837DF24,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812EC78,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8402720 =
-{
- .tileTag = ANIM_TAG_SPOTLIGHT,
- .paletteTag = ANIM_TAG_SPOTLIGHT,
- .oam = &gOamData_837DFFC,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gSpriteAffineAnimTable_8402384,
- .callback = sub_812ED84,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8402738 =
-{
- .tileTag = ANIM_TAG_BLUE_ORB,
- .paletteTag = ANIM_TAG_BLUE_ORB,
- .oam = &gOamData_837DF24,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812EEA4,
-};
-
-const union AffineAnimCmd gUnknown_08402750[] =
-{
- AFFINEANIMCMD_FRAME(16, 0, 0, 4),
- AFFINEANIMCMD_FRAME(0, -3, 0, 16),
- AFFINEANIMCMD_FRAME(4, 0, 0, 4),
- AFFINEANIMCMD_FRAME(0, 0, 0, 24),
- AFFINEANIMCMD_FRAME(-5, 3, 0, 16),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_8402780[] =
-{
- AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
- AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 8),
- AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_84027A0[] =
-{
- AFFINEANIMCMD_FRAME(0xC0, 0xC0, 0, 0),
- AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
- AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 8),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_84027C0[] =
-{
- AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
- AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
- AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 8),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd *const gSpriteAffineAnimTable_84027E0[] =
-{
- gSpriteAffineAnim_8402780,
- gSpriteAffineAnim_84027A0,
- gSpriteAffineAnim_84027C0,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_84027EC =
-{
- .tileTag = ANIM_TAG_PINK_CLOUD,
- .paletteTag = ANIM_TAG_PINK_CLOUD,
- .oam = &gOamData_837DF94,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gSpriteAffineAnimTable_84027E0,
- .callback = sub_812F88C,
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_8402804[] =
-{
- AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
- AFFINEANIMCMD_FRAME(0xFFFC, 0xFFFA, 0, 16),
- AFFINEANIMCMD_FRAME(0x4, 0x6, 0, 16),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_8402824[] =
-{
- AFFINEANIMCMD_FRAME(0xC0, 0xC0, 0, 0),
- AFFINEANIMCMD_FRAME(0x4, 0x6, 0, 16),
- AFFINEANIMCMD_FRAME(0xFFFC, 0xFFFA, 0, 16),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_8402844[] =
-{
- AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
- AFFINEANIMCMD_FRAME(0x4, 0x6, 0, 16),
- AFFINEANIMCMD_FRAME(0xFFFC, 0xFFFA, 0, 16),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_8402864[] =
-{
- AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
- AFFINEANIMCMD_FRAME(0x8, 0xA, 0, 30),
- AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF6, 0, 16),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd *const gSpriteAffineAnimTable_8402884[] =
-{
- gSpriteAffineAnim_8402804,
- gSpriteAffineAnim_8402824,
- gSpriteAffineAnim_8402844,
- gSpriteAffineAnim_8402864,
-};
-
-//arg[0]: frame (0-3)
-//arg[1]: x
-//arg[2]: y
-//arg[3]: ??? (time on screen?)
-const struct SpriteTemplate gPinkSmokeTemplate =
-{
- .tileTag = ANIM_TAG_PINK_CLOUD,
- .paletteTag = ANIM_TAG_PINK_CLOUD,
- .oam = &gOamData_837DFF4,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gSpriteAffineAnimTable_8402884,
- .callback = sub_812F948,
-};
-
-const union AffineAnimCmd gUnknown_084028AC[] =
-{
- AFFINEANIMCMD_FRAME(-16, 16, 0, 6),
- AFFINEANIMCMD_FRAME(16, -16, 0, 12),
- AFFINEANIMCMD_FRAME(-16, 16, 0, 6),
- AFFINEANIMCMD_END,
-};
-
-const struct SpriteTemplate gSpriteTemplate_84028CC =
-{
- .tileTag = ANIM_TAG_SWEAT_DROP,
- .paletteTag = ANIM_TAG_SWEAT_DROP,
- .oam = &gOamData_837DF24,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_812FF94,
-};
-
-const u16 gUnknown_084028E4[] = INCBIN_U16("graphics/battle_anims/sprites/effect.gbapal");
-
-const union AnimCmd gSpriteAnim_8402914[] =
-{
- ANIMCMD_FRAME(0, 3),
- ANIMCMD_FRAME(16, 3),
- ANIMCMD_JUMP(0),
-};
-
-const union AnimCmd gSpriteAnim_8402920[] =
-{
- ANIMCMD_FRAME(32, 3),
- ANIMCMD_FRAME(48, 3),
- ANIMCMD_JUMP(0),
-};
-
-const union AnimCmd *const gSpriteAnimTable_840292C[] =
-{
- gSpriteAnim_8402914,
- gSpriteAnim_8402920,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8402934 =
-{
- .tileTag = ANIM_TAG_NOISE_LINE,
- .paletteTag = ANIM_TAG_NOISE_LINE,
- .oam = &gOamData_837DF34,
- .anims = gSpriteAnimTable_840292C,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81300F4,
-};
-
-const struct SpriteTemplate gSpriteTemplate_840294C =
-{
- .tileTag = ANIM_TAG_SMALL_RED_EYE,
- .paletteTag = ANIM_TAG_SMALL_RED_EYE,
- .oam = &gOamData_837DF24,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81304DC,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8402964 =
-{
- .tileTag = ANIM_TAG_PAW_PRINT,
- .paletteTag = ANIM_TAG_PAW_PRINT,
- .oam = &gOamData_837DF34,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_813051C,
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_840297C[] =
-{
- AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 24),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_840298C[] =
-{
- AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 24),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd *const gSpriteAffineAnimTable_84029A4[] =
-{
- gSpriteAffineAnim_840297C,
- gSpriteAffineAnim_840298C,
-};
-
-const struct SpriteTemplate gSpriteTemplate_84029AC =
-{
- .tileTag = ANIM_TAG_RED_BALL,
- .paletteTag = ANIM_TAG_RED_BALL,
- .oam = &gOamData_837DF94,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gSpriteAffineAnimTable_84029A4,
- .callback = SpriteCallbackDummy,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_84029C4 =
-{
- .tileTag = ANIM_TAG_TAG_HAND,
- .paletteTag = ANIM_TAG_TAG_HAND,
- .oam = &gOamData_837DF34,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81307B0,
-};
-
-const union AffineAnimCmd gUnknown_084029DC[] =
-{
- AFFINEANIMCMD_FRAME(0, -16, 0, 6),
- AFFINEANIMCMD_FRAME(0, 16, 0, 6),
- AFFINEANIMCMD_END,//0
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_84029F4 =
-{
- .tileTag = ANIM_TAG_SMELLINGSALT_EFFECT,
- .paletteTag = ANIM_TAG_SMELLINGSALT_EFFECT,
- .oam = &gOamData_837DF34,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8130A2C,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8402A0C =
-{
- .tileTag = ANIM_TAG_TAG_HAND,
- .paletteTag = ANIM_TAG_TAG_HAND,
- .oam = &gOamData_837DF34,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8130AEC,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8402A24 =
-{
- .tileTag = ANIM_TAG_MAGNIFYING_GLASS,
- .paletteTag = ANIM_TAG_MAGNIFYING_GLASS,
- .oam = &gOamData_837E054,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8130F5C,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8402A3C =
-{
- .tileTag = ANIM_TAG_GOLD_STARS,
- .paletteTag = ANIM_TAG_GOLD_STARS,
- .oam = &gOamData_837DF2C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8131264,
-};
-
-const struct SpriteTemplate gSpriteTemplate_8402A54 =
-{
- .tileTag = ANIM_TAG_GOLD_STARS,
- .paletteTag = ANIM_TAG_GOLD_STARS,
- .oam = &gOamData_837DF2C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80D1FDC,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8402A6C =
-{
- .tileTag = ANIM_TAG_X_SIGN,
- .paletteTag = ANIM_TAG_X_SIGN,
- .oam = &gOamData_837DF3C,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8131564,
-};
-
-const struct SpriteTemplate gSpriteTemplate_8402A84 =
-{
- .tileTag = ANIM_TAG_ITEM_BAG,
- .paletteTag = ANIM_TAG_ITEM_BAG,
- .oam = &gOamData_837DF34,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8131EB8,
-};
-
-const union AnimCmd gSpriteAnim_8402A9C[] =
-{
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(64, 4),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gSpriteAnimTable_8402AA8[] =
-{
- gSpriteAnim_8402A9C,
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_8402AAC[] =
-{
- AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
- AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 8),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_8402AC4[] =
-{
- AFFINEANIMCMD_FRAME(0xFF00, 0x100, 0, 0),
- AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 8),
- AFFINEANIMCMD_END,
-};
-
-const union AffineAnimCmd *const gSpriteAffineAnimTable_8402ADC[] =
-{
- gSpriteAffineAnim_8402AAC,
- gSpriteAffineAnim_8402AC4,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8402AE4 =
-{
- .tileTag = ANIM_TAG_SLAM_HIT_2,
- .paletteTag = ANIM_TAG_SLAM_HIT_2,
- .oam = &gOamData_837DF9C,
- .anims = gSpriteAnimTable_8402AA8,
- .images = NULL,
- .affineAnims = gSpriteAffineAnimTable_8402ADC,
- .callback = AnimKnockOffStrike,
-};
-
-const union AffineAnimCmd gSpriteAffineAnim_8402AFC[] =
-{
- AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 64),
- AFFINEANIMCMD_JUMP(0),
-};
-
-const union AffineAnimCmd *const gSpriteAffineAnimTable_8402B0C[] =
-{
- gSpriteAffineAnim_8402AFC,
-};
-
-const struct SpriteTemplate gBattleAnimSpriteTemplate_8402B10 =
-{
- .tileTag = ANIM_TAG_RECYCLE,
- .paletteTag = ANIM_TAG_RECYCLE,
- .oam = &gOamData_837E0BC,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gSpriteAffineAnimTable_8402B0C,
- .callback = AnimRecycle,
-};
-
-const union AffineAnimCmd gSlackOffSquishAffineAnimCmds[] =
-{
- AFFINEANIMCMD_FRAME(0, 16, 0, 4),
- AFFINEANIMCMD_FRAME(-2, 0, 0, 8),
- AFFINEANIMCMD_FRAME(0, 4, 0, 4),
- AFFINEANIMCMD_FRAME(0, 0, 0, 24),
- AFFINEANIMCMD_FRAME(1, -5, 0, 16),
- AFFINEANIMCMD_END,
-};
-
-static void sub_812C144(struct Sprite *sprite)
-{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
-
- if (gBattleAnimArgs[3] == 0)
- sprite->data[0] = gBattleAnimArgs[2];
- else
- sprite->data[0] = -gBattleAnimArgs[2];
-
- sprite->data[1] = gBattleAnimArgs[4];
- sprite->callback = sub_812C184;
-}
-
-static void sub_812C184(struct Sprite *sprite)
-{
- if (sprite->data[1] > 0)
- {
- sprite->pos2.x = sprite->data[2] >> 8;
- sprite->data[2] += sprite->data[0];
- sprite->invisible ^= 1;
- sprite->data[1]--;
- }
- else
- {
- DestroyAnimSprite(sprite);
- }
-}
-
-void sub_812C1D0(u8 taskId)
-{
- sub_8046234(
- GetBattlerSpriteCoord(gBattleAnimTarget, 2) + 8,
- GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 8,
- 0);
- DestroyAnimVisualTask(taskId);
-
-}
-
-static void sub_812C220(struct Sprite *sprite)
-{
- sprite->data[0] = 90;
- sprite->callback = WaitAnimForDuration;
- sprite->data[1] = 7;
- StoreSpriteCallbackInData(sprite, sub_812C268);
- REG_BLDCNT = 0x3F40;
- REG_BLDALPHA = ((16 - sprite->data[1]) << 8) | sprite->data[1];
-}
-
-static void sub_812C268(struct Sprite *sprite)
-{
- REG_BLDALPHA = ((16 - sprite->data[1]) << 8) | sprite->data[1];
- if (--sprite->data[1] < 0)
- {
- sprite->invisible = 1;
- sprite->callback = sub_812C2A4;
- }
-}
-
-static void sub_812C2A4(struct Sprite *sprite)
-{
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
- DestroyAnimSprite(sprite);
-}
-
-static void sub_812C2BC(struct Sprite *sprite)
-{
- u16 rotation;
- u8 x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- u8 y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
-
- sub_8078764(sprite, TRUE);
-
- rotation = ArcTan2Neg(sprite->pos1.x - x, sprite->pos1.y - y);
- rotation += 0x6000;
- if (IsContest())
- rotation += 0x4000;
-
- sub_8078FDC(sprite, 0, 0x100, 0x100, rotation);
-
- sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[2] = x;
- sprite->data[4] = y;
- sprite->callback = StartAnimLinearTranslation;
- StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
-}
-
-static void sub_812C358(struct Sprite *sprite)
-{
- REG_BLDCNT = 0x3F40;
- REG_BLDALPHA = 0x1000;
- sprite->data[0] = 4;
- sprite->callback = sub_812C380;
-}
-
-static void sub_812C380(struct Sprite *sprite)
-{
- REG_BLDALPHA = ((16 - sprite->data[0]) << 8) | sprite->data[0];
-
- if (sprite->data[1])
- sprite->data[0]--;
- else
- sprite->data[0]++;
-
- if (sprite->data[0] == 15 || sprite->data[0] == 4)
- sprite->data[1] ^= 1;
-
- if (sprite->data[2]++ > 70)
- {
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
- StartSpriteAffineAnim(sprite, 1);
- sprite->data[2] = 0;
- sprite->invisible = 1;
- sprite->affineAnimPaused = 1;
- sprite->callback = sub_812C40C;
- }
-}
-
-static void sub_812C40C(struct Sprite *sprite)
-{
- if (sprite->data[2]++ > 9)
- {
- sprite->invisible = 0;
- sprite->affineAnimPaused = 0;
- if (sprite->affineAnimEnded)
- sprite->callback = sub_812C450;
- }
-}
-
-static void sub_812C450(struct Sprite *sprite)
-{
- switch (sprite->data[3])
- {
- case 0:
- case 1:
- sprite->pos2.x = 1;
- sprite->pos2.y = 0;
- break;
- case 2:
- case 3:
- sprite->pos2.x = -1;
- sprite->pos2.y = 0;
- break;
- case 4:
- case 5:
- sprite->pos2.x = 0;
- sprite->pos2.y = 1;
- break;
- case 6:
- default:
- sprite->pos2.x = 0;
- sprite->pos2.y = -1;
- break;
- }
-
- if (++sprite->data[3] > 7)
- sprite->data[3] = 0;
-
- if (sprite->data[4]++ > 15)
- {
- sprite->data[0] = 16;
- sprite->data[1] = 0;
- REG_BLDCNT = 0x3F40;
- REG_BLDALPHA = sprite->data[0];
- sprite->callback = sub_812C4FC;
- }
-}
-
-static void sub_812C4FC(struct Sprite *sprite)
-{
- REG_BLDALPHA = ((16 - sprite->data[0]) << 8) | sprite->data[0];
-
- if (sprite->data[1]++ > 1)
- {
- sprite->data[0]--;
- sprite->data[1] = 0;
- }
-
- if (sprite->data[0] == 0)
- sprite->invisible = 1;
-
- if (sprite->data[0] < 0)
- {
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
- DestroyAnimSprite(sprite);
- }
-}
-
-void sub_812C560(u8 taskId)
-{
- gTasks[taskId].func = sub_812C588;
- gAnimVisualTaskCount--;
-}
-
-static void sub_812C588(u8 taskId)
-{
- int i;
- u16 lastColor;
- u8 paletteIndex = sub_80789BC();
-
- if (++gTasks[taskId].data[5] == 4)
- {
- lastColor = gPlttBufferFaded[paletteIndex * 16 + 11];
- for (i = 10; i > 0; i--)
- gPlttBufferFaded[paletteIndex * 16 + i + 1] = gPlttBufferFaded[paletteIndex * 16 + i];
-
- gPlttBufferFaded[paletteIndex * 16 + 1] = lastColor;
- gTasks[taskId].data[5] = 0;
- }
-
- if ((u16)gBattleAnimArgs[7] == 0xFFFF)
- DestroyTask(taskId);
-}
-
-void sub_812C624(u8 taskId)
-{
- gTasks[taskId].func = sub_812C64C;
- gAnimVisualTaskCount--;
-}
-
-static void sub_812C64C(u8 taskId)
-{
- int i;
- u16 lastColor;
- u8 paletteIndex = sub_80789BC();
-
- if (++gTasks[taskId].data[5] == 4)
- {
- lastColor = gPlttBufferFaded[paletteIndex * 16 + 11];
- for (i = 10; i > 0; i--)
- gPlttBufferFaded[paletteIndex * 16 + i + 1] = gPlttBufferFaded[paletteIndex * 16 + i];
- gPlttBufferFaded[paletteIndex * 16 + 1] = lastColor;
-
- lastColor = gPlttBufferUnfaded[paletteIndex * 16 + 11];
- for (i = 10; i > 0; i--)
- gPlttBufferUnfaded[paletteIndex * 16 + i + 1] = gPlttBufferUnfaded[paletteIndex * 16 + i];
- gPlttBufferUnfaded[paletteIndex * 16 + 1] = lastColor;
-
- gTasks[taskId].data[5] = 0;
- }
-
- if ((u16)gBattleAnimArgs[7] == 0xFFFF)
- DestroyTask(taskId);
-}
-
-static void sub_812C720(struct Sprite *sprite)
-{
- u16 x;
- u16 y;
-
- InitAnimSpritePos(sprite, 1);
- SetAverageBattlerPositions(gBattleAnimTarget, 0, &x, &y);
-
- if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- gBattleAnimArgs[2] = -gBattleAnimArgs[2];
-
- sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[2] = x + gBattleAnimArgs[2];
- sprite->data[4] = y + gBattleAnimArgs[3];
- sprite->data[5] = -50;
-
- InitAnimArcTranslation(sprite);
- sprite->callback = sub_812C798;
-}
-
-static void sub_812C798(struct Sprite *sprite)
-{
- if (TranslateAnimArc(sprite))
- {
- sprite->data[0] = 30;
- sprite->data[1] = 0;
- sprite->callback = WaitAnimForDuration;
- StoreSpriteCallbackInData(sprite, sub_812C7C8);
- }
-}
-
-static void sub_812C7C8(struct Sprite *sprite)
-{
- if (sprite->data[1] & 1)
- sprite->invisible ^= 1;
-
- if (++sprite->data[1] == 16)
- DestroyAnimSprite(sprite);
-}
-
-static void sub_812C80C(struct Sprite *sprite)
-{
- sub_8078650(sprite);
- sub_807867C(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
- sprite->callback = sub_8078600;
- StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
-}
-
-// This is likely fakematching due to some strange type casting behavior.
-static void sub_812C848(struct Sprite *sprite)
-{
- int var0;
- int var1;
- if (sprite->data[0] == 0)
- {
- sub_8078650(sprite);
- sub_807867C(sprite, gBattleAnimArgs[0]);
-
- if (!IsContest())
- {
- if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- {
- sprite->data[1] = gBattleAnimArgs[2];
- sprite->data[2] = gBattleAnimArgs[3];
- }
- else
- {
- var1 = -gBattleAnimArgs[2];
- sprite->data[1] = var1;
- var1 = -gBattleAnimArgs[3];
- sprite->data[2] = var1;
- }
- }
- else
- {
- var1 = -gBattleAnimArgs[2];
- sprite->data[1] = var1;
- sprite->data[2] = gBattleAnimArgs[3];
- }
- }
-
- sprite->data[0]++;
- var0 = (sprite->data[0] * 20) & 0xFF;
- sprite->data[3] += sprite->data[1];
- sprite->data[4] += sprite->data[2];
- sprite->pos2.x = (sprite->data[3] + (s32)((u32)sprite->data[3] >> 31)) >> 1;
- sprite->pos2.y = Sin(var0 & 0xFF, 5) + ((s32)(sprite->data[4] + ((u32)sprite->data[4] >> 31)) >> 1);
-
- if ((u16)(sprite->pos1.x + sprite->pos2.x) > 240)
- DestroyAnimSprite(sprite);
-}
-
-static void sub_812C908(struct Sprite *sprite)
-{
- if (sprite->animEnded)
- DestroyAnimSprite(sprite);
-}
-
-void sub_812C924(u8 taskId)
-{
- if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT)
- gBattleAnimArgs[7] = 0;
- else
- gBattleAnimArgs[7] = 1;
-
- DestroyAnimVisualTask(taskId);
-}
-
-void sub_812C960(u8 taskId)
-{
- if (gAnimMoveDmg > 0)
- gBattleAnimArgs[7] = 0;
- else
- gBattleAnimArgs[7] = 1;
-
- DestroyAnimVisualTask(taskId);
-}
-
-static void sub_812C990(struct Sprite *sprite)
-{
- REG_WINOUT = 0x1F3F;
- REG_DISPCNT |= DISPCNT_OBJWIN_ON;
- gBattle_WIN0H = 0;
- gBattle_WIN0V = 0;
- REG_WIN0H = 0;
- REG_WIN0V = 0;
-
- sub_8078764(sprite, FALSE);
-
- sprite->oam.objMode = ST_OAM_OBJ_WINDOW;
- sprite->invisible = 1;
- sprite->callback = sub_812CA04;
-}
-
-static void sub_812CA04(struct Sprite *sprite)
-{
- switch (sprite->data[0])
- {
- case 0:
- sprite->invisible = 0;
- if (sprite->affineAnimEnded)
- sprite->data[0]++;
- break;
- case 1:
- case 3:
- sprite->data[1] += 117;
- sprite->pos2.x = sprite->data[1] >> 8;
- if (++sprite->data[2] == 21)
- {
- sprite->data[2] = 0;
- sprite->data[0]++;
- }
- break;
- case 2:
- sprite->data[1] -= 117;
- sprite->pos2.x = sprite->data[1] >> 8;
- if (++sprite->data[2] == 41)
- {
- sprite->data[2] = 0;
- sprite->data[0]++;
- }
- break;
- case 4:
- ChangeSpriteAffineAnim(sprite, 1);
- sprite->data[0]++;
- break;
- case 5:
- if (sprite->affineAnimEnded)
- {
- sprite->invisible = 1;
- sprite->callback = sub_812CAD0;
- }
- break;
- }
-}
-
-static void sub_812CAD0(struct Sprite *sprite)
-{
- REG_WINOUT = 0x3F3F;
- REG_DISPCNT ^= DISPCNT_OBJWIN_ON;
- DestroyAnimSprite(sprite);
-}
-
-static void sub_812CAFC(struct Sprite *sprite)
-{
- if (gBattleAnimArgs[3] == 0)
- {
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
- }
-
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
- sprite->oam.tileNum += 16;
-
- if (gBattleAnimArgs[2] == 0)
- {
- sprite->oam.matrixNum = 8;
- sprite->pos2.x = -12;
- sprite->data[1] = 2;
- }
- else
- {
- sprite->pos2.x = 12;
- sprite->data[1] = -2;
- }
-
- sprite->data[0] = gBattleAnimArgs[4];
-
- if (sprite->data[3] != 255)
- sprite->data[3] = gBattleAnimArgs[2];
-
- sprite->callback = sub_812CBB4;
-}
-
-static void sub_812CBB4(struct Sprite *sprite)
-{
- if (sprite->data[2] == 0)
- {
- sprite->pos2.x += sprite->data[1];
- if (sprite->pos2.x == 0)
- {
- sprite->data[2]++;
- if (sprite->data[3] == 0)
- {
- PlaySE1WithPanning(222, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER_NEG));
- }
- }
- }
- else
- {
- sprite->pos2.x -= sprite->data[1];
- if (abs(sprite->pos2.x) == 12)
- {
- sprite->data[0]--;
- sprite->data[2]--;
- }
-
- }
-
- if (sprite->data[0] == 0)
- DestroyAnimSprite(sprite);
-}
-
-static void sub_812CC28(struct Sprite *sprite)
-{
- sprite->oam.objMode = ST_OAM_OBJ_WINDOW;
- sprite->data[3] = 255;
- sub_812CAFC(sprite);
-}
-
-void sub_812CC44(u8 taskId)
-{
- if (IsContest())
- {
- REG_WININ = 0x1F3F;
- gBattle_WIN1H = 0x98F0;
- gBattle_WIN1V = 0x00A0;
- REG_WIN1H = gBattle_WIN0H;
- REG_WIN1V = gBattle_WIN0V;
- }
-
- DestroyAnimVisualTask(taskId);
-}
-
-void sub_812CCA8(u8 taskId)
-{
- if (IsContest())
- {
- REG_WININ = 0x3F3F;
- gBattle_WIN1H = 0;
- gBattle_WIN1V = 0;
- }
-
- DestroyAnimVisualTask(taskId);
-}
-
-static void sub_812CCE8(struct Sprite *sprite)
-{
- int var0;
- if (gBattleAnimArgs[0] == 0)
- {
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
- }
- else
- {
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
- }
-
- sprite->pos2.y = gBattleAnimArgs[2];
- var0 = 0;
- if (sprite->pos2.y > gBattleAnimArgs[3])
- var0 = 1;
-
- sprite->data[0] = var0;
- sprite->data[1] = 0;
- sprite->data[2] = gBattleAnimArgs[4];
- sprite->data[3] = gBattleAnimArgs[5];
- sprite->data[4] = gBattleAnimArgs[3];
- sprite->callback = sub_812CD64;
-}
-
-static void sub_812CD64(struct Sprite *sprite)
-{
- sprite->data[1] = (sprite->data[1] + sprite->data[2]) & 0xFF;
- sprite->pos2.x = gSineTable[sprite->data[1]] >> 4;
- sprite->pos2.y += sprite->data[3];
-
- if (sprite->data[0])
- {
- if (sprite->pos2.y < sprite->data[4])
- DestroyAnimSprite(sprite);
- }
- else
- {
- if (sprite->pos2.y > sprite->data[4])
- DestroyAnimSprite(sprite);
- }
-}
-
-void sub_812CDC8(u8 taskId)
-{
- s16 var0;
- u8 toBG2;
- s16 var2;
- int var3;
- int var4;
- s16 i;
- struct ScanlineEffectParams scanlineParams;
- struct Task *task = &gTasks[taskId];
-
- if (gBattleAnimArgs[0] == 0)
- {
- var0 = sub_8077FC0(gBattleAnimAttacker);
- toBG2 = GetBattlerPosition_permutated(gBattleAnimAttacker);
- }
- else
- {
- var0 = sub_8077FC0(gBattleAnimTarget);
- toBG2 = GetBattlerPosition_permutated(gBattleAnimTarget);
- }
-
- task->data[0] = var0 + 36;
- task->data[1] = task->data[0];
- task->data[2] = var0 - 33;
- if (task->data[2] < 0)
- task->data[2] = 0;
-
- task->data[3] = task->data[0];
- task->data[4] = 8;
- task->data[5] = gBattleAnimArgs[1];
- task->data[6] = 0;
- task->data[7] = 0;
-
- if (toBG2 == 1)
- {
- var3 = gBattle_BG1_X;
- task->data[8] = var3;
- var4 = var3 + 240;
- }
- else
- {
- var3 = gBattle_BG2_X;
- task->data[8] = var3;
- var4 = var3 + 240;
- }
-
- task->data[9] = var4;
- task->data[10] = gBattleAnimArgs[2];
-
- if (gBattleAnimArgs[2] == 0)
- {
- task->data[11] = var4;
- var2 = task->data[8];
- }
- else
- {
- task->data[11] = var3;
- var2 = task->data[9];
- }
-
- task->data[15] = 0;
-
- i = task->data[2];
- while (i <= task->data[3])
- {
- gScanlineEffectRegBuffers[0][i] = var2;
- gScanlineEffectRegBuffers[1][i] = var2;
- i++;
- }
-
- if (toBG2 == 1)
- scanlineParams.dmaDest = &REG_BG1HOFS;
- else
- scanlineParams.dmaDest = &REG_BG2HOFS;
-
- scanlineParams.dmaControl = 0xA2600001;
- scanlineParams.initState = 1;
- scanlineParams.unused9 = 0;
- ScanlineEffect_SetParams(scanlineParams);
-
- task->func = sub_812CEF0;
-}
-
-static void sub_812CEF0(u8 taskId)
-{
- s16 i;
- struct Task *task = &gTasks[taskId];
-
- task->data[0] -= task->data[5];
- if (task->data[0] < task->data[2])
- task->data[0] = task->data[2];
-
- if (task->data[4] == 0)
- {
- task->data[1] -= task->data[5];
- if (task->data[1] < task->data[2])
- {
- task->data[1] = task->data[2];
- task->data[15] = 1;
- }
- }
- else
- {
- task->data[4]--;
- }
-
- if (++task->data[6] > 1)
- {
- task->data[6] = 0;
- task->data[7] = task->data[7] == 0 ? 1 : 0;
-
- if (task->data[7])
- task->data[12] = task->data[8];
- else
- task->data[12] = task->data[9];
- }
-
- i = task->data[0];
- while (i < task->data[1])
- {
- gScanlineEffectRegBuffers[0][i] = task->data[12];
- gScanlineEffectRegBuffers[1][i] = task->data[12];
- i++;
- }
-
- i = task->data[1];
- while (i <= task->data[3])
- {
- gScanlineEffectRegBuffers[0][i] = task->data[11];
- gScanlineEffectRegBuffers[1][i] = task->data[11];
- i++;
- }
-
- if (task->data[15])
- {
- if (task->data[10])
- gScanlineEffect.state = 3;
-
- DestroyAnimVisualTask(taskId);
- }
-}
-
-void sub_812D008(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
-
- task->data[0] = 0;
- task->data[1] = 0;
- task->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- task->data[3] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
- task->data[4] = 32;
- task->data[5] = -20;
- task->data[6] = 0;
- task->data[15] = GetAnimBattlerSpriteId(0);
- task->func = sub_812D06C;
-}
-
-static void sub_812D06C(u8 taskId)
-{
- int var0, var1;
- s16 x, y;
- u16 i, j;
- u8 spriteId;
- struct Task *task = &gTasks[taskId];
-
- switch (task->data[0])
- {
- case 0:
- var0 = task->data[2];
- if (task->data[1] & 1)
- {
- var1 = task->data[4];
- x = var0 - var1;
- }
- else
- {
- var1 = task->data[4];
- x = var0 + var1;
- }
-
- y = task->data[3] + task->data[5];
- spriteId = CreateSprite(&gBattleAnimSpriteTemplate_83D7220, x, y, 6 - task->data[1]);
- PlaySE12WithPanning(186, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER_NEG));
-
- if (spriteId != MAX_SPRITES)
- {
- gSprites[spriteId].hFlip = task->data[1] & 1;
- gSprites[spriteId].callback = SpriteCallbackDummy;
- }
-
- if (task->data[1] & 1)
- {
- task->data[4] -= 6;
- task->data[5] -= 6;
- }
-
- PrepareAffineAnimInTaskData(task, task->data[15], gUnknown_08402400);
- task->data[1]++;
- task->data[0] = 1;
- break;
- case 1:
- if (RunAffineAnimFromTaskData(task) == 0)
- {
- if (task->data[1] == 6)
- {
- task->data[6] = 8;
- task->data[0] = 3;
- }
- else
- {
- if (task->data[1] <= 2)
- task->data[6] = 10;
- else
- task->data[6] = 0;
-
- task->data[0] = 2;
- }
- }
- break;
- case 2:
- if (task->data[6] != 0)
- task->data[6]--;
- else
- task->data[0] = 0;
- break;
- case 3:
- if (task->data[6] != 0)
- task->data[6]--;
- else
- task->data[0] = 4;
- break;
- case 4:
- for (i = 0, j = 0; i < MAX_SPRITES; i++)
- {
- if (gSprites[i].template == &gBattleAnimSpriteTemplate_83D7220)
- {
- gSprites[i].data[0] = taskId;
- gSprites[i].data[1] = 6;
- StartSpriteAnim(&gSprites[i], 2);
- gSprites[i].callback = sub_812D254;
-
- if (++j == 6)
- break;
- }
- }
-
- task->data[6] = j;
- task->data[0] = 5;
- break;
- case 5:
- if (task->data[6] == 0)
- DestroyAnimVisualTask(taskId);
- break;
- }
-}
-
-static void sub_812D254(struct Sprite *sprite)
-{
- if (sprite->animEnded)
- {
- gTasks[sprite->data[0]].data[sprite->data[1]]--;
- DestroySprite(sprite);
- }
-}
-
-static void sub_812D294(struct Sprite *sprite)
-{
- if (sprite->data[0] == 0)
- InitAnimSpritePos(sprite, 0);
-
- sprite->data[0]++;
- if (sprite->data[0] < 40)
- {
- u16 var = sprite->data[0];
- if ((var & 1) == 0)
- sprite->invisible = 1;
- else
- sprite->invisible = 0;
- }
-
- if (sprite->data[0] > 30)
- sprite->invisible = 0;
-
- if (sprite->data[0] == 61)
- {
- StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
- sprite->data[0] = 20;
- sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
- sprite->callback = StartAnimLinearTranslation;
- }
-}
-
-void sub_812D350(u8 taskId)
-{
- switch (gTasks[taskId].data[0])
- {
- case 0:
- PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_084024B0);
- gTasks[taskId].data[0]++;
- break;
- case 1:
- if (RunAffineAnimFromTaskData(&gTasks[taskId]) == 0)
- DestroyAnimVisualTask(taskId);
- break;
- }
-}
-
-static void sub_812D3AC(struct Sprite *sprite)
-{
- u8 spriteId = GetAnimBattlerSpriteId(0);
-
- switch (sprite->data[0])
- {
- case 0:
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
- PrepareBattlerSpriteForRotScale(spriteId, 0);
- sprite->data[1] = 256;
- sprite->data[2] = 256;
- sprite->data[0]++;
- break;
- case 1:
- sprite->data[1] += 96;
- sprite->data[2] -= 26;
- obj_id_set_rotscale(spriteId, sprite->data[1], sprite->data[2], 0);
-
- if (++sprite->data[3] == 5)
- sprite->data[0]++;
- // fall through
- case 2:
- sprite->data[1] += 96;
- sprite->data[2] += 48;
- obj_id_set_rotscale(spriteId, sprite->data[1], sprite->data[2], 0);
-
- if (++sprite->data[3] == 9)
- {
- sprite->data[3] = 0;
- gSprites[spriteId].invisible = 1;
- sub_8078F40(spriteId);
- sprite->data[0]++;
- }
- break;
- case 3:
- sprite->pos2.y -= 6;
- if (sprite->pos1.y + sprite->pos2.y < -32)
- DestroyAnimSprite(sprite);
- break;
- }
-}
-
-static void sub_812D4B4(struct Sprite *sprite)
-{
- if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos1.x = -16;
- else
- sprite->pos1.x = 256;
-
- sprite->pos1.y = 0;
- sprite->callback = sub_812D4EC;
-}
-
-static void sub_812D4EC(struct Sprite *sprite)
-{
- u32 newX;
-
- sprite->data[0] += 72;
- if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos2.x = sprite->data[0] >> 4;
- else
- sprite->pos2.x = -(sprite->data[0] >> 4);
-
- sprite->data[1] += 16;
- sprite->pos2.y += sprite->data[1] >> 8;
-
- if (++sprite->data[2] % 3 == 0)
- {
- CreateSpriteAndAnimate(
- &gSpriteTemplate_8402500,
- sprite->pos1.x + sprite->pos2.x,
- sprite->pos1.y + sprite->pos2.y,
- sprite->subpriority + 1);
- }
-
- newX = sprite->pos1.x + sprite->pos2.x + 32;
- if (newX > 304)
- DestroyAnimSprite(sprite);
-}
-
-static void sub_812D588(struct Sprite *sprite)
-{
- u8 rand;
- s8 y;
-
- rand = Random() & 3;
- if (rand == 0)
- sprite->oam.tileNum += 4;
- else
- sprite->oam.tileNum += 5;
-
- y = Random() & 7;
- if (y > 3)
- y = -y;
-
- sprite->pos2.y = y;
- sprite->callback = sub_812D5E8;
-}
-
-static void sub_812D5E8(struct Sprite *sprite)
-{
- if (++sprite->data[0] < 30)
- {
- if (++sprite->data[1] == 2)
- {
- sprite->invisible ^= 1;
- sprite->data[1] = 0;
- }
- }
- else
- {
- if (sprite->data[1] == 2)
- sprite->invisible = 0;
-
- if (sprite->data[1] == 3)
- {
- sprite->invisible = 1;
- sprite->data[1] = -1;
- }
-
- sprite->data[1]++;
- }
-
- if (sprite->data[0] > 60)
- DestroySprite(sprite);
-}
-
-void sub_812D674(u8 taskId)
-{
- if (gTasks[taskId].data[0] == 0)
- {
- PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402518);
- gTasks[taskId].data[0]++;
- }
- else
- {
- if (RunAffineAnimFromTaskData(&gTasks[taskId]) == 0)
- DestroyAnimVisualTask(taskId);
- }
-}
-
-void sub_812D6CC(u8 taskId)
-{
- if (gTasks[taskId].data[0] == 0)
- {
- PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402540);
- gTasks[taskId].data[0]++;
- }
- else
- {
- if (RunAffineAnimFromTaskData(&gTasks[taskId]) == 0)
- DestroyAnimVisualTask(taskId);
- }
-}
-
-static void sub_812D724(struct Sprite *sprite)
-{
- switch (sprite->data[0])
- {
- case 0:
- InitAnimSpritePos(sprite, 0);
- sprite->data[1] = 0x900;
- sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
- sprite->data[0]++;
- break;
- case 1:
- sprite->pos2.y -= sprite->data[1] >> 8;
- sprite->data[1] -= 96;
- if (sprite->pos1.y + sprite->pos2.y > sprite->data[2])
- DestroyAnimSprite(sprite);
- break;
- }
-}
-
-void sub_812D790(u8 taskId)
-{
- if (gTasks[taskId].data[0] == 0)
- {
- PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402590);
- gTasks[taskId].data[0]++;
- }
- else
- {
- if (RunAffineAnimFromTaskData(&gTasks[taskId]) == 0)
- DestroyAnimVisualTask(taskId);
- }
-}
-
-void sub_812D7E8(u8 taskId)
-{
- int i, j;
- u8 position;
- struct Struct_sub_8078914 subStruct;
- u8 *dest;
- u8 *src;
- u16 *field_4;
- u16 *ptr;
- u16 stretch;
-
- switch (gTasks[taskId].data[0])
- {
- case 0:
- REG_MOSAIC = 0;
- if (GetBattlerPosition_permutated(gBattleAnimAttacker) == 1)
- REG_BG1CNT_BITFIELD.mosaic = 1;
- else
- REG_BG2CNT_BITFIELD.mosaic = 1;
-
- gTasks[taskId].data[10] = gBattleAnimArgs[0];
- gTasks[taskId].data[0]++;
- break;
- case 1:
- if (gTasks[taskId].data[2]++ > 1)
- {
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].data[1]++;
- stretch = gTasks[taskId].data[1];
- REG_MOSAIC = (stretch << 4) | stretch;
- if (stretch == 15)
- gTasks[taskId].data[0]++;
- }
- break;
- case 2:
- sub_8031FC4(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].data[10]);
- sub_8078954(&subStruct, gBattleAnimAttacker);
-
- if (IsContest())
- position = 0;
- else
- position = GetBattlerPosition(gBattleAnimAttacker);
-
- dest = gUnknown_081FAF4C[position] + (gBattleMonForms[gBattleAnimAttacker] << 11);
- src = subStruct.field_0;
- DmaCopy32(3, dest, src, 0x800);
-
- if (IsContest())
- {
- if (IsSpeciesNotUnown(EWRAM_19348[0]) != IsSpeciesNotUnown(EWRAM_19348[1]))
- {
- field_4 = (u16 *)subStruct.field_4;
- for (i = 0; i < 8; i++)
- {
- for (j = 0; j < 4; j++)
- {
- u16 temp = field_4[j + i * 0x20];
- field_4[j + i * 0x20] = field_4[(7 - j) + i * 0x20];
- field_4[(7 - j) + i * 0x20] = temp;
- }
- }
-
- for (i = 0; i < 8; i++)
- {
- for (j = 0; j < 8; j++)
- {
- field_4[j + i * 0x20] ^= 0x400;
- }
- }
- }
-
- ptr = EWRAM_19348;
- if (IsSpeciesNotUnown(ptr[1]))
- gSprites[gBankSpriteIds[gBattleAnimAttacker]].affineAnims = gSpriteAffineAnimTable_81E7C18;
- else
- gSprites[gBankSpriteIds[gBattleAnimAttacker]].affineAnims = gSpriteAffineAnimTable_81E7BEC;
-
- StartSpriteAffineAnim(&gSprites[gBankSpriteIds[gBattleAnimAttacker]], 0);
- }
-
- gTasks[taskId].data[0]++;
- break;
- case 3:
- if (gTasks[taskId].data[2]++ > 1)
- {
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].data[1]--;
- stretch = gTasks[taskId].data[1];
- REG_MOSAIC = (stretch << 4) | stretch;
-
- if (stretch == 0)
- gTasks[taskId].data[0]++;
- }
- break;
- case 4:
- REG_MOSAIC = 0;
- if (GetBattlerPosition_permutated(gBattleAnimAttacker) == 1)
- REG_BG1CNT_BITFIELD.mosaic = 0;
- else
- REG_BG2CNT_BITFIELD.mosaic = 0;
-
- if (!IsContest())
- {
- if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
- {
- if (gTasks[taskId].data[10] == 0)
- sub_8032984(gBattleAnimAttacker, eTransformStatuses[gBattleAnimAttacker].species);
- }
- }
-
- DestroyAnimVisualTask(taskId);
- break;
- }
-}
-
-void c3_80DFBE4(u8 taskId)
-{
- gBattleAnimArgs[7] = gSprites[gBankSpriteIds[gBattleAnimAttacker]].invisible;
- DestroyAnimVisualTask(taskId);
-}
-
-void sub_812DB58(u8 taskId)
-{
- sub_8031FC4(gBattleAnimAttacker, gBattleAnimTarget, 1);
- DestroyAnimVisualTask(taskId);
-}
-
-void sub_812DB84(u8 taskId)
-{
- struct Struct_sub_8078914 subStruct;
-
- switch (gTasks[taskId].data[0])
- {
- case 0:
- REG_BLDCNT = BLDCNT_TGT2_BD | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1
- | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1;
- REG_BLDALPHA = 0x1000;
- REG_BG1CNT_BITFIELD.screenSize = 0;
- REG_BG1CNT_BITFIELD.priority = 1;
- if (!IsContest())
- REG_BG1CNT_BITFIELD.charBaseBlock = 1;
-
- sub_8078914(&subStruct);
- DmaClear32(3, subStruct.field_4, 0x1000);
- LZDecompressVram(gUnknown_08D2AA98, subStruct.field_4);
- LZDecompressVram(gUnknown_08D2A9E0, subStruct.field_0);
- LoadCompressedPalette(gUnknown_08D2AA80, subStruct.field_8 * 16, 32);
- if (IsContest())
- {
- sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0);
- gBattle_BG1_X = -56;
- gBattle_BG1_Y = 0;
- }
- else
- {
- if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- gBattle_BG1_X = -135;
- else
- gBattle_BG1_X = -10;
-
- gBattle_BG1_Y = 0;
- }
-
- gTasks[taskId].data[10] = gBattle_BG1_X;
- gTasks[taskId].data[11] = gBattle_BG1_Y;
-
- gTasks[taskId].data[0]++;
- PlaySE12WithPanning(SE_W234, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER_NEG));
- break;
- case 1:
- if (gTasks[taskId].data[4]++ > 0)
- {
- gTasks[taskId].data[4] = 0;
- if (++gTasks[taskId].data[1] > 12)
- gTasks[taskId].data[1] = 12;
-
- REG_BLDALPHA = ((16 - gTasks[taskId].data[1]) << 8) | gTasks[taskId].data[1];
-
- if (gTasks[taskId].data[1] == 12)
- gTasks[taskId].data[0]++;
- }
- break;
- case 2:
- if (--gTasks[taskId].data[1] < 0)
- gTasks[taskId].data[1] = 0;
-
- REG_BLDALPHA = ((16 - gTasks[taskId].data[1]) << 8) | gTasks[taskId].data[1];
-
- if (gTasks[taskId].data[1] == 0)
- {
- gBattle_BG1_X = gUnknown_084025C0[gTasks[taskId].data[2]] + gTasks[taskId].data[10];
- if (++gTasks[taskId].data[2] == 4)
- gTasks[taskId].data[0] = 4;
- else
- gTasks[taskId].data[0] = 3;
- }
- break;
- case 3:
- if (++gTasks[taskId].data[3] == 4)
- {
- gTasks[taskId].data[3] = 0;
- gTasks[taskId].data[0] = 1;
- PlaySE12WithPanning(SE_W234, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER_NEG));
- }
- break;
- case 4:
- sub_8078914(&subStruct);
- DmaFill32Large(3, 0, subStruct.field_0, 0x2000, 0x1000);
- DmaClear32(3, subStruct.field_4, 0x800);
-
- if (!IsContest())
- REG_BG1CNT_BITFIELD.charBaseBlock = 0;
-
- REG_BG1CNT_BITFIELD.priority = 1;
- gBattle_BG1_X = 0;
- gBattle_BG1_Y = 0;
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
- DestroyAnimVisualTask(taskId);
- break;
- }
-}
-
-static void sub_812DEAC(struct Sprite *sprite)
-{
- s16 var0;
- u8 spriteId1;
- u8 spriteId2;
-
- var0 = Random();
- var0 &= 0x3F;
- if (var0 > 31)
- var0 = 32 - var0;
-
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + var0;
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32;
- sprite->data[1] = gBattleAnimArgs[0];
- sprite->data[2] = gBattleAnimArgs[1];
-
- spriteId1 = CreateSprite(&gBattleAnimSpriteTemplate_84025EC, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1);
- spriteId2 = CreateSprite(&gBattleAnimSpriteTemplate_84025EC, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1);
- StartSpriteAnim(&gSprites[spriteId1], 1);
- StartSpriteAnim(&gSprites[spriteId2], 2);
-
- gSprites[spriteId1].data[1] = gBattleAnimArgs[0];
- gSprites[spriteId1].data[2] = gBattleAnimArgs[1];
- gSprites[spriteId2].data[1] = gBattleAnimArgs[0];
- gSprites[spriteId2].data[2] = gBattleAnimArgs[1];
- gSprites[spriteId1].data[7] = -1;
- gSprites[spriteId2].data[7] = -1;
- gSprites[spriteId1].invisible = 1;
- gSprites[spriteId2].invisible = 1;
- gSprites[spriteId1].callback = sub_812E0F8;
- gSprites[spriteId2].callback = sub_812E0F8;
-
- sprite->data[6] = spriteId1;
- sprite->data[7] = spriteId2;
- sprite->callback = sub_812DFEC;
-}
-
-static void sub_812DFEC(struct Sprite *sprite)
-{
- int var0;
- s8 var1;
-
- var0 = (u16)sprite->data[2] + (u16)sprite->data[3];
- var1 = var0 >> 8;
- sprite->pos2.y -= var1;
- sprite->data[3] = var0 & 0xFF;
- if (sprite->data[4] == 0 && sprite->pos2.y < -8)
- {
- gSprites[sprite->data[6]].invisible = 0;
- sprite->data[4]++;
- }
-
- if (sprite->data[4] == 1 && sprite->pos2.y < -16)
- {
- gSprites[sprite->data[7]].invisible = 0;
- sprite->data[4]++;
- }
-
- if (--sprite->data[1] == -1)
- {
- sprite->invisible = 1;
- sprite->callback = sub_812E09C;
- }
-}
-
-static void sub_812E09C(struct Sprite *sprite)
-{
- if (gSprites[sprite->data[6]].callback == SpriteCallbackDummy
- && gSprites[sprite->data[7]].callback == SpriteCallbackDummy)
- {
- DestroySprite(&gSprites[sprite->data[6]]);
- DestroySprite(&gSprites[sprite->data[7]]);
- DestroyAnimSprite(sprite);
- }
-}
-
-static void sub_812E0F8(struct Sprite *sprite)
-{
- u16 d2;
- register u16 d3 asm("r1");
- int var0;
- s8 var1;
-
- if (!sprite->invisible)
- {
- d2 = sprite->data[2];
- d3 = sprite->data[3];
- var0 = d2 + d3;
- var1 = var0 >> 8;
- sprite->pos2.y -= var1;
- sprite->data[3] = var0 & 0xFF;
- if (--sprite->data[1] == -1)
- {
- sprite->invisible = 1;
- sprite->callback = SpriteCallbackDummy;
- }
- }
-}
-
-void sub_812E14C(u8 taskId)
-{
- struct Struct_sub_8078914 subStruct;
-
- switch (gTasks[taskId].data[0])
- {
- case 0:
- REG_BLDCNT = BLDCNT_TGT2_BD | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1
- | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1;
- REG_BLDALPHA = 0xD03;
- REG_BG1CNT_BITFIELD.screenSize = 0;
- REG_BG1CNT_BITFIELD.priority = 1;
-
- if (!IsContest())
- REG_BG1CNT_BITFIELD.charBaseBlock = 1;
-
- sub_8078914(&subStruct);
- DmaClear32(3, subStruct.field_4, 0x1000);
- LZDecompressVram(gUnknown_08D2AA98, subStruct.field_4);
- LZDecompressVram(gUnknown_08D2A9E0, subStruct.field_0);
- LoadCompressedPalette(gUnknown_08D2AA80, subStruct.field_8 * 16, 32);
-
- if (IsContest())
- {
- sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0);
- gBattle_BG1_X = -56;
- gBattle_BG1_Y = 0;
- }
- else
- {
- u8 position = GetBattlerPosition(gBattleAnimTarget);
- if (IsDoubleBattle() == TRUE)
- {
- if (position == B_POSITION_OPPONENT_LEFT)
- gBattle_BG1_X = -155;
- if (position == B_POSITION_OPPONENT_RIGHT)
- gBattle_BG1_X = -115;
- if (position == B_POSITION_PLAYER_LEFT)
- gBattle_BG1_X = 14;
- if (position == B_POSITION_PLAYER_RIGHT)
- gBattle_BG1_X = -20;
- }
- else
- {
- if (position == B_POSITION_OPPONENT_LEFT)
- gBattle_BG1_X = -135;
- if (position == B_POSITION_PLAYER_LEFT)
- gBattle_BG1_X = -10;
- }
-
- gBattle_BG1_Y = 0;
- }
-
- gTasks[taskId].data[10] = gBattle_BG1_X;
- gTasks[taskId].data[11] = gBattle_BG1_Y;
- gTasks[taskId].data[0]++;
- break;
- case 1:
- gTasks[taskId].data[3] = 0;
- if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT)
- gBattle_BG1_X = gTasks[taskId].data[10] + gUnknown_08402604[gTasks[taskId].data[2]];
- else
- gBattle_BG1_X = gTasks[taskId].data[10] - gUnknown_08402604[gTasks[taskId].data[2]];
-
- if (++gTasks[taskId].data[2] == 5)
- gTasks[taskId].data[0] = 5;
- else
- gTasks[taskId].data[0]++;
- break;
- case 2:
- if (--gTasks[taskId].data[1] <= 4)
- gTasks[taskId].data[1] = 5;
-
- REG_BLDALPHA = (gTasks[taskId].data[1] << 8) | 3;
- if (gTasks[taskId].data[1] == 5)
- gTasks[taskId].data[0]++;
- break;
- case 3:
- if (++gTasks[taskId].data[3] > gUnknown_08402608[gTasks[taskId].data[2]])
- gTasks[taskId].data[0]++;
- break;
- case 4:
- if (++gTasks[taskId].data[1] > 13)
- gTasks[taskId].data[1] = 13;
-
- REG_BLDALPHA = (gTasks[taskId].data[1] << 8) | 3;
- if (gTasks[taskId].data[1] == 13)
- gTasks[taskId].data[0] = 1;
- break;
- case 5:
- sub_8078914(&subStruct);
- DmaClear32(3, subStruct.field_4, 0x800);
-
- if (!IsContest())
- REG_BG1CNT_BITFIELD.charBaseBlock = 0;
-
- REG_BG1CNT_BITFIELD.priority = 1;
- gBattle_BG1_X = 0;
- gBattle_BG1_Y = 0;
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
- DestroyAnimVisualTask(taskId);
- break;
- }
-}
-
-void sub_812E498(u8 taskId)
-{
- if (gTasks[taskId].data[0] == 0)
- {
- PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402610);
- gTasks[taskId].data[0]++;
- }
- else
- {
- if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
- {
- DestroyAnimVisualTask(taskId);
- }
- }
-}
-
-static void sub_812E4F0(struct Sprite *sprite)
-{
- if (sprite->data[0] == 0)
- {
- InitAnimSpritePos(sprite, 0);
- sprite->data[0]++;
- }
- else if (sprite->data[0]++ > 20)
- {
- sprite->data[1] += 160;
- sprite->data[2] += 128;
-
- if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos2.x = -(sprite->data[1] >> 8);
- else
- sprite->pos2.x = sprite->data[1] >> 8;
-
- sprite->pos2.y += sprite->data[2] >> 8;
- if (sprite->pos2.y > 64)
- DestroyAnimSprite(sprite);
- }
-}
-
-void sub_812E568(u8 taskId)
-{
- u8 side;
- struct Task *task = &gTasks[taskId];
-
- if (gBattleAnimArgs[1] == 0)
- {
- DestroyAnimVisualTask(taskId);
- return;
- }
-
- if (gBattleAnimArgs[2] < 0)
- gBattleAnimArgs[2] = 0;
- if (gBattleAnimArgs[2] > 2)
- gBattleAnimArgs[2] = 2;
-
- task->data[0] = 0;
- task->data[1] = 0;
- task->data[2] = 0;
- task->data[3] = 8 - (2 * gBattleAnimArgs[2]);
- task->data[4] = 0x100 + (gBattleAnimArgs[2] * 128);
- task->data[5] = gBattleAnimArgs[2] + 2;
- task->data[6] = gBattleAnimArgs[1] - 1;
- task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
-
- if (gBattleAnimArgs[0] == 0)
- side = GetBattlerSide(gBattleAnimAttacker);
- else
- side = GetBattlerSide(gBattleAnimTarget);
-
- if (side == B_SIDE_OPPONENT)
- {
- task->data[4] *= -1;
- task->data[5] *= -1;
- }
-
- PrepareBattlerSpriteForRotScale(task->data[15], 0);
- task->func = sub_812E638;
-}
-
-static void sub_812E638(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
-
- switch (task->data[0])
- {
- case 0:
- gSprites[task->data[15]].pos2.x += task->data[5];
- task->data[2] -= task->data[4];
- obj_id_set_rotscale(task->data[15], 0x100, 0x100, task->data[2]);
- sub_8078F9C(task->data[15]);
- if (++task->data[1] >= task->data[3])
- {
- task->data[1] = 0;
- task->data[0]++;
- }
- break;
- case 1:
- gSprites[task->data[15]].pos2.x -= task->data[5];
- task->data[2] += task->data[4];
- obj_id_set_rotscale(task->data[15], 0x100, 0x100, task->data[2]);
- sub_8078F9C(task->data[15]);
- if (++task->data[1] >= task->data[3] * 2)
- {
- task->data[1] = 0;
- task->data[0]++;
- }
- break;
- case 2:
- gSprites[task->data[15]].pos2.x += task->data[5];
- task->data[2] -= task->data[4];
- obj_id_set_rotscale(task->data[15], 0x100, 0x100, task->data[2]);
- sub_8078F9C(task->data[15]);
- if (++task->data[1] >= task->data[3])
- {
- if (task->data[6])
- {
- task->data[6]--;
- task->data[1] = 0;
- task->data[0] = 0;
- }
- else
- {
- task->data[0]++;
- }
- }
- break;
- case 3:
- sub_8078F40(task->data[15]);
- DestroyAnimVisualTask(taskId);
- break;
- }
-}
-
-static void sub_812E7A0(struct Sprite *sprite)
-{
- if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- {
- sprite->pos1.x = 0;
- sprite->pos1.y = gBattleAnimArgs[0];
- }
- else
- {
- sprite->pos1.x = 240;
- sprite->pos1.y = gBattleAnimArgs[0] - 30;
- }
-
- sprite->data[2] = gBattleAnimArgs[2];
- StartSpriteAnim(sprite, gBattleAnimArgs[1]);
- sprite->callback = sub_812E7F0;
-}
-
-static void sub_812E7F0(struct Sprite *sprite)
-{
- sprite->data[0] += 3;
- if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- {
- sprite->pos1.x += 5;
- sprite->pos1.y -= 1;
-
- if (sprite->pos1.x > 240)
- DestroyAnimSprite(sprite);
-
- sprite->pos2.y = Sin(sprite->data[0] & 0xFF, 16);
- }
- else
- {
- sprite->pos1.x -= 5;
- sprite->pos1.y += 1;
-
- if (sprite->pos1.x < 0)
- DestroyAnimSprite(sprite);
-
- sprite->pos2.y = Cos(sprite->data[0] & 0xFF, 16);
- }
-}
-
-void sub_812E860(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
-
- task->data[0] = 0;
- task->data[1] = 0;
- task->data[2] = 0;
- task->data[3] = 0;
- task->data[12] = 0x20;
- task->data[13] = 0x40;
- task->data[14] = 0x800;
- task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
-
- PrepareBattlerSpriteForRotScale(task->data[15], 0);
- task->func = sub_812E8B4;
-}
-
-static void sub_812E8B4(u8 taskId)
-{
- int temp;
- struct Task *task = &gTasks[taskId];
-
- switch (task->data[0])
- {
- case 0:
- task->data[2] += 0x200;
- if (task->data[2] >= task->data[14])
- {
- s16 diff = task->data[14] - task->data[2];
- s16 div = diff / (task->data[14] * 2);
- s16 mod = diff % (task->data[14] * 2);
-
- if ((div & 1) == 0)
- {
- task->data[2] = task->data[14] - mod;
- task->data[0] = 1;
- }
- else
- {
- task->data[2] = mod - task->data[14];
- }
- }
- break;
- case 1:
- task->data[2] -= 0x200;
- if (task->data[2] <= -task->data[14])
- {
- s16 diff = task->data[14] - task->data[2];
- s16 div = diff / (task->data[14] * 2);
- s16 mod = diff % (task->data[14] * 2);
-
- if ((1 & div) == 0)
- {
- task->data[2] = mod - task->data[14];
- task->data[0] = 0;
- }
- else
- {
- task->data[2] = task->data[14] - mod;
- }
- }
- break;
- case 2:
- sub_8078F40(task->data[15]);
- DestroyAnimVisualTask(taskId);
- return;
- }
-
- obj_id_set_rotscale(task->data[15], 0x100, 0x100, task->data[2]);
- sub_8078F9C(task->data[15]);
- gSprites[task->data[15]].pos2.x = -(((temp = task->data[2]) >= 0 ? task->data[2] : temp + 63) >> 6);
-
- if (++task->data[1] > 8)
- {
- if (task->data[12])
- {
- task->data[12]--;
- task->data[14] -= task->data[13];
- if (task->data[14] < 16)
- task->data[14] = 16;
- }
- else
- {
- task->data[0] = 2;
- }
- }
-}
-
-static void sub_812EA4C(struct Sprite *sprite)
-{
- if (sprite->data[0] == 0)
- {
- if (gBattleAnimArgs[2] == 0)
- {
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
- }
-
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
- sprite->data[1] = 0x80;
- sprite->data[2] = 0x300;
- sprite->data[3] = gBattleAnimArgs[1];
- sprite->data[0]++;
- }
- else
- {
- sprite->pos2.x = sprite->data[1] >> 8;
- sprite->pos2.y += sprite->data[2] >> 8;
- if (sprite->data[4] == 0 && sprite->pos2.y > -sprite->data[3])
- {
- sprite->data[4] = 1;
- sprite->data[2] = (-sprite->data[2] / 3) * 2;
- }
-
- sprite->data[1] += 192;
- sprite->data[2] += 128;
- if (sprite->animEnded)
- DestroyAnimSprite(sprite);
- }
-}
-
-void sub_812EB10(u8 taskId)
-{
- u8 spriteId;
-
- if (gTasks[taskId].data[0] == 0)
- {
- if (gBattleAnimArgs[0] == 0)
- gTasks[taskId].data[11] = gBattleAnimAttacker;
- else
- gTasks[taskId].data[11] = gBattleAnimTarget;
-
- spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
- gTasks[taskId].data[10] = spriteId;
- PrepareBattlerSpriteForRotScale(spriteId, 0);
-
- switch (gBattleAnimArgs[1])
- {
- case 0:
- obj_id_set_rotscale(spriteId, 0xE0, 0x140, 0);
- sub_8079A64(spriteId);
- break;
- case 1:
- obj_id_set_rotscale(spriteId, 0xD0, 0x130, 0xF00);
- sub_8079A64(spriteId);
- if (IsContest() || GetBattlerSide(gTasks[taskId].data[11]) == B_SIDE_PLAYER)
- gSprites[spriteId].pos2.y += 16;
- break;
- case 2:
- obj_id_set_rotscale(spriteId, 0xD0, 0x130, 0xF100);
- sub_8079A64(spriteId);
- if (IsContest() || GetBattlerSide(gTasks[taskId].data[11]) == B_SIDE_PLAYER)
- gSprites[spriteId].pos2.y += 16;
- break;
- }
-
- gSprites[spriteId].pos2.x = 2;
- gTasks[taskId].data[0]++;
- }
- else
- {
- spriteId = gTasks[taskId].data[10];
- if (++gTasks[taskId].data[2] == 3)
- {
- gTasks[taskId].data[2] = 0;
- gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
- }
-
- if (++gTasks[taskId].data[1] == 13)
- {
- sub_8078F40(spriteId);
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
- DestroyAnimVisualTask(taskId);
- }
- }
-}
-
-static void sub_812EC78(struct Sprite *sprite)
-{
- u8 tileOffset;
- int rand1;
- int rand2;
-
- tileOffset = Random() % 12;
- sprite->oam.tileNum += tileOffset;
- rand1 = Random() & 0x1FF;
- rand2 = Random() & 0xFF;
-
- if (rand1 & 1)
- sprite->data[0] = 0x5E0 + rand1;
- else
- sprite->data[0] = 0x5E0 - rand1;
-
- if (rand2 & 1)
- sprite->data[1] = 0x480 + rand2;
- else
- sprite->data[1] = 0x480 - rand2;
-
- sprite->data[2] = gBattleAnimArgs[0];
- if (sprite->data[2] == 0)
- sprite->pos1.x = -8;
- else
- sprite->pos1.x = 248;
-
- sprite->pos1.y = 104;
- sprite->callback = sub_812ED24;
-}
-
-static void sub_812ED24(struct Sprite *sprite)
-{
- if (sprite->data[2] == 0)
- {
- sprite->pos2.x += sprite->data[0] >> 8;
- sprite->pos2.y -= sprite->data[1] >> 8;
- }
- else
- {
- sprite->pos2.x -= sprite->data[0] >> 8;
- sprite->pos2.y -= sprite->data[1] >> 8;
- }
-
- sprite->data[0] -= 22;
- sprite->data[1] -= 48;
- if (sprite->data[0] < 0)
- sprite->data[0] = 0;
-
- if (++sprite->data[3] == 31)
- DestroyAnimSprite(sprite);
-}
-
-static void sub_812ED84(struct Sprite *sprite)
-{
- REG_WINOUT = 0x1F3F;
- REG_DISPCNT |= DISPCNT_OBJWIN_ON;
- gBattle_WIN0H = 0;
- gBattle_WIN0V = 0;
- REG_WIN0H = 0;
- REG_WIN0V = 0;
-
- sprite->data[0] = gBattleAnimArgs[2];
- sub_8078764(sprite, FALSE);
- sprite->oam.objMode = ST_OAM_OBJ_WINDOW;
- sprite->invisible = 1;
- sprite->callback = sub_812EE00;
-}
-
-static void sub_812EE00(struct Sprite *sprite)
-{
- switch (sprite->data[1])
- {
- case 0:
- sprite->invisible = 0;
- if (sprite->affineAnimEnded)
- sprite->data[1]++;
- break;
- case 1:
- if (--sprite->data[0] == 0)
- {
- ChangeSpriteAffineAnim(sprite, 1);
- sprite->data[1]++;
- }
- break;
- case 2:
- if (sprite->affineAnimEnded)
- {
- sprite->invisible = 1;
- sprite->data[1]++;
- }
- break;
- case 3:
- REG_WINOUT = 0x3F3F;
- REG_DISPCNT ^= DISPCNT_OBJWIN_ON;
- DestroyAnimSprite(sprite);
- break;
- }
-}
-
-static void sub_812EEA4(struct Sprite *sprite)
-{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
- sprite->data[0] = gBattleAnimArgs[0];
- sprite->data[1] = gBattleAnimArgs[1];
- sprite->callback = sub_812EEEC;
- sprite->callback(sprite);
-}
-
-static void sub_812EEEC(struct Sprite *sprite)
-{
- sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8);
- sprite->pos2.y = Cos(sprite->data[1], sprite->data[3] >> 8);
- sprite->data[1] = (sprite->data[1] + 9) & 0xFF;
-
- if ((u16)sprite->data[1] < 64 || sprite->data[1] > 195)
- sprite->subpriority = GetBattlerSubpriority(gBattleAnimAttacker) - 1;
- else
- sprite->subpriority = GetBattlerSubpriority(gBattleAnimAttacker) + 1;
-
- if (sprite->data[5] == 0)
- {
- sprite->data[2] += 0x400;
- sprite->data[3] += 0x100;
- sprite->data[4]++;
- if (sprite->data[4] == sprite->data[0])
- {
- sprite->data[4] = 0;
- sprite->data[5] = 1;
- }
- }
- else if (sprite->data[5] == 1)
- {
- sprite->data[2] -= 0x400;
- sprite->data[3] -= 0x100;
- sprite->data[4]++;
- if (sprite->data[4] == sprite->data[0])
- DestroyAnimSprite(sprite);
- }
-}
-
-// Copies the target mon's sprite, and makes a white silhouette that shrinks away.
-void AnimTask_RolePlaySilhouette(u8 taskId)
-{
- u8 isBackPic;
- u32 personality;
- u32 otId;
- u16 species;
- s16 xOffset;
- u32 priority;
- u8 spriteId;
- s16 coord1, coord2;
-
- GetAnimBattlerSpriteId(ANIM_BATTLER_ATTACKER);
- if (IsContest())
- {
- isBackPic = 1;
- personality = eWRAM_19348Struct->personality;
- otId = eWRAM_19348Struct->otId;
- species = eWRAM_19348Struct->species;
- xOffset = 20;
- priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
- }
- else
- {
- if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- {
- isBackPic = 0;
- personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY);
- otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID);
- if (eTransformStatuses[gBattleAnimTarget].species == SPECIES_NONE)
- {
- if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
- species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES);
- else
- species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES);
- }
- else
- {
- species = eTransformStatuses[gBattleAnimTarget].species;
- }
-
- xOffset = 20;
- priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
- }
- else
- {
- isBackPic = 1;
- personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY);
- otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID);
- if (eTransformStatuses[gBattleAnimTarget].species == SPECIES_NONE)
- {
- if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
- species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES);
- else
- species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES);
- }
- else
- {
- species = eTransformStatuses[gBattleAnimTarget].species;
- }
-
- xOffset = -20;
- priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
- }
- }
-
- coord1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- coord2 = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
- spriteId = sub_8079F44(species, isBackPic, 0, coord1 + xOffset, coord2, 5, personality, otId);
-
- gSprites[spriteId].oam.priority = priority;
- gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
- FillPalette(RGB_WHITE, (gSprites[spriteId].oam.paletteNum << 4) + 0x100, 32);
- gSprites[spriteId].oam.priority = priority;
- REG_BLDCNT = BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL;
- REG_BLDALPHA = BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1]);
-
- gTasks[taskId].data[0] = spriteId;
- gTasks[taskId].func = AnimTask_RolePlaySilhouetteStep1;
-}
-
-static void AnimTask_RolePlaySilhouetteStep1(u8 taskId)
-{
- if (gTasks[taskId].data[10]++ > 1)
- {
- gTasks[taskId].data[10] = 0;
- gTasks[taskId].data[1]++;
- REG_BLDALPHA = ((16 - gTasks[taskId].data[1]) << 8) | gTasks[taskId].data[1];
- if (gTasks[taskId].data[1] == 10)
- {
- gTasks[taskId].data[10] = 256;
- gTasks[taskId].data[11] = 256;
- gTasks[taskId].func = sub_812F290;
- }
- }
-}
-
-static void sub_812F290(u8 taskId)
-{
- u8 spriteId = gTasks[taskId].data[0];
- gTasks[taskId].data[10] -= 16;
- gTasks[taskId].data[11] += 128;
- gSprites[spriteId].oam.affineMode |= 2;
- sub_8078FDC(&gSprites[spriteId], 1, gTasks[taskId].data[10], gTasks[taskId].data[11], 0);
- if (++gTasks[taskId].data[12] == 9)
- {
- sub_8079098(&gSprites[spriteId]);
- DestroySpriteAndFreeResources_(&gSprites[spriteId]);
- gTasks[taskId].func = sub_8078634;
- }
-}
-
-void sub_812F314(u8 taskId)
-{
- u8 battler;
- u16 bgX, bgY;
- s16 y, i;
- struct ScanlineEffectParams scanlineParams;
- struct Task *task = &gTasks[taskId];
-
- if (gBattleAnimArgs[0] == 0)
- battler = gBattleAnimAttacker;
- else
- battler = gBattleAnimTarget;
-
- task->data[0] = 0;
- task->data[1] = 0;
- task->data[2] = 0;
- task->data[3] = 16;
- task->data[4] = 0;
- task->data[5] = battler;
- task->data[6] = 32;
- task->data[7] = 0;
- task->data[8] = 24;
-
- if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
- task->data[8] *= -1;
-
- task->data[13] = sub_8077FC0(battler) - 34;
- if (task->data[13] < 0)
- task->data[13] = 0;
-
- task->data[14] = task->data[13] + 66;
- task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
- if (GetBattlerPosition_permutated(battler) == 1)
- {
- scanlineParams.dmaDest = &REG_BG1HOFS;
- REG_BLDCNT = 0x3F42;
- bgX = gBattle_BG1_X;
- bgY = gBattle_BG1_Y;
- }
- else
- {
- scanlineParams.dmaDest = &REG_BG2HOFS;
- REG_BLDCNT = 0x3F44;
- bgX = gBattle_BG2_X;
- bgY = gBattle_BG2_Y;
- }
-
- for (y = 0, i = 0; y < 160; y++, i += 2)
- {
- gScanlineEffectRegBuffers[0][i] = bgX;
- gScanlineEffectRegBuffers[1][i] = bgX;
- gScanlineEffectRegBuffers[0][i + 1] = bgY;
- gScanlineEffectRegBuffers[1][i + 1] = bgY;
- }
-
- scanlineParams.dmaControl = 0xA6600001;
- scanlineParams.initState = 1;
- scanlineParams.unused9 = 0;
- ScanlineEffect_SetParams(scanlineParams);
- task->func = sub_812F474;
-}
-
-static void sub_812F474(u8 taskId)
-{
- struct Task *task;
- s16 var1;
- s16 var2;
- s16 bgX, bgY;
- s16 offset;
- s16 var0;
- s16 i;
- s16 sineIndex;
- s16 var3;
-
- task = &gTasks[taskId];
- if (GetBattlerPosition_permutated(task->data[5]) == 1)
- {
- bgX = gBattle_BG1_X;
- bgY = gBattle_BG1_Y;
- }
- else
- {
- bgX = gBattle_BG2_X;
- bgY = gBattle_BG2_Y;
- }
-
- switch (task->data[0])
- {
- case 0:
- offset = task->data[14] * 2;
- var1 = 0;
- var2 = 0;
- i = 0;
- task->data[1] = (task->data[1] + 2) & 0xFF;
- sineIndex = task->data[1];
- task->data[9] = 0x7E0 / task->data[6];
- task->data[10] = -((task->data[7] * 2) / task->data[9]);
- task->data[11] = task->data[7];
- var3 = task->data[11] >> 5;
- task->data[12] = var3;
- var0 = task->data[14];
- while (var0 > task->data[13])
- {
- gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][offset + 1] = (i - var2) + bgY;
- gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][offset] = bgX + var3 + (gSineTable[sineIndex] >> 5);
- sineIndex = (sineIndex + 10) & 0xFF;
- task->data[11] += task->data[10];
- var3 = task->data[11] >> 5;
- task->data[12] = var3;
-
- i++;
- offset -= 2;
- var1 += task->data[6];
- var2 = var1 >> 5;
- var0--;
- }
-
- var0 *= 2;
- while (var0 >= 0)
- {
- gScanlineEffectRegBuffers[0][var0] = bgX + 240;
- gScanlineEffectRegBuffers[1][var0] = bgX + 240;
- var0 -= 2;
- }
-
- if (++task->data[6] > 63)
- {
- task->data[6] = 64;
- task->data[2]++;
- if (task->data[2] & 1)
- task->data[3]--;
- else
- task->data[4]++;
-
- REG_BLDALPHA = (task->data[4] << 8) | task->data[3];
- if (task->data[3] == 0 && task->data[4] == 16)
- {
- task->data[2] = 0;
- task->data[3] = 0;
- task->data[0]++;
- }
- }
- else
- {
- task->data[7] += task->data[8];
- }
- break;
- case 1:
- if (++task->data[2] > 12)
- {
- gScanlineEffect.state = 3;
- task->data[2] = 0;
- task->data[0]++;
- }
- break;
- case 2:
- task->data[2]++;
- if (task->data[2] & 1)
- task->data[3]++;
- else
- task->data[4]--;
-
- REG_BLDALPHA = (task->data[4] << 8) | task->data[3];
- if (task->data[3] == 16 && task->data[4] == 0)
- {
- task->data[2] = 0;
- task->data[3] = 0;
- task->data[0]++;
- }
- break;
- case 3:
- DestroyAnimVisualTask(taskId);
- break;
- }
-}
-
-void sub_812F724(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
- task->data[0] = 0;
- task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
- PrepareAffineAnimInTaskData(&gTasks[taskId], task->data[15], &gUnknown_08402750);
- task->func = sub_812F76C;
-}
-
-static void sub_812F76C(u8 taskId)
-{
- u16 var0;
-
- struct Task *task = &gTasks[taskId];
- var0 = task->data[0];
- task->data[0]++;
- var0 -= 20;
- if (var0 < 23)
- {
- if (++task->data[1] > 1)
- {
- task->data[1] = 0;
- task->data[2]++;
- if (task->data[2] & 1)
- gSprites[task->data[15]].pos2.x = 1;
- else
- gSprites[task->data[15]].pos2.x = -1;
- }
- }
- else
- {
- gSprites[task->data[15]].pos2.x = 0;
- }
-
- if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
- DestroyAnimVisualTask(taskId);
-}
-
-static void sub_812F804(struct Sprite *sprite, s16 b, s16 c, s16 d, s16 e, u16 f)
-{
- sprite->pos1.x = b;
- sprite->pos1.y = c;
- sprite->data[4] = b << 4;
- sprite->data[5] = c << 4;
- sprite->data[6] = ((d - b) << 4) / f;
- sprite->data[7] = ((e - c) << 4) / f;
-}
-
-void sub_812F86C(struct Sprite *sprite)
-{
- sprite->data[4] += sprite->data[6];
- sprite->data[5] += sprite->data[7];
- sprite->pos1.x = sprite->data[4] >> 4;
- sprite->pos1.y = sprite->data[5] >> 4;
-}
-
-static void sub_812F88C(struct Sprite *sprite)
-{
- s16 x = sprite->pos1.x;
- s16 y = sprite->pos1.y;
-
- sub_8078650(sprite);
- StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]);
- sub_812F804(sprite, sprite->pos1.x, sprite->pos1.y, x, y, 64);
- sprite->data[0] = 0;
- sprite->callback = sub_812F8DC;
-}
-
-static void sub_812F8DC(struct Sprite *sprite)
-{
- int index;
-
- sprite->data[0]++;
- index = (sprite->data[0] * 8) & 0xFF;
- sub_812F86C(sprite);
- sprite->pos2.y = Sin(index, 8);
- if (sprite->data[0] > 58)
- {
- if (++sprite->data[1] > 1)
- {
- sprite->data[1] = 0;
- sprite->data[2]++;
- sprite->invisible = sprite->data[2] & 1;
- if (sprite->data[2] > 3)
- DestroySpriteAndMatrix(sprite);
- }
- }
-}
-
-static void sub_812F948(struct Sprite *sprite)
-{
- sprite->data[0] = gBattleAnimArgs[3];
- StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]);
- if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER)
- gBattleAnimArgs[1] = -gBattleAnimArgs[1];
-
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
- sprite->callback = sub_80DA48C;
-}
-
-static void sub_812F9B0(u8 taskId)
-{
- u16 var0 = 0;
- u16 var1 = 0;
-
- gTasks[taskId].data[0]--;
- if ((gTasks[taskId].data[6] & 0x8000) && (--gTasks[taskId].data[1] == -1))
- {
- if (gTasks[taskId].data[9] == 0)
- {
- gTasks[taskId].data[9] = gTasks[taskId].data[4];
- gTasks[taskId].data[4] = -gTasks[taskId].data[4];
- }
- else
- {
- gTasks[taskId].data[9] = 0;
- }
-
- if (gTasks[taskId].data[10] == 0)
- {
- gTasks[taskId].data[10] = gTasks[taskId].data[5];
- gTasks[taskId].data[5] = -gTasks[taskId].data[5];
- }
- else
- {
- gTasks[taskId].data[10] = 0;
- }
-
- gTasks[taskId].data[1] = gTasks[taskId].data[13];
- }
-
- var0 = gTasks[taskId].data[7];
- var1 = gTasks[taskId].data[8];
- if (gTasks[taskId].data[2] & 0x8000)
- gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] - (var0 >> 8);
- else
- gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] + (var0 >> 8);
-
- if (gTasks[taskId].data[3] & 0x8000)
- gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] - (var1 >> 8);
- else
- gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] + (var1 >> 8);
-
- if (gTasks[taskId].data[0] < 1)
- {
- DestroyTask(taskId);
- gAnimVisualTaskCount--;
- }
-}
-
-static void sub_812FAF8(u8 taskId)
-{
- u16 var0 = 0;
- u16 var1 = 0;
-
- gTasks[taskId].data[0]--;
- if ((gTasks[taskId].data[6] & 0x8000) && (--gTasks[taskId].data[1] == -1))
- {
- if (gTasks[taskId].data[9] == 0)
- {
- gTasks[taskId].data[9] = gTasks[taskId].data[4];
- gTasks[taskId].data[4] = -gTasks[taskId].data[4];
- }
- else
- {
- gTasks[taskId].data[9] = var0;
- }
-
- if (gTasks[taskId].data[10] == 0)
- {
- gTasks[taskId].data[10] = gTasks[taskId].data[5];
- gTasks[taskId].data[5] = -gTasks[taskId].data[5];
- }
- else
- {
- gTasks[taskId].data[10] = 0;
- }
-
- gTasks[taskId].data[1] = gTasks[taskId].data[13];
- }
-
- var0 = (gTasks[taskId].data[2] & 0x7FFF) + gTasks[taskId].data[7];
- var1 = (gTasks[taskId].data[3] & 0x7FFF) + gTasks[taskId].data[8];
- if (gTasks[taskId].data[2] & 0x8000)
- gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] - (var0 >> 8);
- else
- gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] + (var0 >> 8);
-
- if (gTasks[taskId].data[3] & 0x8000)
- gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] - (var1 >> 8);
- else
- gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] + (var1 >> 8);
-
- gTasks[taskId].data[7] = var0;
- gTasks[taskId].data[8] = var1;
- if (gTasks[taskId].data[0] < 1)
- {
- gTasks[taskId].data[0] = 30;
- gTasks[taskId].data[13] = 0;
- gTasks[taskId].func = sub_812F9B0;
- }
-}
-
-void sub_812FC68(u8 taskId)
-{
- gTasks[taskId].data[15] = gBankSpriteIds[gBattleAnimAttacker];
- gTasks[taskId].data[14] = gBattleAnimArgs[0];
- gTasks[taskId].data[0] = gBattleAnimArgs[0];
- gTasks[taskId].data[13] = gBattleAnimArgs[6];
- if (gBattleAnimArgs[3])
- gTasks[taskId].data[6] = gTasks[taskId].data[6] | -0x8000;
-
- if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- {
- gTasks[taskId].data[2] = gBattleAnimArgs[1];
- gTasks[taskId].data[3] = gBattleAnimArgs[2];
- }
- else
- {
- if (gBattleAnimArgs[1] & 0x8000)
- gTasks[taskId].data[2] = gBattleAnimArgs[1] & 0x7FFF;
- else
- gTasks[taskId].data[2] = gBattleAnimArgs[1] | -0x8000;
-
- if (gBattleAnimArgs[2] & 0x8000)
- gTasks[taskId].data[3] = gBattleAnimArgs[2] & 0x7FFF;
- else
- gTasks[taskId].data[3] = gBattleAnimArgs[2] | -0x8000;
- }
-
- gTasks[taskId].data[8] = 0;
- gTasks[taskId].data[7] = 0;
- gTasks[taskId].data[4] = gBattleAnimArgs[4];
- gTasks[taskId].data[5] = gBattleAnimArgs[5];
- gTasks[taskId].func = sub_812FAF8;
-}
-
-void sub_812FD7C(u8 taskId)
-{
- u8 battler;
- struct Task *task = &gTasks[taskId];
-
- if (gBattleAnimArgs[1] == 0)
- DestroyAnimVisualTask(taskId);
-
- task->data[0] = 0;
- task->data[1] = 0;
- task->data[2] = 0;
- task->data[3] = gBattleAnimArgs[1];
- if (gBattleAnimArgs[0] == 0)
- battler = gBattleAnimAttacker;
- else
- battler = gBattleAnimTarget;
-
- task->data[4] = GetBattlerSpriteCoord(battler, 0);
- task->data[5] = GetBattlerSpriteCoord(battler, 1);
- task->data[6] = GetBattlerSubpriority(battler);
- task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
- PrepareAffineAnimInTaskData(task, task->data[15], &gUnknown_084028AC);
- task->func = sub_812FE20;
-}
-
-static void sub_812FE20(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
-
- switch (task->data[0])
- {
- case 0:
- if (++task->data[1] == 6)
- sub_812FEB8(taskId, TRUE);
-
- if (task->data[1] == 18)
- sub_812FEB8(taskId, FALSE);
-
- if (!RunAffineAnimFromTaskData(task))
- {
- if (--task->data[3] == 0)
- {
- task->data[0]++;
- }
- else
- {
- task->data[1] = 0;
- PrepareAffineAnimInTaskData(task, task->data[15], &gUnknown_084028AC);
- }
- }
- break;
- case 1:
- if (task->data[2] == 0)
- DestroyAnimVisualTask(taskId);
- break;
- }
-}
-
-static void sub_812FEB8(u8 taskId, bool8 arg1)
-{
- u8 i;
- s8 xOffset, yOffset;
- struct Task *task;
- s16 xCoords[4];
- s16 yCoords[2];
-
- task = &gTasks[taskId];
- if (!arg1)
- {
- xOffset = 18;
- yOffset = -20;
- }
- else
- {
- xOffset = 30;
- yOffset = 20;
- }
-
- xCoords[0] = task->data[4] - xOffset;
- xCoords[1] = task->data[4] - xOffset - 4;
- xCoords[2] = task->data[4] + xOffset;
- xCoords[3] = task->data[4] + xOffset + 4;
- yCoords[0] = task->data[5] + yOffset;
- yCoords[1] = task->data[5] + yOffset + 6;
-
- for (i = 0; i < 4; i++)
- {
- u8 spriteId = CreateSprite(&gSpriteTemplate_84028CC, xCoords[i], yCoords[i & 1], task->data[6] - 5);
- if (spriteId != MAX_SPRITES)
- {
- gSprites[spriteId].data[0] = 0;
- gSprites[spriteId].data[1] = i < 2 ? -2 : 2;
- gSprites[spriteId].data[2] = -1;
- gSprites[spriteId].data[3] = taskId;
- gSprites[spriteId].data[4] = 2;
- task->data[2]++;
- }
- }
-}
-
-static void sub_812FF94(struct Sprite *sprite)
-{
- sprite->pos1.x += sprite->data[1];
- sprite->pos1.y += sprite->data[2];
- if (++sprite->data[0] > 6)
- {
- gTasks[sprite->data[3]].data[sprite->data[4]]--;
- DestroySprite(sprite);
- }
-}
-
-void sub_812FFE4(u8 taskId)
-{
- u8 spriteId;
-
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1] = gBattleAnimArgs[1];
- spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
- gTasks[taskId].data[2] = 0x100 + gSprites[spriteId].oam.paletteNum * 16;
- gTasks[taskId].func = sub_813003C;
-}
-
-static void sub_813003C(u8 taskId)
-{
- if (gTasks[taskId].data[1])
- {
- BlendPalette(gTasks[taskId].data[2], 16, 8, gUnknown_084028E4[gTasks[taskId].data[0]]);
- if (++gTasks[taskId].data[0] > 23)
- gTasks[taskId].data[0] = 0;
-
- gTasks[taskId].data[1]--;
- }
- else
- {
- BlendPalette(gTasks[taskId].data[2], 16, 0, RGB(0, 0, 0));
- DestroyAnimVisualTask(taskId);
- }
-}
-
-void sub_81300A4(u8 taskId)
-{
- sub_80E3C4C(
- taskId,
- 0,
- 0x1A0,
- gBattleAnimAttacker,
- gBattleAnimArgs[0],
- 10,
- 2,
- 30,
- gUnknown_08D2E014,
- gUnknown_08D2E170,
- gUnknown_08D2E150);
-}
-
-static void sub_81300F4(struct Sprite *sprite)
-{
- if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
- gBattleAnimArgs[0] = -gBattleAnimArgs[0];
-
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
- if (gBattleAnimArgs[2] == 0)
- {
- sprite->data[0] = 640;
- sprite->data[1] = -640;
- }
- else if (gBattleAnimArgs[2] == 1)
- {
- sprite->vFlip = 1;
- sprite->data[0] = 640;
- sprite->data[1] = 640;
- }
- else
- {
- StartSpriteAnim(sprite, 1);
- sprite->data[0] = 640;
- }
-
- if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- {
- sprite->data[0] = -sprite->data[0];
- sprite->hFlip = 1;
- }
-
- sprite->callback = sub_81301B4;
-}
-
-static void sub_81301B4(struct Sprite *sprite)
-{
- sprite->data[6] += sprite->data[0];
- sprite->data[7] += sprite->data[1];
- sprite->pos2.x = sprite->data[6] >> 8;
- sprite->pos2.y = sprite->data[7] >> 8;
- if (++sprite->data[5] == 14)
- DestroyAnimSprite(sprite);
-}
-
-void sub_81301EC(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
-
- if (IsContest())
- {
- task->data[5] = 8;
- task->data[6] = 3;
- task->data[7] = 1;
- }
- else
- {
- task->data[5] = 12;
- task->data[6] = 3;
- task->data[7] = 0;
- }
-
- if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 0) / 4;
- else
- task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 0) / 4;
-
- task->data[12] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 0) / 4;
- task->data[13] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
- task->func = sub_81302E4;
-}
-
-static void sub_81302E4(u8 taskId)
-{
- u8 i;
- s16 x, y;
- struct Task *task = &gTasks[taskId];
-
- switch (task->data[0])
- {
- case 0:
- if (++task->data[1] > 3)
- {
- task->data[1] = 0;
- sub_8130424(
- task->data[11],
- task->data[12],
- task->data[13],
- task->data[14],
- task->data[5],
- task->data[2],
- &x,
- &y);
-
- for (i = 0; i < 2; i++)
- {
- u8 spriteId = CreateSprite(&gSpriteTemplate_840294C, x, y, 35);
- if (spriteId != MAX_SPRITES)
- {
- if (task->data[7] == 0)
- {
- if (i == 0)
- gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = -task->data[6];
- else
- gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = task->data[6];
- }
- else
- {
- if (i == 0)
- {
- gSprites[spriteId].pos2.x = -task->data[6];
- gSprites[spriteId].pos2.y = task->data[6];
- }
- else
- {
- gSprites[spriteId].pos2.x = task->data[6];
- gSprites[spriteId].pos2.y = -task->data[6];
- }
- }
-
- gSprites[spriteId].data[0] = 0;
- gSprites[spriteId].data[1] = taskId;
- gSprites[spriteId].data[2] = 10;
- task->data[10]++;
- }
- }
-
- if (task->data[2] == task->data[5])
- task->data[0]++;
-
- task->data[2]++;
- }
- break;
- case 1:
- if (task->data[10] == 0)
- DestroyAnimVisualTask(taskId);
- break;
- }
-}
-
-static void sub_8130424(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, s16 *x, s16 *y)
-{
- int x2;
- int y2;
-
- if (arg5 == 0)
- {
- *x = arg0;
- *y = arg1;
- return;
- }
-
- if (arg5 >= arg4)
- {
- *x = arg2;
- *y = arg3;
- return;
- }
-
- arg4--;
- x2 = (arg0 << 8) + arg5 * (((arg2 - arg0) << 8) / arg4);
- y2 = (arg1 << 8) + arg5 * (((arg3 - arg1) << 8) / arg4);
- *x = x2 >> 8;
- *y = y2 >> 8;
-}
-
-static void sub_81304DC(struct Sprite *sprite)
-{
- if (++sprite->data[0] > 36)
- {
- gTasks[sprite->data[1]].data[sprite->data[2]]--;
- DestroySprite(sprite);
- }
-}
-
-static void sub_813051C(struct Sprite *sprite)
-{
- sprite->pos1.x = gBattleAnimArgs[0];
- sprite->pos1.y = gBattleAnimArgs[1];
- sprite->data[2] = gBattleAnimArgs[2];
- sprite->data[4] = gBattleAnimArgs[3];
- sprite->data[0] = gBattleAnimArgs[4];
- StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
- sprite->callback = sub_8078CC0;
-}
-
-void sub_8130554(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
-
- task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- task->data[12] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
- task->data[13] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + GetBattlerSpriteCoordAttr(gBattleAnimTarget, 0) / 4;
- task->data[15] = CreateSprite(&gSpriteTemplate_84029AC, task->data[11], task->data[12], GetBattlerSubpriority(gBattleAnimTarget) - 5);
- if (task->data[15] != MAX_SPRITES)
- {
- gSprites[task->data[15]].data[0] = 16;
- gSprites[task->data[15]].data[2] = task->data[13];
- gSprites[task->data[15]].data[4] = task->data[14];
- gSprites[task->data[15]].data[5] = -32;
- InitAnimArcTranslation(&gSprites[task->data[15]]);
- if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
- StartSpriteAffineAnim(&gSprites[task->data[15]], 1);
-
- task->func = sub_81306A4;
- }
- else
- {
- DestroyAnimVisualTask(taskId);
- }
-}
-
-static void sub_81306A4(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
-
- switch (task->data[0])
- {
- case 0:
- if (++task->data[1] > 1)
- {
- task->data[1] = 0;
- TranslateAnimArc(&gSprites[task->data[15]]);
- if (++task->data[2] > 7)
- task->data[0]++;
- }
- break;
- case 1:
- if (TranslateAnimArc(&gSprites[task->data[15]]))
- {
- task->data[1] = 0;
- task->data[2] = 0;
- task->data[0]++;
- }
- break;
- case 2:
- if (++task->data[1] > 1)
- {
- task->data[1] = 0;
- task->data[2]++;
- gSprites[task->data[15]].invisible = task->data[2] & 1;
- if (task->data[2] == 16)
- {
- FreeOamMatrix(gSprites[task->data[15]].oam.matrixNum);
- DestroySprite(&gSprites[task->data[15]]);
- task->data[0]++;
- }
- }
- break;
- case 3:
- DestroyAnimVisualTask(taskId);
- break;
- }
-}
-
-static void sub_81307B0(struct Sprite *sprite)
-{
- u8 battler;
-
- if (gBattleAnimArgs[0] == 0)
- battler = gBattleAnimAttacker;
- else
- battler = gBattleAnimTarget;
-
- sprite->oam.tileNum += 16;
- sprite->data[6] = gBattleAnimArgs[2];
- sprite->data[7] = gBattleAnimArgs[1] == 0 ? -1 : 1;
- sprite->pos1.y = GetBattlerSpriteCoord(battler, 3);
- if (gBattleAnimArgs[1] == 0)
- {
- sprite->oam.matrixNum |= 0x8;
- sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, 4) - 8;
- }
- else
- {
- sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, 5) + 8;
- }
-
- sprite->callback = sub_813085C;
-}
-
-static void sub_813085C(struct Sprite *sprite)
-{
- switch (sprite->data[0])
- {
- case 0:
- if (++sprite->data[1] > 1)
- {
- sprite->data[1] = 0;
- sprite->pos2.x += sprite->data[7];
- if (++sprite->data[2] == 12)
- sprite->data[0]++;
- }
- break;
- case 1:
- if (++sprite->data[1] == 8)
- {
- sprite->data[1] = 0;
- sprite->data[0]++;
- }
- break;
- case 2:
- sprite->pos2.x -= sprite->data[7] * 4;
- if (++sprite->data[1] == 6)
- {
- sprite->data[1] = 0;
- sprite->data[0]++;
- }
- break;
- case 3:
- sprite->pos2.x += sprite->data[7] * 3;
- if (++sprite->data[1] == 8)
- {
- if (--sprite->data[6])
- {
- sprite->data[1] = 0;
- sprite->data[0]--;
- }
- else
- {
- DestroyAnimSprite(sprite);
- }
- }
- break;
- }
-}
-
-void sub_8130918(u8 taskId)
-{
- if (gBattleAnimArgs[0] == 0)
- {
- DestroyAnimVisualTask(taskId);
- }
- else
- {
- gTasks[taskId].data[0] = gBattleAnimArgs[1];
- gTasks[taskId].data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
- PrepareAffineAnimInTaskData(&gTasks[taskId], gTasks[taskId].data[15], &gUnknown_084029DC);
- gTasks[taskId].func = sub_8130970;
- }
-}
-
-static void sub_8130970(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
-
- if (++task->data[1] > 1)
- {
- task->data[1] = 0;
- if (!(task->data[2] & 1))
- gSprites[task->data[15]].pos2.x = 2;
- else
- gSprites[task->data[15]].pos2.x = -2;
- }
-
- if (!RunAffineAnimFromTaskData(task))
- {
- gSprites[task->data[15]].pos2.x = 0;
- if (--task->data[0])
- {
- PrepareAffineAnimInTaskData(&gTasks[taskId], gTasks[taskId].data[15], &gUnknown_084029DC);
- task->data[1] = 0;
- task->data[2] = 0;
- }
- else
- {
- DestroyAnimVisualTask(taskId);
- }
- }
-}
-
-static void sub_8130A2C(struct Sprite *sprite)
-{
- if (gBattleAnimArgs[0] == 0)
- {
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 2);
- }
- else
- {
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 2);
- }
-
- if (sprite->pos1.y < 8)
- sprite->pos1.y = 8;
-
- sprite->data[0] = 0;
- sprite->data[1] = gBattleAnimArgs[1];
- sprite->data[2] = 0;
- sprite->data[3] = gBattleAnimArgs[2];
- sprite->callback = sub_8130A94;
-}
-
-static void sub_8130A94(struct Sprite *sprite)
-{
- if (++sprite->data[0] >= sprite->data[1])
- {
- sprite->data[0] = 0;
- sprite->data[2] = (sprite->data[2] + 1) & 1;
- sprite->invisible = sprite->data[2];
- if (sprite->data[2] && --sprite->data[3] == 0)
- DestroyAnimSprite(sprite);
- }
-}
-
-static void sub_8130AEC(struct Sprite *sprite)
-{
- if (gBattleAnimArgs[0] == 0)
- {
- sprite->oam.matrixNum |= 0x8;
- sprite->pos1.x = 100;
- sprite->data[7] = 1;
- }
- else
- {
- sprite->pos1.x = 140;
- sprite->data[7] = -1;
- }
-
- sprite->pos1.y = 56;
- sprite->callback = sub_8130B38;
-}
-
-static void sub_8130B38(struct Sprite *sprite)
-{
- switch (sprite->data[0])
- {
- case 0:
- sprite->pos1.y -= sprite->data[7] * 2;
- if (sprite->data[1] & 1)
- sprite->pos1.x -= sprite->data[7] * 2;
-
- if (++sprite->data[1] == 9)
- {
- sprite->data[1] = 0;
- sprite->data[0]++;
- }
- break;
- case 1:
- if (++sprite->data[1] == 4)
- {
- sprite->data[1] = 0;
- sprite->data[0]++;
- }
- break;
- case 2:
- sprite->data[1]++;
- sprite->pos1.y += sprite->data[7] * 3;
- sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
- if (sprite->data[1] == 12)
- {
- sprite->data[1] = 0;
- sprite->data[0]++;
- }
- break;
- case 3:
- if (++sprite->data[1] == 2)
- {
- sprite->data[1] = 0;
- sprite->data[0]++;
- }
- break;
- case 4:
- sprite->data[1]++;
- sprite->pos1.y -= sprite->data[7] * 3;
- sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
- if (sprite->data[1] == 12)
- sprite->data[0]++;
- break;
- case 5:
- sprite->data[1]++;
- sprite->pos1.y += sprite->data[7] * 3;
- sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
- if (sprite->data[1] == 15)
- sprite->oam.tileNum += 16;
-
- if (sprite->data[1] == 18)
- {
- sprite->data[1] = 0;
- sprite->data[0]++;
- }
- break;
- case 6:
- sprite->pos1.x += sprite->data[7] * 6;
- if (++sprite->data[1] == 9)
- {
- sprite->data[1] = 0;
- sprite->data[0]++;
- }
- break;
- case 7:
- sprite->pos1.x += sprite->data[7] * 2;
- if (++sprite->data[1] == 1)
- {
- sprite->data[1] = 0;
- sprite->data[0]++;
- }
- break;
- case 8:
- sprite->pos1.x -= sprite->data[7] * 3;
- if (++sprite->data[1] == 5)
- DestroyAnimSprite(sprite);
- break;
- }
-}
-
-void sub_8130D20(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
-
- task->data[15] = GetAnimBattlerSpriteId(0);
- if (!IsContest())
- {
- if (IsDoubleBattle() == TRUE)
- {
- int x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- int y = GetBattlerSpriteCoord(gBattleAnimAttacker ^ 2, 0);
- if (x > y)
- task->data[14] = 1;
- else
- task->data[14] = -1;
- }
- else
- {
- if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- task->data[14] = -1;
- else
- task->data[14] = 1;
- }
- }
- else
- {
- task->data[14] = 1;
- }
-
- task->func = sub_8130DBC;
-}
-
-static void sub_8130DBC(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
-
- switch (task->data[0])
- {
- case 0:
- if (++task->data[1] == 13)
- {
- task->data[1] = 0;
- task->data[0]++;
- }
- break;
- case 1:
- gSprites[task->data[15]].pos2.x -= task->data[14] * 3;
- if (++task->data[1] == 6)
- {
- task->data[1] = 0;
- task->data[0]++;
- }
- break;
- case 2:
- gSprites[task->data[15]].pos2.x += task->data[14] * 3;
- if (++task->data[1] == 6)
- {
- task->data[1] = 0;
- task->data[0]++;
- }
- break;
- case 3:
- if (++task->data[1] == 2)
- {
- task->data[1] = 0;
- if (task->data[2] == 0)
- {
- task->data[2]++;
- task->data[0] = 1;
- }
- else
- {
- task->data[0]++;
- }
- }
- break;
- case 4:
- gSprites[task->data[15]].pos2.x += task->data[14];
- if (++task->data[1] == 3)
- {
- task->data[1] = 0;
- task->data[0]++;
- }
- break;
- case 5:
- if (++task->data[1] == 6)
- {
- task->data[1] = 0;
- task->data[0]++;
- }
- break;
- case 6:
- gSprites[task->data[15]].pos2.x -= task->data[14] * 4;
- if (++task->data[1] == 5)
- {
- task->data[1] = 0;
- task->data[0]++;
- }
- break;
- case 7:
- gSprites[task->data[15]].pos2.x += task->data[14] * 4;
- if (++task->data[1] == 5)
- {
- task->data[1] = 0;
- task->data[0]++;
- }
- break;
- case 8:
- gSprites[task->data[15]].pos2.x = 0;
- DestroyAnimVisualTask(taskId);
- break;
- }
-}
-
-static void sub_8130F5C(struct Sprite *sprite)
-{
- if (gBattleAnimArgs[0] == 0)
- {
- InitAnimSpritePos(sprite, 1);
- sprite->data[7] = gBattleAnimAttacker;
- }
- else
- {
- sprite->data[7] = gBattleAnimTarget;
- }
-
- if (GetBattlerSide(sprite->data[7]) == B_SIDE_OPPONENT)
- sprite->oam.matrixNum = 8;
-
- sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]);
- sprite->oam.objMode = ST_OAM_OBJ_BLEND;
- sprite->callback = sub_8130FE0;
-}
-
-static void sub_8130FE0(struct Sprite *sprite)
-{
- u16 x, y;
-
- switch (sprite->data[5])
- {
- case 0:
- switch (sprite->data[6])
- {
- default:
- sprite->data[6] = 0;
- case 0:
- case 4:
- x = GetBattlerSpriteCoordAttr(sprite->data[7], 5) - 4;
- y = GetBattlerSpriteCoordAttr(sprite->data[7], 3) - 4;
- break;
- case 1:
- x = GetBattlerSpriteCoordAttr(sprite->data[7], 5) - 4;
- y = GetBattlerSpriteCoordAttr(sprite->data[7], 2) + 4;
- break;
- case 2:
- x = GetBattlerSpriteCoordAttr(sprite->data[7], 4) + 4;
- y = GetBattlerSpriteCoordAttr(sprite->data[7], 3) - 4;
- break;
- case 3:
- x = GetBattlerSpriteCoordAttr(sprite->data[7], 4) + 4;
- y = GetBattlerSpriteCoordAttr(sprite->data[7], 2) - 4;
- break;
- case 5:
- x = GetBattlerSpriteCoord(sprite->data[7], 2);
- y = GetBattlerSpriteCoord(sprite->data[7], 3);
- break;
- }
-
- if (sprite->data[6] == 4)
- sprite->data[0] = 24;
- else if (sprite->data[6] == 5)
- sprite->data[0] = 6;
- else
- sprite->data[0] = 12;
-
- sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = x;
- sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = y;
- InitAnimLinearTranslation(sprite);
- sprite->data[5]++;
- break;
- case 1:
- if (TranslateAnimLinear(sprite))
- {
- switch (sprite->data[6])
- {
- default:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
- sprite->data[0] = 0;
- sprite->data[5]++;
- sprite->data[6]++;
- break;
- case 4:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
- sprite->data[5] = 0;
- sprite->data[6]++;
- break;
- case 5:
- sprite->data[0] = 0;
- sprite->data[1] = 16;
- sprite->data[2] = 0;
- sprite->data[5] = 3;
- break;
- }
- }
- break;
- case 2:
- if (++sprite->data[0] == 4)
- sprite->data[5] = 0;
- break;
- case 3:
- if (!(sprite->data[0] & 1))
- sprite->data[1]--;
- else
- sprite->data[2]++;
-
- REG_BLDALPHA = (sprite->data[2] << 8) | sprite->data[1];
- if (++sprite->data[0] == 32)
- {
- sprite->invisible = 1;
- sprite->data[5]++;
- }
- break;
- case 4:
- DestroyAnimSprite(sprite);
- break;
- }
-}
-
-static void sub_81311E4(struct Sprite *sprite)
-{
- sprite->pos2.x = ((sprite->data[2] - sprite->data[0]) * sprite->data[5]) / sprite->data[4];
- sprite->pos2.y = ((sprite->data[3] - sprite->data[1]) * sprite->data[5]) / sprite->data[4];
- if (!(sprite->data[5] & 1))
- {
- CreateSprite(
- &gSpriteTemplate_8402500,
- sprite->pos1.x + sprite->pos2.x,
- sprite->pos1.y + sprite->pos2.y, 5);
- }
-
- if (sprite->data[5] == sprite->data[4])
- DestroyAnimSprite(sprite);
-
- sprite->data[5]++;
-}
-
-static void sub_8131264(struct Sprite *sprite)
-{
- GetBattlerSpriteCoord(gBattleAnimTarget, 2); // unused local variable
- GetBattlerSpriteCoord(gBattleAnimTarget, 3); // unused local variable
-
- if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER || IsContest())
- {
- sprite->data[0] = sprite->pos1.x - gBattleAnimArgs[0];
- sprite->data[2] = sprite->pos1.x - gBattleAnimArgs[2];
- }
- else
- {
- sprite->data[0] = sprite->pos1.x + gBattleAnimArgs[0];
- sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
- }
-
- sprite->data[1] = sprite->pos1.y + gBattleAnimArgs[1];
- sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[3];
- sprite->data[4] = gBattleAnimArgs[4];
- sprite->pos1.x = sprite->data[0];
- sprite->pos1.y = sprite->data[1];
- sprite->callback = sub_81311E4;
-}
-
-void sub_81312E4(u8 taskId)
-{
- int i;
- u8 spriteId = GetAnimBattlerSpriteId(0);
-
- if (gTasks[taskId].data[0] == 0)
- {
- PrepareBattlerSpriteForRotScale(spriteId, 0);
- gTasks[taskId].data[1] = 0x100;
- gTasks[taskId].data[2] = 0x100;
- gTasks[taskId].data[0]++;
- }
- else if (gTasks[taskId].data[0] == 1)
- {
- gTasks[taskId].data[1] += 0x60;
- gTasks[taskId].data[2] -= 0xD;
- obj_id_set_rotscale(spriteId, gTasks[taskId].data[1], gTasks[taskId].data[2], 0);
- if (++gTasks[taskId].data[3] == 9)
- {
- gTasks[taskId].data[3] = 0;
- sub_8078F40(spriteId);
- gSprites[spriteId].invisible = 1;
- gTasks[taskId].data[0]++;
- }
- }
- else
- {
- refresh_graphics_maybe(gBattleAnimAttacker, 0, spriteId);
- if (IsContest())
- {
- gSprites[gBankSpriteIds[gBattleAnimAttacker]].affineAnims = gSpriteAffineAnimTable_81E7C18;
- StartSpriteAffineAnim(&gSprites[gBankSpriteIds[gBattleAnimAttacker]], 0);
- }
-
- for (i = 0; i < 16; i++)
- gTasks[taskId].data[i] = 0;
-
- gTasks[taskId].func = sub_8131408;
- }
-}
-
-static void sub_8131408(u8 taskId)
-{
- u8 spriteId = GetAnimBattlerSpriteId(0);
-
- switch (gTasks[taskId].data[0])
- {
- case 0:
- gSprites[spriteId].pos2.y = -200;
- gSprites[spriteId].pos2.x = 200;
- gSprites[spriteId].invisible = 0;
- gTasks[taskId].data[10] = 0;
- gTasks[taskId].data[0]++;
- break;
- case 1:
- gTasks[taskId].data[10] += 112;
- gSprites[spriteId].pos2.y += gTasks[taskId].data[10] >> 8;
- if (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y >= -32)
- gSprites[spriteId].pos2.x = 0;
-
- if (gSprites[spriteId].pos2.y > 0)
- gSprites[spriteId].pos2.y = 0;
-
- if (gSprites[spriteId].pos2.y == 0)
- {
- PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER_NEG));
- gTasks[taskId].data[10] -= 0x800;
- gTasks[taskId].data[0]++;
- }
- break;
- case 2:
- gTasks[taskId].data[10] -= 112;
- if (gTasks[taskId].data[10] < 0)
- gTasks[taskId].data[10] = 0;
-
- gSprites[spriteId].pos2.y -= gTasks[taskId].data[10] >> 8;
- if (gTasks[taskId].data[10] == 0)
- gTasks[taskId].data[0]++;
- break;
- case 3:
- gTasks[taskId].data[10] += 112;
- gSprites[spriteId].pos2.y += gTasks[taskId].data[10] >> 8;
- if (gSprites[spriteId].pos2.y > 0)
- gSprites[spriteId].pos2.y = 0;
-
- if (gSprites[spriteId].pos2.y == 0)
- {
- PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER_NEG));
- DestroyAnimVisualTask(taskId);
- }
- break;
- }
-}
-
-static void sub_8131564(struct Sprite *sprite)
-{
- s16 y2;
-
- if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
- {
- sprite->subpriority = GetBattlerSubpriority(gBattleAnimTarget) - 2;
- y2 = -144;
- }
- else
- {
- sprite->subpriority = GetBattlerSubpriority(gBattleAnimTarget) + 2;
- y2 = -96;
- }
-
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
- sprite->pos2.y = y2;
- sprite->callback = sub_81315C8;
-}
-
-static void sub_81315C8(struct Sprite *sprite)
-{
- switch (sprite->data[0])
- {
- case 0:
- sprite->pos2.y += 10;
- if (sprite->pos2.y >= 0)
- {
- PlaySE12WithPanning(SE_W166, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
- sprite->pos2.y = 0;
- sprite->data[0]++;
- }
- break;
- case 1:
- sprite->data[1] += 4;
- sprite->pos2.y = -(gSineTable[sprite->data[1]] >> 3);
- if (sprite->data[1] > 127)
- {
- PlaySE12WithPanning(SE_W166, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
- sprite->data[1] = 0;
- sprite->pos2.y = 0;
- sprite->data[0]++;
- }
- break;
- case 2:
- sprite->data[1] += 6;
- sprite->pos2.y = -(gSineTable[sprite->data[1]] >> 4);
- if (sprite->data[1] > 127)
- {
- sprite->data[1] = 0;
- sprite->pos2.y = 0;
- sprite->data[0]++;
- }
- break;
- case 3:
- if (++sprite->data[1] > 8)
- {
- PlaySE12WithPanning(SE_W043, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
- sprite->data[1] = 0;
- sprite->data[0]++;
- }
- break;
- case 4:
- if (++sprite->data[1] > 8)
- {
- sprite->data[1] = 0;
- sprite->data[2]++;
- sprite->invisible = sprite->data[2] & 1;
- if (sprite->data[2] == 7)
- DestroyAnimSprite(sprite);
- }
- break;
- }
-}
-
-void sub_81316F8(u8 taskId)
-{
- s16 spriteId1, spriteId2;
-
- if (IsContest())
- {
- DestroyAnimVisualTask(taskId);
- return;
- }
-
- spriteId1 = duplicate_obj_of_side_rel2move_in_transparent_mode(1);
- if (spriteId1 < 0)
- {
- DestroyAnimVisualTask(taskId);
- return;
- }
-
- spriteId2 = duplicate_obj_of_side_rel2move_in_transparent_mode(1);
- if (spriteId2 < 0)
- {
- obj_delete_but_dont_free_vram(&gSprites[spriteId1]);
- DestroyAnimVisualTask(taskId);
- return;
- }
-
- gSprites[spriteId2].pos2.x += 24;
- gSprites[spriteId1].pos2.x -= 24;
- gSprites[spriteId2].data[0] = 0;
- gSprites[spriteId1].data[0] = 0;
- gSprites[spriteId2].data[1] = 0;
- gSprites[spriteId1].data[1] = 0;
- gSprites[spriteId2].data[2] = 0;
- gSprites[spriteId1].data[2] = 0;
- gSprites[spriteId2].data[3] = 16;
- gSprites[spriteId1].data[3] = -16;
- gSprites[spriteId2].data[4] = 0;
- gSprites[spriteId1].data[4] = 128;
- gSprites[spriteId2].data[5] = 24;
- gSprites[spriteId1].data[5] = 24;
- gSprites[spriteId2].data[6] = taskId;
- gSprites[spriteId1].data[6] = taskId;
- gSprites[spriteId2].data[7] = 0;
- gSprites[spriteId1].data[7] = 0;
- gTasks[taskId].data[0] = 2;
- gSprites[spriteId2].invisible = 0;
- gSprites[spriteId1].invisible = 1;
- gSprites[spriteId2].oam.objMode = ST_OAM_OBJ_NORMAL;
- gSprites[spriteId1].oam.objMode = ST_OAM_OBJ_NORMAL;
- gSprites[spriteId2].callback = sub_8131838;
- gSprites[spriteId1].callback = sub_8131838;
- gTasks[taskId].func = sub_8131810;
-}
-
-static void sub_8131810(u8 taskId)
-{
- if (gTasks[taskId].data[0] == 0)
- DestroyAnimVisualTask(taskId);
-}
-
-static void sub_8131838(struct Sprite *sprite)
-{
- if (++sprite->data[1] > 1)
- {
- sprite->data[1] = 0;
- sprite->invisible ^= 1;
- }
-
- sprite->data[4] = (sprite->data[4] + sprite->data[3]) & 0xFF;
- sprite->pos2.x = Cos(sprite->data[4], sprite->data[5]);
- switch (sprite->data[0])
- {
- case 0:
- if (++sprite->data[2] == 60)
- {
- sprite->data[2] = 0;
- sprite->data[0]++;
- }
- break;
- case 1:
- if (++sprite->data[2] > 0)
- {
- sprite->data[2] = 0;
- sprite->data[5] -= 2;
- if (sprite->data[5] < 0)
- {
- gTasks[sprite->data[6]].data[sprite->data[7]]--;
- obj_delete_but_dont_free_vram(sprite);
- }
- }
- break;
- }
-}
-
-void AnimTask_GetReturnPowerLevel(u8 taskId)
-{
- gBattleAnimArgs[7] = 0;
- if (gAnimFriendship < 60)
- gBattleAnimArgs[7] = 0;
- if (gAnimFriendship > 60 && gAnimFriendship < 92)
- gBattleAnimArgs[7] = 1;
- if (gAnimFriendship > 91 && gAnimFriendship < 201)
- gBattleAnimArgs[7] = 2;
- if (gAnimFriendship > 200)
- gBattleAnimArgs[7] = 3;
-
- DestroyAnimVisualTask(taskId);
-}
-
-#ifdef NONMATCHING
-// Makes the mon run out of screen, run past the opposing mon, and return to its original position.
-// No args.
-void AnimTask_SnatchOpposingMonMove(u8 taskId)
-{
- u8 spriteId, spriteId2;
- u32 personality;
- u32 otId;
- u16 species;
- u8 subpriority;
- u8 isBackPic;
- s16 x;
-
- switch (gTasks[taskId].data[0])
- {
- case 0:
- spriteId = GetAnimBattlerSpriteId(ANIM_BATTLER_ATTACKER);
- gTasks[taskId].data[1] += 0x800;
- if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- gSprites[spriteId].pos2.x += (gTasks[taskId].data[1] >> 8);
- else
- gSprites[spriteId].pos2.x -= (gTasks[taskId].data[1] >> 8);
-
- gTasks[taskId].data[1] &= 0xFF;
- x = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
- if ((u16)(x + 32) > 304)
- {
- gTasks[taskId].data[1] = 0;
- gTasks[taskId].data[0]++;
- }
- break;
- case 1:
- if (IsContest())
- {
- personality = eWRAM_19348Struct->personality;
- otId = eWRAM_19348Struct->otId;
- species = eWRAM_19348Struct->species;
- subpriority = GetBattlerSubpriority(gBattleAnimAttacker);
- isBackPic = 0;
- x = -32;
- }
- else
- {
- if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- {
- personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY);
- otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID);
- if (eTransformStatuses[gBattleAnimTarget].species == SPECIES_NONE)
- species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
- else
- species = eTransformStatuses[gBattleAnimTarget].species;
-
- subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_BATTLER_TARGET)].subpriority + 1;
- isBackPic = 0;
- x = 272;
- }
- else
- {
- personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY);
- otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID);
- if (eTransformStatuses[gBattleAnimTarget].species == SPECIES_NONE)
- species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
- else
- species = eTransformStatuses[gBattleAnimTarget].species;
-
- subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_BATTLER_TARGET)].subpriority - 1;
- isBackPic = 1;
- x = -32;
- }
- }
-
- spriteId2 = sub_8079F44(species, isBackPic, 0, x, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y), subpriority, personality, otId);
- if (eTransformStatuses[gBattleAnimTarget].species != SPECIES_NONE)
- BlendPalette((gSprites[spriteId2].oam.paletteNum * 16) | 0x100, 16, 6, RGB_WHITE);
-
- gTasks[taskId].data[15] = spriteId2;
- gTasks[taskId].data[0]++;
- break;
- case 2:
- spriteId2 = gTasks[taskId].data[15];
- gTasks[taskId].data[1] += 0x800;
- if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- gSprites[spriteId2].pos2.x -= (gTasks[taskId].data[1] >> 8);
- else
- gSprites[spriteId2].pos2.x += (gTasks[taskId].data[1] >> 8);
-
- gTasks[taskId].data[1] &= 0xFF;
- x = gSprites[spriteId2].pos1.x + gSprites[spriteId2].pos2.x;
- if (gTasks[taskId].data[14] == 0)
- {
- if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- {
- if (x < GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X))
- {
- gTasks[taskId].data[14]++;
- gBattleAnimArgs[7] = 0xFFFF;
- }
- }
- else
- {
- if (x > GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X))
- {
- gTasks[taskId].data[14]++;
- gBattleAnimArgs[7] = 0xFFFF;
- }
- }
- }
-
- if ((u16)(x + 32) > 304)
- {
- gTasks[taskId].data[1] = 0;
- gTasks[taskId].data[0]++;
- }
- break;
- case 3:
- spriteId = GetAnimBattlerSpriteId(ANIM_BATTLER_ATTACKER);
- spriteId2 = gTasks[taskId].data[15];
- DestroySpriteAndFreeResources_(&gSprites[spriteId2]);
- if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- gSprites[spriteId].pos2.x = -gSprites[spriteId].pos1.x - 32;
- else
- gSprites[spriteId].pos2.x = 272 - gSprites[spriteId].pos1.x;
-
- gTasks[taskId].data[0]++;
- break;
- case 4:
- spriteId = GetAnimBattlerSpriteId(ANIM_BATTLER_ATTACKER);
- gTasks[taskId].data[1] += 0x800;
- if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- {
- gSprites[spriteId].pos2.x += (gTasks[taskId].data[1] >> 8);
- if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x >= GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X))
- gSprites[spriteId].pos2.x = 0;
- }
- else
- {
- gSprites[spriteId].pos2.x -= (gTasks[taskId].data[1] >> 8);
- if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x <= GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X))
- gSprites[spriteId].pos2.x = 0;
- }
-
- gTasks[taskId].data[1] = (u8)gTasks[taskId].data[1];
- if (gSprites[spriteId].pos2.x == 0)
- DestroyAnimVisualTask(taskId);
- break;
- }
-}
-#else
-NAKED
-void AnimTask_SnatchOpposingMonMove(u8 taskId)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x14\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
- ldr r1, _08131974 @ =gTasks\n\
- lsls r0, 2\n\
- add r0, r8\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- movs r1, 0x8\n\
- ldrsh r0, [r0, r1]\n\
- cmp r0, 0x4\n\
- bls _0813196A\n\
- b _08131EA0\n\
-_0813196A:\n\
- lsls r0, 2\n\
- ldr r1, _08131978 @ =_0813197C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_08131974: .4byte gTasks\n\
-_08131978: .4byte _0813197C\n\
- .align 2, 0\n\
-_0813197C:\n\
- .4byte _08131990\n\
- .4byte _08131A44\n\
- .4byte _08131C20\n\
- .4byte _08131D40\n\
- .4byte _08131DC4\n\
-_08131990:\n\
- movs r0, 0\n\
- bl GetAnimBattlerSpriteId\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- ldr r1, _081319DC @ =gTasks\n\
- mov r2, r8\n\
- lsls r4, r2, 2\n\
- adds r0, r4, r2\n\
- lsls r0, 3\n\
- adds r6, r0, r1\n\
- movs r3, 0x80\n\
- lsls r3, 4\n\
- adds r0, r3, 0\n\
- ldrh r1, [r6, 0xA]\n\
- adds r0, r1\n\
- strh r0, [r6, 0xA]\n\
- ldr r0, _081319E0 @ =gBattleAnimAttacker\n\
- ldrb r0, [r0]\n\
- bl GetBattlerSide\n\
- lsls r0, 24\n\
- mov r9, r4\n\
- cmp r0, 0\n\
- bne _081319E8\n\
- ldr r2, _081319E4 @ =gSprites\n\
- lsls r3, r7, 4\n\
- adds r1, r3, r7\n\
- lsls r1, 2\n\
- adds r1, r2\n\
- ldrh r0, [r6, 0xA]\n\
- lsls r0, 16\n\
- asrs r0, 24\n\
- ldrh r4, [r1, 0x24]\n\
- adds r0, r4\n\
- strh r0, [r1, 0x24]\n\
- b _08131A02\n\
- .align 2, 0\n\
-_081319DC: .4byte gTasks\n\
-_081319E0: .4byte gBattleAnimAttacker\n\
-_081319E4: .4byte gSprites\n\
-_081319E8:\n\
- ldr r3, _08131A3C @ =gSprites\n\
- lsls r4, r7, 4\n\
- adds r2, r4, r7\n\
- lsls r2, 2\n\
- adds r2, r3\n\
- ldrh r1, [r6, 0xA]\n\
- lsls r1, 16\n\
- asrs r1, 24\n\
- ldrh r0, [r2, 0x24]\n\
- subs r0, r1\n\
- strh r0, [r2, 0x24]\n\
- adds r2, r3, 0\n\
- adds r3, r4, 0\n\
-_08131A02:\n\
- ldr r1, _08131A40 @ =gTasks\n\
- mov r0, r9\n\
- add r0, r8\n\
- lsls r0, 3\n\
- adds r4, r0, r1\n\
- ldrb r0, [r4, 0xA]\n\
- strh r0, [r4, 0xA]\n\
- adds r1, r3, r7\n\
- lsls r1, 2\n\
- adds r1, r2\n\
- ldrh r0, [r1, 0x24]\n\
- ldrh r1, [r1, 0x20]\n\
- adds r0, r1\n\
- lsls r0, 16\n\
- movs r1, 0x80\n\
- lsls r1, 14\n\
- adds r0, r1\n\
- movs r1, 0x98\n\
- lsls r1, 17\n\
- cmp r0, r1\n\
- bhi _08131A2E\n\
- b _08131EA0\n\
-_08131A2E:\n\
- movs r0, 0\n\
- strh r0, [r4, 0xA]\n\
- ldrh r0, [r4, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x8]\n\
- b _08131EA0\n\
- .align 2, 0\n\
-_08131A3C: .4byte gSprites\n\
-_08131A40: .4byte gTasks\n\
-_08131A44:\n\
- bl IsContest\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08131A74\n\
- ldr r0, _08131A6C @ =gSharedMem + 0x19348\n\
- ldr r2, [r0, 0x8]\n\
- mov r10, r2\n\
- ldr r3, [r0, 0xC]\n\
- mov r9, r3\n\
- ldrh r5, [r0]\n\
- ldr r0, _08131A70 @ =gBattleAnimAttacker\n\
- ldrb r0, [r0]\n\
- bl GetBattlerSubpriority\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- movs r7, 0\n\
- b _08131B92\n\
- .align 2, 0\n\
-_08131A6C: .4byte gSharedMem + 0x19348\n\
-_08131A70: .4byte gBattleAnimAttacker\n\
-_08131A74:\n\
- ldr r4, _08131AD4 @ =gBattleAnimAttacker\n\
- ldrb r0, [r4]\n\
- bl GetBattlerSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _08131B10\n\
- ldr r7, _08131AD8 @ =gBattlerPartyIndexes\n\
- ldrb r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r7\n\
- ldrh r0, [r0]\n\
- movs r6, 0x64\n\
- muls r0, r6\n\
- ldr r5, _08131ADC @ =gPlayerParty\n\
- adds r0, r5\n\
- movs r1, 0\n\
- bl GetMonData\n\
- mov r10, r0\n\
- ldrb r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r7\n\
- ldrh r0, [r0]\n\
- muls r0, r6\n\
- adds r0, r5\n\
- movs r1, 0x1\n\
- bl GetMonData\n\
- mov r9, r0\n\
- ldrb r2, [r4]\n\
- lsls r1, r2, 2\n\
- ldr r0, _08131AE0 @ =gSharedMem + 0x17800\n\
- adds r1, r0\n\
- ldrh r0, [r1, 0x2]\n\
- cmp r0, 0\n\
- bne _08131AE4\n\
- lsls r0, r2, 1\n\
- adds r0, r7\n\
- ldrh r0, [r0]\n\
- muls r0, r6\n\
- adds r0, r5\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- b _08131AE6\n\
- .align 2, 0\n\
-_08131AD4: .4byte gBattleAnimAttacker\n\
-_08131AD8: .4byte gBattlerPartyIndexes\n\
-_08131ADC: .4byte gPlayerParty\n\
-_08131AE0: .4byte gSharedMem + 0x17800\n\
-_08131AE4:\n\
- ldrh r5, [r1, 0x2]\n\
-_08131AE6:\n\
- movs r0, 0x1\n\
- bl GetAnimBattlerSpriteId\n\
- ldr r2, _08131B0C @ =gSprites\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r1, r0, 4\n\
- adds r1, r0\n\
- lsls r1, 2\n\
- adds r1, r2\n\
- adds r1, 0x43\n\
- ldrb r0, [r1]\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- movs r7, 0\n\
- movs r6, 0x88\n\
- lsls r6, 1\n\
- b _08131B94\n\
- .align 2, 0\n\
-_08131B0C: .4byte gSprites\n\
-_08131B10:\n\
- ldr r7, _08131B64 @ =gBattlerPartyIndexes\n\
- ldrb r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r7\n\
- ldrh r0, [r0]\n\
- movs r6, 0x64\n\
- muls r0, r6\n\
- ldr r5, _08131B68 @ =gEnemyParty\n\
- adds r0, r5\n\
- movs r1, 0\n\
- bl GetMonData\n\
- mov r10, r0\n\
- ldrb r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r7\n\
- ldrh r0, [r0]\n\
- muls r0, r6\n\
- adds r0, r5\n\
- movs r1, 0x1\n\
- bl GetMonData\n\
- mov r9, r0\n\
- ldrb r2, [r4]\n\
- lsls r1, r2, 2\n\
- ldr r0, _08131B6C @ =gSharedMem + 0x17800\n\
- adds r1, r0\n\
- ldrh r0, [r1, 0x2]\n\
- cmp r0, 0\n\
- bne _08131B70\n\
- lsls r0, r2, 1\n\
- adds r0, r7\n\
- ldrh r0, [r0]\n\
- muls r0, r6\n\
- adds r0, r5\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- b _08131B72\n\
- .align 2, 0\n\
-_08131B64: .4byte gBattlerPartyIndexes\n\
-_08131B68: .4byte gEnemyParty\n\
-_08131B6C: .4byte gSharedMem + 0x17800\n\
-_08131B70:\n\
- ldrh r5, [r1, 0x2]\n\
-_08131B72:\n\
- movs r0, 0x1\n\
- bl GetAnimBattlerSpriteId\n\
- ldr r2, _08131C04 @ =gSprites\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r1, r0, 4\n\
- adds r1, r0\n\
- lsls r1, 2\n\
- adds r1, r2\n\
- adds r1, 0x43\n\
- ldrb r0, [r1]\n\
- subs r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- movs r7, 0x1\n\
-_08131B92:\n\
- ldr r6, _08131C08 @ =0x0000ffe0\n\
-_08131B94:\n\
- ldr r0, _08131C0C @ =gBattleAnimTarget\n\
- ldrb r0, [r0]\n\
- movs r1, 0x1\n\
- bl GetBattlerSpriteCoord\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r3, r6, 16\n\
- asrs r3, 16\n\
- str r0, [sp]\n\
- str r4, [sp, 0x4]\n\
- mov r4, r10\n\
- str r4, [sp, 0x8]\n\
- mov r0, r9\n\
- str r0, [sp, 0xC]\n\
- adds r0, r5, 0\n\
- adds r1, r7, 0\n\
- movs r2, 0\n\
- bl sub_8079F44\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- ldr r0, _08131C10 @ =gBattleAnimAttacker\n\
- ldrb r0, [r0]\n\
- lsls r0, 2\n\
- ldr r1, _08131C14 @ =gSharedMem + 0x17800\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x2]\n\
- cmp r0, 0\n\
- beq _08131BF2\n\
- ldr r1, _08131C04 @ =gSprites\n\
- lsls r0, r5, 4\n\
- adds r0, r5\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x5]\n\
- lsrs r0, 4\n\
- lsls r0, 4\n\
- movs r2, 0x80\n\
- lsls r2, 1\n\
- adds r1, r2, 0\n\
- orrs r0, r1\n\
- ldr r3, _08131C18 @ =0x00007fff\n\
- movs r1, 0x10\n\
- movs r2, 0x6\n\
- bl BlendPalette\n\
-_08131BF2:\n\
- ldr r0, _08131C1C @ =gTasks\n\
- mov r3, r8\n\
- lsls r1, r3, 2\n\
- add r1, r8\n\
- lsls r1, 3\n\
- adds r1, r0\n\
- strh r5, [r1, 0x26]\n\
- b _08131DB6\n\
- .align 2, 0\n\
-_08131C04: .4byte gSprites\n\
-_08131C08: .4byte 0x0000ffe0\n\
-_08131C0C: .4byte gBattleAnimTarget\n\
-_08131C10: .4byte gBattleAnimAttacker\n\
-_08131C14: .4byte gSharedMem + 0x17800\n\
-_08131C18: .4byte 0x00007fff\n\
-_08131C1C: .4byte gTasks\n\
-_08131C20:\n\
- ldr r1, _08131C6C @ =gTasks\n\
- mov r0, r8\n\
- lsls r4, r0, 2\n\
- adds r0, r4, r0\n\
- lsls r0, 3\n\
- adds r6, r0, r1\n\
- ldrh r0, [r6, 0x26]\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- movs r1, 0x80\n\
- lsls r1, 4\n\
- adds r0, r1, 0\n\
- ldrh r2, [r6, 0xA]\n\
- adds r0, r2\n\
- strh r0, [r6, 0xA]\n\
- ldr r0, _08131C70 @ =gBattleAnimAttacker\n\
- ldrb r0, [r0]\n\
- bl GetBattlerSide\n\
- lsls r0, 24\n\
- mov r9, r4\n\
- cmp r0, 0\n\
- bne _08131C78\n\
- ldr r3, _08131C74 @ =gSprites\n\
- lsls r4, r5, 4\n\
- adds r2, r4, r5\n\
- lsls r2, 2\n\
- adds r2, r3\n\
- ldrh r1, [r6, 0xA]\n\
- lsls r1, 16\n\
- asrs r1, 24\n\
- ldrh r0, [r2, 0x24]\n\
- subs r0, r1\n\
- strh r0, [r2, 0x24]\n\
- adds r2, r3, 0\n\
- adds r3, r4, 0\n\
- b _08131C8E\n\
- .align 2, 0\n\
-_08131C6C: .4byte gTasks\n\
-_08131C70: .4byte gBattleAnimAttacker\n\
-_08131C74: .4byte gSprites\n\
-_08131C78:\n\
- ldr r2, _08131CDC @ =gSprites\n\
- lsls r3, r5, 4\n\
- adds r1, r3, r5\n\
- lsls r1, 2\n\
- adds r1, r2\n\
- ldrh r0, [r6, 0xA]\n\
- lsls r0, 16\n\
- asrs r0, 24\n\
- ldrh r4, [r1, 0x24]\n\
- adds r0, r4\n\
- strh r0, [r1, 0x24]\n\
-_08131C8E:\n\
- ldr r1, _08131CE0 @ =gTasks\n\
- mov r0, r9\n\
- add r0, r8\n\
- lsls r0, 3\n\
- adds r6, r0, r1\n\
- ldrb r0, [r6, 0xA]\n\
- strh r0, [r6, 0xA]\n\
- adds r1, r3, r5\n\
- lsls r1, 2\n\
- adds r1, r2\n\
- ldrh r0, [r1, 0x24]\n\
- ldrh r1, [r1, 0x20]\n\
- adds r0, r1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- movs r1, 0x24\n\
- ldrsh r0, [r6, r1]\n\
- cmp r0, 0\n\
- bne _08131D0E\n\
- ldr r0, _08131CE4 @ =gBattleAnimAttacker\n\
- ldrb r0, [r0]\n\
- bl GetBattlerSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _08131CEC\n\
- lsls r4, r5, 16\n\
- asrs r4, 16\n\
- ldr r0, _08131CE8 @ =gBattleAnimTarget\n\
- ldrb r0, [r0]\n\
- movs r1, 0\n\
- bl GetBattlerSpriteCoord\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r4, r0\n\
- bge _08131D0E\n\
- b _08131D02\n\
- .align 2, 0\n\
-_08131CDC: .4byte gSprites\n\
-_08131CE0: .4byte gTasks\n\
-_08131CE4: .4byte gBattleAnimAttacker\n\
-_08131CE8: .4byte gBattleAnimTarget\n\
-_08131CEC:\n\
- lsls r4, r5, 16\n\
- asrs r4, 16\n\
- ldr r0, _08131D30 @ =gBattleAnimTarget\n\
- ldrb r0, [r0]\n\
- movs r1, 0\n\
- bl GetBattlerSpriteCoord\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r4, r0\n\
- ble _08131D0E\n\
-_08131D02:\n\
- ldrh r0, [r6, 0x24]\n\
- adds r0, 0x1\n\
- strh r0, [r6, 0x24]\n\
- ldr r1, _08131D34 @ =gBattleAnimArgs\n\
- ldr r0, _08131D38 @ =0x0000ffff\n\
- strh r0, [r1, 0xE]\n\
-_08131D0E:\n\
- lsls r0, r5, 16\n\
- movs r2, 0x80\n\
- lsls r2, 14\n\
- adds r0, r2\n\
- movs r1, 0x98\n\
- lsls r1, 17\n\
- cmp r0, r1\n\
- bhi _08131D20\n\
- b _08131EA0\n\
-_08131D20:\n\
- ldr r0, _08131D3C @ =gTasks\n\
- mov r1, r9\n\
- add r1, r8\n\
- lsls r1, 3\n\
- adds r1, r0\n\
- movs r0, 0\n\
- strh r0, [r1, 0xA]\n\
- b _08131DB6\n\
- .align 2, 0\n\
-_08131D30: .4byte gBattleAnimTarget\n\
-_08131D34: .4byte gBattleAnimArgs\n\
-_08131D38: .4byte 0x0000ffff\n\
-_08131D3C: .4byte gTasks\n\
-_08131D40:\n\
- movs r0, 0\n\
- bl GetAnimBattlerSpriteId\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- ldr r1, _08131D8C @ =gTasks\n\
- mov r3, r8\n\
- lsls r4, r3, 2\n\
- adds r0, r4, r3\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x26]\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- lsls r0, r5, 4\n\
- adds r0, r5\n\
- lsls r0, 2\n\
- ldr r5, _08131D90 @ =gSprites\n\
- adds r0, r5\n\
- bl DestroySpriteAndFreeResources_\n\
- ldr r0, _08131D94 @ =gBattleAnimAttacker\n\
- ldrb r0, [r0]\n\
- bl GetBattlerSide\n\
- lsls r0, 24\n\
- mov r9, r4\n\
- cmp r0, 0\n\
- bne _08131D98\n\
- lsls r1, r7, 4\n\
- adds r1, r7\n\
- lsls r1, 2\n\
- adds r1, r5\n\
- ldrh r0, [r1, 0x20]\n\
- negs r0, r0\n\
- subs r0, 0x20\n\
- strh r0, [r1, 0x24]\n\
- b _08131DAC\n\
- .align 2, 0\n\
-_08131D8C: .4byte gTasks\n\
-_08131D90: .4byte gSprites\n\
-_08131D94: .4byte gBattleAnimAttacker\n\
-_08131D98:\n\
- lsls r0, r7, 4\n\
- adds r0, r7\n\
- lsls r0, 2\n\
- adds r0, r5\n\
- ldrh r2, [r0, 0x20]\n\
- movs r4, 0x88\n\
- lsls r4, 1\n\
- adds r1, r4, 0\n\
- subs r1, r2\n\
- strh r1, [r0, 0x24]\n\
-_08131DAC:\n\
- ldr r0, _08131DC0 @ =gTasks\n\
- mov r1, r9\n\
- add r1, r8\n\
- lsls r1, 3\n\
- adds r1, r0\n\
-_08131DB6:\n\
- ldrh r0, [r1, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r1, 0x8]\n\
- b _08131EA0\n\
- .align 2, 0\n\
-_08131DC0: .4byte gTasks\n\
-_08131DC4:\n\
- movs r0, 0\n\
- bl GetAnimBattlerSpriteId\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- ldr r1, _08131E38 @ =gTasks\n\
- mov r0, r8\n\
- lsls r4, r0, 2\n\
- adds r0, r4, r0\n\
- lsls r0, 3\n\
- adds r2, r0, r1\n\
- movs r1, 0x80\n\
- lsls r1, 4\n\
- adds r0, r1, 0\n\
- ldrh r3, [r2, 0xA]\n\
- adds r0, r3\n\
- strh r0, [r2, 0xA]\n\
- ldr r0, _08131E3C @ =gBattleAnimAttacker\n\
- mov r10, r0\n\
- ldrb r0, [r0]\n\
- str r2, [sp, 0x10]\n\
- bl GetBattlerSide\n\
- lsls r0, 24\n\
- mov r9, r4\n\
- ldr r2, [sp, 0x10]\n\
- cmp r0, 0\n\
- bne _08131E44\n\
- ldr r1, _08131E40 @ =gSprites\n\
- lsls r5, r7, 4\n\
- adds r0, r5, r7\n\
- lsls r0, 2\n\
- adds r6, r0, r1\n\
- ldrh r0, [r2, 0xA]\n\
- lsls r0, 16\n\
- asrs r0, 24\n\
- ldrh r1, [r6, 0x24]\n\
- adds r0, r1\n\
- strh r0, [r6, 0x24]\n\
- movs r2, 0x24\n\
- ldrsh r4, [r6, r2]\n\
- movs r3, 0x20\n\
- ldrsh r0, [r6, r3]\n\
- adds r4, r0\n\
- mov r1, r10\n\
- ldrb r0, [r1]\n\
- movs r1, 0\n\
- bl GetBattlerSpriteCoord\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- adds r3, r5, 0\n\
- cmp r4, r0\n\
- blt _08131E7C\n\
- movs r2, 0\n\
- strh r2, [r6, 0x24]\n\
- b _08131E7C\n\
- .align 2, 0\n\
-_08131E38: .4byte gTasks\n\
-_08131E3C: .4byte gBattleAnimAttacker\n\
-_08131E40: .4byte gSprites\n\
-_08131E44:\n\
- ldr r1, _08131EB0 @ =gSprites\n\
- lsls r5, r7, 4\n\
- adds r0, r5, r7\n\
- lsls r0, 2\n\
- adds r6, r0, r1\n\
- ldrh r1, [r2, 0xA]\n\
- lsls r1, 16\n\
- asrs r1, 24\n\
- ldrh r0, [r6, 0x24]\n\
- subs r0, r1\n\
- strh r0, [r6, 0x24]\n\
- movs r3, 0x24\n\
- ldrsh r4, [r6, r3]\n\
- movs r1, 0x20\n\
- ldrsh r0, [r6, r1]\n\
- adds r4, r0\n\
- mov r2, r10\n\
- ldrb r0, [r2]\n\
- movs r1, 0\n\
- bl GetBattlerSpriteCoord\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- adds r3, r5, 0\n\
- cmp r4, r0\n\
- bgt _08131E7C\n\
- movs r4, 0\n\
- strh r4, [r6, 0x24]\n\
-_08131E7C:\n\
- ldr r1, _08131EB4 @ =gTasks\n\
- mov r0, r9\n\
- add r0, r8\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0xA]\n\
- strh r1, [r0, 0xA]\n\
- ldr r1, _08131EB0 @ =gSprites\n\
- adds r0, r3, r7\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- movs r1, 0x24\n\
- ldrsh r0, [r0, r1]\n\
- cmp r0, 0\n\
- bne _08131EA0\n\
- mov r0, r8\n\
- bl DestroyAnimVisualTask\n\
-_08131EA0:\n\
- add sp, 0x14\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08131EB0: .4byte gSprites\n\
-_08131EB4: .4byte gTasks\n\
- .syntax divided");
-}
-#endif // NONMATCHING
-
-void sub_8131EB8(struct Sprite *sprite)
-{
- switch (sprite->data[7])
- {
- case 0:
- if (gBattleAnimArgs[7] == -1)
- {
- PlaySE12WithPanning(SE_W233, BattleAnimAdjustPanning(63));
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 16;
- sprite->data[0] = -32;
- sprite->data[7]++;
- sprite->invisible = 0;
- if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT && !IsContest())
- sprite->subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_BATTLER_TARGET)].subpriority - 1;
- }
- else
- {
- sprite->invisible = 1;
- }
- break;
- case 1:
- sprite->pos2.y = Sin(sprite->data[1], sprite->data[0]);
- sprite->data[1] += 5;
- if (sprite->data[1] > 0x7F)
- {
- sprite->data[0] = sprite->data[0] / 2;
- sprite->data[3]++;
- sprite->data[1] -= 0x7F;
- }
-
- sprite->data[2] += 0x100;
- if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- sprite->pos2.x -= (sprite->data[2] >> 8);
- else
- sprite->pos2.x += (sprite->data[2] >> 8);
-
- sprite->data[2] &= 0xFF;
- if (sprite->data[3] == 2)
- DestroyAnimSprite(sprite);
- break;
- }
-}
-
-// Quickly moves the mon towards its partner and back.
-// No args.
-void AnimTask_SnatchPartnerMove(u8 taskId)
-{
- s16 attackerX, targetX;
- u8 spriteId;
-
- switch (gTasks[taskId].data[15])
- {
- case 0:
- attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
- targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
- gTasks[taskId].data[0] = 6;
- if (attackerX > targetX)
- gTasks[taskId].data[0] *= -1;
-
- gTasks[taskId].data[1] = attackerX;
- gTasks[taskId].data[2] = targetX;
- gTasks[taskId].data[15]++;
- break;
- case 1:
- spriteId = gBankSpriteIds[gBattleAnimAttacker];
- gSprites[spriteId].pos2.x += gTasks[taskId].data[0];
- if (gTasks[taskId].data[0] > 0)
- {
- if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x >= gTasks[taskId].data[2])
- gTasks[taskId].data[15]++;
- }
- else
- {
- if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x <= gTasks[taskId].data[2])
- gTasks[taskId].data[15]++;
- }
- break;
- case 2:
- gTasks[taskId].data[0] *= -1;
- gTasks[taskId].data[15]++;
- break;
- case 3:
- spriteId = gBankSpriteIds[gBattleAnimAttacker];
- gSprites[spriteId].pos2.x += gTasks[taskId].data[0];
- if (gTasks[taskId].data[0] < 0)
- {
- if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x <= gTasks[taskId].data[1])
- gTasks[taskId].data[15]++;
- }
- else
- {
- if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x >= gTasks[taskId].data[1])
- gTasks[taskId].data[15]++;
- }
- break;
- case 4:
- default:
- spriteId = gBankSpriteIds[gBattleAnimAttacker];
- gSprites[spriteId].pos2.x = 0;
- DestroyAnimVisualTask(taskId);
- break;
- }
-}
-
-// Moves the mon's sprite back and forth in an unpredictable swaying motion.
-// No args.
-void AnimTask_TeeterDanceMovement(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
- task->data[3] = GetAnimBattlerSpriteId(ANIM_BATTLER_ATTACKER);
- task->data[4] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : -1;
- task->data[6] = gSprites[task->data[3]].pos1.y;
- task->data[5] = gSprites[task->data[3]].pos1.x;
- task->data[9] = 0;
- task->data[11] = 0;
- task->data[10] = 1;
- task->data[12] = 0;
- task->func = AnimTask_TeeterDanceMovementStep;
-}
-
-static void AnimTask_TeeterDanceMovementStep(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
- switch (task->data[0])
- {
- case 0:
- task->data[11] += 8;
- task->data[11] &= 0xFF;
- gSprites[task->data[3]].pos2.x = gSineTable[task->data[11]] >> 5;
- task->data[9] += 2;
- task->data[9] &= 0xFF;
- gSprites[task->data[3]].pos1.x = (gSineTable[task->data[9]] >> 3) * task->data[4] + task->data[5];
- if (task->data[9] == 0)
- {
- gSprites[task->data[3]].pos1.x = task->data[5];
- task->data[0]++;
- }
- break;
- case 1:
- task->data[11] += 8;
- task->data[11] &= 0xFF;
- gSprites[task->data[3]].pos2.x = gSineTable[task->data[11]] >> 5;
- if (task->data[11] == 0)
- {
- gSprites[task->data[3]].pos2.x = 0;
- task->data[0]++;
- }
- break;
- case 2:
- DestroyAnimVisualTask(taskId);
- break;
- }
-}
-
-static void AnimKnockOffStrikeStep(struct Sprite *sprite)
-{
- // These two cases are identical.
- if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
- {
- sprite->data[1] += sprite->data[0];
- sprite->data[1] &= 0xFF;
- }
- else
- {
- sprite->data[1] += sprite->data[0];
- sprite->data[1] &= 0xFF;
- }
-
- sprite->pos2.x = Cos(sprite->data[1], 20);
- sprite->pos2.y = Sin(sprite->data[1], 20);
- if (sprite->animEnded)
- DestroyAnimSprite(sprite);
-
- sprite->data[2]++;
-}
-
-// Animates a strike that swipes downard at the target mon.
-// arg 0: initial x pixel offset
-// arg 1: initial y pixel offset
-void AnimKnockOffStrike(struct Sprite *sprite)
-{
- if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
- {
- sprite->pos1.x -= gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
- sprite->data[0] = -11;
- sprite->data[1] = 192;
- StartSpriteAffineAnim(sprite, 1);
- }
- else
- {
- sprite->data[0] = 11;
- sprite->data[1] = 192;
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
- }
-
- sprite->callback = AnimKnockOffStrikeStep;
-}
-
-// Gradually fades a rotating recyle arrow sprite in and back out.
-// No args.
-void AnimRecycle(struct Sprite *sprite)
-{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP);
- if (sprite->pos1.y < 16)
- sprite->pos1.y = 16;
-
- sprite->data[6] = 0;
- sprite->data[7] = 16;
- sprite->callback = AnimRecycleStep;
- REG_BLDALPHA = BLDALPHA_BLEND(sprite->data[6], sprite->data[7]);
-}
-
-static void AnimRecycleStep(struct Sprite *sprite)
-{
- switch (sprite->data[2])
- {
- case 0:
- if (++sprite->data[0] > 1)
- {
- sprite->data[0] = 0;
- if (!(sprite->data[1] & 1))
- {
- if (sprite->data[6] < 16)
- sprite->data[6]++;
- }
- else
- {
- if (sprite->data[7] != 0)
- sprite->data[7]--;
- }
-
- sprite->data[1]++;
- REG_BLDALPHA = BLDALPHA_BLEND(sprite->data[6], sprite->data[7]);
- if (sprite->data[7] == 0)
- sprite->data[2]++;
- }
- break;
- case 1:
- if (++sprite->data[0] == 10)
- {
- sprite->data[0] = 0;
- sprite->data[1] = 0;
- sprite->data[2]++;
- }
- break;
- case 2:
- if (++sprite->data[0] > 1)
- {
- sprite->data[0] = 0;
- if (!(sprite->data[1] & 1))
- {
- if (sprite->data[6] != 0)
- sprite->data[6]--;
- }
- else
- {
- if (sprite->data[7] < 16)
- sprite->data[7]++;
- }
-
- sprite->data[1]++;
- REG_BLDALPHA = BLDALPHA_BLEND(sprite->data[6], sprite->data[7]);
- if (sprite->data[7] == 16)
- sprite->data[2]++;
- }
- break;
- case 3:
- DestroySpriteAndMatrix(sprite);
- break;
- }
-}
-
-void AnimTask_GetWeather(u8 taskId)
-{
- gBattleAnimArgs[7] = ANIM_WEATHER_NONE;
- if (gWeatherMoveAnim & WEATHER_SUN_ANY)
- gBattleAnimArgs[7] = ANIM_WEATHER_SUN;
- else if (gWeatherMoveAnim & WEATHER_RAIN_ANY)
- gBattleAnimArgs[7] = ANIM_WEATHER_RAIN;
- else if (gWeatherMoveAnim & WEATHER_SANDSTORM_ANY)
- gBattleAnimArgs[7] = ANIM_WEATHER_SANDSTORM;
- else if (gWeatherMoveAnim & WEATHER_HAIL_ANY)
- gBattleAnimArgs[7] = ANIM_WEATHER_HAIL;
-
- DestroyAnimVisualTask(taskId);
-}
-
-// Squishes the mon sprite vertically, and shakes it back and forth.
-// arg 0: which battler
-void AnimTask_SlackOffSquish(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
- task->data[0] = 0;
- task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
- PrepareAffineAnimInTaskData(task, task->data[15], gSlackOffSquishAffineAnimCmds);
- task->func = AnimTask_SlackOffSquishStep;
-}
-
-static void AnimTask_SlackOffSquishStep(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
-
- gTasks[taskId].data[0]++;
- if (gTasks[taskId].data[0] > 16 && gTasks[taskId].data[0] < 40)
- {
- if (++task->data[1] > 2)
- {
- task->data[1] = 0;
- task->data[2]++;
- if (!(task->data[2] & 1))
- gSprites[task->data[15]].pos2.x = -1;
- else
- gSprites[task->data[15]].pos2.x = 1;
- }
- }
- else
- {
- gSprites[task->data[15]].pos2.x = 0;
- }
-
- if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
- DestroyAnimVisualTask(taskId);
-} \ No newline at end of file