From 0b34f85982c9f42ed4bbffca4e5bb505bdf779a1 Mon Sep 17 00:00:00 2001 From: MCboy Date: Mon, 18 Jun 2018 02:38:16 +0430 Subject: deleted function sub_80DA034 --- asm/flying.s | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/asm/flying.s b/asm/flying.s index 72d1e3bdc..e5903b326 100644 --- a/asm/flying.s +++ b/asm/flying.s @@ -7,28 +7,6 @@ @ flying - thumb_func_start sub_80DA034 -sub_80DA034: @ 80DA034 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_8078764 - ldrh r0, [r4, 0x22] - adds r0, 0x14 - strh r0, [r4, 0x22] - movs r0, 0xBF - strh r0, [r4, 0x30] - ldr r1, _080DA058 @ =sub_80DA05C - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DA058: .4byte sub_80DA05C - thumb_func_end sub_80DA034 - thumb_func_start sub_80DA05C sub_80DA05C: @ 80DA05C push {r4,lr} -- cgit v1.2.3 From 9d7ddede2362428c1bd569f0dff137d6bb65c0d1 Mon Sep 17 00:00:00 2001 From: MCboy Date: Mon, 18 Jun 2018 02:42:25 +0430 Subject: decompiled sub_80DA034 into C special thanks to some guys over at prets discord :) --- src/battle/anim/flying.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c index ec40e26c4..5c865b7a8 100755 --- a/src/battle/anim/flying.c +++ b/src/battle/anim/flying.c @@ -6,6 +6,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; +void sub_80DA05C(struct Sprite *sprite); void sub_80DA034(struct Sprite *sprite); void sub_80DA16C(struct Sprite *sprite); void sub_80DA208(struct Sprite *sprite); @@ -23,6 +24,15 @@ void sub_80DB458(struct Sprite *sprite); void sub_80DB564(struct Sprite *sprite); void sub_80DB5E4(struct Sprite *sprite); +void sub_80DA034(struct Sprite *sprite) +{ + sub_8078764(sprite, 0); + sprite->pos1.y += 0x14; + sprite->data[1] = 0xBF; + sprite->callback = sub_80DA05C; + sub_80DA05C(sprite); +} + const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA380 = { .tileTag = 10009, -- cgit v1.2.3 From bb9a76b4bc399b3808d18a6aa8379f33de0de0c0 Mon Sep 17 00:00:00 2001 From: MCboy Date: Mon, 18 Jun 2018 05:08:03 +0430 Subject: Update flying.c --- src/battle/anim/flying.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c index 5c865b7a8..84217cae6 100755 --- a/src/battle/anim/flying.c +++ b/src/battle/anim/flying.c @@ -6,7 +6,6 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -void sub_80DA05C(struct Sprite *sprite); void sub_80DA034(struct Sprite *sprite); void sub_80DA16C(struct Sprite *sprite); void sub_80DA208(struct Sprite *sprite); @@ -33,6 +32,18 @@ void sub_80DA034(struct Sprite *sprite) sub_80DA05C(sprite); } +void sub_80DA05C(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[1], 0x20); + sprite->pos2.y = Cos(sprite->data[1], 0x8); + sprite->data[1] = (sprite->data[1] + 5) & 0xFF; + ++sprite->data[0]; + if(sprite->data[0] == 0x47 ) + { + DestroyAnimSprite(sprite); + } +} + const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA380 = { .tileTag = 10009, -- cgit v1.2.3 From 7765a837e5887c1b57c59cfc179804d026496501 Mon Sep 17 00:00:00 2001 From: MCboy Date: Mon, 18 Jun 2018 05:08:12 +0430 Subject: Update flying.s --- asm/flying.s | 34 ---------------------------------- 1 file changed, 34 deletions(-) diff --git a/asm/flying.s b/asm/flying.s index e5903b326..ad61c878e 100644 --- a/asm/flying.s +++ b/asm/flying.s @@ -7,40 +7,6 @@ @ flying - thumb_func_start sub_80DA05C -sub_80DA05C: @ 80DA05C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x20 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x5 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x47 - bne _080DA096 - adds r0, r4, 0 - bl DestroyAnimSprite -_080DA096: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DA05C - thumb_func_start sub_80DA09C sub_80DA09C: @ 80DA09C push {r4,lr} -- cgit v1.2.3 From e05011b4665c57c00fda9201e67556f54bf22aab Mon Sep 17 00:00:00 2001 From: MCboy Date: Mon, 18 Jun 2018 05:21:36 +0430 Subject: issue fixed? --- src/battle/anim/flying.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c index 84217cae6..2f4fa6287 100755 --- a/src/battle/anim/flying.c +++ b/src/battle/anim/flying.c @@ -1,12 +1,14 @@ #include "global.h" +#include "sprite.h" #include "rom_8077ABC.h" #include "battle_anim.h" +#include "trig.h" extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -void sub_80DA034(struct Sprite *sprite); +void sub_80DA05C(struct Sprite *sprite); void sub_80DA16C(struct Sprite *sprite); void sub_80DA208(struct Sprite *sprite); void sub_80DA300(struct Sprite *sprite); -- cgit v1.2.3 From 2aab62a699a278e74246a33cf16d98550a913a67 Mon Sep 17 00:00:00 2001 From: MCboy Date: Thu, 21 Jun 2018 02:26:48 +0430 Subject: decompiled a few functions --- src/battle/anim/flying.c | 276 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 274 insertions(+), 2 deletions(-) diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c index 2f4fa6287..1277ab0bd 100755 --- a/src/battle/anim/flying.c +++ b/src/battle/anim/flying.c @@ -1,19 +1,25 @@ #include "global.h" -#include "sprite.h" -#include "rom_8077ABC.h" +#include "battle.h" #include "battle_anim.h" +#include "palette.h" +#include "rom_8077ABC.h" #include "trig.h" extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; +extern u8 gAnimVisualTaskCount; +void sub_80785E4(struct Sprite *sprite); void sub_80DA05C(struct Sprite *sprite); void sub_80DA16C(struct Sprite *sprite); +void sub_80DA1EC(struct Sprite *sprite); void sub_80DA208(struct Sprite *sprite); void sub_80DA300(struct Sprite *sprite); +void sub_80DA348(struct Sprite *sprite); void sub_80DA38C(struct Sprite *sprite); void sub_80DA4D8(struct Sprite *sprite); +void sub_80DA410(struct Sprite *sprite); void sub_80DAD30(struct Sprite *sprite); void sub_80DAD84(struct Sprite *sprite); void sub_80DB000(struct Sprite *sprite); @@ -25,6 +31,8 @@ void sub_80DB458(struct Sprite *sprite); void sub_80DB564(struct Sprite *sprite); void sub_80DB5E4(struct Sprite *sprite); +void sub_80DA0DC(u8 taskId); + void sub_80DA034(struct Sprite *sprite) { sub_8078764(sprite, 0); @@ -46,6 +54,270 @@ void sub_80DA05C(struct Sprite *sprite) } } +void sub_80DA09C(u8 taskId) +{ + gTasks[taskId].data[0] = gBattleAnimArgs[1]; + gTasks[taskId].data[1] = gBattleAnimArgs[0]; + gTasks[taskId].data[2] = IndexOfSpritePaletteTag(0x2719); + gTasks[taskId].func = sub_80DA0DC; +} + +#ifdef NONMATCHING +void sub_80DA0DC(u8 taskId) +{ + gTasks[taskId].data[10]++; + if(gTasks[taskId].data[10] == gTasks[taskId].data[1]) + { + u16 r0; + u16 r2; + s32 i; + + gTasks[taskId].data[10] = 0; + r0 = gTasks[taskId].data[2]; + r2 = gPlttBufferFaded[r0 * 8]; + for(i = 0; i < 8; i++) + gPlttBufferFaded[r0 * 8 + i + 0x107] = gPlttBufferFaded[r0 * 8 + i + 0x107]; + gTasks[taskId].data[2] = ((r0 + 0x101) * 2) + r2; + } + gTasks[taskId].data[0] = gTasks[taskId].data[0] * 32; + if(gTasks[taskId].data[0] == 0) + { + DestroyAnimVisualTask(taskId); + } +} +#else +NAKED +void sub_80DA0DC(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + ldr r2, _080DA15C @ =gTasks\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r3, r0, r2\n\ + ldrh r0, [r3, 0x1C]\n\ + adds r1, r0, 0x1\n\ + strh r1, [r3, 0x1C]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + movs r4, 0xA\n\ + ldrsh r1, [r3, r4]\n\ + adds r7, r2, 0\n\ + cmp r0, r1\n\ + bne _080DA13A\n\ + movs r0, 0\n\ + strh r0, [r3, 0x1C]\n\ + ldrb r0, [r3, 0xC]\n\ + ldr r2, _080DA160 @ =gPlttBufferFaded\n\ + lsls r0, 4\n\ + movs r3, 0x84\n\ + lsls r3, 1\n\ + adds r1, r0, r3\n\ + lsls r1, 1\n\ + adds r1, r2\n\ + ldrh r6, [r1]\n\ + movs r4, 0x7\n\ + mov r12, r0\n\ + ldr r0, _080DA164 @ =0x00000107\n\ + add r0, r12\n\ + lsls r0, 1\n\ + adds r3, r0, r2\n\ +_080DA122:\n\ + ldrh r0, [r3]\n\ + strh r0, [r1]\n\ + subs r3, 0x2\n\ + subs r1, 0x2\n\ + subs r4, 0x1\n\ + cmp r4, 0\n\ + bgt _080DA122\n\ + ldr r0, _080DA168 @ =0x00000101\n\ + add r0, r12\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + strh r6, [r0]\n\ +_080DA13A:\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r0, r7\n\ + ldrh r1, [r0, 0x8]\n\ + subs r1, 0x1\n\ + strh r1, [r0, 0x8]\n\ + lsls r1, 16\n\ + cmp r1, 0\n\ + bne _080DA154\n\ + adds r0, r5, 0\n\ + bl DestroyAnimVisualTask\n\ +_080DA154:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080DA15C: .4byte gTasks\n\ +_080DA160: .4byte gPlttBufferFaded\n\ +_080DA164: .4byte 0x00000107\n\ +_080DA168: .4byte 0x00000101\n\ + .syntax divided\n"); +} +#endif + +void sub_80DA16C(struct Sprite *sprite) +{ + InitAnimSpritePos(sprite, 1); + if (GetBattlerSide(gAnimBankAttacker) != 0) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3]; + InitAnimSpriteTranslationDeltas(sprite); + sprite->callback = sub_80785E4; + StoreSpriteCallbackInData(sprite, sub_80DA1EC); +} + +void sub_80DA1EC(struct Sprite *sprite) +{ + if (TranslateAnimSpriteByDeltas(sprite) != 0) + { + DestroyAnimSprite(sprite); + } +} + +void sub_80DA208(struct Sprite *sprite) +{ + if (GetBattlerSide(gAnimBankAttacker) != 0) + { + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + } + + if (IsContest()) + { + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + } + + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3); + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[4]; + + if (gBattleAnimArgs[6] == 0) + { + sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2); + sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3); + } + else + { + SetAverageBattlerPositions(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]); + } + + sprite->data[2] = sprite->data[2] + gBattleAnimArgs[2]; + sprite->data[4] = sprite->data[4] + gBattleAnimArgs[3]; + sprite->callback = StartTranslateAnimSpriteByDeltas; + + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); + SeekSpriteAnim(sprite, gBattleAnimArgs[5]); +} + +void sub_80DA300(struct Sprite *sprite) +{ + + InitAnimSpritePos(sprite, 1); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->callback = sub_80DA348; + gSprites[GetAnimBattlerSpriteId(0)].invisible = 1; +} + +void sub_80DA348(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { + sprite->data[0]--; + } + else + { + sprite->data[2] += sprite->data[1]; + sprite->pos2.y -= (sprite->data[2] >> 8); + } + + if (sprite->pos1.y + sprite->pos2.y < -32) + { + DestroyAnimSprite(sprite); + } +} + +void sub_80DA38C(struct Sprite *sprite) +{ + if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER) + { + sprite->pos1.x = 272; + sprite->pos1.y = -32; + StartSpriteAffineAnim(sprite, 1); + } + else + { + sprite->pos1.x = -32; + sprite->pos1.y = -32; + } + + sprite->data[0] = gBattleAnimArgs[0]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3); + + InitAnimSpriteTranslationDeltas(sprite); + sprite->callback = sub_80DA410; +} + +void sub_80DA410(struct Sprite *sprite) +{ + sprite->data[0] = 1; + TranslateAnimSpriteByDeltas(sprite); + + if (((u16)sprite->data[3] >> 8) > 200) + { + sprite->pos1.x += sprite->pos2.x; + sprite->pos2.x = 0; + sprite->data[3] &= 0xFF; + } + + if ((u32)(sprite->pos1.x + sprite->pos2.x + 32) > 304 || sprite->pos1.y + sprite->pos2.y > 160) + { + gSprites[GetAnimBattlerSpriteId(0)].invisible = 0; + DestroyAnimSprite(sprite); + } +} + +void sub_80DA48C(struct Sprite *sprite) +{ + if (sprite->data[0]-- <= 0) + { + if (sprite->oam.affineMode & 1) + { + FreeOamMatrix(sprite->oam.matrixNum); + sprite->oam.affineMode = 0; + } + + DestroySprite(sprite); + gAnimVisualTaskCount--; + } +} + +void sub_80DA4D8(struct Sprite *sprite) +{ + +} + const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA380 = { .tileTag = 10009, -- cgit v1.2.3 From bea8f785da9c791b88028070183125d8e35ce733 Mon Sep 17 00:00:00 2001 From: MCboy Date: Thu, 21 Jun 2018 02:27:35 +0430 Subject: decompiled functions --- asm/flying.s | 539 ----------------------------------------------------------- 1 file changed, 539 deletions(-) diff --git a/asm/flying.s b/asm/flying.s index ad61c878e..126f18206 100644 --- a/asm/flying.s +++ b/asm/flying.s @@ -7,545 +7,6 @@ @ flying - thumb_func_start sub_80DA09C -sub_80DA09C: @ 80DA09C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080DA0CC @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - ldr r1, _080DA0D0 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x8] - ldrh r0, [r1] - strh r0, [r4, 0xA] - ldr r0, _080DA0D4 @ =0x00002719 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0xC] - ldr r0, _080DA0D8 @ =sub_80DA0DC - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DA0CC: .4byte gTasks -_080DA0D0: .4byte gBattleAnimArgs -_080DA0D4: .4byte 0x00002719 -_080DA0D8: .4byte sub_80DA0DC - thumb_func_end sub_80DA09C - - thumb_func_start sub_80DA0DC -sub_80DA0DC: @ 80DA0DC - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r2, _080DA15C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x1C] - adds r1, r0, 0x1 - strh r1, [r3, 0x1C] - lsls r0, 16 - asrs r0, 16 - movs r4, 0xA - ldrsh r1, [r3, r4] - adds r7, r2, 0 - cmp r0, r1 - bne _080DA13A - movs r0, 0 - strh r0, [r3, 0x1C] - ldrb r0, [r3, 0xC] - ldr r2, _080DA160 @ =gPlttBufferFaded - lsls r0, 4 - movs r3, 0x84 - lsls r3, 1 - adds r1, r0, r3 - lsls r1, 1 - adds r1, r2 - ldrh r6, [r1] - movs r4, 0x7 - mov r12, r0 - ldr r0, _080DA164 @ =0x00000107 - add r0, r12 - lsls r0, 1 - adds r3, r0, r2 -_080DA122: - ldrh r0, [r3] - strh r0, [r1] - subs r3, 0x2 - subs r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bgt _080DA122 - ldr r0, _080DA168 @ =0x00000101 - add r0, r12 - lsls r0, 1 - adds r0, r2 - strh r6, [r0] -_080DA13A: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r7 - ldrh r1, [r0, 0x8] - subs r1, 0x1 - strh r1, [r0, 0x8] - lsls r1, 16 - cmp r1, 0 - bne _080DA154 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DA154: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DA15C: .4byte gTasks -_080DA160: .4byte gPlttBufferFaded -_080DA164: .4byte 0x00000107 -_080DA168: .4byte 0x00000101 - thumb_func_end sub_80DA0DC - - thumb_func_start sub_80DA16C -sub_80DA16C: @ 80DA16C - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x1 - bl InitAnimSpritePos - ldr r0, _080DA1D8 @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080DA18C - ldr r1, _080DA1DC @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080DA18C: - ldr r4, _080DA1DC @ =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x2E] - ldrh r0, [r6, 0x20] - strh r0, [r6, 0x30] - ldr r5, _080DA1E0 @ =gAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r6, 0x32] - ldrh r0, [r6, 0x22] - strh r0, [r6, 0x34] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x6] - adds r0, r4 - strh r0, [r6, 0x36] - adds r0, r6, 0 - bl InitAnimSpriteTranslationDeltas - ldr r0, _080DA1E4 @ =sub_80785E4 - str r0, [r6, 0x1C] - ldr r1, _080DA1E8 @ =sub_80DA1EC - adds r0, r6, 0 - bl StoreSpriteCallbackInData - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DA1D8: .4byte gAnimBankAttacker -_080DA1DC: .4byte gBattleAnimArgs -_080DA1E0: .4byte gAnimBankTarget -_080DA1E4: .4byte sub_80785E4 -_080DA1E8: .4byte sub_80DA1EC - thumb_func_end sub_80DA16C - - thumb_func_start sub_80DA1EC -sub_80DA1EC: @ 80DA1EC - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimSpriteByDeltas - lsls r0, 24 - cmp r0, 0 - beq _080DA200 - adds r0, r4, 0 - bl DestroyAnimSprite -_080DA200: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DA1EC - - thumb_func_start sub_80DA208 -sub_80DA208: @ 80DA208 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080DA2A4 @ =gAnimBankAttacker - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080DA234 - ldr r1, _080DA2A8 @ =gBattleAnimArgs - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - ldrh r0, [r1, 0x6] - negs r0, r0 - strh r0, [r1, 0x6] -_080DA234: - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080DA24C - ldr r0, _080DA2A8 @ =gBattleAnimArgs - ldrh r1, [r0, 0x2] - negs r1, r1 - strh r1, [r0, 0x2] - ldrh r1, [r0, 0x6] - negs r1, r1 - strh r1, [r0, 0x6] -_080DA24C: - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r2, _080DA2A8 @ =gBattleAnimArgs - ldrh r1, [r2] - ldrh r3, [r5, 0x20] - adds r1, r3 - strh r1, [r5, 0x20] - lsrs r0, 24 - ldrh r1, [r2, 0x2] - adds r0, r1 - strh r0, [r5, 0x22] - ldrh r0, [r2, 0x8] - strh r0, [r5, 0x2E] - movs r3, 0xC - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _080DA2B0 - ldr r4, _080DA2AC @ =gAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - b _080DA2C2 - .align 2, 0 -_080DA2A4: .4byte gAnimBankAttacker -_080DA2A8: .4byte gBattleAnimArgs -_080DA2AC: .4byte gAnimBankTarget -_080DA2B0: - ldr r0, _080DA2F0 @ =gAnimBankTarget - ldrb r0, [r0] - adds r2, r5, 0 - adds r2, 0x32 - adds r3, r5, 0 - adds r3, 0x36 - movs r1, 0x1 - bl SetAverageBattlerPositions -_080DA2C2: - ldr r4, _080DA2F4 @ =gBattleAnimArgs - ldrh r0, [r4, 0x4] - ldrh r1, [r5, 0x32] - adds r0, r1 - strh r0, [r5, 0x32] - ldrh r0, [r4, 0x6] - ldrh r3, [r5, 0x36] - adds r0, r3 - strh r0, [r5, 0x36] - ldr r0, _080DA2F8 @ =StartTranslateAnimSpriteByDeltas - str r0, [r5, 0x1C] - ldr r1, _080DA2FC @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData - ldrb r1, [r4, 0xA] - adds r0, r5, 0 - bl SeekSpriteAnim - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DA2F0: .4byte gAnimBankTarget -_080DA2F4: .4byte gBattleAnimArgs -_080DA2F8: .4byte StartTranslateAnimSpriteByDeltas -_080DA2FC: .4byte DestroyAnimSprite - thumb_func_end sub_80DA208 - - thumb_func_start sub_80DA300 -sub_80DA300: @ 80DA300 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitAnimSpritePos - ldr r1, _080DA33C @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x30] - ldr r0, _080DA340 @ =sub_80DA348 - str r0, [r4, 0x1C] - movs r0, 0 - bl GetAnimBattlerSpriteId - ldr r2, _080DA344 @ =gSprites - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DA33C: .4byte gBattleAnimArgs -_080DA340: .4byte sub_80DA348 -_080DA344: .4byte gSprites - thumb_func_end sub_80DA300 - - thumb_func_start sub_80DA348 -sub_80DA348: @ 80DA348 - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x2E] - movs r3, 0x2E - ldrsh r0, [r2, r3] - cmp r0, 0 - ble _080DA35C - subs r0, r1, 0x1 - strh r0, [r2, 0x2E] - b _080DA36E -_080DA35C: - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r2, 0x26] - subs r1, r0 - strh r1, [r2, 0x26] -_080DA36E: - movs r3, 0x22 - ldrsh r0, [r2, r3] - movs r3, 0x26 - ldrsh r1, [r2, r3] - adds r0, r1 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - bge _080DA386 - adds r0, r2, 0 - bl DestroyAnimSprite -_080DA386: - pop {r0} - bx r0 - thumb_func_end sub_80DA348 - - thumb_func_start sub_80DA38C -sub_80DA38C: @ 80DA38C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080DA3B4 @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080DA3BC - movs r0, 0x88 - lsls r0, 1 - strh r0, [r5, 0x20] - ldr r0, _080DA3B8 @ =0x0000ffe0 - strh r0, [r5, 0x22] - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _080DA3C2 - .align 2, 0 -_080DA3B4: .4byte gAnimBankAttacker -_080DA3B8: .4byte 0x0000ffe0 -_080DA3BC: - ldr r0, _080DA400 @ =0x0000ffe0 - strh r0, [r5, 0x20] - strh r0, [r5, 0x22] -_080DA3C2: - ldr r0, _080DA404 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldr r4, _080DA408 @ =gAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl InitAnimSpriteTranslationDeltas - ldr r0, _080DA40C @ =sub_80DA410 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DA400: .4byte 0x0000ffe0 -_080DA404: .4byte gBattleAnimArgs -_080DA408: .4byte gAnimBankTarget -_080DA40C: .4byte sub_80DA410 - thumb_func_end sub_80DA38C - - thumb_func_start sub_80DA410 -sub_80DA410: @ 80DA410 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x1 - strh r0, [r4, 0x2E] - adds r0, r4, 0 - bl TranslateAnimSpriteByDeltas - ldrh r1, [r4, 0x34] - lsrs r0, r1, 8 - cmp r0, 0xC8 - bls _080DA438 - ldrh r0, [r4, 0x24] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - movs r0, 0 - strh r0, [r4, 0x24] - movs r0, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] -_080DA438: - movs r1, 0x20 - ldrsh r0, [r4, r1] - movs r2, 0x24 - ldrsh r1, [r4, r2] - adds r0, r1 - adds r0, 0x20 - movs r1, 0x98 - lsls r1, 1 - cmp r0, r1 - bhi _080DA45A - movs r1, 0x22 - ldrsh r0, [r4, r1] - movs r2, 0x26 - ldrsh r1, [r4, r2] - adds r0, r1 - cmp r0, 0xA0 - ble _080DA480 -_080DA45A: - movs r0, 0 - bl GetAnimBattlerSpriteId - ldr r2, _080DA488 @ =gSprites - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x3E - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - adds r0, r4, 0 - bl DestroyAnimSprite -_080DA480: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DA488: .4byte gSprites - thumb_func_end sub_80DA410 - - thumb_func_start sub_80DA48C -sub_80DA48C: @ 80DA48C - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - subs r1, r0, 0x1 - strh r1, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _080DA4CC - ldrb r0, [r4, 0x1] - lsls r0, 30 - lsrs r0, 30 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080DA4BE - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x1] -_080DA4BE: - adds r0, r4, 0 - bl DestroySprite - ldr r1, _080DA4D4 @ =gAnimVisualTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] -_080DA4CC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DA4D4: .4byte gAnimVisualTaskCount - thumb_func_end sub_80DA48C - thumb_func_start sub_80DA4D8 sub_80DA4D8: @ 80DA4D8 push {r4-r7,lr} -- cgit v1.2.3 From ddcee9140701808ad70f4e903b837178b1d85496 Mon Sep 17 00:00:00 2001 From: MCboy Date: Thu, 21 Jun 2018 02:35:42 +0430 Subject: whoops --- src/battle/anim/flying.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c index 1277ab0bd..05138485b 100755 --- a/src/battle/anim/flying.c +++ b/src/battle/anim/flying.c @@ -313,11 +313,6 @@ void sub_80DA48C(struct Sprite *sprite) } } -void sub_80DA4D8(struct Sprite *sprite) -{ - -} - const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA380 = { .tileTag = 10009, -- cgit v1.2.3 From 87930e9c06112256c977fd9fcb0f71aa31eccaba Mon Sep 17 00:00:00 2001 From: MCboy Date: Thu, 21 Jun 2018 03:17:30 +0430 Subject: changed code a bit --- src/battle/anim/flying.c | 923 +++++++++++++++++++++++------------------------ 1 file changed, 461 insertions(+), 462 deletions(-) diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c index 05138485b..dcb248128 100755 --- a/src/battle/anim/flying.c +++ b/src/battle/anim/flying.c @@ -33,604 +33,603 @@ void sub_80DB5E4(struct Sprite *sprite); void sub_80DA0DC(u8 taskId); -void sub_80DA034(struct Sprite *sprite) +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA380 = { - sub_8078764(sprite, 0); - sprite->pos1.y += 0x14; - sprite->data[1] = 0xBF; - sprite->callback = sub_80DA05C; - sub_80DA05C(sprite); -} + .tileTag = 10009, + .paletteTag = 10009, + .oam = &gOamData_837DF7C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DA034, +}; -void sub_80DA05C(struct Sprite *sprite) +const union AffineAnimCmd gSpriteAffineAnim_83DA398[] = { - sprite->pos2.x = Sin(sprite->data[1], 0x20); - sprite->pos2.y = Cos(sprite->data[1], 0x8); - sprite->data[1] = (sprite->data[1] + 5) & 0xFF; - ++sprite->data[0]; - if(sprite->data[0] == 0x47 ) - { - DestroyAnimSprite(sprite); - } -} + AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xA, 0x0, 0, 24), + AFFINEANIMCMD_END, +}; -void sub_80DA09C(u8 taskId) +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA3B0[] = { - gTasks[taskId].data[0] = gBattleAnimArgs[1]; - gTasks[taskId].data[1] = gBattleAnimArgs[0]; - gTasks[taskId].data[2] = IndexOfSpritePaletteTag(0x2719); - gTasks[taskId].func = sub_80DA0DC; -} + gSpriteAffineAnim_83DA398, +}; -#ifdef NONMATCHING -void sub_80DA0DC(u8 taskId) -{ - gTasks[taskId].data[10]++; - if(gTasks[taskId].data[10] == gTasks[taskId].data[1]) - { - u16 r0; - u16 r2; - s32 i; - - gTasks[taskId].data[10] = 0; - r0 = gTasks[taskId].data[2]; - r2 = gPlttBufferFaded[r0 * 8]; - for(i = 0; i < 8; i++) - gPlttBufferFaded[r0 * 8 + i + 0x107] = gPlttBufferFaded[r0 * 8 + i + 0x107]; - gTasks[taskId].data[2] = ((r0 + 0x101) * 2) + r2; - } - gTasks[taskId].data[0] = gTasks[taskId].data[0] * 32; - if(gTasks[taskId].data[0] == 0) - { - DestroyAnimVisualTask(taskId); - } -} -#else -NAKED -void sub_80DA0DC(u8 taskId) +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA3B4 = { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - ldr r2, _080DA15C @ =gTasks\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r3, r0, r2\n\ - ldrh r0, [r3, 0x1C]\n\ - adds r1, r0, 0x1\n\ - strh r1, [r3, 0x1C]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - movs r4, 0xA\n\ - ldrsh r1, [r3, r4]\n\ - adds r7, r2, 0\n\ - cmp r0, r1\n\ - bne _080DA13A\n\ - movs r0, 0\n\ - strh r0, [r3, 0x1C]\n\ - ldrb r0, [r3, 0xC]\n\ - ldr r2, _080DA160 @ =gPlttBufferFaded\n\ - lsls r0, 4\n\ - movs r3, 0x84\n\ - lsls r3, 1\n\ - adds r1, r0, r3\n\ - lsls r1, 1\n\ - adds r1, r2\n\ - ldrh r6, [r1]\n\ - movs r4, 0x7\n\ - mov r12, r0\n\ - ldr r0, _080DA164 @ =0x00000107\n\ - add r0, r12\n\ - lsls r0, 1\n\ - adds r3, r0, r2\n\ -_080DA122:\n\ - ldrh r0, [r3]\n\ - strh r0, [r1]\n\ - subs r3, 0x2\n\ - subs r1, 0x2\n\ - subs r4, 0x1\n\ - cmp r4, 0\n\ - bgt _080DA122\n\ - ldr r0, _080DA168 @ =0x00000101\n\ - add r0, r12\n\ - lsls r0, 1\n\ - adds r0, r2\n\ - strh r6, [r0]\n\ -_080DA13A:\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r0, r7\n\ - ldrh r1, [r0, 0x8]\n\ - subs r1, 0x1\n\ - strh r1, [r0, 0x8]\n\ - lsls r1, 16\n\ - cmp r1, 0\n\ - bne _080DA154\n\ - adds r0, r5, 0\n\ - bl DestroyAnimVisualTask\n\ -_080DA154:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080DA15C: .4byte gTasks\n\ -_080DA160: .4byte gPlttBufferFaded\n\ -_080DA164: .4byte 0x00000107\n\ -_080DA168: .4byte 0x00000101\n\ - .syntax divided\n"); -} -#endif + .tileTag = 10009, + .paletteTag = 10009, + .oam = &gOamData_837DFDC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA3B0, + .callback = sub_80DA16C, +}; -void sub_80DA16C(struct Sprite *sprite) +const union AnimCmd gSpriteAnim_83DA3CC[] = { - InitAnimSpritePos(sprite, 1); - if (GetBattlerSide(gAnimBankAttacker) != 0) - gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2]; - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3]; - InitAnimSpriteTranslationDeltas(sprite); - sprite->callback = sub_80785E4; - StoreSpriteCallbackInData(sprite, sub_80DA1EC); -} + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(0, 3, .hFlip = TRUE), + ANIMCMD_FRAME(0, 3, .vFlip = TRUE), + ANIMCMD_FRAME(0, 3, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; -void sub_80DA1EC(struct Sprite *sprite) +const union AnimCmd *const gSpriteAnimTable_83DA3E0[] = { - if (TranslateAnimSpriteByDeltas(sprite) != 0) - { - DestroyAnimSprite(sprite); - } -} + gSpriteAnim_83DA3CC, +}; -void sub_80DA208(struct Sprite *sprite) +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA3E4 = { - if (GetBattlerSide(gAnimBankAttacker) != 0) - { - gBattleAnimArgs[0] = -gBattleAnimArgs[0]; - gBattleAnimArgs[1] = -gBattleAnimArgs[1]; - gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - gBattleAnimArgs[3] = -gBattleAnimArgs[3]; - } - - if (IsContest()) - { - gBattleAnimArgs[1] = -gBattleAnimArgs[1]; - gBattleAnimArgs[3] = -gBattleAnimArgs[3]; - } - - sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2); - sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3); - sprite->pos1.x += gBattleAnimArgs[0]; - sprite->pos1.y += gBattleAnimArgs[1]; - sprite->data[0] = gBattleAnimArgs[4]; - - if (gBattleAnimArgs[6] == 0) - { - sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2); - sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3); - } - else - { - SetAverageBattlerPositions(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]); - } - - sprite->data[2] = sprite->data[2] + gBattleAnimArgs[2]; - sprite->data[4] = sprite->data[4] + gBattleAnimArgs[3]; - sprite->callback = StartTranslateAnimSpriteByDeltas; - - StoreSpriteCallbackInData(sprite, DestroyAnimSprite); - SeekSpriteAnim(sprite, gBattleAnimArgs[5]); -} + .tileTag = 10154, + .paletteTag = 10154, + .oam = &gOamData_837DF54, + .anims = gSpriteAnimTable_83DA3E0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DA208, +}; -void sub_80DA300(struct Sprite *sprite) +const union AffineAnimCmd gSpriteAffineAnim_83DA3FC[] = { + AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6), + AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5), + AFFINEANIMCMD_FRAME(0xFFF0, 0x20, 0, 10), + AFFINEANIMCMD_END, +}; - InitAnimSpritePos(sprite, 1); - sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[1] = gBattleAnimArgs[3]; - sprite->callback = sub_80DA348; - gSprites[GetAnimBattlerSpriteId(0)].invisible = 1; -} - -void sub_80DA348(struct Sprite *sprite) +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA424[] = { - if (sprite->data[0] > 0) - { - sprite->data[0]--; - } - else - { - sprite->data[2] += sprite->data[1]; - sprite->pos2.y -= (sprite->data[2] >> 8); - } + gSpriteAffineAnim_83DA3FC, +}; - if (sprite->pos1.y + sprite->pos2.y < -32) - { - DestroyAnimSprite(sprite); - } -} +const union AffineAnimCmd gSpriteAffineAnim_83DA428[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 50, 1), + AFFINEANIMCMD_END, +}; -void sub_80DA38C(struct Sprite *sprite) +const union AffineAnimCmd gSpriteAffineAnim_83DA438[] = { - if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER) - { - sprite->pos1.x = 272; - sprite->pos1.y = -32; - StartSpriteAffineAnim(sprite, 1); - } - else - { - sprite->pos1.x = -32; - sprite->pos1.y = -32; - } + AFFINEANIMCMD_FRAME(0x0, 0x0, -40, 1), + AFFINEANIMCMD_END, +}; - sprite->data[0] = gBattleAnimArgs[0]; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2); - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3); +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA448[] = +{ + gSpriteAffineAnim_83DA428, + gSpriteAffineAnim_83DA438, +}; - InitAnimSpriteTranslationDeltas(sprite); - sprite->callback = sub_80DA410; -} +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA450 = +{ + .tileTag = 10156, + .paletteTag = 10156, + .oam = &gOamData_837DFFC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA424, + .callback = sub_80DA300, +}; -void sub_80DA410(struct Sprite *sprite) +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA468 = { - sprite->data[0] = 1; - TranslateAnimSpriteByDeltas(sprite); + .tileTag = 10156, + .paletteTag = 10156, + .oam = &gOamData_837DF9C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA448, + .callback = sub_80DA38C, +}; - if (((u16)sprite->data[3] >> 8) > 200) - { - sprite->pos1.x += sprite->pos2.x; - sprite->pos2.x = 0; - sprite->data[3] &= 0xFF; - } +const union AnimCmd gSpriteAnim_83DA480[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END, +}; - if ((u32)(sprite->pos1.x + sprite->pos2.x + 32) > 304 || sprite->pos1.y + sprite->pos2.y > 160) - { - gSprites[GetAnimBattlerSpriteId(0)].invisible = 0; - DestroyAnimSprite(sprite); - } -} +const union AnimCmd gSpriteAnim_83DA488[] = +{ + ANIMCMD_FRAME(16, 0, .hFlip = TRUE), + ANIMCMD_END, +}; -void sub_80DA48C(struct Sprite *sprite) +const union AnimCmd *const gSpriteAnimTable_83DA490[] = { - if (sprite->data[0]-- <= 0) - { - if (sprite->oam.affineMode & 1) - { - FreeOamMatrix(sprite->oam.matrixNum); - sprite->oam.affineMode = 0; - } - - DestroySprite(sprite); - gAnimVisualTaskCount--; - } -} + gSpriteAnim_83DA480, + gSpriteAnim_83DA488, +}; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA380 = +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA498 = { - .tileTag = 10009, - .paletteTag = 10009, - .oam = &gOamData_837DF7C, - .anims = gDummySpriteAnimTable, + .tileTag = 10270, + .paletteTag = 10270, + .oam = &gOamData_837DF94, + .anims = gSpriteAnimTable_83DA490, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80DA034, + .callback = sub_80DA4D8, }; -const union AffineAnimCmd gSpriteAffineAnim_83DA398[] = -{ - AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0), - AFFINEANIMCMD_FRAME(0xA, 0x0, 0, 24), - AFFINEANIMCMD_END, -}; +const u16 gUnknownPalette_83DA4B0[] = INCBIN_U16("graphics/unknown/unknown_3DA4B0.gbapal"); -const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA3B0[] = +const struct SpriteTemplate gSpriteTemplate_83DA4D0 = { - gSpriteAffineAnim_83DA398, + .tileTag = 10155, + .paletteTag = 10155, + .oam = &gOamData_837DF2C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DAD30, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA3B4 = +const struct SpriteTemplate gSpriteTemplate_83DA4E8 = { - .tileTag = 10009, - .paletteTag = 10009, - .oam = &gOamData_837DFDC, - .anims = gDummySpriteAnimTable, + .tileTag = 10270, + .paletteTag = 10270, + .oam = &gOamData_837DF94, + .anims = gSpriteAnimTable_83DA490, .images = NULL, - .affineAnims = gSpriteAffineAnimTable_83DA3B0, - .callback = sub_80DA16C, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DAD84, }; -const union AnimCmd gSpriteAnim_83DA3CC[] = +const union AnimCmd gSpriteAnim_83DA500[] = { - ANIMCMD_FRAME(0, 3), - ANIMCMD_FRAME(0, 3, .hFlip = TRUE), - ANIMCMD_FRAME(0, 3, .vFlip = TRUE), - ANIMCMD_FRAME(0, 3, .vFlip = TRUE, .hFlip = TRUE), - ANIMCMD_JUMP(0), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(8, 1), + ANIMCMD_FRAME(16, 1), + ANIMCMD_FRAME(8, 1, .hFlip = TRUE), + ANIMCMD_FRAME(0, 1, .hFlip = TRUE), + ANIMCMD_END, }; -const union AnimCmd *const gSpriteAnimTable_83DA3E0[] = +const union AnimCmd *const gSpriteAnimTable_83DA518[] = { - gSpriteAnim_83DA3CC, + gSpriteAnim_83DA500, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA3E4 = +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA51C = { - .tileTag = 10154, - .paletteTag = 10154, + .tileTag = 10162, + .paletteTag = 10162, .oam = &gOamData_837DF54, - .anims = gSpriteAnimTable_83DA3E0, + .anims = gSpriteAnimTable_83DA518, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80DA208, + .callback = sub_80DB000, }; -const union AffineAnimCmd gSpriteAffineAnim_83DA3FC[] = +const union AffineAnimCmd gSpriteAffineAnim_83DA534[] = { AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6), AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5), - AFFINEANIMCMD_FRAME(0xFFF0, 0x20, 0, 10), + AFFINEANIMCMD_FRAME(0xFFEC, 0x0, 0, 7), + AFFINEANIMCMD_FRAME(0xFFEC, 0xFFEC, 0, 5), AFFINEANIMCMD_END, }; -const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA424[] = +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA564[] = { - gSpriteAffineAnim_83DA3FC, + gSpriteAffineAnim_83DA534, }; -const union AffineAnimCmd gSpriteAffineAnim_83DA428[] = +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA568 = { - AFFINEANIMCMD_FRAME(0x0, 0x0, 50, 1), - AFFINEANIMCMD_END, + .tileTag = 10156, + .paletteTag = 10156, + .oam = &gOamData_837DFFC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA564, + .callback = sub_80DB194, }; -const union AffineAnimCmd gSpriteAffineAnim_83DA438[] = +const union AffineAnimCmd gSpriteAffineAnim_83DA580[] = { - AFFINEANIMCMD_FRAME(0x0, 0x0, -40, 1), + AFFINEANIMCMD_FRAME(0xA0, 0x100, 0, 0), AFFINEANIMCMD_END, }; -const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA448[] = +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA590[] = { - gSpriteAffineAnim_83DA428, - gSpriteAffineAnim_83DA438, + gSpriteAffineAnim_83DA580, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA450 = +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA594 = { .tileTag = 10156, .paletteTag = 10156, .oam = &gOamData_837DFFC, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = gSpriteAffineAnimTable_83DA424, - .callback = sub_80DA300, + .affineAnims = gSpriteAffineAnimTable_83DA590, + .callback = sub_80DB1F4, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA468 = +const union AffineAnimCmd gSpriteAffineAnim_83DA5AC[] = +{ + AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6), + AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5), + AFFINEANIMCMD_FRAME(0xFFF0, 0x20, 0, 10), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA5D4[] = +{ + gSpriteAffineAnim_83DA5AC, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA5D8 = { .tileTag = 10156, .paletteTag = 10156, - .oam = &gOamData_837DF9C, + .oam = &gOamData_837DFFC, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = gSpriteAffineAnimTable_83DA448, - .callback = sub_80DA38C, + .affineAnims = gSpriteAffineAnimTable_83DA5D4, + .callback = sub_80DB288, }; -const union AnimCmd gSpriteAnim_83DA480[] = +const union AffineAnimCmd gSpriteAffineAnim_83DA5F0[] = { - ANIMCMD_FRAME(0, 0), - ANIMCMD_END, + AFFINEANIMCMD_FRAME(0x100, 0x0, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x20, 0, 12), + AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 11), + AFFINEANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83DA488[] = +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA610[] = { - ANIMCMD_FRAME(16, 0, .hFlip = TRUE), - ANIMCMD_END, + gSpriteAffineAnim_83DA5F0, }; -const union AnimCmd *const gSpriteAnimTable_83DA490[] = +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA614 = { - gSpriteAnim_83DA480, - gSpriteAnim_83DA488, + .tileTag = 10272, + .paletteTag = 10272, + .oam = &gOamData_837DFFC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DB374, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA498 = +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA62C = { - .tileTag = 10270, - .paletteTag = 10270, - .oam = &gOamData_837DF94, - .anims = gSpriteAnimTable_83DA490, + .tileTag = 10273, + .paletteTag = 10273, + .oam = &gOamData_837DF24, + .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80DA4D8, + .callback = sub_80DB458, }; -const u16 gUnknownPalette_83DA4B0[] = INCBIN_U16("graphics/unknown/unknown_3DA4B0.gbapal"); - -const struct SpriteTemplate gSpriteTemplate_83DA4D0 = +const struct SpriteTemplate gSpriteTemplate_83DA644 = { - .tileTag = 10155, - .paletteTag = 10155, - .oam = &gOamData_837DF2C, + .tileTag = 10212, + .paletteTag = 10212, + .oam = &gOamData_837E05C, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80DAD30, + .callback = sub_80DB564, }; -const struct SpriteTemplate gSpriteTemplate_83DA4E8 = +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA65C = { - .tileTag = 10270, - .paletteTag = 10270, - .oam = &gOamData_837DF94, - .anims = gSpriteAnimTable_83DA490, + .tileTag = 10284, + .paletteTag = 10284, + .oam = &gOamData_837DFFC, + .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80DAD84, + .callback = sub_80DB5E4, }; -const union AnimCmd gSpriteAnim_83DA500[] = +void sub_80DA034(struct Sprite *sprite) +{ + sub_8078764(sprite, 0); + sprite->pos1.y += 20; + sprite->data[1] = 0xBF; + sprite->callback = sub_80DA05C; + sub_80DA05C(sprite); +} + +void sub_80DA05C(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[1], 0x20); + sprite->pos2.y = Cos(sprite->data[1], 0x8); + sprite->data[1] = (sprite->data[1] + 5) & 0xFF; + if(++sprite->data[0] == 0x47) + { + DestroyAnimSprite(sprite); + } +} + +void sub_80DA09C(u8 taskId) +{ + gTasks[taskId].data[0] = gBattleAnimArgs[1]; + gTasks[taskId].data[1] = gBattleAnimArgs[0]; + gTasks[taskId].data[2] = IndexOfSpritePaletteTag(0x2719); + gTasks[taskId].func = sub_80DA0DC; +} + +#ifdef NONMATCHING +void sub_80DA0DC(u8 taskId) +{ + gTasks[taskId].data[10]++; + if(gTasks[taskId].data[10] == gTasks[taskId].data[1]) + { + u16 r0; + u16 r2; + s32 i; + + gTasks[taskId].data[10] = 0; + r0 = gTasks[taskId].data[2]; + r2 = gPlttBufferFaded[r0 * 8]; + for(i = 0; i < 8; i++) + gPlttBufferFaded[r0 * 8 + i + 0x107] = gPlttBufferFaded[r0 * 8 + i + 0x107]; + gTasks[taskId].data[2] = ((r0 + 0x101) * 2) + r2; + } + gTasks[taskId].data[0] = gTasks[taskId].data[0] * 32; + if(gTasks[taskId].data[0] == 0) + { + DestroyAnimVisualTask(taskId); + } +} +#else +NAKED +void sub_80DA0DC(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + ldr r2, _080DA15C @ =gTasks\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r3, r0, r2\n\ + ldrh r0, [r3, 0x1C]\n\ + adds r1, r0, 0x1\n\ + strh r1, [r3, 0x1C]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + movs r4, 0xA\n\ + ldrsh r1, [r3, r4]\n\ + adds r7, r2, 0\n\ + cmp r0, r1\n\ + bne _080DA13A\n\ + movs r0, 0\n\ + strh r0, [r3, 0x1C]\n\ + ldrb r0, [r3, 0xC]\n\ + ldr r2, _080DA160 @ =gPlttBufferFaded\n\ + lsls r0, 4\n\ + movs r3, 0x84\n\ + lsls r3, 1\n\ + adds r1, r0, r3\n\ + lsls r1, 1\n\ + adds r1, r2\n\ + ldrh r6, [r1]\n\ + movs r4, 0x7\n\ + mov r12, r0\n\ + ldr r0, _080DA164 @ =0x00000107\n\ + add r0, r12\n\ + lsls r0, 1\n\ + adds r3, r0, r2\n\ +_080DA122:\n\ + ldrh r0, [r3]\n\ + strh r0, [r1]\n\ + subs r3, 0x2\n\ + subs r1, 0x2\n\ + subs r4, 0x1\n\ + cmp r4, 0\n\ + bgt _080DA122\n\ + ldr r0, _080DA168 @ =0x00000101\n\ + add r0, r12\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + strh r6, [r0]\n\ +_080DA13A:\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r0, r7\n\ + ldrh r1, [r0, 0x8]\n\ + subs r1, 0x1\n\ + strh r1, [r0, 0x8]\n\ + lsls r1, 16\n\ + cmp r1, 0\n\ + bne _080DA154\n\ + adds r0, r5, 0\n\ + bl DestroyAnimVisualTask\n\ +_080DA154:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080DA15C: .4byte gTasks\n\ +_080DA160: .4byte gPlttBufferFaded\n\ +_080DA164: .4byte 0x00000107\n\ +_080DA168: .4byte 0x00000101\n\ + .syntax divided\n"); +} +#endif + +void sub_80DA16C(struct Sprite *sprite) { - ANIMCMD_FRAME(0, 1), - ANIMCMD_FRAME(8, 1), - ANIMCMD_FRAME(16, 1), - ANIMCMD_FRAME(8, 1, .hFlip = TRUE), - ANIMCMD_FRAME(0, 1, .hFlip = TRUE), - ANIMCMD_END, -}; + InitAnimSpritePos(sprite, 1); + if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3]; + InitAnimSpriteTranslationDeltas(sprite); + sprite->callback = sub_80785E4; + StoreSpriteCallbackInData(sprite, sub_80DA1EC); +} -const union AnimCmd *const gSpriteAnimTable_83DA518[] = +void sub_80DA1EC(struct Sprite *sprite) { - gSpriteAnim_83DA500, -}; + if (TranslateAnimSpriteByDeltas(sprite) != 0) + { + DestroyAnimSprite(sprite); + } +} -const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA51C = +void sub_80DA208(struct Sprite *sprite) { - .tileTag = 10162, - .paletteTag = 10162, - .oam = &gOamData_837DF54, - .anims = gSpriteAnimTable_83DA518, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80DB000, -}; + if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER) + { + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + } -const union AffineAnimCmd gSpriteAffineAnim_83DA534[] = -{ - AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0), - AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6), - AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5), - AFFINEANIMCMD_FRAME(0xFFEC, 0x0, 0, 7), - AFFINEANIMCMD_FRAME(0xFFEC, 0xFFEC, 0, 5), - AFFINEANIMCMD_END, -}; + if (IsContest()) + { + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + } -const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA564[] = -{ - gSpriteAffineAnim_83DA534, -}; + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3); + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[4]; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA568 = -{ - .tileTag = 10156, - .paletteTag = 10156, - .oam = &gOamData_837DFFC, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gSpriteAffineAnimTable_83DA564, - .callback = sub_80DB194, -}; + if (gBattleAnimArgs[6] == 0) + { + sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2); + sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3); + } + else + { + SetAverageBattlerPositions(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]); + } -const union AffineAnimCmd gSpriteAffineAnim_83DA580[] = -{ - AFFINEANIMCMD_FRAME(0xA0, 0x100, 0, 0), - AFFINEANIMCMD_END, -}; + sprite->data[2] = sprite->data[2] + gBattleAnimArgs[2]; + sprite->data[4] = sprite->data[4] + gBattleAnimArgs[3]; + sprite->callback = StartTranslateAnimSpriteByDeltas; -const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA590[] = -{ - gSpriteAffineAnim_83DA580, -}; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); + SeekSpriteAnim(sprite, gBattleAnimArgs[5]); +} -const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA594 = +void sub_80DA300(struct Sprite *sprite) { - .tileTag = 10156, - .paletteTag = 10156, - .oam = &gOamData_837DFFC, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gSpriteAffineAnimTable_83DA590, - .callback = sub_80DB1F4, -}; -const union AffineAnimCmd gSpriteAffineAnim_83DA5AC[] = -{ - AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0), - AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6), - AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5), - AFFINEANIMCMD_FRAME(0xFFF0, 0x20, 0, 10), - AFFINEANIMCMD_END, -}; + InitAnimSpritePos(sprite, 1); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->callback = sub_80DA348; + gSprites[GetAnimBattlerSpriteId(0)].invisible = 1; +} -const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA5D4[] = +void sub_80DA348(struct Sprite *sprite) { - gSpriteAffineAnim_83DA5AC, -}; + if (sprite->data[0] > 0) + { + sprite->data[0]--; + } + else + { + sprite->data[2] += sprite->data[1]; + sprite->pos2.y -= (sprite->data[2] >> 8); + } -const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA5D8 = -{ - .tileTag = 10156, - .paletteTag = 10156, - .oam = &gOamData_837DFFC, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gSpriteAffineAnimTable_83DA5D4, - .callback = sub_80DB288, -}; + if (sprite->pos1.y + sprite->pos2.y < -32) + { + DestroyAnimSprite(sprite); + } +} -const union AffineAnimCmd gSpriteAffineAnim_83DA5F0[] = +void sub_80DA38C(struct Sprite *sprite) { - AFFINEANIMCMD_FRAME(0x100, 0x0, 0, 0), - AFFINEANIMCMD_FRAME(0x0, 0x20, 0, 12), - AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 11), - AFFINEANIMCMD_END, -}; + if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER) + { + sprite->pos1.x = 272; + sprite->pos1.y = -32; + StartSpriteAffineAnim(sprite, 1); + } + else + { + sprite->pos1.x = -32; + sprite->pos1.y = -32; + } -const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA610[] = -{ - gSpriteAffineAnim_83DA5F0, -}; + sprite->data[0] = gBattleAnimArgs[0]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3); -const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA614 = -{ - .tileTag = 10272, - .paletteTag = 10272, - .oam = &gOamData_837DFFC, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80DB374, -}; + InitAnimSpriteTranslationDeltas(sprite); + sprite->callback = sub_80DA410; +} -const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA62C = +void sub_80DA410(struct Sprite *sprite) { - .tileTag = 10273, - .paletteTag = 10273, - .oam = &gOamData_837DF24, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80DB458, -}; + sprite->data[0] = 1; + TranslateAnimSpriteByDeltas(sprite); -const struct SpriteTemplate gSpriteTemplate_83DA644 = -{ - .tileTag = 10212, - .paletteTag = 10212, - .oam = &gOamData_837E05C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80DB564, -}; + if (((u16)sprite->data[3] >> 8) > 200) + { + sprite->pos1.x += sprite->pos2.x; + sprite->pos2.x = 0; + sprite->data[3] &= 0xFF; + } -const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA65C = + if ((u32)(sprite->pos1.x + sprite->pos2.x + 32) > 304 || sprite->pos1.y + sprite->pos2.y > 160) + { + gSprites[GetAnimBattlerSpriteId(0)].invisible = 0; + DestroyAnimSprite(sprite); + } +} + +void sub_80DA48C(struct Sprite *sprite) { - .tileTag = 10284, - .paletteTag = 10284, - .oam = &gOamData_837DFFC, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80DB5E4, -}; + if (sprite->data[0]-- <= 0) + { + if (sprite->oam.affineMode & 1) + { + FreeOamMatrix(sprite->oam.matrixNum); + sprite->oam.affineMode = 0; + } + + DestroySprite(sprite); + gAnimVisualTaskCount--; + } +} -- cgit v1.2.3 From b6465675b63085ebcdbcd576110733edc2c06b4a Mon Sep 17 00:00:00 2001 From: MCboy Date: Thu, 21 Jun 2018 03:28:07 +0430 Subject: ugh not again --- src/battle/anim/flying.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c index dcb248128..0decda6cd 100755 --- a/src/battle/anim/flying.c +++ b/src/battle/anim/flying.c @@ -11,6 +11,7 @@ extern u8 gAnimBankTarget; extern u8 gAnimVisualTaskCount; void sub_80785E4(struct Sprite *sprite); +void sub_80DA034(struct Sprite *sprite); void sub_80DA05C(struct Sprite *sprite); void sub_80DA16C(struct Sprite *sprite); void sub_80DA1EC(struct Sprite *sprite); -- cgit v1.2.3 From b9c36be83b68a7c1375f23b407e7f9467091107b Mon Sep 17 00:00:00 2001 From: MCboy Date: Mon, 25 Jun 2018 04:58:08 +0430 Subject: fixed an spacing issue --- src/battle/anim/flying.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c index 0decda6cd..d5541588a 100755 --- a/src/battle/anim/flying.c +++ b/src/battle/anim/flying.c @@ -551,7 +551,6 @@ void sub_80DA208(struct Sprite *sprite) void sub_80DA300(struct Sprite *sprite) { - InitAnimSpritePos(sprite, 1); sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = gBattleAnimArgs[3]; -- cgit v1.2.3 From c27e3a8a4b1463ce47b5ef6c5b22b5b85f1ece12 Mon Sep 17 00:00:00 2001 From: MCboy Date: Mon, 25 Jun 2018 05:01:15 +0430 Subject: hopefully no "bugs" --- src/battle/anim/flying.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c index d5541588a..c8cd2077b 100755 --- a/src/battle/anim/flying.c +++ b/src/battle/anim/flying.c @@ -378,8 +378,6 @@ void sub_80DA05C(struct Sprite *sprite) void sub_80DA09C(u8 taskId) { - gTasks[taskId].data[0] = gBattleAnimArgs[1]; - gTasks[taskId].data[1] = gBattleAnimArgs[0]; gTasks[taskId].data[2] = IndexOfSpritePaletteTag(0x2719); gTasks[taskId].func = sub_80DA0DC; } -- cgit v1.2.3 From f03705064f301db4bce8e7f74edc87d41311803b Mon Sep 17 00:00:00 2001 From: MCboy Date: Mon, 25 Jun 2018 05:07:22 +0430 Subject: oops --- src/battle/anim/flying.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c index c8cd2077b..e8c50816c 100755 --- a/src/battle/anim/flying.c +++ b/src/battle/anim/flying.c @@ -378,8 +378,10 @@ void sub_80DA05C(struct Sprite *sprite) void sub_80DA09C(u8 taskId) { - gTasks[taskId].data[2] = IndexOfSpritePaletteTag(0x2719); - gTasks[taskId].func = sub_80DA0DC; + gTasks[taskId].data[0] = gBattleAnimArgs[1]; + gTasks[taskId].data[1] = gBattleAnimArgs[0]; + gTasks[taskId].data[2] = IndexOfSpritePaletteTag(0x2719); + gTasks[taskId].func = sub_80DA0DC; } #ifdef NONMATCHING -- cgit v1.2.3