diff options
author | U-User-PC\User <golemgalvanize@github.com> | 2017-08-30 21:49:06 -0400 |
---|---|---|
committer | U-User-PC\User <golemgalvanize@github.com> | 2017-08-30 21:49:06 -0400 |
commit | d7fb151b926ad85b61e268c473e80a49bc3ea516 (patch) | |
tree | 3bdd1bb48851e335490d6a49219b5866ac5d9990 | |
parent | 1ca1651cdcdfc2ca2f8c9214c88fd23b5196f85e (diff) |
decompiled up to sub_80D17C4
-rw-r--r-- | asm/battle_anim_80CA710.s | 291 | ||||
-rwxr-xr-x | src/battle_anim_80CA710.c | 254 |
2 files changed, 253 insertions, 292 deletions
diff --git a/asm/battle_anim_80CA710.s b/asm/battle_anim_80CA710.s index 363234319..49e391911 100644 --- a/asm/battle_anim_80CA710.s +++ b/asm/battle_anim_80CA710.s @@ -6,297 +6,6 @@ .text - thumb_func_start sub_80D15E0 -sub_80D15E0: @ 80D15E0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080D1630 @ =gTasks - adds r4, r0, r1 - adds r0, r4, 0 - bl sub_807992C - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _080D162A - ldr r2, _080D1634 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r3, [r0, 0x26] - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080D162A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1630: .4byte gTasks -_080D1634: .4byte gSprites - thumb_func_end sub_80D15E0 - - thumb_func_start sub_80D1638 -sub_80D1638: @ 80D1638 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080D166C @ =gTasks - adds r4, r1, r0 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r0, 0x3 - strh r0, [r4, 0x20] - ldr r0, _080D1670 @ =gBattleAnimEnemyMonIndex - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080D1678 - ldr r0, _080D1674 @ =0x0000ffff - strh r0, [r4, 0x22] - movs r0, 0x8 - b _080D167E - .align 2, 0 -_080D166C: .4byte gTasks -_080D1670: .4byte gBattleAnimEnemyMonIndex -_080D1674: .4byte 0x0000ffff -_080D1678: - movs r0, 0x1 - strh r0, [r4, 0x22] - ldr r0, _080D1698 @ =0x0000fff8 -_080D167E: - strh r0, [r4, 0x24] - movs r0, 0x1 - bl obj_id_for_side_relative_to_move - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080D169C @ =sub_80D16A0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D1698: .4byte 0x0000fff8 -_080D169C: .4byte sub_80D16A0 - thumb_func_end sub_80D1638 - - thumb_func_start sub_80D16A0 -sub_80D16A0: @ 80D16A0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080D16C4 @ =gTasks - adds r3, r0, r1 - movs r0, 0x8 - ldrsh r4, [r3, r0] - cmp r4, 0x1 - beq _080D16F4 - cmp r4, 0x1 - bgt _080D16C8 - cmp r4, 0 - beq _080D16D2 - b _080D17BA - .align 2, 0 -_080D16C4: .4byte gTasks -_080D16C8: - cmp r4, 0x2 - beq _080D1770 - cmp r4, 0x3 - beq _080D178A - b _080D17BA -_080D16D2: - ldr r2, _080D16F0 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x24] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - strh r4, [r3, 0xA] - strh r4, [r3, 0xC] - strh r4, [r3, 0xE] - b _080D1782 - .align 2, 0 -_080D16F0: .4byte gSprites -_080D16F4: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D17BA - movs r0, 0 - strh r0, [r3, 0xA] - ldrh r0, [r3, 0xC] - adds r0, 0x1 - strh r0, [r3, 0xC] - ands r0, r4 - lsls r0, 16 - cmp r0, 0 - beq _080D172C - ldr r2, _080D1728 @ =gSprites - movs r4, 0x26 - ldrsh r1, [r3, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - adds r1, 0x6 - b _080D173E - .align 2, 0 -_080D1728: .4byte gSprites -_080D172C: - ldr r2, _080D176C @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - subs r1, 0x6 -_080D173E: - strh r1, [r0, 0x24] - ldrh r0, [r3, 0xE] - adds r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080D17BA - ldrh r1, [r3, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D1782 - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x24] - subs r0, 0x6 - strh r0, [r1, 0x24] - b _080D1782 - .align 2, 0 -_080D176C: .4byte gSprites -_080D1770: - ldrh r0, [r3, 0x20] - subs r0, 0x1 - strh r0, [r3, 0x20] - lsls r0, 16 - cmp r0, 0 - beq _080D1782 - movs r0, 0 - strh r0, [r3, 0x8] - b _080D17BA -_080D1782: - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - b _080D17BA -_080D178A: - ldr r2, _080D17C0 @ =gSprites - movs r4, 0x26 - ldrsh r1, [r3, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x22] - ldrh r4, [r0, 0x24] - adds r1, r4 - strh r1, [r0, 0x24] - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x24 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080D17BA - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080D17BA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D17C0: .4byte gSprites - thumb_func_end sub_80D16A0 - - thumb_func_start sub_80D17C4 -sub_80D17C4: @ 80D17C4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080D1800 @ =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r0, 0x1 - strh r0, [r4, 0x10] - movs r0, 0xE - strh r0, [r4, 0x22] - movs r0, 0x2 - strh r0, [r4, 0x24] - movs r0, 0 - bl obj_id_for_side_relative_to_move - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080D1804 @ =sub_80D1808 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D1800: .4byte gTasks -_080D1804: .4byte sub_80D1808 - thumb_func_end sub_80D17C4 - thumb_func_start sub_80D1808 sub_80D1808: @ 80D1808 push {r4-r6,lr} diff --git a/src/battle_anim_80CA710.c b/src/battle_anim_80CA710.c index c1818fb39..b3d3ba410 100755 --- a/src/battle_anim_80CA710.c +++ b/src/battle_anim_80CA710.c @@ -222,7 +222,8 @@ void sub_80D0A8C(u8 taskId); void sub_80D0B3C(u8 taskId); void sub_80D0D68(u8 taskId); void sub_80D15E0(u8 taskId); - +void sub_80D16A0(u8 taskId); +void sub_80D1808(u8 taskId); void sub_80CC358(struct Task* task, u8 taskId); void sub_80D0614(struct Task* task, u8 taskId); @@ -5661,4 +5662,255 @@ void sub_80D15A4(u8 taskId) task->data[0] = spriteId; sub_80798F4(task, spriteId, &gUnknown_083D79BC); task->func = sub_80D15E0; +} + +void sub_80D15E0(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (sub_807992C(task) == 0) + { + gSprites[task->data[0]].pos2.y = 0; + gSprites[task->data[0]].invisible = 1; + DestroyAnimVisualTask(taskId); + } +} + +void sub_80D1638(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[12] = 3; + if (GetBankSide(gBattleAnimEnemyMonIndex) == 0) + { + task->data[13] = 0xFFFF; + task->data[14] = 8; + } + else + { + task->data[13] = 1; + task->data[14] = -8; + } + task->data[15] = obj_id_for_side_relative_to_move(1); + task->func = sub_80D16A0; +} + +#ifdef NONMATCHING +void sub_80D16A0(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + gSprites[task->data[15]].pos2.x += task->data[14]; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[0]++; + break; + case 1: + if (++task->data[1] > 1) + { + task->data[1] = 0; + if (1 & ++task->data[2]) + gSprites[task->data[15]].pos2.x += 6; + else + gSprites[task->data[15]].pos2.x -= 6; + if (++task->data[3] > 4) + { + if (task->data[2] & 1) + gSprites[task->data[15]].pos2.x -= 6; + task->data[0]++; + } + } + break; + case 2: + if (--task->data[12] != 0) + task->data[0] = 0; + else + task->data[0]++; + break; + case 3: + gSprites[task->data[15]].pos2.x += task->data[13]; + if (gSprites[task->data[15]].pos2.x == 0) + DestroyAnimVisualTask(taskId); + break; + } +} +#else +__attribute__((naked)) +void sub_80D16A0(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + ldr r1, _080D16C4 @ =gTasks\n\ + adds r3, r0, r1\n\ + movs r0, 0x8\n\ + ldrsh r4, [r3, r0]\n\ + cmp r4, 0x1\n\ + beq _080D16F4\n\ + cmp r4, 0x1\n\ + bgt _080D16C8\n\ + cmp r4, 0\n\ + beq _080D16D2\n\ + b _080D17BA\n\ + .align 2, 0\n\ +_080D16C4: .4byte gTasks\n\ +_080D16C8:\n\ + cmp r4, 0x2\n\ + beq _080D1770\n\ + cmp r4, 0x3\n\ + beq _080D178A\n\ + b _080D17BA\n\ +_080D16D2:\n\ + ldr r2, _080D16F0 @ =gSprites\n\ + movs r0, 0x26\n\ + ldrsh r1, [r3, r0]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrh r1, [r3, 0x24]\n\ + ldrh r2, [r0, 0x24]\n\ + adds r1, r2\n\ + strh r1, [r0, 0x24]\n\ + strh r4, [r3, 0xA]\n\ + strh r4, [r3, 0xC]\n\ + strh r4, [r3, 0xE]\n\ + b _080D1782\n\ + .align 2, 0\n\ +_080D16F0: .4byte gSprites\n\ +_080D16F4:\n\ + ldrh r0, [r3, 0xA]\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0xA]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x1\n\ + ble _080D17BA\n\ + movs r0, 0\n\ + strh r0, [r3, 0xA]\n\ + ldrh r0, [r3, 0xC]\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0xC]\n\ + ands r0, r4\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + beq _080D172C\n\ + ldr r2, _080D1728 @ =gSprites\n\ + movs r4, 0x26\n\ + ldrsh r1, [r3, r4]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrh r1, [r0, 0x24]\n\ + adds r1, 0x6\n\ + b _080D173E\n\ + .align 2, 0\n\ +_080D1728: .4byte gSprites\n\ +_080D172C:\n\ + ldr r2, _080D176C @ =gSprites\n\ + movs r0, 0x26\n\ + ldrsh r1, [r3, r0]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrh r1, [r0, 0x24]\n\ + subs r1, 0x6\n\ +_080D173E:\n\ + strh r1, [r0, 0x24]\n\ + ldrh r0, [r3, 0xE]\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0xE]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x4\n\ + ble _080D17BA\n\ + ldrh r1, [r3, 0xC]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080D1782\n\ + movs r1, 0x26\n\ + ldrsh r0, [r3, r1]\n\ + lsls r1, r0, 4\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r2\n\ + ldrh r0, [r1, 0x24]\n\ + subs r0, 0x6\n\ + strh r0, [r1, 0x24]\n\ + b _080D1782\n\ + .align 2, 0\n\ +_080D176C: .4byte gSprites\n\ +_080D1770:\n\ + ldrh r0, [r3, 0x20]\n\ + subs r0, 0x1\n\ + strh r0, [r3, 0x20]\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + beq _080D1782\n\ + movs r0, 0\n\ + strh r0, [r3, 0x8]\n\ + b _080D17BA\n\ +_080D1782:\n\ + ldrh r0, [r3, 0x8]\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0x8]\n\ + b _080D17BA\n\ +_080D178A:\n\ + ldr r2, _080D17C0 @ =gSprites\n\ + movs r4, 0x26\n\ + ldrsh r1, [r3, r4]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + ldrh r1, [r3, 0x22]\n\ + ldrh r4, [r0, 0x24]\n\ + adds r1, r4\n\ + strh r1, [r0, 0x24]\n\ + movs r0, 0x26\n\ + ldrsh r1, [r3, r0]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + movs r1, 0x24\n\ + ldrsh r0, [r0, r1]\n\ + cmp r0, 0\n\ + bne _080D17BA\n\ + adds r0, r5, 0\n\ + bl DestroyAnimVisualTask\n\ +_080D17BA:\n\ + pop {r4,r5}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080D17C0: .4byte gSprites\n\ + .syntax divided\n"); +} +#endif + +void sub_80D17C4(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 1; + task->data[13] = 14; + task->data[14] = 2; + task->data[15] = obj_id_for_side_relative_to_move(0); + task->func = sub_80D1808; }
\ No newline at end of file |