diff options
-rw-r--r-- | asm/battle_anim_812C144.s | 2997 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/battle/anim/rock.c | 8 | ||||
-rw-r--r-- | src/battle/battle_anim.c | 2 | ||||
-rwxr-xr-x | src/battle/battle_anim_812C144.c | 1126 | ||||
-rw-r--r-- | src/battle/battle_controller_linkopponent.c | 2 | ||||
-rw-r--r-- | src/battle/battle_controller_linkpartner.c | 2 | ||||
-rw-r--r-- | src/battle/battle_controller_opponent.c | 2 | ||||
-rw-r--r-- | src/battle/battle_controller_player.c | 2 | ||||
-rw-r--r-- | src/battle/battle_controller_wally.c | 2 |
10 files changed, 1137 insertions, 3007 deletions
diff --git a/asm/battle_anim_812C144.s b/asm/battle_anim_812C144.s index e49873ee6..6345d9d3b 100644 --- a/asm/battle_anim_812C144.s +++ b/asm/battle_anim_812C144.s @@ -4,3003 +4,6 @@ .syntax unified .text - - thumb_func_start sub_812C144 -sub_812C144: @ 812C144 - push {lr} - adds r2, r0, 0 - ldr r1, _0812C168 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r3, [r2, 0x20] - adds r0, r3 - strh r0, [r2, 0x20] - ldrh r0, [r1, 0x2] - ldrh r3, [r2, 0x22] - adds r0, r3 - strh r0, [r2, 0x22] - movs r3, 0x6 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _0812C16C - ldrh r0, [r1, 0x4] - b _0812C170 - .align 2, 0 -_0812C168: .4byte gBattleAnimArgs -_0812C16C: - ldrh r0, [r1, 0x4] - negs r0, r0 -_0812C170: - strh r0, [r2, 0x2E] - ldrh r0, [r1, 0x8] - strh r0, [r2, 0x30] - ldr r0, _0812C180 @ =sub_812C184 - str r0, [r2, 0x1C] - pop {r0} - bx r0 - .align 2, 0 -_0812C180: .4byte sub_812C184 - thumb_func_end sub_812C144 - - thumb_func_start sub_812C184 -sub_812C184: @ 812C184 - push {lr} - adds r3, r0, 0 - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0 - ble _0812C1C4 - ldrh r1, [r3, 0x32] - lsls r0, r1, 16 - asrs r0, 24 - strh r0, [r3, 0x24] - ldrh r0, [r3, 0x2E] - adds r1, r0 - strh r1, [r3, 0x32] - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldrh r0, [r3, 0x30] - subs r0, 0x1 - strh r0, [r3, 0x30] - b _0812C1CA -_0812C1C4: - adds r0, r3, 0 - bl DestroyAnimSprite -_0812C1CA: - pop {r0} - bx r0 - thumb_func_end sub_812C184 - - thumb_func_start sub_812C1D0 -sub_812C1D0: @ 812C1D0 - push {r4-r6,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r6, _0812C21C @ =gAnimBankTarget - ldrb r0, [r6] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 8 - movs r0, 0x80 - lsls r0, 12 - adds r4, r0 - asrs r4, 16 - ldrb r0, [r6] - movs r1, 0x3 - bl GetBattlerSpriteCoord - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 8 - movs r0, 0x80 - lsls r0, 12 - adds r1, r0 - asrs r1, 16 - adds r0, r4, 0 - movs r2, 0 - bl sub_8046234 - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812C21C: .4byte gAnimBankTarget - thumb_func_end sub_812C1D0 - - thumb_func_start sub_812C220 -sub_812C220: @ 812C220 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x5A - strh r0, [r4, 0x2E] - ldr r0, _0812C258 @ =WaitAnimForDuration - str r0, [r4, 0x1C] - movs r0, 0x7 - strh r0, [r4, 0x30] - ldr r1, _0812C25C @ =sub_812C268 - adds r0, r4, 0 - bl StoreSpriteCallbackInData - ldr r1, _0812C260 @ =REG_BLDCNT - movs r2, 0xFD - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - ldr r2, _0812C264 @ =REG_BLDALPHA - ldrh r1, [r4, 0x30] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r0, r1 - strh r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812C258: .4byte WaitAnimForDuration -_0812C25C: .4byte sub_812C268 -_0812C260: .4byte REG_BLDCNT -_0812C264: .4byte REG_BLDALPHA - thumb_func_end sub_812C220 - - thumb_func_start sub_812C268 -sub_812C268: @ 812C268 - push {lr} - adds r3, r0, 0 - ldr r2, _0812C29C @ =REG_BLDALPHA - ldrh r1, [r3, 0x30] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r3, 0x30] - subs r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - cmp r0, 0 - bge _0812C296 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _0812C2A0 @ =sub_812C2A4 - str r0, [r3, 0x1C] -_0812C296: - pop {r0} - bx r0 - .align 2, 0 -_0812C29C: .4byte REG_BLDALPHA -_0812C2A0: .4byte sub_812C2A4 - thumb_func_end sub_812C268 - - thumb_func_start sub_812C2A4 -sub_812C2A4: @ 812C2A4 - push {lr} - ldr r1, _0812C2B8 @ =REG_BLDCNT - movs r2, 0 - strh r2, [r1] - adds r1, 0x2 - strh r2, [r1] - bl DestroyAnimSprite - pop {r0} - bx r0 - .align 2, 0 -_0812C2B8: .4byte REG_BLDCNT - thumb_func_end sub_812C2A4 - - thumb_func_start sub_812C2BC -sub_812C2BC: @ 812C2BC - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - ldr r4, _0812C348 @ =gAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r7, r0, 0 - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8078764 - ldrh r0, [r5, 0x20] - subs r0, r7 - lsls r0, 16 - asrs r0, 16 - ldrh r1, [r5, 0x22] - subs r1, r6 - lsls r1, 16 - asrs r1, 16 - bl ArcTan2Neg - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 23 - adds r0, r1 - lsrs r4, r0, 16 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _0812C31A - movs r1, 0x80 - lsls r1, 7 - adds r0, r4, r1 - lsls r0, 16 - lsrs r4, r0, 16 -_0812C31A: - movs r3, 0x80 - lsls r3, 1 - str r4, [sp] - adds r0, r5, 0 - movs r1, 0 - adds r2, r3, 0 - bl sub_8078FDC - ldr r0, _0812C34C @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r5, 0x2E] - strh r7, [r5, 0x32] - strh r6, [r5, 0x36] - ldr r0, _0812C350 @ =StartTranslateAnimSpriteByDeltas - str r0, [r5, 0x1C] - ldr r1, _0812C354 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812C348: .4byte gAnimBankTarget -_0812C34C: .4byte gBattleAnimArgs -_0812C350: .4byte StartTranslateAnimSpriteByDeltas -_0812C354: .4byte DestroyAnimSprite - thumb_func_end sub_812C2BC - - thumb_func_start sub_812C358 -sub_812C358: @ 812C358 - ldr r2, _0812C378 @ =REG_BLDCNT - movs r3, 0xFD - lsls r3, 6 - adds r1, r3, 0 - strh r1, [r2] - adds r2, 0x2 - movs r3, 0x80 - lsls r3, 5 - adds r1, r3, 0 - strh r1, [r2] - movs r1, 0x4 - strh r1, [r0, 0x2E] - ldr r1, _0812C37C @ =sub_812C380 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_0812C378: .4byte REG_BLDCNT -_0812C37C: .4byte sub_812C380 - thumb_func_end sub_812C358 - - thumb_func_start sub_812C380 -sub_812C380: @ 812C380 - push {r4,lr} - adds r4, r0, 0 - ldr r2, _0812C3A0 @ =REG_BLDALPHA - ldrh r1, [r4, 0x2E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r0, r1 - strh r0, [r2] - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0812C3A4 - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - b _0812C3A8 - .align 2, 0 -_0812C3A0: .4byte REG_BLDALPHA -_0812C3A4: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 -_0812C3A8: - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0xF - beq _0812C3B6 - cmp r0, 0x4 - bne _0812C3BE -_0812C3B6: - ldrh r0, [r4, 0x30] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x30] -_0812C3BE: - ldrh r0, [r4, 0x32] - adds r1, r0, 0x1 - strh r1, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x46 - ble _0812C3FC - ldr r0, _0812C404 @ =REG_BLDCNT - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - movs r0, 0 - strh r0, [r4, 0x32] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - subs r2, 0x12 - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r0, _0812C408 @ =sub_812C40C - str r0, [r4, 0x1C] -_0812C3FC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812C404: .4byte REG_BLDCNT -_0812C408: .4byte sub_812C40C - thumb_func_end sub_812C380 - - thumb_func_start sub_812C40C -sub_812C40C: @ 812C40C - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x32] - adds r1, r0, 0x1 - strh r1, [r3, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - ble _0812C448 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - subs r2, 0x12 - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - adds r0, r3, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0812C448 - ldr r0, _0812C44C @ =sub_812C450 - str r0, [r3, 0x1C] -_0812C448: - pop {r0} - bx r0 - .align 2, 0 -_0812C44C: .4byte sub_812C450 - thumb_func_end sub_812C40C - - thumb_func_start sub_812C450 -sub_812C450: @ 812C450 - push {lr} - adds r2, r0, 0 - movs r1, 0x34 - ldrsh r0, [r2, r1] - cmp r0, 0x6 - bhi _0812C4A8 - lsls r0, 2 - ldr r1, _0812C468 @ =_0812C46C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0812C468: .4byte _0812C46C - .align 2, 0 -_0812C46C: - .4byte _0812C488 - .4byte _0812C488 - .4byte _0812C492 - .4byte _0812C492 - .4byte _0812C4A0 - .4byte _0812C4A0 - .4byte _0812C4A8 -_0812C488: - movs r1, 0 - movs r0, 0x1 - strh r0, [r2, 0x24] - strh r1, [r2, 0x26] - b _0812C4B0 -_0812C492: - ldr r0, _0812C49C @ =0x0000ffff - strh r0, [r2, 0x24] - movs r0, 0 - b _0812C4AE - .align 2, 0 -_0812C49C: .4byte 0x0000ffff -_0812C4A0: - movs r0, 0 - strh r0, [r2, 0x24] - movs r0, 0x1 - b _0812C4AE -_0812C4A8: - movs r0, 0 - strh r0, [r2, 0x24] - ldr r0, _0812C4F0 @ =0x0000ffff -_0812C4AE: - strh r0, [r2, 0x26] -_0812C4B0: - ldrh r0, [r2, 0x34] - adds r0, 0x1 - movs r3, 0 - strh r0, [r2, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _0812C4C2 - strh r3, [r2, 0x34] -_0812C4C2: - ldrh r0, [r2, 0x36] - adds r1, r0, 0x1 - strh r1, [r2, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - ble _0812C4EA - movs r0, 0x10 - strh r0, [r2, 0x2E] - strh r3, [r2, 0x30] - ldr r1, _0812C4F4 @ =REG_BLDCNT - movs r3, 0xFD - lsls r3, 6 - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x2E] - strh r0, [r1] - ldr r0, _0812C4F8 @ =sub_812C4FC - str r0, [r2, 0x1C] -_0812C4EA: - pop {r0} - bx r0 - .align 2, 0 -_0812C4F0: .4byte 0x0000ffff -_0812C4F4: .4byte REG_BLDCNT -_0812C4F8: .4byte sub_812C4FC - thumb_func_end sub_812C450 - - thumb_func_start sub_812C4FC -sub_812C4FC: @ 812C4FC - push {r4,lr} - adds r2, r0, 0 - ldr r4, _0812C558 @ =REG_BLDALPHA - ldrh r1, [r2, 0x2E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r0, r1 - strh r0, [r4] - ldrh r0, [r2, 0x30] - adds r1, r0, 0x1 - strh r1, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _0812C526 - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - movs r1, 0 - strh r0, [r2, 0x2E] - strh r1, [r2, 0x30] -_0812C526: - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _0812C53A - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r3] -_0812C53A: - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - bge _0812C550 - ldr r1, _0812C55C @ =REG_BLDCNT - movs r0, 0 - strh r0, [r1] - strh r0, [r4] - adds r0, r2, 0 - bl DestroyAnimSprite -_0812C550: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812C558: .4byte REG_BLDALPHA -_0812C55C: .4byte REG_BLDCNT - thumb_func_end sub_812C4FC - - thumb_func_start sub_812C560 -sub_812C560: @ 812C560 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0812C57C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _0812C580 @ =sub_812C588 - str r0, [r1] - ldr r1, _0812C584 @ =gAnimVisualTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - bx lr - .align 2, 0 -_0812C57C: .4byte gTasks -_0812C580: .4byte sub_812C588 -_0812C584: .4byte gAnimVisualTaskCount - thumb_func_end sub_812C560 - - thumb_func_start sub_812C588 -sub_812C588: @ 812C588 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_80789BC - lsls r0, 24 - lsrs r6, r0, 24 - ldr r7, _0812C614 @ =gTasks - lsls r5, r4, 2 - adds r1, r5, r4 - lsls r1, 3 - adds r1, r7 - ldrh r0, [r1, 0x12] - adds r0, 0x1 - strh r0, [r1, 0x12] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _0812C5F8 - ldr r0, _0812C618 @ =gPlttBufferFaded - lsls r2, r6, 4 - adds r1, r2, 0 - adds r1, 0xB - lsls r1, 1 - adds r1, r0 - ldrh r3, [r1] - mov r8, r3 - movs r3, 0xA - mov r9, r7 - adds r7, r5, 0 - mov r12, r0 - adds r5, r2, 0 - lsls r0, r6, 5 - add r0, r12 - adds r2, r0, 0 - adds r2, 0x14 -_0812C5D6: - ldrh r0, [r2] - strh r0, [r1] - subs r2, 0x2 - subs r1, 0x2 - subs r3, 0x1 - cmp r3, 0 - bgt _0812C5D6 - adds r0, r5, 0x1 - lsls r0, 1 - add r0, r12 - movs r1, 0 - mov r2, r8 - strh r2, [r0] - adds r0, r7, r4 - lsls r0, 3 - add r0, r9 - strh r1, [r0, 0x12] -_0812C5F8: - ldr r0, _0812C61C @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _0812C620 @ =0x0000ffff - cmp r1, r0 - bne _0812C608 - adds r0, r4, 0 - bl DestroyTask -_0812C608: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812C614: .4byte gTasks -_0812C618: .4byte gPlttBufferFaded -_0812C61C: .4byte gBattleAnimArgs -_0812C620: .4byte 0x0000ffff - thumb_func_end sub_812C588 - - thumb_func_start sub_812C624 -sub_812C624: @ 812C624 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0812C640 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _0812C644 @ =sub_812C64C - str r0, [r1] - ldr r1, _0812C648 @ =gAnimVisualTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - bx lr - .align 2, 0 -_0812C640: .4byte gTasks -_0812C644: .4byte sub_812C64C -_0812C648: .4byte gAnimVisualTaskCount - thumb_func_end sub_812C624 - - thumb_func_start sub_812C64C -sub_812C64C: @ 812C64C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - bl sub_80789BC - lsls r0, 24 - lsrs r7, r0, 24 - ldr r5, _0812C70C @ =gTasks - mov r0, r8 - lsls r3, r0, 2 - adds r1, r3, r0 - lsls r1, 3 - adds r1, r5 - ldrh r0, [r1, 0x12] - adds r0, 0x1 - strh r0, [r1, 0x12] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _0812C6EE - ldr r0, _0812C710 @ =gPlttBufferFaded - lsls r2, r7, 4 - adds r1, r2, 0 - adds r1, 0xB - lsls r1, 1 - adds r1, r0 - ldrh r6, [r1] - movs r4, 0xA - mov r10, r3 - mov r9, r0 - adds r5, r2, 0 - ldr r2, _0812C714 @ =gPlttBufferUnfaded - mov r12, r2 - lsls r0, r7, 5 - add r0, r9 - adds r3, r0, 0 - adds r3, 0x14 -_0812C6A0: - ldrh r0, [r3] - strh r0, [r1] - subs r3, 0x2 - subs r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bgt _0812C6A0 - adds r0, r5, 0x1 - lsls r0, 1 - add r0, r9 - strh r6, [r0] - adds r1, r5, 0 - adds r1, 0xB - lsls r1, 1 - add r1, r12 - ldrh r6, [r1] - movs r4, 0xA - lsls r0, r7, 5 - add r0, r12 - adds r2, r0, 0 - adds r2, 0x14 -_0812C6CA: - ldrh r0, [r2] - strh r0, [r1] - subs r2, 0x2 - subs r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bgt _0812C6CA - adds r0, r5, 0x1 - lsls r0, 1 - add r0, r12 - movs r1, 0 - strh r6, [r0] - mov r0, r10 - add r0, r8 - lsls r0, 3 - ldr r2, _0812C70C @ =gTasks - adds r0, r2 - strh r1, [r0, 0x12] -_0812C6EE: - ldr r0, _0812C718 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _0812C71C @ =0x0000ffff - cmp r1, r0 - bne _0812C6FE - mov r0, r8 - bl DestroyTask -_0812C6FE: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812C70C: .4byte gTasks -_0812C710: .4byte gPlttBufferFaded -_0812C714: .4byte gPlttBufferUnfaded -_0812C718: .4byte gBattleAnimArgs -_0812C71C: .4byte 0x0000ffff - thumb_func_end sub_812C64C - - thumb_func_start sub_812C720 -sub_812C720: @ 812C720 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0x1 - bl InitAnimSpritePos - ldr r0, _0812C784 @ =gAnimBankTarget - ldrb r0, [r0] - mov r5, sp - adds r5, 0x2 - movs r1, 0 - mov r2, sp - adds r3, r5, 0 - bl SetAverageBattlerPositions - ldr r0, _0812C788 @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0812C754 - ldr r1, _0812C78C @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_0812C754: - ldr r1, _0812C78C @ =gBattleAnimArgs - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x2E] - mov r2, sp - ldrh r0, [r1, 0x4] - ldrh r2, [r2] - adds r0, r2 - strh r0, [r4, 0x32] - ldrh r0, [r1, 0x6] - ldrh r5, [r5] - adds r0, r5 - strh r0, [r4, 0x36] - ldr r0, _0812C790 @ =0x0000ffce - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl InitAnimSpriteTranslationOverDuration - ldr r0, _0812C794 @ =sub_812C798 - str r0, [r4, 0x1C] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812C784: .4byte gAnimBankTarget -_0812C788: .4byte gAnimBankAttacker -_0812C78C: .4byte gBattleAnimArgs -_0812C790: .4byte 0x0000ffce -_0812C794: .4byte sub_812C798 - thumb_func_end sub_812C720 - - thumb_func_start sub_812C798 -sub_812C798: @ 812C798 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimSpriteLinearAndSine - lsls r0, 24 - cmp r0, 0 - beq _0812C7BA - movs r1, 0 - movs r0, 0x1E - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - ldr r0, _0812C7C0 @ =WaitAnimForDuration - str r0, [r4, 0x1C] - ldr r1, _0812C7C4 @ =sub_812C7C8 - adds r0, r4, 0 - bl StoreSpriteCallbackInData -_0812C7BA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812C7C0: .4byte WaitAnimForDuration -_0812C7C4: .4byte sub_812C7C8 - thumb_func_end sub_812C798 - - thumb_func_start sub_812C7C8 -sub_812C7C8: @ 812C7C8 - push {lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x30] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0812C7F4 - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] -_0812C7F4: - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - bne _0812C808 - adds r0, r3, 0 - bl DestroyAnimSprite -_0812C808: - pop {r0} - bx r0 - thumb_func_end sub_812C7C8 - - thumb_func_start sub_812C80C -sub_812C80C: @ 812C80C - push {r4,r5,lr} - adds r4, r0, 0 - bl sub_8078650 - ldr r5, _0812C83C @ =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl sub_807867C - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _0812C840 @ =sub_8078600 - str r0, [r4, 0x1C] - ldr r1, _0812C844 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812C83C: .4byte gBattleAnimArgs -_0812C840: .4byte sub_8078600 -_0812C844: .4byte DestroyAnimSprite - thumb_func_end sub_812C80C - - thumb_func_start sub_812C848 -sub_812C848: @ 812C848 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0812C8A8 - adds r0, r4, 0 - bl sub_8078650 - ldr r5, _0812C884 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r5, r2] - adds r0, r4, 0 - bl sub_807867C - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _0812C89C - ldr r0, _0812C888 @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0812C88C - ldrh r0, [r5, 0x4] - b _0812C8A2 - .align 2, 0 -_0812C884: .4byte gBattleAnimArgs -_0812C888: .4byte gAnimBankAttacker -_0812C88C: - movs r1, 0x4 - ldrsh r0, [r5, r1] - negs r0, r0 - strh r0, [r4, 0x30] - movs r2, 0x6 - ldrsh r0, [r5, r2] - negs r0, r0 - b _0812C8A6 -_0812C89C: - movs r1, 0x4 - ldrsh r0, [r5, r1] - negs r0, r0 -_0812C8A2: - strh r0, [r4, 0x30] - ldrh r0, [r5, 0x6] -_0812C8A6: - strh r0, [r4, 0x32] -_0812C8A8: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r2, 0x2E - ldrsh r1, [r4, r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - movs r3, 0xFF - ldrh r1, [r4, 0x30] - ldrh r2, [r4, 0x34] - adds r1, r2 - strh r1, [r4, 0x34] - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x36] - adds r1, r2 - strh r1, [r4, 0x36] - movs r2, 0x34 - ldrsh r1, [r4, r2] - lsrs r2, r1, 31 - adds r1, r2 - asrs r1, 1 - strh r1, [r4, 0x24] - ands r0, r3 - movs r1, 0x5 - bl Sin - movs r2, 0x36 - ldrsh r1, [r4, r2] - lsrs r2, r1, 31 - adds r1, r2 - asrs r1, 1 - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xF0 - bls _0812C900 - adds r0, r4, 0 - bl DestroyAnimSprite -_0812C900: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_812C848 - - thumb_func_start sub_812C908 -sub_812C908: @ 812C908 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0812C91E - adds r0, r2, 0 - bl DestroyAnimSprite -_0812C91E: - pop {r0} - bx r0 - thumb_func_end sub_812C908 - - thumb_func_start sub_812C924 -sub_812C924: @ 812C924 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0812C940 @ =gAnimBankTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0812C948 - ldr r1, _0812C944 @ =gBattleAnimArgs - movs r0, 0 - b _0812C94C - .align 2, 0 -_0812C940: .4byte gAnimBankTarget -_0812C944: .4byte gBattleAnimArgs -_0812C948: - ldr r1, _0812C95C @ =gBattleAnimArgs - movs r0, 0x1 -_0812C94C: - strh r0, [r1, 0xE] - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812C95C: .4byte gBattleAnimArgs - thumb_func_end sub_812C924 - - thumb_func_start sub_812C960 -sub_812C960: @ 812C960 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _0812C974 @ =gAnimMoveDmg - ldr r0, [r0] - cmp r0, 0 - ble _0812C97C - ldr r1, _0812C978 @ =gBattleAnimArgs - movs r0, 0 - b _0812C980 - .align 2, 0 -_0812C974: .4byte gAnimMoveDmg -_0812C978: .4byte gBattleAnimArgs -_0812C97C: - ldr r1, _0812C98C @ =gBattleAnimArgs - movs r0, 0x1 -_0812C980: - strh r0, [r1, 0xE] - adds r0, r2, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_0812C98C: .4byte gBattleAnimArgs - thumb_func_end sub_812C960 - - thumb_func_start sub_812C990 -sub_812C990: @ 812C990 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _0812C9EC @ =REG_WINOUT - ldr r2, _0812C9F0 @ =0x00001f3f - adds r0, r2, 0 - strh r0, [r1] - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - ldr r0, _0812C9F4 @ =gBattle_WIN0H - movs r1, 0 - strh r1, [r0] - ldr r0, _0812C9F8 @ =gBattle_WIN0V - strh r1, [r0] - ldr r0, _0812C9FC @ =REG_WIN0H - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, r4, 0 - movs r1, 0 - bl sub_8078764 - ldrb r1, [r4, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r4, 0x1] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _0812CA00 @ =sub_812CA04 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812C9EC: .4byte REG_WINOUT -_0812C9F0: .4byte 0x00001f3f -_0812C9F4: .4byte gBattle_WIN0H -_0812C9F8: .4byte gBattle_WIN0V -_0812C9FC: .4byte REG_WIN0H -_0812CA00: .4byte sub_812CA04 - thumb_func_end sub_812C990 - - thumb_func_start sub_812CA04 -sub_812CA04: @ 812CA04 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x5 - bhi _0812CAC4 - lsls r0, 2 - ldr r1, _0812CA1C @ =_0812CA20 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0812CA1C: .4byte _0812CA20 - .align 2, 0 -_0812CA20: - .4byte _0812CA38 - .4byte _0812CA56 - .4byte _0812CA76 - .4byte _0812CA56 - .4byte _0812CA96 - .4byte _0812CAA6 -_0812CA38: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0812CAC4 - b _0812CA9E -_0812CA56: - ldrh r0, [r4, 0x30] - adds r0, 0x75 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _0812CAC4 - movs r0, 0 - strh r0, [r4, 0x32] - b _0812CA9E -_0812CA76: - ldrh r0, [r4, 0x30] - subs r0, 0x75 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x29 - bne _0812CAC4 - movs r0, 0 - strh r0, [r4, 0x32] - b _0812CA9E -_0812CA96: - adds r0, r4, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnim -_0812CA9E: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _0812CAC4 -_0812CAA6: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0812CAC4 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _0812CACC @ =sub_812CAD0 - str r0, [r4, 0x1C] -_0812CAC4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812CACC: .4byte sub_812CAD0 - thumb_func_end sub_812CA04 - - thumb_func_start sub_812CAD0 -sub_812CAD0: @ 812CAD0 - push {r4,lr} - ldr r2, _0812CAF4 @ =REG_WINOUT - ldr r3, _0812CAF8 @ =0x00003f3f - adds r1, r3, 0 - strh r1, [r2] - movs r3, 0x80 - lsls r3, 19 - ldrh r1, [r3] - movs r4, 0x80 - lsls r4, 8 - adds r2, r4, 0 - eors r1, r2 - strh r1, [r3] - bl DestroyAnimSprite - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812CAF4: .4byte REG_WINOUT -_0812CAF8: .4byte 0x00003f3f - thumb_func_end sub_812CAD0 - - thumb_func_start sub_812CAFC -sub_812CAFC: @ 812CAFC - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _0812CB70 @ =gBattleAnimArgs - movs r1, 0x6 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _0812CB28 - ldr r4, _0812CB74 @ =gAnimBankAttacker - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] -_0812CB28: - ldrh r0, [r6] - ldrh r2, [r5, 0x20] - adds r0, r2 - movs r3, 0 - strh r0, [r5, 0x20] - ldrh r0, [r6, 0x2] - ldrh r4, [r5, 0x22] - adds r0, r4 - strh r0, [r5, 0x22] - ldrh r2, [r5, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x10 - ldr r4, _0812CB78 @ =0x000003ff - adds r0, r4, 0 - ands r1, r0 - ldr r0, _0812CB7C @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - movs r1, 0x4 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _0812CB84 - ldrb r1, [r5, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r5, 0x3] - ldr r0, _0812CB80 @ =0x0000fff4 - strh r0, [r5, 0x24] - movs r0, 0x2 - b _0812CB8A - .align 2, 0 -_0812CB70: .4byte gBattleAnimArgs -_0812CB74: .4byte gAnimBankAttacker -_0812CB78: .4byte 0x000003ff -_0812CB7C: .4byte 0xfffffc00 -_0812CB80: .4byte 0x0000fff4 -_0812CB84: - movs r0, 0xC - strh r0, [r5, 0x24] - ldr r0, _0812CBA8 @ =0x0000fffe -_0812CB8A: - strh r0, [r5, 0x30] - ldr r1, _0812CBAC @ =gBattleAnimArgs - ldrh r0, [r1, 0x8] - strh r0, [r5, 0x2E] - movs r2, 0x34 - ldrsh r0, [r5, r2] - cmp r0, 0xFF - beq _0812CB9E - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x34] -_0812CB9E: - ldr r0, _0812CBB0 @ =sub_812CBB4 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812CBA8: .4byte 0x0000fffe -_0812CBAC: .4byte gBattleAnimArgs -_0812CBB0: .4byte sub_812CBB4 - thumb_func_end sub_812CAFC - - thumb_func_start sub_812CBB4 -sub_812CBB4: @ 812CBB4 - push {r4,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0812CBF2 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - lsls r0, 16 - cmp r0, 0 - bne _0812CC12 - adds r0, r2, 0x1 - strh r0, [r4, 0x32] - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0812CC12 - movs r0, 0x40 - negs r0, r0 - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xDE - bl PlaySE1WithPanning - b _0812CC12 -_0812CBF2: - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x30] - subs r0, r1 - strh r0, [r4, 0x24] - movs r1, 0x24 - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _0812CC04 - negs r0, r0 -_0812CC04: - cmp r0, 0xC - bne _0812CC12 - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - subs r0, r2, 0x1 - strh r0, [r4, 0x32] -_0812CC12: - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0812CC20 - adds r0, r4, 0 - bl DestroyAnimSprite -_0812CC20: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_812CBB4 - - thumb_func_start sub_812CC28 -sub_812CC28: @ 812CC28 - push {lr} - ldrb r2, [r0, 0x1] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0, 0x1] - movs r1, 0xFF - strh r1, [r0, 0x34] - bl sub_812CAFC - pop {r0} - bx r0 - thumb_func_end sub_812CC28 - - thumb_func_start sub_812CC44 -sub_812CC44: @ 812CC44 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _0812CC7A - ldr r1, _0812CC88 @ =REG_WININ - ldr r2, _0812CC8C @ =0x00001f3f - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _0812CC90 @ =gBattle_WIN1H - ldr r2, _0812CC94 @ =0x000098f0 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _0812CC98 @ =gBattle_WIN1V - movs r0, 0xA0 - strh r0, [r1] - ldr r1, _0812CC9C @ =REG_WIN1H - ldr r0, _0812CCA0 @ =gBattle_WIN0H - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x4 - ldr r0, _0812CCA4 @ =gBattle_WIN0V - ldrh r0, [r0] - strh r0, [r1] -_0812CC7A: - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812CC88: .4byte REG_WININ -_0812CC8C: .4byte 0x00001f3f -_0812CC90: .4byte gBattle_WIN1H -_0812CC94: .4byte 0x000098f0 -_0812CC98: .4byte gBattle_WIN1V -_0812CC9C: .4byte REG_WIN1H -_0812CCA0: .4byte gBattle_WIN0H -_0812CCA4: .4byte gBattle_WIN0V - thumb_func_end sub_812CC44 - - thumb_func_start sub_812CCA8 -sub_812CCA8: @ 812CCA8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _0812CCCA - ldr r1, _0812CCD8 @ =REG_WININ - ldr r2, _0812CCDC @ =0x00003f3f - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0812CCE0 @ =gBattle_WIN1H - movs r1, 0 - strh r1, [r0] - ldr r0, _0812CCE4 @ =gBattle_WIN1V - strh r1, [r0] -_0812CCCA: - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812CCD8: .4byte REG_WININ -_0812CCDC: .4byte 0x00003f3f -_0812CCE0: .4byte gBattle_WIN1H -_0812CCE4: .4byte gBattle_WIN1V - thumb_func_end sub_812CCA8 - - thumb_func_start sub_812CCE8 -sub_812CCE8: @ 812CCE8 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _0812CCFC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _0812CD04 - ldr r4, _0812CD00 @ =gAnimBankAttacker - b _0812CD06 - .align 2, 0 -_0812CCFC: .4byte gBattleAnimArgs -_0812CD00: .4byte gAnimBankAttacker -_0812CD04: - ldr r4, _0812CD58 @ =gAnimBankTarget -_0812CD06: - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x2] - adds r0, r6 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r2, _0812CD5C @ =gBattleAnimArgs - ldrh r0, [r2, 0x4] - strh r0, [r5, 0x26] - movs r3, 0 - lsls r0, 16 - asrs r0, 16 - ldrh r4, [r2, 0x6] - movs r6, 0x6 - ldrsh r1, [r2, r6] - cmp r0, r1 - ble _0812CD3E - movs r3, 0x1 -_0812CD3E: - strh r3, [r5, 0x2E] - movs r0, 0 - strh r0, [r5, 0x30] - ldrh r0, [r2, 0x8] - strh r0, [r5, 0x32] - ldrh r0, [r2, 0xA] - strh r0, [r5, 0x34] - strh r4, [r5, 0x36] - ldr r0, _0812CD60 @ =sub_812CD64 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812CD58: .4byte gAnimBankTarget -_0812CD5C: .4byte gBattleAnimArgs -_0812CD60: .4byte sub_812CD64 - thumb_func_end sub_812CCE8 - - thumb_func_start sub_812CD64 -sub_812CD64: @ 812CD64 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x32] - ldrh r1, [r2, 0x30] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r2, 0x30] - ldr r1, _0812CDAC @ =gSineTable - movs r3, 0x30 - ldrsh r0, [r2, r3] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 20 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x34] - ldrh r3, [r2, 0x26] - adds r1, r0, r3 - strh r1, [r2, 0x26] - movs r3, 0x2E - ldrsh r0, [r2, r3] - cmp r0, 0 - beq _0812CDB0 - lsls r0, r1, 16 - asrs r0, 16 - movs r3, 0x36 - ldrsh r1, [r2, r3] - cmp r0, r1 - bge _0812CDC2 - adds r0, r2, 0 - bl DestroyAnimSprite - b _0812CDC2 - .align 2, 0 -_0812CDAC: .4byte gSineTable -_0812CDB0: - lsls r0, r1, 16 - asrs r0, 16 - movs r3, 0x36 - ldrsh r1, [r2, r3] - cmp r0, r1 - ble _0812CDC2 - adds r0, r2, 0 - bl DestroyAnimSprite -_0812CDC2: - pop {r0} - bx r0 - thumb_func_end sub_812CD64 - - thumb_func_start sub_812CDC8 -sub_812CDC8: @ 812CDC8 - push {r4-r7,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0812CDE8 @ =gTasks - adds r5, r1, r0 - ldr r0, _0812CDEC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0812CDF4 - ldr r4, _0812CDF0 @ =gAnimBankAttacker - b _0812CDF6 - .align 2, 0 -_0812CDE8: .4byte gTasks -_0812CDEC: .4byte gBattleAnimArgs -_0812CDF0: .4byte gAnimBankAttacker -_0812CDF4: - ldr r4, _0812CE3C @ =gAnimBankTarget -_0812CDF6: - ldrb r0, [r4] - bl sub_8077FC0 - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - bl GetBattlerPosition_permutated - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r6, 0 - adds r1, r0, 0 - adds r1, 0x24 - movs r2, 0 - strh r1, [r5, 0x8] - strh r1, [r5, 0xA] - subs r0, 0x21 - strh r0, [r5, 0xC] - cmp r0, 0 - bge _0812CE20 - strh r2, [r5, 0xC] -_0812CE20: - ldrh r0, [r5, 0x8] - strh r0, [r5, 0xE] - movs r0, 0x8 - strh r0, [r5, 0x10] - ldr r1, _0812CE40 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - strh r0, [r5, 0x12] - strh r2, [r5, 0x14] - strh r2, [r5, 0x16] - cmp r7, 0x1 - bne _0812CE48 - ldr r0, _0812CE44 @ =gBattle_BG1_X - b _0812CE4A - .align 2, 0 -_0812CE3C: .4byte gAnimBankTarget -_0812CE40: .4byte gBattleAnimArgs -_0812CE44: .4byte gBattle_BG1_X -_0812CE48: - ldr r0, _0812CE68 @ =gBattle_BG2_X -_0812CE4A: - ldrh r2, [r0] - strh r2, [r5, 0x18] - adds r3, r2, 0 - adds r3, 0xF0 - strh r3, [r5, 0x1A] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x1C] - movs r4, 0x4 - ldrsh r0, [r1, r4] - cmp r0, 0 - bne _0812CE6C - strh r3, [r5, 0x1E] - ldrh r3, [r5, 0x18] - b _0812CE70 - .align 2, 0 -_0812CE68: .4byte gBattle_BG2_X -_0812CE6C: - strh r2, [r5, 0x1E] - ldrh r3, [r5, 0x1A] -_0812CE70: - movs r0, 0 - strh r0, [r5, 0x26] - ldrh r1, [r5, 0xC] - lsls r2, r1, 16 - asrs r1, r2, 16 - movs r6, 0xE - ldrsh r0, [r5, r6] - cmp r1, r0 - bgt _0812CEA6 - ldr r4, _0812CEB0 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r0, r4 - mov r12, r0 -_0812CE8C: - asrs r2, 16 - lsls r1, r2, 1 - adds r0, r1, r4 - strh r3, [r0] - add r1, r12 - strh r3, [r1] - adds r2, 0x1 - lsls r2, 16 - asrs r1, r2, 16 - movs r6, 0xE - ldrsh r0, [r5, r6] - cmp r1, r0 - ble _0812CE8C -_0812CEA6: - cmp r7, 0x1 - bne _0812CEB8 - ldr r0, _0812CEB4 @ =REG_BG1HOFS - b _0812CEBA - .align 2, 0 -_0812CEB0: .4byte gScanlineEffectRegBuffers -_0812CEB4: .4byte REG_BG1HOFS -_0812CEB8: - ldr r0, _0812CEE4 @ =REG_BG2HOFS -_0812CEBA: - str r0, [sp] - ldr r0, _0812CEE8 @ =0xa2600001 - str r0, [sp, 0x4] - mov r1, sp - movs r2, 0 - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - strb r2, [r0, 0x9] - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl ScanlineEffect_SetParams - ldr r0, _0812CEEC @ =sub_812CEF0 - str r0, [r5] - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812CEE4: .4byte REG_BG2HOFS -_0812CEE8: .4byte 0xa2600001 -_0812CEEC: .4byte sub_812CEF0 - thumb_func_end sub_812CDC8 - - thumb_func_start sub_812CEF0 -sub_812CEF0: @ 812CEF0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - ldr r1, _0812CF40 @ =gTasks - adds r4, r0, r1 - ldrh r0, [r4, 0x8] - ldrh r1, [r4, 0x12] - subs r0, r1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r4, 0xC] - movs r3, 0xC - ldrsh r1, [r4, r3] - cmp r0, r1 - bge _0812CF18 - strh r2, [r4, 0x8] -_0812CF18: - ldrh r1, [r4, 0x10] - movs r2, 0x10 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _0812CF44 - ldrh r0, [r4, 0xA] - ldrh r1, [r4, 0x12] - subs r0, r1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r4, 0xC] - movs r3, 0xC - ldrsh r1, [r4, r3] - cmp r0, r1 - bge _0812CF48 - strh r2, [r4, 0xA] - movs r0, 0x1 - strh r0, [r4, 0x26] - b _0812CF48 - .align 2, 0 -_0812CF40: .4byte gTasks -_0812CF44: - subs r0, r1, 0x1 - strh r0, [r4, 0x10] -_0812CF48: - ldrh r0, [r4, 0x14] - adds r0, 0x1 - strh r0, [r4, 0x14] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _0812CF74 - movs r0, 0 - strh r0, [r4, 0x14] - movs r1, 0 - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _0812CF66 - movs r1, 0x1 -_0812CF66: - strh r1, [r4, 0x16] - cmp r1, 0 - beq _0812CF70 - ldrh r0, [r4, 0x18] - b _0812CF72 -_0812CF70: - ldrh r0, [r4, 0x1A] -_0812CF72: - strh r0, [r4, 0x20] -_0812CF74: - ldrh r1, [r4, 0x8] - lsls r3, r1, 16 - asrs r1, r3, 16 - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r1, r0 - bge _0812CFA8 - ldr r5, _0812D000 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r6, r5, r0 -_0812CF8A: - asrs r3, 16 - lsls r1, r3, 1 - adds r2, r1, r5 - ldrh r0, [r4, 0x20] - strh r0, [r2] - adds r1, r6 - ldrh r0, [r4, 0x20] - strh r0, [r1] - adds r3, 0x1 - lsls r3, 16 - asrs r1, r3, 16 - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r1, r0 - blt _0812CF8A -_0812CFA8: - ldrh r1, [r4, 0xA] - lsls r3, r1, 16 - asrs r1, r3, 16 - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r1, r0 - bgt _0812CFDC - ldr r5, _0812D000 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r6, r5, r0 -_0812CFBE: - asrs r3, 16 - lsls r1, r3, 1 - adds r2, r1, r5 - ldrh r0, [r4, 0x1E] - strh r0, [r2] - adds r1, r6 - ldrh r0, [r4, 0x1E] - strh r0, [r1] - adds r3, 0x1 - lsls r3, 16 - asrs r1, r3, 16 - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r1, r0 - ble _0812CFBE -_0812CFDC: - movs r3, 0x26 - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _0812CFF8 - movs r1, 0x1C - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0812CFF2 - ldr r1, _0812D004 @ =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] -_0812CFF2: - adds r0, r7, 0 - bl DestroyAnimVisualTask -_0812CFF8: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812D000: .4byte gScanlineEffectRegBuffers -_0812D004: .4byte gScanlineEffect - thumb_func_end sub_812CEF0 - - thumb_func_start sub_812D008 -sub_812D008: @ 812D008 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _0812D05C @ =gTasks - adds r4, r0 - movs r5, 0 - strh r5, [r4, 0x8] - strh r5, [r4, 0xA] - ldr r6, _0812D060 @ =gAnimBankAttacker - ldrb r0, [r6] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0xC] - ldrb r0, [r6] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0xE] - movs r0, 0x20 - strh r0, [r4, 0x10] - ldr r0, _0812D064 @ =0x0000ffec - strh r0, [r4, 0x12] - strh r5, [r4, 0x14] - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _0812D068 @ =sub_812D06C - str r0, [r4] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812D05C: .4byte gTasks -_0812D060: .4byte gAnimBankAttacker -_0812D064: .4byte 0x0000ffec -_0812D068: .4byte sub_812D06C - thumb_func_end sub_812D008 - - thumb_func_start sub_812D06C -sub_812D06C: @ 812D06C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _0812D098 @ =gTasks - adds r6, r0, r1 - movs r1, 0x8 - ldrsh r0, [r6, r1] - cmp r0, 0x5 - bls _0812D08C - b _0812D246 -_0812D08C: - lsls r0, 2 - ldr r1, _0812D09C @ =_0812D0A0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0812D098: .4byte gTasks -_0812D09C: .4byte _0812D0A0 - .align 2, 0 -_0812D0A0: - .4byte _0812D0B8 - .4byte _0812D178 - .4byte _0812D1A6 - .4byte _0812D1BA - .4byte _0812D1D0 - .4byte _0812D238 -_0812D0B8: - movs r0, 0xC - ldrsh r2, [r6, r0] - ldrh r1, [r6, 0xA] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0812D0CE - movs r1, 0x10 - ldrsh r0, [r6, r1] - subs r0, r2, r0 - b _0812D0D4 -_0812D0CE: - movs r1, 0x10 - ldrsh r0, [r6, r1] - adds r0, r2, r0 -_0812D0D4: - lsls r0, 16 - lsrs r1, r0, 16 - ldrh r2, [r6, 0x12] - ldrh r0, [r6, 0xE] - adds r2, r0 - ldr r0, _0812D168 @ =gBattleAnimSpriteTemplate_83D7220 - lsls r1, 16 - asrs r1, 16 - lsls r2, 16 - asrs r2, 16 - ldrb r4, [r6, 0xA] - movs r3, 0x6 - subs r3, r4 - lsls r3, 24 - lsrs r3, 24 - bl CreateSprite - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x40 - negs r0, r0 - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xBA - bl PlaySE12WithPanning - cmp r4, 0x40 - beq _0812D138 - ldr r5, _0812D16C @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r3, r1, r5 - ldrh r0, [r6, 0xA] - movs r2, 0x1 - ands r2, r0 - adds r3, 0x3F - ldrb r4, [r3] - movs r0, 0x2 - negs r0, r0 - ands r0, r4 - orrs r0, r2 - strb r0, [r3] - adds r5, 0x1C - adds r1, r5 - ldr r0, _0812D170 @ =SpriteCallbackDummy - str r0, [r1] -_0812D138: - ldrh r1, [r6, 0xA] - movs r4, 0x1 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _0812D150 - ldrh r0, [r6, 0x10] - subs r0, 0x6 - strh r0, [r6, 0x10] - ldrh r0, [r6, 0x12] - subs r0, 0x6 - strh r0, [r6, 0x12] -_0812D150: - ldrh r1, [r6, 0x26] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _0812D174 @ =gUnknown_08402400 - adds r0, r6, 0 - bl sub_80798F4 - ldrh r0, [r6, 0xA] - adds r0, 0x1 - strh r0, [r6, 0xA] - strh r4, [r6, 0x8] - b _0812D246 - .align 2, 0 -_0812D168: .4byte gBattleAnimSpriteTemplate_83D7220 -_0812D16C: .4byte gSprites -_0812D170: .4byte SpriteCallbackDummy -_0812D174: .4byte gUnknown_08402400 -_0812D178: - adds r0, r6, 0 - bl sub_807992C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0812D246 - movs r2, 0xA - ldrsh r1, [r6, r2] - cmp r1, 0x6 - bne _0812D198 - movs r0, 0x8 - strh r0, [r6, 0x14] - movs r0, 0x3 - strh r0, [r6, 0x8] - b _0812D246 -_0812D198: - cmp r1, 0x2 - bgt _0812D19E - movs r0, 0xA -_0812D19E: - strh r0, [r6, 0x14] - movs r0, 0x2 - strh r0, [r6, 0x8] - b _0812D246 -_0812D1A6: - ldrh r0, [r6, 0x14] - movs r2, 0x14 - ldrsh r1, [r6, r2] - cmp r1, 0 - beq _0812D1B6 - subs r0, 0x1 - strh r0, [r6, 0x14] - b _0812D246 -_0812D1B6: - strh r1, [r6, 0x8] - b _0812D246 -_0812D1BA: - ldrh r1, [r6, 0x14] - movs r2, 0x14 - ldrsh r0, [r6, r2] - cmp r0, 0 - beq _0812D1CA - subs r0, r1, 0x1 - strh r0, [r6, 0x14] - b _0812D246 -_0812D1CA: - movs r0, 0x4 - strh r0, [r6, 0x8] - b _0812D246 -_0812D1D0: - movs r5, 0 - movs r7, 0 - ldr r3, _0812D22C @ =gSprites - movs r0, 0x1C - adds r0, r3 - mov r8, r0 -_0812D1DC: - lsls r0, r5, 4 - adds r0, r5 - lsls r4, r0, 2 - adds r0, r3, 0 - adds r0, 0x14 - adds r0, r4, r0 - ldr r1, [r0] - ldr r0, _0812D230 @ =gBattleAnimSpriteTemplate_83D7220 - cmp r1, r0 - bne _0812D218 - adds r0, r4, r3 - strh r2, [r0, 0x2E] - movs r1, 0x6 - strh r1, [r0, 0x30] - movs r1, 0x2 - str r2, [sp] - str r3, [sp, 0x4] - bl StartSpriteAnim - mov r0, r8 - adds r1, r4, r0 - ldr r0, _0812D234 @ =sub_812D254 - str r0, [r1] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - ldr r2, [sp] - ldr r3, [sp, 0x4] - cmp r7, 0x6 - beq _0812D222 -_0812D218: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3F - bls _0812D1DC -_0812D222: - strh r7, [r6, 0x14] - movs r0, 0x5 - strh r0, [r6, 0x8] - b _0812D246 - .align 2, 0 -_0812D22C: .4byte gSprites -_0812D230: .4byte gBattleAnimSpriteTemplate_83D7220 -_0812D234: .4byte sub_812D254 -_0812D238: - movs r1, 0x14 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _0812D246 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_0812D246: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_812D06C - - thumb_func_start sub_812D254 -sub_812D254: @ 812D254 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0812D288 - ldr r3, _0812D290 @ =gTasks - movs r0, 0x30 - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x2E - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_0812D288: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812D290: .4byte gTasks - thumb_func_end sub_812D254 - - thumb_func_start sub_812D294 -sub_812D294: @ 812D294 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0812D2A8 - adds r0, r5, 0 - movs r1, 0 - bl InitAnimSpritePos -_0812D2A8: - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x27 - bgt _0812D2DA - ldrh r0, [r5, 0x2E] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0812D2CC - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - b _0812D2D8 -_0812D2CC: - adds r2, r5, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 -_0812D2D8: - strb r0, [r2] -_0812D2DA: - movs r2, 0x2E - ldrsh r0, [r5, r2] - cmp r0, 0x1E - ble _0812D2F0 - adds r2, r5, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_0812D2F0: - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x3D - bne _0812D33C - ldr r1, _0812D344 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData - ldrh r0, [r5, 0x24] - ldrh r2, [r5, 0x20] - adds r0, r2 - movs r1, 0 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x26] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - strh r1, [r5, 0x24] - strh r1, [r5, 0x26] - movs r0, 0x14 - strh r0, [r5, 0x2E] - ldr r4, _0812D348 @ =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] - ldr r0, _0812D34C @ =StartTranslateAnimSpriteByDeltas - str r0, [r5, 0x1C] -_0812D33C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812D344: .4byte DestroyAnimSprite -_0812D348: .4byte gAnimBankTarget -_0812D34C: .4byte StartTranslateAnimSpriteByDeltas - thumb_func_end sub_812D294 - - thumb_func_start sub_812D350 -sub_812D350: @ 812D350 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _0812D370 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0812D374 - cmp r0, 0x1 - beq _0812D394 - b _0812D3A6 - .align 2, 0 -_0812D370: .4byte gTasks -_0812D374: - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _0812D390 @ =gUnknown_084024B0 - adds r0, r4, 0 - bl sub_80798F4 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0812D3A6 - .align 2, 0 -_0812D390: .4byte gUnknown_084024B0 -_0812D394: - adds r0, r4, 0 - bl sub_807992C - lsls r0, 24 - cmp r0, 0 - bne _0812D3A6 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_0812D3A6: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_812D350 - - thumb_func_start sub_812D3AC -sub_812D3AC: @ 812D3AC - push {r4-r6,lr} - adds r5, r0, 0 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r6, r0, 24 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _0812D40C - cmp r0, 0x1 - bgt _0812D3CC - cmp r0, 0 - beq _0812D3D6 - b _0812D4AE -_0812D3CC: - cmp r0, 0x2 - beq _0812D43C - cmp r0, 0x3 - beq _0812D490 - b _0812D4AE -_0812D3D6: - ldr r4, _0812D408 @ =gAnimBankAttacker - 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 - lsrs r0, 24 - strh r0, [r5, 0x22] - adds r0, r6, 0 - movs r1, 0 - bl sub_8078E70 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r5, 0x30] - strh r0, [r5, 0x32] - b _0812D484 - .align 2, 0 -_0812D408: .4byte gAnimBankAttacker -_0812D40C: - ldrh r0, [r5, 0x30] - adds r0, 0x60 - strh r0, [r5, 0x30] - ldrh r0, [r5, 0x32] - subs r0, 0x1A - strh r0, [r5, 0x32] - movs r2, 0x30 - ldrsh r1, [r5, r2] - movs r0, 0x32 - ldrsh r2, [r5, r0] - adds r0, r6, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _0812D43C - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] -_0812D43C: - ldrh r0, [r5, 0x30] - adds r0, 0x60 - strh r0, [r5, 0x30] - ldrh r0, [r5, 0x32] - adds r0, 0x30 - strh r0, [r5, 0x32] - movs r2, 0x30 - ldrsh r1, [r5, r2] - movs r0, 0x32 - ldrsh r2, [r5, r0] - adds r0, r6, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bne _0812D4AE - movs r0, 0 - strh r0, [r5, 0x34] - ldr r1, _0812D48C @ =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - adds r0, r6, 0 - bl sub_8078F40 -_0812D484: - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _0812D4AE - .align 2, 0 -_0812D48C: .4byte gSprites -_0812D490: - ldrh r0, [r5, 0x26] - subs r0, 0x6 - strh r0, [r5, 0x26] - movs r1, 0x22 - ldrsh r0, [r5, r1] - movs r2, 0x26 - ldrsh r1, [r5, r2] - adds r0, r1 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - bge _0812D4AE - adds r0, r5, 0 - bl DestroyAnimSprite -_0812D4AE: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_812D3AC - - thumb_func_start sub_812D4B4 -sub_812D4B4: @ 812D4B4 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _0812D4CC @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0812D4D4 - ldr r0, _0812D4D0 @ =0x0000fff0 - b _0812D4D8 - .align 2, 0 -_0812D4CC: .4byte gAnimBankAttacker -_0812D4D0: .4byte 0x0000fff0 -_0812D4D4: - movs r0, 0x80 - lsls r0, 1 -_0812D4D8: - strh r0, [r4, 0x20] - movs r0, 0 - strh r0, [r4, 0x22] - ldr r0, _0812D4E8 @ =sub_812D4EC - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812D4E8: .4byte sub_812D4EC - thumb_func_end sub_812D4B4 - - thumb_func_start sub_812D4EC -sub_812D4EC: @ 812D4EC - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x48 - strh r0, [r4, 0x2E] - ldr r0, _0812D50C @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0812D510 - ldrh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 20 - b _0812D518 - .align 2, 0 -_0812D50C: .4byte gAnimBankAttacker -_0812D510: - ldrh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 20 - negs r0, r0 -_0812D518: - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r0, 0x10 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r4, 0x26] - adds r5, r0, r1 - strh r5, [r4, 0x26] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x3 - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _0812D564 - ldr r0, _0812D584 @ =gSpriteTemplate_8402500 - ldrh r1, [r4, 0x24] - ldrh r2, [r4, 0x20] - adds r1, r2 - lsls r1, 16 - asrs r1, 16 - ldrh r2, [r4, 0x22] - adds r2, r5 - lsls r2, 16 - asrs r2, 16 - adds r3, r4, 0 - adds r3, 0x43 - ldrb r3, [r3] - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - bl CreateSpriteAndAnimate -_0812D564: - 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 - bls _0812D57E - adds r0, r4, 0 - bl DestroyAnimSprite -_0812D57E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812D584: .4byte gSpriteTemplate_8402500 - thumb_func_end sub_812D4EC - - thumb_func_start sub_812D588 -sub_812D588: @ 812D588 - push {r4,lr} - adds r4, r0, 0 - bl Random - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _0812D5A2 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x4 - b _0812D5AA -_0812D5A2: - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x5 -_0812D5AA: - ldr r3, _0812D5DC @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _0812D5E0 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - bl Random - movs r1, 0x7 - ands r0, r1 - adds r1, r0, 0 - cmp r1, 0x3 - ble _0812D5CC - negs r0, r1 - lsls r0, 24 - lsrs r0, 24 -_0812D5CC: - lsls r0, 24 - asrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _0812D5E4 @ =sub_812D5E8 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812D5DC: .4byte 0x000003ff -_0812D5E0: .4byte 0xfffffc00 -_0812D5E4: .4byte sub_812D5E8 - thumb_func_end sub_812D588 - - thumb_func_start sub_812D5E8 -sub_812D5E8: @ 812D5E8 - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1D - bgt _0812D62A - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _0812D65E - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - movs r0, 0 - b _0812D65C -_0812D62A: - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0x2 - bne _0812D640 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_0812D640: - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0x3 - bne _0812D658 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _0812D670 @ =0x0000ffff - strh r0, [r3, 0x30] -_0812D658: - ldrh r0, [r3, 0x30] - adds r0, 0x1 -_0812D65C: - strh r0, [r3, 0x30] -_0812D65E: - movs r1, 0x2E - ldrsh r0, [r3, r1] - cmp r0, 0x3C - ble _0812D66C - adds r0, r3, 0 - bl DestroySprite -_0812D66C: - pop {r0} - bx r0 - .align 2, 0 -_0812D670: .4byte 0x0000ffff - thumb_func_end sub_812D5E8 - - thumb_func_start sub_812D674 -sub_812D674: @ 812D674 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _0812D6AC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0812D6B4 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _0812D6B0 @ =gUnknown_08402518 - adds r0, r4, 0 - bl sub_80798F4 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0812D6C6 - .align 2, 0 -_0812D6AC: .4byte gTasks -_0812D6B0: .4byte gUnknown_08402518 -_0812D6B4: - adds r0, r4, 0 - bl sub_807992C - lsls r0, 24 - cmp r0, 0 - bne _0812D6C6 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_0812D6C6: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_812D674 - - thumb_func_start sub_812D6CC -sub_812D6CC: @ 812D6CC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _0812D704 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0812D70C - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _0812D708 @ =gUnknown_08402540 - adds r0, r4, 0 - bl sub_80798F4 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0812D71E - .align 2, 0 -_0812D704: .4byte gTasks -_0812D708: .4byte gUnknown_08402540 -_0812D70C: - adds r0, r4, 0 - bl sub_807992C - lsls r0, 24 - cmp r0, 0 - bne _0812D71E - adds r0, r5, 0 - bl DestroyAnimVisualTask -_0812D71E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_812D6CC - - thumb_func_start sub_812D724 -sub_812D724: @ 812D724 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0812D736 - cmp r0, 0x1 - beq _0812D760 - b _0812D788 -_0812D736: - adds r0, r4, 0 - movs r1, 0 - bl InitAnimSpritePos - movs r0, 0x90 - lsls r0, 4 - strh r0, [r4, 0x30] - ldr r0, _0812D75C @ =gAnimBankAttacker - ldrb r0, [r0] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _0812D788 - .align 2, 0 -_0812D75C: .4byte gAnimBankAttacker -_0812D760: - ldrh r2, [r4, 0x30] - lsls r1, r2, 16 - asrs r1, 24 - ldrh r0, [r4, 0x26] - subs r0, r1 - strh r0, [r4, 0x26] - subs r2, 0x60 - strh r2, [r4, 0x30] - movs r2, 0x22 - ldrsh r0, [r4, r2] - movs r2, 0x26 - ldrsh r1, [r4, r2] - adds r0, r1 - movs r2, 0x32 - ldrsh r1, [r4, r2] - cmp r0, r1 - ble _0812D788 - adds r0, r4, 0 - bl DestroyAnimSprite -_0812D788: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_812D724 - - thumb_func_start sub_812D790 -sub_812D790: @ 812D790 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _0812D7C8 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0812D7D0 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _0812D7CC @ =gUnknown_08402590 - adds r0, r4, 0 - bl sub_80798F4 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0812D7E2 - .align 2, 0 -_0812D7C8: .4byte gTasks -_0812D7CC: .4byte gUnknown_08402590 -_0812D7D0: - adds r0, r4, 0 - bl sub_807992C - lsls r0, 24 - cmp r0, 0 - bne _0812D7E2 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_0812D7E2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_812D790 thumb_func_start sub_812D7E8 sub_812D7E8: @ 812D7E8 diff --git a/ld_script.txt b/ld_script.txt index 52f66c537..869e61e5b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -354,6 +354,7 @@ SECTIONS { src/battle/anim/sfx.o(.text); src/battle/battle_controller_safari.o(.text); src/fldeff_sweetscent.o(.text); + src/battle/battle_anim_812C144.o(.text); asm/battle_anim_812C144.o(.text); src/learn_move.o(.text); src/fldeff_softboiled.o(.text); diff --git a/src/battle/anim/rock.c b/src/battle/anim/rock.c index 595df3168..4e839d3e8 100644 --- a/src/battle/anim/rock.c +++ b/src/battle/anim/rock.c @@ -12,7 +12,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern u32 gAnimMoveDmg; +extern s32 gAnimMoveDmg; extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG3_Y; @@ -833,11 +833,11 @@ static void sub_80DD9FC(struct Sprite *sprite) void sub_80DDA4C(u8 taskId) { - if ((s32)gAnimMoveDmg < 33) + if (gAnimMoveDmg < 33) gBattleAnimArgs[7] = 0; - if (gAnimMoveDmg - 33 < 33) + if ((u32)gAnimMoveDmg - 33 < 33) gBattleAnimArgs[7] = 1; - if ((s32)gAnimMoveDmg > 65) + if (gAnimMoveDmg > 65) gBattleAnimArgs[7] = 2; DestroyAnimVisualTask(taskId); diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index 2f57bcd97..f3b0056ac 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -1299,7 +1299,7 @@ EWRAM_DATA u8 gAnimScriptActive = FALSE; EWRAM_DATA u8 gAnimVisualTaskCount = 0; EWRAM_DATA u8 gAnimSoundTaskCount = 0; EWRAM_DATA struct DisableStruct *gAnimDisableStructPtr = NULL; -EWRAM_DATA u32 gAnimMoveDmg = 0; +EWRAM_DATA s32 gAnimMoveDmg = 0; EWRAM_DATA u16 gAnimMovePower = 0; EWRAM_DATA u8 gAnimFriendship = 0; EWRAM_DATA u16 gWeatherMoveAnim = 0; diff --git a/src/battle/battle_anim_812C144.c b/src/battle/battle_anim_812C144.c new file mode 100755 index 000000000..601e3c6df --- /dev/null +++ b/src/battle/battle_anim_812C144.c @@ -0,0 +1,1126 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "palette.h" +#include "random.h" +#include "rom_8077ABC.h" +#include "scanline_effect.h" +#include "sound.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; +extern u8 gAnimVisualTaskCount; +extern s32 gAnimMoveDmg; +extern u16 gBattle_WIN0H; +extern u16 gBattle_WIN0V; +extern u16 gBattle_WIN1H; +extern u16 gBattle_WIN1V; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG2_X; + +extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7220; +extern const struct SpriteTemplate gSpriteTemplate_8402500; +extern const union AffineAnimCmd gUnknown_08402400[]; +extern const union AffineAnimCmd gUnknown_084024B0[]; +extern const union AffineAnimCmd gUnknown_08402518[]; +extern const union AffineAnimCmd gUnknown_08402540[]; +extern const union AffineAnimCmd gUnknown_08402590[]; + +extern u8 sub_8046234(s16 x, s16 y, u8 a3); + +static void sub_812C184(struct Sprite *sprite); +static void sub_812C268(struct Sprite *sprite); +static void sub_812C2A4(struct Sprite *sprite); +static void sub_812C380(struct Sprite *sprite); +static void sub_812C40C(struct Sprite *sprite); +static void sub_812C450(struct Sprite *sprite); +static void sub_812C4FC(struct Sprite *sprite); +static void sub_812C588(u8 taskId); +static void sub_812C64C(u8 taskId); +static void sub_812C798(struct Sprite *sprite); +static void sub_812C7C8(struct Sprite *sprite); +static void sub_812CA04(struct Sprite *sprite); +static void sub_812CAD0(struct Sprite *sprite); +static void sub_812CBB4(struct Sprite *sprite); +static void sub_812CD64(struct Sprite *sprite); +static void sub_812CEF0(u8 taskId); +static void sub_812D06C(u8 taskId); +static void sub_812D254(struct Sprite *sprite); +static void sub_812D4EC(struct Sprite *sprite); +static void sub_812D5E8(struct Sprite *sprite); + + +void sub_812C144(struct Sprite *sprite) +{ + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + + if (gBattleAnimArgs[3] == 0) + sprite->data[0] = gBattleAnimArgs[2]; + else + sprite->data[0] = -gBattleAnimArgs[2]; + + sprite->data[1] = gBattleAnimArgs[4]; + sprite->callback = sub_812C184; +} + +static void sub_812C184(struct Sprite *sprite) +{ + if (sprite->data[1] > 0) + { + sprite->pos2.x = sprite->data[2] >> 8; + sprite->data[2] += sprite->data[0]; + sprite->invisible ^= 1; + sprite->data[1]--; + } + else + { + DestroyAnimSprite(sprite); + } +} + +void sub_812C1D0(u8 taskId) +{ + sub_8046234( + GetBattlerSpriteCoord(gAnimBankTarget, 2) + 8, + GetBattlerSpriteCoord(gAnimBankTarget, 3) + 8, + 0); + DestroyAnimVisualTask(taskId); + +} + +void sub_812C220(struct Sprite *sprite) +{ + sprite->data[0] = 90; + sprite->callback = WaitAnimForDuration; + sprite->data[1] = 7; + StoreSpriteCallbackInData(sprite, sub_812C268); + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = ((16 - sprite->data[1]) << 8) | sprite->data[1]; +} + +static void sub_812C268(struct Sprite *sprite) +{ + REG_BLDALPHA = ((16 - sprite->data[1]) << 8) | sprite->data[1]; + if (--sprite->data[1] < 0) + { + sprite->invisible = 1; + sprite->callback = sub_812C2A4; + } +} + +static void sub_812C2A4(struct Sprite *sprite) +{ + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + DestroyAnimSprite(sprite); +} + +void sub_812C2BC(struct Sprite *sprite) +{ + u16 rotation; + u8 x = GetBattlerSpriteCoord(gAnimBankTarget, 2); + u8 y = GetBattlerSpriteCoord(gAnimBankTarget, 3); + + sub_8078764(sprite, 1); + + rotation = ArcTan2Neg(sprite->pos1.x - x, sprite->pos1.y - y); + rotation += 0x6000; + if (IsContest()) + rotation += 0x4000; + + sub_8078FDC(sprite, 0, 0x100, 0x100, rotation); + + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = x; + sprite->data[4] = y; + sprite->callback = StartTranslateAnimSpriteByDeltas; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} + +void sub_812C358(struct Sprite *sprite) +{ + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = 0x1000; + sprite->data[0] = 4; + sprite->callback = sub_812C380; +} + +static void sub_812C380(struct Sprite *sprite) +{ + REG_BLDALPHA = ((16 - sprite->data[0]) << 8) | sprite->data[0]; + + if (sprite->data[1]) + sprite->data[0]--; + else + sprite->data[0]++; + + if (sprite->data[0] == 15 || sprite->data[0] == 4) + sprite->data[1] ^= 1; + + if (sprite->data[2]++ > 70) + { + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + StartSpriteAffineAnim(sprite, 1); + sprite->data[2] = 0; + sprite->invisible = 1; + sprite->affineAnimPaused = 1; + sprite->callback = sub_812C40C; + } +} + +static void sub_812C40C(struct Sprite *sprite) +{ + if (sprite->data[2]++ > 9) + { + sprite->invisible = 0; + sprite->affineAnimPaused = 0; + if (sprite->affineAnimEnded) + sprite->callback = sub_812C450; + } +} + +static void sub_812C450(struct Sprite *sprite) +{ + switch (sprite->data[3]) + { + case 0: + case 1: + sprite->pos2.x = 1; + sprite->pos2.y = 0; + break; + case 2: + case 3: + sprite->pos2.x = -1; + sprite->pos2.y = 0; + break; + case 4: + case 5: + sprite->pos2.x = 0; + sprite->pos2.y = 1; + break; + case 6: + default: + sprite->pos2.x = 0; + sprite->pos2.y = -1; + break; + } + + if (++sprite->data[3] > 7) + sprite->data[3] = 0; + + if (sprite->data[4]++ > 15) + { + sprite->data[0] = 16; + sprite->data[1] = 0; + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = sprite->data[0]; + sprite->callback = sub_812C4FC; + } +} + +static void sub_812C4FC(struct Sprite *sprite) +{ + REG_BLDALPHA = ((16 - sprite->data[0]) << 8) | sprite->data[0]; + + if (sprite->data[1]++ > 1) + { + sprite->data[0]--; + sprite->data[1] = 0; + } + + if (sprite->data[0] == 0) + sprite->invisible = 1; + + if (sprite->data[0] < 0) + { + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + DestroyAnimSprite(sprite); + } +} + +void sub_812C560(u8 taskId) +{ + gTasks[taskId].func = sub_812C588; + gAnimVisualTaskCount--; +} + +static void sub_812C588(u8 taskId) +{ + int i; + u16 lastColor; + u8 paletteIndex = sub_80789BC(); + + if (++gTasks[taskId].data[5] == 4) + { + lastColor = gPlttBufferFaded[paletteIndex * 16 + 11]; + for (i = 10; i > 0; i--) + gPlttBufferFaded[paletteIndex * 16 + i + 1] = gPlttBufferFaded[paletteIndex * 16 + i]; + + gPlttBufferFaded[paletteIndex * 16 + 1] = lastColor; + gTasks[taskId].data[5] = 0; + } + + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + DestroyTask(taskId); +} + +void sub_812C624(u8 taskId) +{ + gTasks[taskId].func = sub_812C64C; + gAnimVisualTaskCount--; +} + +static void sub_812C64C(u8 taskId) +{ + int i; + u16 lastColor; + u8 paletteIndex = sub_80789BC(); + + if (++gTasks[taskId].data[5] == 4) + { + lastColor = gPlttBufferFaded[paletteIndex * 16 + 11]; + for (i = 10; i > 0; i--) + gPlttBufferFaded[paletteIndex * 16 + i + 1] = gPlttBufferFaded[paletteIndex * 16 + i]; + gPlttBufferFaded[paletteIndex * 16 + 1] = lastColor; + + lastColor = gPlttBufferUnfaded[paletteIndex * 16 + 11]; + for (i = 10; i > 0; i--) + gPlttBufferUnfaded[paletteIndex * 16 + i + 1] = gPlttBufferUnfaded[paletteIndex * 16 + i]; + gPlttBufferUnfaded[paletteIndex * 16 + 1] = lastColor; + + gTasks[taskId].data[5] = 0; + } + + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + DestroyTask(taskId); +} + +void sub_812C720(struct Sprite *sprite) +{ + u16 x; + u16 y; + + InitAnimSpritePos(sprite, 1); + SetAverageBattlerPositions(gAnimBankTarget, 0, &x, &y); + + if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = x + gBattleAnimArgs[2]; + sprite->data[4] = y + gBattleAnimArgs[3]; + sprite->data[5] = -50; + + InitAnimSpriteTranslationOverDuration(sprite); + sprite->callback = sub_812C798; +} + +static void sub_812C798(struct Sprite *sprite) +{ + if (TranslateAnimSpriteLinearAndSine(sprite)) + { + sprite->data[0] = 30; + sprite->data[1] = 0; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData(sprite, sub_812C7C8); + } +} + +static void sub_812C7C8(struct Sprite *sprite) +{ + if (sprite->data[1] & 1) + sprite->invisible ^= 1; + + if (++sprite->data[1] == 16) + DestroyAnimSprite(sprite); +} + +void sub_812C80C(struct Sprite *sprite) +{ + sub_8078650(sprite); + sub_807867C(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->callback = sub_8078600; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} + +// This is likely fakematching due to some strange type casting behavior. +void sub_812C848(struct Sprite *sprite) +{ + int var0; + int var1; + if (sprite->data[0] == 0) + { + sub_8078650(sprite); + sub_807867C(sprite, gBattleAnimArgs[0]); + + if (!IsContest()) + { + if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_PLAYER) + { + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[3]; + } + else + { + var1 = -gBattleAnimArgs[2]; + sprite->data[1] = var1; + var1 = -gBattleAnimArgs[3]; + sprite->data[2] = var1; + } + } + else + { + var1 = -gBattleAnimArgs[2]; + sprite->data[1] = var1; + sprite->data[2] = gBattleAnimArgs[3]; + } + } + + sprite->data[0]++; + var0 = (sprite->data[0] * 20) & 0xFF; + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + sprite->pos2.x = (sprite->data[3] + (s32)((u32)sprite->data[3] >> 31)) >> 1; + sprite->pos2.y = Sin(var0 & 0xFF, 5) + ((s32)(sprite->data[4] + ((u32)sprite->data[4] >> 31)) >> 1); + + if ((u16)(sprite->pos1.x + sprite->pos2.x) > 240) + DestroyAnimSprite(sprite); +} + +void sub_812C908(struct Sprite *sprite) +{ + if (sprite->animEnded) + DestroyAnimSprite(sprite); +} + +void sub_812C924(u8 taskId) +{ + if (GetBattlerSide(gAnimBankTarget) == B_SIDE_OPPONENT) + gBattleAnimArgs[7] = 0; + else + gBattleAnimArgs[7] = 1; + + DestroyAnimVisualTask(taskId); +} + +void sub_812C960(u8 taskId) +{ + if (gAnimMoveDmg > 0) + gBattleAnimArgs[7] = 0; + else + gBattleAnimArgs[7] = 1; + + DestroyAnimVisualTask(taskId); +} + +void sub_812C990(struct Sprite *sprite) +{ + REG_WINOUT = 0x1F3F; + REG_DISPCNT |= DISPCNT_OBJWIN_ON; + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + REG_WIN0H = 0; + REG_WIN0V = 0; + + sub_8078764(sprite, 0); + + sprite->oam.objMode = ST_OAM_OBJ_WINDOW; + sprite->invisible = 1; + sprite->callback = sub_812CA04; +} + +static void sub_812CA04(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->invisible = 0; + if (sprite->affineAnimEnded) + sprite->data[0]++; + break; + case 1: + case 3: + sprite->data[1] += 117; + sprite->pos2.x = sprite->data[1] >> 8; + if (++sprite->data[2] == 21) + { + sprite->data[2] = 0; + sprite->data[0]++; + } + break; + case 2: + sprite->data[1] -= 117; + sprite->pos2.x = sprite->data[1] >> 8; + if (++sprite->data[2] == 41) + { + sprite->data[2] = 0; + sprite->data[0]++; + } + break; + case 4: + ChangeSpriteAffineAnim(sprite, 1); + sprite->data[0]++; + break; + case 5: + if (sprite->affineAnimEnded) + { + sprite->invisible = 1; + sprite->callback = sub_812CAD0; + } + break; + } +} + +static void sub_812CAD0(struct Sprite *sprite) +{ + REG_WINOUT = 0x3F3F; + REG_DISPCNT ^= DISPCNT_OBJWIN_ON; + DestroyAnimSprite(sprite); +} + +void sub_812CAFC(struct Sprite *sprite) +{ + if (gBattleAnimArgs[3] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 0); + sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1); + } + + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->oam.tileNum += 16; + + if (gBattleAnimArgs[2] == 0) + { + sprite->oam.matrixNum = 8; + sprite->pos2.x = -12; + sprite->data[1] = 2; + } + else + { + sprite->pos2.x = 12; + sprite->data[1] = -2; + } + + sprite->data[0] = gBattleAnimArgs[4]; + + if (sprite->data[3] != 255) + sprite->data[3] = gBattleAnimArgs[2]; + + sprite->callback = sub_812CBB4; +} + +static void sub_812CBB4(struct Sprite *sprite) +{ + if (sprite->data[2] == 0) + { + sprite->pos2.x += sprite->data[1]; + if (sprite->pos2.x == 0) + { + sprite->data[2]++; + if (sprite->data[3] == 0) + { + PlaySE1WithPanning(222, BattleAnimAdjustPanning(-64)); + } + } + } + else + { + sprite->pos2.x -= sprite->data[1]; + if (abs(sprite->pos2.x) == 12) + { + sprite->data[0]--; + sprite->data[2]--; + } + + } + + if (sprite->data[0] == 0) + DestroyAnimSprite(sprite); +} + +void sub_812CC28(struct Sprite *sprite) +{ + sprite->oam.objMode = ST_OAM_OBJ_WINDOW; + sprite->data[3] = 255; + sub_812CAFC(sprite); +} + +void sub_812CC44(u8 taskId) +{ + if (IsContest()) + { + REG_WININ = 0x1F3F; + gBattle_WIN1H = 0x98F0; + gBattle_WIN1V = 0x00A0; + REG_WIN1H = gBattle_WIN0H; + REG_WIN1V = gBattle_WIN0V; + } + + DestroyAnimVisualTask(taskId); +} + +void sub_812CCA8(u8 taskId) +{ + if (IsContest()) + { + REG_WININ = 0x3F3F; + gBattle_WIN1H = 0; + gBattle_WIN1V = 0; + } + + DestroyAnimVisualTask(taskId); +} + +void sub_812CCE8(struct Sprite *sprite) +{ + int var0; + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 0) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1); + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 0) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 1); + } + + sprite->pos2.y = gBattleAnimArgs[2]; + var0 = 0; + if (sprite->pos2.y > gBattleAnimArgs[3]) + var0 = 1; + + sprite->data[0] = var0; + sprite->data[1] = 0; + sprite->data[2] = gBattleAnimArgs[4]; + sprite->data[3] = gBattleAnimArgs[5]; + sprite->data[4] = gBattleAnimArgs[3]; + sprite->callback = sub_812CD64; +} + +static void sub_812CD64(struct Sprite *sprite) +{ + sprite->data[1] = (sprite->data[1] + sprite->data[2]) & 0xFF; + sprite->pos2.x = gSineTable[sprite->data[1]] >> 4; + sprite->pos2.y += sprite->data[3]; + + if (sprite->data[0]) + { + if (sprite->pos2.y < sprite->data[4]) + DestroyAnimSprite(sprite); + } + else + { + if (sprite->pos2.y > sprite->data[4]) + DestroyAnimSprite(sprite); + } +} + +void sub_812CDC8(u8 taskId) +{ + s16 var0; + u8 toBG2; + s16 var2; + int var3; + int var4; + s16 i; + struct ScanlineEffectParams scanlineParams; + struct Task *task = &gTasks[taskId]; + + if (gBattleAnimArgs[0] == 0) + { + var0 = sub_8077FC0(gAnimBankAttacker); + toBG2 = GetBattlerPosition_permutated(gAnimBankAttacker); + } + else + { + var0 = sub_8077FC0(gAnimBankTarget); + toBG2 = GetBattlerPosition_permutated(gAnimBankTarget); + } + + task->data[0] = var0 + 36; + task->data[1] = task->data[0]; + task->data[2] = var0 - 33; + if (task->data[2] < 0) + task->data[2] = 0; + + task->data[3] = task->data[0]; + task->data[4] = 8; + task->data[5] = gBattleAnimArgs[1]; + task->data[6] = 0; + task->data[7] = 0; + + if (toBG2 == 1) + { + var3 = gBattle_BG1_X; + task->data[8] = var3; + var4 = var3 + 240; + } + else + { + var3 = gBattle_BG2_X; + task->data[8] = var3; + var4 = var3 + 240; + } + + task->data[9] = var4; + task->data[10] = gBattleAnimArgs[2]; + + if (gBattleAnimArgs[2] == 0) + { + task->data[11] = var4; + var2 = task->data[8]; + } + else + { + task->data[11] = var3; + var2 = task->data[9]; + } + + task->data[15] = 0; + + i = task->data[2]; + while (i <= task->data[3]) + { + gScanlineEffectRegBuffers[0][i] = var2; + gScanlineEffectRegBuffers[1][i] = var2; + i++; + } + + if (toBG2 == 1) + scanlineParams.dmaDest = ®_BG1HOFS; + else + scanlineParams.dmaDest = ®_BG2HOFS; + + scanlineParams.dmaControl = 0xA2600001; + scanlineParams.initState = 1; + scanlineParams.unused9 = 0; + ScanlineEffect_SetParams(scanlineParams); + + task->func = sub_812CEF0; +} + +static void sub_812CEF0(u8 taskId) +{ + s16 i; + struct Task *task = &gTasks[taskId]; + + task->data[0] -= task->data[5]; + if (task->data[0] < task->data[2]) + task->data[0] = task->data[2]; + + if (task->data[4] == 0) + { + task->data[1] -= task->data[5]; + if (task->data[1] < task->data[2]) + { + task->data[1] = task->data[2]; + task->data[15] = 1; + } + } + else + { + task->data[4]--; + } + + if (++task->data[6] > 1) + { + task->data[6] = 0; + task->data[7] = task->data[7] == 0 ? 1 : 0; + + if (task->data[7]) + task->data[12] = task->data[8]; + else + task->data[12] = task->data[9]; + } + + i = task->data[0]; + while (i < task->data[1]) + { + gScanlineEffectRegBuffers[0][i] = task->data[12]; + gScanlineEffectRegBuffers[1][i] = task->data[12]; + i++; + } + + i = task->data[1]; + while (i <= task->data[3]) + { + gScanlineEffectRegBuffers[0][i] = task->data[11]; + gScanlineEffectRegBuffers[1][i] = task->data[11]; + i++; + } + + if (task->data[15]) + { + if (task->data[10]) + gScanlineEffect.state = 3; + + DestroyAnimVisualTask(taskId); + } +} + +void sub_812D008(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = GetBattlerSpriteCoord(gAnimBankAttacker, 2); + task->data[3] = GetBattlerSpriteCoord(gAnimBankAttacker, 3); + task->data[4] = 32; + task->data[5] = -20; + task->data[6] = 0; + task->data[15] = GetAnimBattlerSpriteId(0); + task->func = sub_812D06C; +} + +static void sub_812D06C(u8 taskId) +{ + int var0, var1; + s16 x, y; + u16 i, j; + u8 spriteId; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + var0 = task->data[2]; + if (task->data[1] & 1) + { + var1 = task->data[4]; + x = var0 - var1; + } + else + { + var1 = task->data[4]; + x = var0 + var1; + } + + y = task->data[3] + task->data[5]; + spriteId = CreateSprite(&gBattleAnimSpriteTemplate_83D7220, x, y, 6 - task->data[1]); + PlaySE12WithPanning(186, BattleAnimAdjustPanning(-64)); + + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].hFlip = task->data[1] & 1; + gSprites[spriteId].callback = SpriteCallbackDummy; + } + + if (task->data[1] & 1) + { + task->data[4] -= 6; + task->data[5] -= 6; + } + + sub_80798F4(task, task->data[15], gUnknown_08402400); + task->data[1]++; + task->data[0] = 1; + break; + case 1: + if (sub_807992C(task) == 0) + { + if (task->data[1] == 6) + { + task->data[6] = 8; + task->data[0] = 3; + } + else + { + if (task->data[1] <= 2) + task->data[6] = 10; + else + task->data[6] = 0; + + task->data[0] = 2; + } + } + break; + case 2: + if (task->data[6] != 0) + task->data[6]--; + else + task->data[0] = 0; + break; + case 3: + if (task->data[6] != 0) + task->data[6]--; + else + task->data[0] = 4; + break; + case 4: + for (i = 0, j = 0; i < MAX_SPRITES; i++) + { + if (gSprites[i].template == &gBattleAnimSpriteTemplate_83D7220) + { + gSprites[i].data[0] = taskId; + gSprites[i].data[1] = 6; + StartSpriteAnim(&gSprites[i], 2); + gSprites[i].callback = sub_812D254; + + if (++j == 6) + break; + } + } + + task->data[6] = j; + task->data[0] = 5; + break; + case 5: + if (task->data[6] == 0) + DestroyAnimVisualTask(taskId); + break; + } +} + +static void sub_812D254(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + gTasks[sprite->data[0]].data[sprite->data[1]]--; + DestroySprite(sprite); + } +} + +void sub_812D294(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + InitAnimSpritePos(sprite, 0); + + sprite->data[0]++; + if (sprite->data[0] < 40) + { + u16 var = sprite->data[0]; + if ((var & 1) == 0) + sprite->invisible = 1; + else + sprite->invisible = 0; + } + + if (sprite->data[0] > 30) + sprite->invisible = 0; + + if (sprite->data[0] == 61) + { + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 20; + sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2); + sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3); + sprite->callback = StartTranslateAnimSpriteByDeltas; + } +} + +void sub_812D350(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_084024B0); + gTasks[taskId].data[0]++; + break; + case 1: + if (sub_807992C(&gTasks[taskId]) == 0) + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_812D3AC(struct Sprite *sprite) +{ + u8 spriteId = GetAnimBattlerSpriteId(0); + + switch (sprite->data[0]) + { + case 0: + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3); + sub_8078E70(spriteId, 0); + sprite->data[1] = 256; + sprite->data[2] = 256; + sprite->data[0]++; + break; + case 1: + sprite->data[1] += 96; + sprite->data[2] -= 26; + obj_id_set_rotscale(spriteId, sprite->data[1], sprite->data[2], 0); + + if (++sprite->data[3] == 5) + sprite->data[0]++; + // fall through + case 2: + sprite->data[1] += 96; + sprite->data[2] += 48; + obj_id_set_rotscale(spriteId, sprite->data[1], sprite->data[2], 0); + + if (++sprite->data[3] == 9) + { + sprite->data[3] = 0; + gSprites[spriteId].invisible = 1; + sub_8078F40(spriteId); + sprite->data[0]++; + } + break; + case 3: + sprite->pos2.y -= 6; + if (sprite->pos1.y + sprite->pos2.y < -32) + DestroyAnimSprite(sprite); + break; + } +} + +void sub_812D4B4(struct Sprite *sprite) +{ + if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER) + sprite->pos1.x = -16; + else + sprite->pos1.x = 256; + + sprite->pos1.y = 0; + sprite->callback = sub_812D4EC; +} + +static void sub_812D4EC(struct Sprite *sprite) +{ + u32 newX; + + sprite->data[0] += 72; + if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER) + sprite->pos2.x = sprite->data[0] >> 4; + else + sprite->pos2.x = -(sprite->data[0] >> 4); + + sprite->data[1] += 16; + sprite->pos2.y += sprite->data[1] >> 8; + + if (++sprite->data[2] % 3 == 0) + { + CreateSpriteAndAnimate( + &gSpriteTemplate_8402500, + sprite->pos1.x + sprite->pos2.x, + sprite->pos1.y + sprite->pos2.y, + sprite->subpriority + 1); + } + + newX = sprite->pos1.x + sprite->pos2.x + 32; + if (newX > 304) + DestroyAnimSprite(sprite); +} + +void sub_812D588(struct Sprite *sprite) +{ + u8 rand; + s8 y; + + rand = Random() & 3; + if (rand == 0) + sprite->oam.tileNum += 4; + else + sprite->oam.tileNum += 5; + + y = Random() & 7; + if (y > 3) + y = -y; + + sprite->pos2.y = y; + sprite->callback = sub_812D5E8; +} + +static void sub_812D5E8(struct Sprite *sprite) +{ + if (++sprite->data[0] < 30) + { + if (++sprite->data[1] == 2) + { + sprite->invisible ^= 1; + sprite->data[1] = 0; + } + } + else + { + if (sprite->data[1] == 2) + sprite->invisible = 0; + + if (sprite->data[1] == 3) + { + sprite->invisible = 1; + sprite->data[1] = -1; + } + + sprite->data[1]++; + } + + if (sprite->data[0] > 60) + DestroySprite(sprite); +} + +void sub_812D674(u8 taskId) +{ + if (gTasks[taskId].data[0] == 0) + { + sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402518); + gTasks[taskId].data[0]++; + } + else + { + if (sub_807992C(&gTasks[taskId]) == 0) + DestroyAnimVisualTask(taskId); + } +} + +void sub_812D6CC(u8 taskId) +{ + if (gTasks[taskId].data[0] == 0) + { + sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402540); + gTasks[taskId].data[0]++; + } + else + { + if (sub_807992C(&gTasks[taskId]) == 0) + DestroyAnimVisualTask(taskId); + } +} + +void sub_812D724(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + InitAnimSpritePos(sprite, 0); + sprite->data[1] = 0x900; + sprite->data[2] = GetBattlerSpriteCoord(gAnimBankAttacker, 3); + sprite->data[0]++; + break; + case 1: + sprite->pos2.y -= sprite->data[1] >> 8; + sprite->data[1] -= 96; + if (sprite->pos1.y + sprite->pos2.y > sprite->data[2]) + DestroyAnimSprite(sprite); + break; + } +} + +void sub_812D790(u8 taskId) +{ + if (gTasks[taskId].data[0] == 0) + { + sub_80798F4(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gUnknown_08402590); + gTasks[taskId].data[0]++; + } + else + { + if (sub_807992C(&gTasks[taskId]) == 0) + DestroyAnimVisualTask(taskId); + } +} diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c index f720d6a78..62df190a5 100644 --- a/src/battle/battle_controller_linkopponent.c +++ b/src/battle/battle_controller_linkopponent.c @@ -33,7 +33,7 @@ extern u8 gHealthboxIDs[]; extern u16 gBattleTypeFlags; extern u8 gBattleMonForms[]; extern void (*gBattleBankFunc[])(void); -extern u32 gAnimMoveDmg; +extern s32 gAnimMoveDmg; extern u16 gAnimMovePower; extern u8 gAnimFriendship; extern u16 gWeatherMoveAnim; diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c index 0baeca43e..e3810d856 100644 --- a/src/battle/battle_controller_linkpartner.c +++ b/src/battle/battle_controller_linkpartner.c @@ -42,7 +42,7 @@ extern u8 gUnknown_02024E68[]; extern u8 gDoingBattleAnim; extern u32 gTransformedPersonalities[]; extern struct SpriteTemplate gUnknown_02024E8C; -extern u32 gAnimMoveDmg; +extern s32 gAnimMoveDmg; extern u16 gAnimMovePower; extern u8 gAnimFriendship; extern u16 gWeatherMoveAnim; diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index d6e7ed4a7..f6e7f92a7 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -43,7 +43,7 @@ extern u8 gUnknown_0300434C[]; extern u8 gHealthboxIDs[]; extern u16 gBattleTypeFlags; extern u16 gTrainerBattleOpponent; -extern u32 gAnimMoveDmg; +extern s32 gAnimMoveDmg; extern u16 gAnimMovePower; extern u8 gAnimFriendship; extern u16 gWeatherMoveAnim; diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 881ec72fc..004963b70 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -61,7 +61,7 @@ extern u8 gBattleOutcome; extern void (*gAnimScriptCallback)(void); extern bool8 gAnimScriptActive; extern u16 gAnimMovePower; -extern u32 gAnimMoveDmg; +extern s32 gAnimMoveDmg; extern u8 gAnimFriendship; extern u16 gWeatherMoveAnim; extern u32 gTransformedPersonalities[]; diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index 26348b434..451e02b40 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -38,7 +38,7 @@ extern u16 gBattlerPartyIndexes[]; extern u8 gHealthboxIDs[]; extern u16 gBattleTypeFlags; extern u16 gAnimMovePower; -extern u32 gAnimMoveDmg; +extern s32 gAnimMoveDmg; extern u8 gAnimFriendship; extern u16 gWeatherMoveAnim; extern u32 gTransformedPersonalities[]; |