diff options
author | Evan <eroelke@gmail.com> | 2019-12-02 17:58:49 -0700 |
---|---|---|
committer | Evan <eroelke@gmail.com> | 2019-12-04 14:54:52 -0700 |
commit | 5c40e5ea212c947b1853a8c8dc23dcb8d882bf90 (patch) | |
tree | 8745ecba23ab9b423d349508a10d05b34551c645 | |
parent | 0cc5446a2a28b6050c8c496416de4b8acdc87929 (diff) |
battle_anim_status_effects
-rw-r--r-- | asm/battle_anim_status_effects.s | 977 | ||||
-rw-r--r-- | data/battle_anim_scripts.s | 86 | ||||
-rw-r--r-- | data/battle_anim_status_effects.s | 110 | ||||
-rw-r--r-- | ld_script.txt | 6 | ||||
-rw-r--r-- | src/battle_anim_effects_3.c | 1 | ||||
-rw-r--r-- | src/battle_anim_status_effects.c | 538 |
6 files changed, 584 insertions, 1134 deletions
diff --git a/asm/battle_anim_status_effects.s b/asm/battle_anim_status_effects.s deleted file mode 100644 index c8b1ddbf5..000000000 --- a/asm/battle_anim_status_effects.s +++ /dev/null @@ -1,977 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8078178 -sub_8078178: @ 8078178 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _0807821C @ =gBattlerSpriteIds - adds r0, r4, r0 - ldrb r6, [r0] - ldr r0, _08078220 @ =sub_80782BC - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _08078224 @ =gUnknown_83AD048 - bl LoadCompressedSpriteSheetUsingHeap - ldr r0, _08078228 @ =gUnknown_83AD950 - bl LoadCompressedSpritePaletteUsingHeap - ldr r1, _0807822C @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r1, r0, r1 - strh r4, [r1, 0x8] - cmp r5, 0 - beq _08078238 - movs r0, 0x1F - strh r0, [r1, 0xA] - movs r5, 0 - lsls r0, r6, 4 - ldr r7, _08078230 @ =gSprites - adds r0, r6 - lsls r0, 2 - adds r6, r0, r7 -_080781CC: - movs r0, 0x20 - ldrsh r1, [r6, r0] - ldrh r2, [r6, 0x22] - adds r2, 0x20 - lsls r2, 16 - asrs r2, 16 - ldr r0, _08078234 @ =gUnknown_83BF574 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r3, r0, r7 - lsls r0, r5, 1 - adds r0, r5 - lsls r1, r0, 4 - adds r0, r1 - strh r0, [r3, 0x2E] - movs r0, 0xFF - lsls r0, 8 - strh r0, [r3, 0x30] - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - cmp r5, 0x4 - bls _08078210 - movs r0, 0x15 - strh r0, [r3, 0x3A] -_08078210: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x9 - bls _080781CC - b _08078298 - .align 2, 0 -_0807821C: .4byte gBattlerSpriteIds -_08078220: .4byte sub_80782BC -_08078224: .4byte gUnknown_83AD048 -_08078228: .4byte gUnknown_83AD950 -_0807822C: .4byte gTasks -_08078230: .4byte gSprites -_08078234: .4byte gUnknown_83BF574 -_08078238: - movs r0, 0xF8 - lsls r0, 7 - strh r0, [r1, 0xA] - movs r5, 0 - lsls r0, r6, 4 - ldr r7, _080782B4 @ =gSprites - adds r0, r6 - lsls r0, 2 - adds r6, r0, r7 -_0807824A: - movs r2, 0x20 - ldrsh r1, [r6, r2] - ldrh r2, [r6, 0x22] - subs r2, 0x20 - lsls r2, 16 - asrs r2, 16 - ldr r0, _080782B8 @ =gUnknown_83BF574 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r3, r0, r7 - lsls r0, r5, 1 - adds r0, r5 - lsls r1, r0, 4 - adds r0, r1 - strh r0, [r3, 0x2E] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r3, 0x30] - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - cmp r5, 0x4 - bls _0807828E - movs r0, 0x15 - strh r0, [r3, 0x3A] -_0807828E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x9 - bls _0807824A -_08078298: - ldr r0, _080782B4 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] - mov r0, r8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080782B4: .4byte gSprites -_080782B8: .4byte gUnknown_83BF574 - thumb_func_end sub_8078178 - - thumb_func_start sub_80782BC -sub_80782BC: @ 80782BC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08078314 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r1, [r4, 0xC] - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0x2 - bne _08078342 - movs r0, 0 - strh r0, [r4, 0xC] - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 20 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r0, 16 - ldrb r2, [r4, 0x10] - ldrh r3, [r4, 0xA] - movs r1, 0x10 - bl BlendPalette - ldrh r2, [r4, 0x12] - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08078318 - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _08078346 - movs r0, 0x1 - eors r0, r2 - strh r0, [r4, 0x12] - b _08078346 - .align 2, 0 -_08078314: .4byte gTasks -_08078318: - ldrh r1, [r4, 0x10] - subs r0, r1, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - cmp r0, 0 - bge _08078346 - strh r1, [r4, 0x10] - movs r0, 0x1 - eors r0, r2 - strh r0, [r4, 0x12] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _08078346 - adds r0, r5, 0 - bl DestroyTask - b _08078346 -_08078342: - adds r0, r1, 0x1 - strh r0, [r4, 0xC] -_08078346: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80782BC - - thumb_func_start sub_807834C -sub_807834C: @ 807834C - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x3A] - movs r3, 0x3A - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _08078378 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r3] - ldr r1, _08078374 @ =sub_8078380 - str r1, [r2, 0x1C] - adds r0, r2, 0 - bl _call_via_r1 - b _0807837C - .align 2, 0 -_08078374: .4byte sub_8078380 -_08078378: - subs r0, r1, 0x1 - strh r0, [r2, 0x3A] -_0807837C: - pop {r0} - bx r0 - thumb_func_end sub_807834C - - thumb_func_start sub_8078380 -sub_8078380: @ 8078380 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x20 - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Sin - strh r0, [r4, 0x26] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x7F - bgt _080783AC - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1D - b _080783B2 -_080783AC: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1F -_080783B2: - strb r0, [r1] - ldrh r0, [r4, 0x2E] - adds r0, 0x8 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x38] - adds r0, r1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x34 - bne _080783F4 - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080783EE - adds r0, r4, 0 - bl DestroySpriteAndFreeResources - b _080783F4 -_080783EE: - adds r0, r4, 0 - bl DestroySprite -_080783F4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8078380 - - thumb_func_start sub_80783FC -sub_80783FC: @ 80783FC - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r4, _080784AC @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 8 - ldr r1, _080784B0 @ =0xffe00000 - adds r0, r1 - lsrs r5, r0, 16 - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 8 - ldr r1, _080784B4 @ =0xffdc0000 - adds r0, r1 - lsrs r4, r0, 16 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _0807843A - lsls r0, r5, 16 - ldr r1, _080784B8 @ =0xfffa0000 - adds r0, r1 - lsrs r5, r0, 16 -_0807843A: - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - ldr r0, _080784BC @ =gUnknown_83BF55C - lsls r1, r5, 16 - asrs r1, 16 - lsls r2, r4, 16 - asrs r2, 16 - movs r3, 0x4 - bl CreateSprite - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080784C0 @ =0x0000271a - bl GetSpriteTileStartByTag - lsls r0, 16 - ldr r1, _080784C4 @ =0xffff0000 - cmp r0, r1 - bne _08078484 - ldr r1, _080784C8 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_08078484: - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _080784C8 @ =gSprites - adds r0, r1 - ldr r1, _080784CC @ =gUnknown_83BF554 - bl SetSubspriteTables - ldr r1, _080784D0 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - strh r4, [r0, 0x26] - ldr r1, _080784D4 @ =sub_80784D8 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080784AC: .4byte gBattleAnimTarget -_080784B0: .4byte 0xffe00000 -_080784B4: .4byte 0xffdc0000 -_080784B8: .4byte 0xfffa0000 -_080784BC: .4byte gUnknown_83BF55C -_080784C0: .4byte 0x0000271a -_080784C4: .4byte 0xffff0000 -_080784C8: .4byte gSprites -_080784CC: .4byte gUnknown_83BF554 -_080784D0: .4byte gTasks -_080784D4: .4byte sub_80784D8 - thumb_func_end sub_80783FC - - thumb_func_start sub_80784D8 -sub_80784D8: @ 80784D8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08078504 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrh r0, [r1, 0xA] - adds r0, 0x1 - adds r2, r0, 0 - strh r0, [r1, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _0807850C - ldr r0, _08078508 @ =sub_8078528 - str r0, [r1] - movs r0, 0 - strh r0, [r1, 0xA] - b _08078522 - .align 2, 0 -_08078504: .4byte gTasks -_08078508: .4byte sub_8078528 -_0807850C: - lsls r0, r2, 24 - lsrs r0, 24 - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg -_08078522: - pop {r0} - bx r0 - thumb_func_end sub_80784D8 - - thumb_func_start sub_8078528 -sub_8078528: @ 8078528 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080785C0 @ =0x0000271a - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080785C4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0xA] - adds r1, r0, 0x1 - strh r1, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - ble _080785B8 - ldrh r0, [r5, 0xC] - adds r0, 0x1 - movs r6, 0 - strh r0, [r5, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080785B8 - ldr r3, _080785C8 @ =gPlttBufferFaded - lsls r2, 4 - mov r12, r2 - ldr r1, _080785CC @ =0x0000010d - add r1, r12 - lsls r1, 1 - adds r1, r3 - ldrh r4, [r1] - movs r2, 0x87 - lsls r2, 1 - add r2, r12 - lsls r2, 1 - adds r2, r3 - ldrh r0, [r2] - strh r0, [r1] - ldr r0, _080785D0 @ =0x0000010f - add r0, r12 - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - strh r1, [r2] - strh r4, [r0] - strh r6, [r5, 0xC] - ldrh r0, [r5, 0xE] - adds r0, 0x1 - strh r0, [r5, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080785B8 - strh r6, [r5, 0xE] - strh r6, [r5, 0xA] - ldrh r0, [r5, 0x10] - adds r0, 0x1 - strh r0, [r5, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080785B8 - movs r0, 0x9 - strh r0, [r5, 0xA] - ldr r0, _080785D4 @ =sub_80785D8 - str r0, [r5] -_080785B8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080785C0: .4byte 0x0000271a -_080785C4: .4byte gTasks -_080785C8: .4byte gPlttBufferFaded -_080785CC: .4byte 0x0000010d -_080785D0: .4byte 0x0000010f -_080785D4: .4byte sub_80785D8 - thumb_func_end sub_8078528 - - thumb_func_start sub_80785D8 -sub_80785D8: @ 80785D8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08078608 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r2, r1, r2 - ldrh r0, [r2, 0xA] - subs r0, 0x1 - adds r3, r0, 0 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _08078610 - ldr r0, _0807860C @ =sub_807862C - str r0, [r2] - movs r0, 0 - strh r0, [r2, 0xA] - b _08078626 - .align 2, 0 -_08078608: .4byte gTasks -_0807860C: .4byte sub_807862C -_08078610: - lsls r0, r3, 24 - lsrs r0, 24 - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg -_08078626: - pop {r0} - bx r0 - thumb_func_end sub_80785D8 - - thumb_func_start sub_807862C -sub_807862C: @ 807862C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - ldr r1, _0807866C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r1 - ldrh r0, [r1, 0xA] - adds r0, 0x1 - strh r0, [r1, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x25 - bne _08078674 - ldrh r0, [r1, 0x26] - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, _08078670 @ =gSprites - adds r4, r0 - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite - b _0807868E - .align 2, 0 -_0807866C: .4byte gTasks -_08078670: .4byte gSprites -_08078674: - cmp r0, 0x27 - bne _0807868E - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimVisualTask -_0807868E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_807862C - - thumb_func_start sub_8078694 -sub_8078694: @ 8078694 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r3, 0 - ldr r0, _080786B8 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrh r0, [r0] - subs r0, 0xF - cmp r0, 0x2B - bls _080786AC - b _08078830 -_080786AC: - lsls r0, 2 - ldr r1, _080786BC @ =_080786C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080786B8: .4byte gBattleSpritesDataPtr -_080786BC: .4byte _080786C0 - .align 2, 0 -_080786C0: - .4byte _08078770 - .4byte _08078776 - .4byte _0807877C - .4byte _08078782 - .4byte _08078788 - .4byte _0807878E - .4byte _08078794 - .4byte _0807879A - .4byte _080787A0 - .4byte _080787A6 - .4byte _080787AC - .4byte _080787B2 - .4byte _080787B8 - .4byte _080787BE - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _080787C4 - .4byte _080787C8 - .4byte _080787CC - .4byte _080787D0 - .4byte _080787D4 - .4byte _080787D8 - .4byte _080787DC - .4byte _080787E0 - .4byte _080787E8 - .4byte _080787F0 - .4byte _080787F8 - .4byte _08078800 - .4byte _08078808 - .4byte _08078810 - .4byte _08078830 - .4byte _08078830 - .4byte _08078818 - .4byte _0807881C - .4byte _08078820 - .4byte _08078828 -_08078770: - movs r5, 0 - movs r2, 0 - b _08078838 -_08078776: - movs r5, 0 - movs r2, 0x1 - b _08078838 -_0807877C: - movs r5, 0 - movs r2, 0x3 - b _08078838 -_08078782: - movs r5, 0 - movs r2, 0x5 - b _08078838 -_08078788: - movs r5, 0 - movs r2, 0x6 - b _08078838 -_0807878E: - movs r5, 0 - movs r2, 0x2 - b _08078838 -_08078794: - movs r5, 0 - movs r2, 0x4 - b _08078838 -_0807879A: - movs r5, 0x1 - movs r2, 0 - b _08078838 -_080787A0: - movs r5, 0x1 - movs r2, 0x1 - b _08078838 -_080787A6: - movs r5, 0x1 - movs r2, 0x3 - b _08078838 -_080787AC: - movs r5, 0x1 - movs r2, 0x5 - b _08078838 -_080787B2: - movs r5, 0x1 - movs r2, 0x6 - b _08078838 -_080787B8: - movs r5, 0x1 - movs r2, 0x2 - b _08078838 -_080787BE: - movs r5, 0x1 - movs r2, 0x4 - b _08078838 -_080787C4: - movs r5, 0 - b _080787E2 -_080787C8: - movs r5, 0 - b _080787EA -_080787CC: - movs r5, 0 - b _080787F2 -_080787D0: - movs r5, 0 - b _080787FA -_080787D4: - movs r5, 0 - b _08078802 -_080787D8: - movs r5, 0 - b _0807880A -_080787DC: - movs r5, 0 - b _08078812 -_080787E0: - movs r5, 0x1 -_080787E2: - movs r2, 0 - movs r3, 0x1 - b _08078838 -_080787E8: - movs r5, 0x1 -_080787EA: - movs r2, 0x1 - movs r3, 0x1 - b _08078838 -_080787F0: - movs r5, 0x1 -_080787F2: - movs r2, 0x3 - movs r3, 0x1 - b _08078838 -_080787F8: - movs r5, 0x1 -_080787FA: - movs r2, 0x5 - movs r3, 0x1 - b _08078838 -_08078800: - movs r5, 0x1 -_08078802: - movs r2, 0x6 - movs r3, 0x1 - b _08078838 -_08078808: - movs r5, 0x1 -_0807880A: - movs r2, 0x2 - movs r3, 0x1 - b _08078838 -_08078810: - movs r5, 0x1 -_08078812: - movs r2, 0x4 - movs r3, 0x1 - b _08078838 -_08078818: - movs r5, 0 - b _08078822 -_0807881C: - movs r5, 0 - b _0807882A -_08078820: - movs r5, 0x1 -_08078822: - movs r2, 0xFF - movs r3, 0 - b _08078838 -_08078828: - movs r5, 0x1 -_0807882A: - movs r2, 0xFF - movs r3, 0x1 - b _08078838 -_08078830: - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _0807885A -_08078838: - ldr r0, _08078860 @ =gBattleAnimArgs - movs r1, 0 - strh r5, [r0] - strh r2, [r0, 0x2] - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - strh r3, [r0, 0x8] - ldr r1, _08078864 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08078868 @ =sub_80BB088 - str r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 -_0807885A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08078860: .4byte gBattleAnimArgs -_08078864: .4byte gTasks -_08078868: .4byte sub_80BB088 - thumb_func_end sub_8078694 - - thumb_func_start LaunchStatusAnimation -LaunchStatusAnimation: @ 807886C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _080788A8 @ =gBattleAnimAttacker - strb r4, [r0] - ldr r0, _080788AC @ =gBattleAnimTarget - strb r4, [r0] - ldr r0, _080788B0 @ =gBattleAnims_StatusConditions - movs r2, 0 - bl LaunchBattleAnimation - ldr r0, _080788B4 @ =task0A_80788BC - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080788B8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080788A8: .4byte gBattleAnimAttacker -_080788AC: .4byte gBattleAnimTarget -_080788B0: .4byte gBattleAnims_StatusConditions -_080788B4: .4byte task0A_80788BC -_080788B8: .4byte gTasks - thumb_func_end LaunchStatusAnimation - - thumb_func_start task0A_80788BC -task0A_80788BC: @ 80788BC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08078904 @ =gAnimScriptCallback - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _08078908 @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _080788FE - ldr r0, _0807890C @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r1, _08078910 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - ldrsh r0, [r0, r1] - ldr r2, [r2, 0x4] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_080788FE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08078904: .4byte gAnimScriptCallback -_08078908: .4byte gAnimScriptActive -_0807890C: .4byte gBattleSpritesDataPtr -_08078910: .4byte gTasks - thumb_func_end task0A_80788BC - - .align 2, 0 @ Don't pad with nop. diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index c3c6399dc..5a95235c9 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1786,7 +1786,7 @@ gUnknown_81C910A:: @ 81C910A createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 waitforvisualfinish delay 5 - createvisualtask sub_80E0488, 5, + createvisualtask AnimTask_StrongFrustrationGrowAndShrink, 5, delay 7 playsewithpan SE_W004, 63 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 8, 1, 1 @@ -1856,22 +1856,22 @@ Move_PAIN_SPLIT:: @ 81C92D9 createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, -8, -42, 1 delay 10 playsewithpan SE_W207B, 0 - createvisualtask sub_80E0B00, 2, 0, 0 - createvisualtask sub_80E0B00, 2, 1, 0 + createvisualtask AnimTask_PainSplitMovement, 2, 0, 0 + createvisualtask AnimTask_PainSplitMovement, 2, 1, 0 waitforvisualfinish createsprite gPainSplitProjectileSpriteTemplate, ANIM_ATTACKER, 2, -24, -42, 0 createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, -24, -42, 1 delay 10 playsewithpan SE_W207B, 0 - createvisualtask sub_80E0B00, 2, 0, 1 - createvisualtask sub_80E0B00, 2, 1, 1 + createvisualtask AnimTask_PainSplitMovement, 2, 0, 1 + createvisualtask AnimTask_PainSplitMovement, 2, 1, 1 waitforvisualfinish createsprite gPainSplitProjectileSpriteTemplate, ANIM_ATTACKER, 2, 8, -42, 0 createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, 8, -42, 1 delay 10 playsewithpan SE_W207B, 0 - createvisualtask sub_80E0B00, 2, 0, 2 - createvisualtask sub_80E0B00, 2, 1, 2 + createvisualtask AnimTask_PainSplitMovement, 2, 0, 2 + createvisualtask AnimTask_PainSplitMovement, 2, 1, 2 end Move_VICE_GRIP:: @ 81C9381 @@ -2307,7 +2307,7 @@ Move_SMOKESCREEN:: @ 81C9EB0 playsewithpan SE_W104, 192 createsprite gBlackBallSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 waitforvisualfinish - createvisualtask sub_80DE34C, 2, + createvisualtask AnimTask_SmokescreenImpact, 2, delay 2 playsewithpan SE_W028, 63 createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, -12, 104, 0, 75 @@ -2592,7 +2592,7 @@ Move_THRASH:: @ 81CA521 Move_SING:: @ 81CA5A0 loadspritegfx 10072 monbg 3 - createvisualtask sub_80A65E8, 2, + createvisualtask AnimTask_MusicNotesRainbowBlend, 2, waitforvisualfinish panse_1B SE_W047, 192, 63, 2, 0 createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 7, 0, 12 @@ -2939,14 +2939,14 @@ Move_KINESIS:: @ 81CAC19 Move_GLARE:: @ 81CAC6A loadspritegfx 10248 loadspritegfx 10218 - createvisualtask sub_80E21CC, 5, 0 + createvisualtask AnimTask_GlareEyeDots, 5, 0 playsewithpan SE_W060B, 192 waitforvisualfinish createvisualtask sub_80BA7F8, 5, 1, 0, 0, 16, 0 waitforvisualfinish createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8 createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8 - createvisualtask sub_80A9F10, 5, + createvisualtask AnimTask_ScaryFace, 5, playsewithpan SE_W043, 192 delay 2 createvisualtask sub_80ADAD8, 3, 20, 1, 0 @@ -2956,7 +2956,7 @@ Move_GLARE:: @ 81CAC6A Move_BARRAGE:: @ 81CACD3 loadspritegfx 10254 - createvisualtask sub_80E2518, 3, + createvisualtask AnimTask_BarrageBall, 3, playsewithpan SE_W207, 192 delay 24 createsprite gUnknown_83E7B88, ANIM_ATTACKER, 2, 8, 1, 40, 1 @@ -3052,7 +3052,7 @@ Move_SPLASH:: @ 81CAEC0 Move_ACID_ARMOR:: @ 81CAED5 monbg 0 setalpha 15, 0 - createvisualtask sub_80E12F8, 2, 0 + createvisualtask AnimTask_AcidArmor, 2, 0 playsewithpan SE_W151, 192 waitforvisualfinish blendoff @@ -3153,7 +3153,7 @@ Move_FLAIL:: @ 81CB099 loadspritegfx 10135 monbg 1 setalpha 12, 8 - createvisualtask sub_80E0850, 2, 0 + createvisualtask AnimTask_FlailMovement, 2, 0 loopsewithpan SE_W029, 192, 8, 2 waitforvisualfinish createsprite gUnknown_83E7C50, ANIM_TARGET, 3, 1, 3 @@ -3278,7 +3278,7 @@ gUnknown_81CB267:: @ 81CB267 Move_CHARM:: @ 81CB2BB loadspritegfx 10210 - createvisualtask sub_80E0558, 5, 0, 2, 0 + createvisualtask AnimTask_RockMonBackAndForth, 5, 0, 2, 0 createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0, 20 playsewithpan SE_W204, 192 delay 15 @@ -3593,8 +3593,8 @@ Move_MEMENTO:: @ 81CB892 Move_FACADE:: @ 81CB8D6 loadspritegfx 10243 - createvisualtask sub_80E1D5C, 2, 0, 3 - createvisualtask sub_80E1FC4, 2, 0, 72 + createvisualtask AnimTask_SquishAndSweatDroplets, 2, 0, 3 + createvisualtask AnimTask_FacadeColorBlend, 2, 0, 72 loopsewithpan SE_W207, 192, 24, 3 end @@ -3604,7 +3604,7 @@ Move_SMELLING_SALT:: @ 81CB8F6 createsprite gSmellingSaltsHandSpriteTemplate, ANIM_TARGET, 2, 1, 0, 2 createsprite gSmellingSaltsHandSpriteTemplate, ANIM_TARGET, 2, 1, 1, 2 delay 32 - createvisualtask sub_80E28DC, 3, 1, 2 + createvisualtask AnimTask_SmellingSaltsSquish, 3, 1, 2 loopsewithpan SE_W003, 63, 12, 2 waitforvisualfinish delay 4 @@ -3680,7 +3680,7 @@ Move_TAUNT:: @ 81CBA0B Move_HELPING_HAND:: @ 81CBA5F loadspritegfx 10247 - createvisualtask sub_80E2CE4, 5, + createvisualtask AnimTask_HelpingHandAttackerMovement, 5, createsprite gHelpingHandClapSpriteTemplate, ANIM_ATTACKER, 40, 0 createsprite gHelpingHandClapSpriteTemplate, ANIM_ATTACKER, 40, 1 delay 19 @@ -3834,7 +3834,7 @@ gUnknown_81CBD16:: @ 81CBD16 Move_YAWN:: @ 81CBE37 loadspritegfx 10242 - createvisualtask sub_80E1704, 2, 0 + createvisualtask AnimTask_DeepInhale, 2, 0 playsewithpan SE_W281, 192 waitforvisualfinish createsprite gYawnCloudSpriteTemplate, ANIM_TARGET, 5, 2 @@ -3844,14 +3844,14 @@ Move_YAWN:: @ 81CBE37 delay 4 createsprite gYawnCloudSpriteTemplate, ANIM_TARGET, 5, 0 waitforvisualfinish - createvisualtask sub_80E1704, 2, 1 + createvisualtask AnimTask_DeepInhale, 2, 1 playsewithpan SE_W281, 63 end Move_ENDEAVOR:: @ 81CBE7A loadspritegfx 10243 loadspritegfx 10135 - createvisualtask sub_80E1D5C, 2, 0, 2 + createvisualtask AnimTask_SquishAndSweatDroplets, 2, 0, 2 loopsewithpan SE_W039, 192, 24, 2 createvisualtask AnimTask_BlendMonInAndOut, 5, 0, 703, 12, 1, 2 delay 6 @@ -4059,7 +4059,7 @@ Move_FEATHER_DANCE:: @ 81CC2A1 Move_TEETER_DANCE:: @ 81CC371 loadspritegfx 10072 loadspritegfx 10073 - createvisualtask sub_80E4160, 5, + createvisualtask AnimTask_TeeterDanceMovement, 5, createsprite gFastFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, -2 playsewithpan SE_W298, 192 delay 24 @@ -4168,7 +4168,7 @@ Move_NEEDLE_ARM:: @ 81CC513 Move_SLACK_OFF:: @ 81CC6C3 loadspritegfx 10031 - createvisualtask sub_80E4540, 2, 0 + createvisualtask AnimTask_SlackOffSquish, 2, 0 playsewithpan SE_W281, 192 waitforvisualfinish call gUnknown_81D56C9 @@ -4242,7 +4242,7 @@ Move_FAKE_TEARS:: @ 81CC8AD loadspritegfx 10072 createvisualtask AnimTask_BlendParticle, 5, 10155, 0, 4, 4, 32108 waitforvisualfinish - createvisualtask sub_80E0558, 5, 0, 2, 1 + createvisualtask AnimTask_RockMonBackAndForth, 5, 0, 2, 1 loopsewithpan SE_W039, 192, 12, 4 delay 8 createsprite gUnknown_83E7998, ANIM_ATTACKER, 2, 0, 0 @@ -4267,7 +4267,7 @@ Move_AIR_CUTTER:: @ 81CC93D monbg 3 setalpha 12, 8 delay 0 - createvisualtask sub_80A76F0, 2, 32, -24, 1536, 2, 128 + createvisualtask AnimTask_AirCutterProjectile, 2, 32, -24, 1536, 2, 128 waitforvisualfinish playsewithpan SE_W015, 63 createsprite gAirCutterSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0, 2 @@ -4282,7 +4282,7 @@ Move_AIR_CUTTER:: @ 81CC93D Move_ODOR_SLEUTH:: @ 81CC99F monbg 1 - createvisualtask sub_80E3664, 5, + createvisualtask AnimTask_OdorSleuthMovement, 5, delay 24 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 4 playsewithpan SE_W207, 192 @@ -4300,7 +4300,7 @@ Move_GRASS_WHISTLE:: @ 81CC9E9 loadspritegfx 10072 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, 13298 waitforvisualfinish - createvisualtask sub_80A65E8, 2, + createvisualtask AnimTask_MusicNotesRainbowBlend, 2, waitforvisualfinish panse_1B SE_W320, 192, 63, 2, 0 createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 7, 1, 0 @@ -4346,7 +4346,7 @@ Move_TICKLE:: @ 81CCADC delay 20 createvisualtask AnimTask_SwayMon, 3, 0, 6, 1280, 3, 0 delay 12 - createvisualtask sub_80E0558, 3, 1, 6, 2 + createvisualtask AnimTask_RockMonBackAndForth, 3, 1, 6, 2 loopsewithpan SE_W039, 63, 8, 8 waitforvisualfinish end @@ -4442,7 +4442,7 @@ Move_BLOCK:: @ 81CCCCD Move_HOWL:: @ 81CCCDC loadspritegfx 10053 - createvisualtask sub_80E1704, 2, 0 + createvisualtask AnimTask_DeepInhale, 2, 0 delay 12 call gUnknown_81CDB06 createvisualtask sub_80DD06C, 2, 0, 3 @@ -4463,7 +4463,7 @@ Move_BULK_UP:: @ 81CCCFE Move_COVET:: @ 81CCD1C loadspritegfx 10210 loadspritegfx 10224 - createvisualtask sub_80E0558, 5, 0, 2, 0 + createvisualtask AnimTask_RockMonBackAndForth, 5, 0, 2, 0 createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0, 20 playsewithpan SE_W204, 192 delay 15 @@ -4564,7 +4564,7 @@ Move_CALM_MIND:: @ 81CCE97 Move_LEAF_BLADE:: @ 81CCF17 loadspritegfx 10063 loadspritegfx 10285 - createvisualtask sub_80A39C0, 5, + createvisualtask AnimTask_LeafBlade, 5, delay 2 createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 playsewithpan SE_W015, 63 @@ -4649,7 +4649,7 @@ Move_HARDEN:: @ 81CD0AB Move_BELLY_DRUM:: @ 81CD0C0 loadspritegfx 10072 loadspritegfx 10193 - createvisualtask sub_80A65E8, 2, + createvisualtask AnimTask_MusicNotesRainbowBlend, 2, waitforvisualfinish call gUnknown_81CD18D createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 0 @@ -7887,7 +7887,7 @@ Move_SCARY_FACE:: @ 81D1BA0 waitforvisualfinish delay 10 playsewithpan SE_W043, 192 - createvisualtask sub_80A9F10, 5, + createvisualtask AnimTask_ScaryFace, 5, delay 13 createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8 createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8 @@ -8589,7 +8589,7 @@ Move_ROLE_PLAY:: @ 81D2BE5 waitforvisualfinish playsewithpan SE_W161, 192 waitplaysewithpan SE_W197, 192, 30 - createvisualtask sub_80E0FB8, 2, + createvisualtask AnimTask_RolePlaySilhouette, 2, waitforvisualfinish clearmonbg 2 createvisualtask sub_80BA7F8, 10, 4, 2, 16, 0, 32767 @@ -8922,7 +8922,7 @@ Move_POISON_FANG:: @ 81D33F4 Move_SUBSTITUTE:: @ 81D3433 playsewithpan SE_W213, 192 - createvisualtask sub_80E3294, 2, + createvisualtask AnimTask_MonToSubstitute, 2, end Move_FRENZY_PLANT:: @ 81D343F @@ -9064,7 +9064,7 @@ Move_RETURN:: @ 81D36FA loadspritegfx 10135 monbg 3 setalpha 12, 8 - createvisualtask sub_80E38D8, 2, + createvisualtask AnimTask_GetReturnPowerLevel, 2, delay 2 jumpargeq 7, 0, gUnknown_81D3730 jumpargeq 7, 1, gUnknown_81D3782 @@ -9757,7 +9757,7 @@ Move_DOOM_DESIRE:: @ 81D4A9F createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, 32767 waitforvisualfinish delay 10 - createvisualtask sub_80E017C, 5, + createvisualtask AnimTask_DoomDesireLightBeam, 5, delay 5 playsewithpan SE_W109, 192 delay 10 @@ -10044,7 +10044,7 @@ Move_WEATHER_BALL:: @ 81D515D playsewithpan SE_W197, 0 createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, 32767, 10, 0, 0 waitforvisualfinish - createvisualtask sub_80E44EC, 2, + createvisualtask AnimTask_GetWeather, 2, delay 1 jumpargeq 7, 0, gUnknown_81D51C8 jumpargeq 7, 1, gUnknown_81D5205 @@ -10549,7 +10549,7 @@ General_SubstituteFade:: @ 81D5BC7 end General_SubstituteAppear:: @ 81D5C04 - createvisualtask sub_80E3294, 2, + createvisualtask AnimTask_MonToSubstitute, 2, end General_PokeblockThrow:: @ 81D5C0C @@ -10786,12 +10786,12 @@ gUnknown_81D6082:: @ 81D6082 gUnknown_81D6089:: @ 81D6089 playsewithpan SE_W104, 192 - createvisualtask sub_80E392C, 2, + createvisualtask AnimTask_SnatchOpposingMonMove, 2, goto gUnknown_81D6082 gUnknown_81D6099:: @ 81D6099 playsewithpan SE_W104, 192 - createvisualtask sub_80E3FC0, 2, + createvisualtask AnimTask_SnatchPartnerMove, 2, goto gUnknown_81D6082 General_FutureSightHit:: @ 81D60A9 @@ -10820,7 +10820,7 @@ General_DoomDesireHit:: @ 81D6108 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, 32767 waitforvisualfinish delay 10 - createvisualtask sub_80E017C, 5, + createvisualtask AnimTask_DoomDesireLightBeam, 5, delay 9 playsewithpan SE_W109, 192 delay 9 diff --git a/data/battle_anim_status_effects.s b/data/battle_anim_status_effects.s deleted file mode 100644 index f2fff9a3f..000000000 --- a/data/battle_anim_status_effects.s +++ /dev/null @@ -1,110 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .align 2 - -gUnknown_83BF3E0:: @ 83BF3DC - obj_image_anim_frame 0, 3 - obj_image_anim_frame 4, 3 - obj_image_anim_frame 8, 3 - obj_image_anim_frame 12, 3 - obj_image_anim_jump 0 - -gSpriteAnimTable_83BF3F4:: @ 83BF3F4 - .4byte gUnknown_83BF3E0 - -gSpriteTemplate_83BF3F8:: @ 83BF3F8 - spr_template 10004, 10004, gOamData_AffineOff_ObjNormal_16x16, gSpriteAnimTable_83BF3F4, NULL, gDummySpriteAffineAnimTable, sub_8076F58 - -gSpriteTemplate_83BF410:: @ 83BF410 - spr_template 10004, 10004, gOamData_AffineOff_ObjNormal_16x16, gSpriteAnimTable_83BF3F4, NULL, gDummySpriteAffineAnimTable, sub_8076ED8 - -gUnknown_83BF428:: @ 83BF428 - obj_image_anim_frame 0x0000, 3 - obj_image_anim_jump 0x0000 - -gSpriteAnimTable_83BF430:: @ 83BF430 - .4byte gUnknown_83BF428 - -gSpriteTemplate_83BF434:: @ 83BF434 - spr_template 10283, 10283, gOamData_AffineOff_ObjNormal_32x32, gSpriteAnimTable_83BF430, NULL, gDummySpriteAffineAnimTable, sub_807729C - -gSpriteTemplate_83BF44C:: @ 83BF44C - spr_template 10283, 10283, gOamData_AffineOff_ObjNormal_32x32, gSpriteAnimTable_83BF430, NULL, gDummySpriteAffineAnimTable, sub_8077350 - -gUnknown_83BF464:: @ 83BF464 - obj_image_anim_frame 0x0000, 3 - obj_image_anim_frame 0x0010, 3 - obj_image_anim_frame 0x0020, 3 - obj_image_anim_frame 0x0030, 3 - obj_image_anim_frame 0x0040, 3 - obj_image_anim_end - -gSpriteAnimTable_83BF47C:: @ 83BF47C - .4byte gUnknown_83BF464 - -gSpriteTemplate_83BF480:: @ 83BF480 - spr_template 10071, 10071, gOamData_AffineOff_ObjNormal_32x32, gSpriteAnimTable_83BF47C, NULL, gDummySpriteAffineAnimTable, sub_8076FD0 - -gSpriteTemplate_83BF498:: @ 83BF498 - spr_template 10051, 10051, gOamData_AffineOff_ObjNormal_32x32, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8076F58 - -gUnknown_83BF4B0:: @ 83BF4B0 - obj_image_anim_frame 0x0000, 5 - obj_image_anim_jump 0x0000 - -gUnknown_83BF4B8:: @ 83BF4B8 - obj_image_anim_frame 0x0000, 5 - obj_image_anim_jump 0x0000 - -gUnknown_83BF4C0:: @ 83BF4C0 - obj_image_anim_frame 0x0000, 5 - obj_image_anim_jump 0x0000 - -gSpriteAniimTable_83BF4C8:: @ 83BF4C8 - .4byte gUnknown_83BF4B0 - .4byte gUnknown_83BF4B8 - .4byte gUnknown_83BF4C0 - -gSpriteTemplate_83BF4D4:: @ 83BF4D4 - spr_template 10135, 10135, gOamData_AffineOff_ObjNormal_32x32, gSpriteAniimTable_83BF4C8, NULL, gDummySpriteAffineAnimTable, sub_8076F58 - -gUnknown_83BF4EC:: @ 83BF4EC - obj_image_anim_frame 0x0000, 15 - obj_image_anim_jump 0x0000 - -gSpriteAnimTable_83BF4F4:: @ 83BF4F4 - .4byte gUnknown_83BF4EC - -gUnknown_83BF4F8:: @ 83BF4F8 - obj_rot_scal_anim_frame 0x0060, 0x0060, 0x00, 0 - obj_rot_scal_anim_frame 0x0002, 0x0002, 0x00, 1 - obj_rot_scal_anim_jump 0x0001 - -gSpriteAffineAnimTable_83BF510:: @ 83BF510 - .4byte gUnknown_83BF4F8 - -gSpriteTemplate_83BF514:: @ 83BF514 - spr_template 10004, 10004, gOamData_AffineDouble_ObjNormal_16x16, gSpriteAnimTable_83BF4F4, NULL, gSpriteAffineAnimTable_83BF510, sub_8076ED8 - -gUnknown_83BF52C:: @ 83BF52C - .string "TASK OVER\n" - .string "タスクがオーバーしました$" - - .align 2 -gSubsprites_83BF544:: @ 83BF544 - subsprite 240, 240, 2, 0x00, 64x64 - subsprite 240, 48, 2, 0x40, 64x32 - subsprite 48, 240, 2, 0x60, 32x64 - subsprite 48, 48, 2, 0x80, 32x32 - -gUnknown_83BF554:: @ 83BF554 - .byte 4 - .align 2 - .4byte gSubsprites_83BF544 - -gUnknown_83BF55C:: @ 83BF55C - spr_template 10010, 10010, gOamData_AffineOff_ObjBlend_64x64, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_83BF574:: @ 83BF574 - spr_template 10136, 10136, gOamData_AffineOff_ObjNormal_8x8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_807834C diff --git a/ld_script.txt b/ld_script.txt index 97acec6ef..80b129a01 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -115,7 +115,7 @@ SECTIONS { src/battle_anim_mons.o(.text); src/task.o(.text); src/reshow_battle_screen.o(.text); - asm/battle_anim_status_effects.o(.text); + src/battle_anim_status_effects.o(.text); src/title_screen.o(.text); src/reset_save_heap.o(.text); asm/field_weather.o(.text); @@ -423,7 +423,7 @@ SECTIONS { src/battle_anim.o(.rodata); src/battle_anim_mons.o(.rodata); data/map_events.o(.rodata); - data/battle_anim_status_effects.o(.rodata); + src/battle_anim_status_effects.o(.rodata); src/title_screen.o(.rodata); data/field_weather.o(.rodata); data/field_screen_effect.o(.rodata); @@ -483,7 +483,7 @@ SECTIONS { src/save.o(.rodata); data/field_effect_helpers.o(.rodata); src/battle_controller_safari.o(.rodata); - data/battle_anim_effects_3.o(.rodata); + src/battle_anim_effects_3.o(.rodata); src/learn_move.o(.rodata); src/battle_tower.o(.rodata); src/battle_controller_oak_old_man.o(.rodata); diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index 4fd6ada0b..426d39056 100644 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -1182,7 +1182,6 @@ const union AffineAnimCmd gSlackOffSquishAffineAnimCmds[] = //83FF7A8 }; // Functions - // 80DE2C0 void AnimBlackSmoke(struct Sprite *sprite) { diff --git a/src/battle_anim_status_effects.c b/src/battle_anim_status_effects.c new file mode 100644 index 000000000..582dd20a5 --- /dev/null +++ b/src/battle_anim_status_effects.c @@ -0,0 +1,538 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "decompress.h" +#include "gpu_regs.h" +#include "palette.h" +#include "sprite.h" +#include "task.h" +#include "trig.h" +#include "util.h" +#include "constants/battle_anim.h" +#include "constants/rgb.h" + +// Function Declarations +static u8 sub_8078178(u8 battlerId, bool8 b); +static void sub_80782BC(u8 taskId); +static void sub_80784D8(u8 taskId); +static void sub_8078528(u8 taskId); +static void sub_80785D8(u8 taskId); +static void sub_807862C(u8 taskId); +static void Task_DoStatusAnimation(u8 taskId); +static void sub_807834C(struct Sprite *sprite); +static void sub_8078380(struct Sprite *sprite); + +// Data +extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; +extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; +extern const u8 *const gBattleAnims_StatusConditions[]; +extern const struct OamData gOamData_AffineOff_ObjNormal_8x8; +extern const struct OamData gOamData_AffineOff_ObjBlend_64x64; + +static const union AnimCmd gUnknown_83BF3E0[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(4, 3), + ANIMCMD_FRAME(8, 3), + ANIMCMD_FRAME(12, 3), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const gSpriteAnimTable_83BF3F4[] = +{ + gUnknown_83BF3E0 +}; + +const struct SpriteTemplate gSpriteTemplate_83BF3F8 = +{ + .tileTag = ANIM_TAG_ORB, + .paletteTag = ANIM_TAG_ORB, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gSpriteAnimTable_83BF3F4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A8AEC, +}; + +const struct SpriteTemplate gSpriteTemplate_83BF410 = +{ + .tileTag = ANIM_TAG_ORB, + .paletteTag = ANIM_TAG_ORB, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gSpriteAnimTable_83BF3F4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A8A6C, +}; + +static const union AnimCmd gUnknown_83BF428[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const gSpriteAnimTable_83BF430[] = +{ + gUnknown_83BF428 +}; + +const struct SpriteTemplate gSpriteTemplate_83BF434 = +{ + .tileTag = ANIM_TAG_WEATHER_BALL, + .paletteTag = ANIM_TAG_WEATHER_BALL, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gSpriteAnimTable_83BF430, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A8E30, +}; + +const struct SpriteTemplate gSpriteTemplate_83BF44C = +{ + .tileTag = ANIM_TAG_WEATHER_BALL, + .paletteTag = ANIM_TAG_WEATHER_BALL, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gSpriteAnimTable_83BF430, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A8EE4, +}; + +static const union AnimCmd gUnknown_83BF464[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(48, 3), + ANIMCMD_FRAME(64, 3), + ANIMCMD_END +}; + +static const union AnimCmd *const gSpriteAnimTable_83BF47C[] = +{ + gUnknown_83BF464 +}; + +const struct SpriteTemplate gSpriteTemplate_83BF480 = +{ + .tileTag = ANIM_TAG_SPARKLE_4, + .paletteTag = ANIM_TAG_SPARKLE_4, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gSpriteAnimTable_83BF47C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A8B64, +}; + +const struct SpriteTemplate gSpriteTemplate_83BF498 = +{ + .tileTag = ANIM_TAG_MONSTER_FOOT, + .paletteTag = ANIM_TAG_MONSTER_FOOT, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A8AEC, +}; + +static const union AnimCmd gUnknown_83BF4B0[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd gUnknown_83BF4B8[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd gUnknown_83BF4C0[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const gSpriteAniimTable_83BF4C8[] = +{ + gUnknown_83BF4B0, + gUnknown_83BF4B8, + gUnknown_83BF4C0 +}; + +const struct SpriteTemplate gSpriteTemplate_83BF4D4 = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_IMPACT, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gSpriteAniimTable_83BF4C8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A8AEC, +}; + +static const union AnimCmd gUnknown_83BF4EC[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const gSpriteAnimTable_83BF4F4[] = +{ + gUnknown_83BF4EC +}; + +static const union AffineAnimCmd gUnknown_83BF4F8[] = +{ + AFFINEANIMCMD_FRAME(96, 96, 0, 0), + AFFINEANIMCMD_FRAME(2, 2, 0, 1), + AFFINEANIMCMD_JUMP(1) +}; + +static const union AffineAnimCmd *const gSpriteAffineAnimTable_83BF510[] = +{ + gUnknown_83BF4F8 +}; + +const struct SpriteTemplate gSpriteTemplate_83BF514 = +{ + .tileTag = ANIM_TAG_ORB, + .paletteTag = ANIM_TAG_ORB, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gSpriteAnimTable_83BF4F4, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83BF510, + .callback = sub_80A8A6C, +}; + +static const u32 gUnknown_83BF52C = _("TASK OVER\nタスクがオーバーしました$"); + +static const struct Subsprite gSubsprites_83BF544[] = +{ + {.x = -16, .y = -16, .shape = ST_OAM_SQUARE, .size = 3, .tileOffset = 0, .priority = 2}, + {.x = -16, .y = 48, .shape = ST_OAM_H_RECTANGLE, .size = 3, .tileOffset = 64, .priority = 2}, + {.x = 48, .y = -16, .shape = ST_OAM_V_RECTANGLE, .size = 3, .tileOffset = 96, .priority = 2}, + {.x = 48, .y = 48, .shape = ST_OAM_SQUARE, .size = 2, .tileOffset = 128, .priority = 2}, +}; + +static const struct SubspriteTable gUnknown_83BF554[] = +{ + {ARRAY_COUNT(gSubsprites_83BF544), gSubsprites_83BF544}, +}; + +static const struct SpriteTemplate gUnknown_83BF55C = +{ + .tileTag = ANIM_TAG_ICE_CUBE, + .paletteTag = ANIM_TAG_ICE_CUBE, + .oam = &gOamData_AffineOff_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +static const struct SpriteTemplate gUnknown_83BF574 = +{ + .tileTag = ANIM_TAG_CIRCLE_IMPACT, + .paletteTag = ANIM_TAG_CIRCLE_IMPACT, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_807834C, +}; + +// Functions +static u8 sub_8078178(u8 battlerId, bool8 b) +{ + u8 battlerSpriteId = gBattlerSpriteIds[battlerId]; + u8 taskId = CreateTask(sub_80782BC, 10); + u8 spriteId2; + u8 i; + + LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_CIRCLE_IMPACT)]); + LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_CIRCLE_IMPACT)]); + gTasks[taskId].data[0] = battlerId; + if (b) + { + gTasks[taskId].data[1] = RGB_RED; + for (i = 0; i < 10; i++) + { + spriteId2 = CreateSprite(&gUnknown_83BF574, gSprites[battlerSpriteId].pos1.x, gSprites[battlerSpriteId].pos1.y + 32, 0); + gSprites[spriteId2].data[0] = i * 51; + gSprites[spriteId2].data[1] = -256; + gSprites[spriteId2].invisible = TRUE; + if (i > 4) + gSprites[spriteId2].data[6] = 21; + } + } + else + { + gTasks[taskId].data[1] = RGB_BLUE; + for (i = 0; i < 10; i++) + { + spriteId2 = CreateSprite(&gUnknown_83BF574, gSprites[battlerSpriteId].pos1.x, gSprites[battlerSpriteId].pos1.y - 32, 0); + gSprites[spriteId2].data[0] = i * 51; + gSprites[spriteId2].data[1] = 256; + gSprites[spriteId2].invisible = TRUE; + if (i > 4) + gSprites[spriteId2].data[6] = 21; + } + } + gSprites[spriteId2].data[7] = 1; + return taskId; +} + +// Functions +static void sub_80782BC(u8 taskId) +{ + if (gTasks[taskId].data[2] == 2) + { + gTasks[taskId].data[2] = 0; + BlendPalette(0x100 + gTasks[taskId].data[0] * 16, 16, gTasks[taskId].data[4], gTasks[taskId].data[1]); + if (gTasks[taskId].data[5] == 0) + { + gTasks[taskId].data[4]++; + if (gTasks[taskId].data[4] > 8) + gTasks[taskId].data[5] ^= 1; + } + else + { + u16 var = gTasks[taskId].data[4]; + + gTasks[taskId].data[4]--; + if (gTasks[taskId].data[4] < 0) + { + gTasks[taskId].data[4] = var; + gTasks[taskId].data[5] ^= 1; + gTasks[taskId].data[3]++; + if (gTasks[taskId].data[3] == 2) + DestroyTask(taskId); + } + } + } + else + { + gTasks[taskId].data[2]++; + } +} + +static void sub_807834C(struct Sprite *sprite) +{ + if (sprite->data[6] == 0) + { + sprite->invisible = FALSE; + sprite->callback = sub_8078380; + sub_8078380(sprite); + } + else + { + sprite->data[6]--; + } +} + +static void sub_8078380(struct Sprite *sprite) +{ + sprite->pos2.x = Cos(sprite->data[0], 32); + sprite->pos2.y = Sin(sprite->data[0], 8); + if (sprite->data[0] < 128) + sprite->subpriority = 29; + else + sprite->subpriority = 31; + sprite->data[0] = (sprite->data[0] + 8) & 0xFF; + sprite->data[5] += sprite->data[1]; + sprite->pos2.y += sprite->data[5] >> 8; + sprite->data[2]++; + if (sprite->data[2] == 52) + { + if (sprite->data[7]) + DestroySpriteAndFreeResources(sprite); + else + DestroySprite(sprite); + } +} + +void sub_80783FC(u8 taskId) +{ + s16 x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) - 32; + s16 y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) - 36; + u8 spriteId; + + if (IsContest()) + x -= 6; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); + spriteId = CreateSprite(&gUnknown_83BF55C, x, y, 4); + if (GetSpriteTileStartByTag(ANIM_TAG_ICE_CUBE) == 0xFFFF) + gSprites[spriteId].invisible = TRUE; + SetSubspriteTables(&gSprites[spriteId], gUnknown_83BF554); + gTasks[taskId].data[15] = spriteId; + gTasks[taskId].func = sub_80784D8; +} + +static void sub_80784D8(u8 taskId) +{ + gTasks[taskId].data[1]++; + if (gTasks[taskId].data[1] == 10) + { + gTasks[taskId].func = sub_8078528; + gTasks[taskId].data[1] = 0; + } + else + { + u8 var = gTasks[taskId].data[1]; + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(var, 16 - var)); + } +} + +static void sub_8078528(u8 taskId) +{ + u8 palIndex = IndexOfSpritePaletteTag(ANIM_TAG_ICE_CUBE); + + if (gTasks[taskId].data[1]++ > 13) + { + gTasks[taskId].data[2]++; + if (gTasks[taskId].data[2] == 3) + { + u16 temp; + + temp = gPlttBufferFaded[0x100 + palIndex * 16 + 13]; + gPlttBufferFaded[0x100 + palIndex * 16 + 13] = gPlttBufferFaded[0x100 + palIndex * 16 + 14]; + gPlttBufferFaded[0x100 + palIndex * 16 + 14] = gPlttBufferFaded[0x100 + palIndex * 16 + 15]; + gPlttBufferFaded[0x100 + palIndex * 16 + 15] = temp; + + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3]++; + if (gTasks[taskId].data[3] == 3) + { + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[4]++; + if (gTasks[taskId].data[4] == 2) + { + gTasks[taskId].data[1] = 9; + gTasks[taskId].func = sub_80785D8; + } + } + } + } +} + +static void sub_80785D8(u8 taskId) +{ + gTasks[taskId].data[1]--; + if (gTasks[taskId].data[1] == -1) + { + gTasks[taskId].func = sub_807862C; + gTasks[taskId].data[1] = 0; + } + else + { + u8 var = gTasks[taskId].data[1]; + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(var, 16 - var)); + } +} + +static void sub_807862C(u8 taskId) +{ + gTasks[taskId].data[1]++; + if (gTasks[taskId].data[1] == 37) + { + u8 spriteId = gTasks[taskId].data[15]; + + FreeSpriteOamMatrix(&gSprites[spriteId]); + DestroySprite(&gSprites[spriteId]); + } + else if (gTasks[taskId].data[1] == 39) + { + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroyAnimVisualTask(taskId); + } +} + +#define CASE(by, stat) case (STAT_ANIM_##by + stat - 1) + +void AnimTask_StatsChange(u8 taskId) +{ + bool16 goesDown = FALSE; + s16 animStatId = 0; + bool16 sharply = FALSE; + + switch (gBattleSpritesDataPtr->animationData->animArg) + { + CASE(PLUS1, STAT_ATK): goesDown = FALSE; animStatId = 0; break; + CASE(PLUS1, STAT_DEF): goesDown = FALSE; animStatId = 1; break; + CASE(PLUS1, STAT_SPEED): goesDown = FALSE; animStatId = 3; break; + CASE(PLUS1, STAT_SPATK): goesDown = FALSE; animStatId = 5; break; + CASE(PLUS1, STAT_SPDEF): goesDown = FALSE; animStatId = 6; break; + CASE(PLUS1, STAT_ACC): goesDown = FALSE; animStatId = 2; break; + CASE(PLUS1, STAT_EVASION): goesDown = FALSE; animStatId = 4; break; + + CASE(MINUS1, STAT_ATK): goesDown = TRUE; animStatId = 0; break; + CASE(MINUS1, STAT_DEF): goesDown = TRUE; animStatId = 1; break; + CASE(MINUS1, STAT_SPEED): goesDown = TRUE; animStatId = 3; break; + CASE(MINUS1, STAT_SPATK): goesDown = TRUE; animStatId = 5; break; + CASE(MINUS1, STAT_SPDEF): goesDown = TRUE; animStatId = 6; break; + CASE(MINUS1, STAT_ACC): goesDown = TRUE; animStatId = 2; break; + CASE(MINUS1, STAT_EVASION): goesDown = TRUE; animStatId = 4; break; + + CASE(PLUS2, STAT_ATK): goesDown = FALSE; animStatId = 0; sharply = TRUE; break; + CASE(PLUS2, STAT_DEF): goesDown = FALSE; animStatId = 1; sharply = TRUE; break; + CASE(PLUS2, STAT_SPEED): goesDown = FALSE; animStatId = 3; sharply = TRUE; break; + CASE(PLUS2, STAT_SPATK): goesDown = FALSE; animStatId = 5; sharply = TRUE; break; + CASE(PLUS2, STAT_SPDEF): goesDown = FALSE; animStatId = 6; sharply = TRUE; break; + CASE(PLUS2, STAT_ACC): goesDown = FALSE; animStatId = 2; sharply = TRUE; break; + CASE(PLUS2, STAT_EVASION): goesDown = FALSE; animStatId = 4; sharply = TRUE; break; + + CASE(MINUS2, STAT_ATK): goesDown = TRUE; animStatId = 0; sharply = TRUE; break; + CASE(MINUS2, STAT_DEF): goesDown = TRUE; animStatId = 1; sharply = TRUE; break; + CASE(MINUS2, STAT_SPEED): goesDown = TRUE; animStatId = 3; sharply = TRUE; break; + CASE(MINUS2, STAT_SPATK): goesDown = TRUE; animStatId = 5; sharply = TRUE; break; + CASE(MINUS2, STAT_SPDEF): goesDown = TRUE; animStatId = 6; sharply = TRUE; break; + CASE(MINUS2, STAT_ACC): goesDown = TRUE; animStatId = 2; sharply = TRUE; break; + CASE(MINUS2, STAT_EVASION): goesDown = TRUE; animStatId = 4; sharply = TRUE; break; + + case STAT_ANIM_MULTIPLE_PLUS1: goesDown = FALSE; animStatId = 0xFF; sharply = FALSE; break; + case STAT_ANIM_MULTIPLE_PLUS2: goesDown = FALSE; animStatId = 0xFF; sharply = TRUE; break; + case STAT_ANIM_MULTIPLE_MINUS1: goesDown = TRUE; animStatId = 0xFF; sharply = FALSE; break; + case STAT_ANIM_MULTIPLE_MINUS2: goesDown = TRUE; animStatId = 0xFF; sharply = TRUE; break; + + default: + DestroyAnimVisualTask(taskId); + return; + } + + gBattleAnimArgs[0] = goesDown; + gBattleAnimArgs[1] = animStatId; + gBattleAnimArgs[2] = 0; + gBattleAnimArgs[3] = 0; + gBattleAnimArgs[4] = sharply; + gTasks[taskId].func = sub_8116EB4; + sub_8116EB4(taskId); +} + +#undef CASE + +void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId) +{ + u8 taskId; + + gBattleAnimAttacker = battlerId; + gBattleAnimTarget = battlerId; + LaunchBattleAnimation(gBattleAnims_StatusConditions, statusAnimId, 0); + taskId = CreateTask(Task_DoStatusAnimation, 10); + gTasks[taskId].data[0] = battlerId; +} + +static void Task_DoStatusAnimation(u8 taskId) +{ + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].data[0]].statusAnimActive = FALSE; + DestroyTask(taskId); + } +} |