summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/battle_anim_80CA710.c2324
1 files changed, 1235 insertions, 1089 deletions
diff --git a/src/battle_anim_80CA710.c b/src/battle_anim_80CA710.c
index b4f94fbde..7a191e2d1 100755
--- a/src/battle_anim_80CA710.c
+++ b/src/battle_anim_80CA710.c
@@ -1,6 +1,8 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
+#include "battle_anim_80CA710.h"
+#include "battle_interface.h"
#include "blend_palette.h"
#include "decompress.h"
#include "ewram.h"
@@ -13,32 +15,7 @@
#include "sprite.h"
#include "task.h"
#include "trig.h"
-
-struct __attribute__((packed)) Some3ByteStruct {
- u8 unkArr[3];
-};
-
-struct UnknownStruct_1
-{
- void *src[2];
- void *dest;
- u32 unkC;
- void (*unk10)(void);
- u8 srcBank;
- u8 unk15;
- u8 unk16;
- u8 unk17;
- u8 taskId;
- u8 filler19[0x7];
-};
-
-struct UnknownStruct_2
-{
- const void *dest;
- u32 control;
- u8 unk8;
- u8 unk9;
-};
+#include "unknown_task.h"
struct UnknownStruct6
{
@@ -98,173 +75,122 @@ extern u16 gUnknown_083D7A5C[5];
extern struct UnknownStruct6 gUnknown_03004DE0;
extern struct UnknownStruct_1 gUnknown_03004DC0;
-void sub_80CA768(struct Sprite* sprite);
-void sub_80CA8B4(struct Sprite* sprite);
-void sub_80CA9F8(struct Sprite* sprite);
-void sub_80CAACC(struct Sprite* sprite);
-void sub_80CAB88(struct Sprite* sprite);
-void sub_80CABC0(struct Sprite* sprite);
-void sub_80CAC44(struct Sprite* sprite);
-void sub_80CADA8(struct Sprite* sprite);
-void sub_80CAE74(struct Sprite* sprite);
-void sub_80CAF20(struct Sprite* sprite);
-void sub_80CAF6C(struct Sprite* sprite);
-void sub_80CB09C(struct Sprite* sprite);
-void sub_80CB1A4(struct Sprite* sprite);
-void sub_80CB298(struct Sprite* sprite);
-void sub_80CB2D4(struct Sprite* sprite);
-void sub_80CB710(struct Sprite* sprite);
-void sub_80CBB60(struct Sprite* sprite);
-void sub_80CBC8C(struct Sprite* sprite);
-void sub_80CBCF8(struct Sprite* sprite);
-void sub_80CBDB0(struct Sprite* sprite);
-void sub_80CC408(struct Sprite* sprite);
-void sub_80CC580(struct Sprite* sprite);
-void sub_80CC7D4(struct Sprite* sprite);
-void sub_80CCB00(struct Sprite* sprite);
-void sub_80CCCB4(struct Sprite* sprite);
-void sub_80CCE0C(struct Sprite* sprite);
-void sub_80CCF70(struct Sprite* sprite);
-void sub_80CD0CC(struct Sprite* sprite, int unk1, int unk2);
-void sub_80CD2D4(struct Sprite* sprite);
-void sub_80CD394(struct Sprite* sprite);
-void sub_80CD408(struct Sprite* sprite);
-void sub_80CD4B8(struct Sprite* sprite);
-void sub_80CD4EC(struct Sprite* sprite);
-void sub_80CD5A8(struct Sprite* sprite);
-void sub_80CD654(struct Sprite* sprite);
-void sub_80CD67C(struct Sprite* sprite);
-void sub_80CD7CC(struct Sprite* sprite);
-void sub_80CD81C(struct Sprite* sprite);
-void sub_80CD8A8(struct Sprite* sprite);
-void sub_80CD8F8(struct Sprite* sprite);
-void sub_80CD91C(struct Sprite* sprite);
-void sub_80CD9B8(struct Sprite* sprite);
-void sub_80CD9D4(struct Sprite* sprite);
-void sub_80CDE78(struct Sprite* sprite);
-void sub_80CDEB0(struct Sprite* sprite);
-void sub_80CDEC0(struct Sprite* sprite);
-void sub_80CDF70(struct Sprite* sprite);
-void sub_80CE000(struct Sprite* sprite);
-void sub_80CE1AC(struct Sprite* sprite);
-void sub_80CE354(struct Sprite* sprite);
-void sub_80CE3B0(struct Sprite* sprite);
-void sub_80CE798(struct Sprite* sprite);
-void sub_80CE974(struct Sprite* sprite);
-void sub_80CEC1C(struct Sprite* sprite);
-void sub_80CED78(struct Sprite* sprite);
-void sub_80CEEE8(struct Sprite* sprite);
-void sub_80CF008(struct Sprite* sprite);
-void sub_80CF088(struct Sprite* sprite);
-void sub_80CF138(struct Sprite* sprite);
-void sub_80CF158(struct Sprite* sprite);
-void sub_80CF228(struct Sprite* sprite);
-void sub_80CF264(struct Sprite* sprite);
-void sub_80CF310(struct Sprite* sprite);
-void sub_80CF490(struct Sprite* sprite);
-void sub_80CF4B8(struct Sprite* sprite);
-void sub_80CF6B4(struct Sprite* sprite);
-void sub_80CFE2C(struct Sprite* sprite);
-void sub_80CFF68(struct Sprite* sprite);
-void sub_80D0030(struct Sprite* sprite);
-void sub_80D00B4(struct Sprite* sprite);
-void sub_80D020C(struct Sprite* sprite);
-void sub_80D02D0(struct Sprite* sprite);
-void sub_80D0344(struct Sprite* sprite);
-void sub_80D03A8(struct Sprite* sprite);
-void sub_80D0704(struct Sprite* sprite);
-void sub_80D0E8C(struct Sprite* sprite);
-void sub_80D1098(struct Sprite* sprite);
-void sub_80D13AC(struct Sprite* sprite);
-void sub_80D1424(struct Sprite* sprite);
-void sub_80D144C(struct Sprite* sprite);
-void sub_80D14C4(struct Sprite* sprite);
-void sub_80D1504(struct Sprite* sprite);
-void sub_80D154C(struct Sprite* sprite);
-void sub_80D158C(struct Sprite* sprite);
-void sub_80D1FA4(struct Sprite* sprite);
-void sub_80D2094(struct Sprite* sprite);
-void sub_80D2704(struct Sprite* sprite);
-void sub_80D2834(struct Sprite* sprite);
-
-
-s16 sub_80CC338(struct Sprite* sprite);
-
-void sub_80787B0(struct Sprite *sprite, u8 a2);
-void sub_8078764(struct Sprite *sprite, u8 a2);
-void sub_8078B34(struct Sprite *sprite);
-void sub_8078D60(struct Sprite *sprite);
-void sub_80786EC(struct Sprite *sprite);
-void sub_80782D8(struct Sprite *sprite);
-void sub_8078CC0(struct Sprite *sprite);
-void sub_8078600(struct Sprite *sprite);
-void sub_8078504(struct Sprite *sprite);
-void sub_807861C(struct Sprite *sprite);
-void sub_8078650(struct Sprite *sprite);
-void sub_8078394(struct Sprite *sprite);
-void sub_80785E4(struct Sprite *sprite);
-void sub_8078278(struct Sprite *sprite);
-void sub_8078C00(struct Sprite *sprite);
-void sub_8078114(struct Sprite *sprite);
-void sub_80793C4(struct Sprite *sprite);
-
-extern void sub_8043DB0();
-extern void sub_8043DFC();
-
-void sub_807A3FC(u8 slot, u8 a2, s16 *a3, s16 *a4);
-u8 sub_8079ED4(u8 slot);
-s8 sub_8076F98(s8 a);
-int sub_807A100(u8 slot, u8 a2);
-u16 sub_80790F0(s16 a, s16 b);
-void sub_8078FDC(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation);
-void sub_807867C(struct Sprite *sprite, s16 a2);
-u8 sub_8077EE4(u8 slot, u8 a2);
-u32 sub_80791A8(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7);
-u32 sub_80792C0(u8 a1, u8 a2, u8 a3, u8 a4);
-s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8 a1);
-void obj_delete_but_dont_free_vram(struct Sprite *sprite);
-s16 sub_81174E0(s16 a);
-s16 sub_81174C4(s16 a, s16 b);
-void sub_8079108(u16 a1, bool8 a2);
-void sub_80798F4(struct Task *task, u8 a2, void *a3);
-bool8 sub_807992C(struct Task *task);
-u8 sub_8077FC0(u8 slot);
-void sub_80895F8(struct UnknownStruct_2 unk);
-void sub_80763FC(u16 a, u16 *b, u32 c, u8 d);
-
-void move_anim_8074EE0(struct Sprite *sprite);
-bool8 sub_8078718(struct Sprite *sprite);
-bool8 sub_8078CE8(struct Sprite *sprite);
-
-void sub_80CB3A8(u8 taskId);
-void sub_80CB438(u8 taskId);
-void sub_80CBF5C(u8 taskId);
-void sub_80CDB60(u8 taskId);
-void sub_80CDD20(u8 taskId);
-void sub_80CE4D4(u8 taskId);
-void sub_80CE910(u8 taskId);
-void sub_80CF514(u8 taskId);
-void sub_80D0428(u8 taskId);
-void sub_80D04E0(u8 taskId);
-void sub_80D07AC(u8 taskId);
-void sub_80D0904(u8 taskId);
-void sub_80D0A8C(u8 taskId);
-void sub_80D0B3C(u8 taskId);
-void sub_80D0D68(u8 taskId);
-void sub_80D15E0(u8 taskId);
-void sub_80D16A0(u8 taskId);
-void sub_80D1808(u8 taskId);
-void sub_80D1930(u8 taskId);
-void sub_80D1D48(u8 taskId);
-void sub_80D1D9C(u8 taskId);
-void sub_80D21F0(u8 taskId);
-void sub_80D24E0(u8 taskId);
-
-
-void sub_80CC358(struct Task* task, u8 taskId);
-void sub_80D0614(struct Task* task, u8 taskId);
-
-void sub_80CEBC4(s16 a, s16 b, s16* c, s16* d, s8 e);
+static void sub_80CA768(struct Sprite* sprite);
+static void sub_80CA8B4(struct Sprite* sprite);
+static void sub_80CA9F8(struct Sprite* sprite);
+static void sub_80CAACC(struct Sprite* sprite);
+static void sub_80CAB88(struct Sprite* sprite);
+static void sub_80CABC0(struct Sprite* sprite);
+static void sub_80CAC44(struct Sprite* sprite);
+static void sub_80CADA8(struct Sprite* sprite);
+static void sub_80CAE74(struct Sprite* sprite);
+static void sub_80CAF20(struct Sprite* sprite);
+static void sub_80CAF6C(struct Sprite* sprite);
+static void sub_80CB09C(struct Sprite* sprite);
+static void sub_80CB1A4(struct Sprite* sprite);
+static void sub_80CB298(struct Sprite* sprite);
+static void sub_80CB2D4(struct Sprite* sprite);
+static void sub_80CB710(struct Sprite* sprite);
+static void sub_80CBB60(struct Sprite* sprite);
+static void sub_80CBC8C(struct Sprite* sprite);
+static void sub_80CBCF8(struct Sprite* sprite);
+static void sub_80CBDB0(struct Sprite* sprite);
+static void sub_80CC408(struct Sprite* sprite);
+static void sub_80CC580(struct Sprite* sprite);
+static void sub_80CC7D4(struct Sprite* sprite);
+static void sub_80CCB00(struct Sprite* sprite);
+static void sub_80CCCB4(struct Sprite* sprite);
+static void sub_80CCE0C(struct Sprite* sprite);
+static void sub_80CCF70(struct Sprite* sprite);
+static void sub_80CD0CC(struct Sprite* sprite, int unk1, int unk2);
+static void sub_80CD2D4(struct Sprite* sprite);
+static void sub_80CD394(struct Sprite* sprite);
+static void sub_80CD408(struct Sprite* sprite);
+static void sub_80CD4B8(struct Sprite* sprite);
+static void sub_80CD4EC(struct Sprite* sprite);
+static void sub_80CD5A8(struct Sprite* sprite);
+static void sub_80CD654(struct Sprite* sprite);
+static void sub_80CD67C(struct Sprite* sprite);
+static void sub_80CD7CC(struct Sprite* sprite);
+static void sub_80CD81C(struct Sprite* sprite);
+static void sub_80CD8A8(struct Sprite* sprite);
+static void sub_80CD8F8(struct Sprite* sprite);
+static void sub_80CD91C(struct Sprite* sprite);
+static void sub_80CD9B8(struct Sprite* sprite);
+static void sub_80CD9D4(struct Sprite* sprite);
+static void sub_80CDE78(struct Sprite* sprite);
+static void sub_80CDEB0(struct Sprite* sprite);
+static void sub_80CDEC0(struct Sprite* sprite);
+static void sub_80CDF70(struct Sprite* sprite);
+static void sub_80CE000(struct Sprite* sprite);
+static void sub_80CE1AC(struct Sprite* sprite);
+static void sub_80CE354(struct Sprite* sprite);
+static void sub_80CE3B0(struct Sprite* sprite);
+static void sub_80CE798(struct Sprite* sprite);
+static void sub_80CE974(struct Sprite* sprite);
+static void sub_80CEC1C(struct Sprite* sprite);
+static void sub_80CED78(struct Sprite* sprite);
+static void sub_80CEEE8(struct Sprite* sprite);
+static void sub_80CF008(struct Sprite* sprite);
+static void sub_80CF088(struct Sprite* sprite);
+static void sub_80CF138(struct Sprite* sprite);
+static void sub_80CF158(struct Sprite* sprite);
+static void sub_80CF228(struct Sprite* sprite);
+static void sub_80CF264(struct Sprite* sprite);
+static void sub_80CF310(struct Sprite* sprite);
+static void sub_80CF490(struct Sprite* sprite);
+static void sub_80CF4B8(struct Sprite* sprite);
+static void sub_80CF6B4(struct Sprite* sprite);
+static void sub_80CFE2C(struct Sprite* sprite);
+static void sub_80CFF68(struct Sprite* sprite);
+static void sub_80D0030(struct Sprite* sprite);
+static void sub_80D00B4(struct Sprite* sprite);
+static void sub_80D020C(struct Sprite* sprite);
+static void sub_80D02D0(struct Sprite* sprite);
+static void sub_80D0344(struct Sprite* sprite);
+static void sub_80D03A8(struct Sprite* sprite);
+extern void sub_80D0704(struct Sprite* sprite);
+static void sub_80D0E8C(struct Sprite* sprite);
+static void sub_80D1098(struct Sprite* sprite);
+static void sub_80D13AC(struct Sprite* sprite);
+static void sub_80D1424(struct Sprite* sprite);
+static void sub_80D144C(struct Sprite* sprite);
+static void sub_80D14C4(struct Sprite* sprite);
+static void sub_80D1504(struct Sprite* sprite);
+static void sub_80D154C(struct Sprite* sprite);
+static void sub_80D158C(struct Sprite* sprite);
+static void sub_80D1FA4(struct Sprite* sprite);
+static void sub_80D2094(struct Sprite* sprite);
+static void sub_80D2704(struct Sprite* sprite);
+static void sub_80D2834(struct Sprite* sprite);
+static s16 sub_80CC338(struct Sprite* sprite);
+static void sub_80CB3A8(u8 taskId);
+static void sub_80CB438(u8 taskId);
+static void sub_80CBF5C(u8 taskId);
+static void sub_80CDB60(u8 taskId);
+static void sub_80CDD20(u8 taskId);
+static void sub_80CE4D4(u8 taskId);
+static void sub_80CE910(u8 taskId);
+static void sub_80CF514(u8 taskId);
+static void sub_80D0428(u8 taskId);
+static void sub_80D04E0(u8 taskId);
+static void sub_80D07AC(u8 taskId);
+static void sub_80D0904(u8 taskId);
+static void sub_80D0A8C(u8 taskId);
+static void sub_80D0B3C(u8 taskId);
+static void sub_80D0D68(u8 taskId);
+static void sub_80D15E0(u8 taskId);
+static void sub_80D16A0(u8 taskId);
+static void sub_80D1808(u8 taskId);
+static void sub_80D1930(u8 taskId);
+static void sub_80D1D48(u8 taskId);
+static void sub_80D1D9C(u8 taskId);
+static void sub_80D21F0(u8 taskId);
+static void sub_80D24E0(u8 taskId);
+static void sub_80CC358(struct Task* task, u8 taskId);
+extern void sub_80D0614(struct Task* task, u8 taskId);
+static void sub_80CEBC4(s16 a, s16 b, s16* c, s16* d, s8 e);
+
void sub_80CA710(struct Sprite* sprite)
{
@@ -272,6 +198,7 @@ void sub_80CA710(struct Sprite* sprite)
sprite->pos1.y += gBattleAnimArgs[1];
sprite->data0 = gBattleAnimArgs[2];
sprite->data1 = gBattleAnimArgs[3];
+
if (GetBankSide(gBattleAnimBankAttacker))
{
sprite->data3 = -gBattleAnimArgs[4];
@@ -280,6 +207,7 @@ void sub_80CA710(struct Sprite* sprite)
{
sprite->data3 = gBattleAnimArgs[4];
}
+
sprite->data4 = gBattleAnimArgs[5];
sprite->callback = sub_80CA768;
}
@@ -337,13 +265,13 @@ void sub_80CA858(struct Sprite* sprite)
void sub_80CA8B4(struct Sprite* sprite)
{
- if(sub_8078B5C(sprite))
+ if (sub_8078B5C(sprite))
{
DestroySprite(sprite);
}
else
{
- if(sprite->data5 > 0x7F)
+ if (sprite->data5 > 0x7F)
{
sprite->subpriority = sub_8079E90(gBattleAnimBankTarget) + 1;
}
@@ -370,7 +298,9 @@ void sub_80CA928(u8 taskId)
gBattleAnimArgs[3] = 0;
CreateSpriteAndAnimate(&gSpriteTemplate_83D631C, 0, 0, sub_8079E90(gBattleAnimBankTarget) + 1);
}
- if (gTasks[taskId].data[1] == 15) DestroyAnimVisualTask(taskId);
+
+ if (gTasks[taskId].data[1] == 15)
+ DestroyAnimVisualTask(taskId);
}
void sub_80CA9A8(struct Sprite* sprite)
@@ -386,7 +316,8 @@ void sub_80CA9A8(struct Sprite* sprite)
void sub_80CA9F8(struct Sprite* sprite)
{
- if (sub_8078718(sprite)) move_anim_8072740(sprite);
+ if (sub_8078718(sprite))
+ move_anim_8072740(sprite);
}
void sub_80CAA14(struct Sprite* sprite)
@@ -405,6 +336,7 @@ void sub_80CAA14(struct Sprite* sprite)
{
sprite->pos1.x += 20;
}
+
b = Random();
sprite->data0 = (b & 31) + 64;
sprite->data1 = sprite->pos1.x;
@@ -435,6 +367,7 @@ void sub_80CAACC(struct Sprite* sprite)
{
sprite->subpriority = sprite->data6 + 1;
}
+
sprite->data5 = (sprite->data5 + 24) & 0xFF;
}
}
@@ -442,10 +375,11 @@ void sub_80CAACC(struct Sprite* sprite)
void sub_80CAB18(struct Sprite* sprite)
{
sub_80787B0(sprite, 1);
- if(GetBankSide(gBattleAnimBankAttacker))
+ if (GetBankSide(gBattleAnimBankAttacker))
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
}
+
sprite->data0 = gBattleAnimArgs[4];
sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 0) + gBattleAnimArgs[2];
sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, 1) + gBattleAnimArgs[3];
@@ -456,7 +390,7 @@ void sub_80CAB18(struct Sprite* sprite)
void sub_80CAB88(struct Sprite* sprite)
{
- if(sub_8078718(sprite))
+ if (sub_8078718(sprite))
{
sprite->invisible = 1;
sprite->data0 = 10;
@@ -482,6 +416,7 @@ void sub_80CABF8(struct Sprite* sprite)
{
sprite->oam.objMode = 1;
}
+
sprite->data0 = gBattleAnimArgs[3];
sprite->data1 = gBattleAnimArgs[2];
sprite->callback = sub_80CAC44;
@@ -490,8 +425,7 @@ void sub_80CABF8(struct Sprite* sprite)
void sub_80CAC44(struct Sprite* sprite)
{
-
- u8 b;
+ u8 var1;
sprite->pos2.x = Sin(sprite->data1, 32);
sprite->pos2.y = Cos(sprite->data1, -3) + ((sprite->data2 += 24) >> 8);
@@ -501,21 +435,24 @@ void sub_80CAC44(struct Sprite* sprite)
}
else
{
- b = sub_8079ED4(gBattleAnimBankTarget) + 1;
- if ( b > 3)
+ var1 = sub_8079ED4(gBattleAnimBankTarget) + 1;
+ if (var1 > 3)
{
- b = 3;
+ var1 = 3;
}
- sprite->oam.priority = b;
+
+ sprite->oam.priority = var1;
}
+
sprite->data1 = (sprite->data1 + 2) & 0xFF;
sprite->data0--;
- if (sprite->data0 == -1) move_anim_8072740(sprite);
+ if (sprite->data0 == -1)
+ move_anim_8072740(sprite);
}
void sub_80CACEC(u8 taskId)
{
- if(NotInBattle() || !IsDoubleBattle())
+ if (NotInBattle() || !IsDoubleBattle())
{
DestroyAnimVisualTask(taskId);
}
@@ -529,6 +466,7 @@ void sub_80CACEC(u8 taskId)
{
REG_BG1CNT_BITFIELD.priority = 1;
}
+
DestroyAnimVisualTask(taskId);
}
}
@@ -549,7 +487,7 @@ void sub_80CAD54(struct Sprite* sprite)
void sub_80CADA8(struct Sprite* sprite)
{
- if(!sub_8078B5C(sprite))
+ if (!sub_8078B5C(sprite))
{
sprite->pos2.x += Sin(sprite->data5, 32);
sprite->pos2.y += Cos(sprite->data5, -5);
@@ -561,6 +499,7 @@ void sub_80CADA8(struct Sprite* sprite)
{
sprite->subpriority = sub_8079E90(gBattleAnimBankAttacker) + 1;
}
+
sprite->data5 = (sprite->data5 + 5) & 0xFF;
}
else
@@ -585,13 +524,14 @@ void sub_80CAE20(struct Sprite* sprite)
void sub_80CAE74(struct Sprite* sprite)
{
- if(!sub_8078B5C(sprite))
+ if (!sub_8078B5C(sprite))
{
sprite->pos2.x += Sin(sprite->data5, 8);
if ((u16)(sprite->data5 - 0x3B) < 5 || (u16)(sprite->data5 - 0xBB) < 5)
{
sprite->oam.matrixNum ^= 8;
}
+
sprite->data5 = (sprite->data5 + 5) & 0xFF;
}
else
@@ -612,9 +552,9 @@ void sub_80CAED8(struct Sprite* sprite)
void sub_80CAF20(struct Sprite* sprite)
{
- if(!sprite->data2)
+ if (!sprite->data2)
{
- if(sprite->data1 & 1)
+ if (sprite->data1 & 1)
{
sprite->data0 = 0x80;
sprite->data1 = 0;
@@ -638,7 +578,7 @@ void sub_80CAF20(struct Sprite* sprite)
void sub_80CAF6C(struct Sprite* sprite)
{
- if(GetBankSide(gBattleAnimBankAttacker))
+ if (GetBankSide(gBattleAnimBankAttacker))
{
sprite->pos2.x = -Sin(sprite->data0, 0x19);
}
@@ -646,13 +586,15 @@ void sub_80CAF6C(struct Sprite* sprite)
{
sprite->pos2.x = Sin(sprite->data0, 0x19);
}
+
sprite->data0 = (sprite->data0 + 2) & 0xFF;
sprite->data1++;
- if(!(sprite->data1 & 1))
+ if (!(sprite->data1 & 1))
{
sprite->pos2.y++;
}
- if(sprite->data1 > 0x50)
+
+ if (sprite->data1 > 0x50)
{
move_anim_8072740(sprite);
}
@@ -661,12 +603,13 @@ void sub_80CAF6C(struct Sprite* sprite)
void sub_80CAFD0(struct Sprite* sprite)
{
sub_80787B0(sprite, 1);
- if(GetBankSide(gBattleAnimBankAttacker))
+ if (GetBankSide(gBattleAnimBankAttacker))
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
}
+
sprite->data0 = gBattleAnimArgs[4];
- if(!(gBattleAnimArgs[6]))
+ if (!(gBattleAnimArgs[6]))
{
sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[2];
sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[3];
@@ -677,9 +620,10 @@ void sub_80CAFD0(struct Sprite* sprite)
sprite->data2 += gBattleAnimArgs[2];
sprite->data4 += gBattleAnimArgs[3];
}
+
sprite->data5 = gBattleAnimArgs[5];
sub_80786EC(sprite);
- if(GetBankSide(gBattleAnimBankAttacker) == GetBankSide(gBattleAnimBankTarget))
+ if (GetBankSide(gBattleAnimBankAttacker) == GetBankSide(gBattleAnimBankTarget))
{
sprite->data0 = 1;
}
@@ -687,6 +631,7 @@ void sub_80CAFD0(struct Sprite* sprite)
{
sprite->data0 = 0;
}
+
sprite->callback = sub_80CB09C;
}
@@ -703,6 +648,7 @@ void sub_80CB09C(struct Sprite* sprite)
sprite->data0 = a;
if (b > 0xC8 && r0 <= 0x37 && sprite->oam.affineParam == 0)
sprite->oam.affineParam++;
+
if (sprite->oam.affineParam != 0 && sprite->data0 != 0)
{
sprite->invisible ^= 1;
@@ -723,10 +669,11 @@ void sub_80CB09C(struct Sprite* sprite)
void sub_80CB144(struct Sprite* sprite)
{
- if(!NotInBattle() && IsDoubleBattle() == TRUE)
+ if (!NotInBattle() && IsDoubleBattle() == TRUE)
{
sub_807A3FC(gBattleAnimBankTarget, 1, &sprite->pos1.x, &sprite->pos1.y);
}
+
sprite->pos1.y += 32;
sprite->data0 = gBattleAnimArgs[0];
sprite->data1 = gBattleAnimArgs[1];
@@ -738,21 +685,24 @@ void sub_80CB144(struct Sprite* sprite)
void sub_80CB1A4(struct Sprite* sprite)
{
- if(sprite->data1 == 0xFF)
+ if (sprite->data1 == 0xFF)
{
sprite->pos1.y -= 2;
}
- else if(sprite->data1 > 0)
+ else if (sprite->data1 > 0)
{
sprite->pos1.y -= 2;
sprite->data1 -= 2;
}
+
sprite->data5 += sprite->data2;
- if(sprite->data0 < sprite->data4) sprite->data5 += sprite->data2;
+ if (sprite->data0 < sprite->data4)
+ sprite->data5 += sprite->data2;
+
sprite->data5 &= 0xFF;
sprite->pos2.x = Cos(sprite->data5, sprite->data3);
sprite->pos2.y = Sin(sprite->data5, 5);
- if(sprite->data5 <= 0x7F)
+ if (sprite->data5 <= 0x7F)
{
sprite->oam.priority = sub_8079ED4(gBattleAnimBankTarget) - 1;
}
@@ -760,8 +710,10 @@ void sub_80CB1A4(struct Sprite* sprite)
{
sprite->oam.priority = sub_8079ED4(gBattleAnimBankTarget) + 1;
}
+
sprite->data0--;
- if(!sprite->data0) move_anim_8072740(sprite);
+ if (!sprite->data0)
+ move_anim_8072740(sprite);
}
void sub_80CB25C(struct Sprite* sprite)
@@ -776,7 +728,7 @@ void sub_80CB25C(struct Sprite* sprite)
void sub_80CB298(struct Sprite* sprite)
{
- if((u16)gBattleAnimArgs[7] == 0xFFFF)
+ if ((u16)gBattleAnimArgs[7] == 0xFFFF)
{
sprite->affineAnimPaused = 0;
GetAnimBankSpriteId(1);
@@ -788,7 +740,7 @@ void sub_80CB298(struct Sprite* sprite)
void sub_80CB2D4(struct Sprite* sprite)
{
GetAnimBankSpriteId(1);
- if(!sprite->data2)
+ if (!sprite->data2)
{
sprite->data0 += 11;
}
@@ -797,15 +749,16 @@ void sub_80CB2D4(struct Sprite* sprite)
sprite->data0 -= 11;
}
sprite->data1++;
- if(sprite->data1 == 6)
+ if (sprite->data1 == 6)
{
sprite->data1 = 0;
sprite->data2 ^= 1;
}
- if(sprite->affineAnimEnded)
+
+ if (sprite->affineAnimEnded)
{
sprite->data7--;
- if(sprite->data7 > 0)
+ if (sprite->data7 > 0)
{
StartSpriteAffineAnim(sprite, sprite->data6);
}
@@ -819,7 +772,7 @@ void sub_80CB2D4(struct Sprite* sprite)
void sub_80CB340(u8 taskId)
{
u8 spriteId = GetAnimBankSpriteId(1);
- if(gSprites[spriteId].invisible)
+ if (gSprites[spriteId].invisible)
{
DestroyAnimVisualTask(taskId);
}
@@ -838,15 +791,16 @@ void sub_80CB3A8(u8 taskId)
u8 spriteId = GetAnimBankSpriteId(1);
gTasks[taskId].data[10] += gTasks[taskId].data[0];
gSprites[spriteId].pos2.x = gTasks[taskId].data[10] >> 8;
- if(GetBankSide(gBattleAnimBankTarget))
+ if (GetBankSide(gBattleAnimBankTarget))
{
gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
}
+
gTasks[taskId].data[11] += 16;
obj_id_set_rotscale(spriteId, gTasks[taskId].data[11], gTasks[taskId].data[11], 0);
sub_8079A64(spriteId);
gTasks[taskId].data[1]--;
- if(!gTasks[taskId].data[1])
+ if (!gTasks[taskId].data[1])
{
gTasks[taskId].data[0] = 0;
gTasks[taskId].func = sub_80CB438;
@@ -872,6 +826,7 @@ void sub_80CB438(u8 taskId)
if (gTasks[taskId].data[0] == 0)
return;
}
+
gTasks[taskId].data[0]++;
if (gTasks[taskId].data[0] == 3)
DestroyAnimVisualTask(taskId);
@@ -879,41 +834,42 @@ void sub_80CB438(u8 taskId)
void sub_80CB4CC(struct Sprite* sprite)
{
- switch(sprite->data0)
+ switch (sprite->data0)
{
- case 0:
+ case 0:
+ {
+ if (GetBankSide(gBattleAnimBankTarget) == 0)
{
- if(GetBankSide(gBattleAnimBankTarget) == 0)
- {
- s16 a = gBattleAnimArgs[0];
- gBattleAnimArgs[0] = -a;
- }
- sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 0) + gBattleAnimArgs[0];
- sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 1) + gBattleAnimArgs[1];
- sprite->invisible = 1;
- sprite->data0++;
- break;
+ s16 a = gBattleAnimArgs[0];
+ gBattleAnimArgs[0] = -a;
}
- case 1:
+
+ sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 0) + gBattleAnimArgs[0];
+ sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 1) + gBattleAnimArgs[1];
+ sprite->invisible = 1;
+ sprite->data0++;
+ break;
+ }
+ case 1:
+ {
+ sprite->invisible = 0;
+ if (sprite->affineAnimEnded)
{
- sprite->invisible = 0;
- if(sprite->affineAnimEnded)
- {
- ChangeSpriteAffineAnim(sprite, 1);
- sprite->data0 = 25;
- sprite->data2 = sub_8077ABC(gBattleAnimBankAttacker, 2);
- sprite->data4 = sub_8077ABC(gBattleAnimBankAttacker, 3);
- sprite->callback = sub_8078CC0;
- StoreSpriteCallbackInData6(sprite, move_anim_8072740);
- break;
- }
+ ChangeSpriteAffineAnim(sprite, 1);
+ sprite->data0 = 25;
+ sprite->data2 = sub_8077ABC(gBattleAnimBankAttacker, 2);
+ sprite->data4 = sub_8077ABC(gBattleAnimBankAttacker, 3);
+ sprite->callback = sub_8078CC0;
+ StoreSpriteCallbackInData6(sprite, move_anim_8072740);
+ break;
}
}
+ }
}
void sub_80CB59C(struct Sprite* sprite)
{
- if(!sprite->data0)
+ if (!sprite->data0)
{
sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2);
sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1);
@@ -923,7 +879,7 @@ void sub_80CB59C(struct Sprite* sprite)
StartSpriteAnim(sprite, gBattleAnimArgs[3]);
sprite->data2 = gBattleAnimArgs[4];
sprite->data0++;
- if((sprite->pos1.y + sprite->pos2.y) > 120)
+ if ((sprite->pos1.y + sprite->pos2.y) > 120)
{
sprite->pos1.y += -120 + (sprite->pos2.y + sprite->pos1.y);
}
@@ -956,16 +912,16 @@ void sub_80CB620(struct Sprite *sprite)
void sub_80CB710(struct Sprite* sprite)
{
- if(++sprite->data0 > (sprite->data2 - 10))
- {
+ if (++sprite->data0 > (sprite->data2 - 10))
sprite->invisible = sprite->data0 % 2;
- }
- if(sprite->data0 > sprite->data2) move_anim_8072740(sprite);
+
+ if (sprite->data0 > sprite->data2)
+ move_anim_8072740(sprite);
}
void sub_80CB768(struct Sprite* sprite)
{
- if(!sprite->data0)
+ if (!sprite->data0)
{
sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + gBattleAnimArgs[0];
sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1) + gBattleAnimArgs[1];
@@ -973,10 +929,12 @@ void sub_80CB768(struct Sprite* sprite)
sprite->data2 = gBattleAnimArgs[3];
sprite->data3 = gBattleAnimArgs[4];
}
+
sprite->data0++;
sprite->pos2.x = sprite->data1 * sprite->data0;
sprite->pos2.y = Sin((sprite->data0 * 20) & 0xFF, sprite->data2);
- if(sprite->data0 > sprite->data3) move_anim_8072740(sprite);
+ if (sprite->data0 > sprite->data3)
+ move_anim_8072740(sprite);
}
void sub_80CB7EC(struct Sprite* sprite, s16 c)
@@ -1003,9 +961,14 @@ bool8 sub_80CB814(struct Sprite* sprite)
s32 var2;
if (r2 == 0)
+ {
r2 = -32;
+ }
else if (r2 == 255)
+ {
r2 = 0x110;
+ }
+
r4_2 = r4 - r9;
r0 = r2 - r10;
var1 = r0 * r3 / r6;
@@ -1014,18 +977,23 @@ bool8 sub_80CB814(struct Sprite* sprite)
sprite->pos1.y = var2 + r9;
if (++r3 == r6)
return TRUE;
+
sprite->data7 = (r6 << 8) | r3;
return FALSE;
}
void sub_80CB8B8(struct Sprite* sprite)
{
- if(sprite->data0 == 10)
+ if (sprite->data0 == 10)
{
StartSpriteAffineAnim(sprite, 1);
}
+
sprite->data0++;
- if(sprite->data0 > 50) move_anim_8072740(sprite);
+ if (sprite->data0 > 50)
+ {
+ move_anim_8072740(sprite);
+ }
}
void sub_80CB8E8(struct Sprite* sprite)
@@ -1036,6 +1004,7 @@ void sub_80CB8E8(struct Sprite* sprite)
sprite->data1++;
sprite->data0 = 0;
}
+
sprite->pos2.y = Sin(sprite->data0 + 128, 30 - sprite->data1 * 8);
if (sub_80CB814(sprite))
{
@@ -1052,7 +1021,7 @@ void sub_80CB94C(struct Sprite* sprite)
sub_80787B0(sprite, 0);
e1 = sub_8077ABC(gBattleAnimBankTarget, 0);
e2 = sub_8077ABC(gBattleAnimBankTarget, 1);
- if((gBattleAnimBankAttacker ^ 2) == gBattleAnimBankTarget)
+ if ((gBattleAnimBankAttacker ^ 2) == gBattleAnimBankTarget)
{
sprite->data6 = e1;
sprite->data7 = e2 + 10;
@@ -1066,6 +1035,7 @@ void sub_80CB94C(struct Sprite* sprite)
sub_80CB7EC(sprite, 0x3C);
sprite->data3 = 3;
}
+
sprite->data4 = 0x3C;
sprite->callback = sub_80CB8E8;
}
@@ -1075,13 +1045,14 @@ void sub_80CB9C4(struct Sprite* sprite)
int zero;
sprite->data0 += ((sprite->data3 * 128) / sprite->data4);
zero = 0;
- if(sprite->data0 > 0x7F)
+ if (sprite->data0 > 0x7F)
{
sprite->data1++;
sprite->data0 = zero;
}
+
sprite->pos2.y = Sin(sprite->data0 + 0x80, 30 - sprite->data1 * 8);
- if(sub_80CB814(sprite))
+ if (sub_80CB814(sprite))
{
sprite->pos2.y = zero;
sprite->data0 = zero;
@@ -1092,7 +1063,7 @@ void sub_80CB9C4(struct Sprite* sprite)
void sub_80CBA28(struct Sprite* sprite)
{
s16 e = sub_8077ABC(gBattleAnimBankTarget, 1);
- if(GetBankSide(gBattleAnimBankTarget) == 0)
+ if (GetBankSide(gBattleAnimBankTarget) == 0)
{
sprite->data6 = 0;
sprite->data7 = e + 10;
@@ -1105,7 +1076,9 @@ void sub_80CBA28(struct Sprite* sprite)
{
sprite->data6 = 255;
sprite->data7 = e + 10;
- if(NotInBattle()) sprite->data6 = 0;
+ if (NotInBattle())
+ sprite->data6 = 0;
+
sub_80CB7EC(sprite, 0x28);
sprite->data3 = 3;
sprite->data4 = 0x3C;
@@ -1115,14 +1088,18 @@ void sub_80CBA28(struct Sprite* sprite)
void sub_80CBAA4(struct Sprite* sprite)
{
- if(sprite->data0 == 0)
+ if (sprite->data0 == 0)
{
sub_8078764(sprite, 0);
sprite->data1 = gBattleAnimArgs[2];
}
+
sprite->data0++;
sprite->pos2.y = sprite->data1 * sprite->data0;
- if(sprite->animEnded) move_anim_8072740(sprite);
+ if (sprite->animEnded)
+ {
+ move_anim_8072740(sprite);
+ }
}
void sub_80CBAE8(struct Sprite* sprite)
@@ -1132,7 +1109,7 @@ void sub_80CBAE8(struct Sprite* sprite)
sub_8078764(sprite, 0);
p1 = sub_8077ABC(gBattleAnimBankAttacker, 0);
p2 = sub_8077ABC(gBattleAnimBankAttacker, 1);
- if((gBattleAnimBankTarget ^ 2) == gBattleAnimBankAttacker)
+ if ((gBattleAnimBankTarget ^ 2) == gBattleAnimBankAttacker)
{
sprite->data6 = p1;
sprite->data7 = p2 + 10;
@@ -1146,6 +1123,7 @@ void sub_80CBAE8(struct Sprite* sprite)
sub_80CB7EC(sprite, 0x3c);
sprite->data3 = 3;
}
+
sprite->data4 = 0x3C;
sprite->callback = sub_80CBB60;
}
@@ -1155,17 +1133,19 @@ void sub_80CBB60(struct Sprite* sprite)
int zero;
sprite->data0 += ((sprite->data3 * 128) / sprite->data4);
zero = 0;
- if(sprite->data0 > 0x7F)
+ if (sprite->data0 > 0x7F)
{
sprite->data1++;
sprite->data0 = zero;
}
+
sprite->pos2.y = Sin(sprite->data0 + 0x80, 30 - sprite->data1 * 8);
- if(sprite->pos2.y == 0)
+ if (sprite->pos2.y == 0)
{
PlaySE12WithPanning(0x7D, sub_8076F98(0x3F));
}
- if(sub_80CB814(sprite))
+
+ if (sub_80CB814(sprite))
{
sprite->pos2.y = 0;
sprite->data0 = 0;
@@ -1193,10 +1173,11 @@ void sub_80CBBF0(struct Sprite* sprite)
b = gBattleAnimArgs[1] + 0xDF;
else
b = a;
+
sprite->data1 = a - ((b >> 8) << 8);
sprite->pos1.x = 0x46;
-
}
+
sprite->pos1.y = gBattleAnimArgs[0];
sprite->data2 = gBattleAnimArgs[0];
sprite->data4 = 20;
@@ -1212,34 +1193,31 @@ void sub_80CBBF0(struct Sprite* sprite)
void sub_80CBC8C(struct Sprite* sprite)
{
- switch(sprite->data3)
+ switch (sprite->data3)
{
- case 0:
+ case 0:
+ if (sprite->data2 > 0x4E)
{
- if(sprite->data2 > 0x4E)
- {
- sprite->data3 = 1;
- StartSpriteAffineAnim(sprite, 1);
- break;
- }
- else
- {
- sprite->data2 += sprite->data4 / 10;
- sprite->data4 += 3;
- sprite->pos1.y = sprite->data2;
- break;
- }
+ sprite->data3 = 1;
+ StartSpriteAffineAnim(sprite, 1);
+ break;
}
- case 1:
+ else
{
- if(sprite->data3 && sprite->affineAnimEnded)
- {
- sprite->data0 = 0;
- sprite->data2 = 0;
- sprite->callback = sub_80CBCF8;
- }
+ sprite->data2 += sprite->data4 / 10;
+ sprite->data4 += 3;
+ sprite->pos1.y = sprite->data2;
break;
}
+ break;
+ case 1:
+ if (sprite->data3 && sprite->affineAnimEnded)
+ {
+ sprite->data0 = 0;
+ sprite->data2 = 0;
+ sprite->callback = sub_80CBCF8;
+ }
+ break;
}
}
@@ -1247,13 +1225,14 @@ void sub_80CBC8C(struct Sprite* sprite)
void sub_80CBCF8(struct Sprite* sprite)
{
- if(sprite->data2 == gUnknown_083D680C[sprite->data0][1])
+ if (sprite->data2 == gUnknown_083D680C[sprite->data0][1])
{
- if(gUnknown_083D680C[sprite->data0][2] == 0x7F)
+ if (gUnknown_083D680C[sprite->data0][2] == 0x7F)
{
sprite->data0 = 0;
sprite->callback = sub_80CBDB0;
}
+
sprite->data2 = 0;
sprite->data0++;
}
@@ -1263,7 +1242,7 @@ void sub_80CBCF8(struct Sprite* sprite)
sprite->data1 = (gUnknown_083D680C[sprite->data0][0] * gUnknown_083D680C[sprite->data0][2] + sprite->data1) & 0xFF;
if (!NotInBattle())
{
- if((u16)(sprite->data1 - 1) <= 0xBE)
+ if ((u16)(sprite->data1 - 1) <= 0xBE)
{
sprite->subpriority = 31;
}
@@ -1272,6 +1251,7 @@ void sub_80CBCF8(struct Sprite* sprite)
sprite->subpriority = 29;
}
}
+
sprite->pos2.x = Cos(sprite->data1, 0x3C);
sprite->pos2.y = Sin(sprite->data1, 20);
}
@@ -1279,7 +1259,9 @@ void sub_80CBCF8(struct Sprite* sprite)
void sub_80CBDB0(struct Sprite* sprite)
{
- if(sprite->data0 > 20) move_anim_8072740(sprite);
+ if (sprite->data0 > 20)
+ move_anim_8072740(sprite);
+
sprite->invisible = sprite->data0 % 2;
sprite->data0++;
}
@@ -1299,6 +1281,7 @@ void sub_80CBDF4(u8 taskId)
task->data[2] = CreateSprite(&gSpriteTemplate_83D6884, task->data[8], task->data[9], task->data[4]);
if (task->data[2] == 0x40)
DestroyAnimVisualTask(taskId);
+
gSprites[task->data[2]].data0 = 10;
gSprites[task->data[2]].data1 = task->data[8];
gSprites[task->data[2]].data2 = task->data[6] - (task->data[10] / 2 + 10) * task->data[5];
@@ -1314,243 +1297,214 @@ void sub_80CBF5C(u8 taskId)
struct Task* task = &gTasks[taskId];
struct Sprite* sprite = &gSprites[task->data[2]];
int a = task->data[0];
- switch(a)
+ switch (a)
{
- case 4:
- {
- sub_80CC358(task, taskId);
- if(sub_8078718(sprite) == 0)
- {
- break;
- }
- else
- {
- task->data[15] = 5;
- task->data[0] = 0xFF;
- break;
- }
- }
- case 8:
+ case 4:
+ sub_80CC358(task, taskId);
+ if (sub_8078718(sprite) == 0)
{
- sub_80CC358(task, taskId);
- if(sub_8078718(sprite) == 0)
- {
- break;
- }
- else
- {
- task->data[15] = 9;
- task->data[0] = 0xFF;
break;
- }
}
- case 0:
+ else
{
- sub_80CC358(task, taskId);
- if(sub_8078718(sprite) == 0)
- {
- break;
- }
- task->data[15] = 1;
+ task->data[15] = 5;
task->data[0] = 0xFF;
- break;
}
- case 1:
+ break;
+ case 8:
+ sub_80CC358(task, taskId);
+ if (sub_8078718(sprite) == 0)
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
- sprite->data0 = 10;
- sprite->data1 = sprite->pos1.x;
- sprite->data2 = task->data[6];
- sprite->data3 = sprite->pos1.y;
- sprite->data4 = task->data[7];
- sprite->data5 = sub_80CC338(sprite);
- task->data[4] += 2;
- task->data[3] = a;
- sprite->subpriority = task->data[4];
- StartSpriteAnim(sprite, task->data[3]);
- sub_80786EC(sprite);
- task->data[0]++;
break;
}
- case 2:
+ else
{
- sub_80CC358(task, taskId);
- if(sub_8078718(sprite) == 0)
- {
- break;
- }
- task->data[15] = 3;
+ task->data[15] = 9;
task->data[0] = 0xFF;
- break;
- }
- case 3:
- {
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
- sprite->data0 = 10;
- sprite->data1 = sprite->pos1.x;
- sprite->data2 = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5];
- sprite->data3 = sprite->pos1.y;
- sprite->data4 = task->data[7] - ((task->data[11] / 2) + 10) * task->data[5];
- sprite->data5 = sub_80CC338(sprite);
- task->data[3] = 2;
- sprite->subpriority = task->data[4];
- StartSpriteAnim(sprite, task->data[3]);
- sub_80786EC(sprite);
- task->data[0]++;
- break;
}
- case 5:
- {
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
- sprite->data0 = 10;
- sprite->data1 = sprite->pos1.x;
- sprite->data2 = task->data[6] + ((task->data[10] / 2) + 10) * task->data[5];
- sprite->data3 = sprite->pos1.y;
- sprite->data4 = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5];
- sprite->data5 = sub_80CC338(sprite);
- task->data[4] -= 2;
- task->data[3] = 3;
- sprite->subpriority = task->data[4];
- StartSpriteAnim(sprite, task->data[3]);
- sub_80786EC(sprite);
- task->data[0]++;
+ break;
+ case 0:
+ sub_80CC358(task, taskId);
+ if (sub_8078718(sprite) == 0)
break;
- }
- case 6:
- {
- sub_80CC358(task, taskId);
- if(sub_8078718(sprite) == 0)
- {
- break;
- }
- task->data[15] = 7;
- task->data[0] = 0xFF;
+
+ task->data[15] = 1;
+ task->data[0] = 0xFF;
+ break;
+ case 1:
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->data0 = 10;
+ sprite->data1 = sprite->pos1.x;
+ sprite->data2 = task->data[6];
+ sprite->data3 = sprite->pos1.y;
+ sprite->data4 = task->data[7];
+ sprite->data5 = sub_80CC338(sprite);
+ task->data[4] += 2;
+ task->data[3] = a;
+ sprite->subpriority = task->data[4];
+ StartSpriteAnim(sprite, task->data[3]);
+ sub_80786EC(sprite);
+ task->data[0]++;
+ break;
+ case 2:
+ sub_80CC358(task, taskId);
+ if (sub_8078718(sprite) == 0)
break;
- }
- case 7:
- {
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
- sprite->data0 = 10;
- sprite->data1 = sprite->pos1.x;
- sprite->data2 = task->data[6];
- sprite->data3 = sprite->pos1.y;
- sprite->data4 = task->data[7];
- sprite->data5 = sub_80CC338(sprite);
- task->data[4] += 2;
- task->data[3] = 4;
- sprite->subpriority = task->data[4];
- StartSpriteAnim(sprite, task->data[3]);
- sub_80786EC(sprite);
- task->data[0]++;
+
+ task->data[15] = 3;
+ task->data[0] = 0xFF;
+ break;
+ case 3:
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->data0 = 10;
+ sprite->data1 = sprite->pos1.x;
+ sprite->data2 = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5];
+ sprite->data3 = sprite->pos1.y;
+ sprite->data4 = task->data[7] - ((task->data[11] / 2) + 10) * task->data[5];
+ sprite->data5 = sub_80CC338(sprite);
+ task->data[3] = 2;
+ sprite->subpriority = task->data[4];
+ StartSpriteAnim(sprite, task->data[3]);
+ sub_80786EC(sprite);
+ task->data[0]++;
+ break;
+ case 5:
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->data0 = 10;
+ sprite->data1 = sprite->pos1.x;
+ sprite->data2 = task->data[6] + ((task->data[10] / 2) + 10) * task->data[5];
+ sprite->data3 = sprite->pos1.y;
+ sprite->data4 = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5];
+ sprite->data5 = sub_80CC338(sprite);
+ task->data[4] -= 2;
+ task->data[3] = 3;
+ sprite->subpriority = task->data[4];
+ StartSpriteAnim(sprite, task->data[3]);
+ sub_80786EC(sprite);
+ task->data[0]++;
+ break;
+ case 6:
+ sub_80CC358(task, taskId);
+ if (sub_8078718(sprite) == 0)
break;
- }
- case 9:
+
+ task->data[15] = 7;
+ task->data[0] = 0xFF;
+ break;
+ case 7:
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->data0 = 10;
+ sprite->data1 = sprite->pos1.x;
+ sprite->data2 = task->data[6];
+ sprite->data3 = sprite->pos1.y;
+ sprite->data4 = task->data[7];
+ sprite->data5 = sub_80CC338(sprite);
+ task->data[4] += 2;
+ task->data[3] = 4;
+ sprite->subpriority = task->data[4];
+ StartSpriteAnim(sprite, task->data[3]);
+ sub_80786EC(sprite);
+ task->data[0]++;
+ break;
+ case 9:
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->data0 = 10;
+ sprite->data1 = sprite->pos1.x;
+ sprite->data2 = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5];
+ sprite->data3 = sprite->pos1.y;
+ sprite->data4 = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5];
+ sprite->data5 = sub_80CC338(sprite);
+ task->data[3] = 5;
+ sprite->subpriority = task->data[4];
+ StartSpriteAnim(sprite, task->data[3]);
+ sub_80786EC(sprite);
+ task->data[0]++;
+ break;
+ case 10:
+ sub_80CC358(task, taskId);
+ if (sub_8078718(sprite) == 0)
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
- sprite->data0 = 10;
- sprite->data1 = sprite->pos1.x;
- sprite->data2 = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5];
- sprite->data3 = sprite->pos1.y;
- sprite->data4 = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5];
- sprite->data5 = sub_80CC338(sprite);
- task->data[3] = 5;
- sprite->subpriority = task->data[4];
- StartSpriteAnim(sprite, task->data[3]);
- sub_80786EC(sprite);
- task->data[0]++;
break;
}
- case 10:
+ else
{
- sub_80CC358(task, taskId);
- if(sub_8078718(sprite) == 0)
- {
- break;
- }
- else
- {
- task->data[15] = 11;
- task->data[0] = 0xFF;
- break;
- }
+ task->data[15] = 11;
+ task->data[0] = 0xFF;
}
- case 11:
+ break;
+ case 11:
+ {
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->data0 = 10;
+ sprite->data1 = sprite->pos1.x;
+ sprite->data2 = task->data[8];
+ sprite->data3 = sprite->pos1.y;
+ sprite->data4 = task->data[9];
+ sprite->data5 = sub_80CC338(sprite);
+ task->data[4] -= 2;
+ task->data[3] = 6;
+ sprite->subpriority = task->data[4];
+ StartSpriteAnim(sprite, task->data[3]);
+ sub_80786EC(sprite);
+ task->data[0]++;
+ break;
+ }
+ case 12:
+ sub_80CC358(task, taskId);
+ if (sub_8078718(sprite) != 0)
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
- sprite->data0 = 10;
- sprite->data1 = sprite->pos1.x;
- sprite->data2 = task->data[8];
- sprite->data3 = sprite->pos1.y;
- sprite->data4 = task->data[9];
- sprite->data5 = sub_80CC338(sprite);
- task->data[4] -= 2;
- task->data[3] = 6;
- sprite->subpriority = task->data[4];
- StartSpriteAnim(sprite, task->data[3]);
- sub_80786EC(sprite);
+ DestroySprite(sprite);
task->data[0]++;
- break;
}
- case 12:
- {
- sub_80CC358(task, taskId);
- if(sub_8078718(sprite) != 0)
- {
- DestroySprite(sprite);
- task->data[0]++;
- }
- break;
- }
- case 13:
+ break;
+ case 13:
+ if (task->data[12] == 0)
{
- if(task->data[12] == 0)
- {
- DestroyAnimVisualTask(taskId);
- break;
- }
- break;
+ DestroyAnimVisualTask(taskId);
}
- case 255:
+ break;
+ case 255:
+ task->data[1]++;
+ if (task->data[1] > 5)
{
- task->data[1]++;
- if(task->data[1] > 5)
- {
- task->data[1] = 0;
- task->data[0] = task->data[15];
- }
+ task->data[1] = 0;
+ task->data[0] = task->data[15];
}
+ break;
}
}
s16 sub_80CC338(struct Sprite* sprite)
{
s16 var = 8;
- if(sprite->data4 < sprite->pos1.y) var = -var;
+ if (sprite->data4 < sprite->pos1.y)
+ var = -var;
+
return var;
}
void sub_80CC358(struct Task* task, u8 taskId)
{
task->data[14]++;
- if(task->data[14] > 0)
+ if (task->data[14] > 0)
{
u8 spriteId;
s16 spriteX;
@@ -1581,7 +1535,7 @@ void sub_80CC408(struct Sprite* sprite)
sprite->data0 = 0;
sprite->invisible ^= 1;
sprite->data1++;
- if(sprite->data1 > 8)
+ if (sprite->data1 > 8)
{
gTasks[sprite->data6].data[sprite->data7]--;
DestroySprite(sprite);
@@ -1596,6 +1550,7 @@ void sub_80CC474(struct Sprite* sprite)
bank = gBattleAnimBankAttacker;
else
bank = gBattleAnimBankTarget;
+
if (GetBankSide(bank) != 0)
{
sprite->data4 = 0;
@@ -1608,37 +1563,31 @@ void sub_80CC474(struct Sprite* sprite)
sprite->data2 = -gBattleAnimArgs[3];
sprite->pos1.x = 0x100;
}
+
sprite->data1 = gBattleAnimArgs[1];
sprite->data0 = gBattleAnimArgs[2];
sprite->data3 = gBattleAnimArgs[4];
- switch(gBattleAnimArgs[5])
+ switch (gBattleAnimArgs[5])
{
- case 0:
- {
- sprite->pos1.y = gBattleAnimArgs[0];
- sprite->oam.priority = sub_8079ED4(bank);
- break;
- }
- case 1:
- {
- sprite->pos1.y = gBattleAnimArgs[0];
- sprite->oam.priority = sub_8079ED4(bank) + 1;
- break;
- }
- case 2:
- {
- sprite->pos1.y = sub_8077ABC(bank, 3) + gBattleAnimArgs[0];
- sprite->oam.priority = sub_8079ED4(bank);
- break;
- }
- case 3:
- {
- sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[0];
- GetAnimBankSpriteId(1);
- sprite->oam.priority = sub_8079ED4(bank) + 1;
- break;
- }
+ case 0:
+ sprite->pos1.y = gBattleAnimArgs[0];
+ sprite->oam.priority = sub_8079ED4(bank);
+ break;
+ case 1:
+ sprite->pos1.y = gBattleAnimArgs[0];
+ sprite->oam.priority = sub_8079ED4(bank) + 1;
+ break;
+ case 2:
+ sprite->pos1.y = sub_8077ABC(bank, 3) + gBattleAnimArgs[0];
+ sprite->oam.priority = sub_8079ED4(bank);
+ break;
+ case 3:
+ sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[0];
+ GetAnimBankSpriteId(1);
+ sprite->oam.priority = sub_8079ED4(bank) + 1;
+ break;
}
+
sprite->callback = sub_80CC580;
}
@@ -1659,41 +1608,41 @@ void sub_80CC580(struct Sprite* sprite)
if (sprite->pos2.x + sprite->pos1.x > -16)
return;
}
+
move_anim_8074EE0(sprite);
}
void sub_80CC5F8(u8 taskId)
{
struct Task* task = &gTasks[taskId];
- switch(task->data[0])
+ switch (task->data[0])
{
- case 0:
- {
- task->data[8] = IndexOfSpritePaletteTag(0x274f) * 16 + 256;
- task->data[12] = IndexOfSpritePaletteTag(0x27b0) * 16 + 256;
- task->data[0]++;
- break;
- }
- case 1:
+ case 0:
+ task->data[8] = IndexOfSpritePaletteTag(0x274f) * 16 + 256;
+ task->data[12] = IndexOfSpritePaletteTag(0x27b0) * 16 + 256;
+ task->data[0]++;
+ break;
+ case 1:
+ task->data[9]++;
+ if (task->data[9] >= 0)
{
- task->data[9]++;
- if(task->data[9] >= 0)
+ task->data[9] = 0;
+ BlendPalette(task->data[8], 0x10, task->data[10], gUnknown_083D6984[task->data[11]]);
+ BlendPalette(task->data[12], 0x10, task->data[10], gUnknown_083D6984[task->data[11]]);
+ task->data[10]++;
+ if (task->data[10] == 17)
{
- task->data[9] = 0;
- BlendPalette(task->data[8], 0x10, task->data[10], gUnknown_083D6984[task->data[11]]);
- BlendPalette(task->data[12], 0x10, task->data[10], gUnknown_083D6984[task->data[11]]);
- task->data[10]++;
- if(task->data[10] == 17)
- {
- task->data[10] = 0;
- task->data[11]++;
- if(task->data[11] == 7) task->data[11] = 0;
- }
+ task->data[10] = 0;
+ task->data[11]++;
+ if (task->data[11] == 7)
+ task->data[11] = 0;
}
- break;
}
+ break;
}
- if(gBattleAnimArgs[7] == -1) DestroyAnimVisualTask(taskId);
+
+ if (gBattleAnimArgs[7] == -1)
+ DestroyAnimVisualTask(taskId);
}
void sub_80CC6CC(struct Sprite* sprite)
@@ -1710,7 +1659,6 @@ void sub_80CC6CC(struct Sprite* sprite)
}
else
{
-
if (gBattleAnimArgs[0] == 0)
{
a = sub_8077ABC(gBattleAnimBankAttacker, 2);
@@ -1721,6 +1669,7 @@ void sub_80CC6CC(struct Sprite* sprite)
a = sub_8077ABC(gBattleAnimBankTarget, 2);
b = sub_8077ABC(gBattleAnimBankTarget, 3);
}
+
sprite->data0 = gBattleAnimArgs[4];
if (gBattleAnimArgs[1] == 0)
{
@@ -1736,6 +1685,7 @@ void sub_80CC6CC(struct Sprite* sprite)
sprite->data5 = gBattleAnimArgs[2] + a;
sprite->data6 = gBattleAnimArgs[3] + b;
}
+
x = sprite->pos1.x;
sprite->data1 = x * 16;
y = sprite->pos1.y;
@@ -1745,6 +1695,7 @@ void sub_80CC6CC(struct Sprite* sprite)
c = sub_80790F0(sprite->data5 - x, sprite->data6 - y);
if (NotInBattle())
c -= 0x8000;
+
sub_8078FDC(sprite, 0, 0x100, 0x100, c);
sprite->callback = sub_80CC7D4;
}
@@ -1752,7 +1703,7 @@ void sub_80CC6CC(struct Sprite* sprite)
void sub_80CC7D4(struct Sprite* sprite)
{
- if(sprite->data0)
+ if (sprite->data0)
{
sprite->data1 += sprite->data3;
sprite->data2 += sprite->data4;
@@ -1761,18 +1712,20 @@ void sub_80CC7D4(struct Sprite* sprite)
sprite->data0--;
}
else
+ {
move_anim_8074EE0(sprite);
+ }
}
void sub_80CC810(struct Sprite* sprite)
{
- if(sprite->animEnded)
+ if (sprite->animEnded)
move_anim_8072740(sprite);
}
void sub_80CC82C(struct Sprite* sprite)
{
- if(GetBankSide(gBattleAnimBankAttacker) != 0)
+ if (GetBankSide(gBattleAnimBankAttacker) != 0)
{
sprite->pos1.x -= gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
@@ -1782,14 +1735,16 @@ void sub_80CC82C(struct Sprite* sprite)
sprite->pos1.x += gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
}
+
sprite->callback = sub_8078600;
StoreSpriteCallbackInData6(sprite, move_anim_8072740);
}
void sub_80CC884(struct Sprite* sprite)
{
- if(GetBankSide(gBattleAnimBankAttacker) == 0)
+ if (GetBankSide(gBattleAnimBankAttacker) == 0)
StartSpriteAnim(sprite, 1);
+
sprite->callback = sub_80CC810;
sub_807867C(sprite, gBattleAnimArgs[0]);
sprite->pos1.y += gBattleAnimArgs[1];
@@ -1812,21 +1767,25 @@ void sub_80CC914(struct Sprite* sprite)
{
sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 0);
sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 1);
- if(GetBankSide(gBattleAnimBankTarget) == 0)
+ if (GetBankSide(gBattleAnimBankTarget) == 0)
sprite->pos1.y += 8;
+
sprite->callback = sub_80CCB00;
- if(gBattleAnimArgs[2] == 0)
+ if (gBattleAnimArgs[2] == 0)
+ {
sprite->pos1.x += gBattleAnimArgs[0];
+ }
else
{
sprite->pos1.x -= gBattleAnimArgs[0];
sprite->hFlip = 1;
}
+
sprite->pos1.y += gBattleAnimArgs[1];
sprite->data1 -= 0x400;
sprite->data2 += 0x400;
sprite->data5 = gBattleAnimArgs[2];
- if(sprite->data5 == 1)
+ if (sprite->data5 == 1)
sprite->data1 = -sprite->data1;
}
@@ -1834,50 +1793,49 @@ void sub_80CC9BC(struct Sprite* sprite)
{
u8 a;
u8 b;
- switch(gBattleAnimArgs[3])
+ switch (gBattleAnimArgs[3])
{
- case 1:
- {
- a = sub_8077ABC(gBattleAnimBankTarget ^ 2, 0);
- b = sub_8077ABC(gBattleAnimBankTarget ^ 2, 1);
- break;
- }
- case 2:
- {
- a = sub_8077ABC(gBattleAnimBankTarget, 0);
- b = sub_8077ABC(gBattleAnimBankTarget, 1);
- if(IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2))
- {
- a = (sub_8077ABC(gBattleAnimBankTarget ^ 2, 0) + a) / 2;
- b = (sub_8077ABC(gBattleAnimBankTarget ^ 2, 1) + b) / 2;
- }
- break;
- }
- case 0:
- default:
+ case 1:
+ a = sub_8077ABC(gBattleAnimBankTarget ^ 2, 0);
+ b = sub_8077ABC(gBattleAnimBankTarget ^ 2, 1);
+ break;
+ case 2:
+ a = sub_8077ABC(gBattleAnimBankTarget, 0);
+ b = sub_8077ABC(gBattleAnimBankTarget, 1);
+ if (IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2))
{
- a = sub_8077ABC(gBattleAnimBankTarget, 0);
- b = sub_8077ABC(gBattleAnimBankTarget, 1);
- break;
+ a = (sub_8077ABC(gBattleAnimBankTarget ^ 2, 0) + a) / 2;
+ b = (sub_8077ABC(gBattleAnimBankTarget ^ 2, 1) + b) / 2;
}
+ break;
+ case 0:
+ default:
+ a = sub_8077ABC(gBattleAnimBankTarget, 0);
+ b = sub_8077ABC(gBattleAnimBankTarget, 1);
+ break;
}
+
sprite->pos1.x = a;
sprite->pos1.y = b;
- if(GetBankSide(gBattleAnimBankTarget) == 0)
+ if (GetBankSide(gBattleAnimBankTarget) == 0)
sprite->pos1.y += 8;
+
sprite->callback = sub_80CCB00;
- if(gBattleAnimArgs[2] == 0)
+ if (gBattleAnimArgs[2] == 0)
+ {
sprite->pos1.x += gBattleAnimArgs[0];
+ }
else
{
sprite->pos1.x -= gBattleAnimArgs[0];
sprite->hFlip = 1;
}
+
sprite->pos1.y += gBattleAnimArgs[1];
sprite->data1 -= 0x400;
sprite->data2 += 0x400;
sprite->data5 = gBattleAnimArgs[2];
- if(sprite->data5 == 1)
+ if (sprite->data5 == 1)
sprite->data1 = -sprite->data1;
}
@@ -1885,15 +1843,16 @@ void sub_80CCB00(struct Sprite* sprite)
{
sprite->data3 += sprite->data1;
sprite->data4 += sprite->data2;
- if(sprite->data5 == 0)
+ if (sprite->data5 == 0)
sprite->data1 += 0x18;
else
sprite->data1 -= 0x18;
+
sprite->data2 -= 0x18;
sprite->pos2.x = sprite->data3 >> 8;
sprite->pos2.y = sprite->data4 >> 8;
sprite->data0++;
- if(sprite->data0 == 20)
+ if (sprite->data0 == 20)
{
StoreSpriteCallbackInData6(sprite, move_anim_8072740);
sprite->data0 = 3;
@@ -1903,9 +1862,9 @@ void sub_80CCB00(struct Sprite* sprite)
void unref_sub_80CCB6C(struct Sprite* sprite)
{
- if(sprite->data2 > 1)
+ if (sprite->data2 > 1)
{
- if(sprite->data3 & 1)
+ if (sprite->data3 & 1)
{
sprite->invisible = 0;
gSprites[sprite->data0].invisible = 0;
@@ -1917,6 +1876,7 @@ void unref_sub_80CCB6C(struct Sprite* sprite)
gSprites[sprite->data0].invisible = 1;
gSprites[sprite->data1].invisible = 1;
}
+
sprite->data2 = 0;
sprite->data3++;
}
@@ -1924,7 +1884,8 @@ void unref_sub_80CCB6C(struct Sprite* sprite)
{
sprite->data2++;
}
- if(sprite->data3 == 10)
+
+ if (sprite->data3 == 10)
{
DestroySprite(&gSprites[sprite->data0]);
DestroySprite(&gSprites[sprite->data1]);
@@ -1935,10 +1896,11 @@ void unref_sub_80CCB6C(struct Sprite* sprite)
void sub_80CCC50(struct Sprite* sprite)
{
sprite->data0 = gBattleAnimArgs[2];
- if(GetBankSide(gBattleAnimBankAttacker) != 0)
+ if (GetBankSide(gBattleAnimBankAttacker) != 0)
sprite->pos1.x -= gBattleAnimArgs[0];
else
sprite->pos1.x += gBattleAnimArgs[0];
+
StartSpriteAnim(sprite, gBattleAnimArgs[5]);
sprite->data1 = -gBattleAnimArgs[3];
sprite->pos1.y += gBattleAnimArgs[1];
@@ -1951,30 +1913,33 @@ void sub_80CCCB4(struct Sprite* sprite)
{
sprite->pos2.x = Cos(sprite->data0, 100);
sprite->pos2.y = Sin(sprite->data0, 20);
- if(sprite->data0 <= 0x7F)
+ if (sprite->data0 <= 0x7F)
sprite->subpriority = 0;
else
sprite->subpriority = 14;
+
sprite->data0 = (sprite->data0 + sprite->data1) & 0xFF;
sprite->data5 += 0x82;
sprite->pos2.y += sprite->data5 >> 8;
sprite->data2++;
- if(sprite->data2 == sprite->data3)
+ if (sprite->data2 == sprite->data3)
move_anim_8072740(sprite);
}
void sub_80CCD24(struct Sprite* sprite)
{
- if(NotInBattle() != 0)
+ if (NotInBattle() != 0)
{
gBattleAnimArgs[1] += 8;
}
+
sprite->pos1.x = sub_8077EE4(gBattleAnimBankAttacker, 0) + gBattleAnimArgs[0];
sprite->pos1.y = sub_8077EE4(gBattleAnimBankAttacker, 1) + gBattleAnimArgs[1];
if (GetBankSide(gBattleAnimBankAttacker) == 0 || NotInBattle())
sprite->oam.priority = sub_8079ED4(gBattleAnimBankAttacker) + 1;
else
sprite->oam.priority = sub_8079ED4(gBattleAnimBankAttacker);
+
sprite->data0 = gBattleAnimArgs[2];
sprite->data2 = (IndexOfSpritePaletteTag(0x2828) << 4) + 0x100;
sprite->data7 = 16;
@@ -1990,24 +1955,26 @@ void sub_80CCE0C(struct Sprite* sprite)
sprite->data5 += 0x60;
sprite->pos2.x = -(sprite->data5 >> 8);
sprite->data1++;
- if(sprite->data1 > 1)
+ if (sprite->data1 > 1)
{
sprite->data1 = 0;
a = gPlttBufferFaded[sprite->data2 + 1];
i = 0;
do
- {
- gPlttBufferFaded[sprite->data2 + ++i] = gPlttBufferFaded[sprite->data2 + i + 1];
- }
- while ( i <= 5 );
+ {
+ gPlttBufferFaded[sprite->data2 + ++i] = gPlttBufferFaded[sprite->data2 + i + 1];
+ } while ( i <= 5 );
+
gPlttBufferFaded[sprite->data2 + 7] = a;
}
+
if (sprite->data7 > 6 && sprite->data0 >0 && ++sprite->data6 > 1)
{
sprite->data6 = 0;
sprite->data7 -= 1;
REG_BLDALPHA = (sprite->data7 << 8) | (16 - sprite->data7);;
}
+
if (sprite->data0 >0)
{
sprite->data0 -= 1;
@@ -2017,7 +1984,7 @@ void sub_80CCE0C(struct Sprite* sprite)
sprite->data6 = 0;
sprite->data7++;
REG_BLDALPHA = (sprite->data7 << 8) | (16 - sprite->data7);
- if(sprite->data7 == 16)
+ if (sprite->data7 == 16)
{
sprite->invisible = 1;
sprite->callback = sub_807861C;
@@ -2043,98 +2010,95 @@ void sub_80CCF04(struct Sprite* sprite)
void sub_80CCF70(struct Sprite* sprite)
{
- switch(sprite->data0)
+ switch (sprite->data0)
{
- case 0:
- {
- if(++sprite->data2 > 0)
- {
- sprite->data2 = 0;
- if(((++sprite->data1) & 1) != 0)
- {
- if(sprite->data6 <= 15)
- sprite->data6++;
- }
- else if (sprite->data7 > 0)
- sprite->data7--;
- REG_BLDALPHA = (sprite->data7 << 8) | sprite->data6;
- if(sprite->data6 == 16 && sprite->data7 == 0)
- {
- sprite->data1 = 0;
- sprite->data0++;
- break;
- }
- }
- break;
- }
- case 1:
- {
- if(++sprite->data1 > 8)
- {
- sprite->data1 = 0;
- StartSpriteAffineAnim(sprite, 1);
- sprite->data0++;
- break;
- }
- break;
- }
- case 2:
+ case 0:
+ if (++sprite->data2 > 0)
{
- sub_80CD0CC(sprite, 16, 4);
- if(++sprite->data1 > 2)
- {
- sprite->data1 = 0;
- sprite->pos1.y++;
- }
- if(++sprite->data2 <= 29)
- break;
- if(sprite->data2 & 1)
+ sprite->data2 = 0;
+ if (((++sprite->data1) & 1) != 0)
{
- if(sprite->data6 > 0)
- sprite->data6--;
+ if (sprite->data6 <= 15)
+ sprite->data6++;
}
- else if(sprite->data7 <= 15)
- sprite->data7++;
+ else if (sprite->data7 > 0)
+ sprite->data7--;
+
REG_BLDALPHA = (sprite->data7 << 8) | sprite->data6;
- if(sprite->data6 == 0 && sprite->data7 == 16)
+ if (sprite->data6 == 16 && sprite->data7 == 0)
{
sprite->data1 = 0;
- sprite->data2 = 0;
sprite->data0++;
- break;
}
- else
- break;
}
- case 3:
+ break;
+ case 1:
+ if (++sprite->data1 > 8)
{
- sprite->invisible = 1;
+ sprite->data1 = 0;
+ StartSpriteAffineAnim(sprite, 1);
sprite->data0++;
+ }
+ break;
+ case 2:
+ sub_80CD0CC(sprite, 16, 4);
+ if (++sprite->data1 > 2)
+ {
+ sprite->data1 = 0;
+ sprite->pos1.y++;
+ }
+
+ if (++sprite->data2 <= 29)
break;
+
+ if (sprite->data2 & 1)
+ {
+ if (sprite->data6 > 0)
+ sprite->data6--;
}
- case 4:
+ else if (sprite->data7 <= 15)
{
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
- move_anim_8072740(sprite);
+ sprite->data7++;
+ }
+
+ REG_BLDALPHA = (sprite->data7 << 8) | sprite->data6;
+ if (sprite->data6 == 0 && sprite->data7 == 16)
+ {
+ sprite->data1 = 0;
+ sprite->data2 = 0;
+ sprite->data0++;
}
+ break;
+ case 3:
+ sprite->invisible = 1;
+ sprite->data0++;
+ break;
+ case 4:
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ move_anim_8072740(sprite);
+ break;
}
}
void sub_80CD0CC(struct Sprite* sprite, int unk1, int unk2)
{
- if(sprite->data3 <= 11)
+ if (sprite->data3 <= 11)
sprite->data4 += 2;
- if((u16)(sprite->data3 - 0x12) <= 0x17)
+
+ if ((u16)(sprite->data3 - 0x12) <= 0x17)
sprite->data4 -= 2;
- if((sprite->data3) > 0x2F)
+
+ if ((sprite->data3) > 0x2F)
sprite->data4 += 2;
+
sprite->pos2.x = sprite->data4 / 9;
sprite->pos2.y = sprite->data4 / 14;
- if(sprite->pos2.y < 0)
+ if (sprite->pos2.y < 0)
sprite->pos2.y *= -1;
+
sprite->data3++;
- if(sprite->data3 > 0x3B)
+ if (sprite->data3 > 0x3B)
sprite->data3 = 0;
}
@@ -2142,6 +2106,7 @@ void sub_80CD140(struct Sprite* sprite)
{
if (!gBattleAnimArgs[2])
sub_8078650(sprite);
+
sub_807867C(sprite, gBattleAnimArgs[0]);
sprite->pos1.y += gBattleAnimArgs[1];
sprite->data0 = gBattleAnimArgs[5];
@@ -2158,6 +2123,7 @@ void sub_80CD190(struct Sprite* sprite)
bank = gBattleAnimBankAttacker;
else
bank = gBattleAnimBankTarget;
+
if (IsDoubleBattle() && IsAnimBankSpriteVisible(bank ^ 2))
{
sub_807A3FC(bank, gBattleAnimArgs[6], &sprite->pos1.x, &sprite->pos1.y);
@@ -2176,8 +2142,10 @@ void sub_80CD190(struct Sprite* sprite)
sprite->pos1.x = sub_8077ABC(bank, 2);
sprite->pos1.y = sub_8077ABC(bank, 3) + gBattleAnimArgs[1];
}
+
sub_807867C(sprite, gBattleAnimArgs[0]);
}
+
sprite->data0 = gBattleAnimArgs[5];
sprite->data1 = gBattleAnimArgs[3];
sprite->data2 = gBattleAnimArgs[4];
@@ -2199,6 +2167,7 @@ void sub_80CD274(struct Sprite* sprite)
sprite->pos1.y += gBattleAnimArgs[1];
StartSpriteAnim(sprite, 1);
}
+
sprite->callback = sub_80CD2D4;
}
@@ -2210,7 +2179,8 @@ void sub_80CD2D4(struct Sprite* sprite)
sprite->pos2.x = Sin(sprite->data1 * 4, 3);
sprite->data1++;
}
- if(sprite->animEnded)
+
+ if (sprite->animEnded)
move_anim_8072740(sprite);
}
@@ -2230,6 +2200,7 @@ void sub_80CD328(struct Sprite* sprite)
sprite->data3 = 0xFFFF;
StartSpriteAffineAnim(sprite, 1);
}
+
sprite->callback = sub_80CD394;
}
@@ -2254,27 +2225,28 @@ void sub_80CD3E0(struct Sprite* sprite)
void sub_80CD408(struct Sprite* sprite)
{
- switch(sprite->data5 & 1)
+ switch (sprite->data5 & 1)
{
- case 0:
- sprite->data0 = 1;
- sprite->callback = sub_80782D8;
- StoreSpriteCallbackInData6(sprite, sub_80CD408);
- break;
- case 1:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
- sprite->data0 = 8;
- sprite->data2 = sprite->pos1.x + gUnknown_083D6DDC[sprite->data5 >> 8][0];
- sprite->data4 = sprite->pos1.y + gUnknown_083D6DDC[sprite->data5 >> 8][1];
- sprite->callback = sub_8078B34;
- StoreSpriteCallbackInData6(sprite, sub_80CD4B8);
- sprite->data5 += 0x100;
- PlaySE12WithPanning(0xD2, sub_8076F98(0x3F));
- break;
+ case 0:
+ sprite->data0 = 1;
+ sprite->callback = sub_80782D8;
+ StoreSpriteCallbackInData6(sprite, sub_80CD408);
+ break;
+ case 1:
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ sprite->data0 = 8;
+ sprite->data2 = sprite->pos1.x + gUnknown_083D6DDC[sprite->data5 >> 8][0];
+ sprite->data4 = sprite->pos1.y + gUnknown_083D6DDC[sprite->data5 >> 8][1];
+ sprite->callback = sub_8078B34;
+ StoreSpriteCallbackInData6(sprite, sub_80CD4B8);
+ sprite->data5 += 0x100;
+ PlaySE12WithPanning(0xD2, sub_8076F98(0x3F));
+ break;
}
+
sprite->data5 ^= 1;
}
@@ -2287,14 +2259,16 @@ void sub_80CD4B8(struct Sprite* sprite)
StoreSpriteCallbackInData6(sprite, sub_80CD4EC);
}
else
+ {
sprite->callback = sub_80CD408;
+ }
}
void sub_80CD4EC(struct Sprite* sprite)
{
s16 a;
s16 b;
- if(sprite->oam.affineParam == 0)
+ if (sprite->oam.affineParam == 0)
{
sprite->data0 = 3;
sprite->data1 = 0;
@@ -2304,25 +2278,26 @@ void sub_80CD4EC(struct Sprite* sprite)
}
else
{
- switch(sprite->oam.affineParam)
+ switch (sprite->oam.affineParam)
{
- case 1:
- a = -8;
- b = -8;
- break;
- case 2:
- a = -8;
- b = 8;
- break;
- case 3:
- a = 8;
- b = -8;
- break;
- default:
- a = 8;
- b = 8;
- break;
+ case 1:
+ a = -8;
+ b = -8;
+ break;
+ case 2:
+ a = -8;
+ b = 8;
+ break;
+ case 3:
+ a = 8;
+ b = -8;
+ break;
+ default:
+ a = 8;
+ b = 8;
+ break;
}
+
sprite->pos1.x += sprite->pos2.x;
sprite->pos1.y += sprite->pos2.y;
sprite->pos2.y = 0;
@@ -2343,7 +2318,10 @@ void sub_80CD5A8(struct Sprite* sprite)
sprite->data1 = 16;
}
else if ((sprite->data1 -= 3) < 0)
- sprite->data1 = 0;
+ {
+ sprite->data1 = 0;
+ }
+
BlendPalettes(sub_80791A8(1, 1, 1, 1, 1, 0, 0), sprite->data1, 0x7FFF);
if (sprite->data1 == 16)
{
@@ -2354,7 +2332,9 @@ void sub_80CD5A8(struct Sprite* sprite)
PlaySE12WithPanning(0xC0, sub_8076F98(0x3F));
}
else if (sprite->data1 == 0)
+ {
sprite->callback = sub_80CD654;
+ }
}
void sub_80CD654(struct Sprite* sprite)
@@ -2374,6 +2354,7 @@ void sub_80CD67C(struct Sprite* sprite)
sprite->data1++;
sprite->invisible ^= 1;
}
+
sprite->data0++;
if (sprite->data1 == 8)
move_anim_8072740(sprite);
@@ -2387,13 +2368,13 @@ void sub_80CD6CC(struct Sprite* sprite)
sprite->pos1.x -= 0x18;
sprite->pos1.y -= 0x18;
}
- else if((s16)sprite->oam.affineParam == 2)
+ else if ((s16)sprite->oam.affineParam == 2)
{
sprite->pos1.x -= 0x18;
sprite->pos1.y += 0x18;
sprite->oam.matrixNum = 16;
}
- else if((s16)sprite->oam.affineParam == 3)
+ else if ((s16)sprite->oam.affineParam == 3)
{
sprite->pos1.x += 0x18;
sprite->pos1.y -= 0x18;
@@ -2405,6 +2386,7 @@ void sub_80CD6CC(struct Sprite* sprite)
sprite->pos1.y += 0x18;
sprite->oam.matrixNum = 24;
}
+
sprite->oam.tileNum = (sprite->oam.tileNum + 16);
sprite->callback = sub_80CD3E0;
sub_80CD3E0(sprite);
@@ -2414,20 +2396,20 @@ void sub_80CD774(struct Sprite* sprite)
{
sprite->invisible = 1;
sprite->data0 = 0;
- switch(gBattleAnimArgs[0])
+ switch (gBattleAnimArgs[0])
{
- case 0:
- sprite->callback = sub_80CD7CC;
- break;
- case 1:
- sprite->callback = sub_80CD8A8;
- break;
- case 2:
- sprite->callback = sub_80CD8F8;
- break;
- default:
- sprite->callback = sub_80CD9B8;
- break;
+ case 0:
+ sprite->callback = sub_80CD7CC;
+ break;
+ case 1:
+ sprite->callback = sub_80CD8A8;
+ break;
+ case 2:
+ sprite->callback = sub_80CD8F8;
+ break;
+ default:
+ sprite->callback = sub_80CD9B8;
+ break;
}
}
@@ -2450,6 +2432,7 @@ void sub_80CD81C(struct Sprite* sprite)
sprite->data4 = (sprite->data6 = GetBankSide(gBattleAnimBankAttacker)) ? 0x300 : 0xFFFFFD00;
sprite->data5 = 0;
}
+
sprite->data5 += sprite->data4;
obj_id_set_rotscale(sprite->data3, 0x100, 0x100, sprite->data5);
sub_8078F9C(sprite->data3);
@@ -2472,7 +2455,7 @@ void sub_80CD8A8(struct Sprite* sprite)
void sub_80CD8F8(struct Sprite* sprite)
{
- if(++sprite->data0 > 8)
+ if (++sprite->data0 > 8)
{
sprite->data0 = 0;
sprite->callback = sub_80CD91C;
@@ -2496,6 +2479,7 @@ void sub_80CD91C(struct Sprite* sprite)
sprite->data5 = 0xF400;
}
}
+
sprite->data5 += sprite->data4;
obj_id_set_rotscale(sprite->data3, 0x100, 0x100, sprite->data5);
sub_8078F9C(sprite->data3);
@@ -2519,37 +2503,37 @@ void sub_80CD9C4(struct Sprite* sprite)
void sub_80CD9D4(struct Sprite* sprite)
{
- switch(sprite->data0)
+ switch (sprite->data0)
{
- case 0:
+ case 0:
+ sprite->data1 = 0;
+ sprite->data2 = gObjectBankIDs[gBattleAnimBankAttacker];
+ sprite->data3 = GetBankSide(gBattleAnimBankAttacker);
+ sprite->data4 = (sprite->data3 != 0) ? 0x200 : -0x200;
+ sprite->data5 = 0;
+ sub_8078E70(sprite->data2, 0);
+ sprite->data0++;
+ case 1:
+ sprite->data5 += sprite->data4;
+ obj_id_set_rotscale(sprite->data2, 0x100, 0x100, sprite->data5);
+ sub_8078F9C(sprite->data2);
+ if (++sprite->data1 > 3)
+ {
sprite->data1 = 0;
- sprite->data2 = gObjectBankIDs[gBattleAnimBankAttacker];
- sprite->data3 = GetBankSide(gBattleAnimBankAttacker);
- sprite->data4 = (sprite->data3 != 0) ? 0x200 : -0x200;
- sprite->data5 = 0;
- sub_8078E70(sprite->data2, 0);
+ sprite->data4 *= -1;
sprite->data0++;
- case 1:
- sprite->data5 += sprite->data4;
- obj_id_set_rotscale(sprite->data2, 0x100, 0x100, sprite->data5);
- sub_8078F9C(sprite->data2);
- if (++sprite->data1 > 3)
- {
- sprite->data1 = 0;
- sprite->data4 *= -1;
- sprite->data0++;
- }
- break;
- case 2:
- sprite->data5 += sprite->data4;
- obj_id_set_rotscale(sprite->data2, 0x100, 0x100, sprite->data5);
- sub_8078F9C(sprite->data2);
- if (++sprite->data1 > 3)
- {
- sub_8078F40(sprite->data2);
- move_anim_8072740(sprite);
- }
- break;
+ }
+ break;
+ case 2:
+ sprite->data5 += sprite->data4;
+ obj_id_set_rotscale(sprite->data2, 0x100, 0x100, sprite->data5);
+ sub_8078F9C(sprite->data2);
+ if (++sprite->data1 > 3)
+ {
+ sub_8078F40(sprite->data2);
+ move_anim_8072740(sprite);
+ }
+ break;
}
}
@@ -2559,41 +2543,43 @@ void sub_80CDAC8(u8 taskId)
a = GetBankSide(gBattleAnimBankAttacker);
gTasks[taskId].data[1] = a;
gTasks[taskId].data[2] = 0;
- switch(gBattleAnimArgs[0])
+ switch (gBattleAnimArgs[0])
{
- default:
- DestroyAnimVisualTask(taskId);
- break;
- case 0:
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].data[3] = 8;
- gTasks[taskId].data[4] = 0;
- gTasks[taskId].data[5] = 3;
- if (a == 0)
- gTasks[taskId].data[5] *= -1;
- gTasks[taskId].func = sub_80CDB60;
- break;
- case 1:
- gTasks[taskId].data[3] = 8;
- gTasks[taskId].data[4] = 0x600;
- gTasks[taskId].data[5] = 0xC0;
- if (a == 0)
- {
- gTasks[taskId].data[4] = -gTasks[taskId].data[4];
- gTasks[taskId].data[5] = -gTasks[taskId].data[5];
- }
- gTasks[taskId].func = sub_80CDD20;
- break;
+ default:
+ DestroyAnimVisualTask(taskId);
+ break;
+ case 0:
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 8;
+ gTasks[taskId].data[4] = 0;
+ gTasks[taskId].data[5] = 3;
+ if (a == 0)
+ gTasks[taskId].data[5] *= -1;
+
+ gTasks[taskId].func = sub_80CDB60;
+ break;
+ case 1:
+ gTasks[taskId].data[3] = 8;
+ gTasks[taskId].data[4] = 0x600;
+ gTasks[taskId].data[5] = 0xC0;
+ if (a == 0)
+ {
+ gTasks[taskId].data[4] = -gTasks[taskId].data[4];
+ gTasks[taskId].data[5] = -gTasks[taskId].data[5];
+ }
+
+ gTasks[taskId].func = sub_80CDD20;
+ break;
}
}
void sub_80CDB60(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch(task->data[2])
+ switch (task->data[2])
{
case 0:
- if(task->data[3])
+ if (task->data[3])
{
task->data[4] += task->data[5];
gSprites[task->data[0]].pos2.x = task->data[4];
@@ -2638,6 +2624,7 @@ void sub_80CDB60(u8 taskId)
gSprites[task->data[0]].pos2.x = task->data[4] + task->data[5];
else
gSprites[task->data[0]].pos2.x = task->data[4] - task->data[5];
+
task->data[6] = 1;
task->data[3]--;
}
@@ -2706,6 +2693,7 @@ void sub_80CDD74(struct Sprite* sprite)
sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[1];
sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[2];
}
+
sprite->data0 = 0;
sprite->data1 = 0;
StoreSpriteCallbackInData6(sprite, sub_80CDEC0);
@@ -2751,11 +2739,11 @@ void sub_80CDEB0(struct Sprite* sprite)
void sub_80CDEC0(struct Sprite* sprite)
{
- if(++sprite->data0 > 1)
+ if (++sprite->data0 > 1)
{
sprite->data0 = 0;
sprite->invisible = !sprite->invisible;
- if(++sprite->data1 > 8)
+ if (++sprite->data1 > 8)
move_anim_8072740(sprite);
}
}
@@ -2772,6 +2760,7 @@ void sub_80CDF0C(struct Sprite* sprite)
sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 0) + gBattleAnimArgs[1];
sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 1) + gBattleAnimArgs[2];
}
+
sprite->data0 = 0;
sprite->data1 = gBattleAnimArgs[3];
sprite->callback = sub_80CDF70;
@@ -2784,6 +2773,7 @@ void sub_80CDF70(struct Sprite* sprite)
sprite->data0 = 0;
sprite->pos1.y--;
}
+
sprite->pos1.y -= sprite->data0;
if (sprite->animEnded)
move_anim_8072740(sprite);
@@ -2813,6 +2803,7 @@ void sub_80CE000(struct Sprite* sprite)
if (!(sprite->data4 & 1))
PlaySE12WithPanning(SE_W207B, sprite->data5);
}
+
sprite->data0 = 0;
if (++sprite->data2 > 1)
{
@@ -2820,6 +2811,7 @@ void sub_80CE000(struct Sprite* sprite)
sprite->data1++;
}
}
+
if (sprite->animEnded && sprite->data1 > 16 && sprite->invisible)
move_anim_8072740(sprite);
}
@@ -2834,6 +2826,7 @@ void sub_80CE09C(struct Sprite* sprite)
sprite->pos1.y += 10;
sprite->data0++;
}
+
if ((u16)gBattleAnimArgs[7] == 0xFFFF)
move_anim_8072740(sprite);
}
@@ -2873,7 +2866,9 @@ void sub_80CE17C(struct Sprite* sprite)
void sub_80CE1AC(struct Sprite* sprite)
{
if (sprite->data0)
+ {
sprite->data0--;
+ }
else
{
sprite->animPaused = 0;
@@ -2904,9 +2899,11 @@ void unref_sub_80CE260(u8 taskId)
{
if (gBattleAnimArgs[0] == 1 && GetBankSide(i) == 0)
sub_8043DB0(gHealthboxIDs[i]);
+
if (gBattleAnimArgs[1] == 1 && GetBankSide(i) == 1)
sub_8043DB0(gHealthboxIDs[i]);
}
+
DestroyAnimVisualTask(taskId);
}
@@ -2914,7 +2911,10 @@ void unref_sub_80CE2D4(u8 taskId)
{
u8 i;
for (i = 0; i < gNoOfAllBanks; i++)
+ {
sub_8043DFC(gHealthboxIDs[i]);
+ }
+
DestroyAnimVisualTask(taskId);
}
@@ -2930,6 +2930,7 @@ void sub_80CE30C(struct Sprite* sprite)
sprite->pos1.x = gBattleAnimArgs[0];
sprite->pos1.y = gBattleAnimArgs[1];
}
+
sprite->oam.shape = 0;
sprite->oam.size = 3;
sprite->data0 = 0;
@@ -2965,6 +2966,7 @@ void sub_80CE3B0(struct Sprite* sprite)
sprite->data2++;
}
}
+
if (sprite->data0)
move_anim_8072740(sprite);
}
@@ -2975,6 +2977,7 @@ void sub_80CE3EC(u8 taskId)
int b;
int c;
int d;
+
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = 0;
@@ -3000,71 +3003,76 @@ void sub_80CE4D4(u8 taskId)
struct Task* task = &gTasks[taskId];
switch (task->data[0])
{
- case 0:
- if (++task->data[1] > 0)
+ case 0:
+ if (++task->data[1] > 0)
+ {
+ u16 color;
+ u16 bitmask;
+ u16 r3;
+ u16 i;
+ u16 j;
+ task->data[1] = 0;
+ if (++task->data[2] <= 15)
{
- u16 color;
- u16 bitmask;
- u16 r3;
- u16 i;
- u16 j;
- task->data[1] = 0;
- if (++task->data[2] <= 15)
- {
- u16 red;
- u16 green;
- u16 blue;
- task->data[4] += task->data[7];
- task->data[5] += task->data[8];
- task->data[6] += task->data[9];
- red = task->data[4] >> 3;
- green = task->data[5] >> 3;
- blue = task->data[6] >> 3;
- color = RGB(red, green, blue);
- }
- else
- {
- color = RGB(27, 29, 31);
- task->data[0]++;
- }
- bitmask = 1;
- r3 = 0;
- for (i = 0; i <= 15; i++)
- {
- if (task->data[3] & bitmask)
- {
- for (j = 1; j <= 15; j++)
- gPlttBufferFaded[r3 + j] = color;
- }
- bitmask <<= 1;
- r3 += 16;
- }
+ u16 red;
+ u16 green;
+ u16 blue;
+ task->data[4] += task->data[7];
+ task->data[5] += task->data[8];
+ task->data[6] += task->data[9];
+ red = task->data[4] >> 3;
+ green = task->data[5] >> 3;
+ blue = task->data[6] >> 3;
+ color = RGB(red, green, blue);
}
- break;
- case 1:
- if (!gPaletteFade.active)
+ else
{
- u8 spriteId;
- for (spriteId = 0; spriteId < MAX_SPRITES; spriteId++)
+ color = RGB(27, 29, 31);
+ task->data[0]++;
+ }
+
+ bitmask = 1;
+ r3 = 0;
+ for (i = 0; i <= 15; i++)
+ {
+ if (task->data[3] & bitmask)
{
- if (gSprites[spriteId].template == &gBattleAnimSpriteTemplate_83D6FC8 || gSprites[spriteId].template == &gBattleAnimSpriteTemplate_83D6FF8)
- gSprites[spriteId].data0 = 1;
+ for (j = 1; j <= 15; j++)
+ {
+ gPlttBufferFaded[r3 + j] = color;
+ }
}
- task->data[1] = 0;
- task->data[0]++;
+
+ bitmask <<= 1;
+ r3 += 16;
}
- break;
- case 2:
- if (++task->data[1] > 30)
+ }
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ u8 spriteId;
+ for (spriteId = 0; spriteId < MAX_SPRITES; spriteId++)
{
- BeginNormalPaletteFade((u32)sub_8079BFC(task->data[14], task->data[15]), 0, 16, 0, RGB(27, 29, 31));
- task->data[0]++;
+ if (gSprites[spriteId].template == &gBattleAnimSpriteTemplate_83D6FC8 || gSprites[spriteId].template == &gBattleAnimSpriteTemplate_83D6FF8)
+ gSprites[spriteId].data0 = 1;
}
- break;
- case 3:
- if (!gPaletteFade.active)
- DestroyAnimVisualTask(taskId);
- break;
+
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (++task->data[1] > 30)
+ {
+ BeginNormalPaletteFade((u32)sub_8079BFC(task->data[14], task->data[15]), 0, 16, 0, RGB(27, 29, 31));
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ if (!gPaletteFade.active)
+ DestroyAnimVisualTask(taskId);
+ break;
}
}
@@ -3072,8 +3080,10 @@ void sub_80CE670(struct Sprite* sprite)
{
if (gBattleAnimArgs[2] <= 1)
gBattleAnimArgs[2] = 2;
+
if (gBattleAnimArgs[2] > 0x7F)
gBattleAnimArgs[2] = 0x7F;
+
sprite->data0 = 0;
sprite->data1 = gBattleAnimArgs[2];
sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[0];
@@ -3109,6 +3119,7 @@ void sub_80CE670(struct Sprite* sprite)
sprite->data5 = 0xA00 / sprite->data1;
sprite->oam.matrixNum = 24;
}
+
sprite->callback = sub_80CE798;
}
@@ -3123,6 +3134,7 @@ void sub_80CE798(struct Sprite* sprite)
sprite->pos1.x = sprite->data6;
sprite->pos1.y = sprite->data7;
}
+
if (sprite->data1 == 0)
move_anim_8072740(sprite);
}
@@ -3143,6 +3155,7 @@ void sub_80CE7E0(u8 taskId)
{
gPlttBufferUnfaded[r3 + i] = gPlttBufferUnfaded[r4 + i];
}
+
BlendPalette(r3, 16, 11, 0);
task->data[3] = 0;
i = 0;
@@ -3156,13 +3169,16 @@ void sub_80CE7E0(u8 taskId)
task->data[3]++;
i++;
}
+
task->func = sub_80CE910;
if (GetBankIdentity_permutated(gBattleAnimBankAttacker) == 1)
{
REG_DISPCNT &= 0xFDFF;
}
else
+ {
REG_DISPCNT &= 0xFBFF;
+ }
}
void sub_80CE910(u8 taskId)
@@ -3174,6 +3190,7 @@ void sub_80CE910(u8 taskId)
REG_DISPCNT |= 0x200;
else
REG_DISPCNT |= 0x400;
+
FreeSpritePaletteByTag(0x2771);
DestroyAnimVisualTask(taskId);
}
@@ -3186,6 +3203,7 @@ void sub_80CE974(struct Sprite* sprite)
sprite->data3 = 0;
sprite->data0++;
}
+
if (sprite->data0 > 0x40)
{
gTasks[sprite->data2].data[3]--;
@@ -3218,8 +3236,11 @@ void sub_80CEA20(u8 taskId)
{
index = (index << 4) + 0x100;
for (i = 1; i < 6; i++)
+ {
gPlttBufferFaded[index + i] = gUnknown_083D712C[0][i];
+ }
}
+
for (j = 1; j < 4; j++)
{
index = AllocSpritePalette(gUnknown_083D712C[j][0]);
@@ -3227,7 +3248,9 @@ void sub_80CEA20(u8 taskId)
{
index = (index << 4) + 0x100;
for (i = 1; i < 6; i++)
+ {
gPlttBufferFaded[index + i] = gUnknown_083D712C[j][i];
+ }
}
}
DestroyAnimVisualTask(taskId);
@@ -3237,7 +3260,10 @@ void sub_80CEAD8(u8 taskId)
{
u16 i;
for (i = 1; i < 4; i++)
+ {
FreeSpritePaletteByTag(gUnknown_083D712C[i][0]);
+ }
+
DestroyAnimVisualTask(taskId);
}
@@ -3250,6 +3276,7 @@ void sub_80CEB0C(struct Sprite* sprite)
StartSpriteAnim(sprite, gBattleAnimArgs[0]);
if ((index = IndexOfSpritePaletteTag(gUnknown_083D712C[gBattleAnimArgs[1]][0])) != 0xFF)
sprite->oam.paletteNum = index;
+
sprite->data1 = gBattleAnimArgs[1];
sprite->data2 = 0;
sprite->data3 = gBattleAnimArgs[2];
@@ -3263,6 +3290,7 @@ void sub_80CEB0C(struct Sprite* sprite)
a = sub_8077ABC(gBattleAnimBankTarget, 2);
b = sub_8077ABC(gBattleAnimBankTarget, 3);
}
+
sprite->data4 = sprite->pos1.x << 4;
sprite->data5 = sprite->pos1.y << 4;
sub_80CEBC4(a - sprite->pos1.x, b - sprite->pos1.y, &sprite->data6, &sprite->data7, 0x28);
@@ -3275,10 +3303,12 @@ void sub_80CEBC4(s16 a, s16 b, s16* c, s16* d, s8 e)
int g;
if (a < 0)
e = -e;
+
f = a << 8;
g = f / e;
if (g == 0)
g = 1;
+
*c = f / g;
*d = (b << 8) / g;
}
@@ -3299,18 +3329,19 @@ void sub_80CEC1C(struct Sprite* sprite)
sprite->pos2.y = Sin(b, 15);
a = (u16)sprite->pos1.y;
c = (u16)sprite->pos1.x;
- //SOMEBODY CLEAN THIS UP THIS IS MESSY AS HELL AND I'M PRETTY SURE I DID IT IN SOME TACKY WAY
+
if ((u32)((c + 16) << 16) > (0x110) << 16 || a < -16 || a > 0x80)
{
move_anim_8074EE0(sprite);
}
else
{
- if(sprite->data3 && ++sprite->data2 > sprite->data3)
+ if (sprite->data3 && ++sprite->data2 > sprite->data3)
{
sprite->data2 = 0;
if (++sprite->data1 > 3)
sprite->data1 = 0;
+
index = IndexOfSpritePaletteTag(gUnknown_083D712C[sprite->data1][0]);
if (index != 0xFF)
sprite->oam.paletteNum = index;
@@ -3326,6 +3357,7 @@ void sub_80CECE8(struct Sprite* sprite)
a = gBattleAnimArgs[1];
(u16)gBattleAnimArgs[1] = -a;
}
+
sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + gBattleAnimArgs[1];
sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[2];
StartSpriteAnim(sprite, gBattleAnimArgs[0]);
@@ -3352,6 +3384,7 @@ void sub_80CED78(struct Sprite* sprite)
if (sprite->data2 == 0)
sprite->data3 = 1;
}
+
if (++sprite->data0 == 0x30)
move_anim_8074EE0(sprite);
}
@@ -3365,7 +3398,10 @@ void sub_80CEDF0(struct Sprite* sprite)
a = 16;
}
else
+ {
a = -16;
+ }
+
sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + a;
sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) + 8;
sprite->data0 = 8;
@@ -3383,6 +3419,7 @@ void sub_80CEE60(struct Sprite* sprite)
index = IndexOfSpritePaletteTag(gUnknown_083D712C[gBattleAnimArgs[2]][0]);
if (index != 0xFF)
sprite->oam.paletteNum = index;
+
a = (gBattleAnimArgs[0] == 0) ? 0xFFE0 : 0x20;
sprite->data0 = 40;
sprite->data1 = sprite->pos1.x;
@@ -3402,12 +3439,15 @@ void sub_80CEEE8(struct Sprite* sprite)
a = Sin(sprite->data5, 8);
if (sprite->pos2.x < 0)
a = -a;
+
sprite->pos2.x += a;
sprite->pos2.y += Sin(sprite->data5, 4);
sprite->data5 = (sprite->data5 + 8) & 0xFF;
}
else
+ {
move_anim_8072740(sprite);
+ }
}
void sub_80CEF44(u8 bank, struct Sprite* sprite)
@@ -3416,6 +3456,7 @@ void sub_80CEF44(u8 bank, struct Sprite* sprite)
sprite->pos1.x = sub_807A100(bank, 5) + 8;
else
sprite->pos1.x = sub_807A100(bank, 4) - 8;
+
sprite->pos1.y = sub_8077ABC(bank, 3) - (s16)sub_807A100(bank, 0) / 4;
}
@@ -3427,6 +3468,7 @@ void sub_80CEF9C(struct Sprite* sprite)
bank = gBattleAnimBankAttacker;
else
bank = gBattleAnimBankTarget;
+
sub_80CEF44(bank, sprite);
a = (GetBankSide(bank) == 0) ? 0 : 1;
sprite->data0 = gBattleAnimArgs[1];
@@ -3453,6 +3495,7 @@ void sub_80CF040(struct Sprite* sprite)
bank = gBattleAnimBankAttacker;
else
bank = gBattleAnimBankTarget;
+
sub_80CEF44(bank, sprite);
sprite->data0 = 0;
StoreSpriteCallbackInData6(sprite, sub_80CF088);
@@ -3476,10 +3519,12 @@ void sub_80CF0BC(struct Sprite* sprite)
bank = gBattleAnimBankAttacker;
else
bank = gBattleAnimBankTarget;
+
sprite->pos1.x = sub_8077ABC(bank, 0);
sprite->pos1.y = sub_807A100(bank, 2);
if (sprite->pos1.y <= 9)
sprite->pos1.y = 10;
+
sprite->data0 = 1;
sprite->data1 = 0;
sprite->data2 = sprite->subpriority;
@@ -3509,12 +3554,17 @@ void sub_80CF158(struct Sprite* sprite)
return;
}
else
+ {
sprite->data1 &= 0xFF;
+ }
}
+
if (sprite->data1 > 0x4F)
sprite->subpriority = sprite->data3;
+
if (sprite->data1 > 0x9F)
sprite->subpriority = sprite->data2;
+
temp = gSineTable[sprite->data1];
sprite->pos2.x = (temp2 = temp >> 3) + (temp2 >> 1);
}
@@ -3526,6 +3576,7 @@ void sub_80CF1C8(struct Sprite* sprite)
bank = gBattleAnimBankAttacker;
else
bank = gBattleAnimBankTarget;
+
sub_80CEF44(bank, sprite);
if (GetBankSide(bank) == 0)
{
@@ -3537,6 +3588,7 @@ void sub_80CF1C8(struct Sprite* sprite)
StartSpriteAnim(sprite, 1);
sprite->data0 = 3;
}
+
sprite->callback = sub_80CF228;
}
@@ -3578,6 +3630,7 @@ void sub_80CF2D0(struct Sprite* sprite)
bank = gBattleAnimBankAttacker;
else
bank = gBattleAnimBankTarget;
+
sub_80CEF44(bank, sprite);
sprite->data0 = 0;
sprite->data1 = 0;
@@ -3588,20 +3641,20 @@ void sub_80CF310(struct Sprite* sprite)
{
switch (sprite->data0)
{
- case 0:
- sprite->pos2.y -= 3;
- if (++sprite->data1 == 6)
- sprite->data0++;
- break;
- case 1:
- sprite->pos2.y += 3;
- if (--sprite->data1 == 0)
- sprite->data0++;
- break;
- case 2:
- if (++sprite->data1 == 0x40)
- move_anim_8072740(sprite);
- break;
+ case 0:
+ sprite->pos2.y -= 3;
+ if (++sprite->data1 == 6)
+ sprite->data0++;
+ break;
+ case 1:
+ sprite->pos2.y += 3;
+ if (--sprite->data1 == 0)
+ sprite->data0++;
+ break;
+ case 2:
+ if (++sprite->data1 == 0x40)
+ move_anim_8072740(sprite);
+ break;
}
}
@@ -3616,6 +3669,7 @@ void sub_80CF374(struct Sprite* sprite)
gSprites[sprite->data2].pos2.x = 0;
move_anim_8074EE0(sprite);
}
+
sprite->data0--;
}
@@ -3633,6 +3687,7 @@ void sub_80CF3C4(struct Sprite* sprite)
{
sprite->pos1.x += gBattleAnimArgs[0];
}
+
sprite->pos1.y += gBattleAnimArgs[1];
sprite->data0 = gBattleAnimArgs[2];
sprite->data1 = gBattleAnimArgs[3];
@@ -3686,6 +3741,7 @@ void sub_80CF514(u8 taskId)
{
b = gTasks[taskId].data[0];
}
+
obj_id_set_rotscale(a, 0x100, 0x100, b);
if (gTasks[taskId].data[1] == 0)
{
@@ -3696,6 +3752,7 @@ void sub_80CF514(u8 taskId)
{
if (++gTasks[taskId].data[3] == 0x1E)
gTasks[taskId].data[1] = 2;
+
return;
}
else
@@ -3703,6 +3760,7 @@ void sub_80CF514(u8 taskId)
gTasks[taskId].data[0] -= 0xB0;
gSprites[a].pos2.y--;
}
+
sub_8078F9C(a);
if (gTasks[taskId].data[0] == 0xF20 || gTasks[taskId].data[0] == 0)
{
@@ -3734,6 +3792,7 @@ void sub_80CF610(struct Sprite* sprite)
if (gBattleAnimArgs[2] != 0)
sprite->vFlip = 1;
}
+
sprite->callback = sub_8078600;
StoreSpriteCallbackInData6(sprite, move_anim_8072740);
}
@@ -3762,13 +3821,16 @@ void sub_80CF6DC(struct Sprite* sprite)
u16 c;
if (NotInBattle())
+ {
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ }
else if (GetBankSide(gBattleAnimBankAttacker) != 0)
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
}
+
sub_80787B0(sprite, 1);
a = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[2];
b = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[3];
@@ -3776,6 +3838,7 @@ void sub_80CF6DC(struct Sprite* sprite)
c += 0xF000;
if (NotInBattle())
c -= 0x6000;
+
sub_8078FDC(sprite, 0, 0x100, 0x100, c);
sprite->data0 = gBattleAnimArgs[4];
sprite->data2 = a;
@@ -3806,16 +3869,19 @@ void sub_80CF814(struct Sprite* sprite)
sprite->data5 -= sprite->data3;
sprite->data6 -= sprite->data4;
}
+
sprite->data1 += sprite->data5;
sprite->data2 += sprite->data6;
if (1 & task->data[7])
sprite->pos2.x = ((u16)sprite->data1 >> 8) * -1;
else
sprite->pos2.x = (u16)sprite->data1 >> 8;
+
if (1 & task->data[8])
sprite->pos2.y = ((u16)sprite->data2 / 256u) * -1;
else
sprite->pos2.y = (u16)sprite->data2 / 256u;
+
if (sprite->data0-- <= 0)
{
sprite->data0 = 30;
@@ -3829,6 +3895,7 @@ void sub_80CF8B8(struct Sprite* sprite)
s16 a;
s16 b;
s16 c;
+
struct Task* task = &gTasks[sprite->data7];
sprite->data1 += (-2 & task->data[7]);
sprite->data2 += (-2 & task->data[8]);
@@ -3836,10 +3903,12 @@ void sub_80CF8B8(struct Sprite* sprite)
sprite->pos2.x = ((u16)sprite->data1 >> 8) * -1;
else
sprite->pos2.x = (u16)sprite->data1 >> 8;
+
if (1 & task->data[8])
sprite->pos2.y = ((u16)sprite->data2 / 256u) * -1;
else
sprite->pos2.y = (u16)sprite->data2 / 256u;
+
if (sprite->data0-- <= 0)
{
sprite->data0 = 8;
@@ -3853,10 +3922,12 @@ void sub_80CF8B8(struct Sprite* sprite)
b = (task->data[11] - sprite->pos1.x) << 8;
else
b = (sprite->pos1.x - task->data[11]) << 8;
+
if (task->data[12] >= sprite->pos1.y)
c = (task->data[12] - sprite->pos1.y) << 8;
else
c = (sprite->pos1.y - task->data[12]) << 8;
+
sprite->data2 = 0;
sprite->data1 = 0;
sprite->data6 = 0;
@@ -3883,13 +3954,14 @@ void sub_80CFA20(u8 taskId)
sprite = &gSprites[spriteId];
switch (gTasks[taskId].data[4])
{
- case 1:
- sprite->oam.matrixNum |= 24;
- break;
- case 2:
- sprite->oam.matrixNum = 8;
- break;
+ case 1:
+ sprite->oam.matrixNum |= 24;
+ break;
+ case 2:
+ sprite->oam.matrixNum = 8;
+ break;
}
+
sprite->data0 = gTasks[taskId].data[5] - gTasks[taskId].data[6];
sprite->data7 = taskId;
gTasks[taskId].data[gTasks[taskId].data[1] + 13] = spriteId;
@@ -3934,7 +4006,7 @@ void sub_80CFB04(u8 taskId)
r6 = gTasks[taskId].data[9] = sub_8077ABC(gBattleAnimBankAttacker, 0);
r9 = gTasks[taskId].data[10] = sub_8077ABC(gBattleAnimBankAttacker, 1);
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- && IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2))
+ && IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2))
{
sub_807A3FC(gBattleAnimBankTarget, 0, &sp1, &sp2);
}
@@ -3943,12 +4015,14 @@ void sub_80CFB04(u8 taskId)
sp1 = sub_8077ABC(gBattleAnimBankTarget, 0);
sp2 = sub_8077ABC(gBattleAnimBankTarget, 1);
}
+
sp1 = gTasks[taskId].data[11] = sp1 + gBattleAnimArgs[0];
sp2 = gTasks[taskId].data[12] = sp2 + gBattleAnimArgs[1];
if (sp1 >= r6)
r4 = sp1 - r6;
else
r4 = r6 - sp1;
+
gTasks[taskId].data[5] = sub_81174C4(r4, sub_81174E0(gBattleAnimArgs[2] & ~1));
gTasks[taskId].data[6] = sub_81174C4(gTasks[taskId].data[5], 0x80);
gTasks[taskId].data[7] = gBattleAnimArgs[2];
@@ -3962,6 +4036,7 @@ void sub_80CFB04(u8 taskId)
r4 = r9 - sp2;
gTasks[taskId].data[8] = sub_81174C4(r4, sub_81174E0(gTasks[taskId].data[5])) | 1;
}
+
gTasks[taskId].data[3] = gBattleAnimArgs[3];
if (gBattleAnimArgs[4] & 0x80)
{
@@ -3990,8 +4065,10 @@ void sub_80CFB04(u8 taskId)
gTasks[taskId].data[2] = var;
}
}
+
if (gTasks[taskId].data[2] < 3)
gTasks[taskId].data[2] = 3;
+
gTasks[taskId].func = sub_80CFA20;
}
@@ -4021,6 +4098,7 @@ void sub_80CFE2C(struct Sprite* sprite)
r1++;
r2++;
}
+
gPlttBufferFaded[sprite->data0 + 15] = r7;
if (++sprite->data2 == 0x18)
move_anim_8072740(sprite);
@@ -4102,6 +4180,7 @@ void sub_80CFE9C(struct Sprite* sprite)
r7 = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[3];
if (GetBankSide(gBattleAnimBankAttacker) != 0)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
r6 += gBattleAnimArgs[2];
var = sub_80790F0(r6 - sprite->pos1.x, r7 - sprite->pos1.y);
var += 0xC000;
@@ -4126,6 +4205,7 @@ void sub_80CFF68(struct Sprite* sprite)
sprite->pos2.x = sprite->data0 >> 8;
if (GetBankSide(gBattleAnimBankAttacker) == 0)
sprite->pos2.x = -sprite->pos2.x;
+
sprite->pos2.y = Sin(sprite->data1, sprite->data2);
sprite->data1 += 5;
if (sprite->data1 > 0x7E)
@@ -4159,9 +4239,11 @@ void sub_80D0030(struct Sprite* sprite)
sprite->pos2.y = 0;
sprite->pos2.x = 0;
ptr = &sprite->data7;
- for (i = 0; i < 8; i++) {
+ for (i = 0; i < 8; i++)
+ {
ptr[i - 7] = 0;
}
+
rand = Random();
sprite->data6 = 0xFFF4 - (rand & 7);
rand = Random();
@@ -4176,6 +4258,7 @@ void sub_80D00B4(struct Sprite* sprite)
sprite->pos2.x = sprite->data0 >> 8;
if (sprite->data7 & 1)
sprite->pos2.x = -sprite->pos2.x;
+
sprite->pos2.y = Sin(sprite->data1, sprite->data6);
sprite->data1 += 8;
if (sprite->data1 > 0x7E)
@@ -4192,6 +4275,7 @@ void sub_80D0118(struct Sprite* sprite)
sub_80787B0(sprite, 0);
if (GetBankSide(gBattleAnimBankAttacker) == 0)
sprite->pos1.y += 16;
+
sprite->data0 = gBattleAnimArgs[4];
sprite->data1 = gBattleAnimArgs[2];
sprite->data2 = gBattleAnimArgs[5];
@@ -4216,6 +4300,7 @@ void sub_80D0178(struct Sprite* sprite)
r6 = 16;
StartSpriteAnim(sprite, 1);
}
+
sprite->pos1.x += r7;
sprite->pos1.y += r4;
sprite->data0 = 6;
@@ -4245,6 +4330,7 @@ void sub_80D0228(struct Sprite* sprite)
r6 = 16;
StartSpriteAnim(sprite, gBattleAnimArgs[0]);
}
+
sprite->pos1.x += r8;
sprite->pos1.y += r4;
sprite->data0 = 6;
@@ -4284,6 +4370,7 @@ void sub_80D0344(struct Sprite* sprite)
sprite->pos2.x = -sprite->pos2.x;
sprite->pos2.y = -sprite->pos2.y;
}
+
sprite->data3 ^= 1;
if (++sprite->data4 == 0x33)
{
@@ -4345,64 +4432,64 @@ void sub_80D04E0(u8 taskId)
struct Task* task = &gTasks[taskId];
switch (task->data[1])
{
- case 0:
- if (task->data[2] == 0 || task->data[2] == 3 || task->data[2] == 6)
- sub_80D0614(task, taskId);
- task->data[2]++;
- task->data[4] += 0x28;
- obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0);
- sub_8079A64(task->data[0]);
- if (task->data[2] == 32)
- {
- task->data[5]++;
- task->data[1]++;
- }
- break;
- case 1:
- if (task->data[6] == 0)
- {
- if (task->data[5] == 3)
- {
- task->data[2] = 0;
- task->data[1] = 3;
- }
- else
- {
- task->data[2] = 0;
- task->data[3] = 0;
- task->data[4] = 0x100;
- obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0);
- sub_8079A64(task->data[0]);
- task->data[1] = 2;
- }
- }
- break;
- case 2:
- task->data[1] = 0;
- break;
- case 3:
- if (++task->data[2] > 32)
+ case 0:
+ if (task->data[2] == 0 || task->data[2] == 3 || task->data[2] == 6)
+ sub_80D0614(task, taskId);
+ task->data[2]++;
+ task->data[4] += 0x28;
+ obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0);
+ sub_8079A64(task->data[0]);
+ if (task->data[2] == 32)
+ {
+ task->data[5]++;
+ task->data[1]++;
+ }
+ break;
+ case 1:
+ if (task->data[6] == 0)
+ {
+ if (task->data[5] == 3)
{
task->data[2] = 0;
- task->data[1]++;
+ task->data[1] = 3;
}
- break;
- case 4:
- task->data[2] += 2;
- task->data[4] -= 0x50;
- obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0);
- sub_8079A64(task->data[0]);
- if (task->data[2] == 32)
+ else
{
task->data[2] = 0;
- task->data[1]++;
+ task->data[3] = 0;
+ task->data[4] = 0x100;
+ obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0);
+ sub_8079A64(task->data[0]);
+ task->data[1] = 2;
}
- break;
- case 5:
- sub_8078F40(task->data[0]);
- gSprites[task->data[15]].pos2.y = 0;
- DestroyAnimVisualTask(taskId);
- break;
+ }
+ break;
+ case 2:
+ task->data[1] = 0;
+ break;
+ case 3:
+ if (++task->data[2] > 32)
+ {
+ task->data[2] = 0;
+ task->data[1]++;
+ }
+ break;
+ case 4:
+ task->data[2] += 2;
+ task->data[4] -= 0x50;
+ obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0);
+ sub_8079A64(task->data[0]);
+ if (task->data[2] == 32)
+ {
+ task->data[2] = 0;
+ task->data[1]++;
+ }
+ break;
+ case 5:
+ sub_8078F40(task->data[0]);
+ gSprites[task->data[15]].pos2.y = 0;
+ DestroyAnimVisualTask(taskId);
+ break;
}
}
@@ -4414,7 +4501,9 @@ void sub_80D0614(struct Task* task, u8 taskId)
{
u8 r6 = AllocOamMatrix();
if (r6 == 0xFF)
+ {
obj_delete_but_dont_free_vram(&gSprites[r8]);
+ }
else
{
gSprites[r8].oam.objMode = 1;
@@ -4572,7 +4661,9 @@ void sub_80D074C(u8 taskId)
{
struct Task* task = &gTasks[taskId];
if (gBattleAnimArgs[1] == 0)
+ {
DestroyAnimVisualTask(taskId);
+ }
else
{
u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
@@ -4591,49 +4682,49 @@ void sub_80D07AC(u8 taskId)
struct Task* task = &gTasks[taskId];
switch (task->data[1])
{
- case 0:
- sub_807992C(task);
- task->data[4] += 3;
- gSprites[task->data[0]].pos2.y += task->data[4];
- if (++task->data[3] > 7)
- {
- task->data[3] = 0;
- task->data[1]++;
- }
- break;
- case 1:
- sub_807992C(task);
- gSprites[task->data[0]].pos2.y += task->data[4];
- if (++task->data[3] > 7)
- {
- task->data[3] = 0;
- task->data[1]++;
- }
- break;
- case 2:
- if (task->data[4] != 0)
+ case 0:
+ sub_807992C(task);
+ task->data[4] += 3;
+ gSprites[task->data[0]].pos2.y += task->data[4];
+ if (++task->data[3] > 7)
+ {
+ task->data[3] = 0;
+ task->data[1]++;
+ }
+ break;
+ case 1:
+ sub_807992C(task);
+ gSprites[task->data[0]].pos2.y += task->data[4];
+ if (++task->data[3] > 7)
+ {
+ task->data[3] = 0;
+ task->data[1]++;
+ }
+ break;
+ case 2:
+ if (task->data[4] != 0)
+ {
+ gSprites[task->data[0]].pos2.y -= 2;
+ task->data[4] -= 2;
+ }
+ else
+ task->data[1]++;
+ break;
+ case 3:
+ if (!sub_807992C(task))
+ {
+ if (--task->data[2] == 0)
{
- gSprites[task->data[0]].pos2.y -= 2;
- task->data[4] -= 2;
+ gSprites[task->data[0]].pos2.y = 0;
+ DestroyAnimVisualTask(taskId);
}
else
- task->data[1]++;
- break;
- case 3:
- if (!sub_807992C(task))
{
- if (--task->data[2] == 0)
- {
- gSprites[task->data[0]].pos2.y = 0;
- DestroyAnimVisualTask(taskId);
- }
- else
- {
- sub_80798F4(task, task->data[0], &gUnknown_083D76F4);
- task->data[1] = 0;
- }
+ sub_80798F4(task, task->data[0], &gUnknown_083D76F4);
+ task->data[1] = 0;
}
- break;
+ }
+ break;
}
}
@@ -4666,6 +4757,7 @@ void sub_80D0930(struct Sprite* sprite)
sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) - 32;
sprite->data1 = -0x40;
}
+
sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3);
sprite->data0 = 0x34;
sprite->data2 = 0;
@@ -4682,14 +4774,17 @@ void sub_80D09C0(struct Sprite* sprite)
bank = gBattleAnimBankAttacker;
else
bank = gBattleAnimBankTarget;
+
if (GetBankSide(bank) == 1)
{
gBattleAnimArgs[1] *= -1;
}
+
sprite->pos1.x = sub_8077ABC(bank, 2) + gBattleAnimArgs[1];
sprite->pos1.y = sub_8077ABC(bank, 3) + gBattleAnimArgs[2];
if (sprite->pos1.y <= 7)
sprite->pos1.y = 8;
+
StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
sprite->callback = sub_80785E4;
}
@@ -4726,6 +4821,7 @@ void sub_80D0AB8(u8 taskId)
task->data[9] = 2;
if (GetBankSide(gBattleAnimBankAttacker) == 1)
task->data[2] *= -1;
+
task->func = sub_80D0B3C;
}
@@ -4741,44 +4837,46 @@ void sub_80D0B3C(u8 taskId)
gSprites[task->data[0]].pos1.y += task->data[9];
}
else
+ {
gSprites[task->data[0]].pos1.y -= task->data[9];
+ }
}
switch (task->data[1])
{
- case 0:
- gSprites[task->data[0]].pos1.x += task->data[2];
- if (--task->data[3] == 0)
- {
- task->data[3] = 14;
- task->data[1] = 1;
- }
- break;
- case 1:
- gSprites[task->data[0]].pos1.x -= task->data[2];
- if (--task->data[3] == 0)
+ case 0:
+ gSprites[task->data[0]].pos1.x += task->data[2];
+ if (--task->data[3] == 0)
+ {
+ task->data[3] = 14;
+ task->data[1] = 1;
+ }
+ break;
+ case 1:
+ gSprites[task->data[0]].pos1.x -= task->data[2];
+ if (--task->data[3] == 0)
+ {
+ task->data[3] = 7;
+ task->data[1] = 2;
+ }
+ break;
+ case 2:
+ gSprites[task->data[0]].pos1.x += task->data[2];
+ if (--task->data[3] == 0)
+ {
+ if (--task->data[4] != 0)
{
task->data[3] = 7;
- task->data[1] = 2;
+ task->data[1] = 0;
}
- break;
- case 2:
- gSprites[task->data[0]].pos1.x += task->data[2];
- if (--task->data[3] == 0)
+ else
{
- if (--task->data[4] != 0)
- {
- task->data[3] = 7;
- task->data[1] = 0;
- }
- else
+ if ((task->data[8] & 1) != 0)
{
- if ((task->data[8] & 1) != 0)
- {
- gSprites[task->data[0]].pos1.y -= task->data[9];
- }
- DestroyAnimVisualTask(taskId);
+ gSprites[task->data[0]].pos1.y -= task->data[9];
}
+ DestroyAnimVisualTask(taskId);
}
+ }
break;
}
}
@@ -4786,7 +4884,7 @@ void sub_80D0B3C(u8 taskId)
void sub_80D0C88(u8 taskId)
{
struct Task* task = &gTasks[taskId];
- struct UnknownStruct_2 sp;
+ struct UnknownTaskStruct sp;
s16 i;
task->data[0] = sub_8077FC0(gBattleAnimBankTarget) + 32;
task->data[1] = 4;
@@ -4805,6 +4903,7 @@ void sub_80D0C88(u8 taskId)
task->data[6] = gUnknown_03004288;
sp.dest = (u16 *)REG_ADDR_BG2HOFS;
}
+
for (i = task->data[0] - 0x40; i <= task->data[0];i++)
{
if (i >= 0)
@@ -4813,6 +4912,7 @@ void sub_80D0C88(u8 taskId)
gUnknown_03004DE0.unk780[i] = task->data[6] + 0xF0;
}
}
+
sp.control = 0xa2600001;
sp.unk8 = 1;
sp.unk9 = 0;
@@ -4851,11 +4951,13 @@ void sub_80D0D68(u8 taskId)
task->data[5] += 1;
break;
}
+
if (task->data[5] >= 0)
{
gUnknown_03004DE0.unk0[task->data[5]] = task->data[6];
gUnknown_03004DE0.unk780[task->data[5]] = task->data[6];
}
+
if (++task->data[3] >= task->data[15])
{
gUnknown_03004DC0.unk15 = 3;
@@ -4997,58 +5099,58 @@ void sub_80D0E8C(struct Sprite* sprite)
{
switch (sprite->data0)
{
- case 0:
- if (++sprite->data2 > 1)
- {
- sprite->data2 = 0;
- sprite->invisible = !sprite->invisible;
- }
- if (++sprite->data1 > 16)
- {
- sprite->invisible = 0;
- sprite->data0++;
- }
- break;
- case 1:
- if (++sprite->data1 > 3 && sprite->data2 < sprite->data5)
- {
- sprite->data1 = 0;
- sprite->pos1.y -= 1;
- sprite->data2++;
- if (sprite->data2 % 10 == 0)
- PlaySE12WithPanning(0xCD, sprite->data6);
- }
- sprite->data4 += sprite->data3;
- if (sprite->data4 > 31)
- {
- sprite->data4 = 0x40 - sprite->data4;
- sprite->data3 *= -1;
- }
- else if (sprite->data4 <= -32)
- {
- sprite->data4 = -0x40 - sprite->data4;
- sprite->data3 *= -1;
- }
- sprite->pos2.x = sprite->data4;
- if (sprite->data5 == sprite->data2)
- {
- sprite->data1 = 0;
- sprite->data2 = 0;
- sprite->data0++;
- }
- break;
- case 2:
- if (++sprite->data2 > 1)
- {
- sprite->data2 = 0;
- sprite->invisible = !sprite->invisible;
- }
- if (++sprite->data1 > 16)
- {
- sprite->invisible = 0;
- move_anim_8072740(sprite);
- }
- break;
+ case 0:
+ if (++sprite->data2 > 1)
+ {
+ sprite->data2 = 0;
+ sprite->invisible = !sprite->invisible;
+ }
+ if (++sprite->data1 > 16)
+ {
+ sprite->invisible = 0;
+ sprite->data0++;
+ }
+ break;
+ case 1:
+ if (++sprite->data1 > 3 && sprite->data2 < sprite->data5)
+ {
+ sprite->data1 = 0;
+ sprite->pos1.y -= 1;
+ sprite->data2++;
+ if (sprite->data2 % 10 == 0)
+ PlaySE12WithPanning(0xCD, sprite->data6);
+ }
+ sprite->data4 += sprite->data3;
+ if (sprite->data4 > 31)
+ {
+ sprite->data4 = 0x40 - sprite->data4;
+ sprite->data3 *= -1;
+ }
+ else if (sprite->data4 <= -32)
+ {
+ sprite->data4 = -0x40 - sprite->data4;
+ sprite->data3 *= -1;
+ }
+ sprite->pos2.x = sprite->data4;
+ if (sprite->data5 == sprite->data2)
+ {
+ sprite->data1 = 0;
+ sprite->data2 = 0;
+ sprite->data0++;
+ }
+ break;
+ case 2:
+ if (++sprite->data2 > 1)
+ {
+ sprite->data2 = 0;
+ sprite->invisible = !sprite->invisible;
+ }
+ if (++sprite->data1 > 16)
+ {
+ sprite->invisible = 0;
+ move_anim_8072740(sprite);
+ }
+ break;
}
}
@@ -5063,6 +5165,7 @@ void sub_80D0FD8(struct Sprite* sprite)
bank = gBattleAnimBankAttacker;
else
bank = gBattleAnimBankTarget;
+
r4 = gBattleAnimArgs[3] ^ 1;
if (IsDoubleBattle() && IsAnimBankSpriteVisible(bank ^ 2))
{
@@ -5071,11 +5174,13 @@ void sub_80D0FD8(struct Sprite* sprite)
r4 = sub_8077ABC(bank, 0);
else
r4 = sub_8077ABC(bank, 2);
+
if (GetBankSide(bank) != 0)
gBattleAnimArgs[0] -= (sp0 - r4) - gBattleAnimArgs[0]; // This is weird.
else
gBattleAnimArgs[0] = sp0 - r4;
}
+
sprite->callback = sub_80793C4;
sub_80793C4(sprite);
}
@@ -5181,6 +5286,7 @@ void sub_80D1318(struct Sprite* sprite)
{
BlendPalette(((index << 20) + 0x1010000) >> 16, 15, gBattleAnimArgs[5], gBattleAnimArgs[4]);
}
+
StartSpriteAffineAnim(sprite, 1);
sprite->callback = sub_80793C4;
sub_80793C4(sprite);
@@ -5326,6 +5432,7 @@ void sub_80D1638(u8 taskId)
task->data[13] = 1;
task->data[14] = -8;
}
+
task->data[15] = GetAnimBankSpriteId(1);
task->func = sub_80D16A0;
}
@@ -5352,10 +5459,12 @@ void sub_80D16A0(u8 taskId)
gSprites[task->data[15]].pos2.x += 6;
else
gSprites[task->data[15]].pos2.x -= 6;
+
if (++task->data[3] > 4)
{
if (task->data[2] & 1)
gSprites[task->data[15]].pos2.x -= 6;
+
task->data[0]++;
}
}
@@ -5398,6 +5507,7 @@ void sub_80D1808(u8 taskId)
gSprites[task->data[15]].invisible = 0;
else
gSprites[task->data[15]].invisible = 1;
+
if (++task->data[3] >= task->data[13])
{
if (++task->data[4] < task->data[14])
@@ -5438,63 +5548,64 @@ void sub_80D1930(u8 taskId)
struct Task* task = &gTasks[taskId];
switch (task->data[8])
{
- case 0:
- if (++task->data[4] > 1)
+ case 0:
+ if (++task->data[4] > 1)
+ {
+ task->data[4] = 0;
+ task->data[5] = (task->data[5] + 1) & 1;
+ if (++task->data[6] > 20)
{
- task->data[4] = 0;
- task->data[5] = (task->data[5] + 1) & 1;
- if (++task->data[6] > 20)
+ if (task->data[7] == 0)
{
- if (task->data[7] == 0)
- {
- task->data[6] = 0;
- task->data[8] = 1;
- }
- else
- task->data[8] = 2;
+ task->data[6] = 0;
+ task->data[8] = 1;
}
+ else
+ task->data[8] = 2;
}
- break;
- case 1:
- task->data[5] = 0;
- if (++task->data[4] > 20)
- {
- task->data[7] = 1;
- task->data[8] = 0;
- }
- break;
- case 2:
- task->data[5] = 1;
- break;
+ }
+ break;
+ case 1:
+ task->data[5] = 0;
+ if (++task->data[4] > 20)
+ {
+ task->data[7] = 1;
+ task->data[8] = 0;
+ }
+ break;
+ case 2:
+ task->data[5] = 1;
+ break;
}
+
switch (task->data[0])
{
- case 0:
- if (++task->data[1] > 4)
+ case 0:
+ if (++task->data[1] > 4)
+ {
+ u8 spriteId;
+ task->data[1] = 0;
+ spriteId = CreateSprite(&gSpriteTemplate_83D79E8, task->data[14], task->data[15], 0);
+ if (spriteId != MAX_SPRITES)
{
- u8 spriteId;
- task->data[1] = 0;
- spriteId = CreateSprite(&gSpriteTemplate_83D79E8, task->data[14], task->data[15], 0);
- if (spriteId != MAX_SPRITES)
+ gSprites[spriteId].data0 = taskId;
+ gSprites[spriteId].data1 = 13;
+ gSprites[spriteId].pos2.x = gUnknown_083D7A00[task->data[2]][0];
+ gSprites[spriteId].pos2.y = gUnknown_083D7A00[task->data[2]][1];
+ task->data[13]++;
+ if (++task->data[2] > 3)
{
- gSprites[spriteId].data0 = taskId;
- gSprites[spriteId].data1 = 13;
- gSprites[spriteId].pos2.x = gUnknown_083D7A00[task->data[2]][0];
- gSprites[spriteId].pos2.y = gUnknown_083D7A00[task->data[2]][1];
- task->data[13]++;
- if (++task->data[2] > 3)
- {
- task->data[2] = 0;
- if (++task->data[3] > 5)
- task->data[0]++;
- }
+ task->data[2] = 0;
+ if (++task->data[3] > 5)
+ task->data[0]++;
}
}
- break;
- case 1:
- if (task->data[13] == 0)
- DestroyAnimVisualTask(taskId);
- break;
+ }
+ break;
+ case 1:
+ if (task->data[13] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
}
}
@@ -5517,7 +5628,10 @@ void sub_80D1ADC(u8 taskId)
void* what;
sp[0] = IndexOfSpritePaletteTag(0x27DE);
for (i = 1; i <= 4; i++)
+ {
sp[i] = AllocSpritePalette(0x2710 - i);
+ }
+
src = &gBattleAnimSpritePalette_206;
dest = (NotInBattle()) ? gSharedMem + 0x18000 - 0x3800: gSharedMem + 0x18000;
LZDecompressWram(src, dest);
@@ -5526,6 +5640,7 @@ void sub_80D1ADC(u8 taskId)
what = ((NotInBattle()) ? gSharedMem + 0x14800 : gSharedMem + 0x18000) + (i << 5);
LoadPalette(what, (u16)((sp[i] << 4) + 0x100), 32);
}
+
DestroyAnimVisualTask(taskId);
}
@@ -5533,7 +5648,10 @@ void sub_80D1B80(u8 taskId)
{
int i;
for (i = 0; i < 5; i++)
+ {
FreeSpritePaletteByTag(gUnknown_083D7A5C[i]);
+ }
+
DestroyAnimVisualTask(taskId);
}
@@ -5551,6 +5669,7 @@ void sub_80D1C08(struct Sprite* sprite)
sub_80787B0(sprite, 0);
if (GetBankSide(gBattleAnimBankAttacker) != 0)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
sprite->data0 = gBattleAnimArgs[4];
sprite->data2 = sub_8077ABC(gBattleAnimBankAttacker, 0) + gBattleAnimArgs[2];
sprite->data4 = sub_8077ABC(gBattleAnimBankAttacker, 1) + gBattleAnimArgs[3];
@@ -5563,6 +5682,7 @@ void sub_80D1C80(struct Sprite* sprite)
{
if (++sprite->data0 == 1)
sub_80787B0(sprite, 0);
+
sprite->pos2.x = Sin(sprite->data1, 8);
sprite->pos2.y = sprite->data2 >> 8;
sprite->data1 = (sprite->data1 + 7) & 0xFF;
@@ -5582,7 +5702,10 @@ void sub_80D1CD0(u8 taskId)
zero = 0;
}
else
+ {
zero = 0;
+ }
+
gUnknown_030042C4 = var;
gUnknown_03004240 = 0xA0;
REG_WIN0H = var;
@@ -5606,7 +5729,9 @@ void sub_80D1D48(u8 taskId)
gTasks[taskId].func = sub_80D1D9C;
}
else
+ {
gUnknown_030042C4 = gTasks[taskId].data[1] | (gTasks[taskId].data[0] << 8);
+ }
}
void sub_80D1D9C(u8 taskId)
@@ -5689,7 +5814,9 @@ void sub_80D1FA4(struct Sprite* sprite)
sprite->data5 = (sprite->data5 + 4) & 0xFF;
}
else
+ {
move_anim_8072740(sprite);
+ }
}
void sub_80D1FDC(struct Sprite* sprite)
@@ -5710,8 +5837,11 @@ void sub_80D1FDC(struct Sprite* sprite)
{
sprite->invisible = sprite->data3 % 2;
}
+
if (sprite->data3 > 0x78)
+ {
move_anim_8072740(sprite);
+ }
}
}
@@ -5751,6 +5881,7 @@ void sub_80D2100(u8 taskId)
REG_BG1CNT_BITFIELD.screenSize = 0;
if (!NotInBattle())
REG_BG1CNT_BITFIELD.charBaseBlock = 1;
+
gUnknown_030042C0 = 0;
gUnknown_030041B4 = 0;
REG_BG1HOFS = 0;
@@ -5763,6 +5894,7 @@ void sub_80D2100(u8 taskId)
LoadCompressedPalette(&gAttractPal, subStruct.field_8 << 4, 32);
if (NotInBattle())
sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0);
+
gTasks[taskId].func = sub_80D21F0;
}
@@ -5825,6 +5957,7 @@ void sub_80D21F0(u8 taskId)
DmaClear32(3, subStruct.field_4, 0x800);
if (!NotInBattle())
REG_BG1CNT_BITFIELD.charBaseBlock = 0;
+
gTasks[taskId].data[12]++;
// fall through
case 4:
@@ -5846,6 +5979,7 @@ void sub_80D23B4(u8 taskId)
REG_BG1CNT_BITFIELD.screenSize = 0;
if (!NotInBattle())
REG_BG1CNT_BITFIELD.charBaseBlock = 1;
+
gUnknown_030042C0 = 0;
gUnknown_030041B4 = 0;
REG_BG1HOFS = 0;
@@ -5859,10 +5993,12 @@ void sub_80D23B4(u8 taskId)
LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFacePlayer, subStruct.field_4);
else
LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFaceOpponent, subStruct.field_4);
+
LZDecompressVram(&gBattleAnimBackgroundImage_ScaryFace, subStruct.field_0);
LoadCompressedPalette(&gBattleAnimBackgroundPalette_ScaryFace, subStruct.field_8 << 4, 32);
if (NotInBattle())
sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0);
+
gTasks[taskId].func = sub_80D24E0;
}
@@ -5925,6 +6061,7 @@ void sub_80D24E0(u8 taskId)
DmaClear32(3, subStruct.field_4, 0x800);
if (!NotInBattle())
REG_BG1CNT_BITFIELD.charBaseBlock = 0;
+
gTasks[taskId].data[12]++;
// fall through
case 4:
@@ -5954,30 +6091,32 @@ void sub_80D2704(struct Sprite* sprite)
sprite->subpriority = sprite->data7 + 1;
else
sprite->subpriority = sprite->data7 - 1;
+
sprite->pos2.x = Sin(sprite->data1, sprite->data2 >> 8);
sprite->pos2.y = Cos(sprite->data1, sprite->data3 >> 8);
sprite->data1 = (sprite->data1 + 9) & 0xFF;
switch (sprite->data5)
{
- case 1:
- sprite->data2 -= 0x400;
- sprite->data3 -= 0x100;
- if (++sprite->data4 == sprite->data0)
- {
- sprite->data5 = 2;
- return;
- }
- break;
- case 0:
- sprite->data2 += 0x400;
- sprite->data3 += 0x100;
- if (++sprite->data4 == sprite->data0)
- {
- sprite->data4 = 0;
- sprite->data5 = 1;
- }
- break;
+ case 1:
+ sprite->data2 -= 0x400;
+ sprite->data3 -= 0x100;
+ if (++sprite->data4 == sprite->data0)
+ {
+ sprite->data5 = 2;
+ return;
+ }
+ break;
+ case 0:
+ sprite->data2 += 0x400;
+ sprite->data3 += 0x100;
+ if (++sprite->data4 == sprite->data0)
+ {
+ sprite->data4 = 0;
+ sprite->data5 = 1;
+ }
+ break;
}
+
if ((u16)gBattleAnimArgs[7] == 0xFFFF)
move_anim_8072740(sprite);
}
@@ -6037,16 +6176,19 @@ void sub_80D2938(struct Sprite* sprite)
sprite->pos1.x += gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
}
+
sprite->data0++;
r5 = (sprite->data0 * 10) & 0xFF;
sprite->pos2.x = Sin(r5, 0x50) >> 8;
if (sprite->data0 <= 0x4F)
sprite->pos2.y = (sprite->data0 / 2) + (Cos(r5, 0x50) >> 8);
+
if (sprite->data0 > 0x5A)
{
sprite->data2++;
sprite->pos2.x -= sprite->data2 / 2;
}
+
if (sprite->data0 > 0x64)
move_anim_8072740(sprite);
}
@@ -6059,6 +6201,7 @@ void sub_80D29CC(struct Sprite* sprite)
sprite->data3 = (sprite->data3 + 3) & 0xFF;
if (sprite->data5 > 20)
sprite->invisible = sprite->data5 % 2;
+
if (sprite->data5 > 30)
move_anim_8072740(sprite);
}
@@ -6102,13 +6245,16 @@ void sub_80D2A38(struct Sprite* sprite)
sprite->subpriority = sub_8079E90(gBattleAnimBankTarget) - 1;
sprite->data2 = 1;
}
+
sprite->data0 += sprite->data2;
var = sprite->data0 * 4;
if (var < 0)
var += 0xFF;
+
sprite->data1 = (sprite->data0 * 4) -(((var) >> 8) << 8);
if (sprite->data1 < 0)
sprite->data1 = 0;
+
var3 = sprite->data1;
var2 = sprite->data0;
var2 /= 4;