summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgolemgalvanize <throwawaygolem@gmail.com>2017-08-13 19:26:16 -0400
committerGitHub <noreply@github.com>2017-08-13 19:26:16 -0400
commitcd67e14e04c0fb58f876ddb96b0daabb4d0d1eac (patch)
tree10b98b0096fd0d0d602d2b9cc05a3b886c239f99
parente7a0e1a8406925ac94289bbe42bfe95c67464939 (diff)
Delete battle_anim_80CA710.c
-rwxr-xr-xsrc/battle_anim_80CA710.c2647
1 files changed, 0 insertions, 2647 deletions
diff --git a/src/battle_anim_80CA710.c b/src/battle_anim_80CA710.c
deleted file mode 100755
index 53494608a..000000000
--- a/src/battle_anim_80CA710.c
+++ /dev/null
@@ -1,2647 +0,0 @@
-#include "global.h"
-#include "battle.h"
-#include "battle_anim.h"
-#include "blend_palette.h"
-#include "decompress.h"
-#include "palette.h"
-#include "rng.h"
-#include "rom_8077ABC.h"
-#include "sound.h"
-#include "sprite.h"
-#include "task.h"
-#include "trig.h"
-
-struct __attribute__((packed)) Some3ByteStruct {
- u8 unkArr[3];
-};
-
-extern s16 gBattleAnimArgs[8];
-extern u8 gBattleAnimPlayerMonIndex;
-extern u8 gBattleAnimEnemyMonIndex;
-extern struct SpriteTemplate gSpriteTemplate_83D631C;
-extern struct SpriteTemplate gSpriteTemplate_83D6884;
-extern s16 gUnknown_03000728[];
-extern s8 gUnknown_083D680C[11][3];
-extern u16 gUnknown_083D6984[];
-
-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);
-
-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_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);
-
-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_80CC358(struct Task* task, u8 taskId);
-
-void sub_80CA710(struct Sprite* sprite)
-{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
- sprite->data0 = gBattleAnimArgs[2];
- sprite->data1 = gBattleAnimArgs[3];
- if (GetBankSide(gBattleAnimPlayerMonIndex))
- {
- sprite->data3 = -gBattleAnimArgs[4];
- }
- else
- {
- sprite->data3 = gBattleAnimArgs[4];
- }
- sprite->data4 = gBattleAnimArgs[5];
- sprite->callback = sub_80CA768;
-}
-
-void sub_80CA768(struct Sprite* sprite)
-{
- if (sprite->data0 > 0)
- {
- sprite->data0--;
- sprite->pos2.y = sprite->data2 >> 8;
- sprite->data2 += sprite->data1;
- sprite->pos2.x = Sin(sprite->data5, sprite->data3);
- sprite->data5 = (sprite->data5 + sprite->data4) & 0xFF;
- }
- else
- {
- move_anim_8072740(sprite);
- }
-}
-
-void sub_80CA7B0(struct Sprite* sprite)
-{
- sub_80787B0(sprite, 1);
- sprite->data0 = gBattleAnimArgs[2];
- sprite->data2 = sub_8077ABC(gBattleAnimPlayerMonIndex, 2);
- sprite->data4 = sub_8077ABC(gBattleAnimPlayerMonIndex, 3);
- sprite->callback = sub_8078B34;
- oamt_set_x3A_32(sprite, move_anim_8074EE0);
-}
-
-void sub_80CA800(struct Sprite* sprite)
-{
- sub_80787B0(sprite, 1);
- StartSpriteAnim(sprite, gBattleAnimArgs[3]);
- sprite->data0 = gBattleAnimArgs[2];
- sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2);
- sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3);
- sprite->callback = sub_8078B34;
- oamt_set_x3A_32(sprite, move_anim_8072740);
-}
-
-void sub_80CA858(struct Sprite* sprite)
-{
- sub_80787B0(sprite, 1);
- sprite->data0 = gBattleAnimArgs[2];
- sprite->data1 = sprite->pos1.x;
- sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2);
- sprite->data3 = sprite->pos1.y;
- sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3);
- obj_translate_based_on_private_1_2_3_4(sprite);
- sprite->data5 = gBattleAnimArgs[3];
- sprite->callback = sub_80CA8B4;
- sub_80CA8B4(sprite);
-}
-
-void sub_80CA8B4(struct Sprite* sprite)
-{
- if(sub_8078B5C(sprite))
- {
- DestroySprite(sprite);
- }
- else
- {
- if(sprite->data5 > 0x7F)
- {
- sprite->subpriority = sub_8079E90(gBattleAnimEnemyMonIndex) + 1;
- }
- else
- {
- sprite->subpriority = sub_8079E90(gBattleAnimEnemyMonIndex) + 6;
- }
- sprite->pos2.x += Sin(sprite->data5, 5);
- sprite->pos2.y += Cos(sprite->data5, 14);
- sprite->data5 = (sprite->data5 + 15) & 0xFF;
- }
-}
-
-void sub_80CA928(u8 taskId)
-{
- gTasks[taskId].data[0]--;
- if (gTasks[taskId].data[0] == -1)
- {
- gTasks[taskId].data[1]++;
- gTasks[taskId].data[0] = 6;
- gBattleAnimArgs[0] = 15;
- gBattleAnimArgs[1] = 0;
- gBattleAnimArgs[2] = 80;
- gBattleAnimArgs[3] = 0;
- CreateSpriteAndAnimate(&gSpriteTemplate_83D631C, 0, 0, sub_8079E90(gBattleAnimEnemyMonIndex) + 1);
- }
- if (gTasks[taskId].data[1] == 15) DestroyAnimVisualTask(taskId);
-}
-
-void sub_80CA9A8(struct Sprite* sprite)
-{
- sub_8078764(sprite, 1);
- sprite->data0 = gBattleAnimArgs[3];
- sprite->data2 = sub_8077ABC(gBattleAnimPlayerMonIndex, 2);
- sprite->data4 = sub_8077ABC(gBattleAnimPlayerMonIndex, 3);
- sprite->data5 = gBattleAnimArgs[2];
- sub_80786EC(sprite);
- sprite->callback = sub_80CA9F8;
-}
-
-void sub_80CA9F8(struct Sprite* sprite)
-{
- if (sub_8078718(sprite)) move_anim_8072740(sprite);
-}
-
-void sub_80CAA14(struct Sprite* sprite)
-{
- u16 a = Random();
- u16 b;
-
- StartSpriteAnim(sprite, a & 7);
- sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2);
- sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 3);
- if (GetBankSide(gBattleAnimPlayerMonIndex))
- {
- sprite->pos1.x -= 20;
- }
- else
- {
- sprite->pos1.x += 20;
- }
- b = Random();
- sprite->data0 = (b & 31) + 64;
- sprite->data1 = sprite->pos1.x;
- sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2);
- sprite->data3 = sprite->pos1.y;
- sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3);
- sub_8078D60(sprite);
- sprite->data5 = Random() & 0xFF;
- sprite->data6 = sprite->subpriority;
- sprite->callback = sub_80CAACC;
- sub_80CAACC(sprite);
-}
-
-void sub_80CAACC(struct Sprite* sprite)
-{
- if (sub_8078CE8(sprite))
- {
- move_anim_8072740(sprite);
- }
- else
- {
- sprite->pos2.y += Cos(sprite->data5, 12);
- if (sprite->data5 <= 0x7E)
- {
- sprite->subpriority = sprite->data6;
- }
- else
- {
- sprite->subpriority = sprite->data6 + 1;
- }
- sprite->data5 = (sprite->data5 + 24) & 0xFF;
- }
-}
-
-void sub_80CAB18(struct Sprite* sprite)
-{
- sub_80787B0(sprite, 1);
- if(GetBankSide(gBattleAnimPlayerMonIndex))
- {
- gBattleAnimArgs[2] = -gBattleAnimArgs[2];
- }
- sprite->data0 = gBattleAnimArgs[4];
- sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 0) + gBattleAnimArgs[2];
- sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 1) + gBattleAnimArgs[3];
- sprite->data5 = gBattleAnimArgs[5];
- sub_80786EC(sprite);
- sprite->callback = sub_80CAB88;
-}
-
-void sub_80CAB88(struct Sprite* sprite)
-{
- if(sub_8078718(sprite))
- {
- sprite->invisible = 1;
- sprite->data0 = 10;
- sprite->callback = sub_80782D8;
- oamt_set_x3A_32(sprite, sub_80CABC0);
- }
-}
-
-void sub_80CABC0(struct Sprite* sprite)
-{
- sprite->invisible = 0;
- StartSpriteAnim(sprite, 1);
- sprite->data0 = 60;
- sprite->callback = sub_80782D8;
- oamt_set_x3A_32(sprite, move_anim_8072740);
-}
-
-void sub_80CABF8(struct Sprite* sprite)
-{
- sub_8078764(sprite, 1);
- StartSpriteAnim(sprite, gBattleAnimArgs[4]);
- if (gBattleAnimArgs[4] == 1)
- {
- sprite->oam.objMode = 1;
- }
- sprite->data0 = gBattleAnimArgs[3];
- sprite->data1 = gBattleAnimArgs[2];
- sprite->callback = sub_80CAC44;
- sub_80CAC44(sprite);
-}
-
-void sub_80CAC44(struct Sprite* sprite)
-{
-
- u8 b;
-
- sprite->pos2.x = Sin(sprite->data1, 32);
- sprite->pos2.y = Cos(sprite->data1, -3) + ((sprite->data2 += 24) >> 8);
- if ((u16)(sprite->data1 - 0x40) < 0x80)
- {
- sprite->oam.priority = (sub_8079ED4(gBattleAnimEnemyMonIndex) & 3);
- }
- else
- {
- b = sub_8079ED4(gBattleAnimEnemyMonIndex) + 1;
- if ( b > 3)
- {
- b = 3;
- }
- sprite->oam.priority = b;
- }
- sprite->data1 = (sprite->data1 + 2) & 0xFF;
- sprite->data0--;
- if (sprite->data0 == -1) move_anim_8072740(sprite);
-}
-
-void sub_80CACEC(u8 taskId)
-{
- if(IsContest() || !IsDoubleBattle())
- {
- DestroyAnimVisualTask(taskId);
- }
- else
- {
- if (GetBankIdentity_permutated(gBattleAnimEnemyMonIndex) == 1)
- {
- REG_BG2CNT_BITFIELD.priority = 3;
- }
- else
- {
- REG_BG1CNT_BITFIELD.priority = 1;
- }
- DestroyAnimVisualTask(taskId);
- }
-}
-
-void sub_80CAD54(struct Sprite* sprite)
-{
- sub_80787B0(sprite, 0);
- sprite->data0 = gBattleAnimArgs[3];
- sprite->data1 = sprite->pos1.x;
- sprite->data2 = sprite->pos1.x;
- sprite->data3 = sprite->pos1.y;
- sprite->data4 = sub_8077ABC(gBattleAnimPlayerMonIndex, 3) + gBattleAnimArgs[2];
- obj_translate_based_on_private_1_2_3_4(sprite);
- sprite->data5 = 0x40;
- sprite->callback = sub_80CADA8;
- sub_80CADA8(sprite);
-}
-
-void sub_80CADA8(struct Sprite* sprite)
-{
- if(!sub_8078B5C(sprite))
- {
- sprite->pos2.x += Sin(sprite->data5, 32);
- sprite->pos2.y += Cos(sprite->data5, -5);
- if ((u16)(sprite->data5 - 0x40) < 0x80)
- {
- sprite->subpriority = sub_8079E90(gBattleAnimPlayerMonIndex) - 1;
- }
- else
- {
- sprite->subpriority = sub_8079E90(gBattleAnimPlayerMonIndex) + 1;
- }
- sprite->data5 = (sprite->data5 + 5) & 0xFF;
- }
- else
- {
- move_anim_8072740(sprite);
- }
-}
-
-void sub_80CAE20(struct Sprite* sprite)
-{
- sub_80787B0(sprite, 1);
- sprite->data0 = gBattleAnimArgs[3];
- sprite->data1 = sprite->pos1.x;
- sprite->data2 = sprite->pos1.x;
- sprite->data3 = sprite->pos1.y;
- sprite->data4 = sub_8077ABC(gBattleAnimPlayerMonIndex, 3) + gBattleAnimArgs[2];
- obj_translate_based_on_private_1_2_3_4(sprite);
- sprite->data5 = 0x40;
- sprite->callback = sub_80CAE74;
- sub_80CAE74(sprite);
-}
-
-void sub_80CAE74(struct Sprite* 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
- {
- move_anim_8072740(sprite);
- }
-}
-
-void sub_80CAED8(struct Sprite* sprite)
-{
- sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2);
- sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 3);
- sprite->data0 = gBattleAnimArgs[0];
- sprite->data1 = gBattleAnimArgs[1];
- sprite->data2 = gBattleAnimArgs[2];
- sprite->callback = sub_80CAF20;
-}
-
-void sub_80CAF20(struct Sprite* sprite)
-{
- if(!sprite->data2)
- {
- if(sprite->data1 & 1)
- {
- sprite->data0 = 0x80;
- sprite->data1 = 0;
- sprite->data2 = 0;
- }
- else
- {
- sprite->data0 = sprite->data1 & 1;
- sprite->data1 = sprite->data1 & 1;
- sprite->data2 = sprite->data1 & 1;
- }
- sprite->callback = sub_80CAF6C;
- }
- else
- {
- sprite->data2--;
- sprite->pos1.x += sprite->data0;
- sprite->pos1.y += sprite->data1;
- }
-}
-
-void sub_80CAF6C(struct Sprite* sprite)
-{
- if(GetBankSide(gBattleAnimPlayerMonIndex))
- {
- sprite->pos2.x = -Sin(sprite->data0, 0x19);
- }
- else
- {
- sprite->pos2.x = Sin(sprite->data0, 0x19);
- }
- sprite->data0 = (sprite->data0 + 2) & 0xFF;
- sprite->data1++;
- if(!(sprite->data1 & 1))
- {
- sprite->pos2.y++;
- }
- if(sprite->data1 > 0x50)
- {
- move_anim_8072740(sprite);
- }
-}
-
-void sub_80CAFD0(struct Sprite* sprite)
-{
- sub_80787B0(sprite, 1);
- if(GetBankSide(gBattleAnimPlayerMonIndex))
- {
- gBattleAnimArgs[2] = -gBattleAnimArgs[2];
- }
- sprite->data0 = gBattleAnimArgs[4];
- if(!(gBattleAnimArgs[6]))
- {
- sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2) + gBattleAnimArgs[2];
- sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3) + gBattleAnimArgs[3];
- }
- else
- {
- sub_807A3FC(gBattleAnimEnemyMonIndex, 1, &sprite->data2, &sprite->data4);
- sprite->data2 += gBattleAnimArgs[2];
- sprite->data4 += gBattleAnimArgs[3];
- }
- sprite->data5 = gBattleAnimArgs[5];
- sub_80786EC(sprite);
- if(GetBankSide(gBattleAnimPlayerMonIndex) == GetBankSide(gBattleAnimEnemyMonIndex))
- {
- sprite->data0 = 1;
- }
- else
- {
- sprite->data0 = 0;
- }
- sprite->callback = sub_80CB09C;
-}
-
-#ifdef NONMATCHING
-void sub_80CB09C(struct Sprite* sprite)
-{
- s16 c = 0;
- s16 a = sprite->data0;
- s16 b = sprite->data7;
- sprite->data0 = 1;
- sub_8078718(sprite);
- sprite->data0 = a;
- if (b > 0xC8 && sprite->data7 <= 0x37 && sprite->oam.affineParam == 0)
- sprite->oam.affineParam++;
- if (sprite->oam.affineParam != 0 && sprite->data0 != 0)
- {
- sprite->invisible ^= 1;
- sprite->oam.affineParam++;
- if(sprite->oam.affineParam == 0x1E)
- {
- c = 1;
- }
- }
- if((sprite->pos1.x + sprite->pos2.x + 16) <= 0x110 && (sprite->pos1.y + sprite->pos2.y) <= 0xA0 && (sprite->pos1.y + sprite->pos2.y) < -16)
- {
- c = 1;
- }
- if (!c) move_anim_8072740(sprite);
-}
-#else
-__attribute__((naked))
-void sub_80CB09C(struct Sprite* sprite)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- adds r6, r0, 0\n\
- movs r7, 0\n\
- ldrh r5, [r6, 0x2E]\n\
- ldrh r4, [r6, 0x3C]\n\
- movs r0, 0x1\n\
- strh r0, [r6, 0x2E]\n\
- adds r0, r6, 0\n\
- bl sub_8078718\n\
- ldrh r0, [r6, 0x3C]\n\
- strh r5, [r6, 0x2E]\n\
- lsls r4, 16\n\
- asrs r4, 16\n\
- cmp r4, 0xC8\n\
- ble _080CB0CE\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x37\n\
- bgt _080CB0CE\n\
- ldrh r0, [r6, 0x6]\n\
- cmp r0, 0\n\
- bne _080CB0D4\n\
- adds r0, 0x1\n\
- strh r0, [r6, 0x6]\n\
-_080CB0CE:\n\
- ldrh r0, [r6, 0x6]\n\
- cmp r0, 0\n\
- beq _080CB106\n\
-_080CB0D4:\n\
- movs r1, 0x2E\n\
- ldrsh r0, [r6, r1]\n\
- cmp r0, 0\n\
- beq _080CB106\n\
- adds r3, r6, 0\n\
- adds r3, 0x3E\n\
- ldrb r2, [r3]\n\
- lsls r0, r2, 29\n\
- lsrs r0, 31\n\
- movs r1, 0x1\n\
- eors r1, r0\n\
- lsls r1, 2\n\
- movs r0, 0x5\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r3]\n\
- ldrh r0, [r6, 0x6]\n\
- adds r0, 0x1\n\
- strh r0, [r6, 0x6]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1E\n\
- bne _080CB106\n\
- movs r7, 0x1\n\
-_080CB106:\n\
- movs r2, 0x20\n\
- ldrsh r0, [r6, r2]\n\
- movs r2, 0x24\n\
- ldrsh r1, [r6, r2]\n\
- adds r0, r1\n\
- adds r0, 0x10\n\
- movs r1, 0x88\n\
- lsls r1, 1\n\
- cmp r0, r1\n\
- bhi _080CB130\n\
- movs r0, 0x22\n\
- ldrsh r1, [r6, r0]\n\
- movs r2, 0x26\n\
- ldrsh r0, [r6, r2]\n\
- adds r1, r0\n\
- cmp r1, 0xA0\n\
- bgt _080CB130\n\
- movs r0, 0x10\n\
- negs r0, r0\n\
- cmp r1, r0\n\
- bge _080CB132\n\
-_080CB130:\n\
- movs r7, 0x1\n\
-_080CB132:\n\
- cmp r7, 0\n\
- beq _080CB13C\n\
- adds r0, r6, 0\n\
- bl move_anim_8072740\n\
-_080CB13C:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
-}
-#endif
-
-void sub_80CB144(struct Sprite* sprite)
-{
- if(!IsContest() && IsDoubleBattle() == TRUE)
- {
- sub_807A3FC(gBattleAnimEnemyMonIndex, 1, &sprite->pos1.x, &sprite->pos1.y);
- }
- sprite->pos1.y += 32;
- sprite->data0 = gBattleAnimArgs[0];
- sprite->data1 = gBattleAnimArgs[1];
- sprite->data2 = gBattleAnimArgs[2];
- sprite->data3 = gBattleAnimArgs[3];
- sprite->data4 = gBattleAnimArgs[4];
- sprite->callback = sub_80CB1A4;
-}
-
-void sub_80CB1A4(struct Sprite* sprite)
-{
- if(sprite->data1 == 0xFF)
- {
- sprite->pos1.y -= 2;
- }
- 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;
- sprite->data5 &= 0xFF;
- sprite->pos2.x = Cos(sprite->data5, sprite->data3);
- sprite->pos2.y = Sin(sprite->data5, 5);
- if(sprite->data5 <= 0x7F)
- {
- sprite->oam.priority = sub_8079ED4(gBattleAnimEnemyMonIndex) - 1;
- }
- else
- {
- sprite->oam.priority = sub_8079ED4(gBattleAnimEnemyMonIndex) + 1;
- }
- sprite->data0--;
- if(!sprite->data0) move_anim_8072740(sprite);
-}
-
-void sub_80CB25C(struct Sprite* sprite)
-{
- sub_8078764(sprite, 0);
- sprite->affineAnimPaused = 1;
- StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]);
- sprite->data6 = gBattleAnimArgs[2];
- sprite->data7 = gBattleAnimArgs[3];
- sprite->callback = sub_80CB298;
-}
-
-void sub_80CB298(struct Sprite* sprite)
-{
- if((u16)gBattleAnimArgs[7] == 0xFFFF)
- {
- sprite->affineAnimPaused = 0;
- obj_id_for_side_relative_to_move(1);
- sprite->data0 = 0x100;
- sprite->callback = sub_80CB2D4;
- }
-}
-
-void sub_80CB2D4(struct Sprite* sprite)
-{
- obj_id_for_side_relative_to_move(1);
- if(!sprite->data2)
- {
- sprite->data0 += 11;
- }
- else
- {
- sprite->data0 -= 11;
- }
- sprite->data1++;
- if(sprite->data1 == 6)
- {
- sprite->data1 = 0;
- sprite->data2 ^= 1;
- }
- if(sprite->affineAnimEnded)
- {
- sprite->data7--;
- if(sprite->data7 > 0)
- {
- StartSpriteAffineAnim(sprite, sprite->data6);
- }
- else
- {
- move_anim_8072740(sprite);
- }
- }
-}
-
-void sub_80CB340(u8 taskId)
-{
- u8 spriteId = obj_id_for_side_relative_to_move(1);
- if(gSprites[spriteId].invisible)
- {
- DestroyAnimVisualTask(taskId);
- }
- else
- {
- sub_8078E70(spriteId, 1);
- gTasks[taskId].data[0] = gBattleAnimArgs[0];
- gTasks[taskId].data[1] = gBattleAnimArgs[1];
- gTasks[taskId].data[11] = 256;
- gTasks[taskId].func = sub_80CB3A8;
- }
-}
-
-void sub_80CB3A8(u8 taskId)
-{
- u8 spriteId = obj_id_for_side_relative_to_move(1);
- gTasks[taskId].data[10] += gTasks[taskId].data[0];
- gSprites[spriteId].pos2.x = gTasks[taskId].data[10] >> 8;
- if(GetBankSide(gBattleAnimEnemyMonIndex))
- {
- 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])
- {
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = sub_80CB438;
- }
-}
-
-#ifdef NONMATCHING
-void sub_80CB438(u8 taskId)
-{
- if((u16)gBattleAnimArgs[7] == 0xFFFF)
- {
- if(!gTasks[taskId].data[0])
- {
- u8 spriteId = obj_id_for_side_relative_to_move(1);
- sub_8078F40(spriteId);
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
- gTasks[taskId].data[0]++;
- }
- else
- {
- gTasks[taskId].data[0]++;
-
- }
- }
- else if(gTasks[taskId].data[0])
- {
- gTasks[taskId].data[0]++;
- }
- if(gTasks[taskId].data[0] == 3) DestroyAnimVisualTask(taskId);
-}
-#else
-__attribute__((naked))
-void sub_80CB438(u8 taskId)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- ldr r0, _080CB484 @ =gBattleAnimArgs\n\
- ldrh r1, [r0, 0xE]\n\
- ldr r0, _080CB488 @ =0x0000ffff\n\
- cmp r1, r0\n\
- bne _080CB494\n\
- ldr r0, _080CB48C @ =gTasks\n\
- lsls r2, r3, 2\n\
- adds r1, r2, r3\n\
- lsls r1, 3\n\
- adds r6, r1, r0\n\
- movs r1, 0x8\n\
- ldrsh r5, [r6, r1]\n\
- adds r4, r0, 0\n\
- cmp r5, 0\n\
- bne _080CB4A8\n\
- movs r0, 0x1\n\
- bl obj_id_for_side_relative_to_move\n\
- adds r4, r0, 0\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- adds r0, r4, 0\n\
- bl sub_8078F40\n\
- ldr r1, _080CB490 @ =gSprites\n\
- lsls r0, r4, 4\n\
- adds r0, r4\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- strh r5, [r0, 0x24]\n\
- strh r5, [r0, 0x26]\n\
- ldrh r0, [r6, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r6, 0x8]\n\
- b _080CB4C2\n\
- .align 2, 0\n\
-_080CB484: .4byte gBattleAnimArgs\n\
-_080CB488: .4byte 0x0000ffff\n\
-_080CB48C: .4byte gTasks\n\
-_080CB490: .4byte gSprites\n\
-_080CB494:\n\
- ldr r1, _080CB4C8 @ =gTasks\n\
- lsls r2, r3, 2\n\
- adds r0, r2, r3\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- movs r4, 0x8\n\
- ldrsh r0, [r0, r4]\n\
- adds r4, r1, 0\n\
- cmp r0, 0\n\
- beq _080CB4C2\n\
-_080CB4A8:\n\
- adds r1, r2, r3\n\
- lsls r1, 3\n\
- adds r1, r4\n\
- ldrh r0, [r1, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r1, 0x8]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x3\n\
- bne _080CB4C2\n\
- adds r0, r3, 0\n\
- bl DestroyAnimVisualTask\n\
-_080CB4C2:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080CB4C8: .4byte gTasks\n\
- .syntax divided\n");
-}
-#endif
-
-void sub_80CB4CC(struct Sprite* sprite)
-{
- switch(sprite->data0)
- {
- case 0:
- {
- if(GetBankSide(gBattleAnimEnemyMonIndex) == 0)
- {
- s16 a = gBattleAnimArgs[0];
- gBattleAnimArgs[0] = -a;
- }
- sprite->pos1.x = sub_8077ABC(gBattleAnimEnemyMonIndex, 0) + gBattleAnimArgs[0];
- sprite->pos1.y = sub_8077ABC(gBattleAnimEnemyMonIndex, 1) + gBattleAnimArgs[1];
- sprite->invisible = 1;
- sprite->data0++;
- break;
- }
- case 1:
- {
- sprite->invisible = 0;
- if(sprite->affineAnimEnded)
- {
- ChangeSpriteAffineAnim(sprite, 1);
- sprite->data0 = 25;
- sprite->data2 = sub_8077ABC(gBattleAnimPlayerMonIndex, 2);
- sprite->data4 = sub_8077ABC(gBattleAnimPlayerMonIndex, 3);
- sprite->callback = sub_8078CC0;
- oamt_set_x3A_32(sprite, move_anim_8072740);
- break;
- }
- }
- }
-}
-
-void sub_80CB59C(struct Sprite* sprite)
-{
- if(!sprite->data0)
- {
- sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2);
- sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 1);
- sprite->pos2.x = gBattleAnimArgs[0];
- sprite->pos2.y = gBattleAnimArgs[1];
- sprite->subpriority = gBattleAnimArgs[2] + 30;
- StartSpriteAnim(sprite, gBattleAnimArgs[3]);
- sprite->data2 = gBattleAnimArgs[4];
- sprite->data0++;
- if((sprite->pos1.y + sprite->pos2.y) > 120)
- {
- sprite->pos1.y += -120 + (sprite->pos2.y + sprite->pos1.y);
- }
- }
- sprite->callback = sub_80CB710;
-}
-
-#ifdef NONMATCHING
-void sub_80CB620(struct Sprite* sprite)
-{
- u8 p1 = sub_8077ABC(gBattleAnimPlayerMonIndex, 2);
- u8 p2 = sub_8077ABC(gBattleAnimPlayerMonIndex, 3);
- u8 e1 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2);
- u8 e2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3);
- e1 -= p1;
- e2 -= p2;
- sprite->pos1.x = p1 + ((gBattleAnimArgs[0] * e1) / 100);
- sprite->pos1.y = p2 + ((gBattleAnimArgs[0] * e2) / 100);
- sprite->pos2.x = gBattleAnimArgs[1];
- sprite->pos2.y = gBattleAnimArgs[2];
- sprite->subpriority = gBattleAnimArgs[3] + 30;
- StartSpriteAnim(sprite, gBattleAnimArgs[4]);
- sprite->data2 = gBattleAnimArgs[5];
- sprite->callback = sub_80CB710;
- gUnknown_03000728[0] = sprite->pos1.x;
- gUnknown_03000728[1] = sprite->pos1.y;
- gUnknown_03000728[2] = e1;
- gUnknown_03000728[3] = e2;
-}
-#else
-__attribute__((naked))
-void sub_80CB620(struct Sprite* sprite)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- mov r6, r10\n\
- mov r5, r9\n\
- mov r4, r8\n\
- push {r4-r6}\n\
- sub sp, 0x4\n\
- mov r9, r0\n\
- ldr r4, _080CB6FC @ =gBattleAnimPlayerMonIndex\n\
- ldrb r0, [r4]\n\
- movs r1, 0x2\n\
- bl sub_8077ABC\n\
- adds r5, r0, 0\n\
- lsls r5, 24\n\
- lsrs r5, 24\n\
- ldrb r0, [r4]\n\
- movs r1, 0x3\n\
- bl sub_8077ABC\n\
- mov r8, r0\n\
- mov r0, r8\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
- ldr r6, _080CB700 @ =gBattleAnimEnemyMonIndex\n\
- ldrb r0, [r6]\n\
- movs r1, 0x2\n\
- bl sub_8077ABC\n\
- adds r4, r0, 0\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- ldrb r0, [r6]\n\
- movs r1, 0x3\n\
- bl sub_8077ABC\n\
- adds r2, r0, 0\n\
- lsls r2, 24\n\
- subs r4, r5\n\
- lsls r4, 16\n\
- lsrs r2, 24\n\
- mov r1, r8\n\
- subs r2, r1\n\
- lsls r2, 16\n\
- lsrs r2, 16\n\
- lsrs r3, r4, 16\n\
- mov r10, r3\n\
- asrs r4, 16\n\
- ldr r6, _080CB704 @ =gBattleAnimArgs\n\
- movs r1, 0\n\
- ldrsh r0, [r6, r1]\n\
- muls r0, r4\n\
- movs r1, 0x64\n\
- str r2, [sp]\n\
- bl __divsi3\n\
- adds r5, r0\n\
- mov r3, r9\n\
- strh r5, [r3, 0x20]\n\
- ldr r2, [sp]\n\
- lsls r0, r2, 16\n\
- asrs r0, 16\n\
- movs r3, 0\n\
- ldrsh r1, [r6, r3]\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- add r8, r0\n\
- mov r1, r8\n\
- mov r0, r9\n\
- strh r1, [r0, 0x22]\n\
- ldrh r0, [r6, 0x2]\n\
- mov r3, r9\n\
- strh r0, [r3, 0x24]\n\
- ldrh r0, [r6, 0x4]\n\
- strh r0, [r3, 0x26]\n\
- ldrb r0, [r6, 0x6]\n\
- adds r0, 0x1E\n\
- mov r1, r9\n\
- adds r1, 0x43\n\
- strb r0, [r1]\n\
- ldrb r1, [r6, 0x8]\n\
- mov r0, r9\n\
- bl StartSpriteAnim\n\
- ldrh r0, [r6, 0xA]\n\
- mov r1, r9\n\
- strh r0, [r1, 0x32]\n\
- ldr r0, _080CB708 @ =sub_80CB710\n\
- str r0, [r1, 0x1C]\n\
- ldr r1, _080CB70C @ =gUnknown_03000728\n\
- mov r3, r9\n\
- ldrh r0, [r3, 0x20]\n\
- strh r0, [r1]\n\
- ldrh r0, [r3, 0x22]\n\
- strh r0, [r1, 0x2]\n\
- mov r0, r10\n\
- strh r0, [r1, 0x4]\n\
- ldr r2, [sp]\n\
- strh r2, [r1, 0x6]\n\
- add sp, 0x4\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080CB6FC: .4byte gBattleAnimPlayerMonIndex\n\
-_080CB700: .4byte gBattleAnimEnemyMonIndex\n\
-_080CB704: .4byte gBattleAnimArgs\n\
-_080CB708: .4byte sub_80CB710\n\
-_080CB70C: .4byte gUnknown_03000728\n\
- .syntax divided\n");
-}
-#endif
-
-void sub_80CB710(struct Sprite* sprite)
-{
- if(++sprite->data0 > (sprite->data2 - 10))
- {
- sprite->invisible = sprite->data0 % 2;
- }
- if(sprite->data0 > sprite->data2) move_anim_8072740(sprite);
-}
-
-void sub_80CB768(struct Sprite* sprite)
-{
- if(!sprite->data0)
- {
- sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2) + gBattleAnimArgs[0];
- sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 1) + gBattleAnimArgs[1];
- sprite->data1 = gBattleAnimArgs[2];
- 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);
-}
-
-void sub_80CB7EC(struct Sprite* sprite, s16 c)
-{
- s32 a = (sprite->pos1.x * 256) | sprite->pos1.y;
- s32 b = (sprite->data6 * 256) | sprite->data7;
- c *= 256;
- sprite->data5 = a;
- sprite->data6 = b;
- sprite->data7 = c;
-}
-
-#ifdef NONMATCHING
-bool8 sub_80CB814(struct Sprite* sprite)
-{
- s32 a = sprite->data5 >> 8;
- s16 d = sprite->data5;
- s16 b = sprite->data6 >> 8;
- s16 e = sprite->data6;
- s16 c = sprite->data7 >> 8;
- s16 f = c & 0xFF;
- if(!b)
- {
- b = ~32;
- }
- else if(b == 255)
- {
- b = 0x110;
- }
- sprite->pos1.x = ((b - a) * f / a ) + (((e - d) * f) / a);
- sprite->pos2.y = d;
- f++;
- if(f != a)
- {
- sprite->data7 = (f << 8) | c;
- return FALSE;
- }
- return TRUE;
-}
-#else
-__attribute__((naked))
-bool8 sub_80CB814(struct Sprite* sprite)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- mov r8, r0\n\
- ldrh r0, [r0, 0x38]\n\
- lsrs r1, r0, 8\n\
- mov r10, r1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
- mov r1, r8\n\
- ldrh r0, [r1, 0x3A]\n\
- lsrs r2, r0, 8\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- ldrh r1, [r1, 0x3C]\n\
- lsls r0, r1, 16\n\
- asrs r0, 24\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- movs r3, 0xFF\n\
- ands r3, r1\n\
- cmp r2, 0\n\
- bne _080CB84E\n\
- movs r2, 0x20\n\
- negs r2, r2\n\
- b _080CB856\n\
-_080CB84E:\n\
- cmp r2, 0xFF\n\
- bne _080CB856\n\
- movs r2, 0x88\n\
- lsls r2, 1\n\
-_080CB856:\n\
- mov r0, r9\n\
- subs r4, r0\n\
- lsls r4, 16\n\
- lsrs r4, 16\n\
- mov r1, r10\n\
- subs r0, r2, r1\n\
- lsls r5, r3, 16\n\
- asrs r5, 16\n\
- muls r0, r5\n\
- lsls r1, r6, 16\n\
- asrs r7, r1, 16\n\
- adds r1, r7, 0\n\
- bl __divsi3\n\
- adds r6, r0, 0\n\
- lsls r4, 16\n\
- asrs r4, 16\n\
- adds r0, r4, 0\n\
- muls r0, r5\n\
- adds r1, r7, 0\n\
- bl __divsi3\n\
- add r6, r10\n\
- mov r1, r8\n\
- strh r6, [r1, 0x20]\n\
- add r0, r9\n\
- strh r0, [r1, 0x22]\n\
- adds r5, 0x1\n\
- lsls r5, 16\n\
- lsrs r3, r5, 16\n\
- asrs r5, 16\n\
- cmp r5, r7\n\
- beq _080CB8A8\n\
- lsls r1, r7, 8\n\
- lsls r0, r3, 16\n\
- asrs r0, 16\n\
- orrs r0, r1\n\
- mov r1, r8\n\
- strh r0, [r1, 0x3C]\n\
- movs r0, 0\n\
- b _080CB8AA\n\
-_080CB8A8:\n\
- movs r0, 0x1\n\
-_080CB8AA:\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .syntax divided\n");
-}
-#endif
-
-void sub_80CB8B8(struct Sprite* sprite)
-{
- if(sprite->data0 == 10)
- {
- StartSpriteAffineAnim(sprite, 1);
- }
- sprite->data0++;
- if(sprite->data0 > 50) move_anim_8072740(sprite);
-}
-
-#ifdef NONMATCHING
-void sub_80CB8E8(struct Sprite* sprite)
-{
- int temp = ((sprite->data3 * 128) / sprite->data4) + sprite->data0;
- int zero = 0;
- sprite->data0 = temp;
- if(sprite->data0 > 0x7F)
- {
- sprite->data1++;
- sprite->data0 = zero;
- }
- sprite->pos2.y = Sin(sprite->data0 + 0x80, (sprite->data1 * 8) - 30);
- if(!sub_80CB814(sprite))
- {
- sprite->pos2.y = zero;
- sprite->data0 = zero;
- sprite->callback = sub_80CB8B8;
- }
-}
-#else
-__attribute__((naked))
-void sub_80CB8E8(struct Sprite* sprite)
-{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- adds r4, r0, 0\n\
- movs r1, 0x34\n\
- ldrsh r0, [r4, r1]\n\
- lsls r0, 7\n\
- movs r2, 0x36\n\
- ldrsh r1, [r4, r2]\n\
- bl __divsi3\n\
- ldrh r1, [r4, 0x2E]\n\
- adds r1, r0\n\
- movs r5, 0\n\
- strh r1, [r4, 0x2E]\n\
- lsls r1, 16\n\
- asrs r1, 16\n\
- cmp r1, 0x7F\n\
- ble _080CB912\n\
- ldrh r0, [r4, 0x30]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x30]\n\
- strh r5, [r4, 0x2E]\n\
-_080CB912:\n\
- ldrh r0, [r4, 0x2E]\n\
- adds r0, 0x80\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- movs r1, 0x30\n\
- ldrsh r2, [r4, r1]\n\
- lsls r2, 3\n\
- movs r1, 0x1E\n\
- subs r1, r2\n\
- lsls r1, 16\n\
- asrs r1, 16\n\
- bl Sin\n\
- strh r0, [r4, 0x26]\n\
- adds r0, r4, 0\n\
- bl sub_80CB814\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080CB942\n\
- strh r5, [r4, 0x26]\n\
- strh r5, [r4, 0x2E]\n\
- ldr r0, _080CB948 @ =sub_80CB8B8\n\
- str r0, [r4, 0x1C]\n\
-_080CB942:\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080CB948: .4byte sub_80CB8B8\n\
- .syntax divided\n");
-}
-#endif
-
-void sub_80CB94C(struct Sprite* sprite)
-{
- s16 e1;
- s16 e2;
- sub_80787B0(sprite, 0);
- e1 = sub_8077ABC(gBattleAnimEnemyMonIndex, 0);
- e2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 1);
- if((gBattleAnimPlayerMonIndex ^ 2) == gBattleAnimEnemyMonIndex)
- {
- sprite->data6 = e1;
- sprite->data7 = e2 + 10;
- sub_80CB7EC(sprite, 0x3C);
- sprite->data3 = 1;
- }
- else
- {
- sprite->data6 = e1;
- sprite->data7 = e2 + 10;
- sub_80CB7EC(sprite, 0x3C);
- sprite->data3 = 3;
- }
- sprite->data4 = 0x3C;
- sprite->callback = sub_80CB8E8;
-}
-
-void sub_80CB9C4(struct Sprite* sprite)
-{
- int zero;
- sprite->data0 += ((sprite->data3 * 128) / sprite->data4);
- zero = 0;
- if(sprite->data0 > 0x7F)
- {
- sprite->data1++;
- sprite->data0 = zero;
- }
- sprite->pos2.y = Sin(sprite->data0 + 0x80, 30 - sprite->data1 * 8);
- if(sub_80CB814(sprite))
- {
- sprite->pos2.y = zero;
- sprite->data0 = zero;
- move_anim_8072740(sprite);
- }
-}
-
-void sub_80CBA28(struct Sprite* sprite)
-{
- s16 e = sub_8077ABC(gBattleAnimEnemyMonIndex, 1);
- if(GetBankSide(gBattleAnimEnemyMonIndex) == 0)
- {
- sprite->data6 = 0;
- sprite->data7 = e + 10;
- sub_80CB7EC(sprite, 0x28);
- sprite->data3 = 3;
- sprite->data4 = 0x3C;
- sprite->callback = sub_80CB8E8;
- }
- else
- {
- sprite->data6 = 255;
- sprite->data7 = e + 10;
- if(IsContest()) sprite->data6 = 0;
- sub_80CB7EC(sprite, 0x28);
- sprite->data3 = 3;
- sprite->data4 = 0x3C;
- sprite->callback = sub_80CB9C4;
- }
-}
-
-void sub_80CBAA4(struct Sprite* sprite)
-{
- 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);
-}
-
-void sub_80CBAE8(struct Sprite* sprite)
-{
- s16 p1;
- s16 p2;
- sub_8078764(sprite, 0);
- p1 = sub_8077ABC(gBattleAnimPlayerMonIndex, 0);
- p2 = sub_8077ABC(gBattleAnimPlayerMonIndex, 1);
- if((gBattleAnimEnemyMonIndex ^ 2) == gBattleAnimPlayerMonIndex)
- {
- sprite->data6 = p1;
- sprite->data7 = p2 + 10;
- sub_80CB7EC(sprite, 0x3c);
- sprite->data3 = 1;
- }
- else
- {
- sprite->data6 = p1;
- sprite->data7 = p2 + 10;
- sub_80CB7EC(sprite, 0x3c);
- sprite->data3 = 3;
- }
- sprite->data4 = 0x3C;
- sprite->callback = sub_80CBB60;
-}
-
-void sub_80CBB60(struct Sprite* sprite)
-{
- int zero;
- sprite->data0 += ((sprite->data3 * 128) / sprite->data4);
- zero = 0;
- 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)
- {
- PlaySE12WithPanning(0x7D, sub_8076F98(0x3F));
- }
- if(sub_80CB814(sprite))
- {
- sprite->pos2.y = 0;
- sprite->data0 = 0;
- sprite->callback = sub_80CB8B8;
- PlaySE12WithPanning(0x7D, sub_8076F98(-0x40));
- }
-}
-
-#ifdef NONMATCHING
-void sub_80CBBF0(struct Sprite* sprite)
-{
- int a;
- int b;
- if(sprite->data0 == 0)
- {
- if(!IsContest())
- {
- sprite->data1 = gBattleAnimArgs[1];
- sprite->pos1.x = 0x78;
- }
- else
- {
- a = gBattleAnimArgs[1] - 32;
- b = a;
- if(a < 0)
- {
- b += gBattleAnimArgs[1] + 0xDF;
- }
- sprite->data1 = b - a;
- sprite->pos1.x = 0x46;
-
- }
- sprite->pos1.y = gBattleAnimArgs[0];
- sprite->data2 = gBattleAnimArgs[0];
- sprite->data4 = 20;
- sprite->pos2.x = Cos(sprite->data1, 0x3C);
- sprite->pos2.y = Sin(sprite->data1, 20);
- sprite->callback = sub_80CBC8C;
- if((sprite->data1 - 1) <= 0xBE)
- {
- sprite->subpriority = 30;
- }
- else
- {
- sprite->subpriority = 28;
- }
- }
-}
-#else
-__attribute__((naked))
-void sub_80CBBF0(struct Sprite* sprite)
-{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- adds r4, r0, 0\n\
- movs r1, 0x2E\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0\n\
- bne _080CBC84\n\
- bl IsContest\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _080CBC18\n\
- ldr r0, _080CBC14 @ =gBattleAnimArgs\n\
- ldrh r1, [r0, 0x2]\n\
- strh r1, [r4, 0x30]\n\
- movs r1, 0x78\n\
- strh r1, [r4, 0x20]\n\
- adds r5, r0, 0\n\
- b _080CBC3A\n\
- .align 2, 0\n\
-_080CBC14: .4byte gBattleAnimArgs\n\
-_080CBC18:\n\
- ldr r0, _080CBC74 @ =gBattleAnimArgs\n\
- movs r1, 0x2\n\
- ldrsh r3, [r0, r1]\n\
- adds r1, r3, 0\n\
- subs r1, 0x20\n\
- adds r2, r1, 0\n\
- adds r5, r0, 0\n\
- cmp r1, 0\n\
- bge _080CBC2E\n\
- adds r2, r3, 0\n\
- adds r2, 0xDF\n\
-_080CBC2E:\n\
- asrs r0, r2, 8\n\
- lsls r0, 8\n\
- subs r0, r1, r0\n\
- strh r0, [r4, 0x30]\n\
- movs r0, 0x46\n\
- strh r0, [r4, 0x20]\n\
-_080CBC3A:\n\
- ldrh r0, [r5]\n\
- strh r0, [r4, 0x22]\n\
- strh r0, [r4, 0x32]\n\
- movs r0, 0x14\n\
- strh r0, [r4, 0x36]\n\
- movs r1, 0x30\n\
- ldrsh r0, [r4, r1]\n\
- movs r1, 0x3C\n\
- bl Cos\n\
- strh r0, [r4, 0x24]\n\
- movs r1, 0x30\n\
- ldrsh r0, [r4, r1]\n\
- movs r1, 0x14\n\
- bl Sin\n\
- strh r0, [r4, 0x26]\n\
- ldr r0, _080CBC78 @ =sub_80CBC8C\n\
- str r0, [r4, 0x1C]\n\
- ldrh r0, [r4, 0x30]\n\
- subs r0, 0x1\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0xBE\n\
- bhi _080CBC7C\n\
- adds r1, r4, 0\n\
- adds r1, 0x43\n\
- movs r0, 0x1F\n\
- b _080CBC82\n\
- .align 2, 0\n\
-_080CBC74: .4byte gBattleAnimArgs\n\
-_080CBC78: .4byte sub_80CBC8C\n\
-_080CBC7C:\n\
- adds r1, r4, 0\n\
- adds r1, 0x43\n\
- movs r0, 0x1D\n\
-_080CBC82:\n\
- strb r0, [r1]\n\
-_080CBC84:\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
-}
-#endif
-
-void sub_80CBC8C(struct Sprite* sprite)
-{
- switch(sprite->data3)
- {
- case 0:
- {
- 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;
- }
- }
- case 1:
- {
- if(sprite->data3 && sprite->affineAnimEnded)
- {
- sprite->data0 = 0;
- sprite->data2 = 0;
- sprite->callback = sub_80CBCF8;
- }
- break;
- }
- }
-}
-
-
-
-void sub_80CBCF8(struct Sprite* sprite)
-{
- if(sprite->data2 == gUnknown_083D680C[sprite->data0][1])
- {
- if(gUnknown_083D680C[sprite->data0][2] == 0x7F)
- {
- sprite->data0 = 0;
- sprite->callback = sub_80CBDB0;
- }
- sprite->data2 = 0;
- sprite->data0++;
- }
- else
- {
- sprite->data2++;
- sprite->data1 = (gUnknown_083D680C[sprite->data0][0] * gUnknown_083D680C[sprite->data0][2] + sprite->data1) & 0xFF;
- if (!IsContest())
- {
- if((u16)(sprite->data1 - 1) <= 0xBE)
- {
- sprite->subpriority = 31;
- }
- else
- {
- sprite->subpriority = 29;
- }
- }
- sprite->pos2.x = Cos(sprite->data1, 0x3C);
- sprite->pos2.y = Sin(sprite->data1, 20);
- }
-}
-
-void sub_80CBDB0(struct Sprite* sprite)
-{
- if(sprite->data0 > 20) move_anim_8072740(sprite);
- sprite->invisible = sprite->data0 % 2;
- sprite->data0++;
-}
-
-#ifdef NONMATCHING
-void sub_80CBDF4(u8 taskId)
-{
- struct Task* task = &gTasks[taskId];
- task->data[4] = sub_8079E90(gBattleAnimEnemyMonIndex) - 1;
- task->data[6] = sub_8077ABC(gBattleAnimEnemyMonIndex, 2);
- task->data[7] = sub_8077ABC(gBattleAnimEnemyMonIndex, 3);
- task->data[10] = sub_807A100(gBattleAnimEnemyMonIndex, 1);
- task->data[11] = sub_807A100(gBattleAnimEnemyMonIndex, 0);
- if(GetBankSide(gBattleAnimEnemyMonIndex) == 1)
- {
- task->data[5] = 1;
- }
- else
- {
- task->data[5] = -1;
- }
- task->data[9] = 0x38 - (task->data[5] * 64);
- task->data[8] = task->data[7] - task->data[9] + task->data[6];
- 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]);
- gSprites[task->data[2]].data3 = task->data[9];
- gSprites[task->data[2]].data4 = ((task->data[11] / 2) + 10) * task->data[5] + task->data[7];
- gSprites[task->data[2]].data5 = sub_80CC338(&gSprites[task->data[2]]);
- sub_80786EC(&gSprites[task->data[2]]);
- task->func = sub_80CBF5C;
-}
-#else
-__attribute__((naked))
-void sub_80CBDF4(u8 taskId)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- adds r6, r0, 0\n\
- lsls r0, r6, 2\n\
- adds r0, r6\n\
- lsls r0, 3\n\
- ldr r1, _080CBF48 @ =gTasks\n\
- adds r5, r0, r1\n\
- ldr r4, _080CBF4C @ =gBattleAnimEnemyMonIndex\n\
- ldrb r0, [r4]\n\
- bl sub_8079E90\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- subs r0, 0x1\n\
- strh r0, [r5, 0x10]\n\
- ldrb r0, [r4]\n\
- movs r1, 0x2\n\
- bl sub_8077ABC\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- strh r0, [r5, 0x14]\n\
- ldrb r0, [r4]\n\
- movs r1, 0x3\n\
- bl sub_8077ABC\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- strh r0, [r5, 0x16]\n\
- ldrb r0, [r4]\n\
- movs r1, 0x1\n\
- bl sub_807A100\n\
- strh r0, [r5, 0x1C]\n\
- ldrb r0, [r4]\n\
- movs r1, 0\n\
- bl sub_807A100\n\
- strh r0, [r5, 0x1E]\n\
- ldrb r0, [r4]\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- movs r2, 0x1\n\
- negs r2, r2\n\
- adds r1, r2, 0\n\
- cmp r0, 0x1\n\
- bne _080CBE5C\n\
- movs r1, 0x1\n\
-_080CBE5C:\n\
- strh r1, [r5, 0x12]\n\
- movs r3, 0x12\n\
- ldrsh r0, [r5, r3]\n\
- lsls r0, 6\n\
- movs r1, 0x38\n\
- subs r1, r0\n\
- strh r1, [r5, 0x1A]\n\
- ldrh r0, [r5, 0x16]\n\
- subs r0, r1\n\
- ldrh r1, [r5, 0x14]\n\
- adds r0, r1\n\
- strh r0, [r5, 0x18]\n\
- ldr r0, _080CBF50 @ =gSpriteTemplate_83D6884\n\
- movs r2, 0x18\n\
- ldrsh r1, [r5, r2]\n\
- movs r3, 0x1A\n\
- ldrsh r2, [r5, r3]\n\
- ldrb r3, [r5, 0x10]\n\
- bl CreateSprite\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- strh r0, [r5, 0xC]\n\
- cmp r0, 0x40\n\
- bne _080CBE94\n\
- adds r0, r6, 0\n\
- bl DestroyAnimVisualTask\n\
-_080CBE94:\n\
- ldr r4, _080CBF54 @ =gSprites\n\
- movs r0, 0xC\n\
- ldrsh r1, [r5, r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r4\n\
- movs r1, 0xA\n\
- strh r1, [r0, 0x2E]\n\
- movs r2, 0xC\n\
- ldrsh r1, [r5, r2]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r4\n\
- ldrh r1, [r5, 0x18]\n\
- strh r1, [r0, 0x30]\n\
- movs r3, 0xC\n\
- ldrsh r0, [r5, r3]\n\
- lsls r2, r0, 4\n\
- adds r2, r0\n\
- lsls r2, 2\n\
- adds r2, r4\n\
- movs r1, 0x1C\n\
- ldrsh r0, [r5, r1]\n\
- lsrs r1, r0, 31\n\
- adds r0, r1\n\
- asrs r0, 1\n\
- adds r0, 0xA\n\
- movs r3, 0x12\n\
- ldrsh r1, [r5, r3]\n\
- muls r1, r0\n\
- ldrh r0, [r5, 0x14]\n\
- subs r0, r1\n\
- strh r0, [r2, 0x32]\n\
- movs r0, 0xC\n\
- ldrsh r1, [r5, r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r4\n\
- ldrh r1, [r5, 0x1A]\n\
- strh r1, [r0, 0x34]\n\
- movs r1, 0xC\n\
- ldrsh r0, [r5, r1]\n\
- lsls r1, r0, 4\n\
- adds r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4\n\
- movs r2, 0x1E\n\
- ldrsh r0, [r5, r2]\n\
- lsrs r2, r0, 31\n\
- adds r0, r2\n\
- asrs r0, 1\n\
- adds r0, 0xA\n\
- movs r3, 0x12\n\
- ldrsh r2, [r5, r3]\n\
- muls r0, r2\n\
- ldrh r2, [r5, 0x16]\n\
- adds r0, r2\n\
- strh r0, [r1, 0x36]\n\
- movs r3, 0xC\n\
- ldrsh r1, [r5, r3]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r4\n\
- bl sub_80CC338\n\
- movs r1, 0xC\n\
- ldrsh r2, [r5, r1]\n\
- lsls r1, r2, 4\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r4\n\
- strh r0, [r1, 0x38]\n\
- movs r2, 0xC\n\
- ldrsh r1, [r5, r2]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r4\n\
- bl sub_80786EC\n\
- ldr r0, _080CBF58 @ =sub_80CBF5C\n\
- str r0, [r5]\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080CBF48: .4byte gTasks\n\
-_080CBF4C: .4byte gBattleAnimEnemyMonIndex\n\
-_080CBF50: .4byte gSpriteTemplate_83D6884\n\
-_080CBF54: .4byte gSprites\n\
-_080CBF58: .4byte sub_80CBF5C\n\
- .syntax divided\n");
-}
-#endif
-
-void sub_80CBF5C(u8 taskId)
-{
- struct Task* task = &gTasks[taskId];
- struct Sprite* sprite = &gSprites[task->data[2]];
- int a = task->data[0];
- 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:
- {
- sub_80CC358(task, taskId);
- if(sub_8078718(sprite) == 0)
- {
- break;
- }
- else
- {
- task->data[15] = 9;
- task->data[0] = 0xFF;
- break;
- }
- }
- case 0:
- {
- sub_80CC358(task, taskId);
- if(sub_8078718(sprite) == 0)
- {
- break;
- }
- 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;
- }
- 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;
- }
- 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)
- {
- break;
- }
- else
- {
- task->data[15] = 11;
- task->data[0] = 0xFF;
- 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)
- {
- DestroySprite(sprite);
- task->data[0]++;
- }
- break;
- }
- case 13:
- {
- if(task->data[12] == 0)
- {
- DestroyAnimVisualTask(taskId);
- break;
- }
- break;
- }
- case 255:
- {
- task->data[1]++;
- if(task->data[1] > 5)
- {
- task->data[1] = 0;
- task->data[0] = task->data[15];
- }
- }
- }
-}
-
-s16 sub_80CC338(struct Sprite* sprite)
-{
- s16 var = 8;
- 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)
- {
- u8 spriteId;
- s16 spriteX;
- s16 spriteY;
- task->data[14] = 0;
- spriteX = gSprites[task->data[2]].pos1.x + gSprites[task->data[2]].pos2.x;
- spriteY = gSprites[task->data[2]].pos1.y + gSprites[task->data[2]].pos2.y;
- spriteId = CreateSprite(&gSpriteTemplate_83D6884, spriteX, spriteY, task->data[4]);
- if (spriteId != 0x40)
- {
- gSprites[spriteId].data6 = taskId;
- gSprites[spriteId].data7 = 12;
- gTasks[taskId].data[12]++;
- gSprites[spriteId].data0 = task->data[13] & 1;
- gTasks[taskId].data[13]++;
- StartSpriteAnim(&gSprites[spriteId], task->data[3]);
- gSprites[spriteId].subpriority = task->data[4];
- gSprites[spriteId].callback = sub_80CC408;
- }
- }
-}
-
-void sub_80CC408(struct Sprite* sprite)
-{
- sprite->data0++;
- if (sprite->data0 > 1)
- {
- sprite->data0 = 0;
- sprite->invisible ^= 1;
- sprite->data1++;
- if(sprite->data1 > 8)
- {
- gTasks[sprite->data6].data[sprite->data7]--;
- DestroySprite(sprite);
- }
- }
-}
-
-void sub_80CC474(struct Sprite* sprite)
-{
- u8 bank;
- if (!gBattleAnimArgs[6])
- bank = gBattleAnimPlayerMonIndex;
- else
- bank = gBattleAnimEnemyMonIndex;
- if (GetBankSide(bank) != 0)
- {
- sprite->data4 = 0;
- sprite->data2 = gBattleAnimArgs[3];
- sprite->pos1.x = 0xFFF0;
- }
- else
- {
- sprite->data4 = 1;
- sprite->data2 = -gBattleAnimArgs[3];
- sprite->pos1.x = 0x100;
- }
- sprite->data1 = gBattleAnimArgs[1];
- sprite->data0 = gBattleAnimArgs[2];
- sprite->data3 = gBattleAnimArgs[4];
- 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(gBattleAnimEnemyMonIndex, 3) + gBattleAnimArgs[0];
- obj_id_for_side_relative_to_move(1);
- sprite->oam.priority = sub_8079ED4(bank) + 1;
- break;
- }
- }
- sprite->callback = sub_80CC580;
-}
-
-// why did you make me use gotos WHY
-void sub_80CC580(struct Sprite* sprite)
-{
- int a = sprite->data7;
- sprite->data7++;
- sprite->pos2.y = (sprite->data1 * gSineTable[sprite->data0]) >> 8;
- sprite->pos2.x = sprite->data2 * a;
- sprite->data0 = (sprite->data3 * a) & 0xFF;
- if (sprite->data4 == 0)
- {
- if (sprite->pos2.x + sprite->pos1.x <= 0xF7) return;
- else goto END;
- }
- else if (sprite->data4 != 0 && sprite->pos2.x + sprite->pos1.x <= -16)
- {
- goto END;
- }
- else
- return;
-
- END:
- move_anim_8074EE0(sprite);
-}
-
-void sub_80CC5F8(u8 taskId)
-{
- struct Task* task = &gTasks[taskId];
- 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:
- {
- 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[10] = 0;
- task->data[11]++;
- if(task->data[11] == 7) task->data[11] = 0;
- }
- }
- break;
- }
- }
- if(gBattleAnimArgs[7] == -1) DestroyAnimVisualTask(taskId);
-}
-
-#ifdef NONMATCHING
-void sub_80CC6CC(struct Sprite* sprite)
-{
- u8 a;
- u8 b;
- u8 bank;
- int c;
- u16 x;
- u16 y;
- if (gBattleAnimArgs[4] == 0)
- {
- move_anim_8072740(sprite);
- }
- else
- {
-
- if (gBattleAnimArgs[0] == 0) bank = gBattleAnimPlayerMonIndex;
- else
- bank = gBattleAnimEnemyMonIndex;
- a = sub_8077ABC(bank, 2);
- b = sub_8077ABC(bank, 3);
- sprite->data0 = gBattleAnimArgs[4];
- if (gBattleAnimArgs[1] == 0)
- {
- sprite->pos1.x = gBattleAnimArgs[2] + a;
- sprite->pos1.y = gBattleAnimArgs[3] + b;
- sprite->data5 = a;
- sprite->data6 = b;
- }
- else
- {
- sprite->pos1.x = a;
- sprite->pos1.y = b;
- sprite->data5 = gBattleAnimArgs[2] + a;
- sprite->data6 = gBattleAnimArgs[3] + b;
- }
- x = sprite->pos1.x;
- sprite->data1 = x * 16;
- y = sprite->pos1.y;
- sprite->data2 = y * 16;
- sprite->data3 = ((sprite->data5 - sprite->pos1.x) * 16) / gBattleAnimArgs[4];
- sprite->data4 = ((sprite->data6 - sprite->pos1.y) * 16) / gBattleAnimArgs[4];
- c = sub_80790F0(sprite->data5 - x, sprite->data6 - y);
- if(IsContest() != 0) c = c + -0x8000;
- sub_8078FDC(sprite, 0, 0x100, 0x100, c);
- sprite->callback = sub_80CC7D4;
- }
-}
-#else
-__attribute__((naked))
-void sub_80CC6CC(struct Sprite* sprite)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- sub sp, 0x4\n\
- adds r6, r0, 0\n\
- ldr r1, _080CC6E4 @ =gBattleAnimArgs\n\
- movs r2, 0x8\n\
- ldrsh r0, [r1, r2]\n\
- cmp r0, 0\n\
- bne _080CC6E8\n\
- adds r0, r6, 0\n\
- bl move_anim_8072740\n\
- b _080CC7C2\n\
- .align 2, 0\n\
-_080CC6E4: .4byte gBattleAnimArgs\n\
-_080CC6E8:\n\
- movs r3, 0\n\
- ldrsh r0, [r1, r3]\n\
- cmp r0, 0\n\
- bne _080CC6F8\n\
- ldr r4, _080CC6F4 @ =gBattleAnimPlayerMonIndex\n\
- b _080CC6FA\n\
- .align 2, 0\n\
-_080CC6F4: .4byte gBattleAnimPlayerMonIndex\n\
-_080CC6F8:\n\
- ldr r4, _080CC734 @ =gBattleAnimEnemyMonIndex\n\
-_080CC6FA:\n\
- ldrb r0, [r4]\n\
- movs r1, 0x2\n\
- bl sub_8077ABC\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- ldrb r0, [r4]\n\
- movs r1, 0x3\n\
- bl sub_8077ABC\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- ldr r0, _080CC738 @ =gBattleAnimArgs\n\
- ldrh r1, [r0, 0x8]\n\
- strh r1, [r6, 0x2E]\n\
- movs r3, 0x2\n\
- ldrsh r1, [r0, r3]\n\
- adds r7, r0, 0\n\
- cmp r1, 0\n\
- bne _080CC73C\n\
- ldrh r0, [r7, 0x4]\n\
- adds r0, r5\n\
- strh r0, [r6, 0x20]\n\
- ldrh r0, [r7, 0x6]\n\
- adds r0, r2\n\
- strh r0, [r6, 0x22]\n\
- strh r5, [r6, 0x38]\n\
- strh r2, [r6, 0x3A]\n\
- b _080CC74C\n\
- .align 2, 0\n\
-_080CC734: .4byte gBattleAnimEnemyMonIndex\n\
-_080CC738: .4byte gBattleAnimArgs\n\
-_080CC73C:\n\
- strh r5, [r6, 0x20]\n\
- strh r2, [r6, 0x22]\n\
- ldrh r0, [r7, 0x4]\n\
- adds r0, r5\n\
- strh r0, [r6, 0x38]\n\
- ldrh r0, [r7, 0x6]\n\
- adds r0, r2\n\
- strh r0, [r6, 0x3A]\n\
-_080CC74C:\n\
- ldrh r4, [r6, 0x20]\n\
- lsls r0, r4, 4\n\
- strh r0, [r6, 0x30]\n\
- ldrh r5, [r6, 0x22]\n\
- lsls r0, r5, 4\n\
- strh r0, [r6, 0x32]\n\
- movs r1, 0x38\n\
- ldrsh r0, [r6, r1]\n\
- movs r2, 0x20\n\
- ldrsh r1, [r6, r2]\n\
- subs r0, r1\n\
- lsls r0, 4\n\
- movs r3, 0x8\n\
- ldrsh r1, [r7, r3]\n\
- bl __divsi3\n\
- strh r0, [r6, 0x34]\n\
- movs r1, 0x3A\n\
- ldrsh r0, [r6, r1]\n\
- movs r2, 0x22\n\
- ldrsh r1, [r6, r2]\n\
- subs r0, r1\n\
- lsls r0, 4\n\
- movs r3, 0x8\n\
- ldrsh r1, [r7, r3]\n\
- bl __divsi3\n\
- strh r0, [r6, 0x36]\n\
- ldrh r0, [r6, 0x38]\n\
- subs r0, r4\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- ldrh r1, [r6, 0x3A]\n\
- subs r1, r5\n\
- lsls r1, 16\n\
- asrs r1, 16\n\
- bl sub_80790F0\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- bl IsContest\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080CC7AE\n\
- ldr r1, _080CC7CC @ =0xffff8000\n\
- adds r0, r4, r1\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
-_080CC7AE:\n\
- movs r3, 0x80\n\
- lsls r3, 1\n\
- str r4, [sp]\n\
- adds r0, r6, 0\n\
- movs r1, 0\n\
- adds r2, r3, 0\n\
- bl sub_8078FDC\n\
- ldr r0, _080CC7D0 @ =sub_80CC7D4\n\
- str r0, [r6, 0x1C]\n\
-_080CC7C2:\n\
- add sp, 0x4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080CC7CC: .4byte 0xffff8000\n\
-_080CC7D0: .4byte sub_80CC7D4\n\
- .syntax divided\n");
-}
-#endif
-
-void sub_80CC7D4(struct Sprite* sprite)
-{
- if(sprite->data0)
- {
- sprite->data1 += sprite->data3;
- sprite->data2 += sprite->data4;
- sprite->pos1.x = sprite->data1 >> 4 ;
- sprite->pos1.y = sprite->data2 >> 4 ;
- sprite->data0--;
- }
- else
- move_anim_8074EE0(sprite);
-}
-
-void sub_80CC810(struct Sprite* sprite)
-{
- if(sprite->animEnded)
- move_anim_8072740(sprite);
-}
-
-void sub_80CC82C(struct Sprite* sprite)
-{
- if(GetBankSide(gBattleAnimPlayerMonIndex) != 0)
- {
- sprite->pos1.x -= gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
- }
- else
- {
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
- }
- sprite->callback = sub_8078600;
- oamt_set_x3A_32(sprite, move_anim_8072740);
-}
-
-void sub_80CC884(struct Sprite* sprite)
-{
- if(GetBankSide(gBattleAnimPlayerMonIndex) == 0)
- StartSpriteAnim(sprite, 1);
- sprite->callback = sub_80CC810;
- sub_807867C(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
-}
-
-void sub_80CC8C8(struct Sprite* sprite)
-{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
- sprite->data0 = gBattleAnimArgs[2];
- sprite->data1 = gBattleAnimArgs[3];
- sprite->data3 = gBattleAnimArgs[4];
- sprite->data5 = gBattleAnimArgs[5];
- StartSpriteAffineAnim(sprite, gBattleAnimArgs[6]);
- oamt_set_x3A_32(sprite, move_anim_8074EE0);
- sprite->callback = sub_8078504;
-}
-
-void sub_80CC914(struct Sprite* sprite)
-{
- sprite->pos1.x = sub_8077ABC(gBattleAnimEnemyMonIndex, 0);
- sprite->pos1.y = sub_8077ABC(gBattleAnimEnemyMonIndex, 1);
- if(GetBankSide(gBattleAnimEnemyMonIndex) == 0)
- sprite->pos1.y += 8;
- sprite->callback = sub_80CCB00;
- 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)
- sprite->data1 = -sprite->data1;
-}
-
-void sub_80CC9BC(struct Sprite* sprite)
-{
- u8 a;
- u8 b;
- switch(gBattleAnimArgs[3])
- {
- case 1:
- {
- a = sub_8077ABC(gBattleAnimEnemyMonIndex ^ 2, 0);
- b = sub_8077ABC(gBattleAnimEnemyMonIndex ^ 2, 1);
- break;
- }
- case 2:
- {
- a = sub_8077ABC(gBattleAnimEnemyMonIndex, 0);
- b = sub_8077ABC(gBattleAnimEnemyMonIndex, 1);
- if(b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2))
- {
- a = (sub_8077ABC(gBattleAnimEnemyMonIndex ^ 2, 0) + a) / 2;
- b = (sub_8077ABC(gBattleAnimEnemyMonIndex ^ 2, 1) + b) / 2;
- }
- break;
- }
- case 0:
- default:
- {
- a = sub_8077ABC(gBattleAnimEnemyMonIndex, 0);
- b = sub_8077ABC(gBattleAnimEnemyMonIndex, 1);
- break;
- }
- }
- sprite->pos1.x = a;
- sprite->pos1.y = b;
- if(GetBankSide(gBattleAnimEnemyMonIndex) == 0)
- sprite->pos1.y += 8;
- sprite->callback = sub_80CCB00;
- 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)
- sprite->data1 = -sprite->data1;
-}
-
-void sub_80CCB00(struct Sprite* sprite)
-{
- sprite->data3 += sprite->data1;
- sprite->data4 += sprite->data2;
- 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)
- {
- oamt_set_x3A_32(sprite, move_anim_8072740);
- sprite->data0 = 3;
- sprite->callback = sub_80782D8;
- }
-}
-
-void unref_sub_80CCB6C(struct Sprite* sprite)
-{
- if(sprite->data2 > 1)
- {
- if(sprite->data3 & 1)
- {
- sprite->invisible = 0;
- gSprites[sprite->data0].invisible = 0;
- gSprites[sprite->data1].invisible = 0;
- }
- else
- {
- sprite->invisible = 1;
- gSprites[sprite->data0].invisible = 1;
- gSprites[sprite->data1].invisible = 1;
- }
- sprite->data2 = 0;
- sprite->data3++;
- }
- else
- {
- sprite->data2++;
- }
- if(sprite->data3 == 10)
- {
- DestroySprite(&gSprites[sprite->data0]);
- DestroySprite(&gSprites[sprite->data1]);
- move_anim_8072740(sprite);
- }
-}
-
-void sub_80CCC50(struct Sprite* sprite)
-{
- sprite->data0 = gBattleAnimArgs[2];
- if(GetBankSide(gBattleAnimPlayerMonIndex) != 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];
- sprite->data3 = gBattleAnimArgs[4];
- sprite->callback = sub_80CCCB4;
- sub_80CCCB4(sprite);
-}
-
-void sub_80CCCB4(struct Sprite* sprite)
-{
- sprite->pos2.x = Cos(sprite->data0, 100);
- sprite->pos2.y = Sin(sprite->data0, 20);
- 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)
- move_anim_8072740(sprite);
-}
-
-void sub_80CCD24(struct Sprite* sprite)
-{
- if(IsContest() != 0)
- {
- gBattleAnimArgs[1] += 8;
- }
- sprite->pos1.x = sub_8077EE4(gBattleAnimPlayerMonIndex, 0) + gBattleAnimArgs[0];
- sprite->pos1.y = sub_8077EE4(gBattleAnimPlayerMonIndex, 1) + gBattleAnimArgs[1];
- if (GetBankSide(gBattleAnimPlayerMonIndex) == 0 || IsContest())
- sprite->oam.priority = sub_8079ED4(gBattleAnimPlayerMonIndex) + 1;
- else
- sprite->oam.priority = sub_8079ED4(gBattleAnimPlayerMonIndex);
- sprite->data0 = gBattleAnimArgs[2];
- sprite->data2 = (IndexOfSpritePaletteTag(0x2828) << 4) + 0x100;
- sprite->data7 = 16;
- REG_BLDCNT = 0x3F40;
- REG_BLDALPHA = (sprite->data7 << 8) | (16 - sprite->data7);
- sprite->callback = sub_80CCE0C;
-}
-