diff options
-rw-r--r-- | asm/battle_anim_effects_2.s | 7946 | ||||
-rw-r--r-- | asm/battle_anim_effects_3.s | 12857 | ||||
-rw-r--r-- | asm/battle_anim_special.s | 6299 | ||||
-rw-r--r-- | data/battle_anim_effects_3.s | 181 | ||||
-rw-r--r-- | data/battle_anim_scripts.s | 266 | ||||
-rw-r--r-- | data/battle_anim_special.s | 148 | ||||
-rw-r--r-- | graphics/battle_anims/unk_83FF33C.pal | 19 | ||||
-rw-r--r-- | ld_script.txt | 4 | ||||
-rw-r--r-- | src/battle_anim_effects_3.c | 282 | ||||
-rw-r--r-- | src/battle_anim_special.c | 2296 | ||||
-rw-r--r-- | sym_common.txt | 10 |
11 files changed, 2595 insertions, 27713 deletions
diff --git a/asm/battle_anim_effects_2.s b/asm/battle_anim_effects_2.s deleted file mode 100644 index 24921239f..000000000 --- a/asm/battle_anim_effects_2.s +++ /dev/null @@ -1,7946 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80A6E48 -sub_80A6E48: @ 80A6E48 - push {r4,r5,lr} - adds r4, r0, 0 - bl SetSpriteCoordsToAnimAttackerCoords - ldr r5, _080A6E8C @ =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl SetAnimSpriteInitialXOffset - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x30] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x32] - ldrh r0, [r5, 0xA] - strh r0, [r4, 0x34] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x36] - ldr r1, _080A6E90 @ =DestroySpriteAndMatrix - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r1, _080A6E94 @ =TranslateSpriteInEllipseOverDuration - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A6E8C: .4byte gBattleAnimArgs -_080A6E90: .4byte DestroySpriteAndMatrix -_080A6E94: .4byte TranslateSpriteInEllipseOverDuration - thumb_func_end sub_80A6E48 - - thumb_func_start sub_80A6E98 -sub_80A6E98: @ 80A6E98 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080A6EAC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A6EB4 - ldr r0, _080A6EB0 @ =gBattleAnimAttacker - b _080A6EB6 - .align 2, 0 -_080A6EAC: .4byte gBattleAnimArgs -_080A6EB0: .4byte gBattleAnimAttacker -_080A6EB4: - ldr r0, _080A6ED0 @ =gBattleAnimTarget -_080A6EB6: - ldrb r0, [r0] - adds r1, r4, 0 - bl sub_80A6B0C - movs r0, 0 - strh r0, [r4, 0x2E] - strh r0, [r4, 0x30] - ldr r0, _080A6ED4 @ =sub_80A6ED8 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A6ED0: .4byte gBattleAnimTarget -_080A6ED4: .4byte sub_80A6ED8 - thumb_func_end sub_80A6E98 - - thumb_func_start sub_80A6ED8 -sub_80A6ED8: @ 80A6ED8 - push {lr} - adds r1, r0, 0 - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0x1 - beq _080A6F0A - cmp r0, 0x1 - bgt _080A6EEE - cmp r0, 0 - beq _080A6EF4 - b _080A6F38 -_080A6EEE: - cmp r0, 0x2 - beq _080A6F24 - b _080A6F38 -_080A6EF4: - ldrh r0, [r1, 0x26] - subs r0, 0x3 - strh r0, [r1, 0x26] - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _080A6F38 - b _080A6F1C -_080A6F0A: - ldrh r0, [r1, 0x26] - adds r0, 0x3 - strh r0, [r1, 0x26] - ldrh r0, [r1, 0x30] - subs r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - cmp r0, 0 - bne _080A6F38 -_080A6F1C: - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - b _080A6F38 -_080A6F24: - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x40 - bne _080A6F38 - adds r0, r1, 0 - bl DestroyAnimSprite -_080A6F38: - pop {r0} - bx r0 - thumb_func_end sub_80A6ED8 - - thumb_func_start sub_80A6F3C -sub_80A6F3C: @ 80A6F3C - push {r4,lr} - adds r4, r0, 0 - ldr r3, _080A6F88 @ =gSprites - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r4, 0x30] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0x30] - movs r0, 0x2E - ldrsh r2, [r4, r0] - cmp r2, 0 - bne _080A6F7A - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x24] - adds r0, r4, 0 - bl DestroySpriteAndMatrix -_080A6F7A: - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A6F88: .4byte gSprites - thumb_func_end sub_80A6F3C - - thumb_func_start sub_80A6F8C -sub_80A6F8C: @ 80A6F8C - push {r4-r6,lr} - adds r5, r0, 0 - ldr r4, _080A6FD4 @ =gBattleAnimAttacker - 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] - ldr r1, _080A6FD8 @ =gBattlerSpriteIds - ldr r0, _080A6FDC @ =gBattleAnimTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r6, [r0] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A6FE4 - ldr r0, _080A6FE0 @ =gBattleAnimArgs - ldrh r1, [r5, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r5, 0x20] - adds r1, r0, 0 - b _080A6FEE - .align 2, 0 -_080A6FD4: .4byte gBattleAnimAttacker -_080A6FD8: .4byte gBattlerSpriteIds -_080A6FDC: .4byte gBattleAnimTarget -_080A6FE0: .4byte gBattleAnimArgs -_080A6FE4: - ldr r1, _080A7018 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r5, 0x20] - adds r0, r2 - strh r0, [r5, 0x20] -_080A6FEE: - ldrh r0, [r1, 0x2] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r5, 0x30] - strh r6, [r5, 0x32] - ldr r0, _080A701C @ =sub_80A6F3C - str r0, [r5, 0x1C] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A7018: .4byte gBattleAnimArgs -_080A701C: .4byte sub_80A6F3C - thumb_func_end sub_80A6F8C - - thumb_func_start sub_80A7020 -sub_80A7020: @ 80A7020 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - ldr r1, _080A704C @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x38] - ldr r0, _080A7050 @ =WaitAnimForDuration - str r0, [r4, 0x1C] - ldr r1, _080A7054 @ =sub_80A7058 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A704C: .4byte gBattleAnimArgs -_080A7050: .4byte WaitAnimForDuration -_080A7054: .4byte sub_80A7058 - thumb_func_end sub_80A7020 - - thumb_func_start sub_80A7058 -sub_80A7058: @ 80A7058 - push {lr} - ldrh r1, [r0, 0x30] - strh r1, [r0, 0x2E] - ldrh r1, [r0, 0x20] - strh r1, [r0, 0x32] - ldrh r1, [r0, 0x22] - adds r1, 0xF - strh r1, [r0, 0x36] - ldr r1, _080A7078 @ =StartAnimLinearTranslation - str r1, [r0, 0x1C] - ldr r1, _080A707C @ =sub_80A7080 - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_080A7078: .4byte StartAnimLinearTranslation -_080A707C: .4byte sub_80A7080 - thumb_func_end sub_80A7058 - - thumb_func_start sub_80A7080 -sub_80A7080: @ 80A7080 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1, 0x38] - movs r3, 0x38 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _080A7096 - adds r0, r1, 0 - bl DestroyAnimSprite - b _080A709A -_080A7096: - subs r0, r2, 0x1 - strh r0, [r1, 0x38] -_080A709A: - pop {r0} - bx r0 - thumb_func_end sub_80A7080 - - thumb_func_start sub_80A70A0 -sub_80A70A0: @ 80A70A0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080A70CC @ =gBattlerSpriteIds - ldr r0, _080A70D0 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - ldr r1, _080A70D4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080A70D8 @ =sub_80A70DC - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A70CC: .4byte gBattlerSpriteIds -_080A70D0: .4byte gBattleAnimAttacker -_080A70D4: .4byte gTasks -_080A70D8: .4byte sub_80A70DC - thumb_func_end sub_80A70A0 - - thumb_func_start sub_80A70DC -sub_80A70DC: @ 80A70DC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080A710C @ =gBattlerSpriteIds - ldr r0, _080A7110 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r1, r0, r1 - ldrb r4, [r1] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A7118 - ldr r1, _080A7114 @ =gTasks - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x8] - negs r0, r0 - lsls r0, 16 - lsrs r3, r0, 16 - adds r6, r2, 0 - b _080A7126 - .align 2, 0 -_080A710C: .4byte gBattlerSpriteIds -_080A7110: .4byte gBattleAnimAttacker -_080A7114: .4byte gTasks -_080A7118: - ldr r2, _080A7158 @ =gTasks - lsls r1, r5, 2 - adds r0, r1, r5 - lsls r0, 3 - adds r0, r2 - ldrh r3, [r0, 0x8] - adds r6, r1, 0 -_080A7126: - movs r2, 0x80 - lsls r2, 1 - adds r0, r4, 0 - adds r1, r2, 0 - bl SetSpriteRotScale - ldr r1, _080A7158 @ =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r1, r0, r1 - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080A7160 - ldrh r0, [r1, 0x8] - adds r0, 0xB0 - strh r0, [r1, 0x8] - ldr r1, _080A715C @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x26] - adds r1, 0x1 - b _080A718A - .align 2, 0 -_080A7158: .4byte gTasks -_080A715C: .4byte gSprites -_080A7160: - cmp r0, 0x1 - bne _080A7176 - ldrh r0, [r1, 0xE] - adds r0, 0x1 - strh r0, [r1, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - bne _080A71D0 - movs r0, 0x2 - b _080A71CE -_080A7176: - ldrh r0, [r1, 0x8] - subs r0, 0xB0 - strh r0, [r1, 0x8] - ldr r1, _080A71C4 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x26] - subs r1, 0x1 -_080A718A: - strh r1, [r0, 0x26] - adds r0, r4, 0 - bl SetBattlerSpriteYOffsetFromRotation - ldr r0, _080A71C8 @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - movs r3, 0x8 - ldrsh r2, [r1, r3] - movs r0, 0xF2 - lsls r0, 4 - cmp r2, r0 - beq _080A71AA - cmp r2, 0 - bne _080A71D0 -_080A71AA: - ldrh r2, [r1, 0xA] - movs r3, 0xA - ldrsh r0, [r1, r3] - cmp r0, 0x2 - bne _080A71CC - adds r0, r4, 0 - bl ResetSpriteRotScale - adds r0, r5, 0 - bl DestroyAnimVisualTask - b _080A71D0 - .align 2, 0 -_080A71C4: .4byte gSprites -_080A71C8: .4byte gTasks -_080A71CC: - adds r0, r2, 0x1 -_080A71CE: - strh r0, [r1, 0xA] -_080A71D0: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A70DC - - thumb_func_start sub_80A71D8 -sub_80A71D8: @ 80A71D8 - push {r4,r5,lr} - adds r4, r0, 0 - bl SetSpriteCoordsToAnimAttackerCoords - ldr r0, _080A71FC @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A7204 - ldr r0, _080A7200 @ =gBattleAnimArgs - ldrh r1, [r4, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r4, 0x20] - adds r5, r0, 0 - b _080A7210 - .align 2, 0 -_080A71FC: .4byte gBattleAnimAttacker -_080A7200: .4byte gBattleAnimArgs -_080A7204: - ldr r1, _080A7244 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - adds r5, r1, 0 -_080A7210: - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _080A7248 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A724C - adds r3, r4, 0 - adds r3, 0x3F - ldrb r0, [r3] - movs r1, 0x1 - adds r2, r0, 0 - orrs r2, r1 - strb r2, [r3] - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080A7260 - movs r0, 0x2 - orrs r2, r0 - strb r2, [r3] - b _080A7260 - .align 2, 0 -_080A7244: .4byte gBattleAnimArgs -_080A7248: .4byte gBattleAnimAttacker -_080A724C: - movs r2, 0x4 - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _080A7260 - adds r2, r4, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] -_080A7260: - ldr r0, _080A7274 @ =RunStoredCallbackWhenAnimEnds - str r0, [r4, 0x1C] - ldr r1, _080A7278 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A7274: .4byte RunStoredCallbackWhenAnimEnds -_080A7278: .4byte DestroyAnimSprite - thumb_func_end sub_80A71D8 - - thumb_func_start sub_80A727C -sub_80A727C: @ 80A727C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker - ldr r0, _080A7298 @ =RunStoredCallbackWhenAffineAnimEnds - str r0, [r4, 0x1C] - ldr r1, _080A729C @ =sub_80A72A0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7298: .4byte RunStoredCallbackWhenAffineAnimEnds -_080A729C: .4byte sub_80A72A0 - thumb_func_end sub_80A727C - - thumb_func_start sub_80A72A0 -sub_80A72A0: @ 80A72A0 - push {lr} - movs r1, 0x6 - strh r1, [r0, 0x2E] - ldrh r1, [r0, 0x20] - strh r1, [r0, 0x32] - ldrh r1, [r0, 0x22] - subs r1, 0x20 - strh r1, [r0, 0x36] - ldr r1, _080A72C0 @ =StartAnimLinearTranslation - str r1, [r0, 0x1C] - ldr r1, _080A72C4 @ =DestroyAnimSprite - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_080A72C0: .4byte StartAnimLinearTranslation -_080A72C4: .4byte DestroyAnimSprite - thumb_func_end sub_80A72A0 - - thumb_func_start sub_80A72C8 -sub_80A72C8: @ 80A72C8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r5, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A72EC - ldr r1, _080A72E8 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - b _080A730E - .align 2, 0 -_080A72E8: .4byte gBattleAnimArgs -_080A72EC: - ldr r0, _080A73B4 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A730E - ldr r1, _080A73B8 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] - ldrh r0, [r1, 0x6] - negs r0, r0 - strh r0, [r1, 0x6] -_080A730E: - adds r0, r5, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - ldr r4, _080A73BC @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r6, _080A73B8 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r6, 0x4] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r6, 0x6] - adds r0, r2 - lsls r0, 16 - lsrs r0, 16 - adds r7, r0, 0 - ldrh r1, [r5, 0x20] - mov r2, r8 - lsls r0, r2, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r5, 0x22] - lsls r1, r7, 16 - asrs r1, 16 - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl ArcTan2Neg - lsls r0, 16 - movs r1, 0xF0 - lsls r1, 24 - adds r0, r1 - lsrs r4, r0, 16 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A7380 - ldr r2, _080A73C0 @ =0xffffa000 - adds r0, r4, r2 - lsls r0, 16 - lsrs r4, r0, 16 -_080A7380: - movs r3, 0x80 - lsls r3, 1 - str r4, [sp] - adds r0, r5, 0 - movs r1, 0 - adds r2, r3, 0 - bl TrySetSpriteRotScale - ldrh r0, [r6, 0x8] - strh r0, [r5, 0x2E] - mov r0, r8 - strh r0, [r5, 0x32] - strh r7, [r5, 0x36] - ldr r0, _080A73C4 @ =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, _080A73C8 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A73B4: .4byte gBattleAnimAttacker -_080A73B8: .4byte gBattleAnimArgs -_080A73BC: .4byte gBattleAnimTarget -_080A73C0: .4byte 0xffffa000 -_080A73C4: .4byte StartAnimLinearTranslation -_080A73C8: .4byte DestroyAnimSprite - thumb_func_end sub_80A72C8 - - thumb_func_start sub_80A73CC -sub_80A73CC: @ 80A73CC - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - subs r1, r0, 0x1 - strh r1, [r3, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _080A73F6 - ldr r2, _080A73FC @ =gTasks - movs r0, 0x3C - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0xA] - subs r1, 0x1 - strh r1, [r0, 0xA] - adds r0, r3, 0 - bl DestroySprite -_080A73F6: - pop {r0} - bx r0 - .align 2, 0 -_080A73FC: .4byte gTasks - thumb_func_end sub_80A73CC - - thumb_func_start sub_80A7400 -sub_80A7400: @ 80A7400 - push {r4,lr} - adds r2, r0, 0 - movs r0, 0x3C - ldrsh r1, [r2, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, _080A7430 @ =gTasks - adds r4, r0, r1 - movs r3, 0x2E - ldrsh r1, [r2, r3] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - ble _080A7434 - ldrh r0, [r2, 0x34] - ldrh r1, [r2, 0x38] - adds r0, r1 - strh r0, [r2, 0x38] - ldrh r0, [r2, 0x36] - ldrh r3, [r2, 0x3A] - adds r0, r3 - b _080A7442 - .align 2, 0 -_080A7430: .4byte gTasks -_080A7434: - ldrh r0, [r2, 0x38] - ldrh r1, [r2, 0x34] - subs r0, r1 - strh r0, [r2, 0x38] - ldrh r0, [r2, 0x3A] - ldrh r1, [r2, 0x36] - subs r0, r1 -_080A7442: - strh r0, [r2, 0x3A] - ldrh r0, [r2, 0x38] - ldrh r1, [r2, 0x30] - adds r3, r0, r1 - strh r3, [r2, 0x30] - ldrh r0, [r2, 0x3A] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - ldrh r1, [r4, 0x16] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A7466 - lsls r0, r3, 16 - lsrs r0, 24 - negs r0, r0 - b _080A746A -_080A7466: - lsls r0, r3, 16 - lsrs r0, 24 -_080A746A: - strh r0, [r2, 0x24] - ldrh r1, [r4, 0x18] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A747E - ldrh r0, [r2, 0x32] - lsrs r0, 8 - negs r0, r0 - b _080A7482 -_080A747E: - ldrh r0, [r2, 0x32] - lsrs r0, 8 -_080A7482: - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x2E] - subs r1, r0, 0x1 - strh r1, [r2, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _080A7498 - movs r0, 0x1E - strh r0, [r2, 0x2E] - ldr r0, _080A74A0 @ =sub_80A73CC - str r0, [r2, 0x1C] -_080A7498: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A74A0: .4byte sub_80A73CC - thumb_func_end sub_80A7400 - - thumb_func_start sub_80A74A4 -sub_80A74A4: @ 80A74A4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - movs r0, 0x3C - ldrsh r1, [r7, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, _080A74E8 @ =gTasks - adds r6, r0, r1 - ldrh r2, [r6, 0x16] - movs r1, 0x2 - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - ldrh r3, [r7, 0x30] - adds r2, r0, r3 - strh r2, [r7, 0x30] - ldrh r0, [r6, 0x18] - ands r1, r0 - ldrh r0, [r7, 0x32] - adds r1, r0 - strh r1, [r7, 0x32] - ldrh r1, [r6, 0x16] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A74EC - lsls r0, r2, 16 - lsrs r0, 24 - negs r0, r0 - b _080A74F0 - .align 2, 0 -_080A74E8: .4byte gTasks -_080A74EC: - lsls r0, r2, 16 - lsrs r0, 24 -_080A74F0: - strh r0, [r7, 0x24] - ldrh r1, [r6, 0x18] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A7504 - ldrh r0, [r7, 0x32] - lsrs r0, 8 - negs r0, r0 - b _080A7508 -_080A7504: - ldrh r0, [r7, 0x32] - lsrs r0, 8 -_080A7508: - strh r0, [r7, 0x26] - ldrh r0, [r7, 0x2E] - subs r1, r0, 0x1 - strh r1, [r7, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _080A75D4 - movs r4, 0 - movs r0, 0x8 - strh r0, [r7, 0x2E] - movs r0, 0x4 - strh r0, [r6, 0x12] - movs r0, 0x80 - lsls r0, 5 - bl sub_80D8B90 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r7, 0x24] - ldrh r1, [r7, 0x20] - adds r2, r0, r1 - strh r2, [r7, 0x20] - ldrh r0, [r7, 0x26] - ldrh r3, [r7, 0x22] - adds r0, r3 - strh r0, [r7, 0x22] - strh r4, [r7, 0x26] - strh r4, [r7, 0x24] - ldrh r3, [r6, 0x1E] - movs r0, 0x1E - ldrsh r1, [r6, r0] - lsls r0, r2, 16 - asrs r0, 16 - cmp r1, r0 - blt _080A7552 - subs r0, r3, r2 - b _080A7554 -_080A7552: - subs r0, r2, r3 -_080A7554: - lsls r0, 24 - lsrs r4, r0, 16 - ldrh r3, [r6, 0x20] - movs r0, 0x20 - ldrsh r1, [r6, r0] - ldrh r2, [r7, 0x22] - movs r6, 0x22 - ldrsh r0, [r7, r6] - cmp r1, r0 - blt _080A756C - subs r0, r3, r2 - b _080A756E -_080A756C: - subs r0, r2, r3 -_080A756E: - lsls r0, 24 - lsrs r0, 16 - mov r8, r0 - movs r0, 0 - strh r0, [r7, 0x32] - strh r0, [r7, 0x30] - strh r0, [r7, 0x3A] - strh r0, [r7, 0x38] - lsls r0, r4, 16 - asrs r0, 16 - lsls r5, 16 - asrs r5, 16 - adds r1, r5, 0 - bl sub_80D8AA0 - adds r4, r0, 0 - lsls r4, 16 - asrs r4, 16 - movs r6, 0xE0 - lsls r6, 1 - adds r0, r6, 0 - bl sub_80D8B90 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_80D8AA0 - strh r0, [r7, 0x34] - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - adds r1, r5, 0 - bl sub_80D8AA0 - adds r4, r0, 0 - lsls r4, 16 - asrs r4, 16 - adds r0, r6, 0 - bl sub_80D8B90 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_80D8AA0 - strh r0, [r7, 0x36] - ldr r0, _080A75E0 @ =sub_80A7400 - str r0, [r7, 0x1C] -_080A75D4: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A75E0: .4byte sub_80A7400 - thumb_func_end sub_80A74A4 - - thumb_func_start sub_80A75E4 -sub_80A75E4: @ 80A75E4 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080A7608 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0xA - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A7602 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080A7602: - pop {r0} - bx r0 - .align 2, 0 -_080A7608: .4byte gTasks - thumb_func_end sub_80A75E4 - - thumb_func_start sub_80A760C -sub_80A760C: @ 80A760C - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080A7660 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - subs r1, r0, 0x1 - strh r1, [r5, 0x8] - lsls r0, 16 - cmp r0, 0 - bgt _080A76E0 - ldr r0, _080A7664 @ =gUnknown_83E3C28 - movs r2, 0x1A - ldrsh r1, [r5, r2] - movs r3, 0x1C - ldrsh r2, [r5, r3] - ldrb r3, [r5, 0xC] - ldrb r4, [r5, 0xA] - subs r3, r4 - lsls r3, 24 - lsrs r3, 24 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - lsls r0, 4 - add r0, r12 - lsls r0, 2 - ldr r1, _080A7668 @ =gSprites - adds r6, r0, r1 - movs r1, 0x10 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080A766C - cmp r0, 0x2 - beq _080A7682 - b _080A7690 - .align 2, 0 -_080A7660: .4byte gTasks -_080A7664: .4byte gUnknown_83E3C28 -_080A7668: .4byte gSprites -_080A766C: - ldrb r2, [r6, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x18 - orrs r1, r0 - lsls r1, 1 - subs r0, 0x57 - ands r0, r2 - orrs r0, r1 - strb r0, [r6, 0x3] - b _080A7690 -_080A7682: - ldrb r0, [r6, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x10 - orrs r1, r0 - strb r1, [r6, 0x3] -_080A7690: - ldr r3, _080A76E8 @ =gTasks - lsls r2, r7, 2 - adds r2, r7 - lsls r2, 3 - adds r4, r2, r3 - ldrh r0, [r4, 0x12] - ldrh r1, [r4, 0x14] - subs r0, r1 - strh r0, [r6, 0x2E] - strh r7, [r6, 0x3C] - movs r1, 0xA - ldrsh r0, [r4, r1] - adds r0, 0xD - lsls r0, 1 - adds r0, r2 - adds r3, 0x8 - adds r0, r3 - mov r2, r12 - strh r2, [r0] - ldrh r0, [r4, 0xE] - strh r0, [r4, 0x8] - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - movs r0, 0x3F - negs r0, r0 - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x93 - bl PlaySE12WithPanning - movs r3, 0xA - ldrsh r0, [r4, r3] - cmp r0, 0x2 - ble _080A76E0 - ldr r0, _080A76EC @ =sub_80A75E4 - str r0, [r4] -_080A76E0: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A76E8: .4byte gTasks -_080A76EC: .4byte sub_80A75E4 - thumb_func_end sub_80A760C - - thumb_func_start sub_80A76F0 -sub_80A76F0: @ 80A76F0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0 - mov r9, r0 - movs r5, 0 - mov r0, sp - mov r1, r9 - strh r1, [r0] - mov r4, sp - adds r4, 0x2 - strh r1, [r4] - bl IsContest - lsls r0, 24 - mov r10, r4 - cmp r0, 0 - beq _080A775C - ldr r1, _080A774C @ =gTasks - lsls r2, r7, 2 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0x2 - strh r1, [r0, 0x10] - ldr r3, _080A7750 @ =gBattleAnimArgs - ldrh r0, [r3] - negs r0, r0 - strh r0, [r3] - ldrh r1, [r3, 0x4] - movs r0, 0x1 - ands r0, r1 - mov r8, r2 - cmp r0, 0 - beq _080A7754 - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strh r0, [r3, 0x4] - b _080A77B6 - .align 2, 0 -_080A774C: .4byte gTasks -_080A7750: .4byte gBattleAnimArgs -_080A7754: - movs r0, 0x1 - orrs r0, r1 - strh r0, [r3, 0x4] - b _080A77B6 -_080A775C: - ldr r1, _080A77A0 @ =gBattlerPositions - ldr r0, _080A77A4 @ =gBattleAnimTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - lsls r2, r7, 2 - mov r8, r2 - cmp r0, 0 - bne _080A77B6 - ldr r1, _080A77A8 @ =gTasks - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - strh r3, [r0, 0x10] - ldr r2, _080A77AC @ =gBattleAnimArgs - ldrh r0, [r2] - negs r0, r0 - strh r0, [r2] - ldrh r0, [r2, 0x2] - negs r0, r0 - strh r0, [r2, 0x2] - ldrh r1, [r2, 0x4] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080A77B0 - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - b _080A77B4 - .align 2, 0 -_080A77A0: .4byte gBattlerPositions -_080A77A4: .4byte gBattleAnimTarget -_080A77A8: .4byte gTasks -_080A77AC: .4byte gBattleAnimArgs -_080A77B0: - movs r0, 0x1 - orrs r0, r1 -_080A77B4: - strh r0, [r2, 0x4] -_080A77B6: - ldr r5, _080A7810 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - ldr r1, _080A7814 @ =gTasks - mov r3, r8 - adds r4, r3, r7 - lsls r4, 3 - adds r4, r1 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1A] - adds r6, r0, 0 - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1C] - mov r9, r0 - ldr r0, _080A7818 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A7820 - ldr r4, _080A781C @ =gBattleAnimTarget - ldrb r1, [r4] - movs r0, 0x2 - eors r0, r1 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A7820 - ldrb r0, [r4] - movs r1, 0 - mov r2, sp - mov r3, r10 - bl SetAverageBattlerPositions - b _080A7842 - .align 2, 0 -_080A7810: .4byte gBattleAnimAttacker -_080A7814: .4byte gTasks -_080A7818: .4byte gBattleTypeFlags -_080A781C: .4byte gBattleAnimTarget -_080A7820: - mov r5, sp - ldr r4, _080A787C @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - mov r1, r10 - strh r0, [r1] -_080A7842: - mov r4, sp - ldr r0, _080A7880 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - mov r2, sp - ldr r3, _080A7884 @ =gBattleAnimArgs - ldrh r0, [r3] - ldrh r2, [r2] - adds r0, r2 - strh r0, [r1, 0x1E] - strh r0, [r4] - ldrh r0, [r3, 0x2] - mov r3, r10 - ldrh r3, [r3] - adds r0, r3 - strh r0, [r1, 0x20] - mov r1, r10 - strh r0, [r1] - mov r0, sp - ldrh r2, [r0] - movs r3, 0 - ldrsh r0, [r0, r3] - adds r1, r6, 0 - cmp r0, r1 - blt _080A7888 - subs r0, r2, r1 - b _080A788A - .align 2, 0 -_080A787C: .4byte gBattleAnimTarget -_080A7880: .4byte gTasks -_080A7884: .4byte gBattleAnimArgs -_080A7888: - subs r0, r1, r2 -_080A788A: - lsls r0, 16 - lsrs r0, 16 - lsls r4, r0, 16 - asrs r4, 16 - ldr r5, _080A7900 @ =gBattleAnimArgs - ldrh r1, [r5, 0x4] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - lsls r0, 16 - asrs r0, 16 - bl sub_80D8B90 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_80D8AA0 - ldr r2, _080A7904 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r6, r1, r2 - strh r0, [r6, 0x12] - movs r1, 0x12 - ldrsh r0, [r6, r1] - movs r1, 0x80 - bl sub_80D8AA0 - strh r0, [r6, 0x14] - ldrh r0, [r5, 0x4] - strh r0, [r6, 0x16] - mov r2, r10 - ldrh r1, [r2] - movs r3, 0 - ldrsh r0, [r2, r3] - mov r4, r9 - cmp r0, r4 - blt _080A7908 - subs r4, r1, r4 - lsls r4, 16 - asrs r4, 16 - movs r1, 0x12 - ldrsh r0, [r6, r1] - bl sub_80D8B90 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_80D8AA0 - movs r1, 0x2 - negs r1, r1 - ands r1, r0 - strh r1, [r6, 0x18] - b _080A7928 - .align 2, 0 -_080A7900: .4byte gBattleAnimArgs -_080A7904: .4byte gTasks -_080A7908: - subs r4, r1 - lsls r4, 16 - asrs r4, 16 - movs r2, 0x12 - ldrsh r0, [r6, r2] - bl sub_80D8B90 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_80D8AA0 - movs r1, 0x1 - orrs r0, r1 - strh r0, [r6, 0x18] -_080A7928: - ldr r1, _080A7968 @ =gTasks - mov r3, r8 - adds r0, r3, r7 - lsls r0, 3 - adds r5, r0, r1 - ldr r4, _080A796C @ =gBattleAnimArgs - ldrh r0, [r4, 0x6] - strh r0, [r5, 0xE] - ldrh r1, [r4, 0x8] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080A7978 - movs r0, 0x80 - eors r0, r1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3F - ble _080A79A0 - ldr r0, _080A7970 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080A7974 @ =0x0000ffc0 - adds r1, r2, 0 - ldrh r4, [r4, 0x8] - adds r1, r4 - adds r0, r1 - b _080A79B0 - .align 2, 0 -_080A7968: .4byte gTasks -_080A796C: .4byte gBattleAnimArgs -_080A7970: .4byte gBattleAnimTarget -_080A7974: .4byte 0x0000ffc0 -_080A7978: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x3F - ble _080A79A0 - ldr r0, _080A7998 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080A799C @ =0x0000ffc0 - adds r1, r3, 0 - ldrh r4, [r4, 0x8] - adds r1, r4 - adds r0, r1 - b _080A79B0 - .align 2, 0 -_080A7998: .4byte gBattleAnimTarget -_080A799C: .4byte 0x0000ffc0 -_080A79A0: - ldr r0, _080A79DC @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x8] - subs r0, r1 -_080A79B0: - strh r0, [r5, 0xC] - ldr r0, _080A79E0 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0x2 - bgt _080A79C8 - movs r0, 0x3 - strh r0, [r1, 0xC] -_080A79C8: - ldr r0, _080A79E4 @ =sub_80A760C - str r0, [r1] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A79DC: .4byte gBattleAnimTarget -_080A79E0: .4byte gTasks -_080A79E4: .4byte sub_80A760C - thumb_func_end sub_80A76F0 - - thumb_func_start sub_80A79E8 -sub_80A79E8: @ 80A79E8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker - ldr r0, _080A7A10 @ =gUnknown_83E3D18 - ldrh r0, [r0, 0x2] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - strh r0, [r4, 0x2E] - ldr r0, _080A7A14 @ =sub_80A7A18 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7A10: .4byte gUnknown_83E3D18 -_080A7A14: .4byte sub_80A7A18 - thumb_func_end sub_80A79E8 - - thumb_func_start sub_80A7A18 -sub_80A7A18: @ 80A7A18 - push {r4-r7,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080A7A7C - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r5, [r4, 0x2E] - ldr r1, _080A7A84 @ =gPlttBufferFaded - adds r0, r5, 0 - adds r0, 0x8 - lsls r0, 1 - adds r0, r1 - ldrh r7, [r0] - adds r6, r1, 0 - adds r1, r5, 0 - adds r1, 0x9 - lsls r0, r5, 1 - adds r0, r6 - adds r2, r0, 0 - adds r2, 0x10 - movs r3, 0x7 - lsls r1, 1 - adds r1, r6 -_080A7A50: - ldrh r0, [r1] - strh r0, [r2] - adds r1, 0x2 - adds r2, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _080A7A50 - adds r0, r5, 0 - adds r0, 0xF - lsls r0, 1 - adds r0, r6 - strh r7, [r0] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x18 - bne _080A7A7C - adds r0, r4, 0 - bl DestroyAnimSprite -_080A7A7C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A7A84: .4byte gPlttBufferFaded - thumb_func_end sub_80A7A18 - - thumb_func_start sub_80A7A88 -sub_80A7A88: @ 80A7A88 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - ldr r4, _080A7B28 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, _080A7B2C @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x6] - adds r0, r1 - lsls r0, 16 - lsrs r7, r0, 16 - ldr r0, _080A7B30 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A7ACC - ldrh r0, [r4, 0x4] - negs r0, r0 - strh r0, [r4, 0x4] -_080A7ACC: - lsls r0, r6, 16 - asrs r0, 16 - ldrh r1, [r4, 0x4] - adds r0, r1 - lsls r0, 16 - ldrh r1, [r5, 0x20] - lsrs r6, r0, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r5, 0x22] - lsls r1, r7, 16 - asrs r1, 16 - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl ArcTan2Neg - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 24 - adds r0, r1 - lsrs r0, 16 - movs r3, 0x80 - lsls r3, 1 - str r0, [sp] - adds r0, r5, 0 - movs r1, 0 - adds r2, r3, 0 - bl TrySetSpriteRotScale - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x2E] - strh r6, [r5, 0x32] - strh r7, [r5, 0x36] - ldr r0, _080A7B34 @ =sub_80756A4 - str r0, [r5, 0x1C] - ldr r1, _080A7B38 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A7B28: .4byte gBattleAnimTarget -_080A7B2C: .4byte gBattleAnimArgs -_080A7B30: .4byte gBattleAnimAttacker -_080A7B34: .4byte sub_80756A4 -_080A7B38: .4byte DestroyAnimSprite - thumb_func_end sub_80A7A88 - - thumb_func_start sub_80A7B3C -sub_80A7B3C: @ 80A7B3C - ldr r1, _080A7B4C @ =0x0000fff0 - strh r1, [r0, 0x32] - ldrh r1, [r0, 0x22] - adds r1, 0x8 - strh r1, [r0, 0x22] - ldr r1, _080A7B50 @ =sub_80A7B54 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080A7B4C: .4byte 0x0000fff0 -_080A7B50: .4byte sub_80A7B54 - thumb_func_end sub_80A7B3C - - thumb_func_start sub_80A7B54 -sub_80A7B54: @ 80A7B54 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - ldr r0, _080A7BC0 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A7B78 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] -_080A7B78: - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x5 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7E - ble _080A7BB8 - movs r0, 0 - strh r0, [r4, 0x30] - movs r1, 0x32 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080A7BB8 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A7BB8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7BC0: .4byte gBattleAnimAttacker - thumb_func_end sub_80A7B54 - - thumb_func_start sub_80A7BC4 -sub_80A7BC4: @ 80A7BC4 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - movs r0, 0x14 - strh r0, [r4, 0x2E] - ldr r5, _080A7C10 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, _080A7C14 @ =StartAnimLinearTranslation - str r0, [r4, 0x1C] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080A7C18 @ =sub_80A7C1C - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A7C10: .4byte gBattleAnimTarget -_080A7C14: .4byte StartAnimLinearTranslation -_080A7C18: .4byte sub_80A7C1C - thumb_func_end sub_80A7BC4 - - thumb_func_start sub_80A7C1C -sub_80A7C1C: @ 80A7C1C - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x9F - bl PlaySE12WithPanning - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - movs r1, 0 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - strh r1, [r4, 0x26] - strh r1, [r4, 0x24] - movs r2, 0 - movs r1, 0x7 - adds r0, r4, 0 - adds r0, 0x3C -_080A7C50: - strh r2, [r0] - subs r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080A7C50 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x7 - ands r0, r1 - ldr r2, _080A7C98 @ =0x0000fff4 - adds r1, r2, 0 - subs r1, r0 - strh r1, [r4, 0x3A] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA0 - bl __umodsi3 - adds r0, 0xA0 - strh r0, [r4, 0x3C] - ldr r0, _080A7C9C @ =sub_80A7CA0 - str r0, [r4, 0x1C] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7C98: .4byte 0x0000fff4 -_080A7C9C: .4byte sub_80A7CA0 - thumb_func_end sub_80A7C1C - - thumb_func_start sub_80A7CA0 -sub_80A7CA0: @ 80A7CA0 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x3C] - ldrh r2, [r4, 0x2E] - adds r0, r1, r2 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r2, r0, 24 - strh r2, [r4, 0x24] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A7CBE - negs r0, r2 - strh r0, [r4, 0x24] -_080A7CBE: - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r2, 0x3A - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7E - ble _080A7CFE - movs r0, 0 - strh r0, [r4, 0x30] - movs r1, 0x32 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A7CFE - adds r0, r4, 0 - bl DestroyAnimSprite -_080A7CFE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A7CA0 - - thumb_func_start sub_80A7D04 -sub_80A7D04: @ 80A7D04 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker - ldr r0, _080A7D54 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A7D22 - ldrh r0, [r4, 0x22] - adds r0, 0x10 - strh r0, [r4, 0x22] -_080A7D22: - ldr r1, _080A7D58 @ =gBattleAnimArgs - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x32] - ldrh r0, [r1, 0xC] - strh r0, [r4, 0x34] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x36] - ldr r0, _080A7D5C @ =TranslateSpriteInCircleOverDuration - str r0, [r4, 0x1C] - ldr r1, _080A7D60 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7D54: .4byte gBattleAnimAttacker -_080A7D58: .4byte gBattleAnimArgs -_080A7D5C: .4byte TranslateSpriteInCircleOverDuration -_080A7D60: .4byte DestroyAnimSprite - thumb_func_end sub_80A7D04 - - thumb_func_start sub_80A7D64 -sub_80A7D64: @ 80A7D64 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - movs r7, 0x20 - ldr r4, _080A7DE0 @ =0x0000ffe0 - movs r0, 0x10 - mov r8, r0 - ldr r6, _080A7DE4 @ =0x0000fff0 - ldr r0, _080A7DE8 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _080A7D90 - adds r7, r4, 0 - movs r4, 0x20 - mov r8, r6 - movs r6, 0x10 - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim -_080A7D90: - lsls r0, r7, 16 - asrs r0, 16 - ldrh r1, [r5, 0x20] - adds r0, r1 - strh r0, [r5, 0x20] - lsls r0, r4, 16 - asrs r0, 16 - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - movs r0, 0x6 - strh r0, [r5, 0x2E] - ldr r4, _080A7DEC @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - add r0, r8 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x36] - ldr r0, _080A7DF0 @ =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, _080A7DF4 @ =sub_80A7DF8 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A7DE0: .4byte 0x0000ffe0 -_080A7DE4: .4byte 0x0000fff0 -_080A7DE8: .4byte gBattleAnimArgs -_080A7DEC: .4byte gBattleAnimTarget -_080A7DF0: .4byte StartAnimLinearTranslation -_080A7DF4: .4byte sub_80A7DF8 - thumb_func_end sub_80A7D64 - - thumb_func_start sub_80A7DF8 -sub_80A7DF8: @ 80A7DF8 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A7E0E - adds r0, r2, 0 - bl DestroyAnimSprite -_080A7E0E: - pop {r0} - bx r0 - thumb_func_end sub_80A7DF8 - - thumb_func_start sub_80A7E14 -sub_80A7E14: @ 80A7E14 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - movs r0, 0x20 - mov r8, r0 - ldr r4, _080A7EA8 @ =0x0000ffe0 - movs r2, 0x10 - mov r9, r2 - ldr r6, _080A7EAC @ =0x0000fff0 - ldr r7, _080A7EB0 @ =gBattleAnimArgs - ldrh r1, [r7] - movs r2, 0 - ldrsh r0, [r7, r2] - cmp r0, 0 - beq _080A7E48 - mov r8, r4 - movs r4, 0x20 - mov r9, r6 - movs r6, 0x10 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim -_080A7E48: - mov r0, r8 - lsls r1, r0, 16 - asrs r1, 16 - ldrh r2, [r5, 0x20] - adds r1, r2 - strh r1, [r5, 0x20] - lsls r0, r4, 16 - asrs r0, 16 - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - movs r0, 0x6 - strh r0, [r5, 0x2E] - strh r1, [r5, 0x30] - ldr r4, _080A7EB4 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - add r0, r9 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl InitAnimLinearTranslation - ldrh r0, [r7] - strh r0, [r5, 0x38] - ldrh r0, [r5, 0x2E] - strh r0, [r5, 0x3A] - ldr r0, _080A7EB8 @ =sub_80A7EBC - str r0, [r5, 0x1C] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A7EA8: .4byte 0x0000ffe0 -_080A7EAC: .4byte 0x0000fff0 -_080A7EB0: .4byte gBattleAnimArgs -_080A7EB4: .4byte gBattleAnimTarget -_080A7EB8: .4byte sub_80A7EBC - thumb_func_end sub_80A7E14 - - thumb_func_start sub_80A7EBC -sub_80A7EBC: @ 80A7EBC - push {r4,lr} - adds r4, r0, 0 - bl AnimTranslateLinear - lsls r0, 24 - cmp r0, 0 - beq _080A7F20 - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A7F20 - adds r0, r4, 0 - movs r1, 0 - bl SeekSpriteAnim - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - movs r2, 0 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - movs r0, 0x2 - strh r0, [r4, 0x24] - ldr r0, _080A7F28 @ =0x0000fffe - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x32] - eors r0, r1 - strh r0, [r4, 0x32] - strh r2, [r4, 0x36] - strh r2, [r4, 0x34] - ldr r0, _080A7F2C @ =sub_80A7F30 - str r0, [r4, 0x1C] -_080A7F20: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7F28: .4byte 0x0000fffe -_080A7F2C: .4byte sub_80A7F30 - thumb_func_end sub_80A7EBC - - thumb_func_start sub_80A7F30 -sub_80A7F30: @ 80A7F30 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080A7F48 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x26] - negs r0, r0 - strh r0, [r4, 0x26] -_080A7F48: - ldrh r0, [r4, 0x34] - movs r1, 0x1 - eors r0, r1 - movs r1, 0 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x33 - bne _080A7F8A - strh r1, [r4, 0x26] - strh r1, [r4, 0x24] - strh r1, [r4, 0x36] - strh r1, [r4, 0x34] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x38] - movs r1, 0x1 - eors r1, r0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - ldr r0, _080A7F90 @ =sub_80A7F94 - str r0, [r4, 0x1C] -_080A7F8A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A7F90: .4byte sub_80A7F94 - thumb_func_end sub_80A7F30 - - thumb_func_start sub_80A7F94 -sub_80A7F94: @ 80A7F94 - push {r4,lr} - adds r4, r0, 0 - bl AnimTranslateLinear - lsls r0, 24 - cmp r0, 0 - beq _080A7FA8 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A7FA8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A7F94 - - thumb_func_start sub_80A7FB0 -sub_80A7FB0: @ 80A7FB0 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x1 - bl PrepareBattlerSpriteForRotScale - adds r0, r4, 0 - movs r1, 0xD0 - movs r2, 0xD0 - movs r3, 0 - bl SetSpriteRotScale - ldr r1, _080A8008 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - movs r1, 0 - bl SetGreyscaleOrOriginalPalette - ldr r1, _080A800C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0x50 - strh r1, [r0, 0x8] - ldr r1, _080A8010 @ =sub_80A8014 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A8008: .4byte gSprites -_080A800C: .4byte gTasks -_080A8010: .4byte sub_80A8014 - thumb_func_end sub_80A7FB0 - - thumb_func_start sub_80A8014 -sub_80A8014: @ 80A8014 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080A806C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x8] - subs r1, 0x1 - strh r1, [r0, 0x8] - lsls r1, 16 - asrs r1, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080A8064 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl ResetSpriteRotScale - ldr r1, _080A8070 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - movs r1, 0x1 - bl SetGreyscaleOrOriginalPalette - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A8064: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A806C: .4byte gTasks -_080A8070: .4byte gSprites - thumb_func_end sub_80A8014 - - thumb_func_start sub_80A8074 -sub_80A8074: @ 80A8074 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080A80C0 @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r4, 0x8] - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - strh r5, [r4, 0xA] - strh r5, [r4, 0xC] - strh r5, [r4, 0xE] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0x10] - strh r5, [r4, 0x12] - strh r5, [r4, 0x14] - ldr r0, _080A80C4 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x16] - ldr r0, _080A80C8 @ =sub_80A80CC - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A80C0: .4byte gTasks -_080A80C4: .4byte gBattleAnimAttacker -_080A80C8: .4byte sub_80A80CC - thumb_func_end sub_80A8074 - - thumb_func_start sub_80A80CC -sub_80A80CC: @ 80A80CC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080A80F0 @ =gTasks - adds r4, r0, r1 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x5 - bls _080A80E6 - b _080A81F6 -_080A80E6: - lsls r0, 2 - ldr r1, _080A80F4 @ =_080A80F8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080A80F0: .4byte gTasks -_080A80F4: .4byte _080A80F8 - .align 2, 0 -_080A80F8: - .4byte _080A8110 - .4byte _080A8158 - .4byte _080A818E - .4byte _080A8194 - .4byte _080A81A4 - .4byte _080A81D8 -_080A8110: - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080A8120 - cmp r0, 0x3 - beq _080A8120 - cmp r0, 0x6 - bne _080A8128 -_080A8120: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80A8200 -_080A8128: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x10] - adds r0, 0x28 - strh r0, [r4, 0x10] - ldrb r0, [r4, 0x8] - movs r1, 0x10 - ldrsh r2, [r4, r1] - adds r1, r2, 0 - movs r3, 0 - bl SetSpriteRotScale - ldrb r0, [r4, 0x8] - bl SetBattlerSpriteYOffsetFromYScale - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0x20 - bne _080A81F6 - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - b _080A81D0 -_080A8158: - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A81F6 - movs r2, 0x12 - ldrsh r1, [r4, r2] - cmp r1, 0x3 - bne _080A816E - strh r0, [r4, 0xC] - strh r1, [r4, 0xA] - b _080A81F6 -_080A816E: - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r2, 0x80 - lsls r2, 1 - strh r2, [r4, 0x10] - ldrb r0, [r4, 0x8] - adds r1, r2, 0 - movs r3, 0 - bl SetSpriteRotScale - ldrb r0, [r4, 0x8] - bl SetBattlerSpriteYOffsetFromYScale - movs r0, 0x2 - strh r0, [r4, 0xA] - b _080A81F6 -_080A818E: - movs r0, 0 - strh r0, [r4, 0xA] - b _080A81F6 -_080A8194: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x20 - ble _080A81F6 - b _080A81CC -_080A81A4: - ldrh r0, [r4, 0xC] - adds r0, 0x2 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x10] - subs r0, 0x50 - strh r0, [r4, 0x10] - ldrb r0, [r4, 0x8] - movs r1, 0x10 - ldrsh r2, [r4, r1] - adds r1, r2, 0 - movs r3, 0 - bl SetSpriteRotScale - ldrb r0, [r4, 0x8] - bl SetBattlerSpriteYOffsetFromYScale - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0x20 - bne _080A81F6 -_080A81CC: - movs r0, 0 - strh r0, [r4, 0xC] -_080A81D0: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - b _080A81F6 -_080A81D8: - ldrb r0, [r4, 0x8] - bl ResetSpriteRotScale - ldr r2, _080A81FC @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x26] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A81F6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A81FC: .4byte gSprites - thumb_func_end sub_80A80CC - - thumb_func_start sub_80A8200 -sub_80A8200: @ 80A8200 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - movs r0, 0 - bl CloneBattlerSpriteWithBlend - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r0, 16 - asrs r4, r0, 16 - cmp r4, 0 - blt _080A82DA - bl AllocOamMatrix - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xFF - bne _080A8244 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _080A8240 @ =gSprites - adds r0, r1 - bl obj_delete_but_dont_free_vram - b _080A82DA - .align 2, 0 -_080A8240: .4byte gSprites -_080A8244: - ldr r5, _080A82E8 @ =gSprites - lsls r3, r4, 4 - adds r3, r4 - lsls r3, 2 - adds r4, r3, r5 - ldrb r1, [r4, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4, 0x1] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1F - ands r6, r0 - lsls r2, r6, 1 - ldrb r1, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x3] - ldrb r0, [r7, 0x16] - ldrb r1, [r7, 0xE] - subs r0, r1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrh r0, [r7, 0xE] - adds r0, 0x1 - strh r0, [r7, 0xE] - ldrh r0, [r7, 0x14] - adds r0, 0x1 - strh r0, [r7, 0x14] - movs r0, 0x10 - strh r0, [r4, 0x2E] - mov r0, r9 - strh r0, [r4, 0x30] - movs r0, 0x6 - strh r0, [r4, 0x32] - adds r5, 0x1C - adds r3, r5 - ldr r0, _080A82EC @ =sub_80A82F0 - str r0, [r3] - mov r1, r8 - lsls r0, r1, 24 - lsrs r0, 24 - movs r1, 0x10 - ldrsh r2, [r7, r1] - adds r1, r2, 0 - movs r3, 0 - bl SetSpriteRotScale - ldrb r0, [r4, 0x1] - movs r3, 0x4 - negs r3, r3 - ands r3, r0 - movs r0, 0x1 - orrs r3, r0 - strb r3, [r4, 0x1] - lsrs r1, r3, 6 - ldrb r2, [r4, 0x3] - lsrs r2, 6 - lsls r3, 30 - lsrs r3, 30 - adds r0, r4, 0 - bl CalcCenterToCornerVec -_080A82DA: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A82E8: .4byte gSprites -_080A82EC: .4byte sub_80A82F0 - thumb_func_end sub_80A8200 - - thumb_func_start sub_80A82F0 -sub_80A82F0: @ 80A82F0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _080A832E - ldr r3, _080A8334 @ =gTasks - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x30 - 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] - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - adds r0, r4, 0 - bl obj_delete_but_dont_free_vram -_080A832E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A8334: .4byte gTasks - thumb_func_end sub_80A82F0 - - thumb_func_start sub_80A8338 -sub_80A8338: @ 80A8338 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080A835C @ =gTasks - adds r4, r0, r1 - ldr r5, _080A8360 @ =gBattleAnimArgs - movs r1, 0x2 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080A8364 - adds r0, r2, 0 - bl DestroyAnimVisualTask - b _080A838A - .align 2, 0 -_080A835C: .4byte gTasks -_080A8360: .4byte gBattleAnimArgs -_080A8364: - ldrb r0, [r5] - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0 - strh r1, [r4, 0x8] - strh r2, [r4, 0xA] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0xC] - strh r2, [r4, 0xE] - strh r2, [r4, 0x10] - ldr r2, _080A8390 @ =gUnknown_83E3E60 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldr r0, _080A8394 @ =sub_80A8398 - str r0, [r4] -_080A838A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A8390: .4byte gUnknown_83E3E60 -_080A8394: .4byte sub_80A8398 - thumb_func_end sub_80A8338 - - thumb_func_start sub_80A8398 -sub_80A8398: @ 80A8398 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080A83BC @ =gTasks - adds r4, r0, r1 - movs r0, 0xA - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _080A8400 - cmp r5, 0x1 - bgt _080A83C0 - cmp r5, 0 - beq _080A83CA - b _080A84A8 - .align 2, 0 -_080A83BC: .4byte gTasks -_080A83C0: - cmp r5, 0x2 - beq _080A8434 - cmp r5, 0x3 - beq _080A8464 - b _080A84A8 -_080A83CA: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - ldrh r2, [r4, 0x10] - adds r2, 0x3 - strh r2, [r4, 0x10] - ldr r3, _080A83FC @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x26] - adds r1, r2 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080A84A8 - strh r5, [r4, 0xE] - b _080A845C - .align 2, 0 -_080A83FC: .4byte gSprites -_080A8400: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - ldr r2, _080A8430 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x10] - ldrh r2, [r0, 0x26] - adds r1, r2 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080A84A8 - movs r0, 0 - strh r0, [r4, 0xE] - b _080A845C - .align 2, 0 -_080A8430: .4byte gSprites -_080A8434: - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080A845C - ldr r2, _080A8458 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - subs r1, 0x2 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0x10] - subs r0, 0x2 - strh r0, [r4, 0x10] - b _080A84A8 - .align 2, 0 -_080A8458: .4byte gSprites -_080A845C: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - b _080A84A8 -_080A8464: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080A84A8 - ldrh r0, [r4, 0xC] - subs r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - cmp r0, 0 - bne _080A849C - ldr r2, _080A8498 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r5, [r0, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask - b _080A84A8 - .align 2, 0 -_080A8498: .4byte gSprites -_080A849C: - ldrb r1, [r4, 0x8] - ldr r2, _080A84B0 @ =gUnknown_83E3E60 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - strh r5, [r4, 0xA] -_080A84A8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A84B0: .4byte gUnknown_83E3E60 - thumb_func_end sub_80A8398 - - thumb_func_start sub_80A84B4 -sub_80A84B4: @ 80A84B4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080A84E4 @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080A84E8 @ =gUnknown_83E3E80 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldr r0, _080A84EC @ =sub_80A84F0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A84E4: .4byte gTasks -_080A84E8: .4byte gUnknown_83E3E80 -_080A84EC: .4byte sub_80A84F0 - thumb_func_end sub_80A84B4 - - thumb_func_start sub_80A84F0 -sub_80A84F0: @ 80A84F0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080A8518 @ =gTasks - adds r0, r1 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080A8510 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A8510: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A8518: .4byte gTasks - thumb_func_end sub_80A84F0 - - thumb_func_start sub_80A851C -sub_80A851C: @ 80A851C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080A854C @ =gBattleAnimAttacker - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A8550 - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - strh r0, [r4, 0x20] - movs r0, 0x40 - b _080A856A - .align 2, 0 -_080A854C: .4byte gBattleAnimAttacker -_080A8550: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x20 - strh r0, [r4, 0x20] - ldr r0, _080A859C @ =0x0000ffc0 -_080A856A: - strh r0, [r4, 0x30] - ldr r0, _080A85A0 @ =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - strh r0, [r4, 0x22] - movs r0, 0x34 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x32] - strh r1, [r4, 0x34] - strh r1, [r4, 0x36] - ldr r1, _080A85A4 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A85A8 @ =TranslateSpriteLinearFixedPoint - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A859C: .4byte 0x0000ffc0 -_080A85A0: .4byte gBattleAnimAttacker -_080A85A4: .4byte DestroyAnimSprite -_080A85A8: .4byte TranslateSpriteLinearFixedPoint - thumb_func_end sub_80A851C - - thumb_func_start sub_80A85AC -sub_80A85AC: @ 80A85AC - push {r4-r6,lr} - adds r6, r0, 0 - ldr r0, _080A85C0 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A85C8 - ldr r0, _080A85C4 @ =gBattleAnimAttacker - b _080A85CA - .align 2, 0 -_080A85C0: .4byte gBattleAnimArgs -_080A85C4: .4byte gBattleAnimAttacker -_080A85C8: - ldr r0, _080A8628 @ =gBattleAnimTarget -_080A85CA: - ldrb r5, [r0] - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A85E4 - ldr r1, _080A862C @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x2] -_080A85E4: - adds r0, r5, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, _080A862C @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x20] - adds r0, r5, 0 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x4] - adds r0, r4 - strh r0, [r6, 0x22] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - bgt _080A8616 - movs r0, 0x8 - strh r0, [r6, 0x22] -_080A8616: - ldr r1, _080A8630 @ =DestroySpriteAndMatrix - adds r0, r6, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080A8634 @ =RunStoredCallbackWhenAffineAnimEnds - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A8628: .4byte gBattleAnimTarget -_080A862C: .4byte gBattleAnimArgs -_080A8630: .4byte DestroySpriteAndMatrix -_080A8634: .4byte RunStoredCallbackWhenAffineAnimEnds - thumb_func_end sub_80A85AC - - thumb_func_start sub_80A8638 -sub_80A8638: @ 80A8638 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080A866C @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - strh r1, [r4, 0x8] - strh r0, [r4, 0xA] - ldr r2, _080A8670 @ =gUnknown_83E3F1C - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldr r0, _080A8674 @ =sub_80A8678 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A866C: .4byte gTasks -_080A8670: .4byte gUnknown_83E3F1C -_080A8674: .4byte sub_80A8678 - thumb_func_end sub_80A8638 - - thumb_func_start sub_80A8678 -sub_80A8678: @ 80A8678 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080A86A0 @ =gTasks - adds r0, r1 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080A8698 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A8698: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A86A0: .4byte gTasks - thumb_func_end sub_80A8678 - - thumb_func_start sub_80A86A4 -sub_80A86A4: @ 80A86A4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080A8718 @ =gTasks - adds r4, r1, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - movs r2, 0 - strh r0, [r4, 0x8] - strh r2, [r4, 0xA] - movs r0, 0x4 - strh r0, [r4, 0xC] - movs r0, 0x7 - strh r0, [r4, 0xE] - movs r0, 0x3 - strh r0, [r4, 0x10] - ldr r3, _080A871C @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x20] - strh r0, [r4, 0x12] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x22] - strh r0, [r4, 0x14] - strh r2, [r4, 0x16] - strh r2, [r4, 0x18] - movs r0, 0x2 - strh r0, [r4, 0x1A] - ldr r0, _080A8720 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A870E - movs r1, 0xC - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0xC] -_080A870E: - ldr r0, _080A8724 @ =sub_80A8728 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A8718: .4byte gTasks -_080A871C: .4byte gSprites -_080A8720: .4byte gBattleAnimAttacker -_080A8724: .4byte sub_80A8728 - thumb_func_end sub_80A86A4 - - thumb_func_start sub_80A8728 -sub_80A8728: @ 80A8728 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080A8770 @ =gTasks - adds r3, r0, r1 - ldrh r0, [r3, 0x16] - adds r0, 0x1 - strh r0, [r3, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080A878E - movs r0, 0 - strh r0, [r3, 0x16] - ldrh r0, [r3, 0x18] - adds r0, 0x1 - strh r0, [r3, 0x18] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A8778 - ldr r2, _080A8774 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x1A] - ldrh r2, [r0, 0x22] - adds r1, r2 - b _080A878C - .align 2, 0 -_080A8770: .4byte gTasks -_080A8774: .4byte gSprites -_080A8778: - ldr r2, _080A87A0 @ =gSprites - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - ldrh r2, [r3, 0x1A] - subs r1, r2 -_080A878C: - strh r1, [r0, 0x22] -_080A878E: - movs r1, 0xA - ldrsh r0, [r3, r1] - cmp r0, 0x1 - beq _080A87DC - cmp r0, 0x1 - bgt _080A87A4 - cmp r0, 0 - beq _080A87AA - b _080A886C - .align 2, 0 -_080A87A0: .4byte gSprites -_080A87A4: - cmp r0, 0x2 - beq _080A880C - b _080A886C -_080A87AA: - ldr r2, _080A87D8 @ =gSprites - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0xC] - ldrh r2, [r0, 0x20] - adds r1, r2 - strh r1, [r0, 0x20] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _080A886C - movs r0, 0xE - strh r0, [r3, 0xE] - movs r0, 0x1 - strh r0, [r3, 0xA] - b _080A886C - .align 2, 0 -_080A87D8: .4byte gSprites -_080A87DC: - ldr r2, _080A8808 @ =gSprites - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x20] - ldrh r2, [r3, 0xC] - subs r1, r2 - strh r1, [r0, 0x20] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _080A886C - movs r0, 0x7 - strh r0, [r3, 0xE] - movs r0, 0x2 - strh r0, [r3, 0xA] - b _080A886C - .align 2, 0 -_080A8808: .4byte gSprites -_080A880C: - ldr r2, _080A8844 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0xC] - ldrh r5, [r0, 0x20] - adds r1, r5 - strh r1, [r0, 0x20] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - bne _080A886C - ldrh r0, [r3, 0x10] - subs r0, 0x1 - strh r0, [r3, 0x10] - lsls r0, 16 - cmp r0, 0 - beq _080A8848 - movs r0, 0x7 - strh r0, [r3, 0xE] - strh r1, [r3, 0xA] - b _080A886C - .align 2, 0 -_080A8844: .4byte gSprites -_080A8848: - ldrh r1, [r3, 0x18] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A8866 - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - ldrh r2, [r3, 0x1A] - subs r1, r2 - strh r1, [r0, 0x22] -_080A8866: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A886C: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A8728 - - thumb_func_start sub_80A8874 -sub_80A8874: @ 80A8874 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080A88C4 @ =gTasks - adds r5, r1, r0 - ldr r4, _080A88C8 @ =gBattleAnimTarget - ldrb r0, [r4] - bl GetBattlerYCoordWithElevation - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - movs r1, 0 - strh r0, [r5, 0x8] - movs r0, 0x4 - strh r0, [r5, 0xA] - strh r1, [r5, 0xC] - strh r1, [r5, 0xE] - strh r1, [r5, 0x10] - strh r1, [r5, 0x12] - ldrb r0, [r4] - bl GetBattlerSpriteCoordAttr - strh r0, [r5, 0x26] - ldrb r0, [r4] - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A88D4 - ldr r0, _080A88CC @ =gBattle_BG1_X - ldrh r0, [r0] - strh r0, [r5, 0x14] - ldr r0, _080A88D0 @ =0x04000014 - b _080A88DC - .align 2, 0 -_080A88C4: .4byte gTasks -_080A88C8: .4byte gBattleAnimTarget -_080A88CC: .4byte gBattle_BG1_X -_080A88D0: .4byte 0x04000014 -_080A88D4: - ldr r0, _080A8940 @ =gBattle_BG2_X - ldrh r0, [r0] - strh r0, [r5, 0x14] - ldr r0, _080A8944 @ =0x04000018 -_080A88DC: - str r0, [sp] - ldrh r0, [r5, 0x8] - adds r1, r0, 0 - subs r1, 0x40 - lsls r2, r1, 16 - lsls r0, 16 - cmp r2, r0 - bgt _080A891A - ldr r4, _080A8948 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r6, r4, r0 -_080A88F4: - asrs r3, r2, 16 - cmp r3, 0 - blt _080A890C - lsls r1, r3, 1 - adds r2, r1, r4 - ldrh r0, [r5, 0x14] - adds r0, 0xF0 - strh r0, [r2] - adds r1, r6 - ldrh r0, [r5, 0x14] - adds r0, 0xF0 - strh r0, [r1] -_080A890C: - adds r0, r3, 0x1 - lsls r2, r0, 16 - asrs r1, r2, 16 - movs r3, 0x8 - ldrsh r0, [r5, r3] - cmp r1, r0 - ble _080A88F4 -_080A891A: - ldr r0, _080A894C @ =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, _080A8950 @ =sub_80A8954 - str r0, [r5] - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A8940: .4byte gBattle_BG2_X -_080A8944: .4byte 0x04000018 -_080A8948: .4byte gScanlineEffectRegBuffers -_080A894C: .4byte 0xa2600001 -_080A8950: .4byte sub_80A8954 - thumb_func_end sub_80A8874 - - thumb_func_start sub_80A8954 -sub_80A8954: @ 80A8954 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080A8974 @ =gTasks - adds r3, r0, r1 - movs r1, 0x10 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _080A8978 - cmp r0, 0x1 - beq _080A898E - b _080A8A0E - .align 2, 0 -_080A8974: .4byte gTasks -_080A8978: - ldrh r0, [r3, 0x12] - adds r0, 0x1 - strh r0, [r3, 0x12] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080A8A0E - ldrh r0, [r3, 0x10] - adds r0, 0x1 - strh r0, [r3, 0x10] - b _080A8A0E -_080A898E: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080A8A0E - movs r0, 0 - strh r0, [r3, 0xA] - ldrh r1, [r3, 0xE] - movs r0, 0x3 - ands r0, r1 - strh r0, [r3, 0xC] - ldrh r0, [r3, 0x8] - subs r0, r1 - strh r0, [r3, 0x12] - movs r2, 0xC - ldrsh r1, [r3, r2] - cmp r1, 0x1 - beq _080A89C4 - cmp r1, 0x1 - ble _080A89CC - cmp r1, 0x2 - beq _080A89C8 - cmp r1, 0x3 - beq _080A89C8 - b _080A89CC -_080A89C4: - subs r0, 0x2 - b _080A89CA -_080A89C8: - adds r0, 0x1 -_080A89CA: - strh r0, [r3, 0x12] -_080A89CC: - movs r1, 0x12 - ldrsh r0, [r3, r1] - cmp r0, 0 - blt _080A89F0 - ldr r2, _080A8A14 @ =gScanlineEffectRegBuffers - lsls r0, 1 - adds r0, r2 - ldrh r1, [r3, 0x14] - strh r1, [r0] - movs r1, 0x12 - ldrsh r0, [r3, r1] - lsls r0, 1 - movs r1, 0xF0 - lsls r1, 3 - adds r2, r1 - adds r0, r2 - ldrh r1, [r3, 0x14] - strh r1, [r0] -_080A89F0: - ldrh r0, [r3, 0xE] - adds r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x26 - ldrsh r1, [r3, r2] - cmp r0, r1 - blt _080A8A0E - ldr r1, _080A8A18 @ =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A8A0E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A8A14: .4byte gScanlineEffectRegBuffers -_080A8A18: .4byte gScanlineEffect - thumb_func_end sub_80A8954 - - thumb_func_start sub_80A8A1C -sub_80A8A1C: @ 80A8A1C - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, _080A8A70 @ =gBattleAnimTarget - ldrb r0, [r6] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x10 - movs r5, 0 - strh r0, [r4, 0x20] - ldrb r0, [r6] - bl GetBattlerYCoordWithElevation - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - strh r0, [r4, 0x22] - strh r5, [r4, 0x2E] - strh r5, [r4, 0x30] - strh r5, [r4, 0x32] - movs r0, 0x10 - strh r0, [r4, 0x34] - strh r5, [r4, 0x36] - ldrb r0, [r6] - movs r1, 0 - bl GetBattlerSpriteCoordAttr - adds r0, 0x2 - strh r0, [r4, 0x38] - movs r0, 0x3F - bl BattleAnimAdjustPanning - lsls r0, 24 - asrs r0, 24 - strh r0, [r4, 0x3A] - ldr r0, _080A8A74 @ =sub_80A8A78 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A8A70: .4byte gBattleAnimTarget -_080A8A74: .4byte sub_80A8A78 - thumb_func_end sub_80A8A1C - - thumb_func_start sub_80A8A78 -sub_80A8A78: @ 80A8A78 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _080A8ADC - cmp r1, 0x1 - bgt _080A8A8E - cmp r1, 0 - beq _080A8A94 - b _080A8BBC -_080A8A8E: - cmp r1, 0x2 - beq _080A8B6E - b _080A8BBC -_080A8A94: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A8ABE - strh r1, [r4, 0x32] - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080A8ABE: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080A8BBC - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r2] - b _080A8B66 -_080A8ADC: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080A8B22 - ldrh r2, [r4, 0x32] - movs r3, 0x32 - ldrsh r1, [r4, r3] - movs r3, 0x38 - ldrsh r0, [r4, r3] - cmp r1, r0 - bge _080A8B22 - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - subs r0, 0x1 - strh r0, [r4, 0x22] - adds r0, r2, 0x1 - strh r0, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _080A8B22 - ldrh r1, [r4, 0x3A] - lsls r1, 24 - asrs r1, 24 - movs r0, 0xC6 - bl PlaySE12WithPanning -_080A8B22: - ldrh r0, [r4, 0x34] - ldrh r2, [r4, 0x36] - adds r1, r0, r2 - strh r1, [r4, 0x36] - lsls r0, r1, 16 - asrs r2, r0, 16 - cmp r2, 0x1F - ble _080A8B36 - movs r0, 0x40 - b _080A8B44 -_080A8B36: - movs r0, 0x20 - negs r0, r0 - cmp r2, r0 - bgt _080A8B50 - movs r2, 0x40 - negs r2, r2 - adds r0, r2, 0 -_080A8B44: - subs r0, r1 - strh r0, [r4, 0x36] - movs r3, 0x34 - ldrsh r0, [r4, r3] - negs r0, r0 - strh r0, [r4, 0x34] -_080A8B50: - ldrh r0, [r4, 0x36] - movs r2, 0 - strh r0, [r4, 0x24] - movs r0, 0x38 - ldrsh r1, [r4, r0] - movs r3, 0x32 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _080A8BBC - strh r2, [r4, 0x30] - strh r2, [r4, 0x32] -_080A8B66: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080A8BBC -_080A8B6E: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A8B9A - movs r0, 0 - strh r0, [r4, 0x32] - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080A8B9A: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080A8BBC - 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 - bl DestroyAnimSprite -_080A8BBC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A8A78 - - thumb_func_start sub_80A8BC4 -sub_80A8BC4: @ 80A8BC4 - push {r4-r7,lr} - sub sp, 0x4 - adds r6, r0, 0 - movs r5, 0 - mov r0, sp - strh r5, [r0] - mov r1, sp - adds r1, 0x2 - strh r5, [r1] - ldr r0, _080A8BE8 @ =gBattleAnimArgs - movs r3, 0x4 - ldrsh r2, [r0, r3] - adds r7, r1, 0 - adds r1, r0, 0 - cmp r2, 0 - bne _080A8BF0 - ldr r0, _080A8BEC @ =gBattleAnimAttacker - b _080A8BF2 - .align 2, 0 -_080A8BE8: .4byte gBattleAnimArgs -_080A8BEC: .4byte gBattleAnimAttacker -_080A8BF0: - ldr r0, _080A8C2C @ =gBattleAnimTarget -_080A8BF2: - ldrb r5, [r0] - ldrb r1, [r1, 0x6] - movs r0, 0x1 - adds r4, r0, 0 - eors r4, r1 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080A8C6A - movs r1, 0x2 - adds r0, r5, 0 - eors r0, r1 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A8C6A - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, sp - adds r3, r7, 0 - bl SetAverageBattlerPositions - cmp r4, 0 - bne _080A8C30 - adds r0, r5, 0 - movs r1, 0 - b _080A8C34 - .align 2, 0 -_080A8C2C: .4byte gBattleAnimTarget -_080A8C30: - adds r0, r5, 0 - movs r1, 0x2 -_080A8C34: - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A8C60 - ldr r2, _080A8C5C @ =gBattleAnimArgs - mov r0, sp - ldrh r1, [r0] - subs r1, r4 - ldrh r0, [r2] - subs r1, r0 - subs r0, r1 - strh r0, [r2] - b _080A8C6A - .align 2, 0 -_080A8C5C: .4byte gBattleAnimArgs -_080A8C60: - ldr r1, _080A8C7C @ =gBattleAnimArgs - mov r0, sp - ldrh r0, [r0] - subs r0, r4 - strh r0, [r1] -_080A8C6A: - ldr r1, _080A8C80 @ =AnimSpriteOnMonPos - str r1, [r6, 0x1C] - adds r0, r6, 0 - bl _call_via_r1 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A8C7C: .4byte gBattleAnimArgs -_080A8C80: .4byte AnimSpriteOnMonPos - thumb_func_end sub_80A8BC4 - - thumb_func_start sub_80A8C84 -sub_80A8C84: @ 80A8C84 - push {r4,lr} - adds r4, r0, 0 - bl AnimTranslateLinear - lsls r0, 24 - cmp r0, 0 - beq _080A8C9E - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroyAnimSprite -_080A8C9E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A8C84 - - thumb_func_start sub_80A8CA4 -sub_80A8CA4: @ 80A8CA4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r5, r0, 0 - movs r6, 0 - mov r0, sp - strh r6, [r0] - mov r1, sp - adds r1, 0x2 - strh r6, [r1] - ldr r0, _080A8CD0 @ =gBattleAnimArgs - movs r2, 0xA - ldrsh r0, [r0, r2] - cmp r0, 0 - bne _080A8CDC - ldr r0, _080A8CD4 @ =gBattleAnimAttacker - ldrb r7, [r0] - ldr r0, _080A8CD8 @ =gBattleAnimTarget - b _080A8CE2 - .align 2, 0 -_080A8CD0: .4byte gBattleAnimArgs -_080A8CD4: .4byte gBattleAnimAttacker -_080A8CD8: .4byte gBattleAnimTarget -_080A8CDC: - ldr r0, _080A8CFC @ =gBattleAnimTarget - ldrb r7, [r0] - ldr r0, _080A8D00 @ =gBattleAnimAttacker -_080A8CE2: - ldrb r0, [r0] - mov r8, r0 - ldr r0, _080A8D04 @ =gBattleAnimArgs - movs r3, 0xC - ldrsh r0, [r0, r3] - cmp r0, 0 - bne _080A8D08 - movs r0, 0 - mov r10, r0 - movs r1, 0x1 - str r1, [sp, 0x4] - b _080A8D10 - .align 2, 0 -_080A8CFC: .4byte gBattleAnimTarget -_080A8D00: .4byte gBattleAnimAttacker -_080A8D04: .4byte gBattleAnimArgs -_080A8D08: - movs r2, 0x2 - mov r10, r2 - movs r3, 0x3 - str r3, [sp, 0x4] -_080A8D10: - adds r0, r7, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A8D6C - adds r0, r7, 0 - mov r1, r10 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r1, _080A8D50 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - movs r0, 0x2 - mov r4, r8 - eors r4, r0 - adds r0, r4, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A8D5C - ldr r2, _080A8D54 @ =gSprites - ldr r0, _080A8D58 @ =gBattlerSpriteIds - adds r0, r4, r0 - b _080A8DEA - .align 2, 0 -_080A8D50: .4byte gBattleAnimArgs -_080A8D54: .4byte gSprites -_080A8D58: .4byte gBattlerSpriteIds -_080A8D5C: - ldr r2, _080A8D64 @ =gSprites - ldr r0, _080A8D68 @ =gBattlerSpriteIds - add r0, r8 - b _080A8DEA - .align 2, 0 -_080A8D64: .4byte gSprites -_080A8D68: .4byte gBattlerSpriteIds -_080A8D6C: - adds r0, r7, 0 - mov r1, r10 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080A8DD4 @ =gBattleAnimArgs - ldrh r1, [r1] - subs r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A8DE4 - movs r0, 0x2 - adds r4, r7, 0 - eors r4, r0 - adds r0, r4, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A8DE4 - ldr r3, _080A8DD8 @ =gSprites - ldr r2, _080A8DDC @ =gBattlerSpriteIds - adds r0, r7, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r6, r0, r3 - adds r2, r4, r2 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r3 - movs r0, 0x20 - ldrsh r1, [r6, r0] - movs r3, 0x20 - ldrsh r0, [r2, r3] - cmp r1, r0 - bge _080A8DE0 - adds r0, r2, 0 - adds r0, 0x43 - ldrb r0, [r0] - adds r0, 0x1 - b _080A8DFA - .align 2, 0 -_080A8DD4: .4byte gBattleAnimArgs -_080A8DD8: .4byte gSprites -_080A8DDC: .4byte gBattlerSpriteIds -_080A8DE0: - adds r0, r6, 0 - b _080A8DF4 -_080A8DE4: - ldr r2, _080A8E40 @ =gSprites - ldr r0, _080A8E44 @ =gBattlerSpriteIds - adds r0, r7, r0 -_080A8DEA: - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 -_080A8DF4: - adds r0, 0x43 - ldrb r0, [r0] - subs r0, 0x1 -_080A8DFA: - adds r1, r5, 0 - adds r1, 0x43 - strb r0, [r1] - adds r0, r7, 0 - ldr r1, [sp, 0x4] - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, _080A8E48 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - lsls r0, 16 - lsrs r6, r0, 16 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A8E4C - movs r1, 0x2 - mov r0, r8 - eors r0, r1 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A8E4C - ldrb r1, [r4, 0xC] - mov r0, r8 - mov r2, sp - mov r3, sp - adds r3, 0x2 - bl SetAverageBattlerPositions - b _080A8E6C - .align 2, 0 -_080A8E40: .4byte gSprites -_080A8E44: .4byte gBattlerSpriteIds -_080A8E48: .4byte gBattleAnimArgs -_080A8E4C: - mov r4, sp - mov r0, r8 - mov r1, r10 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - mov r0, r8 - ldr r1, [sp, 0x4] - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - mov r2, sp - strh r0, [r2, 0x2] -_080A8E6C: - mov r0, r8 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A8E90 - mov r3, sp - mov r2, sp - ldr r1, _080A8E8C @ =gBattleAnimArgs - ldrh r0, [r1, 0x6] - ldrh r2, [r2] - adds r0, r2 - strh r0, [r3] - adds r2, r1, 0 - b _080A8E9E - .align 2, 0 -_080A8E8C: .4byte gBattleAnimArgs -_080A8E90: - mov r3, sp - mov r0, sp - ldr r2, _080A8EE0 @ =gBattleAnimArgs - ldrh r0, [r0] - ldrh r1, [r2, 0x6] - subs r0, r1 - strh r0, [r3] -_080A8E9E: - ldrh r1, [r2, 0x8] - mov r3, sp - ldrh r3, [r3, 0x2] - adds r1, r3 - mov r0, sp - strh r1, [r0, 0x2] - mov r3, r9 - strh r3, [r5, 0x30] - strh r3, [r5, 0x20] - strh r6, [r5, 0x34] - strh r6, [r5, 0x22] - ldrh r0, [r0] - strh r0, [r5, 0x32] - strh r1, [r5, 0x36] - ldrh r0, [r2] - strh r0, [r5, 0x2E] - adds r0, r5, 0 - bl InitAnimLinearTranslation - ldr r1, _080A8EE4 @ =sub_80A8C84 - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A8EE0: .4byte gBattleAnimArgs -_080A8EE4: .4byte sub_80A8C84 - thumb_func_end sub_80A8CA4 - - thumb_func_start sub_80A8EE8 -sub_80A8EE8: @ 80A8EE8 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080A8F28 @ =0x000027db - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080A8F0E - lsls r0, 20 - ldr r1, _080A8F2C @ =0x01010000 - adds r0, r1 - lsrs r0, 16 - ldr r1, _080A8F30 @ =gBattleAnimArgs - ldrb r2, [r1, 0xA] - ldrh r3, [r1, 0x8] - movs r1, 0xF - bl BlendPalette -_080A8F0E: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r1, _080A8F34 @ =AnimSpriteOnMonPos - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A8F28: .4byte 0x000027db -_080A8F2C: .4byte 0x01010000 -_080A8F30: .4byte gBattleAnimArgs -_080A8F34: .4byte AnimSpriteOnMonPos - thumb_func_end sub_80A8EE8 - - thumb_func_start sub_80A8F38 -sub_80A8F38: @ 80A8F38 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker - ldr r0, _080A8F6C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - movs r1, 0xA0 - cmp r0, 0 - beq _080A8F54 - ldr r1, _080A8F70 @ =0x0000ff60 -_080A8F54: - movs r0, 0xE0 - lsls r0, 2 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - ldr r0, _080A8F74 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x3C] - ldr r0, _080A8F78 @ =sub_80A8F7C - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A8F6C: .4byte gBattleAnimAttacker -_080A8F70: .4byte 0x0000ff60 -_080A8F74: .4byte gBattleAnimArgs -_080A8F78: .4byte sub_80A8F7C - thumb_func_end sub_80A8F38 - - thumb_func_start sub_80A8F7C -sub_80A8F7C: @ 80A8F7C - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x2E] - lsls r0, r2, 16 - asrs r0, 24 - ldrh r1, [r4, 0x26] - subs r1, r0 - movs r5, 0 - strh r1, [r4, 0x26] - ldrh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - subs r2, 0x20 - strh r2, [r4, 0x2E] - ldr r0, _080A8FE8 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - movs r1, 0xA0 - cmp r0, 0 - beq _080A8FAC - ldr r1, _080A8FEC @ =0x0000ff60 -_080A8FAC: - lsls r0, r1, 16 - asrs r0, 16 - ldrh r1, [r4, 0x30] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x26] - movs r2, 0x26 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080A8FE0 - ldrh r2, [r4, 0x22] - adds r0, r1, r2 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - strh r5, [r4, 0x26] - strh r5, [r4, 0x24] - strh r5, [r4, 0x2E] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r0, _080A8FF0 @ =sub_80A8FF4 - str r0, [r4, 0x1C] -_080A8FE0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A8FE8: .4byte gBattleAnimAttacker -_080A8FEC: .4byte 0x0000ff60 -_080A8FF0: .4byte sub_80A8FF4 - thumb_func_end sub_80A8F7C - - thumb_func_start sub_80A8FF4 -sub_80A8FF4: @ 80A8FF4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r1, r0, 0x1 - strh r1, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _080A9012 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldr r0, _080A9018 @ =sub_80A901C - str r0, [r4, 0x1C] -_080A9012: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A9018: .4byte sub_80A901C - thumb_func_end sub_80A8FF4 - - thumb_func_start sub_80A901C -sub_80A901C: @ 80A901C - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080A9082 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - movs r0, 0 - strh r0, [r4, 0x2E] - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A9068 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x10 - ldr r3, _080A905C @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080A9060 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - ldr r0, _080A9064 @ =sub_80A9094 - b _080A9080 - .align 2, 0 -_080A905C: .4byte 0x000003ff -_080A9060: .4byte 0xfffffc00 -_080A9064: .4byte sub_80A9094 -_080A9068: - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x20 - ldr r3, _080A9088 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080A908C @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - ldr r0, _080A9090 @ =sub_80A911C -_080A9080: - str r0, [r4, 0x1C] -_080A9082: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A9088: .4byte 0x000003ff -_080A908C: .4byte 0xfffffc00 -_080A9090: .4byte sub_80A911C - thumb_func_end sub_80A901C - - thumb_func_start sub_80A9094 -sub_80A9094: @ 80A9094 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x26] - subs r0, 0x2 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bne _080A90CA - movs r0, 0x10 - strh r0, [r4, 0x2E] - movs r0, 0 - strh r0, [r4, 0x30] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - ldrh r1, [r4, 0x2E] - movs r0, 0x52 - bl SetGpuReg - ldr r0, _080A90D0 @ =sub_80A90D4 - str r0, [r4, 0x1C] -_080A90CA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A90D0: .4byte sub_80A90D4 - thumb_func_end sub_80A9094 - - thumb_func_start sub_80A90D4 -sub_80A90D4: @ 80A90D4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r1, r0, 0x1 - strh r1, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x3 - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _080A9112 - ldrh r1, [r4, 0x2E] - subs r1, 0x1 - strh r1, [r4, 0x2E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A9112 - ldr r0, _080A9118 @ =sub_80A911C - str r0, [r4, 0x1C] -_080A9112: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A9118: .4byte sub_80A911C - thumb_func_end sub_80A90D4 - - thumb_func_start sub_80A911C -sub_80A911C: @ 80A911C - push {lr} - adds r3, r0, 0 - ldr r0, _080A9144 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080A9148 @ =0x0000ffff - cmp r1, r0 - bne _080A9154 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r1, 0x3C - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080A9150 - ldr r0, _080A914C @ =sub_80A915C - b _080A9152 - .align 2, 0 -_080A9144: .4byte gBattleAnimArgs -_080A9148: .4byte 0x0000ffff -_080A914C: .4byte sub_80A915C -_080A9150: - ldr r0, _080A9158 @ =DestroyAnimSprite -_080A9152: - str r0, [r3, 0x1C] -_080A9154: - pop {r0} - bx r0 - .align 2, 0 -_080A9158: .4byte DestroyAnimSprite - thumb_func_end sub_80A911C - - thumb_func_start sub_80A915C -sub_80A915C: @ 80A915C - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimSprite - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A915C - - thumb_func_start sub_80A917C -sub_80A917C: @ 80A917C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080A91AC @ =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r4, 0x8] - ldr r2, _080A91B0 @ =gUnknown_83E4128 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldr r0, _080A91B4 @ =sub_80A91B8 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A91AC: .4byte gTasks -_080A91B0: .4byte gUnknown_83E4128 -_080A91B4: .4byte sub_80A91B8 - thumb_func_end sub_80A917C - - thumb_func_start sub_80A91B8 -sub_80A91B8: @ 80A91B8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080A9208 @ =gTasks - adds r4, r0, r1 - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _080A9202 - ldr r2, _080A920C @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r3, [r0, 0x26] - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A9202: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A9208: .4byte gTasks -_080A920C: .4byte gSprites - thumb_func_end sub_80A91B8 - - thumb_func_start sub_80A9210 -sub_80A9210: @ 80A9210 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080A9244 @ =gTasks - adds r4, r1, r0 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r0, 0x3 - strh r0, [r4, 0x20] - ldr r0, _080A9248 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A9250 - ldr r0, _080A924C @ =0x0000ffff - strh r0, [r4, 0x22] - movs r0, 0x8 - b _080A9256 - .align 2, 0 -_080A9244: .4byte gTasks -_080A9248: .4byte gBattleAnimTarget -_080A924C: .4byte 0x0000ffff -_080A9250: - movs r0, 0x1 - strh r0, [r4, 0x22] - ldr r0, _080A9270 @ =0x0000fff8 -_080A9256: - strh r0, [r4, 0x24] - movs r0, 0x1 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080A9274 @ =sub_80A9278 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A9270: .4byte 0x0000fff8 -_080A9274: .4byte sub_80A9278 - thumb_func_end sub_80A9210 - - thumb_func_start sub_80A9278 -sub_80A9278: @ 80A9278 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080A929C @ =gTasks - adds r3, r0, r1 - movs r0, 0x8 - ldrsh r4, [r3, r0] - cmp r4, 0x1 - beq _080A92CC - cmp r4, 0x1 - bgt _080A92A0 - cmp r4, 0 - beq _080A92AA - b _080A9392 - .align 2, 0 -_080A929C: .4byte gTasks -_080A92A0: - cmp r4, 0x2 - beq _080A9348 - cmp r4, 0x3 - beq _080A9362 - b _080A9392 -_080A92AA: - ldr r2, _080A92C8 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x24] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - strh r4, [r3, 0xA] - strh r4, [r3, 0xC] - strh r4, [r3, 0xE] - b _080A935A - .align 2, 0 -_080A92C8: .4byte gSprites -_080A92CC: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A9392 - movs r0, 0 - strh r0, [r3, 0xA] - ldrh r0, [r3, 0xC] - adds r0, 0x1 - strh r0, [r3, 0xC] - ands r0, r4 - lsls r0, 16 - cmp r0, 0 - beq _080A9304 - ldr r2, _080A9300 @ =gSprites - movs r4, 0x26 - ldrsh r1, [r3, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - adds r1, 0x6 - b _080A9316 - .align 2, 0 -_080A9300: .4byte gSprites -_080A9304: - ldr r2, _080A9344 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - subs r1, 0x6 -_080A9316: - strh r1, [r0, 0x24] - ldrh r0, [r3, 0xE] - adds r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080A9392 - ldrh r1, [r3, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A935A - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x24] - subs r0, 0x6 - strh r0, [r1, 0x24] - b _080A935A - .align 2, 0 -_080A9344: .4byte gSprites -_080A9348: - ldrh r0, [r3, 0x20] - subs r0, 0x1 - strh r0, [r3, 0x20] - lsls r0, 16 - cmp r0, 0 - beq _080A935A - movs r0, 0 - strh r0, [r3, 0x8] - b _080A9392 -_080A935A: - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - b _080A9392 -_080A9362: - ldr r2, _080A9398 @ =gSprites - movs r4, 0x26 - ldrsh r1, [r3, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x22] - ldrh r4, [r0, 0x24] - adds r1, r4 - strh r1, [r0, 0x24] - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x24 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080A9392 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A9392: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A9398: .4byte gSprites - thumb_func_end sub_80A9278 - - thumb_func_start sub_80A939C -sub_80A939C: @ 80A939C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080A93D8 @ =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r0, 0x1 - strh r0, [r4, 0x10] - movs r0, 0xE - strh r0, [r4, 0x22] - movs r0, 0x2 - strh r0, [r4, 0x24] - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080A93DC @ =sub_80A93E0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A93D8: .4byte gTasks -_080A93DC: .4byte sub_80A93E0 - thumb_func_end sub_80A939C - - thumb_func_start sub_80A93E0 -sub_80A93E0: @ 80A93E0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080A9434 @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r2, [r4, r0] - cmp r2, 0 - bne _080A94A6 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x10 - ldrsh r1, [r4, r3] - cmp r0, r1 - ble _080A94A6 - strh r2, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A943C - ldr r3, _080A9438 @ =gSprites - movs r6, 0x26 - ldrsh r1, [r4, r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - b _080A9452 - .align 2, 0 -_080A9434: .4byte gTasks -_080A9438: .4byte gSprites -_080A943C: - ldr r3, _080A9484 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 -_080A9452: - strb r1, [r0] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - movs r2, 0 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r6, 0x22 - ldrsh r1, [r4, r6] - cmp r0, r1 - blt _080A94A6 - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - movs r6, 0x24 - ldrsh r1, [r4, r6] - cmp r0, r1 - bge _080A9488 - strh r2, [r4, 0xA] - strh r2, [r4, 0xC] - strh r2, [r4, 0xE] - b _080A94A6 - .align 2, 0 -_080A9484: .4byte gSprites -_080A9488: - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A94A6: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A93E0 - - thumb_func_start sub_80A94AC -sub_80A94AC: @ 80A94AC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080A94FC @ =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - movs r1, 0x4 - strh r1, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - strh r0, [r4, 0x10] - strh r0, [r4, 0x12] - strh r0, [r4, 0x14] - strh r0, [r4, 0x16] - strh r0, [r4, 0x18] - strh r0, [r4, 0x22] - ldr r5, _080A9500 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x24] - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080A9504 @ =sub_80A9508 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A94FC: .4byte gTasks -_080A9500: .4byte gBattleAnimAttacker -_080A9504: .4byte sub_80A9508 - thumb_func_end sub_80A94AC - - thumb_func_start sub_80A9508 -sub_80A9508: @ 80A9508 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080A952C @ =gTasks - adds r4, r0, r1 - movs r0, 0x18 - ldrsh r2, [r4, r0] - cmp r2, 0x1 - beq _080A9574 - cmp r2, 0x1 - bgt _080A9530 - cmp r2, 0 - beq _080A9536 - b _080A9590 - .align 2, 0 -_080A952C: .4byte gTasks -_080A9530: - cmp r2, 0x2 - beq _080A958C - b _080A9590 -_080A9536: - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A9590 - strh r2, [r4, 0x10] - ldrh r0, [r4, 0x12] - adds r0, 0x1 - movs r1, 0x1 - ands r0, r1 - strh r0, [r4, 0x12] - ldrh r0, [r4, 0x14] - adds r0, 0x1 - strh r0, [r4, 0x14] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080A9590 - movs r1, 0x16 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A956E - strh r2, [r4, 0x14] - movs r0, 0x1 - strh r0, [r4, 0x18] - b _080A9590 -_080A956E: - movs r0, 0x2 - strh r0, [r4, 0x18] - b _080A9590 -_080A9574: - movs r1, 0 - strh r1, [r4, 0x12] - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080A9590 - strh r2, [r4, 0x16] - strh r1, [r4, 0x18] - b _080A9590 -_080A958C: - movs r0, 0x1 - strh r0, [r4, 0x12] -_080A9590: - movs r2, 0x8 - ldrsh r5, [r4, r2] - cmp r5, 0 - beq _080A959E - cmp r5, 0x1 - beq _080A9634 - b _080A9642 -_080A959E: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080A9642 - strh r5, [r4, 0xA] - ldr r0, _080A9628 @ =gUnknown_83E4154 - movs r3, 0x24 - ldrsh r1, [r4, r3] - movs r3, 0x26 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _080A9642 - ldr r0, _080A962C @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - strh r6, [r1, 0x2E] - movs r0, 0xD - strh r0, [r1, 0x30] - ldr r2, _080A9630 @ =gUnknown_83E416C - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - strh r0, [r1, 0x24] - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r2, 0x1 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - strh r0, [r1, 0x26] - ldrh r0, [r4, 0x22] - adds r0, 0x1 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080A9642 - strh r5, [r4, 0xC] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080A9642 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080A9642 - .align 2, 0 -_080A9628: .4byte gUnknown_83E4154 -_080A962C: .4byte gSprites -_080A9630: .4byte gUnknown_83E416C -_080A9634: - movs r1, 0x22 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A9642 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080A9642: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A9508 - - thumb_func_start sub_80A9648 -sub_80A9648: @ 80A9648 - push {r4,lr} - adds r3, r0, 0 - ldr r4, _080A96B0 @ =gTasks - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - movs r1, 0x3E - adds r1, r3 - mov r12, r1 - movs r2, 0x1 - ldrb r1, [r0, 0x12] - ands r1, r2 - lsls r1, 2 - mov r0, r12 - ldrb r2, [r0] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - adds r0, r3, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A96AA - movs r0, 0x30 - ldrsh r1, [r3, r0] - lsls r1, 1 - movs r0, 0x2E - ldrsh r2, [r3, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r0, r4, 0 - adds r0, 0x8 - adds r1, r0 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r3, 0 - bl DestroySprite -_080A96AA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A96B0: .4byte gTasks - thumb_func_end sub_80A9648 - - thumb_func_start sub_80A96B4 -sub_80A96B4: @ 80A96B4 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080A9750 @ =0x000027de - bl IndexOfSpritePaletteTag - mov r1, sp - strb r0, [r1] - movs r4, 0x1 - ldr r0, _080A9754 @ =0x00002710 - adds r5, r0, 0 -_080A96CC: - subs r0, r5, r4 - lsls r0, 16 - lsrs r0, 16 - bl AllocSpritePalette - mov r2, sp - adds r1, r2, r4 - strb r0, [r1] - adds r4, 0x1 - cmp r4, 0x2 - ble _080A96CC - movs r0, 0x80 - lsls r0, 6 - bl AllocZeroed - adds r1, r0, 0 - ldr r0, _080A9758 @ =gMonSpritesGfxPtr - ldr r0, [r0] - movs r2, 0xBE - lsls r2, 1 - adds r0, r2 - str r1, [r0] - ldr r0, _080A975C @ =gFile_graphics_battle_anims_sprites_206_palette - bl LZDecompressWram - movs r4, 0 -_080A9700: - ldr r5, _080A9758 @ =gMonSpritesGfxPtr - ldr r0, [r5] - movs r1, 0xBE - lsls r1, 1 - adds r0, r1 - lsls r1, r4, 6 - ldr r0, [r0] - adds r0, r1 - mov r2, sp - adds r1, r2, r4 - ldrb r1, [r1] - lsls r1, 20 - movs r2, 0x80 - lsls r2, 17 - adds r1, r2 - lsrs r1, 16 - movs r2, 0x20 - bl LoadPalette - adds r4, 0x1 - cmp r4, 0x2 - ble _080A9700 - ldr r0, [r5] - movs r4, 0xBE - lsls r4, 1 - adds r0, r4 - ldr r0, [r0] - bl Free - ldr r0, [r5] - adds r0, r4 - movs r1, 0 - str r1, [r0] - adds r0, r6, 0 - bl DestroyAnimVisualTask - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A9750: .4byte 0x000027de -_080A9754: .4byte 0x00002710 -_080A9758: .4byte gMonSpritesGfxPtr -_080A975C: .4byte gFile_graphics_battle_anims_sprites_206_palette - thumb_func_end sub_80A96B4 - - thumb_func_start sub_80A9760 -sub_80A9760: @ 80A9760 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, _080A9784 @ =gUnknown_83E41C8 - movs r4, 0x2 -_080A976A: - ldrh r0, [r5] - bl FreeSpritePaletteByTag - adds r5, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080A976A - adds r0, r6, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A9784: .4byte gUnknown_83E41C8 - thumb_func_end sub_80A9760 - - thumb_func_start sub_80A9788 -sub_80A9788: @ 80A9788 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - lsls r2, 24 - lsrs r3, r2, 24 - movs r0, 0x1 - ands r3, r0 - negs r0, r3 - orrs r0, r3 - asrs r0, 31 - movs r3, 0x20 - ands r0, r3 - ldrh r4, [r5, 0x4] - lsls r3, r4, 22 - lsrs r3, 22 - lsrs r1, 22 - adds r0, r1 - adds r3, r0 - ldr r1, _080A97DC @ =0x000003ff - adds r0, r1, 0 - ands r3, r0 - ldr r0, _080A97E0 @ =0xfffffc00 - ands r0, r4 - orrs r0, r3 - strh r0, [r5, 0x4] - ldr r0, _080A97E4 @ =gUnknown_83E41C8 - lsrs r2, 25 - lsls r2, 1 - adds r2, r0 - ldrh r0, [r2] - bl IndexOfSpritePaletteTag - lsls r0, 4 - ldrb r2, [r5, 0x5] - movs r1, 0xF - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A97DC: .4byte 0x000003ff -_080A97E0: .4byte 0xfffffc00 -_080A97E4: .4byte gUnknown_83E41C8 - thumb_func_end sub_80A9788 - - thumb_func_start sub_80A97E8 -sub_80A97E8: @ 80A97E8 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker - ldr r6, _080A9850 @ =gBattleAnimAttacker - ldrb r0, [r6] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A9808 - ldr r1, _080A9854 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080A9808: - ldr r4, _080A9854 @ =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x2E] - ldrb r0, [r6] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r5, 0x32] - ldrb r0, [r6] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x6] - adds r0, r1 - strh r0, [r5, 0x36] - ldr r0, _080A9858 @ =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, _080A985C @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldrb r1, [r4, 0xA] - ldrb r2, [r4, 0xC] - adds r0, r5, 0 - bl sub_80A9788 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A9850: .4byte gBattleAnimAttacker -_080A9854: .4byte gBattleAnimArgs -_080A9858: .4byte StartAnimLinearTranslation -_080A985C: .4byte DestroyAnimSprite - thumb_func_end sub_80A97E8 - - thumb_func_start sub_80A9860 -sub_80A9860: @ 80A9860 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A987A - adds r0, r4, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker -_080A987A: - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Sin - strh r0, [r4, 0x24] - ldrh r2, [r4, 0x32] - lsls r0, r2, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x7 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - subs r2, 0x80 - strh r2, [r4, 0x32] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x3C - bne _080A98AA - adds r0, r4, 0 - bl DestroyAnimSprite -_080A98AA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A9860 - - thumb_func_start sub_80A98B0 -sub_80A98B0: @ 80A98B0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - bl IsContest - lsls r0, 24 - movs r6, 0xF0 - cmp r0, 0 - beq _080A98C4 - movs r6, 0x98 -_080A98C4: - movs r5, 0 - ldr r1, _080A9918 @ =gBattle_WIN0H - strh r6, [r1] - ldr r4, _080A991C @ =gBattle_WIN0V - movs r0, 0xA0 - strh r0, [r4] - ldrh r1, [r1] - movs r0, 0x40 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x44 - bl SetGpuReg - ldr r1, _080A9920 @ =0x00003f1f - movs r0, 0x48 - bl SetGpuReg - ldr r1, _080A9924 @ =0x00003f3f - movs r0, 0x4A - bl SetGpuReg - movs r0, 0x50 - movs r1, 0xC8 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0x10 - bl SetGpuReg - ldr r1, _080A9928 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0x8] - strh r6, [r0, 0xA] - ldr r1, _080A992C @ =sub_80A9930 - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A9918: .4byte gBattle_WIN0H -_080A991C: .4byte gBattle_WIN0V -_080A9920: .4byte 0x00003f1f -_080A9924: .4byte 0x00003f3f -_080A9928: .4byte gTasks -_080A992C: .4byte sub_80A9930 - thumb_func_end sub_80A98B0 - - thumb_func_start sub_80A9930 -sub_80A9930: @ 80A9930 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080A9964 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r3, r1, r2 - ldrh r0, [r3, 0x8] - adds r4, r0, 0 - adds r4, 0xD - strh r4, [r3, 0x8] - ldrh r0, [r3, 0xA] - adds r2, r0, 0 - subs r2, 0xD - strh r2, [r3, 0xA] - lsls r1, r4, 16 - lsls r0, r2, 16 - cmp r1, r0 - blt _080A9970 - ldr r0, _080A9968 @ =gBattle_WIN0H - movs r1, 0 - strh r1, [r0] - ldr r0, _080A996C @ =sub_80A9984 - str r0, [r3] - b _080A9978 - .align 2, 0 -_080A9964: .4byte gTasks -_080A9968: .4byte gBattle_WIN0H -_080A996C: .4byte sub_80A9984 -_080A9970: - ldr r1, _080A9980 @ =gBattle_WIN0H - lsls r0, r4, 8 - orrs r2, r0 - strh r2, [r1] -_080A9978: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A9980: .4byte gBattle_WIN0H - thumb_func_end sub_80A9930 - - thumb_func_start sub_80A9984 -sub_80A9984: @ 80A9984 - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _080A99D0 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r1, r0, r1 - ldrh r0, [r1, 0x1C] - adds r0, 0x1 - movs r4, 0 - strh r0, [r1, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080A99D8 - movs r0, 0x88 - strh r0, [r1, 0x1E] - movs r0, 0x50 - movs r1, 0x88 - bl SetGpuReg - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_8075BE8 - ldr r2, _080A99D4 @ =0x00007fff - movs r1, 0x10 - bl BlendPalettes - b _080A9A0C - .align 2, 0 -_080A99D0: .4byte gTasks -_080A99D4: .4byte 0x00007fff -_080A99D8: - cmp r0, 0x4 - ble _080A9A0C - ldr r0, _080A9A14 @ =gBattle_WIN0H - strh r4, [r0] - ldr r0, _080A9A18 @ =gBattle_WIN0V - strh r4, [r0] - ldr r4, _080A9A1C @ =0x00003f3f - movs r0, 0x48 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x4A - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080A9A0C: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A9A14: .4byte gBattle_WIN0H -_080A9A18: .4byte gBattle_WIN0V -_080A9A1C: .4byte 0x00003f3f - thumb_func_end sub_80A9984 - - thumb_func_start sub_80A9A20 -sub_80A9A20: @ 80A9A20 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080A9A70 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A9A7C - movs r0, 0x1 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080A9A74 @ =gUnknown_83E4200 - adds r0, r5, 0 - bl PrepareAffineAnimInTaskData - ldr r1, _080A9A78 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - movs r1, 0x4 - strh r1, [r0, 0x24] - b _080A9AA4 - .align 2, 0 -_080A9A70: .4byte gTasks -_080A9A74: .4byte gUnknown_83E4200 -_080A9A78: .4byte gSprites -_080A9A7C: - ldr r1, _080A9AAC @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r4, r0, r1 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] - adds r0, r5, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080A9AA4 - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080A9AA4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A9AAC: .4byte gSprites - thumb_func_end sub_80A9A20 - - thumb_func_start sub_80A9AB0 -sub_80A9AB0: @ 80A9AB0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080A9B00 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080A9B0C - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080A9B04 @ =gUnknown_83E4200 - adds r0, r5, 0 - bl PrepareAffineAnimInTaskData - ldr r1, _080A9B08 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - movs r1, 0x4 - strh r1, [r0, 0x24] - b _080A9B34 - .align 2, 0 -_080A9B00: .4byte gTasks -_080A9B04: .4byte gUnknown_83E4200 -_080A9B08: .4byte gSprites -_080A9B0C: - ldr r1, _080A9B3C @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r4, r0, r1 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] - adds r0, r5, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080A9B34 - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080A9B34: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A9B3C: .4byte gSprites - thumb_func_end sub_80A9AB0 - - thumb_func_start sub_80A9B40 -sub_80A9B40: @ 80A9B40 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - movs r0, 0x5F - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldr r5, _080A9B84 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl InitAnimLinearTranslation - ldr r0, _080A9B88 @ =sub_80A9B8C - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A9B84: .4byte gBattleAnimTarget -_080A9B88: .4byte sub_80A9B8C - thumb_func_end sub_80A9B40 - - thumb_func_start sub_80A9B8C -sub_80A9B8C: @ 80A9B8C - push {r4,lr} - adds r4, r0, 0 - bl AnimTranslateLinear - lsls r0, 24 - cmp r0, 0 - bne _080A9BB6 - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xE - bl Sin - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0x4 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080A9BBC -_080A9BB6: - adds r0, r4, 0 - bl DestroyAnimSprite -_080A9BBC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A9B8C - - thumb_func_start sub_80A9BC4 -sub_80A9BC4: @ 80A9BC4 - push {r4,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A9BE8 - ldr r1, _080A9BE4 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x32] - adds r0, r2, 0x1 - strh r0, [r4, 0x2E] - b _080A9C44 - .align 2, 0 -_080A9BE4: .4byte gBattleAnimArgs -_080A9BE8: - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - cmp r0, 0x64 - ble _080A9C36 - movs r0, 0x34 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080A9C36: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x78 - ble _080A9C44 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A9C44: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A9BC4 - - thumb_func_start sub_80A9C4C -sub_80A9C4C: @ 80A9C4C - push {lr} - ldr r2, _080A9C70 @ =gBattleAnimArgs - ldrh r1, [r2] - strh r1, [r0, 0x20] - movs r1, 0xA0 - strh r1, [r0, 0x22] - ldrh r1, [r2, 0x4] - strh r1, [r0, 0x2E] - ldrh r1, [r2, 0x2] - strh r1, [r0, 0x30] - ldr r1, _080A9C74 @ =WaitAnimForDuration - str r1, [r0, 0x1C] - ldr r1, _080A9C78 @ =sub_80A9C7C - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_080A9C70: .4byte gBattleAnimArgs -_080A9C74: .4byte WaitAnimForDuration -_080A9C78: .4byte sub_80A9C7C - thumb_func_end sub_80A9C4C - - thumb_func_start sub_80A9C7C -sub_80A9C7C: @ 80A9C7C - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - lsls r0, 16 - lsrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x26] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - lsls r0, 16 - asrs r5, r0, 16 - cmp r5, 0x48 - bgt _080A9CE2 - movs r0, 0x34 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - cmp r5, 0x40 - bgt _080A9CE2 - adds r0, r4, 0 - bl DestroyAnimSprite -_080A9CE2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A9C7C - - thumb_func_start sub_80A9CE8 -sub_80A9CE8: @ 80A9CE8 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080A9DA0 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x3 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A9D2A - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl SetAnimBgAttribute -_080A9D2A: - ldr r0, _080A9DA4 @ =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r4, _080A9DA8 @ =gBattle_BG1_Y - strh r1, [r4] - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x16 - bl SetGpuReg - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080A9DAC @ =gFile_graphics_battle_anims_backgrounds_attract_tilemap - bl AnimLoadCompressedBgTilemap - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080A9DB0 @ =gFile_graphics_battle_anims_backgrounds_attract_sheet - mov r2, sp - ldrh r2, [r2, 0xA] - bl AnimLoadCompressedBgGfx - ldr r0, _080A9DB4 @ =gFile_graphics_battle_anims_backgrounds_attract_palette - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A9D88 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80730C0 -_080A9D88: - ldr r0, _080A9DB8 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080A9DBC @ =sub_80A9DC0 - str r0, [r1] - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A9DA0: .4byte 0x00003f42 -_080A9DA4: .4byte gBattle_BG1_X -_080A9DA8: .4byte gBattle_BG1_Y -_080A9DAC: .4byte gFile_graphics_battle_anims_backgrounds_attract_tilemap -_080A9DB0: .4byte gFile_graphics_battle_anims_backgrounds_attract_sheet -_080A9DB4: .4byte gFile_graphics_battle_anims_backgrounds_attract_palette -_080A9DB8: .4byte gTasks -_080A9DBC: .4byte sub_80A9DC0 - thumb_func_end sub_80A9CE8 - - thumb_func_start sub_80A9DC0 -sub_80A9DC0: @ 80A9DC0 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080A9DE8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x20 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bls _080A9DDE - b _080A9F08 -_080A9DDE: - lsls r0, 2 - ldr r1, _080A9DEC @ =_080A9DF0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080A9DE8: .4byte gTasks -_080A9DEC: .4byte _080A9DF0 - .align 2, 0 -_080A9DF0: - .4byte _080A9E04 - .4byte _080A9E48 - .4byte _080A9E6A - .4byte _080A9EAE - .4byte _080A9ED4 -_080A9E04: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080A9F08 - strh r5, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - adds r1, 0x1 - strh r1, [r4, 0x1E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080A9F08 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r5, [r4, 0x1E] - b _080A9F08 -_080A9E48: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r2 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - strh r0, [r1, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8D - bne _080A9F08 - movs r0, 0x10 - strh r0, [r1, 0x1E] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - b _080A9F08 -_080A9E6A: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080A9F08 - movs r0, 0 - strh r0, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - subs r1, 0x1 - strh r1, [r4, 0x1E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r2, 0x1E - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _080A9F08 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r1, [r4, 0x1E] - b _080A9F08 -_080A9EAE: - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - bl sub_8075358 - ldr r1, _080A9ED0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x20] - adds r1, 0x1 - strh r1, [r0, 0x20] - b _080A9F08 - .align 2, 0 -_080A9ED0: .4byte gTasks -_080A9ED4: - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A9EE8 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_080A9EE8: - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080A9F08: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A9DC0 - - thumb_func_start sub_80A9F10 -sub_80A9F10: @ 80A9F10 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080A9F88 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A9F52 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl SetAnimBgAttribute -_080A9F52: - ldr r0, _080A9F8C @ =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r4, _080A9F90 @ =gBattle_BG1_Y - strh r1, [r4] - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x16 - bl SetGpuReg - mov r0, sp - bl sub_80752A0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A9F98 - ldr r0, _080A9F94 @ =gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap - ldr r1, [sp, 0x4] - bl LZDecompressVram - b _080A9FC6 - .align 2, 0 -_080A9F88: .4byte 0x00003f42 -_080A9F8C: .4byte gBattle_BG1_X -_080A9F90: .4byte gBattle_BG1_Y -_080A9F94: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap -_080A9F98: - ldr r0, _080A9FB4 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A9FBC - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080A9FB8 @ =gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap - bl AnimLoadCompressedBgTilemap - b _080A9FC6 - .align 2, 0 -_080A9FB4: .4byte gBattleAnimTarget -_080A9FB8: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap -_080A9FBC: - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080AA010 @ =gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap - bl AnimLoadCompressedBgTilemap -_080A9FC6: - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080AA014 @ =gFile_graphics_battle_anims_backgrounds_scary_face_sheet - mov r2, sp - ldrh r2, [r2, 0xA] - bl AnimLoadCompressedBgGfx - ldr r0, _080AA018 @ =gFile_graphics_battle_anims_backgrounds_scary_face_palette - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A9FFA - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80730C0 -_080A9FFA: - ldr r0, _080AA01C @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080AA020 @ =sub_80AA024 - str r0, [r1] - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA010: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap -_080AA014: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_sheet -_080AA018: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_palette -_080AA01C: .4byte gTasks -_080AA020: .4byte sub_80AA024 - thumb_func_end sub_80A9F10 - - thumb_func_start sub_80AA024 -sub_80AA024: @ 80AA024 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080AA04C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x20 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bls _080AA042 - b _080AA168 -_080AA042: - lsls r0, 2 - ldr r1, _080AA050 @ =_080AA054 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080AA04C: .4byte gTasks -_080AA050: .4byte _080AA054 - .align 2, 0 -_080AA054: - .4byte _080AA068 - .4byte _080AA0AC - .4byte _080AA0CE - .4byte _080AA112 - .4byte _080AA134 -_080AA068: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080AA168 - strh r5, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - adds r1, 0x1 - strh r1, [r4, 0x1E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0xE - bne _080AA168 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r5, [r4, 0x1E] - b _080AA168 -_080AA0AC: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r2 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - strh r0, [r1, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _080AA168 - movs r0, 0xE - strh r0, [r1, 0x1E] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - b _080AA168 -_080AA0CE: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080AA168 - movs r0, 0 - strh r0, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - subs r1, 0x1 - strh r1, [r4, 0x1E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r2, 0x1E - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _080AA168 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r1, [r4, 0x1E] - b _080AA168 -_080AA112: - mov r0, sp - bl sub_80752A0 - movs r0, 0x1 - bl sub_8075358 - movs r0, 0x2 - bl sub_8075358 - ldr r0, _080AA170 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] -_080AA134: - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080AA148 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_080AA148: - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080AA168: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA170: .4byte gTasks - thumb_func_end sub_80AA024 - - thumb_func_start sub_80AA174 -sub_80AA174: @ 80AA174 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080AA1C8 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080AA1CC @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x30] - ldrb r0, [r5] - bl GetBattlerSpriteSubpriority - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x3C] - ldr r1, _080AA1D0 @ =sub_80AA1D4 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA1C8: .4byte gBattleAnimAttacker -_080AA1CC: .4byte gBattleAnimArgs -_080AA1D0: .4byte sub_80AA1D4 - thumb_func_end sub_80AA174 - - thumb_func_start sub_80AA1D4 -sub_80AA1D4: @ 80AA1D4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7F - bhi _080AA1EA - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - b _080AA1EE -_080AA1EA: - ldrh r0, [r4, 0x3C] - subs r0, 0x1 -_080AA1EE: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - movs r1, 0x30 - ldrsh r0, [r4, r1] - ldrh r1, [r4, 0x32] - lsls r1, 16 - asrs r1, 24 - bl Sin - strh r0, [r4, 0x24] - movs r2, 0x30 - ldrsh r0, [r4, r2] - ldrh r1, [r4, 0x34] - lsls r1, 16 - asrs r1, 24 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x9 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - movs r3, 0x38 - ldrsh r2, [r4, r3] - cmp r2, 0 - beq _080AA260 - cmp r2, 0x1 - bne _080AA290 - ldr r1, _080AA258 @ =0xfffffc00 - adds r0, r1, 0 - ldrh r2, [r4, 0x32] - adds r0, r2 - strh r0, [r4, 0x32] - ldr r3, _080AA25C @ =0xffffff00 - adds r0, r3, 0 - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x2E - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080AA290 - movs r0, 0x2 - strh r0, [r4, 0x38] - b _080AA2A0 - .align 2, 0 -_080AA258: .4byte 0xfffffc00 -_080AA25C: .4byte 0xffffff00 -_080AA260: - movs r3, 0x80 - lsls r3, 3 - adds r0, r3, 0 - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - movs r3, 0x80 - lsls r3, 1 - adds r0, r3, 0 - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x2E - ldrsh r1, [r4, r3] - cmp r0, r1 - bne _080AA290 - strh r2, [r4, 0x36] - movs r0, 0x1 - strh r0, [r4, 0x38] -_080AA290: - ldr r0, _080AA2A8 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080AA2AC @ =0x0000ffff - cmp r1, r0 - bne _080AA2A0 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AA2A0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AA2A8: .4byte gBattleAnimArgs -_080AA2AC: .4byte 0x0000ffff - thumb_func_end sub_80AA1D4 - - thumb_func_start sub_80AA2B0 -sub_80AA2B0: @ 80AA2B0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080AA2F8 @ =gBattleAnimAttacker - 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] - ldr r4, _080AA2FC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl Sin - strh r0, [r5, 0x2E] - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0x7 - bl Cos - strh r0, [r5, 0x30] - ldr r0, _080AA300 @ =sub_80AA304 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA2F8: .4byte gBattleAnimAttacker -_080AA2FC: .4byte gBattleAnimArgs -_080AA300: .4byte sub_80AA304 - thumb_func_end sub_80AA2B0 - - thumb_func_start sub_80AA304 -sub_80AA304: @ 80AA304 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x30] - ldrh r3, [r2, 0x26] - adds r0, r3 - strh r0, [r2, 0x26] - movs r1, 0x20 - ldrsh r0, [r2, r1] - movs r3, 0x24 - ldrsh r1, [r2, r3] - adds r0, r1 - adds r0, 0x10 - movs r1, 0x88 - lsls r1, 1 - cmp r0, r1 - bhi _080AA342 - movs r0, 0x22 - ldrsh r1, [r2, r0] - movs r3, 0x26 - ldrsh r0, [r2, r3] - adds r1, r0 - cmp r1, 0xA0 - bgt _080AA342 - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - bge _080AA348 -_080AA342: - adds r0, r2, 0 - bl DestroyAnimSprite -_080AA348: - pop {r0} - bx r0 - thumb_func_end sub_80AA304 - - thumb_func_start sub_80AA34C -sub_80AA34C: @ 80AA34C - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x30] - ldrh r3, [r2, 0x26] - adds r0, r3 - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x34] - adds r1, r0, 0x1 - strh r1, [r2, 0x34] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x32 - ldrsh r1, [r2, r3] - cmp r0, r1 - blt _080AA378 - adds r0, r2, 0 - bl DestroyAnimSprite -_080AA378: - pop {r0} - bx r0 - thumb_func_end sub_80AA34C - - thumb_func_start sub_80AA37C -sub_80AA37C: @ 80AA37C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080AA3C8 @ =gBattleAnimAttacker - 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] - ldr r4, _080AA3CC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl Sin - strh r0, [r5, 0x2E] - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0x7 - bl Cos - strh r0, [r5, 0x30] - ldrh r0, [r4, 0x2] - strh r0, [r5, 0x32] - ldr r0, _080AA3D0 @ =sub_80AA34C - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA3C8: .4byte gBattleAnimAttacker -_080AA3CC: .4byte gBattleAnimArgs -_080AA3D0: .4byte sub_80AA34C - thumb_func_end sub_80AA37C - - thumb_func_start sub_80AA3D4 -sub_80AA3D4: @ 80AA3D4 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080AA3EA - adds r0, r2, 0 - bl DestroyAnimSprite -_080AA3EA: - pop {r0} - bx r0 - thumb_func_end sub_80AA3D4 - - thumb_func_start sub_80AA3F0 -sub_80AA3F0: @ 80AA3F0 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - ldr r0, _080AA404 @ =sub_80AA3D4 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AA404: .4byte sub_80AA3D4 - thumb_func_end sub_80AA3F0 - - thumb_func_start sub_80AA408 -sub_80AA408: @ 80AA408 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AA426 - ldr r0, _080AA498 @ =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r4, 0x20] - adds r1, r2 - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] -_080AA426: - 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 r5, r0, 1 - movs r0, 0xFF - ands r5, r0 - adds r0, r5, 0 - movs r1, 0x50 - bl Sin - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x4F - bgt _080AA46A - adds r0, r5, 0 - movs r1, 0x50 - bl Cos - movs r2, 0x2E - ldrsh r1, [r4, r2] - lsrs r2, r1, 31 - adds r1, r2 - asrs r1, 1 - lsls r0, 16 - asrs r0, 24 - adds r1, r0 - strh r1, [r4, 0x26] -_080AA46A: - movs r0, 0x2E - ldrsh r2, [r4, r0] - cmp r2, 0x5A - ble _080AA488 - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - ldrh r0, [r4, 0x24] - subs r0, r1 - strh r0, [r4, 0x24] -_080AA488: - cmp r2, 0x64 - ble _080AA492 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AA492: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA498: .4byte gBattleAnimArgs - thumb_func_end sub_80AA408 - - thumb_func_start sub_80AA49C -sub_80AA49C: @ 80AA49C - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r1, 0x5 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x14 - ble _080AA4F2 - adds r1, r0, 0 - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080AA4F2: - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x1E - ble _080AA500 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AA500: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AA49C - - thumb_func_start sub_80AA508 -sub_80AA508: @ 80AA508 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AA52C - ldr r1, _080AA528 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x32] - adds r0, r2, 0x1 - strh r0, [r4, 0x2E] - b _080AA580 - .align 2, 0 -_080AA528: .4byte gBattleAnimArgs -_080AA52C: - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x36] - adds r0, r2 - movs r5, 0 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - adds r2, r0, 0 - strh r2, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - cmp r0, 0x46 - ble _080AA580 - ldr r0, _080AA588 @ =sub_80AA49C - str r0, [r4, 0x1C] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r1, [r4, 0x22] - adds r0, r2, r1 - strh r0, [r4, 0x22] - strh r5, [r4, 0x24] - strh r5, [r4, 0x26] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xB4 - bl __umodsi3 - strh r0, [r4, 0x34] -_080AA580: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA588: .4byte sub_80AA49C - thumb_func_end sub_80AA508 - - thumb_func_start sub_80AA58C -sub_80AA58C: @ 80AA58C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AA5C6 - ldr r1, _080AA688 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim - ldr r0, _080AA68C @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - subs r0, 0x1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - movs r0, 0x1 - strh r0, [r4, 0x32] -_080AA5C6: - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x2E] - adds r0, r2 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r1, r0, 2 - adds r0, r1, 0 - cmp r1, 0 - bge _080AA5DC - adds r0, 0xFF -_080AA5DC: - asrs r0, 8 - lsls r0, 8 - subs r0, r1, r0 - strh r0, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - bge _080AA5EE - movs r0, 0 - strh r0, [r4, 0x30] -_080AA5EE: - movs r0, 0x30 - ldrsh r2, [r4, r0] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _080AA5FC - adds r0, 0x3 -_080AA5FC: - asrs r0, 2 - movs r1, 0x1E - subs r1, r0 - adds r0, r2, 0 - bl Cos - strh r0, [r4, 0x24] - movs r0, 0x30 - ldrsh r2, [r4, r0] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _080AA618 - adds r0, 0x7 -_080AA618: - asrs r0, 3 - movs r1, 0xA - subs r1, r0 - adds r0, r2, 0 - bl Sin - strh r0, [r4, 0x26] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0x80 - ble _080AA63C - ldrh r1, [r4, 0x32] - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080AA63C - ldr r0, _080AA690 @ =0x0000ffff - strh r0, [r4, 0x32] -_080AA63C: - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AA650 - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0 - bge _080AA650 - movs r0, 0x1 - strh r0, [r4, 0x32] -_080AA650: - ldrh r0, [r4, 0x34] - adds r1, r0, 0x1 - strh r1, [r4, 0x34] - subs r0, 0x9 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x46 - bls _080AA694 - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - b _080AA6A2 - .align 2, 0 -_080AA688: .4byte gBattleAnimArgs -_080AA68C: .4byte gBattleAnimTarget -_080AA690: .4byte 0x0000ffff -_080AA694: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080AA6A2: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x5A - ble _080AA6B0 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AA6B0: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AA58C - - thumb_func_start sub_80AA6B8 -sub_80AA6B8: @ 80AA6B8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AA6EC - ldr r1, _080AA6E8 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - ldrb r1, [r1, 0x4] - adds r0, r4, 0 - bl StartSpriteAnim - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080AA700 - .align 2, 0 -_080AA6E8: .4byte gBattleAnimArgs -_080AA6EC: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080AA700 - adds r0, r4, 0 - bl DestroyAnimSprite -_080AA700: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AA6B8 - - thumb_func_start sub_80AA708 -sub_80AA708: @ 80AA708 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r1, _080AA720 @ =gBattleAnimArgs - movs r2, 0x4 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080AA724 - adds r0, r5, 0 - bl DestroyAnimSprite - b _080AA788 - .align 2, 0 -_080AA720: .4byte gBattleAnimArgs -_080AA724: - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080AA734 - ldr r4, _080AA730 @ =gBattleAnimAttacker - b _080AA736 - .align 2, 0 -_080AA730: .4byte gBattleAnimAttacker -_080AA734: - ldr r4, _080AA764 @ =gBattleAnimTarget -_080AA736: - 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] - ldr r0, _080AA768 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r1, [r0, r2] - adds r2, r0, 0 - cmp r1, 0 - bne _080AA76C - ldrh r0, [r5, 0x20] - adds r0, 0x20 - b _080AA770 - .align 2, 0 -_080AA764: .4byte gBattleAnimTarget -_080AA768: .4byte gBattleAnimArgs -_080AA76C: - ldrh r0, [r5, 0x20] - subs r0, 0x20 -_080AA770: - strh r0, [r5, 0x20] - ldrh r0, [r2, 0x4] - strh r0, [r5, 0x2E] - ldrh r1, [r2, 0x2] - strh r1, [r5, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080AA790 @ =sub_80AA794 - str r0, [r5, 0x1C] -_080AA788: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA790: .4byte sub_80AA794 - thumb_func_end sub_80AA708 - - thumb_func_start sub_80AA794 -sub_80AA794: @ 80AA794 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080AA7C4 - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - cmp r0, 0 - beq _080AA7BE - ldrh r1, [r2, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r2, 0 - bl StartSpriteAnim - b _080AA7C4 -_080AA7BE: - adds r0, r2, 0 - bl DestroyAnimSprite -_080AA7C4: - pop {r0} - bx r0 - thumb_func_end sub_80AA794 - - thumb_func_start sub_80AA7C8 -sub_80AA7C8: @ 80AA7C8 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _080AA7FC @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _080AA800 @ =gTasks - adds r4, r0 - ldr r2, _080AA804 @ =gUnknown_83E4410 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldr r0, _080AA808 @ =sub_80AA80C - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AA7FC: .4byte gBattleAnimArgs -_080AA800: .4byte gTasks -_080AA804: .4byte gUnknown_83E4410 -_080AA808: .4byte sub_80AA80C - thumb_func_end sub_80AA7C8 - - thumb_func_start sub_80AA80C -sub_80AA80C: @ 80AA80C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080AA834 @ =gTasks - adds r0, r1 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080AA82C - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080AA82C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AA834: .4byte gTasks - thumb_func_end sub_80AA80C - - thumb_func_start sub_80AA838 -sub_80AA838: @ 80AA838 - push {r4-r7,lr} - adds r5, r0, 0 - ldr r0, _080AA84C @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080AA854 - ldr r0, _080AA850 @ =gBattleAnimAttacker - b _080AA856 - .align 2, 0 -_080AA84C: .4byte gBattleAnimArgs -_080AA850: .4byte gBattleAnimAttacker -_080AA854: - ldr r0, _080AA8EC @ =gBattleAnimTarget -_080AA856: - ldrb r6, [r0] - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080AA870 - ldr r1, _080AA8F0 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x2] -_080AA870: - adds r0, r6, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r7, _080AA8F0 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r3, [r7, 0x2] - adds r0, r3 - movs r4, 0 - strh r0, [r5, 0x20] - adds r0, r6, 0 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r7, 0x4] - adds r0, r1 - strh r0, [r5, 0x22] - strh r4, [r5, 0x2E] - ldrh r1, [r5, 0x20] - lsls r1, 3 - strh r1, [r5, 0x30] - lsls r0, 3 - strh r0, [r5, 0x32] - movs r2, 0x2 - ldrsh r0, [r7, r2] - lsls r0, 3 - cmp r0, 0 - bge _080AA8B0 - adds r0, 0x7 -_080AA8B0: - asrs r0, 3 - strh r0, [r5, 0x34] - movs r3, 0x4 - ldrsh r0, [r7, r3] - lsls r0, 3 - cmp r0, 0 - bge _080AA8C0 - adds r0, 0x7 -_080AA8C0: - asrs r0, 3 - strh r0, [r5, 0x36] - ldrh r2, [r5, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - movs r3, 0x6 - ldrsh r0, [r7, r3] - lsls r0, 4 - adds r1, r0 - ldr r3, _080AA8F4 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080AA8F8 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - ldr r0, _080AA8FC @ =sub_80AA900 - str r0, [r5, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AA8EC: .4byte gBattleAnimTarget -_080AA8F0: .4byte gBattleAnimArgs -_080AA8F4: .4byte 0x000003ff -_080AA8F8: .4byte 0xfffffc00 -_080AA8FC: .4byte sub_80AA900 - thumb_func_end sub_80AA838 - - thumb_func_start sub_80AA900 -sub_80AA900: @ 80AA900 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x34] - ldrh r1, [r2, 0x30] - adds r0, r1 - strh r0, [r2, 0x30] - ldrh r1, [r2, 0x36] - ldrh r3, [r2, 0x32] - adds r1, r3 - strh r1, [r2, 0x32] - lsls r0, 16 - asrs r0, 19 - strh r0, [r2, 0x20] - lsls r1, 16 - asrs r1, 19 - strh r1, [r2, 0x22] - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080AA934 - adds r0, r2, 0 - bl DestroyAnimSprite -_080AA934: - pop {r0} - bx r0 - thumb_func_end sub_80AA900 - - thumb_func_start sub_80AA938 -sub_80AA938: @ 80AA938 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080AA95A - ldr r0, _080AA994 @ =gBattleAnimArgs - ldrh r1, [r0] - movs r0, 0x78 - subs r0, r1 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080AA95A: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x30 - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080AA978 - ldrb r0, [r4, 0x5] - lsrs r0, 4 - adds r0, 0x10 - movs r1, 0 - bl SetGreyscaleOrOriginalPalette -_080AA978: - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r2, 0x30 - ldrsh r0, [r4, r2] - adds r0, 0x50 - cmp r1, r0 - bne _080AA98C - adds r0, r4, 0 - bl DestroyAnimSprite -_080AA98C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AA994: .4byte gBattleAnimArgs - thumb_func_end sub_80AA938 - - thumb_func_start sub_80AA998 -sub_80AA998: @ 80AA998 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x2E - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080AA9C6 - movs r5, 0x78 - strh r5, [r6, 0x20] - ldr r4, _080AAA48 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r0, [r4, r2] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - subs r0, 0xF - strh r0, [r6, 0x22] - ldrb r1, [r4, 0x2] - adds r0, r6, 0 - bl StartSpriteAnim - strh r5, [r6, 0x38] - ldrh r0, [r4, 0x4] - strh r0, [r6, 0x34] -_080AA9C6: - ldrh r0, [r6, 0x2E] - adds r0, 0x1 - movs r5, 0 - strh r0, [r6, 0x2E] - movs r1, 0x2E - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r6, 0x30] - movs r2, 0x2E - ldrsh r0, [r6, r2] - lsls r4, r0, 1 - adds r4, r0 - ldrh r0, [r6, 0x34] - adds r4, r0 - movs r2, 0xFF - ldrh r0, [r6, 0x3A] - adds r0, 0xA - movs r1, 0xFF - ands r0, r1 - strh r0, [r6, 0x3A] - ands r4, r2 - adds r0, r4, 0 - movs r1, 0x64 - bl Cos - strh r0, [r6, 0x24] - adds r0, r4, 0 - movs r1, 0xA - bl Sin - adds r4, r0, 0 - movs r1, 0x3A - ldrsh r0, [r6, r1] - movs r1, 0x4 - bl Cos - ldrh r2, [r6, 0x30] - adds r4, r2 - adds r0, r4 - strh r0, [r6, 0x26] - movs r0, 0x2E - ldrsh r1, [r6, r0] - movs r2, 0x38 - ldrsh r0, [r6, r2] - cmp r1, r0 - ble _080AAA42 - ldr r0, _080AAA4C @ =sub_80AAA50 - str r0, [r6, 0x1C] - strh r5, [r6, 0x2E] - adds r0, r6, 0 - bl SetSpritePrimaryCoordsFromSecondaryCoords - movs r0, 0x5 - strh r0, [r6, 0x32] - strh r5, [r6, 0x36] - strh r5, [r6, 0x34] - adds r0, r6, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080AAA42: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AAA48: .4byte gBattleAnimArgs -_080AAA4C: .4byte sub_80AAA50 - thumb_func_end sub_80AA998 - - thumb_func_start sub_80AAA50 -sub_80AAA50: @ 80AAA50 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - ble _080AAA6A - movs r0, 0 - strh r0, [r1, 0x2E] - ldr r0, _080AAA70 @ =sub_80AAA74 - str r0, [r1, 0x1C] -_080AAA6A: - pop {r0} - bx r0 - .align 2, 0 -_080AAA70: .4byte sub_80AAA74 - thumb_func_end sub_80AAA50 - - thumb_func_start sub_80AAA74 -sub_80AAA74: @ 80AAA74 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x34] - adds r0, r1, r2 - strh r0, [r4, 0x34] - strh r0, [r4, 0x26] - adds r1, 0x1 - strh r1, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x30 - ble _080AAA9E - lsls r0, r1, 16 - cmp r0, 0 - ble _080AAA9E - ldrh r0, [r4, 0x36] - subs r1, r0, 0x5 - strh r1, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x36] -_080AAA9E: - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0x3 - ble _080AAAD0 - movs r2, 0x32 - ldrsh r1, [r4, r2] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - adds r0, r4, 0 - bl DestroyAnimSprite -_080AAAD0: - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bne _080AAADE - adds r0, r4, 0 - bl DestroyAnimSprite -_080AAADE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AAA74 - - thumb_func_start sub_80AAAE4 -sub_80AAAE4: @ 80AAAE4 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080AAB28 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080AAB30 - ldr r4, _080AAB2C @ =gBattleAnimAttacker - ldrb r1, [r4] - movs r0, 0x2 - eors r0, r1 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080AAB30 - ldrb r0, [r4] - adds r2, r5, 0 - adds r2, 0x20 - adds r3, r5, 0 - adds r3, 0x22 - movs r1, 0 - bl SetAverageBattlerPositions - ldrh r0, [r5, 0x22] - adds r0, 0x28 - strh r0, [r5, 0x22] - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _080AAB50 - .align 2, 0 -_080AAB28: .4byte gBattleTypeFlags -_080AAB2C: .4byte gBattleAnimAttacker -_080AAB30: - ldr r4, _080AAB70 @ =gBattleAnimAttacker - 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 - adds r0, 0x28 - strh r0, [r5, 0x22] -_080AAB50: - movs r0, 0xD - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - subs r0, 0x48 - strh r0, [r5, 0x36] - ldr r0, _080AAB74 @ =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, _080AAB78 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AAB70: .4byte gBattleAnimAttacker -_080AAB74: .4byte StartAnimLinearTranslation -_080AAB78: .4byte DestroyAnimSprite - thumb_func_end sub_80AAAE4 - - thumb_func_start sub_80AAB7C -sub_80AAB7C: @ 80AAB7C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080AAB98 @ =gBattleAnimArgs - ldr r1, _080AAB9C @ =gAnimDisableStructPtr - ldr r1, [r1] - ldrb r2, [r1, 0x10] - movs r1, 0x1 - ands r1, r2 - strh r1, [r3, 0xE] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080AAB98: .4byte gBattleAnimArgs -_080AAB9C: .4byte gAnimDisableStructPtr - thumb_func_end sub_80AAB7C - - thumb_func_start update_fury_cutter_counter_copy -update_fury_cutter_counter_copy: @ 80AABA0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080AABB8 @ =gBattleAnimArgs - ldr r1, _080AABBC @ =gAnimDisableStructPtr - ldr r1, [r1] - ldrb r1, [r1, 0x10] - strh r1, [r2, 0xE] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080AABB8: .4byte gBattleAnimArgs -_080AABBC: .4byte gAnimDisableStructPtr - thumb_func_end update_fury_cutter_counter_copy - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_effects_3.s b/asm/battle_anim_effects_3.s deleted file mode 100644 index 9c98d7f36..000000000 --- a/asm/battle_anim_effects_3.s +++ /dev/null @@ -1,12857 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80DE2C0 -sub_80DE2C0: @ 80DE2C0 - push {lr} - adds r2, r0, 0 - ldr r1, _080DE2E4 @ =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 _080DE2E8 - ldrh r0, [r1, 0x4] - b _080DE2EC - .align 2, 0 -_080DE2E4: .4byte gBattleAnimArgs -_080DE2E8: - ldrh r0, [r1, 0x4] - negs r0, r0 -_080DE2EC: - strh r0, [r2, 0x2E] - ldrh r0, [r1, 0x8] - strh r0, [r2, 0x30] - ldr r0, _080DE2FC @ =sub_80DE300 - str r0, [r2, 0x1C] - pop {r0} - bx r0 - .align 2, 0 -_080DE2FC: .4byte sub_80DE300 - thumb_func_end sub_80DE2C0 - - thumb_func_start sub_80DE300 -sub_80DE300: @ 80DE300 - push {lr} - adds r3, r0, 0 - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0 - ble _080DE340 - 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 _080DE346 -_080DE340: - adds r0, r3, 0 - bl DestroyAnimSprite -_080DE346: - pop {r0} - bx r0 - thumb_func_end sub_80DE300 - - thumb_func_start sub_80DE34C -sub_80DE34C: @ 80DE34C - push {r4-r6,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r6, _080DE398 @ =gBattleAnimTarget - 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_804A76C - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DE398: .4byte gBattleAnimTarget - thumb_func_end sub_80DE34C - - thumb_func_start sub_80DE39C -sub_80DE39C: @ 80DE39C - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x5A - strh r0, [r4, 0x2E] - ldr r0, _080DE3D8 @ =WaitAnimForDuration - str r0, [r4, 0x1C] - movs r0, 0x7 - strh r0, [r4, 0x30] - ldr r1, _080DE3DC @ =sub_80DE3E0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - ldrh r0, [r4, 0x30] - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DE3D8: .4byte WaitAnimForDuration -_080DE3DC: .4byte sub_80DE3E0 - thumb_func_end sub_80DE39C - - thumb_func_start sub_80DE3E0 -sub_80DE3E0: @ 80DE3E0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - ldrh r0, [r4, 0x30] - subs r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - bge _080DE414 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080DE41C @ =sub_80DE420 - str r0, [r4, 0x1C] -_080DE414: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DE41C: .4byte sub_80DE420 - thumb_func_end sub_80DE3E0 - - thumb_func_start sub_80DE420 -sub_80DE420: @ 80DE420 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimSprite - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DE420 - - thumb_func_start sub_80DE440 -sub_80DE440: @ 80DE440 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - ldr r4, _080DE4CC @ =gBattleAnimTarget - 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 InitSpritePosToAnimTarget - 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 _080DE49E - movs r1, 0x80 - lsls r1, 7 - adds r0, r4, r1 - lsls r0, 16 - lsrs r4, r0, 16 -_080DE49E: - movs r3, 0x80 - lsls r3, 1 - str r4, [sp] - adds r0, r5, 0 - movs r1, 0 - adds r2, r3, 0 - bl TrySetSpriteRotScale - ldr r0, _080DE4D0 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r5, 0x2E] - strh r7, [r5, 0x32] - strh r6, [r5, 0x36] - ldr r0, _080DE4D4 @ =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, _080DE4D8 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DE4CC: .4byte gBattleAnimTarget -_080DE4D0: .4byte gBattleAnimArgs -_080DE4D4: .4byte StartAnimLinearTranslation -_080DE4D8: .4byte DestroyAnimSprite - thumb_func_end sub_80DE440 - - thumb_func_start sub_80DE4DC -sub_80DE4DC: @ 80DE4DC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x4 - strh r0, [r4, 0x2E] - ldr r0, _080DE504 @ =sub_80DE508 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DE504: .4byte sub_80DE508 - thumb_func_end sub_80DE4DC - - thumb_func_start sub_80DE508 -sub_80DE508: @ 80DE508 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080DE52E - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - b _080DE532 -_080DE52E: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 -_080DE532: - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0xF - beq _080DE540 - cmp r0, 0x4 - bne _080DE548 -_080DE540: - ldrh r0, [r4, 0x30] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x30] -_080DE548: - ldrh r0, [r4, 0x32] - adds r1, r0, 0x1 - strh r1, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x46 - ble _080DE58C - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - 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, _080DE594 @ =sub_80DE598 - str r0, [r4, 0x1C] -_080DE58C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DE594: .4byte sub_80DE598 - thumb_func_end sub_80DE508 - - thumb_func_start sub_80DE598 -sub_80DE598: @ 80DE598 - 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 _080DE5D4 - 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 _080DE5D4 - ldr r0, _080DE5D8 @ =sub_80DE5DC - str r0, [r3, 0x1C] -_080DE5D4: - pop {r0} - bx r0 - .align 2, 0 -_080DE5D8: .4byte sub_80DE5DC - thumb_func_end sub_80DE598 - - thumb_func_start sub_80DE5DC -sub_80DE5DC: @ 80DE5DC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x6 - bhi _080DE634 - lsls r0, 2 - ldr r1, _080DE5F4 @ =_080DE5F8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080DE5F4: .4byte _080DE5F8 - .align 2, 0 -_080DE5F8: - .4byte _080DE614 - .4byte _080DE614 - .4byte _080DE61E - .4byte _080DE61E - .4byte _080DE62C - .4byte _080DE62C - .4byte _080DE634 -_080DE614: - movs r1, 0 - movs r0, 0x1 - strh r0, [r4, 0x24] - strh r1, [r4, 0x26] - b _080DE63C -_080DE61E: - ldr r0, _080DE628 @ =0x0000ffff - strh r0, [r4, 0x24] - movs r0, 0 - b _080DE63A - .align 2, 0 -_080DE628: .4byte 0x0000ffff -_080DE62C: - movs r0, 0 - strh r0, [r4, 0x24] - movs r0, 0x1 - b _080DE63A -_080DE634: - movs r0, 0 - strh r0, [r4, 0x24] - ldr r0, _080DE680 @ =0x0000ffff -_080DE63A: - strh r0, [r4, 0x26] -_080DE63C: - ldrh r0, [r4, 0x34] - adds r0, 0x1 - movs r2, 0 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080DE64E - strh r2, [r4, 0x34] -_080DE64E: - ldrh r0, [r4, 0x36] - adds r1, r0, 0x1 - strh r1, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - ble _080DE678 - movs r0, 0x10 - strh r0, [r4, 0x2E] - strh r2, [r4, 0x30] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - ldrh r1, [r4, 0x2E] - movs r0, 0x52 - bl SetGpuReg - ldr r0, _080DE684 @ =sub_80DE688 - str r0, [r4, 0x1C] -_080DE678: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DE680: .4byte 0x0000ffff -_080DE684: .4byte sub_80DE688 - thumb_func_end sub_80DE5DC - - thumb_func_start sub_80DE688 -sub_80DE688: @ 80DE688 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - ldrh r0, [r4, 0x30] - adds r1, r0, 0x1 - strh r1, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080DE6B8 - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] -_080DE6B8: - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DE6CC - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080DE6CC: - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _080DE6EA - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimSprite -_080DE6EA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DE688 - - thumb_func_start sub_80DE6F0 -sub_80DE6F0: @ 80DE6F0 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080DE70C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _080DE710 @ =sub_80DE718 - str r0, [r1] - ldr r1, _080DE714 @ =gAnimVisualTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - bx lr - .align 2, 0 -_080DE70C: .4byte gTasks -_080DE710: .4byte sub_80DE718 -_080DE714: .4byte gAnimVisualTaskCount - thumb_func_end sub_80DE6F0 - - thumb_func_start sub_80DE718 -sub_80DE718: @ 80DE718 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8075454 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r7, _080DE7A4 @ =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 _080DE788 - ldr r0, _080DE7A8 @ =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 -_080DE766: - ldrh r0, [r2] - strh r0, [r1] - subs r2, 0x2 - subs r1, 0x2 - subs r3, 0x1 - cmp r3, 0 - bgt _080DE766 - 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] -_080DE788: - ldr r0, _080DE7AC @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080DE7B0 @ =0x0000ffff - cmp r1, r0 - bne _080DE798 - adds r0, r4, 0 - bl DestroyTask -_080DE798: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DE7A4: .4byte gTasks -_080DE7A8: .4byte gPlttBufferFaded -_080DE7AC: .4byte gBattleAnimArgs -_080DE7B0: .4byte 0x0000ffff - thumb_func_end sub_80DE718 - - thumb_func_start sub_80DE7B4 -sub_80DE7B4: @ 80DE7B4 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080DE7D0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _080DE7D4 @ =sub_80DE7DC - str r0, [r1] - ldr r1, _080DE7D8 @ =gAnimVisualTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - bx lr - .align 2, 0 -_080DE7D0: .4byte gTasks -_080DE7D4: .4byte sub_80DE7DC -_080DE7D8: .4byte gAnimVisualTaskCount - thumb_func_end sub_80DE7B4 - - thumb_func_start sub_80DE7DC -sub_80DE7DC: @ 80DE7DC - 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_8075454 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r5, _080DE89C @ =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 _080DE87E - ldr r0, _080DE8A0 @ =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, _080DE8A4 @ =gPlttBufferUnfaded - mov r12, r2 - lsls r0, r7, 5 - add r0, r9 - adds r3, r0, 0 - adds r3, 0x14 -_080DE830: - ldrh r0, [r3] - strh r0, [r1] - subs r3, 0x2 - subs r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bgt _080DE830 - 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 -_080DE85A: - ldrh r0, [r2] - strh r0, [r1] - subs r2, 0x2 - subs r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bgt _080DE85A - 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, _080DE89C @ =gTasks - adds r0, r2 - strh r1, [r0, 0x12] -_080DE87E: - ldr r0, _080DE8A8 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080DE8AC @ =0x0000ffff - cmp r1, r0 - bne _080DE88E - mov r0, r8 - bl DestroyTask -_080DE88E: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DE89C: .4byte gTasks -_080DE8A0: .4byte gPlttBufferFaded -_080DE8A4: .4byte gPlttBufferUnfaded -_080DE8A8: .4byte gBattleAnimArgs -_080DE8AC: .4byte 0x0000ffff - thumb_func_end sub_80DE7DC - - thumb_func_start sub_80DE8B0 -sub_80DE8B0: @ 80DE8B0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - ldr r0, _080DE914 @ =gBattleAnimTarget - ldrb r0, [r0] - mov r5, sp - adds r5, 0x2 - movs r1, 0 - mov r2, sp - adds r3, r5, 0 - bl SetAverageBattlerPositions - ldr r0, _080DE918 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080DE8E4 - ldr r1, _080DE91C @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080DE8E4: - ldr r1, _080DE91C @ =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, _080DE920 @ =0x0000ffce - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl InitAnimArcTranslation - ldr r0, _080DE924 @ =sub_80DE928 - str r0, [r4, 0x1C] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DE914: .4byte gBattleAnimTarget -_080DE918: .4byte gBattleAnimAttacker -_080DE91C: .4byte gBattleAnimArgs -_080DE920: .4byte 0x0000ffce -_080DE924: .4byte sub_80DE928 - thumb_func_end sub_80DE8B0 - - thumb_func_start sub_80DE928 -sub_80DE928: @ 80DE928 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - beq _080DE94A - movs r1, 0 - movs r0, 0x1E - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - ldr r0, _080DE950 @ =WaitAnimForDuration - str r0, [r4, 0x1C] - ldr r1, _080DE954 @ =sub_80DE958 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 -_080DE94A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DE950: .4byte WaitAnimForDuration -_080DE954: .4byte sub_80DE958 - thumb_func_end sub_80DE928 - - thumb_func_start sub_80DE958 -sub_80DE958: @ 80DE958 - push {lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x30] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080DE984 - 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] -_080DE984: - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - bne _080DE998 - adds r0, r3, 0 - bl DestroyAnimSprite -_080DE998: - pop {r0} - bx r0 - thumb_func_end sub_80DE958 - - thumb_func_start sub_80DE99C -sub_80DE99C: @ 80DE99C - push {r4,r5,lr} - adds r4, r0, 0 - bl SetSpriteCoordsToAnimAttackerCoords - ldr r5, _080DE9CC @ =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl SetAnimSpriteInitialXOffset - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _080DE9D0 @ =RunStoredCallbackWhenAnimEnds - str r0, [r4, 0x1C] - ldr r1, _080DE9D4 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DE9CC: .4byte gBattleAnimArgs -_080DE9D0: .4byte RunStoredCallbackWhenAnimEnds -_080DE9D4: .4byte DestroyAnimSprite - thumb_func_end sub_80DE99C - - thumb_func_start sub_80DE9D8 -sub_80DE9D8: @ 80DE9D8 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DEA38 - adds r0, r4, 0 - bl SetSpriteCoordsToAnimAttackerCoords - ldr r5, _080DEA14 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r5, r2] - adds r0, r4, 0 - bl SetAnimSpriteInitialXOffset - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080DEA2C - ldr r0, _080DEA18 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080DEA1C - ldrh r0, [r5, 0x4] - b _080DEA32 - .align 2, 0 -_080DEA14: .4byte gBattleAnimArgs -_080DEA18: .4byte gBattleAnimAttacker -_080DEA1C: - 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 _080DEA36 -_080DEA2C: - movs r1, 0x4 - ldrsh r0, [r5, r1] - negs r0, r0 -_080DEA32: - strh r0, [r4, 0x30] - ldrh r0, [r5, 0x6] -_080DEA36: - strh r0, [r4, 0x32] -_080DEA38: - 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 _080DEA90 - adds r0, r4, 0 - bl DestroyAnimSprite -_080DEA90: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DE9D8 - - thumb_func_start sub_80DEA98 -sub_80DEA98: @ 80DEA98 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080DEAAE - adds r0, r2, 0 - bl DestroyAnimSprite -_080DEAAE: - pop {r0} - bx r0 - thumb_func_end sub_80DEA98 - - thumb_func_start sub_80DEAB4 -sub_80DEAB4: @ 80DEAB4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080DEAD0 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DEAD8 - ldr r1, _080DEAD4 @ =gBattleAnimArgs - movs r0, 0 - b _080DEADC - .align 2, 0 -_080DEAD0: .4byte gBattleAnimTarget -_080DEAD4: .4byte gBattleAnimArgs -_080DEAD8: - ldr r1, _080DEAEC @ =gBattleAnimArgs - movs r0, 0x1 -_080DEADC: - strh r0, [r1, 0xE] - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DEAEC: .4byte gBattleAnimArgs - thumb_func_end sub_80DEAB4 - - thumb_func_start sub_80DEAF0 -sub_80DEAF0: @ 80DEAF0 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080DEB04 @ =gAnimMoveDmg - ldr r0, [r0] - cmp r0, 0 - ble _080DEB0C - ldr r1, _080DEB08 @ =gBattleAnimArgs - movs r0, 0 - b _080DEB10 - .align 2, 0 -_080DEB04: .4byte gAnimMoveDmg -_080DEB08: .4byte gBattleAnimArgs -_080DEB0C: - ldr r1, _080DEB1C @ =gBattleAnimArgs - movs r0, 0x1 -_080DEB10: - strh r0, [r1, 0xE] - adds r0, r2, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080DEB1C: .4byte gBattleAnimArgs - thumb_func_end sub_80DEAF0 - - thumb_func_start sub_80DEB20 -sub_80DEB20: @ 80DEB20 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r1, _080DEB7C @ =0x00001f3f - movs r0, 0x4A - bl SetGpuReg - movs r1, 0x80 - lsls r1, 8 - movs r0, 0 - bl SetGpuRegBits - ldr r0, _080DEB80 @ =gBattle_WIN0H - movs r1, 0 - strh r1, [r0] - ldr r4, _080DEB84 @ =gBattle_WIN0V - strh r1, [r4] - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x44 - bl SetGpuReg - adds r0, r5, 0 - movs r1, 0 - bl InitSpritePosToAnimTarget - ldrb r1, [r5, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r5, 0x1] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080DEB88 @ =sub_80DEB8C - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DEB7C: .4byte 0x00001f3f -_080DEB80: .4byte gBattle_WIN0H -_080DEB84: .4byte gBattle_WIN0V -_080DEB88: .4byte sub_80DEB8C - thumb_func_end sub_80DEB20 - - thumb_func_start sub_80DEB8C -sub_80DEB8C: @ 80DEB8C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x5 - bhi _080DEC4C - lsls r0, 2 - ldr r1, _080DEBA4 @ =_080DEBA8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080DEBA4: .4byte _080DEBA8 - .align 2, 0 -_080DEBA8: - .4byte _080DEBC0 - .4byte _080DEBDE - .4byte _080DEBFE - .4byte _080DEBDE - .4byte _080DEC1E - .4byte _080DEC2E -_080DEBC0: - 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 _080DEC4C - b _080DEC26 -_080DEBDE: - 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 _080DEC4C - movs r0, 0 - strh r0, [r4, 0x32] - b _080DEC26 -_080DEBFE: - 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 _080DEC4C - movs r0, 0 - strh r0, [r4, 0x32] - b _080DEC26 -_080DEC1E: - adds r0, r4, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnim -_080DEC26: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080DEC4C -_080DEC2E: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080DEC4C - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080DEC54 @ =sub_80DEC58 - str r0, [r4, 0x1C] -_080DEC4C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DEC54: .4byte sub_80DEC58 - thumb_func_end sub_80DEB8C - - thumb_func_start sub_80DEC58 -sub_80DEC58: @ 80DEC58 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _080DEC8C @ =0x00003f3f - movs r0, 0x4A - bl SetGpuReg - movs r0, 0 - bl GetGpuReg - adds r1, r0, 0 - movs r2, 0x80 - lsls r2, 8 - adds r0, r2, 0 - eors r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimSprite - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DEC8C: .4byte 0x00003f3f - thumb_func_end sub_80DEC58 - - thumb_func_start sub_80DEC90 -sub_80DEC90: @ 80DEC90 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080DED04 @ =gBattleAnimArgs - movs r1, 0x6 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080DECBC - ldr r4, _080DED08 @ =gBattleAnimAttacker - 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] -_080DECBC: - 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, _080DED0C @ =0x000003ff - adds r0, r4, 0 - ands r1, r0 - ldr r0, _080DED10 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - movs r1, 0x4 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080DED18 - 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, _080DED14 @ =0x0000fff4 - strh r0, [r5, 0x24] - movs r0, 0x2 - b _080DED1E - .align 2, 0 -_080DED04: .4byte gBattleAnimArgs -_080DED08: .4byte gBattleAnimAttacker -_080DED0C: .4byte 0x000003ff -_080DED10: .4byte 0xfffffc00 -_080DED14: .4byte 0x0000fff4 -_080DED18: - movs r0, 0xC - strh r0, [r5, 0x24] - ldr r0, _080DED3C @ =0x0000fffe -_080DED1E: - strh r0, [r5, 0x30] - ldr r1, _080DED40 @ =gBattleAnimArgs - ldrh r0, [r1, 0x8] - strh r0, [r5, 0x2E] - movs r2, 0x34 - ldrsh r0, [r5, r2] - cmp r0, 0xFF - beq _080DED32 - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x34] -_080DED32: - ldr r0, _080DED44 @ =sub_80DED48 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DED3C: .4byte 0x0000fffe -_080DED40: .4byte gBattleAnimArgs -_080DED44: .4byte sub_80DED48 - thumb_func_end sub_80DEC90 - - thumb_func_start sub_80DED48 -sub_80DED48: @ 80DED48 - push {r4,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DED86 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - lsls r0, 16 - cmp r0, 0 - bne _080DEDA6 - adds r0, r2, 0x1 - strh r0, [r4, 0x32] - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DEDA6 - movs r0, 0x40 - negs r0, r0 - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xD7 - bl PlaySE1WithPanning - b _080DEDA6 -_080DED86: - 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 _080DED98 - negs r0, r0 -_080DED98: - cmp r0, 0xC - bne _080DEDA6 - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - subs r0, r2, 0x1 - strh r0, [r4, 0x32] -_080DEDA6: - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DEDB4 - adds r0, r4, 0 - bl DestroyAnimSprite -_080DEDB4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DED48 - - thumb_func_start sub_80DEDBC -sub_80DEDBC: @ 80DEDBC - 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_80DEC90 - pop {r0} - bx r0 - thumb_func_end sub_80DEDBC - - thumb_func_start sub_80DEDD8 -sub_80DEDD8: @ 80DEDD8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080DEE2C - ldr r1, _080DEE14 @ =0x00001f3f - movs r0, 0x48 - bl SetGpuReg - ldr r1, _080DEE18 @ =gBattle_WIN1H - ldr r2, _080DEE1C @ =0x000098f0 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _080DEE20 @ =gBattle_WIN1V - movs r0, 0xA0 - strh r0, [r1] - ldr r0, _080DEE24 @ =gBattle_WIN0H - ldrh r1, [r0] - movs r0, 0x42 - bl SetGpuReg - ldr r0, _080DEE28 @ =gBattle_WIN0V - ldrh r1, [r0] - movs r0, 0x46 - bl SetGpuReg - b _080DEE5C - .align 2, 0 -_080DEE14: .4byte 0x00001f3f -_080DEE18: .4byte gBattle_WIN1H -_080DEE1C: .4byte 0x000098f0 -_080DEE20: .4byte gBattle_WIN1V -_080DEE24: .4byte gBattle_WIN0H -_080DEE28: .4byte gBattle_WIN0V -_080DEE2C: - ldr r1, _080DEE68 @ =0x00001f3f - movs r0, 0x48 - bl SetGpuReg - ldr r1, _080DEE6C @ =gBattle_WIN1H - movs r0, 0xF0 - strh r0, [r1] - ldr r4, _080DEE70 @ =gBattle_WIN1V - ldr r1, _080DEE74 @ =0x000078a0 - adds r0, r1, 0 - strh r0, [r4] - movs r0, 0x42 - movs r1, 0xF0 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x46 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 7 - movs r0, 0 - bl SetGpuRegBits -_080DEE5C: - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DEE68: .4byte 0x00001f3f -_080DEE6C: .4byte gBattle_WIN1H -_080DEE70: .4byte gBattle_WIN1V -_080DEE74: .4byte 0x000078a0 - thumb_func_end sub_80DEDD8 - - thumb_func_start sub_80DEE78 -sub_80DEE78: @ 80DEE78 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080DEEB0 @ =0x00003f3f - movs r0, 0x48 - bl SetGpuReg - ldr r0, _080DEEB4 @ =gBattle_WIN1H - movs r1, 0 - strh r1, [r0] - ldr r0, _080DEEB8 @ =gBattle_WIN1V - strh r1, [r0] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080DEEA4 - movs r1, 0x80 - lsls r1, 7 - movs r0, 0 - bl ClearGpuRegBits -_080DEEA4: - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DEEB0: .4byte 0x00003f3f -_080DEEB4: .4byte gBattle_WIN1H -_080DEEB8: .4byte gBattle_WIN1V - thumb_func_end sub_80DEE78 - - thumb_func_start sub_80DEEBC -sub_80DEEBC: @ 80DEEBC - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080DEED0 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080DEED8 - ldr r4, _080DEED4 @ =gBattleAnimAttacker - b _080DEEDA - .align 2, 0 -_080DEED0: .4byte gBattleAnimArgs -_080DEED4: .4byte gBattleAnimAttacker -_080DEED8: - ldr r4, _080DEF2C @ =gBattleAnimTarget -_080DEEDA: - 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, _080DEF30 @ =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 _080DEF12 - movs r3, 0x1 -_080DEF12: - 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, _080DEF34 @ =sub_80DEF38 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DEF2C: .4byte gBattleAnimTarget -_080DEF30: .4byte gBattleAnimArgs -_080DEF34: .4byte sub_80DEF38 - thumb_func_end sub_80DEEBC - - thumb_func_start sub_80DEF38 -sub_80DEF38: @ 80DEF38 - 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, _080DEF80 @ =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 _080DEF84 - lsls r0, r1, 16 - asrs r0, 16 - movs r3, 0x36 - ldrsh r1, [r2, r3] - cmp r0, r1 - bge _080DEF96 - adds r0, r2, 0 - bl DestroyAnimSprite - b _080DEF96 - .align 2, 0 -_080DEF80: .4byte gSineTable -_080DEF84: - lsls r0, r1, 16 - asrs r0, 16 - movs r3, 0x36 - ldrsh r1, [r2, r3] - cmp r0, r1 - ble _080DEF96 - adds r0, r2, 0 - bl DestroyAnimSprite -_080DEF96: - pop {r0} - bx r0 - thumb_func_end sub_80DEF38 - - thumb_func_start sub_80DEF9C -sub_80DEF9C: @ 80DEF9C - 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, _080DEFBC @ =gTasks - adds r5, r1, r0 - ldr r0, _080DEFC0 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080DEFC8 - ldr r4, _080DEFC4 @ =gBattleAnimAttacker - b _080DEFCA - .align 2, 0 -_080DEFBC: .4byte gTasks -_080DEFC0: .4byte gBattleAnimArgs -_080DEFC4: .4byte gBattleAnimAttacker -_080DEFC8: - ldr r4, _080DF010 @ =gBattleAnimTarget -_080DEFCA: - ldrb r0, [r4] - bl GetBattlerYCoordWithElevation - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - bl GetBattlerSpriteBGPriorityRank - 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 _080DEFF4 - strh r2, [r5, 0xC] -_080DEFF4: - ldrh r0, [r5, 0x8] - strh r0, [r5, 0xE] - movs r0, 0x8 - strh r0, [r5, 0x10] - ldr r1, _080DF014 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - strh r0, [r5, 0x12] - strh r2, [r5, 0x14] - strh r2, [r5, 0x16] - cmp r7, 0x1 - bne _080DF01C - ldr r0, _080DF018 @ =gBattle_BG1_X - b _080DF01E - .align 2, 0 -_080DF010: .4byte gBattleAnimTarget -_080DF014: .4byte gBattleAnimArgs -_080DF018: .4byte gBattle_BG1_X -_080DF01C: - ldr r0, _080DF03C @ =gBattle_BG2_X -_080DF01E: - 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 _080DF040 - strh r3, [r5, 0x1E] - ldrh r3, [r5, 0x18] - b _080DF044 - .align 2, 0 -_080DF03C: .4byte gBattle_BG2_X -_080DF040: - strh r2, [r5, 0x1E] - ldrh r3, [r5, 0x1A] -_080DF044: - 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 _080DF07A - ldr r4, _080DF084 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r0, r4 - mov r12, r0 -_080DF060: - 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 _080DF060 -_080DF07A: - cmp r7, 0x1 - bne _080DF08C - ldr r0, _080DF088 @ =0x04000014 - b _080DF08E - .align 2, 0 -_080DF084: .4byte gScanlineEffectRegBuffers -_080DF088: .4byte 0x04000014 -_080DF08C: - ldr r0, _080DF0B8 @ =0x04000018 -_080DF08E: - str r0, [sp] - ldr r0, _080DF0BC @ =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, _080DF0C0 @ =sub_80DF0C4 - str r0, [r5] - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DF0B8: .4byte 0x04000018 -_080DF0BC: .4byte 0xa2600001 -_080DF0C0: .4byte sub_80DF0C4 - thumb_func_end sub_80DEF9C - - thumb_func_start sub_80DF0C4 -sub_80DF0C4: @ 80DF0C4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - ldr r1, _080DF114 @ =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 _080DF0EC - strh r2, [r4, 0x8] -_080DF0EC: - ldrh r1, [r4, 0x10] - movs r2, 0x10 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080DF118 - 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 _080DF11C - strh r2, [r4, 0xA] - movs r0, 0x1 - strh r0, [r4, 0x26] - b _080DF11C - .align 2, 0 -_080DF114: .4byte gTasks -_080DF118: - subs r0, r1, 0x1 - strh r0, [r4, 0x10] -_080DF11C: - ldrh r0, [r4, 0x14] - adds r0, 0x1 - strh r0, [r4, 0x14] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080DF148 - movs r0, 0 - strh r0, [r4, 0x14] - movs r1, 0 - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080DF13A - movs r1, 0x1 -_080DF13A: - strh r1, [r4, 0x16] - cmp r1, 0 - beq _080DF144 - ldrh r0, [r4, 0x18] - b _080DF146 -_080DF144: - ldrh r0, [r4, 0x1A] -_080DF146: - strh r0, [r4, 0x20] -_080DF148: - ldrh r1, [r4, 0x8] - lsls r3, r1, 16 - asrs r1, r3, 16 - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r1, r0 - bge _080DF17C - ldr r5, _080DF1D4 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r6, r5, r0 -_080DF15E: - 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 _080DF15E -_080DF17C: - ldrh r1, [r4, 0xA] - lsls r3, r1, 16 - asrs r1, r3, 16 - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r1, r0 - bgt _080DF1B0 - ldr r5, _080DF1D4 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r6, r5, r0 -_080DF192: - 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 _080DF192 -_080DF1B0: - movs r3, 0x26 - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080DF1CC - movs r1, 0x1C - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080DF1C6 - ldr r1, _080DF1D8 @ =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] -_080DF1C6: - adds r0, r7, 0 - bl DestroyAnimVisualTask -_080DF1CC: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DF1D4: .4byte gScanlineEffectRegBuffers -_080DF1D8: .4byte gScanlineEffect - thumb_func_end sub_80DF0C4 - - thumb_func_start sub_80DF1DC -sub_80DF1DC: @ 80DF1DC - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080DF230 @ =gTasks - adds r4, r0 - movs r5, 0 - strh r5, [r4, 0x8] - strh r5, [r4, 0xA] - ldr r6, _080DF234 @ =gBattleAnimAttacker - 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, _080DF238 @ =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, _080DF23C @ =sub_80DF240 - str r0, [r4] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DF230: .4byte gTasks -_080DF234: .4byte gBattleAnimAttacker -_080DF238: .4byte 0x0000ffec -_080DF23C: .4byte sub_80DF240 - thumb_func_end sub_80DF1DC - - thumb_func_start sub_80DF240 -sub_80DF240: @ 80DF240 - 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, _080DF26C @ =gTasks - adds r6, r0, r1 - movs r1, 0x8 - ldrsh r0, [r6, r1] - cmp r0, 0x5 - bls _080DF260 - b _080DF41A -_080DF260: - lsls r0, 2 - ldr r1, _080DF270 @ =_080DF274 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080DF26C: .4byte gTasks -_080DF270: .4byte _080DF274 - .align 2, 0 -_080DF274: - .4byte _080DF28C - .4byte _080DF34C - .4byte _080DF37A - .4byte _080DF38E - .4byte _080DF3A4 - .4byte _080DF40C -_080DF28C: - movs r0, 0xC - ldrsh r2, [r6, r0] - ldrh r1, [r6, 0xA] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080DF2A2 - movs r1, 0x10 - ldrsh r0, [r6, r1] - subs r0, r2, r0 - b _080DF2A8 -_080DF2A2: - movs r1, 0x10 - ldrsh r0, [r6, r1] - adds r0, r2, r0 -_080DF2A8: - lsls r0, 16 - lsrs r1, r0, 16 - ldrh r2, [r6, 0x12] - ldrh r0, [r6, 0xE] - adds r2, r0 - ldr r0, _080DF33C @ =gUnknown_83E398C - 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, 0xB3 - bl PlaySE12WithPanning - cmp r4, 0x40 - beq _080DF30C - ldr r5, _080DF340 @ =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, _080DF344 @ =SpriteCallbackDummy - str r0, [r1] -_080DF30C: - ldrh r1, [r6, 0xA] - movs r4, 0x1 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _080DF324 - ldrh r0, [r6, 0x10] - subs r0, 0x6 - strh r0, [r6, 0x10] - ldrh r0, [r6, 0x12] - subs r0, 0x6 - strh r0, [r6, 0x12] -_080DF324: - ldrh r1, [r6, 0x26] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080DF348 @ =gUnknown_83FF080 - adds r0, r6, 0 - bl PrepareAffineAnimInTaskData - ldrh r0, [r6, 0xA] - adds r0, 0x1 - strh r0, [r6, 0xA] - strh r4, [r6, 0x8] - b _080DF41A - .align 2, 0 -_080DF33C: .4byte gUnknown_83E398C -_080DF340: .4byte gSprites -_080DF344: .4byte SpriteCallbackDummy -_080DF348: .4byte gUnknown_83FF080 -_080DF34C: - adds r0, r6, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080DF41A - movs r2, 0xA - ldrsh r1, [r6, r2] - cmp r1, 0x6 - bne _080DF36C - movs r0, 0x8 - strh r0, [r6, 0x14] - movs r0, 0x3 - strh r0, [r6, 0x8] - b _080DF41A -_080DF36C: - cmp r1, 0x2 - bgt _080DF372 - movs r0, 0xA -_080DF372: - strh r0, [r6, 0x14] - movs r0, 0x2 - strh r0, [r6, 0x8] - b _080DF41A -_080DF37A: - ldrh r0, [r6, 0x14] - movs r2, 0x14 - ldrsh r1, [r6, r2] - cmp r1, 0 - beq _080DF38A - subs r0, 0x1 - strh r0, [r6, 0x14] - b _080DF41A -_080DF38A: - strh r1, [r6, 0x8] - b _080DF41A -_080DF38E: - ldrh r1, [r6, 0x14] - movs r2, 0x14 - ldrsh r0, [r6, r2] - cmp r0, 0 - beq _080DF39E - subs r0, r1, 0x1 - strh r0, [r6, 0x14] - b _080DF41A -_080DF39E: - movs r0, 0x4 - strh r0, [r6, 0x8] - b _080DF41A -_080DF3A4: - movs r5, 0 - movs r7, 0 - ldr r3, _080DF400 @ =gSprites - movs r0, 0x1C - adds r0, r3 - mov r8, r0 -_080DF3B0: - 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, _080DF404 @ =gUnknown_83E398C - cmp r1, r0 - bne _080DF3EC - 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, _080DF408 @ =sub_80DF428 - 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 _080DF3F6 -_080DF3EC: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3F - bls _080DF3B0 -_080DF3F6: - strh r7, [r6, 0x14] - movs r0, 0x5 - strh r0, [r6, 0x8] - b _080DF41A - .align 2, 0 -_080DF400: .4byte gSprites -_080DF404: .4byte gUnknown_83E398C -_080DF408: .4byte sub_80DF428 -_080DF40C: - movs r1, 0x14 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080DF41A - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080DF41A: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80DF240 - - thumb_func_start sub_80DF428 -sub_80DF428: @ 80DF428 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080DF45C - ldr r3, _080DF464 @ =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 -_080DF45C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DF464: .4byte gTasks - thumb_func_end sub_80DF428 - - thumb_func_start sub_80DF468 -sub_80DF468: @ 80DF468 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080DF47C - adds r0, r5, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker -_080DF47C: - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x27 - bgt _080DF4AE - ldrh r0, [r5, 0x2E] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080DF4A0 - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - b _080DF4AC -_080DF4A0: - adds r2, r5, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 -_080DF4AC: - strb r0, [r2] -_080DF4AE: - movs r2, 0x2E - ldrsh r0, [r5, r2] - cmp r0, 0x1E - ble _080DF4C4 - adds r2, r5, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080DF4C4: - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x3D - bne _080DF510 - ldr r1, _080DF518 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - 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, _080DF51C @ =gBattleAnimTarget - 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, _080DF520 @ =StartAnimLinearTranslation - str r0, [r5, 0x1C] -_080DF510: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DF518: .4byte DestroyAnimSprite -_080DF51C: .4byte gBattleAnimTarget -_080DF520: .4byte StartAnimLinearTranslation - thumb_func_end sub_80DF468 - - thumb_func_start sub_80DF524 -sub_80DF524: @ 80DF524 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080DF544 @ =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 _080DF548 - cmp r0, 0x1 - beq _080DF568 - b _080DF57A - .align 2, 0 -_080DF544: .4byte gTasks -_080DF548: - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080DF564 @ =gUnknown_83FF130 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080DF57A - .align 2, 0 -_080DF564: .4byte gUnknown_83FF130 -_080DF568: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080DF57A - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DF57A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DF524 - - thumb_func_start sub_80DF580 -sub_80DF580: @ 80DF580 - 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 _080DF5E0 - cmp r0, 0x1 - bgt _080DF5A0 - cmp r0, 0 - beq _080DF5AA - b _080DF682 -_080DF5A0: - cmp r0, 0x2 - beq _080DF610 - cmp r0, 0x3 - beq _080DF664 - b _080DF682 -_080DF5AA: - ldr r4, _080DF5DC @ =gBattleAnimAttacker - 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 PrepareBattlerSpriteForRotScale - movs r0, 0x80 - lsls r0, 1 - strh r0, [r5, 0x30] - strh r0, [r5, 0x32] - b _080DF658 - .align 2, 0 -_080DF5DC: .4byte gBattleAnimAttacker -_080DF5E0: - 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 SetSpriteRotScale - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080DF610 - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] -_080DF610: - 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 SetSpriteRotScale - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bne _080DF682 - movs r0, 0 - strh r0, [r5, 0x34] - ldr r1, _080DF660 @ =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 ResetSpriteRotScale -_080DF658: - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _080DF682 - .align 2, 0 -_080DF660: .4byte gSprites -_080DF664: - 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 _080DF682 - adds r0, r5, 0 - bl DestroyAnimSprite -_080DF682: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80DF580 - - thumb_func_start sub_80DF688 -sub_80DF688: @ 80DF688 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080DF6A0 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080DF6A8 - ldr r0, _080DF6A4 @ =0x0000fff0 - b _080DF6AC - .align 2, 0 -_080DF6A0: .4byte gBattleAnimAttacker -_080DF6A4: .4byte 0x0000fff0 -_080DF6A8: - movs r0, 0x80 - lsls r0, 1 -_080DF6AC: - strh r0, [r4, 0x20] - movs r0, 0 - strh r0, [r4, 0x22] - ldr r0, _080DF6BC @ =sub_80DF6C0 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DF6BC: .4byte sub_80DF6C0 - thumb_func_end sub_80DF688 - - thumb_func_start sub_80DF6C0 -sub_80DF6C0: @ 80DF6C0 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x48 - strh r0, [r4, 0x2E] - ldr r0, _080DF6E0 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080DF6E4 - ldrh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 20 - b _080DF6EC - .align 2, 0 -_080DF6E0: .4byte gBattleAnimAttacker -_080DF6E4: - ldrh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 20 - negs r0, r0 -_080DF6EC: - 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 _080DF738 - ldr r0, _080DF758 @ =gUnknown_83FF180 - 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 -_080DF738: - 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 _080DF752 - adds r0, r4, 0 - bl DestroyAnimSprite -_080DF752: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DF758: .4byte gUnknown_83FF180 - thumb_func_end sub_80DF6C0 - - thumb_func_start sub_80DF75C -sub_80DF75C: @ 80DF75C - push {r4,lr} - adds r4, r0, 0 - bl Random - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _080DF776 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x4 - b _080DF77E -_080DF776: - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x5 -_080DF77E: - ldr r3, _080DF7B0 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080DF7B4 @ =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 _080DF7A0 - negs r0, r1 - lsls r0, 24 - lsrs r0, 24 -_080DF7A0: - lsls r0, 24 - asrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080DF7B8 @ =sub_80DF7BC - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DF7B0: .4byte 0x000003ff -_080DF7B4: .4byte 0xfffffc00 -_080DF7B8: .4byte sub_80DF7BC - thumb_func_end sub_80DF75C - - thumb_func_start sub_80DF7BC -sub_80DF7BC: @ 80DF7BC - 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 _080DF7FE - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080DF832 - 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 _080DF830 -_080DF7FE: - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0x2 - bne _080DF814 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080DF814: - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0x3 - bne _080DF82C - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080DF844 @ =0x0000ffff - strh r0, [r3, 0x30] -_080DF82C: - ldrh r0, [r3, 0x30] - adds r0, 0x1 -_080DF830: - strh r0, [r3, 0x30] -_080DF832: - movs r1, 0x2E - ldrsh r0, [r3, r1] - cmp r0, 0x3C - ble _080DF840 - adds r0, r3, 0 - bl DestroySprite -_080DF840: - pop {r0} - bx r0 - .align 2, 0 -_080DF844: .4byte 0x0000ffff - thumb_func_end sub_80DF7BC - - thumb_func_start sub_80DF848 -sub_80DF848: @ 80DF848 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _080DF880 @ =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 _080DF888 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080DF884 @ =gUnknown_83FF198 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080DF89A - .align 2, 0 -_080DF880: .4byte gTasks -_080DF884: .4byte gUnknown_83FF198 -_080DF888: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080DF89A - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DF89A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DF848 - - thumb_func_start sub_80DF8A0 -sub_80DF8A0: @ 80DF8A0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _080DF8D8 @ =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 _080DF8E0 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080DF8DC @ =gUnknown_83FF1C0 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080DF8F2 - .align 2, 0 -_080DF8D8: .4byte gTasks -_080DF8DC: .4byte gUnknown_83FF1C0 -_080DF8E0: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080DF8F2 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DF8F2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DF8A0 - - thumb_func_start sub_80DF8F8 -sub_80DF8F8: @ 80DF8F8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080DF90A - cmp r0, 0x1 - beq _080DF934 - b _080DF95C -_080DF90A: - adds r0, r4, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker - movs r0, 0x90 - lsls r0, 4 - strh r0, [r4, 0x30] - ldr r0, _080DF930 @ =gBattleAnimAttacker - 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 _080DF95C - .align 2, 0 -_080DF930: .4byte gBattleAnimAttacker -_080DF934: - 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 _080DF95C - adds r0, r4, 0 - bl DestroyAnimSprite -_080DF95C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DF8F8 - - thumb_func_start sub_80DF964 -sub_80DF964: @ 80DF964 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _080DF99C @ =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 _080DF9A4 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080DF9A0 @ =gUnknown_83FF210 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080DF9B6 - .align 2, 0 -_080DF99C: .4byte gTasks -_080DF9A0: .4byte gUnknown_83FF210 -_080DF9A4: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080DF9B6 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DF9B6: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DF964 - - thumb_func_start sub_80DF9BC -sub_80DF9BC: @ 80DF9BC - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080DF9E4 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r3, r1, 0 - cmp r0, 0x4 - bls _080DF9DA - b _080DFBCE -_080DF9DA: - lsls r0, 2 - ldr r1, _080DF9E8 @ =_080DF9EC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080DF9E4: .4byte gTasks -_080DF9E8: .4byte _080DF9EC - .align 2, 0 -_080DF9EC: - .4byte _080DFA00 - .4byte _080DFA4C - .4byte _080DFA86 - .4byte _080DFB1C - .4byte _080DFB58 -_080DFA00: - movs r0, 0x4C - movs r1, 0 - bl SetGpuReg - ldr r0, _080DFA24 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DFA28 - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0x1 - bl SetAnimBgAttribute - b _080DFA32 - .align 2, 0 -_080DFA24: .4byte gBattleAnimAttacker -_080DFA28: - movs r0, 0x2 - movs r1, 0x2 - movs r2, 0x1 - bl SetAnimBgAttribute -_080DFA32: - ldr r0, _080DFA44 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080DFA48 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r1, 0x1C] - b _080DFB00 - .align 2, 0 -_080DFA44: .4byte gTasks -_080DFA48: .4byte gBattleAnimArgs -_080DFA4C: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r5, r0, r3 - ldrh r0, [r5, 0xC] - adds r1, r0, 0x1 - strh r1, [r5, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bgt _080DFA64 - b _080DFBCE -_080DFA64: - movs r0, 0 - strh r0, [r5, 0xC] - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - ldrh r4, [r5, 0xA] - lsls r1, r4, 4 - orrs r1, r4 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x4C - bl SetGpuReg - cmp r4, 0xF - beq _080DFA84 - b _080DFBCE -_080DFA84: - b _080DFB50 -_080DFA86: - ldr r6, _080DFAB4 @ =gBattleAnimAttacker - ldrb r0, [r6] - ldr r1, _080DFAB8 @ =gBattleAnimTarget - ldrb r1, [r1] - lsls r4, r5, 2 - adds r2, r4, r5 - lsls r2, 3 - adds r2, r3 - ldrb r2, [r2, 0x1C] - bl HandleSpeciesGfxDataChange - ldrb r1, [r6] - mov r0, sp - bl sub_8075300 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080DFABC - movs r1, 0 - b _080DFAC6 - .align 2, 0 -_080DFAB4: .4byte gBattleAnimAttacker -_080DFAB8: .4byte gBattleAnimTarget -_080DFABC: - ldrb r0, [r6] - bl GetBattlerPosition - lsls r0, 24 - lsrs r1, r0, 24 -_080DFAC6: - ldr r0, _080DFB08 @ =gMonSpritesGfxPtr - ldr r2, [r0] - lsls r0, r1, 2 - adds r2, 0x4 - adds r2, r0 - ldr r1, _080DFB0C @ =gBattleMonForms - ldr r0, _080DFB10 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r1, 11 - ldr r0, [r2] - adds r0, r1 - ldr r1, [sp] - ldr r2, _080DFB14 @ =0x04000200 - bl CpuSet - ldr r1, [sp] - movs r2, 0x80 - lsls r2, 4 - mov r0, sp - ldrh r3, [r0, 0xA] - movs r0, 0x1 - bl LoadBgTiles - ldr r0, _080DFB18 @ =gTasks - adds r1, r4, r5 - lsls r1, 3 - adds r1, r0 -_080DFB00: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080DFBCE - .align 2, 0 -_080DFB08: .4byte gMonSpritesGfxPtr -_080DFB0C: .4byte gBattleMonForms -_080DFB10: .4byte gBattleAnimAttacker -_080DFB14: .4byte 0x04000200 -_080DFB18: .4byte gTasks -_080DFB1C: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r5, r0, r3 - ldrh r0, [r5, 0xC] - adds r1, r0, 0x1 - strh r1, [r5, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080DFBCE - movs r0, 0 - strh r0, [r5, 0xC] - ldrh r0, [r5, 0xA] - subs r0, 0x1 - strh r0, [r5, 0xA] - ldrh r4, [r5, 0xA] - lsls r1, r4, 4 - orrs r1, r4 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x4C - bl SetGpuReg - cmp r4, 0 - bne _080DFBCE -_080DFB50: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080DFBCE -_080DFB58: - movs r0, 0x4C - movs r1, 0 - bl SetGpuReg - ldr r0, _080DFB7C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DFB80 - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0 - bl SetAnimBgAttribute - b _080DFB8A - .align 2, 0 -_080DFB7C: .4byte gBattleAnimAttacker -_080DFB80: - movs r0, 0x2 - movs r1, 0x2 - movs r2, 0 - bl SetAnimBgAttribute -_080DFB8A: - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080DFBC8 - ldr r4, _080DFBD8 @ =gBattleAnimAttacker - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DFBC8 - ldr r0, _080DFBDC @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0x1C - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080DFBC8 - ldrb r0, [r4] - ldr r1, _080DFBE0 @ =gBattleSpritesDataPtr - ldr r1, [r1] - ldr r2, [r1] - lsls r1, r0, 2 - adds r1, r2 - ldrh r1, [r1, 0x2] - bl SetBattlerShadowSpriteCallback -_080DFBC8: - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080DFBCE: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DFBD8: .4byte gBattleAnimAttacker -_080DFBDC: .4byte gTasks -_080DFBE0: .4byte gBattleSpritesDataPtr - thumb_func_end sub_80DF9BC - - thumb_func_start c3_80DFBE4 -c3_80DFBE4: @ 80DFBE4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r4, _080DFC14 @ =gBattleAnimArgs - ldr r3, _080DFC18 @ =gSprites - ldr r2, _080DFC1C @ =gBattlerSpriteIds - ldr r1, _080DFC20 @ =gBattleAnimAttacker - ldrb r1, [r1] - adds r1, r2 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - adds r1, 0x3E - ldrb r1, [r1] - lsls r1, 29 - lsrs r1, 31 - strh r1, [r4, 0xE] - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DFC14: .4byte gBattleAnimArgs -_080DFC18: .4byte gSprites -_080DFC1C: .4byte gBattlerSpriteIds -_080DFC20: .4byte gBattleAnimAttacker - thumb_func_end c3_80DFBE4 - - thumb_func_start sub_80DFC24 -sub_80DFC24: @ 80DFC24 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080DFC48 @ =gBattleAnimAttacker - ldrb r0, [r0] - ldr r1, _080DFC4C @ =gBattleAnimTarget - ldrb r1, [r1] - movs r2, 0x1 - bl HandleSpeciesGfxDataChange - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DFC48: .4byte gBattleAnimAttacker -_080DFC4C: .4byte gBattleAnimTarget - thumb_func_end sub_80DFC24 - - thumb_func_start sub_80DFC50 -sub_80DFC50: @ 80DFC50 - push {r4,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080DFC78 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bls _080DFC6E - b _080DFECA -_080DFC6E: - lsls r0, 2 - ldr r1, _080DFC7C @ =_080DFC80 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080DFC78: .4byte gTasks -_080DFC7C: .4byte _080DFC80 - .align 2, 0 -_080DFC80: - .4byte _080DFC94 - .4byte _080DFD90 - .4byte _080DFDE0 - .4byte _080DFE4A - .4byte _080DFE7E -_080DFC94: - ldr r1, _080DFD18 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080DFCCE - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl SetAnimBgAttribute -_080DFCCE: - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080DFD1C @ =gFile_graphics_battle_anims_masks_morning_sun_tilemap - bl AnimLoadCompressedBgTilemap - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080DFD20 @ =gFile_graphics_battle_anims_masks_morning_sun_sheet - mov r2, sp - ldrh r2, [r2, 0xA] - bl AnimLoadCompressedBgGfx - ldr r0, _080DFD24 @ =gFile_graphics_battle_anims_masks_morning_sun_palette - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080DFD30 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80730C0 - ldr r1, _080DFD28 @ =gBattle_BG1_X - ldr r3, _080DFD2C @ =0x0000ffc8 - b _080DFD58 - .align 2, 0 -_080DFD18: .4byte 0x00003f42 -_080DFD1C: .4byte gFile_graphics_battle_anims_masks_morning_sun_tilemap -_080DFD20: .4byte gFile_graphics_battle_anims_masks_morning_sun_sheet -_080DFD24: .4byte gFile_graphics_battle_anims_masks_morning_sun_palette -_080DFD28: .4byte gBattle_BG1_X -_080DFD2C: .4byte 0x0000ffc8 -_080DFD30: - ldr r0, _080DFD48 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080DFD54 - ldr r1, _080DFD4C @ =gBattle_BG1_X - ldr r2, _080DFD50 @ =0x0000ff79 - adds r0, r2, 0 - b _080DFD5A - .align 2, 0 -_080DFD48: .4byte gBattleAnimAttacker -_080DFD4C: .4byte gBattle_BG1_X -_080DFD50: .4byte 0x0000ff79 -_080DFD54: - ldr r1, _080DFD80 @ =gBattle_BG1_X - ldr r3, _080DFD84 @ =0x0000fff6 -_080DFD58: - adds r0, r3, 0 -_080DFD5A: - strh r0, [r1] - ldr r1, _080DFD88 @ =gBattle_BG1_Y - movs r0, 0 - strh r0, [r1] - ldr r0, _080DFD8C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080DFD80 @ =gBattle_BG1_X - ldrh r0, [r0] - strh r0, [r1, 0x1C] - ldr r0, _080DFD88 @ =gBattle_BG1_Y - ldrh r0, [r0] - strh r0, [r1, 0x1E] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - b _080DFE66 - .align 2, 0 -_080DFD80: .4byte gBattle_BG1_X -_080DFD84: .4byte 0x0000fff6 -_080DFD88: .4byte gBattle_BG1_Y -_080DFD8C: .4byte gTasks -_080DFD90: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x10] - adds r1, r0, 0x1 - strh r1, [r4, 0x10] - lsls r0, 16 - cmp r0, 0 - bgt _080DFDA6 - b _080DFECA -_080DFDA6: - movs r0, 0 - strh r0, [r4, 0x10] - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - ble _080DFDBC - movs r0, 0xC - strh r0, [r4, 0xA] -_080DFDBC: - ldrh r0, [r4, 0xA] - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0xC - bne _080DFECA - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080DFECA -_080DFDE0: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0xA] - subs r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - cmp r0, 0 - bge _080DFDF8 - movs r0, 0 - strh r0, [r4, 0xA] -_080DFDF8: - ldrh r0, [r4, 0xA] - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080DFECA - ldr r2, _080DFE3C @ =gBattle_BG1_X - ldr r1, _080DFE40 @ =gUnknown_83FF240 - movs r3, 0xC - ldrsh r0, [r4, r3] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r1, [r4, 0x1C] - adds r0, r1 - strh r0, [r2] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080DFE44 - strh r0, [r4, 0x8] - b _080DFECA - .align 2, 0 -_080DFE3C: .4byte gBattle_BG1_X -_080DFE40: .4byte gUnknown_83FF240 -_080DFE44: - movs r0, 0x3 - strh r0, [r4, 0x8] - b _080DFECA -_080DFE4A: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r2 - ldrh r0, [r1, 0xE] - adds r0, 0x1 - strh r0, [r1, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080DFECA - movs r0, 0 - strh r0, [r1, 0xE] - movs r0, 0x1 -_080DFE66: - strh r0, [r1, 0x8] - movs r0, 0x40 - negs r0, r0 - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xDD - bl PlaySE12WithPanning - b _080DFECA -_080DFE7E: - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - bl sub_8075358 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080DFEA0 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_080DFEA0: - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - ldr r0, _080DFED4 @ =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r0, _080DFED8 @ =gBattle_BG1_Y - strh r1, [r0] - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080DFECA: - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DFED4: .4byte gBattle_BG1_X -_080DFED8: .4byte gBattle_BG1_Y - thumb_func_end sub_80DFC50 - - thumb_func_start sub_80DFEDC -sub_80DFEDC: @ 80DFEDC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r7, r0, 0 - bl Random - lsls r0, 16 - movs r1, 0xFC - lsls r1, 14 - ands r1, r0 - lsrs r5, r1, 16 - adds r1, r5, 0 - cmp r1, 0x1F - ble _080DFF06 - movs r0, 0x20 - subs r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 -_080DFF06: - ldr r4, _080E0000 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r5 - strh r0, [r7, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - strh r0, [r7, 0x22] - ldr r1, _080E0004 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r7, 0x30] - ldrh r0, [r1, 0x2] - strh r0, [r7, 0x32] - ldr r4, _080E0008 @ =gUnknown_83FF26C - movs r0, 0x20 - ldrsh r1, [r7, r0] - movs r0, 0x22 - ldrsh r2, [r7, r0] - adds r5, r7, 0 - adds r5, 0x43 - ldrb r3, [r5] - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - bl CreateSprite - mov r9, r0 - mov r1, r9 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - movs r0, 0x20 - ldrsh r1, [r7, r0] - movs r0, 0x22 - ldrsh r2, [r7, r0] - ldrb r3, [r5] - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - bl CreateSprite - mov r8, r0 - mov r1, r8 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - mov r0, r9 - lsls r2, r0, 4 - add r2, r9 - lsls r2, 2 - ldr r1, _080E000C @ =gSprites - mov r10, r1 - adds r5, r2, r1 - adds r0, r5, 0 - movs r1, 0x1 - str r2, [sp] - bl StartSpriteAnim - mov r0, r8 - lsls r6, r0, 4 - add r6, r8 - lsls r6, 2 - mov r1, r10 - adds r4, r6, r1 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim - ldr r1, _080E0004 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r5, 0x30] - ldrh r0, [r1, 0x2] - strh r0, [r5, 0x32] - ldrh r0, [r1] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x32] - ldr r0, _080E0010 @ =0x0000ffff - strh r0, [r5, 0x3C] - movs r0, 0x1 - negs r0, r0 - strh r0, [r4, 0x3C] - adds r5, 0x3E - ldrb r0, [r5] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r5] - adds r4, 0x3E - ldrb r0, [r4] - orrs r0, r1 - strb r0, [r4] - movs r0, 0x1C - add r10, r0 - ldr r2, [sp] - add r2, r10 - ldr r0, _080E0014 @ =sub_80E0128 - str r0, [r2] - add r6, r10 - str r0, [r6] - mov r1, r9 - strh r1, [r7, 0x3A] - mov r0, r8 - strh r0, [r7, 0x3C] - ldr r0, _080E0018 @ =sub_80E001C - str r0, [r7, 0x1C] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E0000: .4byte gBattleAnimAttacker -_080E0004: .4byte gBattleAnimArgs -_080E0008: .4byte gUnknown_83FF26C -_080E000C: .4byte gSprites -_080E0010: .4byte 0x0000ffff -_080E0014: .4byte sub_80E0128 -_080E0018: .4byte sub_80E001C - thumb_func_end sub_80DFEDC - - thumb_func_start sub_80E001C -sub_80E001C: @ 80E001C - push {lr} - adds r3, r0, 0 - ldrh r2, [r3, 0x32] - ldrh r0, [r3, 0x34] - adds r2, r0 - lsls r0, r2, 16 - asrs r0, 24 - ldrh r1, [r3, 0x26] - subs r1, r0 - strh r1, [r3, 0x26] - movs r0, 0xFF - ands r2, r0 - strh r2, [r3, 0x34] - movs r2, 0x36 - ldrsh r0, [r3, r2] - cmp r0, 0 - bne _080E006A - lsls r0, r1, 16 - asrs r0, 16 - movs r1, 0x8 - negs r1, r1 - cmp r0, r1 - bge _080E006A - ldr r2, _080E00C4 @ =gSprites - movs r0, 0x3A - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldrh r0, [r3, 0x36] - adds r0, 0x1 - strh r0, [r3, 0x36] -_080E006A: - movs r1, 0x36 - ldrsh r0, [r3, r1] - cmp r0, 0x1 - bne _080E009E - movs r2, 0x26 - ldrsh r1, [r3, r2] - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - bge _080E009E - ldr r2, _080E00C4 @ =gSprites - movs r0, 0x3C - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldrh r0, [r3, 0x36] - adds r0, 0x1 - strh r0, [r3, 0x36] -_080E009E: - ldrh r0, [r3, 0x30] - subs r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080E00C0 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080E00C8 @ =sub_80E00CC - str r0, [r3, 0x1C] -_080E00C0: - pop {r0} - bx r0 - .align 2, 0 -_080E00C4: .4byte gSprites -_080E00C8: .4byte sub_80E00CC - thumb_func_end sub_80E001C - - thumb_func_start sub_80E00CC -sub_80E00CC: @ 80E00CC - push {r4-r6,lr} - adds r4, r0, 0 - ldr r5, _080E0120 @ =gSprites - movs r0, 0x3A - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r3, r0, 2 - adds r6, r5, 0 - adds r6, 0x1C - adds r0, r3, r6 - ldr r2, [r0] - ldr r0, _080E0124 @ =SpriteCallbackDummy - cmp r2, r0 - bne _080E0118 - movs r1, 0x3C - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldr r0, [r1] - cmp r0, r2 - bne _080E0118 - adds r0, r3, r5 - bl DestroySprite - movs r0, 0x3C - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite - adds r0, r4, 0 - bl DestroyAnimSprite -_080E0118: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E0120: .4byte gSprites -_080E0124: .4byte SpriteCallbackDummy - thumb_func_end sub_80E00CC - - thumb_func_start sub_80E0128 -sub_80E0128: @ 80E0128 - push {lr} - adds r3, r0, 0 - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _080E0174 - ldrh r2, [r3, 0x32] - ldrh r1, [r3, 0x34] - adds r2, r1 - lsls r1, r2, 16 - asrs r1, 24 - ldrh r0, [r3, 0x26] - subs r0, r1 - strh r0, [r3, 0x26] - movs r0, 0xFF - ands r2, r0 - strh r2, [r3, 0x34] - ldrh r0, [r3, 0x30] - subs r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080E0174 - mov r1, r12 - ldrb r0, [r1] - movs r1, 0x4 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldr r0, _080E0178 @ =SpriteCallbackDummy - str r0, [r3, 0x1C] -_080E0174: - pop {r0} - bx r0 - .align 2, 0 -_080E0178: .4byte SpriteCallbackDummy - thumb_func_end sub_80E0128 - - thumb_func_start sub_80E017C -sub_80E017C: @ 80E017C - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080E01A4 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r4, r1, 0 - cmp r0, 0x5 - bls _080E019A - b _080E0476 -_080E019A: - lsls r0, 2 - ldr r1, _080E01A8 @ =_080E01AC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E01A4: .4byte gTasks -_080E01A8: .4byte _080E01AC - .align 2, 0 -_080E01AC: - .4byte _080E01C4 - .4byte _080E0304 - .4byte _080E038C - .4byte _080E03C2 - .4byte _080E03F0 - .4byte _080E042A -_080E01C4: - ldr r1, _080E0248 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - ldr r1, _080E024C @ =0x00000d03 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080E01FC - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl SetAnimBgAttribute -_080E01FC: - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080E0250 @ =gFile_graphics_battle_anims_masks_morning_sun_tilemap - bl AnimLoadCompressedBgTilemap - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080E0254 @ =gFile_graphics_battle_anims_masks_morning_sun_sheet - mov r2, sp - ldrh r2, [r2, 0xA] - bl AnimLoadCompressedBgGfx - ldr r0, _080E0258 @ =gFile_graphics_battle_anims_masks_morning_sun_palette - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080E0264 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80730C0 - ldr r1, _080E025C @ =gBattle_BG1_X - ldr r3, _080E0260 @ =0x0000ffc8 - adds r0, r3, 0 - b _080E02CE - .align 2, 0 -_080E0248: .4byte 0x00003f42 -_080E024C: .4byte 0x00000d03 -_080E0250: .4byte gFile_graphics_battle_anims_masks_morning_sun_tilemap -_080E0254: .4byte gFile_graphics_battle_anims_masks_morning_sun_sheet -_080E0258: .4byte gFile_graphics_battle_anims_masks_morning_sun_palette -_080E025C: .4byte gBattle_BG1_X -_080E0260: .4byte 0x0000ffc8 -_080E0264: - ldr r0, _080E02A4 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerPosition - lsls r0, 24 - lsrs r4, r0, 24 - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E02B8 - ldr r1, _080E02A8 @ =gBattle_BG1_X - cmp r4, 0x1 - bne _080E0288 - ldr r2, _080E02AC @ =0x0000ff65 - adds r0, r2, 0 - strh r0, [r1] -_080E0288: - cmp r4, 0x3 - bne _080E0292 - ldr r3, _080E02B0 @ =0x0000ff8d - adds r0, r3, 0 - strh r0, [r1] -_080E0292: - cmp r4, 0 - bne _080E029A - movs r0, 0xE - strh r0, [r1] -_080E029A: - cmp r4, 0x2 - bne _080E02D0 - ldr r1, _080E02A8 @ =gBattle_BG1_X - ldr r2, _080E02B4 @ =0x0000ffec - b _080E02CC - .align 2, 0 -_080E02A4: .4byte gBattleAnimTarget -_080E02A8: .4byte gBattle_BG1_X -_080E02AC: .4byte 0x0000ff65 -_080E02B0: .4byte 0x0000ff8d -_080E02B4: .4byte 0x0000ffec -_080E02B8: - cmp r4, 0x1 - bne _080E02C4 - ldr r1, _080E02F0 @ =gBattle_BG1_X - ldr r3, _080E02F4 @ =0x0000ff79 - adds r0, r3, 0 - strh r0, [r1] -_080E02C4: - cmp r4, 0 - bne _080E02D0 - ldr r1, _080E02F0 @ =gBattle_BG1_X - ldr r2, _080E02F8 @ =0x0000fff6 -_080E02CC: - adds r0, r2, 0 -_080E02CE: - strh r0, [r1] -_080E02D0: - ldr r1, _080E02FC @ =gBattle_BG1_Y - movs r0, 0 - strh r0, [r1] - ldr r0, _080E0300 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _080E02F0 @ =gBattle_BG1_X - ldrh r0, [r0] - strh r0, [r1, 0x1C] - ldr r0, _080E02FC @ =gBattle_BG1_Y - ldrh r0, [r0] - strh r0, [r1, 0x1E] - b _080E0384 - .align 2, 0 -_080E02F0: .4byte gBattle_BG1_X -_080E02F4: .4byte 0x0000ff79 -_080E02F8: .4byte 0x0000fff6 -_080E02FC: .4byte gBattle_BG1_Y -_080E0300: .4byte gTasks -_080E0304: - ldr r1, _080E0338 @ =gTasks - lsls r4, r6, 2 - adds r0, r4, r6 - lsls r0, 3 - adds r5, r0, r1 - movs r0, 0 - strh r0, [r5, 0xE] - ldr r0, _080E033C @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E0348 - ldr r2, _080E0340 @ =gBattle_BG1_X - ldr r1, _080E0344 @ =gUnknown_83FF284 - movs r3, 0xC - ldrsh r0, [r5, r3] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r5, [r5, 0x1C] - adds r0, r5 - b _080E035A - .align 2, 0 -_080E0338: .4byte gTasks -_080E033C: .4byte gBattleAnimTarget -_080E0340: .4byte gBattle_BG1_X -_080E0344: .4byte gUnknown_83FF284 -_080E0348: - ldr r2, _080E0378 @ =gBattle_BG1_X - ldr r1, _080E037C @ =gUnknown_83FF284 - movs r3, 0xC - ldrsh r0, [r5, r3] - adds r0, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - ldrh r0, [r5, 0x1C] - subs r0, r1 -_080E035A: - strh r0, [r2] - ldr r0, _080E0380 @ =gTasks - adds r1, r4, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xC] - adds r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080E0384 - strh r0, [r1, 0x8] - b _080E0476 - .align 2, 0 -_080E0378: .4byte gBattle_BG1_X -_080E037C: .4byte gUnknown_83FF284 -_080E0380: .4byte gTasks -_080E0384: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080E0476 -_080E038C: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r4 - ldrh r0, [r4, 0xA] - subs r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bgt _080E03A6 - movs r0, 0x5 - strh r0, [r4, 0xA] -_080E03A6: - ldrh r1, [r4, 0xA] - lsls r1, 8 - movs r0, 0x3 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x5 - bne _080E0476 - b _080E03E2 -_080E03C2: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r4 - ldrh r1, [r4, 0xE] - adds r1, 0x1 - strh r1, [r4, 0xE] - lsls r1, 16 - asrs r1, 16 - ldr r2, _080E03EC @ =gUnknown_83FF288 - movs r3, 0xC - ldrsh r0, [r4, r3] - adds r0, r2 - ldrb r0, [r0] - cmp r1, r0 - ble _080E0476 -_080E03E2: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E0476 - .align 2, 0 -_080E03EC: .4byte gUnknown_83FF288 -_080E03F0: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r4 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - ble _080E040A - movs r0, 0xD - strh r0, [r4, 0xA] -_080E040A: - ldrh r1, [r4, 0xA] - lsls r1, 8 - movs r0, 0x3 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0xD - bne _080E0476 - movs r0, 0x1 - strh r0, [r4, 0x8] - b _080E0476 -_080E042A: - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - bl sub_8075358 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080E044C - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_080E044C: - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - ldr r0, _080E0480 @ =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r0, _080E0484 @ =gBattle_BG1_Y - strh r1, [r0] - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080E0476: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E0480: .4byte gBattle_BG1_X -_080E0484: .4byte gBattle_BG1_Y - thumb_func_end sub_80E017C - - thumb_func_start sub_80E0488 -sub_80E0488: @ 80E0488 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _080E04C0 @ =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 _080E04C8 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080E04C4 @ =gUnknown_83FF290 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E04DA - .align 2, 0 -_080E04C0: .4byte gTasks -_080E04C4: .4byte gUnknown_83FF290 -_080E04C8: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080E04DA - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080E04DA: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80E0488 - - thumb_func_start sub_80E04E0 -sub_80E04E0: @ 80E04E0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - movs r2, 0x2E - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _080E04FE - adds r0, r4, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080E0552 -_080E04FE: - adds r0, 0x1 - strh r0, [r4, 0x2E] - cmp r1, 0x14 - ble _080E0552 - ldrh r0, [r4, 0x30] - adds r0, 0xA0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x32] - adds r0, 0x80 - strh r0, [r4, 0x32] - ldr r0, _080E052C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080E0530 - ldrh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - negs r0, r0 - b _080E0536 - .align 2, 0 -_080E052C: .4byte gBattleAnimAttacker -_080E0530: - ldrh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 -_080E0536: - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x40 - ble _080E0552 - adds r0, r4, 0 - bl DestroyAnimSprite -_080E0552: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E04E0 - - thumb_func_start sub_80E0558 -sub_80E0558: @ 80E0558 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080E057C @ =gTasks - adds r4, r0, r1 - ldr r5, _080E0580 @ =gBattleAnimArgs - movs r1, 0x2 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080E0584 - adds r0, r2, 0 - bl DestroyAnimVisualTask - b _080E0618 - .align 2, 0 -_080E057C: .4byte gTasks -_080E0580: .4byte gBattleAnimArgs -_080E0584: - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0 - bge _080E0590 - movs r0, 0 - strh r0, [r5, 0x4] -_080E0590: - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0x2 - ble _080E059C - movs r0, 0x2 - strh r0, [r5, 0x4] -_080E059C: - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - movs r0, 0x4 - ldrsh r1, [r5, r0] - lsls r1, 1 - movs r0, 0x8 - subs r0, r1 - strh r0, [r4, 0xE] - movs r1, 0x4 - ldrsh r0, [r5, r1] - lsls r0, 7 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - strh r0, [r4, 0x10] - ldrh r0, [r5, 0x4] - adds r0, 0x2 - strh r0, [r4, 0x12] - ldrh r0, [r5, 0x2] - subs r0, 0x1 - strh r0, [r4, 0x14] - ldrb r0, [r5] - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080E05E8 - ldr r0, _080E05E4 @ =gBattleAnimAttacker - b _080E05EA - .align 2, 0 -_080E05E4: .4byte gBattleAnimAttacker -_080E05E8: - ldr r0, _080E0620 @ =gBattleAnimTarget -_080E05EA: - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E0608 - movs r1, 0x10 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0x10] - movs r1, 0x12 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0x12] -_080E0608: - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - ldr r0, _080E0624 @ =sub_80E0628 - str r0, [r4] -_080E0618: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E0620: .4byte gBattleAnimTarget -_080E0624: .4byte sub_80E0628 - thumb_func_end sub_80E0558 - - thumb_func_start sub_80E0628 -sub_80E0628: @ 80E0628 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080E064C @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r6, [r4, r0] - cmp r6, 0x1 - beq _080E06B0 - cmp r6, 0x1 - bgt _080E0650 - cmp r6, 0 - beq _080E065C - b _080E0788 - .align 2, 0 -_080E064C: .4byte gTasks -_080E0650: - cmp r6, 0x2 - beq _080E0708 - cmp r6, 0x3 - bne _080E065A - b _080E0778 -_080E065A: - b _080E0788 -_080E065C: - ldr r2, _080E06AC @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x12] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - ldrh r0, [r4, 0xC] - ldrh r1, [r4, 0x10] - subs r0, r1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0xC] - adds r1, r2, 0 - bl SetSpriteRotScale - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl SetBattlerSpriteYOffsetFromRotation - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r2, 0xE - ldrsh r1, [r4, r2] - cmp r0, r1 - blt _080E0788 - strh r6, [r4, 0xA] - b _080E0770 - .align 2, 0 -_080E06AC: .4byte gSprites -_080E06B0: - ldr r2, _080E0704 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - ldrh r2, [r4, 0x12] - subs r1, r2 - strh r1, [r0, 0x24] - ldrh r0, [r4, 0x10] - ldrh r1, [r4, 0xC] - adds r0, r1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0xC] - adds r1, r2, 0 - bl SetSpriteRotScale - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl SetBattlerSpriteYOffsetFromRotation - ldrh r1, [r4, 0xA] - adds r1, 0x1 - strh r1, [r4, 0xA] - lsls r1, 16 - asrs r1, 16 - movs r2, 0xE - ldrsh r0, [r4, r2] - lsls r0, 1 - cmp r1, r0 - blt _080E0788 - movs r0, 0 - strh r0, [r4, 0xA] - b _080E0770 - .align 2, 0 -_080E0704: .4byte gSprites -_080E0708: - ldr r2, _080E076C @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x12] - ldrh r2, [r0, 0x24] - adds r1, r2 - movs r5, 0 - strh r1, [r0, 0x24] - ldrh r0, [r4, 0xC] - ldrh r1, [r4, 0x10] - subs r0, r1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0xC] - adds r1, r2, 0 - bl SetSpriteRotScale - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl SetBattlerSpriteYOffsetFromRotation - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r2, 0xE - ldrsh r1, [r4, r2] - cmp r0, r1 - blt _080E0788 - ldrh r1, [r4, 0x14] - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080E0770 - subs r0, r1, 0x1 - strh r0, [r4, 0x14] - strh r5, [r4, 0xA] - strh r5, [r4, 0x8] - b _080E0788 - .align 2, 0 -_080E076C: .4byte gSprites -_080E0770: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E0788 -_080E0778: - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl ResetSpriteRotScale - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080E0788: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80E0628 - - thumb_func_start sub_80E0790 -sub_80E0790: @ 80E0790 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080E07AC @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080E07B4 - strh r0, [r4, 0x20] - ldr r1, _080E07B0 @ =gBattleAnimArgs - ldrh r0, [r1] - b _080E07BE - .align 2, 0 -_080E07AC: .4byte gBattleAnimAttacker -_080E07B0: .4byte gBattleAnimArgs -_080E07B4: - movs r0, 0xF0 - strh r0, [r4, 0x20] - ldr r1, _080E07D8 @ =gBattleAnimArgs - ldrh r0, [r1] - subs r0, 0x1E -_080E07BE: - strh r0, [r4, 0x22] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x32] - ldrb r1, [r1, 0x2] - adds r0, r4, 0 - bl StartSpriteAnim - ldr r0, _080E07DC @ =sub_80E07E0 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E07D8: .4byte gBattleAnimArgs -_080E07DC: .4byte sub_80E07E0 - thumb_func_end sub_80E0790 - - thumb_func_start sub_80E07E0 -sub_80E07E0: @ 80E07E0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x3 - strh r0, [r4, 0x2E] - ldr r0, _080E0820 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E0824 - ldrh r1, [r4, 0x20] - adds r1, 0x5 - strh r1, [r4, 0x20] - ldrh r0, [r4, 0x22] - subs r0, 0x1 - strh r0, [r4, 0x22] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0xF0 - ble _080E0812 - adds r0, r4, 0 - bl DestroyAnimSprite -_080E0812: - ldrh r1, [r4, 0x2E] - movs r0, 0xFF - ands r0, r1 - movs r1, 0x10 - bl Sin - b _080E0848 - .align 2, 0 -_080E0820: .4byte gBattleAnimAttacker -_080E0824: - ldrh r1, [r4, 0x20] - subs r1, 0x5 - strh r1, [r4, 0x20] - ldrh r0, [r4, 0x22] - adds r0, 0x1 - strh r0, [r4, 0x22] - lsls r1, 16 - cmp r1, 0 - bge _080E083C - adds r0, r4, 0 - bl DestroyAnimSprite -_080E083C: - ldrh r1, [r4, 0x2E] - movs r0, 0xFF - ands r0, r1 - movs r1, 0x10 - bl Cos -_080E0848: - strh r0, [r4, 0x26] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E07E0 - - thumb_func_start sub_80E0850 -sub_80E0850: @ 80E0850 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080E0898 @ =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r0, 0x20 - strh r0, [r4, 0x20] - movs r0, 0x40 - strh r0, [r4, 0x22] - movs r0, 0x80 - lsls r0, 4 - strh r0, [r4, 0x24] - ldr r0, _080E089C @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - ldr r0, _080E08A0 @ =sub_80E08A4 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E0898: .4byte gTasks -_080E089C: .4byte gBattleAnimArgs -_080E08A0: .4byte sub_80E08A4 - thumb_func_end sub_80E0850 - - thumb_func_start sub_80E08A4 -sub_80E08A4: @ 80E08A4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080E08D0 @ =gTasks - adds r7, r0, r1 - movs r1, 0x8 - ldrsh r0, [r7, r1] - mov r8, r0 - cmp r0, 0x1 - beq _080E0940 - cmp r0, 0x1 - bgt _080E08D4 - cmp r0, 0 - beq _080E08DC - b _080E09BA - .align 2, 0 -_080E08D0: .4byte gTasks -_080E08D4: - mov r2, r8 - cmp r2, 0x2 - beq _080E09A8 - b _080E09BA -_080E08DC: - movs r3, 0x80 - lsls r3, 2 - adds r0, r3, 0 - ldrh r1, [r7, 0xC] - adds r2, r0, r1 - strh r2, [r7, 0xC] - lsls r0, r2, 16 - asrs r0, 16 - ldrh r3, [r7, 0x24] - mov r8, r3 - movs r3, 0x24 - ldrsh r1, [r7, r3] - cmp r0, r1 - blt _080E09BA - mov r0, r8 - subs r5, r0, r2 - lsls r5, 16 - asrs r5, 16 - adds r6, r1, 0 - lsls r6, 1 - adds r0, r5, 0 - adds r1, r6, 0 - bl __divsi3 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - adds r1, r6, 0 - bl __modsi3 - lsls r0, 16 - lsrs r0, 16 - lsls r4, 16 - asrs r4, 16 - movs r1, 0x1 - ands r4, r1 - cmp r4, 0 - bne _080E0934 - lsls r0, 16 - asrs r0, 16 - mov r2, r8 - subs r0, r2, r0 - b _080E0992 -_080E0934: - lsls r0, 16 - asrs r0, 16 - mov r3, r8 - subs r0, r3 - strh r0, [r7, 0xC] - b _080E09BA -_080E0940: - ldr r1, _080E0998 @ =0xfffffe00 - adds r0, r1, 0 - ldrh r2, [r7, 0xC] - adds r1, r0, r2 - strh r1, [r7, 0xC] - movs r3, 0xC - ldrsh r0, [r7, r3] - movs r2, 0x24 - ldrsh r6, [r7, r2] - cmn r0, r6 - bgt _080E09BA - ldrh r3, [r7, 0x24] - mov r9, r3 - mov r0, r9 - subs r4, r0, r1 - lsls r4, 16 - asrs r4, 16 - lsls r6, 1 - adds r0, r4, 0 - adds r1, r6, 0 - bl __divsi3 - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - adds r1, r6, 0 - bl __modsi3 - lsls r0, 16 - lsrs r2, r0, 16 - mov r1, r8 - ands r1, r5 - lsls r0, r1, 16 - asrs r1, r0, 16 - cmp r1, 0 - bne _080E099C - lsls r0, r2, 16 - asrs r0, 16 - mov r2, r9 - subs r0, r2 -_080E0992: - strh r0, [r7, 0xC] - strh r1, [r7, 0x8] - b _080E09BA - .align 2, 0 -_080E0998: .4byte 0xfffffe00 -_080E099C: - lsls r0, r2, 16 - asrs r0, 16 - mov r3, r9 - subs r0, r3, r0 - strh r0, [r7, 0xC] - b _080E09BA -_080E09A8: - ldrh r0, [r7, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl ResetSpriteRotScale - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080E0A30 -_080E09BA: - ldrh r0, [r7, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r7, 0xC] - adds r1, r2, 0 - bl SetSpriteRotScale - ldrh r0, [r7, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl SetBattlerSpriteYOffsetFromRotation - ldr r2, _080E0A28 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - movs r2, 0xC - ldrsh r0, [r7, r2] - cmp r0, 0 - bge _080E09EE - adds r0, 0x3F -_080E09EE: - asrs r0, 6 - negs r0, r0 - strh r0, [r1, 0x24] - ldrh r0, [r7, 0xA] - adds r0, 0x1 - strh r0, [r7, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080E0A30 - ldrh r1, [r7, 0x20] - movs r3, 0x20 - ldrsh r0, [r7, r3] - cmp r0, 0 - beq _080E0A2C - subs r0, r1, 0x1 - strh r0, [r7, 0x20] - ldrh r0, [r7, 0x24] - ldrh r1, [r7, 0x22] - subs r0, r1 - strh r0, [r7, 0x24] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - bgt _080E0A30 - movs r0, 0x10 - strh r0, [r7, 0x24] - b _080E0A30 - .align 2, 0 -_080E0A28: .4byte gSprites -_080E0A2C: - movs r0, 0x2 - strh r0, [r7, 0x8] -_080E0A30: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80E08A4 - - thumb_func_start sub_80E0A3C -sub_80E0A3C: @ 80E0A3C - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080E0A9C - ldr r6, _080E0A94 @ =gBattleAnimArgs - movs r2, 0x4 - ldrsh r0, [r6, r2] - cmp r0, 0 - bne _080E0A70 - ldr r4, _080E0A98 @ =gBattleAnimAttacker - 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] -_080E0A70: - ldrh r0, [r6] - ldrh r1, [r5, 0x20] - adds r0, r1 - strh r0, [r5, 0x20] - ldrh r1, [r6, 0x2] - ldrh r2, [r5, 0x22] - adds r0, r1, r2 - strh r0, [r5, 0x22] - movs r0, 0x80 - strh r0, [r5, 0x30] - movs r0, 0xC0 - lsls r0, 2 - strh r0, [r5, 0x32] - strh r1, [r5, 0x34] - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _080E0AFA - .align 2, 0 -_080E0A94: .4byte gBattleAnimArgs -_080E0A98: .4byte gBattleAnimAttacker -_080E0A9C: - ldrh r1, [r5, 0x30] - lsls r0, r1, 16 - asrs r0, 24 - strh r0, [r5, 0x24] - ldrh r0, [r5, 0x32] - lsls r0, 16 - asrs r0, 24 - ldrh r2, [r5, 0x26] - adds r0, r2 - strh r0, [r5, 0x26] - movs r2, 0x36 - ldrsh r0, [r5, r2] - adds r4, r1, 0 - cmp r0, 0 - bne _080E0ADA - movs r0, 0x26 - ldrsh r1, [r5, r0] - movs r2, 0x34 - ldrsh r0, [r5, r2] - cmn r1, r0 - ble _080E0ADA - movs r0, 0x1 - strh r0, [r5, 0x36] - movs r1, 0x32 - ldrsh r0, [r5, r1] - negs r0, r0 - movs r1, 0x3 - bl __divsi3 - lsls r0, 1 - strh r0, [r5, 0x32] -_080E0ADA: - adds r0, r4, 0 - adds r0, 0xC0 - strh r0, [r5, 0x30] - ldrh r0, [r5, 0x32] - adds r0, 0x80 - strh r0, [r5, 0x32] - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080E0AFA - adds r0, r5, 0 - bl DestroyAnimSprite -_080E0AFA: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80E0A3C - - thumb_func_start sub_80E0B00 -sub_80E0B00: @ 80E0B00 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - adds r7, r0, 0 - ldr r1, _080E0B30 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r2, r0, r1 - movs r1, 0x8 - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _080E0C0C - ldr r0, _080E0B34 @ =gBattleAnimArgs - movs r3, 0 - ldrsh r1, [r0, r3] - mov r8, r0 - cmp r1, 0 - bne _080E0B3C - ldr r0, _080E0B38 @ =gBattleAnimAttacker - b _080E0B3E - .align 2, 0 -_080E0B30: .4byte gTasks -_080E0B34: .4byte gBattleAnimArgs -_080E0B38: .4byte gBattleAnimAttacker -_080E0B3C: - ldr r0, _080E0B78 @ =gBattleAnimTarget -_080E0B3E: - ldrb r0, [r0] - strh r0, [r2, 0x1E] - mov r1, r8 - ldrb r0, [r1] - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080E0B7C @ =gTasks - lsls r4, r7, 2 - adds r0, r4, r7 - lsls r0, 3 - adds r6, r0, r1 - strh r5, [r6, 0x1C] - adds r0, r5, 0 - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - mov r2, r8 - movs r3, 0x2 - ldrsh r0, [r2, r3] - cmp r0, 0x1 - beq _080E0BA0 - cmp r0, 0x1 - bgt _080E0B80 - cmp r0, 0 - beq _080E0B88 - lsls r2, r5, 4 - b _080E0BE8 - .align 2, 0 -_080E0B78: .4byte gBattleAnimTarget -_080E0B7C: .4byte gTasks -_080E0B80: - cmp r0, 0x2 - beq _080E0BAA - lsls r2, r5, 4 - b _080E0BE8 -_080E0B88: - movs r2, 0xA0 - lsls r2, 1 - adds r0, r5, 0 - movs r1, 0xE0 - movs r3, 0 - bl SetSpriteRotScale - adds r0, r5, 0 - bl SetBattlerSpriteYOffsetFromYScale - lsls r2, r5, 4 - b _080E0BE8 -_080E0BA0: - movs r2, 0x98 - lsls r2, 1 - movs r3, 0xF0 - lsls r3, 4 - b _080E0BB2 -_080E0BAA: - movs r2, 0x98 - lsls r2, 1 - movs r3, 0xF1 - lsls r3, 8 -_080E0BB2: - adds r0, r5, 0 - movs r1, 0xD0 - bl SetSpriteRotScale - adds r0, r5, 0 - bl SetBattlerSpriteYOffsetFromYScale - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080E0BD8 - ldrb r0, [r6, 0x1E] - bl GetBattlerSide - lsls r0, 24 - lsls r2, r5, 4 - cmp r0, 0 - bne _080E0BE8 -_080E0BD8: - ldr r0, _080E0C04 @ =gSprites - lsls r2, r5, 4 - adds r1, r2, r5 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x10 - strh r0, [r1, 0x26] -_080E0BE8: - ldr r1, _080E0C04 @ =gSprites - adds r0, r2, r5 - lsls r0, 2 - adds r0, r1 - movs r1, 0x2 - strh r1, [r0, 0x24] - ldr r0, _080E0C08 @ =gTasks - adds r1, r4, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080E0C58 - .align 2, 0 -_080E0C04: .4byte gSprites -_080E0C08: .4byte gTasks -_080E0C0C: - ldrb r5, [r2, 0x1C] - ldrh r0, [r2, 0xC] - adds r0, 0x1 - movs r4, 0 - strh r0, [r2, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080E0C30 - strh r4, [r2, 0xC] - ldr r0, _080E0C64 @ =gSprites - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x24] - negs r0, r0 - strh r0, [r1, 0x24] -_080E0C30: - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - bne _080E0C58 - adds r0, r5, 0 - bl ResetSpriteRotScale - ldr r1, _080E0C64 @ =gSprites - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - strh r4, [r0, 0x24] - strh r4, [r0, 0x26] - adds r0, r7, 0 - bl DestroyAnimVisualTask -_080E0C58: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E0C64: .4byte gSprites - thumb_func_end sub_80E0B00 - - thumb_func_start sub_80E0C68 -sub_80E0C68: @ 80E0C68 - push {r4,r5,lr} - adds r4, r0, 0 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xC - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, r0 - ldr r3, _080E0CB4 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080E0CB8 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - bl Random - ldr r5, _080E0CBC @ =0x000001ff - ands r5, r0 - bl Random - movs r1, 0xFF - ands r1, r0 - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _080E0CC0 - movs r2, 0xBC - lsls r2, 3 - adds r0, r5, r2 - b _080E0CC8 - .align 2, 0 -_080E0CB4: .4byte 0x000003ff -_080E0CB8: .4byte 0xfffffc00 -_080E0CBC: .4byte 0x000001ff -_080E0CC0: - movs r3, 0xBC - lsls r3, 3 - adds r0, r3, 0 - subs r0, r5 -_080E0CC8: - strh r0, [r4, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080E0CDA - movs r2, 0x90 - lsls r2, 3 - adds r0, r1, r2 - b _080E0CE2 -_080E0CDA: - movs r3, 0x90 - lsls r3, 3 - adds r0, r3, 0 - subs r0, r1 -_080E0CE2: - strh r0, [r4, 0x30] - ldr r0, _080E0CF4 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r4, 0x32] - lsls r0, 16 - cmp r0, 0 - bne _080E0CFC - ldr r0, _080E0CF8 @ =0x0000fff8 - b _080E0CFE - .align 2, 0 -_080E0CF4: .4byte gBattleAnimArgs -_080E0CF8: .4byte 0x0000fff8 -_080E0CFC: - movs r0, 0xF8 -_080E0CFE: - strh r0, [r4, 0x20] - movs r0, 0x68 - strh r0, [r4, 0x22] - ldr r0, _080E0D10 @ =sub_80E0D14 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E0D10: .4byte sub_80E0D14 - thumb_func_end sub_80E0C68 - - thumb_func_start sub_80E0D14 -sub_80E0D14: @ 80E0D14 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E0D2C - ldrh r3, [r4, 0x2E] - lsls r0, r3, 16 - asrs r0, 24 - ldrh r1, [r4, 0x24] - adds r0, r1 - b _080E0D36 -_080E0D2C: - ldrh r3, [r4, 0x2E] - lsls r1, r3, 16 - asrs r1, 24 - ldrh r0, [r4, 0x24] - subs r0, r1 -_080E0D36: - strh r0, [r4, 0x24] - ldrh r2, [r4, 0x30] - lsls r1, r2, 16 - asrs r1, 24 - ldrh r0, [r4, 0x26] - subs r0, r1 - strh r0, [r4, 0x26] - adds r0, r3, 0 - subs r0, 0x16 - strh r0, [r4, 0x2E] - adds r1, r2, 0 - subs r1, 0x30 - strh r1, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - bge _080E0D5A - movs r0, 0 - strh r0, [r4, 0x2E] -_080E0D5A: - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1F - bne _080E0D6E - adds r0, r4, 0 - bl DestroyAnimSprite -_080E0D6E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E0D14 - - thumb_func_start sub_80E0D74 -sub_80E0D74: @ 80E0D74 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r1, _080E0DD8 @ =0x00001f3f - movs r0, 0x4A - bl SetGpuReg - movs r1, 0x80 - lsls r1, 8 - movs r0, 0 - bl SetGpuRegBits - ldr r0, _080E0DDC @ =gBattle_WIN0H - movs r1, 0 - strh r1, [r0] - ldr r4, _080E0DE0 @ =gBattle_WIN0V - strh r1, [r4] - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x44 - bl SetGpuReg - ldr r0, _080E0DE4 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r5, 0x2E] - adds r0, r5, 0 - movs r1, 0 - bl InitSpritePosToAnimTarget - ldrb r1, [r5, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r5, 0x1] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080E0DE8 @ =sub_80E0DEC - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E0DD8: .4byte 0x00001f3f -_080E0DDC: .4byte gBattle_WIN0H -_080E0DE0: .4byte gBattle_WIN0V -_080E0DE4: .4byte gBattleAnimArgs -_080E0DE8: .4byte sub_80E0DEC - thumb_func_end sub_80E0D74 - - thumb_func_start sub_80E0DEC -sub_80E0DEC: @ 80E0DEC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080E0E2A - cmp r0, 0x1 - bgt _080E0E02 - cmp r0, 0 - beq _080E0E0C - b _080E0E8A -_080E0E02: - cmp r0, 0x2 - beq _080E0E40 - cmp r0, 0x3 - beq _080E0E62 - b _080E0E8A -_080E0E0C: - 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 _080E0E8A - b _080E0E5A -_080E0E2A: - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _080E0E8A - adds r0, r4, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnim - b _080E0E5A -_080E0E40: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080E0E8A - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080E0E5A: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - b _080E0E8A -_080E0E62: - ldr r1, _080E0E90 @ =0x00003f3f - movs r0, 0x4A - bl SetGpuReg - movs r0, 0 - bl GetGpuReg - adds r1, r0, 0 - movs r2, 0x80 - lsls r2, 8 - adds r0, r2, 0 - eors r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimSprite -_080E0E8A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E0E90: .4byte 0x00003f3f - thumb_func_end sub_80E0DEC - - thumb_func_start sub_80E0E94 -sub_80E0E94: @ 80E0E94 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080E0ED0 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r1, _080E0ED4 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x30] - ldr r1, _080E0ED8 @ =sub_80E0EDC - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E0ED0: .4byte gBattleAnimAttacker -_080E0ED4: .4byte gBattleAnimArgs -_080E0ED8: .4byte sub_80E0EDC - thumb_func_end sub_80E0E94 - - thumb_func_start sub_80E0EDC -sub_80E0EDC: @ 80E0EDC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - ldrh r1, [r4, 0x32] - lsls r1, 16 - asrs r1, 24 - bl Sin - strh r0, [r4, 0x24] - movs r2, 0x30 - ldrsh r0, [r4, r2] - ldrh r1, [r4, 0x34] - lsls r1, 16 - asrs r1, 24 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x9 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - lsls r1, r0, 16 - cmp r0, 0x3F - bls _080E0F16 - asrs r0, r1, 16 - cmp r0, 0xC3 - ble _080E0F28 -_080E0F16: - ldr r0, _080E0F24 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - subs r0, 0x1 - b _080E0F32 - .align 2, 0 -_080E0F24: .4byte gBattleAnimAttacker -_080E0F28: - ldr r0, _080E0F74 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSpriteSubpriority - adds r0, 0x1 -_080E0F32: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - movs r3, 0x38 - ldrsh r2, [r4, r3] - cmp r2, 0 - bne _080E0F78 - movs r1, 0x80 - lsls r1, 3 - adds r0, r1, 0 - ldrh r3, [r4, 0x32] - adds r0, r3 - strh r0, [r4, 0x32] - movs r1, 0x80 - lsls r1, 1 - adds r0, r1, 0 - ldrh r3, [r4, 0x34] - adds r0, r3 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x2E - ldrsh r1, [r4, r3] - cmp r0, r1 - bne _080E0FA8 - strh r2, [r4, 0x36] - movs r0, 0x1 - strh r0, [r4, 0x38] - b _080E0FA8 - .align 2, 0 -_080E0F74: .4byte gBattleAnimAttacker -_080E0F78: - cmp r2, 0x1 - bne _080E0FA8 - ldr r1, _080E0FB0 @ =0xfffffc00 - adds r0, r1, 0 - ldrh r2, [r4, 0x32] - adds r0, r2 - strh r0, [r4, 0x32] - ldr r3, _080E0FB4 @ =0xffffff00 - adds r0, r3, 0 - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x2E - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _080E0FA8 - adds r0, r4, 0 - bl DestroyAnimSprite -_080E0FA8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E0FB0: .4byte 0xfffffc00 -_080E0FB4: .4byte 0xffffff00 - thumb_func_end sub_80E0EDC - - thumb_func_start sub_80E0FB8 -sub_80E0FB8: @ 80E0FB8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x18] - movs r0, 0 - bl GetAnimBattlerSpriteId - ldr r0, _080E1040 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080E107C - movs r0, 0 - str r0, [sp, 0x1C] - ldr r6, _080E1044 @ =gBattlerPartyIndexes - ldr r4, _080E1048 @ =gBattleAnimTarget - ldrb r0, [r4] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - movs r5, 0x64 - muls r0, r5 - ldr r7, _080E104C @ =gPlayerParty - adds r0, r7 - movs r1, 0 - bl GetMonData - mov r10, r0 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - adds r0, r7 - movs r1, 0x1 - bl GetMonData - mov r9, r0 - ldr r0, _080E1050 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldrb r2, [r4] - ldr r1, [r0] - lsls r0, r2, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _080E1074 - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E1054 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - adds r0, r7 - b _080E1062 - .align 2, 0 -_080E1040: .4byte gBattleAnimAttacker -_080E1044: .4byte gBattlerPartyIndexes -_080E1048: .4byte gBattleAnimTarget -_080E104C: .4byte gPlayerParty -_080E1050: .4byte gBattleSpritesDataPtr -_080E1054: - ldrb r0, [r4] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - ldr r1, _080E1070 @ =gEnemyParty - adds r0, r1 -_080E1062: - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - b _080E1076 - .align 2, 0 -_080E1070: .4byte gEnemyParty -_080E1074: - ldrh r6, [r1, 0x2] -_080E1076: - movs r1, 0x14 - mov r8, r1 - b _080E1112 -_080E107C: - movs r2, 0x1 - str r2, [sp, 0x1C] - ldr r6, _080E10E0 @ =gBattlerPartyIndexes - ldr r4, _080E10E4 @ =gBattleAnimTarget - ldrb r0, [r4] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - movs r5, 0x64 - muls r0, r5 - ldr r7, _080E10E8 @ =gEnemyParty - adds r0, r7 - movs r1, 0 - bl GetMonData - mov r10, r0 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - adds r0, r7 - movs r1, 0x1 - bl GetMonData - mov r9, r0 - ldr r0, _080E10EC @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldrb r2, [r4] - ldr r1, [r0] - lsls r0, r2, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _080E110C - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E10F4 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - ldr r1, _080E10F0 @ =gPlayerParty - adds r0, r1 - b _080E1100 - .align 2, 0 -_080E10E0: .4byte gBattlerPartyIndexes -_080E10E4: .4byte gBattleAnimTarget -_080E10E8: .4byte gEnemyParty -_080E10EC: .4byte gBattleSpritesDataPtr -_080E10F0: .4byte gPlayerParty -_080E10F4: - ldrb r0, [r4] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - adds r0, r7 -_080E1100: - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - b _080E110E -_080E110C: - ldrh r6, [r1, 0x2] -_080E110E: - ldr r3, _080E11FC @ =0x0000ffec - mov r8, r3 -_080E1112: - ldr r0, _080E1200 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSpriteBGPriority - lsls r0, 24 - lsrs r7, r0, 24 - ldr r5, _080E1200 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - mov r2, r8 - lsls r1, r2, 16 - asrs r1, 16 - adds r4, r1 - lsls r4, 16 - asrs r4, 16 - lsrs r0, 24 - str r0, [sp] - movs r0, 0x5 - str r0, [sp, 0x4] - mov r3, r10 - str r3, [sp, 0x8] - mov r0, r9 - str r0, [sp, 0xC] - ldr r0, _080E1204 @ =gBattleAnimTarget - ldrb r0, [r0] - str r0, [sp, 0x10] - movs r0, 0x1 - str r0, [sp, 0x14] - adds r0, r6, 0 - ldr r1, [sp, 0x1C] - movs r2, 0 - adds r3, r4, 0 - bl sub_80768D0 - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _080E1208 @ =gSprites - lsls r5, r6, 4 - adds r5, r6 - lsls r5, 2 - adds r5, r0 - movs r0, 0x3 - ands r7, r0 - lsls r7, 2 - mov r8, r7 - ldrb r0, [r5, 0x5] - movs r4, 0xD - negs r4, r4 - adds r1, r4, 0 - ands r1, r0 - mov r2, r8 - orrs r1, r2 - strb r1, [r5, 0x5] - ldrb r2, [r5, 0x1] - adds r0, r4, 0 - ands r0, r2 - movs r2, 0x4 - orrs r0, r2 - strb r0, [r5, 0x1] - ldr r0, _080E120C @ =0x00007fff - lsrs r1, 4 - lsls r1, 4 - movs r3, 0x80 - lsls r3, 1 - adds r2, r3, 0 - orrs r1, r2 - movs r2, 0x20 - bl FillPalette - ldrb r0, [r5, 0x5] - ands r4, r0 - mov r0, r8 - orrs r4, r0 - strb r4, [r5, 0x5] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - ldr r0, _080E1210 @ =gTasks - ldr r1, [sp, 0x18] - lsls r4, r1, 2 - adds r4, r1 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r4, 0xA] - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - strh r6, [r4, 0x8] - ldr r0, _080E1214 @ =sub_80E1218 - str r0, [r4] - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E11FC: .4byte 0x0000ffec -_080E1200: .4byte gBattleAnimAttacker -_080E1204: .4byte gBattleAnimTarget -_080E1208: .4byte gSprites -_080E120C: .4byte 0x00007fff -_080E1210: .4byte gTasks -_080E1214: .4byte sub_80E1218 - thumb_func_end sub_80E0FB8 - - thumb_func_start sub_80E1218 -sub_80E1218: @ 80E1218 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080E126C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - ldrh r0, [r4, 0x1C] - adds r1, r0, 0x1 - strh r1, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E1266 - movs r0, 0 - strh r0, [r4, 0x1C] - ldrh r1, [r4, 0xA] - adds r1, 0x1 - strh r1, [r4, 0xA] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0xA - bne _080E1266 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0x1C] - strh r0, [r4, 0x1E] - ldr r0, _080E1270 @ =sub_80E1274 - str r0, [r4] -_080E1266: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E126C: .4byte gTasks -_080E1270: .4byte sub_80E1274 - thumb_func_end sub_80E1218 - - thumb_func_start sub_80E1274 -sub_80E1274: @ 80E1274 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080E12EC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r5, r1, r2 - ldrb r2, [r5, 0x8] - ldrh r0, [r5, 0x1C] - subs r0, 0x10 - movs r4, 0 - strh r0, [r5, 0x1C] - ldrh r0, [r5, 0x1E] - adds r0, 0x80 - strh r0, [r5, 0x1E] - ldr r1, _080E12F0 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r6, r0, r1 - ldrb r2, [r6, 0x1] - lsls r1, r2, 30 - lsrs r1, 30 - movs r0, 0x2 - orrs r1, r0 - subs r0, 0x6 - ands r0, r2 - orrs r0, r1 - strb r0, [r6, 0x1] - movs r0, 0x1C - ldrsh r2, [r5, r0] - movs r0, 0x1E - ldrsh r3, [r5, r0] - str r4, [sp] - adds r0, r6, 0 - movs r1, 0x1 - bl TrySetSpriteRotScale - ldrh r0, [r5, 0x20] - adds r0, 0x1 - strh r0, [r5, 0x20] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bne _080E12E2 - adds r0, r6, 0 - bl sub_8075AD8 - adds r0, r6, 0 - bl DestroySpriteAndFreeResources_ - ldr r0, _080E12F4 @ =DestroyAnimVisualTaskAndDisableBlend - str r0, [r5] -_080E12E2: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E12EC: .4byte gTasks -_080E12F0: .4byte gSprites -_080E12F4: .4byte DestroyAnimVisualTaskAndDisableBlend - thumb_func_end sub_80E1274 - - thumb_func_start sub_80E12F8 -sub_80E12F8: @ 80E12F8 - 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, _080E1318 @ =gTasks - adds r4, r1, r0 - ldr r0, _080E131C @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E1324 - ldr r0, _080E1320 @ =gBattleAnimAttacker - b _080E1326 - .align 2, 0 -_080E1318: .4byte gTasks -_080E131C: .4byte gBattleAnimArgs -_080E1320: .4byte gBattleAnimAttacker -_080E1324: - ldr r0, _080E13A4 @ =gBattleAnimTarget -_080E1326: - ldrb r5, [r0] - movs r6, 0 - strh r6, [r4, 0x8] - strh r6, [r4, 0xA] - strh r6, [r4, 0xC] - movs r0, 0x10 - strh r0, [r4, 0xE] - strh r6, [r4, 0x10] - strh r5, [r4, 0x12] - movs r0, 0x20 - strh r0, [r4, 0x14] - strh r6, [r4, 0x16] - movs r0, 0x18 - strh r0, [r4, 0x18] - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E1358 - movs r1, 0x18 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0x18] -_080E1358: - adds r0, r5, 0 - bl GetBattlerYCoordWithElevation - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x22 - strh r0, [r4, 0x22] - cmp r0, 0 - bge _080E136C - strh r6, [r4, 0x22] -_080E136C: - ldrh r0, [r4, 0x22] - adds r0, 0x42 - strh r0, [r4, 0x24] - ldr r0, _080E13A8 @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - adds r0, r5, 0 - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E13BC - ldr r0, _080E13AC @ =0x04000014 - str r0, [sp] - ldr r1, _080E13B0 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - ldr r0, _080E13B4 @ =gBattle_BG1_X - ldrh r5, [r0] - ldr r0, _080E13B8 @ =gBattle_BG1_Y - b _080E13CE - .align 2, 0 -_080E13A4: .4byte gBattleAnimTarget -_080E13A8: .4byte gBattleAnimArgs -_080E13AC: .4byte 0x04000014 -_080E13B0: .4byte 0x00003f42 -_080E13B4: .4byte gBattle_BG1_X -_080E13B8: .4byte gBattle_BG1_Y -_080E13BC: - ldr r0, _080E1434 @ =0x04000018 - str r0, [sp] - ldr r1, _080E1438 @ =0x00003f44 - movs r0, 0x50 - bl SetGpuReg - ldr r0, _080E143C @ =gBattle_BG2_X - ldrh r5, [r0] - ldr r0, _080E1440 @ =gBattle_BG2_Y -_080E13CE: - ldrh r3, [r0] - movs r7, 0 - movs r2, 0 - ldr r6, _080E1444 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r0, r6 - mov r12, r0 -_080E13DE: - lsls r2, 16 - asrs r2, 16 - lsls r1, r2, 1 - adds r0, r1, r6 - strh r5, [r0] - add r1, r12 - strh r5, [r1] - adds r0, r2, 0x1 - lsls r0, 1 - adds r1, r0, r6 - strh r3, [r1] - add r0, r12 - strh r3, [r0] - lsls r0, r7, 16 - movs r1, 0x80 - lsls r1, 9 - adds r0, r1 - adds r2, 0x2 - lsls r2, 16 - lsrs r2, 16 - lsrs r7, r0, 16 - asrs r0, 16 - cmp r0, 0x9F - ble _080E13DE - ldr r0, _080E1448 @ =0xa6600001 - 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, _080E144C @ =sub_80E1450 - str r0, [r4] - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E1434: .4byte 0x04000018 -_080E1438: .4byte 0x00003f44 -_080E143C: .4byte gBattle_BG2_X -_080E1440: .4byte gBattle_BG2_Y -_080E1444: .4byte gScanlineEffectRegBuffers -_080E1448: .4byte 0xa6600001 -_080E144C: .4byte sub_80E1450 - thumb_func_end sub_80E12F8 - - thumb_func_start sub_80E1450 -sub_80E1450: @ 80E1450 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080E1484 @ =gTasks - adds r6, r0, r1 - ldrb r0, [r6, 0x12] - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E1490 - ldr r0, _080E1488 @ =gBattle_BG1_X - ldrh r0, [r0] - str r0, [sp, 0x4] - ldr r0, _080E148C @ =gBattle_BG1_Y - b _080E1498 - .align 2, 0 -_080E1484: .4byte gTasks -_080E1488: .4byte gBattle_BG1_X -_080E148C: .4byte gBattle_BG1_Y -_080E1490: - ldr r0, _080E14B0 @ =gBattle_BG2_X - ldrh r0, [r0] - str r0, [sp, 0x4] - ldr r0, _080E14B4 @ =gBattle_BG2_Y -_080E1498: - ldrh r0, [r0] - str r0, [sp, 0x8] - movs r1, 0x8 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - bne _080E14A6 - b _080E1684 -_080E14A6: - cmp r0, 0x1 - bgt _080E14B8 - cmp r0, 0 - beq _080E14C6 - b _080E16F4 - .align 2, 0 -_080E14B0: .4byte gBattle_BG2_X -_080E14B4: .4byte gBattle_BG2_Y -_080E14B8: - cmp r0, 0x2 - bne _080E14BE - b _080E16A4 -_080E14BE: - cmp r0, 0x3 - bne _080E14C4 - b _080E16EE -_080E14C4: - b _080E16F4 -_080E14C6: - movs r2, 0x24 - ldrsh r0, [r6, r2] - lsls r0, 17 - lsrs r5, r0, 16 - movs r3, 0 - str r3, [sp] - mov r9, r3 - movs r4, 0 - ldrh r0, [r6, 0xA] - adds r0, 0x2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r6, 0xA] - ldrh r7, [r6, 0xA] - mov r8, r7 - movs r0, 0x14 - ldrsh r1, [r6, r0] - movs r0, 0xFC - lsls r0, 3 - bl __divsi3 - strh r0, [r6, 0x1A] - movs r1, 0x16 - ldrsh r0, [r6, r1] - lsls r0, 1 - movs r2, 0x1A - ldrsh r1, [r6, r2] - bl __divsi3 - negs r0, r0 - strh r0, [r6, 0x1C] - ldrh r0, [r6, 0x16] - strh r0, [r6, 0x1E] - lsls r0, 16 - asrs r0, 21 - lsls r0, 16 - lsrs r7, r0, 16 - strh r7, [r6, 0x20] - ldrh r2, [r6, 0x24] - lsls r3, r2, 16 - mov r12, r3 - asrs r1, r3, 16 - movs r3, 0x22 - ldrsh r0, [r6, r3] - cmp r1, r0 - ble _080E15E6 - ldr r0, _080E163C @ =gScanlineEffect - mov r10, r0 - ldr r1, [sp, 0x4] - lsls r0, r1, 16 - asrs r0, 16 - str r0, [sp, 0x10] - ldr r2, [sp, 0x8] - lsls r0, r2, 16 - asrs r0, 16 - str r0, [sp, 0xC] -_080E1536: - lsls r5, 16 - asrs r5, 16 - adds r2, r5, 0x1 - lsls r2, 1 - mov r3, r10 - ldrb r1, [r3, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - ldr r0, _080E1640 @ =gScanlineEffectRegBuffers - adds r2, r0 - lsls r4, 16 - asrs r4, 16 - mov r1, r9 - lsls r0, r1, 16 - asrs r0, 16 - subs r0, r4, r0 - ldr r3, [sp, 0xC] - adds r0, r3, r0 - strh r0, [r2] - lsls r3, r5, 1 - mov r0, r10 - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r3, r0 - ldr r1, _080E1640 @ =gScanlineEffectRegBuffers - adds r3, r1 - lsls r1, r7, 16 - asrs r1, 16 - ldr r2, [sp, 0x10] - adds r1, r2, r1 - mov r7, r8 - lsls r2, r7, 16 - asrs r2, 16 - lsls r0, r2, 1 - ldr r7, _080E1644 @ =gSineTable - adds r0, r7 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 21 - adds r1, r0 - strh r1, [r3] - adds r2, 0xA - mov r8, r2 - movs r0, 0xFF - mov r1, r8 - ands r1, r0 - mov r8, r1 - ldrh r0, [r6, 0x1C] - ldrh r2, [r6, 0x1E] - adds r0, r2 - strh r0, [r6, 0x1E] - lsls r0, 16 - asrs r0, 21 - lsls r0, 16 - lsrs r7, r0, 16 - strh r7, [r6, 0x20] - adds r4, 0x1 - lsls r4, 16 - lsrs r4, 16 - subs r5, 0x2 - lsls r5, 16 - lsrs r5, 16 - ldr r3, [sp] - lsls r0, r3, 16 - asrs r0, 16 - ldrh r1, [r6, 0x14] - adds r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - str r2, [sp] - asrs r0, 21 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - ldr r0, _080E1648 @ =0xffff0000 - add r0, r12 - lsrs r2, r0, 16 - lsls r3, r2, 16 - mov r12, r3 - asrs r1, r3, 16 - movs r3, 0x22 - ldrsh r0, [r6, r3] - cmp r1, r0 - bgt _080E1536 -_080E15E6: - lsls r1, r2, 17 - cmp r1, 0 - blt _080E1612 - ldr r4, _080E1640 @ =gScanlineEffectRegBuffers - ldr r7, [sp, 0x4] - lsls r0, r7, 16 - asrs r0, 16 - adds r3, r0, 0 - adds r3, 0xF0 - movs r0, 0xF0 - lsls r0, 3 - adds r5, r4, r0 -_080E15FE: - asrs r2, r1, 16 - lsls r1, r2, 1 - adds r0, r1, r4 - strh r3, [r0] - adds r1, r5 - strh r3, [r1] - subs r2, 0x2 - lsls r1, r2, 16 - cmp r1, 0 - bge _080E15FE -_080E1612: - ldrh r0, [r6, 0x14] - adds r0, 0x1 - strh r0, [r6, 0x14] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3F - ble _080E167A - movs r0, 0x40 - strh r0, [r6, 0x14] - ldrh r0, [r6, 0xC] - adds r0, 0x1 - strh r0, [r6, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080E164C - ldrh r0, [r6, 0xE] - subs r0, 0x1 - strh r0, [r6, 0xE] - b _080E1652 - .align 2, 0 -_080E163C: .4byte gScanlineEffect -_080E1640: .4byte gScanlineEffectRegBuffers -_080E1644: .4byte gSineTable -_080E1648: .4byte 0xffff0000 -_080E164C: - ldrh r0, [r6, 0x10] - adds r0, 0x1 - strh r0, [r6, 0x10] -_080E1652: - ldrh r1, [r6, 0x10] - lsls r1, 8 - ldrh r0, [r6, 0xE] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r2, 0xE - ldrsh r1, [r6, r2] - cmp r1, 0 - bne _080E16F4 - movs r3, 0x10 - ldrsh r0, [r6, r3] - cmp r0, 0x10 - bne _080E16F4 - strh r1, [r6, 0xC] - strh r1, [r6, 0xE] - b _080E16E6 -_080E167A: - ldrh r0, [r6, 0x18] - ldrh r7, [r6, 0x16] - adds r0, r7 - strh r0, [r6, 0x16] - b _080E16F4 -_080E1684: - ldrh r0, [r6, 0xC] - adds r0, 0x1 - strh r0, [r6, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - ble _080E16F4 - ldr r1, _080E16A0 @ =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] - movs r0, 0 - strh r0, [r6, 0xC] - b _080E16E6 - .align 2, 0 -_080E16A0: .4byte gScanlineEffect -_080E16A4: - ldrh r0, [r6, 0xC] - adds r0, 0x1 - strh r0, [r6, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080E16BA - ldrh r0, [r6, 0xE] - adds r0, 0x1 - strh r0, [r6, 0xE] - b _080E16C0 -_080E16BA: - ldrh r0, [r6, 0x10] - subs r0, 0x1 - strh r0, [r6, 0x10] -_080E16C0: - ldrh r1, [r6, 0x10] - lsls r1, 8 - ldrh r0, [r6, 0xE] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0xE - ldrsh r0, [r6, r1] - cmp r0, 0x10 - bne _080E16F4 - movs r2, 0x10 - ldrsh r0, [r6, r2] - cmp r0, 0 - bne _080E16F4 - strh r0, [r6, 0xC] - strh r0, [r6, 0xE] -_080E16E6: - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - b _080E16F4 -_080E16EE: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080E16F4: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80E1450 - - thumb_func_start sub_80E1704 -sub_80E1704: @ 80E1704 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080E173C @ =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - ldr r0, _080E1740 @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r4, 0x26] - ldr r2, _080E1744 @ =gUnknown_83FF3D0 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldr r0, _080E1748 @ =sub_80E174C - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E173C: .4byte gTasks -_080E1740: .4byte gBattleAnimArgs -_080E1744: .4byte gUnknown_83FF3D0 -_080E1748: .4byte sub_80E174C - thumb_func_end sub_80E1704 - - thumb_func_start sub_80E174C -sub_80E174C: @ 80E174C - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r2, _080E17A4 @ =gTasks - adds r3, r0, r2 - ldrh r0, [r3, 0x8] - adds r1, r0, 0x1 - movs r5, 0 - strh r1, [r3, 0x8] - subs r0, 0x14 - lsls r0, 16 - lsrs r0, 16 - adds r6, r2, 0 - cmp r0, 0x16 - bhi _080E17B0 - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E17C0 - strh r5, [r3, 0xA] - ldrh r0, [r3, 0xC] - adds r0, 0x1 - strh r0, [r3, 0xC] - movs r5, 0x1 - ands r0, r5 - cmp r0, 0 - bne _080E17B0 - ldr r2, _080E17A8 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _080E17AC @ =0x0000ffff - strh r1, [r0, 0x24] - b _080E17C0 - .align 2, 0 -_080E17A4: .4byte gTasks -_080E17A8: .4byte gSprites -_080E17AC: .4byte 0x0000ffff -_080E17B0: - ldr r2, _080E17E0 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r5, [r0, 0x24] -_080E17C0: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r6 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080E17D8 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080E17D8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E17E0: .4byte gSprites - thumb_func_end sub_80E174C - - thumb_func_start sub_80E17E4 -sub_80E17E4: @ 80E17E4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - adds r5, r2, 0 - adds r0, r3, 0 - ldr r4, [sp, 0x14] - ldr r6, [sp, 0x18] - lsls r1, 16 - lsrs r1, 16 - lsls r5, 16 - lsrs r5, 16 - lsls r4, 16 - lsrs r4, 16 - lsls r6, 16 - lsrs r6, 16 - mov r2, r8 - strh r1, [r2, 0x20] - strh r5, [r2, 0x22] - lsls r1, 16 - asrs r1, 16 - lsls r2, r1, 4 - mov r3, r8 - strh r2, [r3, 0x36] - lsls r5, 16 - asrs r5, 16 - lsls r2, r5, 4 - strh r2, [r3, 0x38] - lsls r0, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 4 - adds r1, r6, 0 - bl __divsi3 - mov r1, r8 - strh r0, [r1, 0x3A] - lsls r4, 16 - asrs r4, 16 - subs r4, r5 - lsls r4, 4 - adds r0, r4, 0 - adds r1, r6, 0 - bl __divsi3 - mov r2, r8 - strh r0, [r2, 0x3C] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80E17E4 - - thumb_func_start sub_80E184C -sub_80E184C: @ 80E184C - ldrh r1, [r0, 0x3A] - ldrh r2, [r0, 0x36] - adds r1, r2 - strh r1, [r0, 0x36] - ldrh r2, [r0, 0x3C] - ldrh r3, [r0, 0x38] - adds r2, r3 - strh r2, [r0, 0x38] - lsls r1, 16 - asrs r1, 20 - strh r1, [r0, 0x20] - lsls r2, 16 - asrs r2, 20 - strh r2, [r0, 0x22] - bx lr - thumb_func_end sub_80E184C - - thumb_func_start sub_80E186C -sub_80E186C: @ 80E186C - push {r4-r6,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldrh r6, [r4, 0x20] - ldrh r5, [r4, 0x22] - bl SetSpriteCoordsToAnimAttackerCoords - ldr r0, _080E18B4 @ =gBattleAnimArgs - ldrb r1, [r0] - adds r0, r4, 0 - bl StartSpriteAffineAnim - movs r0, 0x20 - ldrsh r1, [r4, r0] - movs r0, 0x22 - ldrsh r2, [r4, r0] - lsls r6, 16 - asrs r6, 16 - lsls r5, 16 - asrs r5, 16 - str r5, [sp] - movs r0, 0x40 - str r0, [sp, 0x4] - adds r0, r4, 0 - adds r3, r6, 0 - bl sub_80E17E4 - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _080E18B8 @ =sub_80E18BC - str r0, [r4, 0x1C] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E18B4: .4byte gBattleAnimArgs -_080E18B8: .4byte sub_80E18BC - thumb_func_end sub_80E186C - - thumb_func_start sub_80E18BC -sub_80E18BC: @ 80E18BC - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - movs r0, 0x2E - ldrsh r4, [r5, r0] - lsls r4, 3 - movs r0, 0xFF - ands r4, r0 - adds r0, r5, 0 - bl sub_80E184C - adds r0, r4, 0 - movs r1, 0x8 - bl Sin - strh r0, [r5, 0x26] - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x3A - ble _080E1922 - ldrh r0, [r5, 0x30] - adds r0, 0x1 - strh r0, [r5, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E1922 - movs r0, 0 - strh r0, [r5, 0x30] - ldrh r1, [r5, 0x32] - adds r1, 0x1 - strh r1, [r5, 0x32] - movs r0, 0x1 - ands r1, r0 - adds r3, r5, 0 - adds r3, 0x3E - lsls r1, 2 - ldrb r2, [r3] - subs r0, 0x6 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - movs r1, 0x32 - ldrsh r0, [r5, r1] - cmp r0, 0x3 - ble _080E1922 - adds r0, r5, 0 - bl DestroySpriteAndMatrix -_080E1922: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80E18BC - - thumb_func_start sub_80E1928 -sub_80E1928: @ 80E1928 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080E1980 @ =gBattleAnimArgs - ldrh r0, [r6, 0x6] - strh r0, [r5, 0x2E] - ldrb r1, [r6] - adds r0, r5, 0 - bl StartSpriteAffineAnim - ldr r0, _080E1984 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080E194E - ldrh r0, [r6, 0x2] - negs r0, r0 - strh r0, [r6, 0x2] -_080E194E: - ldr r4, _080E1988 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x2] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x4] - adds r0, r6 - strh r0, [r5, 0x22] - ldr r0, _080E198C @ =sub_80B1D3C - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E1980: .4byte gBattleAnimArgs -_080E1984: .4byte gBattleAnimTarget -_080E1988: .4byte gBattleAnimAttacker -_080E198C: .4byte sub_80B1D3C - thumb_func_end sub_80E1928 - - thumb_func_start sub_80E1990 -sub_80E1990: @ 80E1990 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - movs r7, 0 - ldr r2, _080E19E0 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x8] - subs r0, 0x1 - strh r0, [r3, 0x8] - movs r1, 0x14 - ldrsh r0, [r3, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - mov r8, r2 - cmp r0, 0 - beq _080E1A12 - ldrh r0, [r3, 0xA] - subs r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080E1A12 - movs r2, 0x1A - ldrsh r0, [r3, r2] - cmp r0, 0 - bne _080E19E4 - ldrh r0, [r3, 0x10] - strh r0, [r3, 0x1A] - negs r0, r0 - strh r0, [r3, 0x10] - b _080E19E6 - .align 2, 0 -_080E19E0: .4byte gTasks -_080E19E4: - strh r7, [r3, 0x1A] -_080E19E6: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - mov r2, r8 - adds r1, r0, r2 - movs r2, 0x1C - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080E1A02 - ldrh r0, [r1, 0x12] - strh r0, [r1, 0x1C] - negs r0, r0 - strh r0, [r1, 0x12] - b _080E1A06 -_080E1A02: - movs r0, 0 - strh r0, [r1, 0x1C] -_080E1A06: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - add r0, r8 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0xA] -_080E1A12: - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 3 - mov r1, r8 - adds r4, r0, r1 - ldrh r6, [r4, 0x16] - ldrh r7, [r4, 0x18] - movs r1, 0xC - ldrsh r0, [r4, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - mov r12, r2 - cmp r0, 0 - beq _080E1A50 - ldr r3, _080E1A4C @ =gSprites - movs r2, 0x26 - ldrsh r0, [r4, r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - lsrs r2, r6, 8 - ldrh r0, [r4, 0x1A] - subs r0, r2 - strh r0, [r1, 0x24] - adds r2, r3, 0 - b _080E1A66 - .align 2, 0 -_080E1A4C: .4byte gSprites -_080E1A50: - ldr r2, _080E1A94 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - lsrs r1, r6, 8 - ldrh r4, [r4, 0x1A] - adds r1, r4 - strh r1, [r0, 0x24] -_080E1A66: - mov r1, r12 - adds r0, r1, r5 - lsls r0, 3 - mov r1, r8 - adds r4, r0, r1 - movs r1, 0xE - ldrsh r0, [r4, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _080E1A98 - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - lsrs r2, r7, 8 - ldrh r0, [r4, 0x1C] - subs r0, r2 - b _080E1AAA - .align 2, 0 -_080E1A94: .4byte gSprites -_080E1A98: - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - lsrs r0, r7, 8 - ldrh r4, [r4, 0x1C] - adds r0, r4 -_080E1AAA: - strh r0, [r1, 0x26] - mov r2, r12 - adds r0, r2, r5 - lsls r0, 3 - add r0, r8 - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0 - bgt _080E1ACA - adds r0, r5, 0 - bl DestroyTask - ldr r1, _080E1AD4 @ =gAnimVisualTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] -_080E1ACA: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E1AD4: .4byte gAnimVisualTaskCount - thumb_func_end sub_80E1990 - - thumb_func_start sub_80E1AD8 -sub_80E1AD8: @ 80E1AD8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r6, r0, 24 - movs r7, 0 - ldr r2, _080E1B2C @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x8] - subs r0, 0x1 - strh r0, [r3, 0x8] - movs r1, 0x14 - ldrsh r0, [r3, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - mov r8, r2 - cmp r0, 0 - beq _080E1B5E - ldrh r0, [r3, 0xA] - subs r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080E1B5E - movs r2, 0x1A - ldrsh r0, [r3, r2] - cmp r0, 0 - bne _080E1B30 - ldrh r0, [r3, 0x10] - strh r0, [r3, 0x1A] - negs r0, r0 - strh r0, [r3, 0x10] - b _080E1B32 - .align 2, 0 -_080E1B2C: .4byte gTasks -_080E1B30: - strh r7, [r3, 0x1A] -_080E1B32: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - mov r2, r8 - adds r1, r0, r2 - movs r2, 0x1C - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080E1B4E - ldrh r0, [r1, 0x12] - strh r0, [r1, 0x1C] - negs r0, r0 - strh r0, [r1, 0x12] - b _080E1B52 -_080E1B4E: - movs r0, 0 - strh r0, [r1, 0x1C] -_080E1B52: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - add r0, r8 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0xA] -_080E1B5E: - lsls r3, r6, 2 - adds r0, r3, r6 - lsls r0, 3 - mov r1, r8 - adds r4, r0, r1 - ldrh r2, [r4, 0xC] - ldr r1, _080E1BB0 @ =0x00007fff - adds r0, r1, 0 - ands r0, r2 - ldrh r2, [r4, 0x16] - adds r0, r2 - lsls r5, r0, 16 - lsrs r0, r5, 16 - mov r9, r0 - ldrh r0, [r4, 0xE] - ands r1, r0 - ldrh r2, [r4, 0x18] - adds r1, r2 - lsls r1, 16 - lsrs r7, r1, 16 - movs r1, 0xC - ldrsh r0, [r4, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - mov r12, r3 - cmp r0, 0 - beq _080E1BB8 - ldr r3, _080E1BB4 @ =gSprites - movs r2, 0x26 - ldrsh r0, [r4, r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - lsrs r2, r5, 24 - ldrh r0, [r4, 0x1A] - subs r0, r2 - strh r0, [r1, 0x24] - adds r2, r3, 0 - b _080E1BCE - .align 2, 0 -_080E1BB0: .4byte 0x00007fff -_080E1BB4: .4byte gSprites -_080E1BB8: - ldr r2, _080E1BFC @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - lsrs r1, r5, 24 - ldrh r4, [r4, 0x1A] - adds r1, r4 - strh r1, [r0, 0x24] -_080E1BCE: - mov r1, r12 - adds r0, r1, r6 - lsls r0, 3 - mov r1, r8 - adds r4, r0, r1 - movs r1, 0xE - ldrsh r0, [r4, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _080E1C00 - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - lsrs r2, r7, 8 - ldrh r0, [r4, 0x1C] - subs r0, r2 - b _080E1C12 - .align 2, 0 -_080E1BFC: .4byte gSprites -_080E1C00: - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - lsrs r0, r7, 8 - ldrh r4, [r4, 0x1C] - adds r0, r4 -_080E1C12: - strh r0, [r1, 0x26] - mov r2, r12 - adds r0, r2, r6 - lsls r0, 3 - mov r1, r8 - adds r2, r0, r1 - mov r0, r9 - strh r0, [r2, 0x16] - strh r7, [r2, 0x18] - movs r1, 0x8 - ldrsh r0, [r2, r1] - cmp r0, 0 - bgt _080E1C38 - movs r0, 0x1E - strh r0, [r2, 0x8] - movs r0, 0 - strh r0, [r2, 0x22] - ldr r0, _080E1C44 @ =sub_80E1990 - str r0, [r2] -_080E1C38: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E1C44: .4byte sub_80E1990 - thumb_func_end sub_80E1AD8 - - thumb_func_start sub_80E1C48 -sub_80E1C48: @ 80E1C48 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080E1CA8 @ =gTasks - mov r8, r0 - lsls r7, r6, 2 - adds r0, r7, r6 - lsls r0, 3 - mov r1, r8 - adds r4, r0, r1 - ldr r1, _080E1CAC @ =gBattlerSpriteIds - ldr r2, _080E1CB0 @ =gBattleAnimAttacker - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r4, 0x26] - ldr r5, _080E1CB4 @ =gBattleAnimArgs - ldrh r0, [r5] - strh r0, [r4, 0x24] - ldrh r0, [r5] - strh r0, [r4, 0x8] - ldrh r0, [r5, 0xC] - strh r0, [r4, 0x22] - movs r3, 0x6 - ldrsh r0, [r5, r3] - cmp r0, 0 - beq _080E1C8C - ldrh r0, [r4, 0x14] - ldr r3, _080E1CB8 @ =0xffff8000 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r4, 0x14] -_080E1C8C: - ldrb r0, [r2] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080E1CBC - ldrh r0, [r5, 0x2] - strh r0, [r4, 0xC] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0xE] - mov r3, r8 - adds r4, r7, 0 - b _080E1D2C - .align 2, 0 -_080E1CA8: .4byte gTasks -_080E1CAC: .4byte gBattlerSpriteIds -_080E1CB0: .4byte gBattleAnimAttacker -_080E1CB4: .4byte gBattleAnimArgs -_080E1CB8: .4byte 0xffff8000 -_080E1CBC: - movs r7, 0x2 - ldrsh r0, [r5, r7] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _080E1CD8 - ldrh r1, [r5, 0x2] - ldr r0, _080E1CD4 @ =0x00007fff - ands r0, r1 - b _080E1CE0 - .align 2, 0 -_080E1CD4: .4byte 0x00007fff -_080E1CD8: - ldrh r0, [r5, 0x2] - ldr r2, _080E1D08 @ =0xffff8000 - adds r1, r2, 0 - orrs r0, r1 -_080E1CE0: - strh r0, [r4, 0xC] - ldr r0, _080E1D0C @ =gBattleAnimArgs - movs r3, 0x4 - ldrsh r1, [r0, r3] - movs r2, 0x80 - lsls r2, 8 - ands r1, r2 - adds r5, r0, 0 - cmp r1, 0 - beq _080E1D18 - ldr r3, _080E1D10 @ =gTasks - lsls r4, r6, 2 - adds r1, r4, r6 - lsls r1, 3 - adds r1, r3 - ldrh r2, [r5, 0x4] - ldr r0, _080E1D14 @ =0x00007fff - ands r0, r2 - b _080E1D2A - .align 2, 0 -_080E1D08: .4byte 0xffff8000 -_080E1D0C: .4byte gBattleAnimArgs -_080E1D10: .4byte gTasks -_080E1D14: .4byte 0x00007fff -_080E1D18: - ldr r3, _080E1D50 @ =gTasks - lsls r4, r6, 2 - adds r1, r4, r6 - lsls r1, 3 - adds r1, r3 - ldrh r2, [r5, 0x4] - ldr r7, _080E1D54 @ =0xffff8000 - adds r0, r7, 0 - orrs r0, r2 -_080E1D2A: - strh r0, [r1, 0xE] -_080E1D2C: - adds r0, r4, r6 - lsls r0, 3 - adds r0, r3 - movs r1, 0 - strh r1, [r0, 0x18] - strh r1, [r0, 0x16] - ldrh r1, [r5, 0x8] - strh r1, [r0, 0x10] - ldrh r1, [r5, 0xA] - strh r1, [r0, 0x12] - ldr r1, _080E1D58 @ =sub_80E1AD8 - str r1, [r0] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E1D50: .4byte gTasks -_080E1D54: .4byte 0xffff8000 -_080E1D58: .4byte sub_80E1AD8 - thumb_func_end sub_80E1C48 - - thumb_func_start sub_80E1D5C -sub_80E1D5C: @ 80E1D5C - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080E1D94 @ =gTasks - adds r5, r0, r1 - ldr r4, _080E1D98 @ =gBattleAnimArgs - movs r1, 0x2 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E1D7C - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080E1D7C: - movs r0, 0 - strh r0, [r5, 0x8] - strh r0, [r5, 0xA] - strh r0, [r5, 0xC] - ldrh r0, [r4, 0x2] - strh r0, [r5, 0xE] - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E1DA0 - ldr r0, _080E1D9C @ =gBattleAnimAttacker - b _080E1DA2 - .align 2, 0 -_080E1D94: .4byte gTasks -_080E1D98: .4byte gBattleAnimArgs -_080E1D9C: .4byte gBattleAnimAttacker -_080E1DA0: - ldr r0, _080E1DF0 @ =gBattleAnimTarget -_080E1DA2: - ldrb r4, [r0] - adds r0, r4, 0 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x10] - adds r0, r4, 0 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x12] - adds r0, r4, 0 - bl GetBattlerSpriteSubpriority - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x14] - ldr r0, _080E1DF4 @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r5, 0x26] - ldr r2, _080E1DF8 @ =gUnknown_83FF52C - adds r0, r5, 0 - bl PrepareAffineAnimInTaskData - ldr r0, _080E1DFC @ =sub_80E1E00 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E1DF0: .4byte gBattleAnimTarget -_080E1DF4: .4byte gBattleAnimArgs -_080E1DF8: .4byte gUnknown_83FF52C -_080E1DFC: .4byte sub_80E1E00 - thumb_func_end sub_80E1D5C - - thumb_func_start sub_80E1E00 -sub_80E1E00: @ 80E1E00 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080E1E20 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080E1E24 - cmp r0, 0x1 - beq _080E1E84 - b _080E1E92 - .align 2, 0 -_080E1E20: .4byte gTasks -_080E1E24: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _080E1E3A - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80E1E98 -_080E1E3A: - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x12 - bne _080E1E4A - adds r0, r5, 0 - movs r1, 0 - bl sub_80E1E98 -_080E1E4A: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080E1E92 - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _080E1E6C - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E1E92 -_080E1E6C: - strh r1, [r4, 0xA] - ldrh r1, [r4, 0x26] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080E1E80 @ =gUnknown_83FF52C - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - b _080E1E92 - .align 2, 0 -_080E1E80: .4byte gUnknown_83FF52C -_080E1E84: - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E1E92 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080E1E92: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80E1E00 - - thumb_func_start sub_80E1E98 -sub_80E1E98: @ 80E1E98 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r2, _080E1EBC @ =gTasks - adds r4, r0, r2 - cmp r1, 0 - bne _080E1EC0 - movs r1, 0x12 - movs r3, 0xEC - b _080E1EC4 - .align 2, 0 -_080E1EBC: .4byte gTasks -_080E1EC0: - movs r1, 0x1E - movs r3, 0x14 -_080E1EC4: - mov r2, sp - ldrh r0, [r4, 0x10] - subs r0, r1 - strh r0, [r2] - ldrh r0, [r4, 0x10] - subs r0, r1 - subs r0, 0x4 - strh r0, [r2, 0x2] - ldrh r0, [r4, 0x10] - adds r0, r1 - strh r0, [r2, 0x4] - ldrh r0, [r4, 0x10] - adds r0, r1 - adds r0, 0x4 - strh r0, [r2, 0x6] - add r2, sp, 0x8 - lsls r1, r3, 24 - asrs r1, 24 - ldrh r0, [r4, 0x12] - adds r0, r1 - strh r0, [r2] - ldrh r0, [r4, 0x12] - adds r0, r1 - adds r0, 0x6 - strh r0, [r2, 0x2] - movs r5, 0 - mov r8, r2 - ldr r7, _080E1F68 @ =gSprites -_080E1EFC: - lsls r0, r5, 1 - add r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0x1 - ands r0, r5 - lsls r0, 1 - add r0, r8 - movs r3, 0 - ldrsh r2, [r0, r3] - ldrb r3, [r4, 0x14] - subs r3, 0x5 - lsls r3, 24 - lsrs r3, 24 - ldr r0, _080E1F6C @ =gUnknown_83FF54C - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080E1F50 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r7 - movs r0, 0 - strh r0, [r1, 0x2E] - movs r0, 0x2 - cmp r5, 0x1 - bhi _080E1F3E - movs r2, 0x2 - negs r2, r2 - adds r0, r2, 0 -_080E1F3E: - strh r0, [r1, 0x30] - ldr r0, _080E1F70 @ =0x0000ffff - strh r0, [r1, 0x32] - strh r6, [r1, 0x34] - movs r0, 0x2 - strh r0, [r1, 0x36] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] -_080E1F50: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _080E1EFC - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E1F68: .4byte gSprites -_080E1F6C: .4byte gUnknown_83FF54C -_080E1F70: .4byte 0x0000ffff - thumb_func_end sub_80E1E98 - - thumb_func_start sub_80E1F74 -sub_80E1F74: @ 80E1F74 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x32] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - ble _080E1FBA - ldr r3, _080E1FC0 @ =gTasks - movs r0, 0x36 - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x34 - 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 -_080E1FBA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E1FC0: .4byte gTasks - thumb_func_end sub_80E1F74 - - thumb_func_start sub_80E1FC4 -sub_80E1FC4: @ 80E1FC4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080E200C @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - movs r0, 0 - strh r0, [r4, 0x8] - ldr r1, _080E2010 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - strh r0, [r4, 0xA] - ldrb r0, [r1] - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080E2014 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x5] - lsrs r0, 4 - lsls r0, 4 - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - adds r0, r1 - strh r0, [r4, 0xC] - ldr r0, _080E2018 @ =sub_80E201C - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E200C: .4byte gTasks -_080E2010: .4byte gBattleAnimArgs -_080E2014: .4byte gSprites -_080E2018: .4byte sub_80E201C - thumb_func_end sub_80E1FC4 - - thumb_func_start sub_80E201C -sub_80E201C: @ 80E201C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080E2064 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080E206C - ldrh r0, [r4, 0xC] - ldr r2, _080E2068 @ =gUnknown_83FF564 - movs r3, 0x8 - ldrsh r1, [r4, r3] - lsls r1, 1 - adds r1, r2 - ldrh r3, [r1] - movs r1, 0x10 - movs r2, 0x8 - bl BlendPalette - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x17 - ble _080E205C - movs r0, 0 - strh r0, [r4, 0x8] -_080E205C: - ldrh r0, [r4, 0xA] - subs r0, 0x1 - strh r0, [r4, 0xA] - b _080E207E - .align 2, 0 -_080E2064: .4byte gTasks -_080E2068: .4byte gUnknown_83FF564 -_080E206C: - ldrh r0, [r4, 0xC] - movs r1, 0x10 - movs r2, 0 - movs r3, 0 - bl BlendPalette - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080E207E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80E201C - - thumb_func_start sub_80E2084 -sub_80E2084: @ 80E2084 - push {lr} - sub sp, 0x1C - lsls r0, 24 - lsrs r0, 24 - movs r2, 0xD0 - lsls r2, 1 - ldr r1, _080E20C0 @ =gBattleAnimAttacker - ldrb r3, [r1] - ldr r1, _080E20C4 @ =gBattleAnimArgs - ldrb r1, [r1] - str r1, [sp] - movs r1, 0xA - str r1, [sp, 0x4] - movs r1, 0x2 - str r1, [sp, 0x8] - movs r1, 0x1E - str r1, [sp, 0xC] - ldr r1, _080E20C8 @ =gFile_graphics_battle_anims_masks_cure_bubbles_sheet - str r1, [sp, 0x10] - ldr r1, _080E20CC @ =gFile_graphics_battle_anims_masks_cure_bubbles_tilemap - str r1, [sp, 0x14] - ldr r1, _080E20D0 @ =gFile_graphics_battle_anims_masks_cure_bubbles_palette - str r1, [sp, 0x18] - movs r1, 0 - bl sub_80BBA20 - add sp, 0x1C - pop {r0} - bx r0 - .align 2, 0 -_080E20C0: .4byte gBattleAnimAttacker -_080E20C4: .4byte gBattleAnimArgs -_080E20C8: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_sheet -_080E20CC: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_tilemap -_080E20D0: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_palette - thumb_func_end sub_80E2084 - - thumb_func_start sub_80E20D4 -sub_80E20D4: @ 80E20D4 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _080E212C @ =gBattleAnimAttacker - ldrb r0, [r6] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E20F0 - ldr r1, _080E2130 @ =gBattleAnimArgs - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] -_080E20F0: - ldrb r0, [r6] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, _080E2130 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r6] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r5, 0x22] - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E2138 - movs r0, 0xA0 - lsls r0, 2 - strh r0, [r5, 0x2E] - ldr r0, _080E2134 @ =0x0000fd80 - strh r0, [r5, 0x30] - b _080E2160 - .align 2, 0 -_080E212C: .4byte gBattleAnimAttacker -_080E2130: .4byte gBattleAnimArgs -_080E2134: .4byte 0x0000fd80 -_080E2138: - cmp r0, 0x1 - bne _080E2152 - adds r2, r5, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] - movs r0, 0xA0 - lsls r0, 2 - strh r0, [r5, 0x2E] - strh r0, [r5, 0x30] - b _080E2160 -_080E2152: - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0xA0 - lsls r0, 2 - strh r0, [r5, 0x2E] -_080E2160: - ldr r0, _080E218C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080E2180 - ldrh r0, [r5, 0x2E] - negs r0, r0 - strh r0, [r5, 0x2E] - adds r2, r5, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_080E2180: - ldr r0, _080E2190 @ =sub_80E2194 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E218C: .4byte gBattleAnimAttacker -_080E2190: .4byte sub_80E2194 - thumb_func_end sub_80E20D4 - - thumb_func_start sub_80E2194 -sub_80E2194: @ 80E2194 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x3A] - adds r0, r1 - strh r0, [r2, 0x3A] - ldrh r1, [r2, 0x30] - ldrh r3, [r2, 0x3C] - adds r1, r3 - strh r1, [r2, 0x3C] - lsls r0, 16 - asrs r0, 24 - strh r0, [r2, 0x24] - lsls r1, 16 - asrs r1, 24 - strh r1, [r2, 0x26] - ldrh r0, [r2, 0x38] - adds r0, 0x1 - strh r0, [r2, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xE - bne _080E21C8 - adds r0, r2, 0 - bl DestroyAnimSprite -_080E21C8: - pop {r0} - bx r0 - thumb_func_end sub_80E2194 - - thumb_func_start sub_80E21CC -sub_80E21CC: @ 80E21CC - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080E221C @ =gTasks - adds r6, r1, r0 - movs r1, 0 - movs r0, 0xC - strh r0, [r6, 0x12] - movs r0, 0x3 - strh r0, [r6, 0x14] - strh r1, [r6, 0x16] - ldr r5, _080E2220 @ =gBattleAnimAttacker - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E2224 - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoordAttr - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080E2216 - adds r0, 0x3 -_080E2216: - asrs r0, 2 - adds r0, r4, r0 - b _080E2248 - .align 2, 0 -_080E221C: .4byte gTasks -_080E2220: .4byte gBattleAnimAttacker -_080E2224: - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoordAttr - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080E2244 - adds r0, 0x3 -_080E2244: - asrs r0, 2 - subs r0, r4, r0 -_080E2248: - strh r0, [r6, 0x1E] - ldr r5, _080E229C @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoordAttr - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080E226C - adds r0, 0x3 -_080E226C: - asrs r0, 2 - subs r0, r4, r0 - strh r0, [r6, 0x20] - ldr r4, _080E22A0 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x22] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x24] - ldr r0, _080E22A4 @ =sub_80E22A8 - str r0, [r6] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E229C: .4byte gBattleAnimAttacker -_080E22A0: .4byte gBattleAnimTarget -_080E22A4: .4byte sub_80E22A8 - thumb_func_end sub_80E21CC - - thumb_func_start sub_80E22A8 -sub_80E22A8: @ 80E22A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - ldr r1, _080E22D0 @ =gTasks - adds r5, r0, r1 - movs r0, 0x8 - ldrsh r1, [r5, r0] - cmp r1, 0 - beq _080E22D4 - cmp r1, 0x1 - bne _080E22CC - b _080E23CC -_080E22CC: - b _080E23DA - .align 2, 0 -_080E22D0: .4byte gTasks -_080E22D4: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080E23DA - strh r1, [r5, 0xA] - movs r1, 0x1E - ldrsh r0, [r5, r1] - movs r2, 0x20 - ldrsh r1, [r5, r2] - movs r3, 0x22 - ldrsh r2, [r5, r3] - movs r4, 0x24 - ldrsh r3, [r5, r4] - ldrb r4, [r5, 0x12] - str r4, [sp] - ldrb r4, [r5, 0xC] - str r4, [sp, 0x4] - add r4, sp, 0x10 - str r4, [sp, 0x8] - adds r4, 0x2 - str r4, [sp, 0xC] - bl sub_80E23E8 - movs r6, 0 - mov r8, r4 - ldr r4, _080E2348 @ =gSprites -_080E230E: - add r0, sp, 0x10 - movs r2, 0 - ldrsh r1, [r0, r2] - mov r3, r8 - movs r0, 0 - ldrsh r2, [r3, r0] - ldr r0, _080E234C @ =gUnknown_83FF5CC - movs r3, 0x23 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - beq _080E23A2 - movs r1, 0x16 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080E2362 - cmp r6, 0 - bne _080E2350 - lsls r2, r3, 4 - adds r1, r2, r3 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r5, 0x14] - negs r0, r0 - strh r0, [r1, 0x26] - strh r0, [r1, 0x24] - b _080E238A - .align 2, 0 -_080E2348: .4byte gSprites -_080E234C: .4byte gUnknown_83FF5CC -_080E2350: - lsls r2, r3, 4 - adds r1, r2, r3 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r5, 0x14] - strh r0, [r1, 0x26] - ldrh r0, [r5, 0x14] - strh r0, [r1, 0x24] - b _080E238A -_080E2362: - cmp r6, 0 - bne _080E2378 - lsls r2, r3, 4 - adds r1, r2, r3 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r5, 0x14] - negs r0, r0 - strh r0, [r1, 0x24] - ldrh r0, [r5, 0x14] - b _080E2388 -_080E2378: - lsls r2, r3, 4 - adds r1, r2, r3 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r5, 0x14] - strh r0, [r1, 0x24] - ldrh r0, [r5, 0x14] - negs r0, r0 -_080E2388: - strh r0, [r1, 0x26] -_080E238A: - ldr r1, _080E23C8 @ =gSprites - adds r0, r2, r3 - lsls r0, 2 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x2E] - strh r7, [r0, 0x30] - movs r1, 0xA - strh r1, [r0, 0x32] - ldrh r0, [r5, 0x1C] - adds r0, 0x1 - strh r0, [r5, 0x1C] -_080E23A2: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x1 - bls _080E230E - ldrh r2, [r5, 0xC] - movs r3, 0xC - ldrsh r1, [r5, r3] - movs r4, 0x12 - ldrsh r0, [r5, r4] - cmp r1, r0 - bne _080E23C0 - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] -_080E23C0: - adds r0, r2, 0x1 - strh r0, [r5, 0xC] - b _080E23DA - .align 2, 0 -_080E23C8: .4byte gSprites -_080E23CC: - movs r1, 0x1C - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080E23DA - adds r0, r7, 0 - bl DestroyAnimVisualTask -_080E23DA: - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80E22A8 - - thumb_func_start sub_80E23E8 -sub_80E23E8: @ 80E23E8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r4, [sp, 0x28] - ldr r5, [sp, 0x2C] - ldr r6, [sp, 0x30] - mov r9, r6 - ldr r6, [sp, 0x34] - mov r10, r6 - lsls r0, 16 - lsrs r0, 16 - mov r12, r0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - lsls r2, 16 - lsrs r2, 16 - adds r7, r2, 0 - lsls r3, 16 - lsrs r3, 16 - str r3, [sp, 0x4] - lsls r4, 24 - lsrs r6, r4, 24 - lsls r5, 24 - lsrs r5, 24 - mov r8, r5 - cmp r5, 0 - bne _080E2430 - mov r2, r9 - strh r0, [r2] - mov r6, r10 - strh r1, [r6] - b _080E248E -_080E2430: - cmp r5, r6 - bcc _080E243E - mov r0, r9 - strh r2, [r0] - mov r1, r10 - strh r3, [r1] - b _080E248E -_080E243E: - subs r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - mov r2, r12 - lsls r1, r2, 16 - asrs r1, 16 - lsls r5, r1, 8 - lsls r0, r7, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 8 - adds r1, r6, 0 - bl __divsi3 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r5, r0 - ldr r2, [sp] - lsls r1, r2, 16 - asrs r1, 16 - lsls r4, r1, 8 - ldr r2, [sp, 0x4] - lsls r0, r2, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 8 - adds r1, r6, 0 - bl __divsi3 - mov r6, r8 - muls r6, r0 - adds r0, r6, 0 - adds r4, r0 - asrs r5, 8 - mov r0, r9 - strh r5, [r0] - asrs r4, 8 - mov r1, r10 - strh r4, [r1] -_080E248E: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80E23E8 - - thumb_func_start sub_80E24A0 -sub_80E24A0: @ 80E24A0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x24 - ble _080E24D6 - ldr r3, _080E24DC @ =gTasks - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x30 - 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 -_080E24D6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E24DC: .4byte gTasks - thumb_func_end sub_80E24A0 - - thumb_func_start sub_80E24E0 -sub_80E24E0: @ 80E24E0 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _080E250C @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x22] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x32] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x36] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x2E] - ldr r1, _080E2510 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _080E2514 @ =InitAndRunAnimFastLinearTranslation - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E250C: .4byte gBattleAnimArgs -_080E2510: .4byte DestroyAnimSprite -_080E2514: .4byte InitAndRunAnimFastLinearTranslation - thumb_func_end sub_80E24E0 - - thumb_func_start sub_80E2518 -sub_80E2518: @ 80E2518 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r0, 2 - add r0, r9 - lsls r0, 3 - ldr r1, _080E2638 @ =gTasks - adds r7, r0, r1 - ldr r0, _080E263C @ =gBattleAnimAttacker - mov r10, r0 - ldrb r0, [r0] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x1E] - mov r1, r10 - ldrb r0, [r1] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x20] - ldr r0, _080E2640 @ =gBattleAnimTarget - mov r8, r0 - ldrb r0, [r0] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x22] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x3 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - mov r1, r8 - ldrb r0, [r1] - movs r1, 0 - bl GetBattlerSpriteCoordAttr - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080E258A - adds r0, 0x3 -_080E258A: - asrs r0, 2 - adds r0, r4, r0 - strh r0, [r7, 0x24] - ldr r4, _080E2644 @ =gUnknown_83FF62C - movs r0, 0x1E - ldrsh r5, [r7, r0] - movs r1, 0x20 - ldrsh r6, [r7, r1] - mov r1, r8 - ldrb r0, [r1] - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - subs r3, 0x5 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x26] - cmp r0, 0x40 - beq _080E2654 - ldr r4, _080E2648 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x10 - strh r1, [r0, 0x2E] - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r7, 0x22] - strh r1, [r0, 0x32] - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r7, 0x24] - strh r1, [r0, 0x36] - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _080E264C @ =0x0000ffe0 - strh r1, [r0, 0x38] - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl InitAnimArcTranslation - mov r1, r10 - ldrb r0, [r1] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E2632 - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080E2632: - ldr r0, _080E2650 @ =sub_80E2668 - str r0, [r7] - b _080E265A - .align 2, 0 -_080E2638: .4byte gTasks -_080E263C: .4byte gBattleAnimAttacker -_080E2640: .4byte gBattleAnimTarget -_080E2644: .4byte gUnknown_83FF62C -_080E2648: .4byte gSprites -_080E264C: .4byte 0x0000ffe0 -_080E2650: .4byte sub_80E2668 -_080E2654: - mov r0, r9 - bl DestroyAnimVisualTask -_080E265A: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80E2518 - - thumb_func_start sub_80E2668 -sub_80E2668: @ 80E2668 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080E268C @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _080E26D0 - cmp r1, 0x1 - bgt _080E2690 - cmp r1, 0 - beq _080E269A - b _080E276E - .align 2, 0 -_080E268C: .4byte gTasks -_080E2690: - cmp r1, 0x2 - beq _080E26F4 - cmp r1, 0x3 - beq _080E2768 - b _080E276E -_080E269A: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E276E - strh r1, [r4, 0xA] - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080E26CC @ =gSprites - adds r0, r1 - bl TranslateAnimHorizontalArc - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080E276E - b _080E275A - .align 2, 0 -_080E26CC: .4byte gSprites -_080E26D0: - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080E26F0 @ =gSprites - adds r0, r1 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - beq _080E276E - movs r0, 0 - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - b _080E275A - .align 2, 0 -_080E26F0: .4byte gSprites -_080E26F4: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E276E - movs r0, 0 - strh r0, [r4, 0xA] - ldrh r2, [r4, 0xC] - adds r2, 0x1 - strh r2, [r4, 0xC] - ldr r5, _080E2764 @ =gSprites - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - movs r0, 0x1 - ands r2, r0 - adds r1, 0x3E - lsls r2, 2 - ldrb r3, [r1] - subs r0, 0x6 - ands r0, r3 - orrs r0, r2 - strb r0, [r1] - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080E276E - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite -_080E275A: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E276E - .align 2, 0 -_080E2764: .4byte gSprites -_080E2768: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080E276E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80E2668 - - thumb_func_start sub_80E2774 -sub_80E2774: @ 80E2774 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r0, _080E2788 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r0, r2] - adds r6, r0, 0 - cmp r1, 0 - bne _080E2790 - ldr r0, _080E278C @ =gBattleAnimAttacker - b _080E2792 - .align 2, 0 -_080E2788: .4byte gBattleAnimArgs -_080E278C: .4byte gBattleAnimAttacker -_080E2790: - ldr r0, _080E27F8 @ =gBattleAnimTarget -_080E2792: - ldrb r5, [r0] - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x10 - ldr r3, _080E27FC @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080E2800 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - adds r1, r6, 0 - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x3A] - movs r2, 0x2 - ldrsh r0, [r1, r2] - movs r1, 0x1 - cmp r0, 0 - bne _080E27C0 - movs r3, 0x1 - negs r3, r3 - adds r1, r3, 0 -_080E27C0: - strh r1, [r4, 0x3C] - adds r0, r5, 0 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - movs r1, 0x2 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080E2804 - ldrb r2, [r4, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x8 - orrs r1, r0 - lsls r1, 1 - subs r0, 0x47 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x3] - adds r0, r5, 0 - movs r1, 0x4 - bl GetBattlerSpriteCoordAttr - subs r0, 0x8 - b _080E280E - .align 2, 0 -_080E27F8: .4byte gBattleAnimTarget -_080E27FC: .4byte 0x000003ff -_080E2800: .4byte 0xfffffc00 -_080E2804: - adds r0, r5, 0 - movs r1, 0x5 - bl GetBattlerSpriteCoordAttr - adds r0, 0x8 -_080E280E: - strh r0, [r4, 0x20] - ldr r0, _080E281C @ =sub_80E2820 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E281C: .4byte sub_80E2820 - thumb_func_end sub_80E2774 - - thumb_func_start sub_80E2820 -sub_80E2820: @ 80E2820 - push {lr} - adds r2, r0, 0 - movs r0, 0x2E - ldrsh r1, [r2, r0] - cmp r1, 0x1 - beq _080E2868 - cmp r1, 0x1 - bgt _080E2836 - cmp r1, 0 - beq _080E2840 - b _080E28D8 -_080E2836: - cmp r1, 0x2 - beq _080E2878 - cmp r1, 0x3 - beq _080E289E - b _080E28D8 -_080E2840: - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E28D8 - strh r1, [r2, 0x30] - ldrh r0, [r2, 0x3C] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x32] - adds r0, 0x1 - strh r0, [r2, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - bne _080E28D8 - b _080E2896 -_080E2868: - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - bne _080E28D8 - b _080E2892 -_080E2878: - movs r0, 0x3C - ldrsh r1, [r2, r0] - lsls r1, 2 - ldrh r0, [r2, 0x24] - subs r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _080E28D8 -_080E2892: - movs r0, 0 - strh r0, [r2, 0x30] -_080E2896: - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - b _080E28D8 -_080E289E: - movs r0, 0x3C - ldrsh r1, [r2, r0] - lsls r0, r1, 1 - adds r0, r1 - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - bne _080E28D8 - ldrh r0, [r2, 0x3A] - subs r0, 0x1 - strh r0, [r2, 0x3A] - lsls r0, 16 - cmp r0, 0 - beq _080E28D2 - movs r0, 0 - strh r0, [r2, 0x30] - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - strh r0, [r2, 0x2E] - b _080E28D8 -_080E28D2: - adds r0, r2, 0 - bl DestroyAnimSprite -_080E28D8: - pop {r0} - bx r0 - thumb_func_end sub_80E2820 - - thumb_func_start sub_80E28DC -sub_80E28DC: @ 80E28DC - push {r4,lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r2, _080E28F4 @ =gBattleAnimArgs - movs r3, 0 - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _080E28F8 - adds r0, r1, 0 - bl DestroyAnimVisualTask - b _080E2920 - .align 2, 0 -_080E28F4: .4byte gBattleAnimArgs -_080E28F8: - ldr r0, _080E2928 @ =gTasks - lsls r4, r1, 2 - adds r4, r1 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r2, 0x2] - strh r0, [r4, 0x8] - ldrb r0, [r2] - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r4, 0x26] - ldr r2, _080E292C @ =gUnknown_83FF65C - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldr r0, _080E2930 @ =sub_80E2934 - str r0, [r4] -_080E2920: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E2928: .4byte gTasks -_080E292C: .4byte gUnknown_83FF65C -_080E2930: .4byte sub_80E2934 - thumb_func_end sub_80E28DC - - thumb_func_start sub_80E2934 -sub_80E2934: @ 80E2934 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080E2974 @ =gTasks - adds r4, r0, r1 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E298E - movs r0, 0 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E297C - ldr r2, _080E2978 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x2 - b _080E298C - .align 2, 0 -_080E2974: .4byte gTasks -_080E2978: .4byte gSprites -_080E297C: - ldr r2, _080E29D4 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _080E29D8 @ =0x0000fffe -_080E298C: - strh r1, [r0, 0x24] -_080E298E: - adds r0, r4, 0 - bl RunAffineAnimFromTaskData - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080E29EA - ldr r2, _080E29D4 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r5, [r0, 0x24] - ldrh r0, [r4, 0x8] - subs r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - cmp r0, 0 - beq _080E29E4 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080E29DC @ =gTasks - adds r0, r1 - ldrh r1, [r0, 0x26] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080E29E0 @ =gUnknown_83FF65C - bl PrepareAffineAnimInTaskData - strh r5, [r4, 0xA] - strh r5, [r4, 0xC] - b _080E29EA - .align 2, 0 -_080E29D4: .4byte gSprites -_080E29D8: .4byte 0x0000fffe -_080E29DC: .4byte gTasks -_080E29E0: .4byte gUnknown_83FF65C -_080E29E4: - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080E29EA: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80E2934 - - thumb_func_start sub_80E29F0 -sub_80E29F0: @ 80E29F0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080E2A04 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E2A0C - ldr r4, _080E2A08 @ =gBattleAnimAttacker - b _080E2A0E - .align 2, 0 -_080E2A04: .4byte gBattleAnimArgs -_080E2A08: .4byte gBattleAnimAttacker -_080E2A0C: - ldr r4, _080E2A4C @ =gBattleAnimTarget -_080E2A0E: - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoordAttr - strh r0, [r5, 0x22] - movs r1, 0x22 - ldrsh r0, [r5, r1] - cmp r0, 0x7 - bgt _080E2A32 - movs r0, 0x8 - strh r0, [r5, 0x22] -_080E2A32: - movs r2, 0 - strh r2, [r5, 0x2E] - ldr r1, _080E2A50 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - strh r0, [r5, 0x30] - strh r2, [r5, 0x32] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x34] - ldr r0, _080E2A54 @ =sub_80E2A58 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E2A4C: .4byte gBattleAnimTarget -_080E2A50: .4byte gBattleAnimArgs -_080E2A54: .4byte sub_80E2A58 - thumb_func_end sub_80E29F0 - - thumb_func_start sub_80E2A58 -sub_80E2A58: @ 80E2A58 - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x30 - ldrsh r1, [r3, r2] - cmp r0, r1 - blt _080E2AAC - movs r0, 0 - strh r0, [r3, 0x2E] - ldrh r1, [r3, 0x32] - adds r1, 0x1 - movs r0, 0x1 - ands r1, r0 - strh r1, [r3, 0x32] - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - lsls r1, 2 - ldrb r2, [r0] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - movs r2, 0x32 - ldrsh r0, [r3, r2] - cmp r0, 0 - beq _080E2AAC - ldrh r0, [r3, 0x34] - subs r0, 0x1 - strh r0, [r3, 0x34] - lsls r0, 16 - cmp r0, 0 - bne _080E2AAC - adds r0, r3, 0 - bl DestroyAnimSprite -_080E2AAC: - pop {r0} - bx r0 - thumb_func_end sub_80E2A58 - - thumb_func_start sub_80E2AB0 -sub_80E2AB0: @ 80E2AB0 - push {lr} - adds r3, r0, 0 - ldr r0, _080E2ADC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E2AE0 - ldrb r2, [r3, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x8 - orrs r1, r0 - lsls r1, 1 - subs r0, 0x47 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x3] - movs r0, 0x64 - strh r0, [r3, 0x20] - movs r0, 0x1 - b _080E2AE6 - .align 2, 0 -_080E2ADC: .4byte gBattleAnimArgs -_080E2AE0: - movs r0, 0x8C - strh r0, [r3, 0x20] - ldr r0, _080E2AF4 @ =0x0000ffff -_080E2AE6: - strh r0, [r3, 0x3C] - movs r0, 0x38 - strh r0, [r3, 0x22] - ldr r0, _080E2AF8 @ =sub_80E2AFC - str r0, [r3, 0x1C] - pop {r0} - bx r0 - .align 2, 0 -_080E2AF4: .4byte 0x0000ffff -_080E2AF8: .4byte sub_80E2AFC - thumb_func_end sub_80E2AB0 - - thumb_func_start sub_80E2AFC -sub_80E2AFC: @ 80E2AFC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x8 - bls _080E2B0A - b _080E2CDC -_080E2B0A: - lsls r0, 2 - ldr r1, _080E2B14 @ =_080E2B18 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E2B14: .4byte _080E2B18 - .align 2, 0 -_080E2B18: - .4byte _080E2B3C - .4byte _080E2B6E - .4byte _080E2B80 - .4byte _080E2BC0 - .4byte _080E2BD2 - .4byte _080E2C10 - .4byte _080E2C74 - .4byte _080E2C94 - .4byte _080E2CBA -_080E2B3C: - movs r3, 0x3C - ldrsh r0, [r4, r3] - lsls r0, 1 - ldrh r1, [r4, 0x22] - subs r1, r0 - strh r1, [r4, 0x22] - ldrh r2, [r4, 0x30] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _080E2B5E - movs r0, 0x3C - ldrsh r1, [r4, r0] - lsls r1, 1 - ldrh r0, [r4, 0x20] - subs r0, r1 - strh r0, [r4, 0x20] -_080E2B5E: - adds r0, r2, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - beq _080E2B6C - b _080E2CDC -_080E2B6C: - b _080E2CAE -_080E2B6E: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - beq _080E2B7E - b _080E2CDC -_080E2B7E: - b _080E2CAE -_080E2B80: - ldrh r2, [r4, 0x30] - adds r2, 0x1 - strh r2, [r4, 0x30] - movs r3, 0x3C - ldrsh r1, [r4, r3] - lsls r0, r1, 1 - adds r0, r1 - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r3, _080E2BBC @ =gSineTable - movs r0, 0x30 - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 19 - ldrh r1, [r4, 0x3C] - muls r0, r1 - strh r0, [r4, 0x24] - lsls r2, 16 - asrs r2, 16 - cmp r2, 0xC - beq _080E2BB8 - b _080E2CDC -_080E2BB8: - b _080E2CAE - .align 2, 0 -_080E2BBC: .4byte gSineTable -_080E2BC0: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - beq _080E2BD0 - b _080E2CDC -_080E2BD0: - b _080E2CAE -_080E2BD2: - ldrh r2, [r4, 0x30] - adds r2, 0x1 - strh r2, [r4, 0x30] - movs r1, 0x3C - ldrsh r0, [r4, r1] - lsls r1, r0, 1 - adds r1, r0 - ldrh r0, [r4, 0x22] - subs r0, r1 - strh r0, [r4, 0x22] - ldr r3, _080E2C0C @ =gSineTable - movs r0, 0x30 - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 19 - ldrh r1, [r4, 0x3C] - muls r0, r1 - strh r0, [r4, 0x24] - lsls r2, 16 - asrs r2, 16 - cmp r2, 0xC - bne _080E2CDC - b _080E2CB2 - .align 2, 0 -_080E2C0C: .4byte gSineTable -_080E2C10: - ldrh r2, [r4, 0x30] - adds r2, 0x1 - strh r2, [r4, 0x30] - movs r3, 0x3C - ldrsh r1, [r4, r3] - lsls r0, r1, 1 - adds r0, r1 - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r3, _080E2C68 @ =gSineTable - movs r0, 0x30 - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 19 - ldrh r1, [r4, 0x3C] - muls r0, r1 - strh r0, [r4, 0x24] - lsls r2, 16 - asrs r2, 16 - cmp r2, 0xF - bne _080E2C5C - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x10 - ldr r3, _080E2C6C @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080E2C70 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] -_080E2C5C: - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x12 - bne _080E2CDC - b _080E2CAE - .align 2, 0 -_080E2C68: .4byte gSineTable -_080E2C6C: .4byte 0x000003ff -_080E2C70: .4byte 0xfffffc00 -_080E2C74: - movs r3, 0x3C - ldrsh r0, [r4, r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 1 - ldrh r0, [r4, 0x20] - adds r1, r0 - strh r1, [r4, 0x20] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bne _080E2CDC - b _080E2CAE -_080E2C94: - movs r1, 0x3C - ldrsh r0, [r4, r1] - lsls r0, 1 - ldrh r3, [r4, 0x20] - adds r0, r3 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080E2CDC -_080E2CAE: - movs r0, 0 - strh r0, [r4, 0x30] -_080E2CB2: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080E2CDC -_080E2CBA: - movs r1, 0x3C - ldrsh r0, [r4, r1] - lsls r1, r0, 1 - adds r1, r0 - ldrh r0, [r4, 0x20] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080E2CDC - adds r0, r4, 0 - bl DestroyAnimSprite -_080E2CDC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E2AFC - - thumb_func_start sub_80E2CE4 -sub_80E2CE4: @ 80E2CE4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080E2D34 @ =gTasks - adds r6, r1, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x26] - bl IsDoubleBattle - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x1 - bne _080E2D44 - ldr r5, _080E2D38 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r1, [r5] - movs r0, 0x2 - eors r0, r1 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - ble _080E2D3C - strh r7, [r6, 0x24] - b _080E2D64 - .align 2, 0 -_080E2D34: .4byte gTasks -_080E2D38: .4byte gBattleAnimAttacker -_080E2D3C: - ldr r0, _080E2D40 @ =0x0000ffff - b _080E2D62 - .align 2, 0 -_080E2D40: .4byte 0x0000ffff -_080E2D44: - ldr r0, _080E2D58 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E2D60 - ldr r0, _080E2D5C @ =0x0000ffff - b _080E2D62 - .align 2, 0 -_080E2D58: .4byte gBattleAnimAttacker -_080E2D5C: .4byte 0x0000ffff -_080E2D60: - movs r0, 0x1 -_080E2D62: - strh r0, [r6, 0x24] -_080E2D64: - ldr r0, _080E2D70 @ =sub_80E2D74 - str r0, [r6] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E2D70: .4byte sub_80E2D74 - thumb_func_end sub_80E2CE4 - - thumb_func_start sub_80E2D74 -sub_80E2D74: @ 80E2D74 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080E2D98 @ =gTasks - adds r3, r0, r1 - movs r1, 0x8 - ldrsh r0, [r3, r1] - cmp r0, 0x8 - bls _080E2D8E - b _080E2F08 -_080E2D8E: - lsls r0, 2 - ldr r1, _080E2D9C @ =_080E2DA0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E2D98: .4byte gTasks -_080E2D9C: .4byte _080E2DA0 - .align 2, 0 -_080E2DA0: - .4byte _080E2DC4 - .4byte _080E2DD6 - .4byte _080E2E08 - .4byte _080E2E38 - .4byte _080E2E5E - .4byte _080E2E88 - .4byte _080E2E98 - .4byte _080E2EB8 - .4byte _080E2EF0 -_080E2DC4: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - beq _080E2DD4 - b _080E2F08 -_080E2DD4: - b _080E2EE0 -_080E2DD6: - ldr r2, _080E2E04 @ =gSprites - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r2, 0x24 - ldrsh r0, [r3, r2] - lsls r2, r0, 1 - adds r2, r0 - ldrh r0, [r1, 0x24] - subs r0, r2 - strh r0, [r1, 0x24] - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - beq _080E2E02 - b _080E2F08 -_080E2E02: - b _080E2EE0 - .align 2, 0 -_080E2E04: .4byte gSprites -_080E2E08: - ldr r2, _080E2E34 @ =gSprites - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x24 - ldrsh r2, [r3, r0] - lsls r0, r2, 1 - adds r0, r2 - ldrh r2, [r1, 0x24] - adds r0, r2 - strh r0, [r1, 0x24] - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _080E2F08 - b _080E2EE0 - .align 2, 0 -_080E2E34: .4byte gSprites -_080E2E38: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080E2F08 - movs r0, 0 - strh r0, [r3, 0xA] - ldrh r1, [r3, 0xC] - movs r2, 0xC - ldrsh r0, [r3, r2] - cmp r0, 0 - bne _080E2EE4 - adds r0, r1, 0x1 - strh r0, [r3, 0xC] - movs r0, 0x1 - strh r0, [r3, 0x8] - b _080E2F08 -_080E2E5E: - ldr r2, _080E2E84 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x24] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080E2F08 - b _080E2EE0 - .align 2, 0 -_080E2E84: .4byte gSprites -_080E2E88: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _080E2F08 - b _080E2EE0 -_080E2E98: - ldr r2, _080E2EB4 @ =gSprites - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x24 - ldrsh r2, [r3, r0] - lsls r2, 2 - ldrh r0, [r1, 0x24] - subs r0, r2 - b _080E2ED0 - .align 2, 0 -_080E2EB4: .4byte gSprites -_080E2EB8: - ldr r2, _080E2EEC @ =gSprites - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r2, 0x24 - ldrsh r0, [r3, r2] - lsls r0, 2 - ldrh r2, [r1, 0x24] - adds r0, r2 -_080E2ED0: - strh r0, [r1, 0x24] - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080E2F08 -_080E2EE0: - movs r0, 0 - strh r0, [r3, 0xA] -_080E2EE4: - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - b _080E2F08 - .align 2, 0 -_080E2EEC: .4byte gSprites -_080E2EF0: - ldr r2, _080E2F10 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x24] - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080E2F08: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E2F10: .4byte gSprites - thumb_func_end sub_80E2D74 - - thumb_func_start sub_80E2F14 -sub_80E2F14: @ 80E2F14 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080E2F30 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E2F38 - adds r0, r4, 0 - movs r1, 0x1 - bl InitSpritePosToAnimAttacker - ldr r0, _080E2F34 @ =gBattleAnimAttacker - b _080E2F3A - .align 2, 0 -_080E2F30: .4byte gBattleAnimArgs -_080E2F34: .4byte gBattleAnimAttacker -_080E2F38: - ldr r0, _080E2F90 @ =gBattleAnimTarget -_080E2F3A: - ldrb r0, [r0] - strh r0, [r4, 0x3C] - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E2F5E - ldrb r0, [r4, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x10 - orrs r1, r0 - strb r1, [r4, 0x3] -_080E2F5E: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerSpriteBGPriority - movs r2, 0x3 - ands r2, r0 - lsls r2, 2 - ldrb r3, [r4, 0x5] - movs r1, 0xD - negs r1, r1 - adds r0, r1, 0 - ands r0, r3 - orrs r0, r2 - strb r0, [r4, 0x5] - ldrb r0, [r4, 0x1] - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4, 0x1] - ldr r0, _080E2F94 @ =sub_80E2F98 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E2F90: .4byte gBattleAnimTarget -_080E2F94: .4byte sub_80E2F98 - thumb_func_end sub_80E2F14 - - thumb_func_start sub_80E2F98 -sub_80E2F98: @ 80E2F98 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _080E2FA6 - b _080E3196 -_080E2FA6: - lsls r0, 2 - ldr r1, _080E2FB0 @ =_080E2FB4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E2FB0: .4byte _080E2FB4 - .align 2, 0 -_080E2FB4: - .4byte _080E2FC8 - .4byte _080E30C8 - .4byte _080E3130 - .4byte _080E3144 - .4byte _080E3190 -_080E2FC8: - movs r2, 0x3A - ldrsh r0, [r4, r2] - cmp r0, 0x5 - bhi _080E2FF8 - lsls r0, 2 - ldr r1, _080E2FDC @ =_080E2FE0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E2FDC: .4byte _080E2FE0 - .align 2, 0 -_080E2FE0: - .4byte _080E2FFC - .4byte _080E3018 - .4byte _080E303A - .4byte _080E3056 - .4byte _080E2FFC - .4byte _080E307C -_080E2FF8: - movs r0, 0 - strh r0, [r4, 0x3A] -_080E2FFC: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x5 - bl GetBattlerSpriteCoordAttr - subs r0, 0x4 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - b _080E3070 -_080E3018: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x5 - bl GetBattlerSpriteCoordAttr - subs r0, 0x4 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl GetBattlerSpriteCoordAttr - adds r0, 0x4 - b _080E3076 -_080E303A: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x4 - bl GetBattlerSpriteCoordAttr - adds r0, 0x4 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - b _080E3070 -_080E3056: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x4 - bl GetBattlerSpriteCoordAttr - adds r0, 0x4 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 -_080E3070: - bl GetBattlerSpriteCoordAttr - subs r0, 0x4 -_080E3076: - lsls r0, 16 - lsrs r1, r0, 16 - b _080E309C -_080E307C: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r5, r0, 24 - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r1, r0, 24 -_080E309C: - movs r2, 0x3A - ldrsh r0, [r4, r2] - cmp r0, 0x4 - bne _080E30A8 - movs r0, 0x18 - b _080E30B2 -_080E30A8: - cmp r0, 0x5 - bne _080E30B0 - movs r0, 0x6 - b _080E30B2 -_080E30B0: - movs r0, 0xC -_080E30B2: - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - strh r5, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - strh r1, [r4, 0x36] - adds r0, r4, 0 - bl InitAnimLinearTranslation - b _080E3188 -_080E30C8: - adds r0, r4, 0 - bl AnimTranslateLinear - lsls r0, 24 - cmp r0, 0 - beq _080E3196 - movs r1, 0x3A - ldrsh r0, [r4, r1] - cmp r0, 0x4 - beq _080E3100 - cmp r0, 0x5 - beq _080E3120 - ldrh r0, [r4, 0x24] - ldrh r2, [r4, 0x20] - adds r0, r2 - movs r1, 0 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - strh r1, [r4, 0x26] - strh r1, [r4, 0x24] - strh r1, [r4, 0x2E] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - b _080E3118 -_080E3100: - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - movs r1, 0 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - strh r1, [r4, 0x26] - strh r1, [r4, 0x24] - strh r1, [r4, 0x38] -_080E3118: - ldrh r0, [r4, 0x3A] - adds r0, 0x1 - strh r0, [r4, 0x3A] - b _080E3196 -_080E3120: - movs r0, 0 - strh r0, [r4, 0x2E] - movs r1, 0x10 - strh r1, [r4, 0x30] - strh r0, [r4, 0x32] - movs r0, 0x3 - strh r0, [r4, 0x38] - b _080E3196 -_080E3130: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080E3196 - movs r0, 0 - strh r0, [r4, 0x38] - b _080E3196 -_080E3144: - ldrh r1, [r4, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E3156 - ldrh r0, [r4, 0x30] - subs r0, 0x1 - strh r0, [r4, 0x30] - b _080E315C -_080E3156: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] -_080E315C: - ldrh r1, [r4, 0x32] - lsls r1, 8 - ldrh r0, [r4, 0x30] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x20 - bne _080E3196 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080E3188: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - b _080E3196 -_080E3190: - adds r0, r4, 0 - bl DestroyAnimSprite -_080E3196: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80E2F98 - - thumb_func_start sub_80E319C -sub_80E319C: @ 80E319C - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r2, 0x2E - ldrsh r1, [r4, r2] - subs r0, r1 - movs r2, 0x38 - ldrsh r1, [r4, r2] - muls r0, r1 - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __divsi3 - adds r5, r0, 0 - strh r5, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r2, 0x30 - ldrsh r1, [r4, r2] - subs r0, r1 - movs r2, 0x38 - ldrsh r1, [r4, r2] - muls r0, r1 - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __divsi3 - adds r3, r0, 0 - strh r3, [r4, 0x26] - ldrh r1, [r4, 0x38] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E31FA - ldr r0, _080E3218 @ =gUnknown_83FF180 - ldrh r1, [r4, 0x20] - adds r1, r5 - lsls r1, 16 - asrs r1, 16 - ldrh r2, [r4, 0x22] - adds r2, r3 - lsls r2, 16 - asrs r2, 16 - movs r3, 0x5 - bl CreateSprite -_080E31FA: - movs r0, 0x38 - ldrsh r1, [r4, r0] - movs r2, 0x36 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080E320C - adds r0, r4, 0 - bl DestroyAnimSprite -_080E320C: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E3218: .4byte gUnknown_83FF180 - thumb_func_end sub_80E319C - - thumb_func_start sub_80E321C -sub_80E321C: @ 80E321C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080E3250 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E3258 - ldr r2, _080E3254 @ =gBattleAnimArgs - ldrh r1, [r5, 0x20] - ldrh r0, [r2] - subs r0, r1, r0 - strh r0, [r5, 0x2E] - ldrh r0, [r2, 0x4] - subs r1, r0 - b _080E3266 - .align 2, 0 -_080E3250: .4byte gBattleAnimTarget -_080E3254: .4byte gBattleAnimArgs -_080E3258: - ldr r2, _080E328C @ =gBattleAnimArgs - ldrh r1, [r5, 0x20] - ldrh r0, [r2] - adds r0, r1, r0 - strh r0, [r5, 0x2E] - ldrh r0, [r2, 0x4] - adds r1, r0 -_080E3266: - strh r1, [r5, 0x32] - adds r3, r2, 0 - ldrh r1, [r5, 0x22] - ldrh r2, [r3, 0x2] - adds r2, r1, r2 - strh r2, [r5, 0x30] - ldrh r0, [r3, 0x6] - adds r1, r0 - strh r1, [r5, 0x34] - ldrh r0, [r3, 0x8] - strh r0, [r5, 0x36] - ldrh r0, [r5, 0x2E] - strh r0, [r5, 0x20] - strh r2, [r5, 0x22] - ldr r0, _080E3290 @ =sub_80E319C - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E328C: .4byte gBattleAnimArgs -_080E3290: .4byte sub_80E319C - thumb_func_end sub_80E321C - - thumb_func_start sub_80E3294 -sub_80E3294: @ 80E3294 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r5, r0, 24 - adds r2, r5, 0 - ldr r0, _080E32D8 @ =gTasks - mov r9, r0 - lsls r7, r6, 2 - adds r0, r7, r6 - lsls r0, 3 - mov r8, r0 - mov r4, r8 - add r4, r9 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E32DC - adds r0, r5, 0 - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - b _080E3328 - .align 2, 0 -_080E32D8: .4byte gTasks -_080E32DC: - cmp r0, 0x1 - bne _080E3334 - ldrh r0, [r4, 0xA] - adds r0, 0x60 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - subs r0, 0xD - strh r0, [r4, 0xC] - movs r2, 0xA - ldrsh r1, [r4, r2] - movs r0, 0xC - ldrsh r2, [r4, r0] - adds r0, r5, 0 - movs r3, 0 - bl SetSpriteRotScale - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bne _080E3360 - movs r0, 0 - strh r0, [r4, 0xE] - adds r0, r5, 0 - bl ResetSpriteRotScale - ldr r1, _080E3330 @ =gSprites - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080E3328: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E3360 - .align 2, 0 -_080E3330: .4byte gSprites -_080E3334: - ldr r0, _080E336C @ =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0 - bl LoadBattleMonGfxAndAnimate - adds r3, r7, 0 - mov r4, r9 - movs r1, 0xF - mov r2, r8 - adds r0, r4, r2 - adds r0, 0x26 - movs r2, 0 -_080E334C: - strh r2, [r0] - subs r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080E334C - adds r0, r3, r6 - lsls r0, 3 - adds r0, r4 - ldr r1, _080E3370 @ =sub_80E3374 - str r1, [r0] -_080E3360: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E336C: .4byte gBattleAnimAttacker -_080E3370: .4byte sub_80E3374 - thumb_func_end sub_80E3294 - - thumb_func_start sub_80E3374 -sub_80E3374: @ 80E3374 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _080E33A0 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _080E33D8 - cmp r5, 0x1 - bgt _080E33A4 - cmp r5, 0 - beq _080E33AE - b _080E34C6 - .align 2, 0 -_080E33A0: .4byte gTasks -_080E33A4: - cmp r5, 0x2 - beq _080E3444 - cmp r5, 0x3 - beq _080E3480 - b _080E34C6 -_080E33AE: - ldr r0, _080E33D0 @ =gSprites - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldr r0, _080E33D4 @ =0x0000ff38 - strh r0, [r1, 0x26] - movs r0, 0xC8 - strh r0, [r1, 0x24] - adds r1, 0x3E - ldrb r2, [r1] - subs r0, 0xCD - ands r0, r2 - strb r0, [r1] - strh r5, [r4, 0x1C] - b _080E3472 - .align 2, 0 -_080E33D0: .4byte gSprites -_080E33D4: .4byte 0x0000ff38 -_080E33D8: - ldrh r1, [r4, 0x1C] - adds r1, 0x70 - movs r5, 0 - strh r1, [r4, 0x1C] - ldr r2, _080E343C @ =gSprites - lsls r0, r3, 4 - adds r0, r3 - lsls r0, 2 - adds r2, r0, r2 - lsls r1, 16 - asrs r1, 24 - ldrh r3, [r2, 0x26] - adds r1, r3 - strh r1, [r2, 0x26] - movs r1, 0x22 - ldrsh r0, [r2, r1] - movs r3, 0x26 - ldrsh r1, [r2, r3] - adds r0, r1 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - blt _080E3408 - strh r5, [r2, 0x24] -_080E3408: - movs r1, 0x26 - ldrsh r0, [r2, r1] - cmp r0, 0 - ble _080E3412 - strh r5, [r2, 0x26] -_080E3412: - movs r3, 0x26 - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _080E34C6 - movs r0, 0x40 - negs r0, r0 - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x76 - bl PlaySE12WithPanning - ldr r1, _080E3440 @ =0xfffff800 - adds r0, r1, 0 - ldrh r2, [r4, 0x1C] - adds r0, r2 - strh r0, [r4, 0x1C] - b _080E3472 - .align 2, 0 -_080E343C: .4byte gSprites -_080E3440: .4byte 0xfffff800 -_080E3444: - ldrh r0, [r4, 0x1C] - subs r0, 0x70 - strh r0, [r4, 0x1C] - lsls r0, 16 - cmp r0, 0 - bge _080E3454 - movs r0, 0 - strh r0, [r4, 0x1C] -_080E3454: - ldr r0, _080E347C @ =gSprites - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrh r2, [r4, 0x1C] - lsls r2, 16 - asrs r2, 24 - ldrh r0, [r1, 0x26] - subs r0, r2 - strh r0, [r1, 0x26] - movs r3, 0x1C - ldrsh r0, [r4, r3] - cmp r0, 0 - bne _080E34C6 -_080E3472: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E34C6 - .align 2, 0 -_080E347C: .4byte gSprites -_080E3480: - ldrh r0, [r4, 0x1C] - adds r0, 0x70 - strh r0, [r4, 0x1C] - ldr r2, _080E34CC @ =gSprites - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - adds r1, r2 - lsls r0, 16 - asrs r0, 24 - ldrh r2, [r1, 0x26] - adds r0, r2 - strh r0, [r1, 0x26] - lsls r0, 16 - cmp r0, 0 - ble _080E34A4 - movs r0, 0 - strh r0, [r1, 0x26] -_080E34A4: - movs r3, 0x26 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _080E34C6 - movs r0, 0x40 - negs r0, r0 - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x76 - bl PlaySE12WithPanning - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080E34C6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E34CC: .4byte gSprites - thumb_func_end sub_80E3374 - - thumb_func_start sub_80E34D0 -sub_80E34D0: @ 80E34D0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080E34F4 @ =gBattleAnimTarget - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E34FC - ldrb r0, [r4] - bl GetBattlerSpriteSubpriority - subs r0, 0x2 - adds r1, r5, 0 - adds r1, 0x43 - strb r0, [r1] - ldr r4, _080E34F8 @ =0x0000ff70 - b _080E350C - .align 2, 0 -_080E34F4: .4byte gBattleAnimTarget -_080E34F8: .4byte 0x0000ff70 -_080E34FC: - ldrb r0, [r4] - bl GetBattlerSpriteSubpriority - adds r0, 0x2 - adds r1, r5, 0 - adds r1, 0x43 - strb r0, [r1] - ldr r4, _080E3528 @ =0x0000ffa0 -_080E350C: - ldr r0, _080E352C @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - strh r4, [r5, 0x26] - ldr r0, _080E3530 @ =sub_80E3534 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E3528: .4byte 0x0000ffa0 -_080E352C: .4byte gBattleAnimTarget -_080E3530: .4byte sub_80E3534 - thumb_func_end sub_80E34D0 - - thumb_func_start sub_80E3534 -sub_80E3534: @ 80E3534 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _080E3542 - b _080E365E -_080E3542: - lsls r0, 2 - ldr r1, _080E354C @ =_080E3550 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E354C: .4byte _080E3550 - .align 2, 0 -_080E3550: - .4byte _080E3564 - .4byte _080E3588 - .4byte _080E35C8 - .4byte _080E35F8 - .4byte _080E3624 -_080E3564: - ldrh r0, [r4, 0x26] - adds r0, 0xA - strh r0, [r4, 0x26] - lsls r0, 16 - cmp r0, 0 - blt _080E365E - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xC6 - bl PlaySE12WithPanning - movs r0, 0 - strh r0, [r4, 0x26] - b _080E361C -_080E3588: - ldrh r1, [r4, 0x30] - adds r1, 0x4 - movs r5, 0 - strh r1, [r4, 0x30] - ldr r2, _080E35C4 @ =gSineTable - movs r3, 0x30 - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 19 - negs r0, r0 - strh r0, [r4, 0x26] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - ble _080E365E - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xC6 - bl PlaySE12WithPanning - strh r5, [r4, 0x30] - strh r5, [r4, 0x26] - b _080E361C - .align 2, 0 -_080E35C4: .4byte gSineTable -_080E35C8: - ldrh r1, [r4, 0x30] - adds r1, 0x6 - movs r3, 0 - strh r1, [r4, 0x30] - ldr r2, _080E35F4 @ =gSineTable - movs r5, 0x30 - ldrsh r0, [r4, r5] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 20 - negs r0, r0 - strh r0, [r4, 0x26] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - ble _080E365E - strh r3, [r4, 0x30] - strh r3, [r4, 0x26] - b _080E361C - .align 2, 0 -_080E35F4: .4byte gSineTable -_080E35F8: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080E365E - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xB9 - bl PlaySE12WithPanning - movs r0, 0 - strh r0, [r4, 0x30] -_080E361C: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080E365E -_080E3624: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080E365E - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x32] - adds r1, 0x1 - strh r1, [r4, 0x32] - movs r0, 0x1 - ands r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - lsls r1, 2 - ldrb r2, [r3] - subs r0, 0x6 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0x7 - bne _080E365E - adds r0, r4, 0 - bl DestroyAnimSprite -_080E365E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80E3534 - - thumb_func_start sub_80E3664 -sub_80E3664: @ 80E3664 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0x1 - bl CloneBattlerSpriteWithBlend - lsls r0, 16 - lsrs r1, r0, 16 - str r1, [sp] - asrs r6, r0, 16 - cmp r6, 0 - blt _080E36A6 - movs r0, 0x1 - bl CloneBattlerSpriteWithBlend - lsls r0, 16 - lsrs r1, r0, 16 - mov r9, r1 - asrs r1, r0, 16 - cmp r1, 0 - bge _080E36B4 - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - ldr r1, _080E36B0 @ =gSprites - adds r0, r1 - bl obj_delete_but_dont_free_vram -_080E36A6: - adds r0, r7, 0 - bl DestroyAnimVisualTask - b _080E37BA - .align 2, 0 -_080E36B0: .4byte gSprites -_080E36B4: - ldr r4, _080E3744 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r5, r0, r4 - ldrh r0, [r5, 0x24] - adds r0, 0x18 - movs r1, 0 - strh r0, [r5, 0x24] - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r6, r0, r4 - ldrh r0, [r6, 0x24] - subs r0, 0x18 - strh r0, [r6, 0x24] - strh r1, [r5, 0x2E] - strh r1, [r6, 0x2E] - strh r1, [r5, 0x30] - strh r1, [r6, 0x30] - strh r1, [r5, 0x32] - strh r1, [r6, 0x32] - movs r0, 0x10 - strh r0, [r5, 0x34] - ldr r0, _080E3748 @ =0x0000fff0 - strh r0, [r6, 0x34] - strh r1, [r5, 0x36] - movs r0, 0x80 - strh r0, [r6, 0x36] - movs r0, 0x18 - strh r0, [r5, 0x38] - strh r0, [r6, 0x38] - strh r7, [r5, 0x3A] - strh r7, [r6, 0x3A] - strh r1, [r5, 0x3C] - strh r1, [r6, 0x3C] - ldr r2, _080E374C @ =gTasks - lsls r3, r7, 2 - adds r0, r3, r7 - lsls r0, 3 - adds r0, r2 - movs r1, 0x2 - strh r1, [r0, 0x8] - ldr r0, _080E3750 @ =gBattleSpritesDataPtr - ldr r1, [r0] - ldr r0, _080E3754 @ =gBattleAnimTarget - ldrb r0, [r0] - ldr r1, [r1] - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - mov r12, r4 - mov r10, r2 - mov r8, r3 - cmp r0, 0 - bne _080E3758 - adds r2, r5, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r2, r6, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - b _080E376E - .align 2, 0 -_080E3744: .4byte gSprites -_080E3748: .4byte 0x0000fff0 -_080E374C: .4byte gTasks -_080E3750: .4byte gBattleSpritesDataPtr -_080E3754: .4byte gBattleAnimTarget -_080E3758: - adds r1, r5, 0 - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - adds r1, r6, 0 - adds r1, 0x3E - ldrb r0, [r1] - orrs r0, r2 - strb r0, [r1] -_080E376E: - mov r1, r9 - lsls r0, r1, 16 - asrs r0, 16 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - mov r0, r12 - adds r4, r2, r0 - ldrb r1, [r4, 0x1] - movs r3, 0xD - negs r3, r3 - adds r0, r3, 0 - ands r0, r1 - strb r0, [r4, 0x1] - ldr r1, [sp] - lsls r0, r1, 16 - asrs r0, 16 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - mov r0, r12 - adds r4, r1, r0 - ldrb r0, [r4, 0x1] - ands r3, r0 - strb r3, [r4, 0x1] - mov r3, r12 - adds r3, 0x1C - adds r2, r3 - ldr r0, _080E37CC @ =sub_80E37FC - str r0, [r2] - adds r1, r3 - str r0, [r1] - mov r1, r8 - adds r0, r1, r7 - lsls r0, 3 - add r0, r10 - ldr r1, _080E37D0 @ =sub_80E37D4 - str r1, [r0] -_080E37BA: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E37CC: .4byte sub_80E37FC -_080E37D0: .4byte sub_80E37D4 - thumb_func_end sub_80E3664 - - thumb_func_start sub_80E37D4 -sub_80E37D4: @ 80E37D4 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080E37F8 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E37F2 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080E37F2: - pop {r0} - bx r0 - .align 2, 0 -_080E37F8: .4byte gTasks - thumb_func_end sub_80E37D4 - - thumb_func_start sub_80E37FC -sub_80E37FC: @ 80E37FC - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E3846 - movs r0, 0 - strh r0, [r4, 0x30] - ldr r0, _080E3870 @ =gBattleSpritesDataPtr - ldr r1, [r0] - ldr r0, _080E3874 @ =gBattleAnimTarget - ldrb r0, [r0] - ldr r1, [r1] - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E3846 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r1, r2, 29 - lsrs r1, 31 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080E3846: - ldrh r0, [r4, 0x34] - ldrh r1, [r4, 0x36] - adds r0, r1 - movs r5, 0 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x36] - movs r2, 0x36 - ldrsh r0, [r4, r2] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080E3878 - cmp r0, 0x1 - beq _080E3890 - b _080E38CE - .align 2, 0 -_080E3870: .4byte gBattleSpritesDataPtr -_080E3874: .4byte gBattleAnimTarget -_080E3878: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - bne _080E38CE - strh r5, [r4, 0x32] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080E38CE -_080E3890: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - cmp r0, 0 - ble _080E38CE - strh r5, [r4, 0x32] - ldrh r0, [r4, 0x38] - subs r0, 0x2 - strh r0, [r4, 0x38] - lsls r0, 16 - cmp r0, 0 - bge _080E38CE - ldr r3, _080E38D4 @ =gTasks - movs r2, 0x3C - ldrsh r1, [r4, r2] - lsls r1, 1 - movs r0, 0x3A - 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 obj_delete_but_dont_free_vram -_080E38CE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E38D4: .4byte gTasks - thumb_func_end sub_80E37FC - - thumb_func_start sub_80E38D8 -sub_80E38D8: @ 80E38D8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r3, _080E3924 @ =gBattleAnimArgs - movs r2, 0 - strh r2, [r3, 0xE] - ldr r1, _080E3928 @ =gAnimFriendship - ldrb r0, [r1] - ldrb r1, [r1] - adds r0, r1, 0 - subs r0, 0x3D - lsls r0, 24 - lsrs r0, 24 - adds r2, r1, 0 - cmp r0, 0x1E - bhi _080E38FC - movs r0, 0x1 - strh r0, [r3, 0xE] -_080E38FC: - adds r0, r2, 0 - subs r0, 0x5C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6C - bhi _080E390C - movs r0, 0x2 - strh r0, [r3, 0xE] -_080E390C: - lsls r0, r1, 24 - lsrs r0, 24 - cmp r0, 0xC8 - bls _080E3918 - movs r0, 0x3 - strh r0, [r3, 0xE] -_080E3918: - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E3924: .4byte gBattleAnimArgs -_080E3928: .4byte gAnimFriendship - thumb_func_end sub_80E38D8 - - thumb_func_start sub_80E392C -sub_80E392C: @ 80E392C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _080E395C @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0x4 - bls _080E3952 - b _080E3E6C -_080E3952: - lsls r0, 2 - ldr r1, _080E3960 @ =_080E3964 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E395C: .4byte gTasks -_080E3960: .4byte _080E3964 - .align 2, 0 -_080E3964: - .4byte _080E3978 - .4byte _080E3A2C - .4byte _080E3BEC - .4byte _080E3D0C - .4byte _080E3D90 -_080E3978: - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080E39C4 @ =gTasks - mov r2, r8 - lsls r4, r2, 2 - adds r0, r4, r2 - lsls r0, 3 - adds r6, r0, r1 - movs r3, 0x80 - lsls r3, 4 - adds r0, r3, 0 - ldrh r1, [r6, 0xA] - adds r0, r1 - strh r0, [r6, 0xA] - ldr r0, _080E39C8 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - mov r9, r4 - cmp r0, 0 - bne _080E39D0 - ldr r2, _080E39CC @ =gSprites - lsls r3, r7, 4 - adds r1, r3, r7 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r6, 0xA] - lsls r0, 16 - asrs r0, 24 - ldrh r4, [r1, 0x24] - adds r0, r4 - strh r0, [r1, 0x24] - b _080E39EA - .align 2, 0 -_080E39C4: .4byte gTasks -_080E39C8: .4byte gBattleAnimAttacker -_080E39CC: .4byte gSprites -_080E39D0: - ldr r3, _080E3A24 @ =gSprites - lsls r4, r7, 4 - adds r2, r4, r7 - lsls r2, 2 - adds r2, r3 - ldrh r1, [r6, 0xA] - lsls r1, 16 - asrs r1, 24 - ldrh r0, [r2, 0x24] - subs r0, r1 - strh r0, [r2, 0x24] - adds r2, r3, 0 - adds r3, r4, 0 -_080E39EA: - ldr r1, _080E3A28 @ =gTasks - mov r0, r9 - add r0, r8 - lsls r0, 3 - adds r4, r0, r1 - ldrb r0, [r4, 0xA] - strh r0, [r4, 0xA] - adds r1, r3, r7 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x24] - ldrh r1, [r1, 0x20] - adds r0, r1 - lsls r0, 16 - movs r1, 0x80 - lsls r1, 14 - adds r0, r1 - movs r1, 0x98 - lsls r1, 17 - cmp r0, r1 - bhi _080E3A16 - b _080E3E6C -_080E3A16: - movs r0, 0 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E3E6C - .align 2, 0 -_080E3A24: .4byte gSprites -_080E3A28: .4byte gTasks -_080E3A2C: - ldr r4, _080E3A90 @ =gBattleAnimAttacker - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E3ACC - ldr r7, _080E3A94 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _080E3A98 @ =gPlayerParty - adds r0, r5 - movs r1, 0 - bl GetMonData - mov r10, r0 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - movs r1, 0x1 - bl GetMonData - mov r9, r0 - ldr r0, _080E3A9C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldrb r2, [r4] - ldr r1, [r0] - lsls r0, r2, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _080E3AA0 - lsls r0, r2, 1 - adds r0, r7 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - b _080E3AA2 - .align 2, 0 -_080E3A90: .4byte gBattleAnimAttacker -_080E3A94: .4byte gBattlerPartyIndexes -_080E3A98: .4byte gPlayerParty -_080E3A9C: .4byte gBattleSpritesDataPtr -_080E3AA0: - ldrh r5, [r1, 0x2] -_080E3AA2: - movs r0, 0x1 - bl GetAnimBattlerSpriteId - ldr r2, _080E3AC8 @ =gSprites - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x43 - ldrb r0, [r1] - adds r0, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - movs r7, 0 - movs r6, 0x88 - lsls r6, 1 - b _080E3B54 - .align 2, 0 -_080E3AC8: .4byte gSprites -_080E3ACC: - ldr r7, _080E3B24 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _080E3B28 @ =gEnemyParty - adds r0, r5 - movs r1, 0 - bl GetMonData - mov r10, r0 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - movs r1, 0x1 - bl GetMonData - mov r9, r0 - ldr r0, _080E3B2C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldrb r2, [r4] - ldr r1, [r0] - lsls r0, r2, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _080E3B30 - lsls r0, r2, 1 - adds r0, r7 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - b _080E3B32 - .align 2, 0 -_080E3B24: .4byte gBattlerPartyIndexes -_080E3B28: .4byte gEnemyParty -_080E3B2C: .4byte gBattleSpritesDataPtr -_080E3B30: - ldrh r5, [r1, 0x2] -_080E3B32: - movs r0, 0x1 - bl GetAnimBattlerSpriteId - ldr r2, _080E3BD0 @ =gSprites - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x43 - ldrb r0, [r1] - subs r0, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - movs r7, 0x1 - ldr r6, _080E3BD4 @ =0x0000ffe0 -_080E3B54: - ldr r0, _080E3BD8 @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - lsls r3, r6, 16 - asrs r3, 16 - str r0, [sp] - str r4, [sp, 0x4] - mov r2, r10 - str r2, [sp, 0x8] - mov r4, r9 - str r4, [sp, 0xC] - ldr r4, _080E3BDC @ =gBattleAnimAttacker - ldrb r0, [r4] - str r0, [sp, 0x10] - movs r0, 0 - str r0, [sp, 0x14] - adds r0, r5, 0 - adds r1, r7, 0 - movs r2, 0 - bl sub_80768D0 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080E3BE0 @ =gBattleSpritesDataPtr - ldr r1, [r0] - ldrb r0, [r4] - ldr r1, [r1] - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x2] - cmp r0, 0 - beq _080E3BBE - ldr r1, _080E3BD0 @ =gSprites - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - lsls r0, 4 - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - orrs r0, r1 - ldr r3, _080E3BE4 @ =0x00007fff - movs r1, 0x10 - movs r2, 0x6 - bl BlendPalette -_080E3BBE: - ldr r0, _080E3BE8 @ =gTasks - mov r3, r8 - lsls r1, r3, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - strh r5, [r1, 0x26] - b _080E3D82 - .align 2, 0 -_080E3BD0: .4byte gSprites -_080E3BD4: .4byte 0x0000ffe0 -_080E3BD8: .4byte gBattleAnimTarget -_080E3BDC: .4byte gBattleAnimAttacker -_080E3BE0: .4byte gBattleSpritesDataPtr -_080E3BE4: .4byte 0x00007fff -_080E3BE8: .4byte gTasks -_080E3BEC: - ldr r1, _080E3C38 @ =gTasks - mov r0, r8 - lsls r4, r0, 2 - adds r0, r4, r0 - lsls r0, 3 - adds r6, r0, r1 - ldrh r0, [r6, 0x26] - lsls r0, 24 - lsrs r5, r0, 24 - movs r1, 0x80 - lsls r1, 4 - adds r0, r1, 0 - ldrh r2, [r6, 0xA] - adds r0, r2 - strh r0, [r6, 0xA] - ldr r0, _080E3C3C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - mov r9, r4 - cmp r0, 0 - bne _080E3C44 - ldr r3, _080E3C40 @ =gSprites - lsls r4, r5, 4 - adds r2, r4, r5 - lsls r2, 2 - adds r2, r3 - ldrh r1, [r6, 0xA] - lsls r1, 16 - asrs r1, 24 - ldrh r0, [r2, 0x24] - subs r0, r1 - strh r0, [r2, 0x24] - adds r2, r3, 0 - adds r3, r4, 0 - b _080E3C5A - .align 2, 0 -_080E3C38: .4byte gTasks -_080E3C3C: .4byte gBattleAnimAttacker -_080E3C40: .4byte gSprites -_080E3C44: - ldr r2, _080E3CA8 @ =gSprites - lsls r3, r5, 4 - adds r1, r3, r5 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r6, 0xA] - lsls r0, 16 - asrs r0, 24 - ldrh r4, [r1, 0x24] - adds r0, r4 - strh r0, [r1, 0x24] -_080E3C5A: - ldr r1, _080E3CAC @ =gTasks - mov r0, r9 - add r0, r8 - lsls r0, 3 - adds r6, r0, r1 - ldrb r0, [r6, 0xA] - strh r0, [r6, 0xA] - adds r1, r3, r5 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x24] - ldrh r1, [r1, 0x20] - adds r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 - movs r1, 0x24 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080E3CDA - ldr r0, _080E3CB0 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E3CB8 - lsls r4, r5, 16 - asrs r4, 16 - ldr r0, _080E3CB4 @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bge _080E3CDA - b _080E3CCE - .align 2, 0 -_080E3CA8: .4byte gSprites -_080E3CAC: .4byte gTasks -_080E3CB0: .4byte gBattleAnimAttacker -_080E3CB4: .4byte gBattleAnimTarget -_080E3CB8: - lsls r4, r5, 16 - asrs r4, 16 - ldr r0, _080E3CFC @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - ble _080E3CDA -_080E3CCE: - ldrh r0, [r6, 0x24] - adds r0, 0x1 - strh r0, [r6, 0x24] - ldr r1, _080E3D00 @ =gBattleAnimArgs - ldr r0, _080E3D04 @ =0x0000ffff - strh r0, [r1, 0xE] -_080E3CDA: - lsls r0, r5, 16 - movs r2, 0x80 - lsls r2, 14 - adds r0, r2 - movs r1, 0x98 - lsls r1, 17 - cmp r0, r1 - bhi _080E3CEC - b _080E3E6C -_080E3CEC: - ldr r0, _080E3D08 @ =gTasks - mov r1, r9 - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r0, 0 - strh r0, [r1, 0xA] - b _080E3D82 - .align 2, 0 -_080E3CFC: .4byte gBattleAnimTarget -_080E3D00: .4byte gBattleAnimArgs -_080E3D04: .4byte 0x0000ffff -_080E3D08: .4byte gTasks -_080E3D0C: - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080E3D58 @ =gTasks - mov r3, r8 - lsls r4, r3, 2 - adds r0, r4, r3 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x26] - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - ldr r5, _080E3D5C @ =gSprites - adds r0, r5 - bl DestroySpriteAndFreeResources_ - ldr r0, _080E3D60 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - mov r9, r4 - cmp r0, 0 - bne _080E3D64 - lsls r1, r7, 4 - adds r1, r7 - lsls r1, 2 - adds r1, r5 - ldrh r0, [r1, 0x20] - negs r0, r0 - subs r0, 0x20 - strh r0, [r1, 0x24] - b _080E3D78 - .align 2, 0 -_080E3D58: .4byte gTasks -_080E3D5C: .4byte gSprites -_080E3D60: .4byte gBattleAnimAttacker -_080E3D64: - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r0, r5 - ldrh r2, [r0, 0x20] - movs r4, 0x88 - lsls r4, 1 - adds r1, r4, 0 - subs r1, r2 - strh r1, [r0, 0x24] -_080E3D78: - ldr r0, _080E3D8C @ =gTasks - mov r1, r9 - add r1, r8 - lsls r1, 3 - adds r1, r0 -_080E3D82: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080E3E6C - .align 2, 0 -_080E3D8C: .4byte gTasks -_080E3D90: - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080E3E04 @ =gTasks - mov r0, r8 - lsls r4, r0, 2 - adds r0, r4, r0 - lsls r0, 3 - adds r2, r0, r1 - movs r1, 0x80 - lsls r1, 4 - adds r0, r1, 0 - ldrh r3, [r2, 0xA] - adds r0, r3 - strh r0, [r2, 0xA] - ldr r0, _080E3E08 @ =gBattleAnimAttacker - mov r10, r0 - ldrb r0, [r0] - str r2, [sp, 0x18] - bl GetBattlerSide - lsls r0, 24 - mov r9, r4 - ldr r2, [sp, 0x18] - cmp r0, 0 - bne _080E3E10 - ldr r1, _080E3E0C @ =gSprites - lsls r5, r7, 4 - adds r0, r5, r7 - lsls r0, 2 - adds r6, r0, r1 - ldrh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r6, 0x24] - adds r0, r1 - strh r0, [r6, 0x24] - movs r2, 0x24 - ldrsh r4, [r6, r2] - movs r3, 0x20 - ldrsh r0, [r6, r3] - adds r4, r0 - mov r1, r10 - ldrb r0, [r1] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r3, r5, 0 - cmp r4, r0 - blt _080E3E48 - movs r2, 0 - strh r2, [r6, 0x24] - b _080E3E48 - .align 2, 0 -_080E3E04: .4byte gTasks -_080E3E08: .4byte gBattleAnimAttacker -_080E3E0C: .4byte gSprites -_080E3E10: - ldr r1, _080E3E7C @ =gSprites - lsls r5, r7, 4 - adds r0, r5, r7 - lsls r0, 2 - adds r6, r0, r1 - ldrh r1, [r2, 0xA] - lsls r1, 16 - asrs r1, 24 - ldrh r0, [r6, 0x24] - subs r0, r1 - strh r0, [r6, 0x24] - movs r3, 0x24 - ldrsh r4, [r6, r3] - movs r1, 0x20 - ldrsh r0, [r6, r1] - adds r4, r0 - mov r2, r10 - ldrb r0, [r2] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r3, r5, 0 - cmp r4, r0 - bgt _080E3E48 - movs r4, 0 - strh r4, [r6, 0x24] -_080E3E48: - ldr r1, _080E3E80 @ =gTasks - mov r0, r9 - add r0, r8 - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0, 0xA] - strh r1, [r0, 0xA] - ldr r1, _080E3E7C @ =gSprites - adds r0, r3, r7 - lsls r0, 2 - adds r0, r1 - movs r1, 0x24 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080E3E6C - mov r0, r8 - bl DestroyAnimVisualTask -_080E3E6C: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E3E7C: .4byte gSprites -_080E3E80: .4byte gTasks - thumb_func_end sub_80E392C - - thumb_func_start sub_80E3E84 -sub_80E3E84: @ 80E3E84 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080E3E96 - cmp r0, 0x1 - beq _080E3F36 - b _080E3FB8 -_080E3E96: - ldr r0, _080E3F14 @ =gBattleAnimArgs - movs r2, 0xE - ldrsh r1, [r0, r2] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080E3F28 - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x73 - bl PlaySE12WithPanning - ldr r0, _080E3F18 @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - strh r0, [r4, 0x22] - ldr r0, _080E3F1C @ =0x0000ffe0 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, _080E3F20 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E3FB8 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - ldr r2, _080E3F24 @ =gSprites - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x43 - ldrb r0, [r1] - subs r0, 0x1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - b _080E3FB8 - .align 2, 0 -_080E3F14: .4byte gBattleAnimArgs -_080E3F18: .4byte gBattleAnimTarget -_080E3F1C: .4byte 0x0000ffe0 -_080E3F20: .4byte gBattleAnimAttacker -_080E3F24: .4byte gSprites -_080E3F28: - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _080E3FB8 -_080E3F36: - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r2, 0x2E - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r2, [r4, 0x30] - adds r0, r2, 0x5 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7F - ble _080E3F6A - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - adds r0, r2, 0 - subs r0, 0x7A - strh r0, [r4, 0x30] -_080E3F6A: - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - ldr r0, _080E3F94 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E3F98 - ldrh r2, [r4, 0x32] - lsls r1, r2, 16 - asrs r1, 24 - ldrh r0, [r4, 0x24] - subs r0, r1 - strh r0, [r4, 0x24] - adds r1, r2, 0 - b _080E3FA4 - .align 2, 0 -_080E3F94: .4byte gBattleAnimAttacker -_080E3F98: - ldrh r1, [r4, 0x32] - lsls r0, r1, 16 - asrs r0, 24 - ldrh r2, [r4, 0x24] - adds r0, r2 - strh r0, [r4, 0x24] -_080E3FA4: - movs r0, 0xFF - ands r0, r1 - strh r0, [r4, 0x32] - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x2 - bne _080E3FB8 - adds r0, r4, 0 - bl DestroyAnimSprite -_080E3FB8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E3E84 - - thumb_func_start sub_80E3FC0 -sub_80E3FC0: @ 80E3FC0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080E3FE8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x26 - ldrsh r0, [r0, r2] - adds r3, r1, 0 - cmp r0, 0x4 - bls _080E3FDC - b _080E412E -_080E3FDC: - lsls r0, 2 - ldr r1, _080E3FEC @ =_080E3FF0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E3FE8: .4byte gTasks -_080E3FEC: .4byte _080E3FF0 - .align 2, 0 -_080E3FF0: - .4byte _080E4004 - .4byte _080E4054 - .4byte _080E40B0 - .4byte _080E40C8 - .4byte _080E412E -_080E4004: - ldr r0, _080E4048 @ =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r0, _080E404C @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r2, r0, 0 - ldr r1, _080E4050 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r1 - movs r0, 0x6 - strh r0, [r1, 0x8] - cmp r5, r2 - ble _080E403A - negs r0, r0 - strh r0, [r1, 0x8] -_080E403A: - strh r5, [r1, 0xA] - strh r2, [r1, 0xC] - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _080E414C - .align 2, 0 -_080E4048: .4byte gBattleAnimAttacker -_080E404C: .4byte gBattleAnimTarget -_080E4050: .4byte gTasks -_080E4054: - ldr r1, _080E4090 @ =gBattlerSpriteIds - ldr r0, _080E4094 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r2, [r0] - ldr r1, _080E4098 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r1 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r3 - ldrh r0, [r2, 0x8] - ldrh r3, [r1, 0x24] - adds r0, r3 - strh r0, [r1, 0x24] - movs r3, 0x8 - ldrsh r0, [r2, r3] - cmp r0, 0 - ble _080E409C - movs r3, 0x20 - ldrsh r0, [r1, r3] - movs r3, 0x24 - ldrsh r1, [r1, r3] - adds r0, r1 - movs r3, 0xC - ldrsh r1, [r2, r3] - b _080E4122 - .align 2, 0 -_080E4090: .4byte gBattlerSpriteIds -_080E4094: .4byte gBattleAnimAttacker -_080E4098: .4byte gSprites -_080E409C: - movs r3, 0x20 - ldrsh r0, [r1, r3] - movs r3, 0x24 - ldrsh r1, [r1, r3] - adds r0, r1 - movs r3, 0xC - ldrsh r1, [r2, r3] - cmp r0, r1 - bgt _080E414C - b _080E4126 -_080E40B0: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r3 - movs r2, 0x8 - ldrsh r1, [r0, r2] - negs r1, r1 - strh r1, [r0, 0x8] - ldrh r1, [r0, 0x26] - adds r1, 0x1 - strh r1, [r0, 0x26] - b _080E414C -_080E40C8: - ldr r1, _080E4108 @ =gBattlerSpriteIds - ldr r0, _080E410C @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r2, [r0] - ldr r1, _080E4110 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r1 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r3 - ldrh r0, [r2, 0x8] - ldrh r3, [r1, 0x24] - adds r0, r3 - strh r0, [r1, 0x24] - movs r3, 0x8 - ldrsh r0, [r2, r3] - cmp r0, 0 - bge _080E4114 - movs r3, 0x20 - ldrsh r0, [r1, r3] - movs r3, 0x24 - ldrsh r1, [r1, r3] - adds r0, r1 - movs r3, 0xA - ldrsh r1, [r2, r3] - cmp r0, r1 - bgt _080E414C - b _080E4126 - .align 2, 0 -_080E4108: .4byte gBattlerSpriteIds -_080E410C: .4byte gBattleAnimAttacker -_080E4110: .4byte gSprites -_080E4114: - movs r3, 0x20 - ldrsh r0, [r1, r3] - movs r3, 0x24 - ldrsh r1, [r1, r3] - adds r0, r1 - movs r3, 0xA - ldrsh r1, [r2, r3] -_080E4122: - cmp r0, r1 - blt _080E414C -_080E4126: - ldrh r0, [r2, 0x26] - adds r0, 0x1 - strh r0, [r2, 0x26] - b _080E414C -_080E412E: - ldr r1, _080E4154 @ =gBattlerSpriteIds - ldr r0, _080E4158 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r2, [r0] - ldr r1, _080E415C @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x24] - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080E414C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E4154: .4byte gBattlerSpriteIds -_080E4158: .4byte gBattleAnimAttacker -_080E415C: .4byte gSprites - thumb_func_end sub_80E3FC0 - - thumb_func_start sub_80E4160 -sub_80E4160: @ 80E4160 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080E41C8 @ =gTasks - adds r4, r1, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r4, 0xE] - ldr r0, _080E41CC @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - movs r2, 0x1 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - bne _080E4194 - movs r1, 0x1 -_080E4194: - strh r1, [r4, 0x10] - ldr r2, _080E41D0 @ =gSprites - movs r0, 0xE - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x22] - strh r0, [r4, 0x14] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x20] - strh r0, [r4, 0x12] - strh r5, [r4, 0x1A] - strh r5, [r4, 0x1E] - movs r0, 0x1 - strh r0, [r4, 0x1C] - strh r5, [r4, 0x20] - ldr r0, _080E41D4 @ =sub_80E41D8 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E41C8: .4byte gTasks -_080E41CC: .4byte gBattleAnimAttacker -_080E41D0: .4byte gSprites -_080E41D4: .4byte sub_80E41D8 - thumb_func_end sub_80E4160 - - thumb_func_start sub_80E41D8 -sub_80E41D8: @ 80E41D8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080E41FC @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080E4280 - cmp r0, 0x1 - bgt _080E4200 - cmp r0, 0 - beq _080E4206 - b _080E42D6 - .align 2, 0 -_080E41FC: .4byte gTasks -_080E4200: - cmp r0, 0x2 - beq _080E42D0 - b _080E42D6 -_080E4206: - ldrh r0, [r4, 0x1E] - adds r0, 0x8 - movs r2, 0xFF - ands r0, r2 - strh r0, [r4, 0x1E] - ldr r5, _080E4278 @ =gSprites - movs r6, 0xE - ldrsh r0, [r4, r6] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldr r3, _080E427C @ =gSineTable - movs r6, 0x1E - ldrsh r0, [r4, r6] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 21 - strh r0, [r1, 0x24] - ldrh r0, [r4, 0x1A] - adds r0, 0x2 - ands r0, r2 - strh r0, [r4, 0x1A] - movs r1, 0xE - ldrsh r0, [r4, r1] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r5 - movs r6, 0x1A - ldrsh r0, [r4, r6] - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 19 - ldrh r1, [r4, 0x10] - muls r0, r1 - ldrh r1, [r4, 0x12] - adds r0, r1 - strh r0, [r2, 0x20] - movs r6, 0x1A - ldrsh r0, [r4, r6] - cmp r0, 0 - bne _080E42D6 - movs r0, 0xE - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r4, 0x12] - strh r1, [r0, 0x20] - b _080E42C0 - .align 2, 0 -_080E4278: .4byte gSprites -_080E427C: .4byte gSineTable -_080E4280: - ldrh r0, [r4, 0x1E] - adds r0, 0x8 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x1E] - ldr r3, _080E42C8 @ =gSprites - movs r1, 0xE - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldr r2, _080E42CC @ =gSineTable - movs r5, 0x1E - ldrsh r0, [r4, r5] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 21 - strh r0, [r1, 0x24] - movs r6, 0x1E - ldrsh r2, [r4, r6] - cmp r2, 0 - bne _080E42D6 - movs r1, 0xE - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - strh r2, [r1, 0x24] -_080E42C0: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080E42D6 - .align 2, 0 -_080E42C8: .4byte gSprites -_080E42CC: .4byte gSineTable -_080E42D0: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080E42D6: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80E41D8 - - thumb_func_start sub_80E42DC -sub_80E42DC: @ 80E42DC - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080E4330 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - ldrh r0, [r4, 0x2E] - ldrh r1, [r4, 0x30] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x14 - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x14 - bl Sin - strh r0, [r4, 0x26] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080E4322 - adds r0, r4, 0 - bl DestroyAnimSprite -_080E4322: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E4330: .4byte gBattleAnimTarget - thumb_func_end sub_80E42DC - - thumb_func_start sub_80E4334 -sub_80E4334: @ 80E4334 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080E436C @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E4378 - ldr r2, _080E4370 @ =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _080E4374 @ =0x0000fff5 - strh r0, [r4, 0x2E] - movs r0, 0xC0 - strh r0, [r4, 0x30] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _080E4392 - .align 2, 0 -_080E436C: .4byte gBattleAnimTarget -_080E4370: .4byte gBattleAnimArgs -_080E4374: .4byte 0x0000fff5 -_080E4378: - movs r0, 0xB - strh r0, [r4, 0x2E] - movs r0, 0xC0 - strh r0, [r4, 0x30] - ldr r1, _080E439C @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] -_080E4392: - ldr r0, _080E43A0 @ =sub_80E42DC - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E439C: .4byte gBattleAnimArgs -_080E43A0: .4byte sub_80E42DC - thumb_func_end sub_80E4334 - - thumb_func_start sub_80E43A4 -sub_80E43A4: @ 80E43A4 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080E43E8 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoordAttr - strh r0, [r5, 0x22] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - bgt _080E43CE - movs r0, 0x10 - strh r0, [r5, 0x22] -_080E43CE: - movs r0, 0 - strh r0, [r5, 0x3A] - movs r1, 0x10 - strh r1, [r5, 0x3C] - ldr r0, _080E43EC @ =sub_80E43F0 - str r0, [r5, 0x1C] - lsls r1, 8 - movs r0, 0x52 - bl SetGpuReg - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E43E8: .4byte gBattleAnimAttacker -_080E43EC: .4byte sub_80E43F0 - thumb_func_end sub_80E43A4 - - thumb_func_start sub_80E43F0 -sub_80E43F0: @ 80E43F0 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x32 - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _080E4468 - cmp r1, 0x1 - bgt _080E4406 - cmp r1, 0 - beq _080E4410 - b _080E44E4 -_080E4406: - cmp r1, 0x2 - beq _080E447E - cmp r1, 0x3 - beq _080E44DE - b _080E44E4 -_080E4410: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E44E4 - strh r1, [r4, 0x2E] - ldrh r1, [r4, 0x30] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E443A - ldrh r2, [r4, 0x3A] - movs r3, 0x3A - ldrsh r0, [r4, r3] - cmp r0, 0xF - bgt _080E4448 - adds r0, r2, 0x1 - strh r0, [r4, 0x3A] - b _080E4448 -_080E443A: - ldrh r2, [r4, 0x3C] - movs r3, 0x3C - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080E4448 - subs r0, r2, 0x1 - strh r0, [r4, 0x3C] -_080E4448: - adds r0, r1, 0x1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x3C] - lsls r1, 8 - ldrh r0, [r4, 0x3A] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080E44E4 - b _080E44D6 -_080E4468: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _080E44E4 - strh r1, [r4, 0x2E] - strh r1, [r4, 0x30] - b _080E44D6 -_080E447E: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080E44E4 - movs r0, 0 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x30] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080E44AA - ldrh r2, [r4, 0x3A] - movs r3, 0x3A - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080E44B8 - subs r0, r2, 0x1 - strh r0, [r4, 0x3A] - b _080E44B8 -_080E44AA: - ldrh r2, [r4, 0x3C] - movs r3, 0x3C - ldrsh r0, [r4, r3] - cmp r0, 0xF - bgt _080E44B8 - adds r0, r2, 0x1 - strh r0, [r4, 0x3C] -_080E44B8: - adds r0, r1, 0x1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x3C] - lsls r1, 8 - ldrh r0, [r4, 0x3A] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080E44E4 -_080E44D6: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - b _080E44E4 -_080E44DE: - adds r0, r4, 0 - bl DestroySpriteAndMatrix -_080E44E4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E43F0 - - thumb_func_start sub_80E44EC -sub_80E44EC: @ 80E44EC - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, _080E4508 @ =gBattleAnimArgs - movs r0, 0 - strh r0, [r2, 0xE] - ldr r0, _080E450C @ =gWeatherMoveAnim - ldrh r1, [r0] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _080E4510 - movs r0, 0x1 - b _080E4532 - .align 2, 0 -_080E4508: .4byte gBattleAnimArgs -_080E450C: .4byte gWeatherMoveAnim -_080E4510: - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - beq _080E451C - movs r0, 0x2 - b _080E4532 -_080E451C: - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _080E4528 - movs r0, 0x3 - b _080E4532 -_080E4528: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080E4534 - movs r0, 0x4 -_080E4532: - strh r0, [r2, 0xE] -_080E4534: - adds r0, r3, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - thumb_func_end sub_80E44EC - - thumb_func_start sub_80E4540 -sub_80E4540: @ 80E4540 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080E4578 @ =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - ldr r0, _080E457C @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r4, 0x26] - ldr r2, _080E4580 @ =gUnknown_83FF7A8 - adds r0, r4, 0 - bl PrepareAffineAnimInTaskData - ldr r0, _080E4584 @ =sub_80E4588 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E4578: .4byte gTasks -_080E457C: .4byte gBattleAnimArgs -_080E4580: .4byte gUnknown_83FF7A8 -_080E4584: .4byte sub_80E4588 - thumb_func_end sub_80E4540 - - thumb_func_start sub_80E4588 -sub_80E4588: @ 80E4588 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r2, _080E45E0 @ =gTasks - adds r3, r0, r2 - ldrh r0, [r3, 0x8] - adds r1, r0, 0x1 - movs r5, 0 - strh r1, [r3, 0x8] - subs r0, 0x10 - lsls r0, 16 - lsrs r0, 16 - adds r6, r2, 0 - cmp r0, 0x16 - bhi _080E45EC - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080E45FC - strh r5, [r3, 0xA] - ldrh r0, [r3, 0xC] - adds r0, 0x1 - strh r0, [r3, 0xC] - movs r5, 0x1 - ands r0, r5 - cmp r0, 0 - bne _080E45EC - ldr r2, _080E45E4 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _080E45E8 @ =0x0000ffff - strh r1, [r0, 0x24] - b _080E45FC - .align 2, 0 -_080E45E0: .4byte gTasks -_080E45E4: .4byte gSprites -_080E45E8: .4byte 0x0000ffff -_080E45EC: - ldr r2, _080E461C @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r5, [r0, 0x24] -_080E45FC: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r6 - bl RunAffineAnimFromTaskData - lsls r0, 24 - cmp r0, 0 - bne _080E4614 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080E4614: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E461C: .4byte gSprites - thumb_func_end sub_80E4588 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_special.s b/asm/battle_anim_special.s deleted file mode 100644 index e49ba538c..000000000 --- a/asm/battle_anim_special.s +++ /dev/null @@ -1,6299 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80EEC0C -sub_80EEC0C: @ 80EEC0C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x10] - ldr r0, _080EEDB4 @ =gBattleAnimAttacker - ldrb r4, [r0] - ldr r0, _080EEDB8 @ =gBattle_WIN0H - movs r1, 0 - strh r1, [r0] - ldr r0, _080EEDBC @ =gBattle_WIN0V - strh r1, [r0] - ldr r1, _080EEDC0 @ =0x00003f3f - movs r0, 0x48 - bl SetGpuReg - ldr r1, _080EEDC4 @ =0x00003f3d - movs r0, 0x4A - bl SetGpuReg - movs r1, 0x80 - lsls r1, 8 - movs r0, 0 - bl SetGpuRegBits - ldr r1, _080EEDC8 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x1 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl SetAnimBgAttribute - ldr r0, _080EEDCC @ =gHealthboxSpriteIds - adds r4, r0 - ldrb r0, [r4] - ldr r1, _080EEDD0 @ =gSprites - mov r9, r1 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - add r4, r9 - ldrb r7, [r4, 0x6] - ldrh r6, [r4, 0x38] - lsls r6, 24 - lsrs r6, 24 - ldr r0, _080EEDD4 @ =SpriteCallbackDummy - bl CreateInvisibleSpriteWithCallback - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x14] - ldr r0, _080EEDD4 @ =SpriteCallbackDummy - bl CreateInvisibleSpriteWithCallback - mov r10, r0 - mov r2, r10 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - ldrb r1, [r4, 0x5] - movs r3, 0xD - negs r3, r3 - adds r0, r3, 0 - ands r0, r1 - movs r1, 0x4 - mov r8, r1 - mov r2, r8 - orrs r0, r2 - strb r0, [r4, 0x5] - lsls r5, r7, 4 - adds r5, r7 - lsls r5, 2 - add r5, r9 - ldrb r1, [r5, 0x5] - adds r0, r3, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - add r1, r9 - ldrb r2, [r1, 0x5] - adds r0, r3, 0 - ands r0, r2 - mov r2, r8 - orrs r0, r2 - strb r0, [r1, 0x5] - ldr r0, [sp, 0x14] - lsls r6, r0, 4 - adds r6, r0 - lsls r6, 2 - mov r1, r9 - adds r7, r6, r1 - adds r0, r7, 0 - adds r1, r4, 0 - movs r2, 0x44 - str r3, [sp, 0x18] - bl memcpy - mov r2, r10 - lsls r4, r2, 4 - add r4, r10 - lsls r4, 2 - adds r0, r4, 0 - add r0, r9 - mov r8, r0 - adds r1, r5, 0 - movs r2, 0x44 - bl memcpy - ldrb r1, [r7, 0x1] - ldr r3, [sp, 0x18] - adds r0, r3, 0 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r7, 0x1] - mov r2, r8 - ldrb r0, [r2, 0x1] - ands r3, r0 - orrs r3, r1 - strb r3, [r2, 0x1] - movs r0, 0x1C - add r9, r0 - add r6, r9 - ldr r1, _080EEDD4 @ =SpriteCallbackDummy - str r1, [r6] - add r4, r9 - str r1, [r4] - mov r0, sp - bl sub_80752A0 - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080EEDD8 @ =gFile_graphics_battle_anims_masks_unknown_D2EC24_tilemap - bl AnimLoadCompressedBgTilemap - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, _080EEDDC @ =gFile_graphics_battle_anims_masks_unknown_D2EC24_sheet - mov r2, sp - ldrh r2, [r2, 0xA] - bl AnimLoadCompressedBgGfx - ldr r0, _080EEDE0 @ =gFile_graphics_battle_anims_masks_cure_bubbles_palette - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r1, _080EEDE4 @ =gBattle_BG1_X - ldrh r0, [r7, 0x20] - negs r0, r0 - adds r0, 0x20 - strh r0, [r1] - ldr r1, _080EEDE8 @ =gBattle_BG1_Y - ldrh r0, [r7, 0x22] - negs r0, r0 - subs r0, 0x20 - strh r0, [r1] - ldr r1, _080EEDEC @ =gTasks - ldr r2, [sp, 0x10] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0xA0 - lsls r1, 2 - strh r1, [r0, 0xA] - mov r1, sp - ldrh r1, [r1, 0x14] - strh r1, [r0, 0x8] - mov r2, r10 - strh r2, [r0, 0xC] - ldr r1, _080EEDF0 @ =sub_80EEDF4 - str r1, [r0] - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EEDB4: .4byte gBattleAnimAttacker -_080EEDB8: .4byte gBattle_WIN0H -_080EEDBC: .4byte gBattle_WIN0V -_080EEDC0: .4byte 0x00003f3f -_080EEDC4: .4byte 0x00003f3d -_080EEDC8: .4byte 0x00003f42 -_080EEDCC: .4byte gHealthboxSpriteIds -_080EEDD0: .4byte gSprites -_080EEDD4: .4byte SpriteCallbackDummy -_080EEDD8: .4byte gFile_graphics_battle_anims_masks_unknown_D2EC24_tilemap -_080EEDDC: .4byte gFile_graphics_battle_anims_masks_unknown_D2EC24_sheet -_080EEDE0: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_palette -_080EEDE4: .4byte gBattle_BG1_X -_080EEDE8: .4byte gBattle_BG1_Y -_080EEDEC: .4byte gTasks -_080EEDF0: .4byte sub_80EEDF4 - thumb_func_end sub_80EEC0C - - thumb_func_start sub_80EEDF4 -sub_80EEDF4: @ 80EEDF4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _080EEE3C @ =gBattleAnimAttacker - ldrb r0, [r0] - mov r8, r0 - ldr r1, _080EEE40 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r5, r0, r1 - ldrh r1, [r5, 0xA] - ldrh r0, [r5, 0x22] - adds r1, r0 - movs r3, 0 - strh r1, [r5, 0x22] - ldr r2, _080EEE44 @ =gBattle_BG1_Y - lsls r0, r1, 16 - lsrs r0, 24 - ldrh r4, [r2] - adds r0, r4 - strh r0, [r2] - movs r0, 0xFF - ands r1, r0 - strh r1, [r5, 0x22] - movs r1, 0x26 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080EEE84 - cmp r0, 0x1 - bgt _080EEE48 - cmp r0, 0 - beq _080EEE4E - b _080EEFA8 - .align 2, 0 -_080EEE3C: .4byte gBattleAnimAttacker -_080EEE40: .4byte gTasks -_080EEE44: .4byte gBattle_BG1_Y -_080EEE48: - cmp r0, 0x2 - beq _080EEE9C - b _080EEFA8 -_080EEE4E: - ldrh r0, [r5, 0x1E] - adds r1, r0, 0x1 - strh r1, [r5, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bgt _080EEE5E - b _080EEFA8 -_080EEE5E: - strh r3, [r5, 0x1E] - ldrh r1, [r5, 0x20] - adds r1, 0x1 - strh r1, [r5, 0x20] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r2, 0x20 - ldrsh r0, [r5, r2] - cmp r0, 0x8 - beq _080EEE82 - b _080EEFA8 -_080EEE82: - b _080EEE94 -_080EEE84: - ldrh r0, [r5, 0x1C] - adds r0, 0x1 - strh r0, [r5, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - beq _080EEE94 - b _080EEFA8 -_080EEE94: - ldrh r0, [r5, 0x26] - adds r0, 0x1 - strh r0, [r5, 0x26] - b _080EEFA8 -_080EEE9C: - ldrh r0, [r5, 0x1E] - adds r1, r0, 0x1 - strh r1, [r5, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080EEFA8 - strh r3, [r5, 0x1E] - ldrh r1, [r5, 0x20] - subs r1, 0x1 - strh r1, [r5, 0x20] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x20 - ldrsh r4, [r5, r0] - cmp r4, 0 - bne _080EEFA8 - movs r0, 0 - bl sub_8073128 - ldr r0, _080EEFB4 @ =gBattle_WIN0H - strh r4, [r0] - ldr r0, _080EEFB8 @ =gBattle_WIN0V - strh r4, [r0] - ldr r4, _080EEFBC @ =0x00003f3f - movs r0, 0x48 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x4A - adds r1, r4, 0 - bl SetGpuReg - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080EEF00 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_080EEF00: - movs r0, 0 - bl GetGpuReg - adds r1, r0, 0 - movs r2, 0x80 - lsls r2, 8 - adds r0, r2, 0 - eors r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r4, 0x8 - ldrsh r1, [r5, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r6, _080EEFC0 @ =gSprites - adds r0, r6 - bl DestroySprite - movs r0, 0xC - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl DestroySprite - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl SetAnimBgAttribute - ldr r0, _080EEFC4 @ =gHealthboxSpriteIds - add r0, r8 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r2, [r1, 0x6] - mov r8, r2 - ldrh r4, [r1, 0x38] - lsls r4, 24 - lsrs r4, 24 - ldrb r3, [r1, 0x5] - movs r2, 0xD - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - movs r5, 0x4 - orrs r0, r5 - strb r0, [r1, 0x5] - mov r0, r8 - lsls r1, r0, 4 - add r1, r8 - lsls r1, 2 - adds r1, r6 - ldrb r3, [r1, 0x5] - adds r0, r2, 0 - ands r0, r3 - orrs r0, r5 - strb r0, [r1, 0x5] - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0, 0x5] - ands r2, r1 - orrs r2, r5 - strb r2, [r0, 0x5] - adds r0, r7, 0 - bl DestroyAnimVisualTask -_080EEFA8: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EEFB4: .4byte gBattle_WIN0H -_080EEFB8: .4byte gBattle_WIN0V -_080EEFBC: .4byte 0x00003f3f -_080EEFC0: .4byte gSprites -_080EEFC4: .4byte gHealthboxSpriteIds - thumb_func_end sub_80EEDF4 - - thumb_func_start sub_80EEFC8 -sub_80EEFC8: @ 80EEFC8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r9, r0 - adds r7, r1, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _080EF0A0 @ =gHealthboxSpriteIds - adds r2, r0 - ldrb r0, [r2] - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - ldr r0, _080EF0A4 @ =gSprites - adds r5, r0 - ldrb r1, [r5, 0x6] - mov r10, r1 - ldrh r4, [r5, 0x38] - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080EF0A8 @ =0x0000d709 - bl AllocSpritePalette - mov r2, r9 - strb r0, [r2] - ldr r0, _080EF0AC @ =0x0000d70a - bl AllocSpritePalette - strb r0, [r7] - ldrb r0, [r5, 0x5] - lsrs r0, 4 - lsls r0, 4 - movs r1, 0x80 - lsls r1, 1 - adds r3, r1, 0 - orrs r0, r3 - lsls r6, r4, 4 - adds r6, r4 - lsls r6, 2 - ldr r2, _080EF0A4 @ =gSprites - adds r6, r2 - ldrb r4, [r6, 0x5] - lsrs r4, 4 - lsls r4, 4 - orrs r4, r3 - lsls r0, 1 - ldr r1, _080EF0B0 @ =gPlttBufferUnfaded - mov r8, r1 - add r0, r8 - mov r2, r9 - ldrb r1, [r2] - lsls r1, 4 - adds r1, r3, r1 - movs r2, 0x20 - str r3, [sp] - bl LoadPalette - lsls r4, 1 - add r4, r8 - ldrb r0, [r7] - lsls r0, 4 - ldr r3, [sp] - adds r3, r0 - adds r0, r4, 0 - adds r1, r3, 0 - movs r2, 0x20 - bl LoadPalette - mov r0, r9 - ldrb r1, [r0] - lsls r1, 4 - ldrb r2, [r5, 0x5] - movs r3, 0xF - adds r0, r3, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] - mov r2, r10 - lsls r1, r2, 4 - add r1, r10 - lsls r1, 2 - ldr r0, _080EF0A4 @ =gSprites - adds r1, r0 - mov r0, r9 - ldrb r2, [r0] - lsls r2, 4 - ldrb r4, [r1, 0x5] - adds r0, r3, 0 - ands r0, r4 - orrs r0, r2 - strb r0, [r1, 0x5] - ldrb r0, [r7] - lsls r0, 4 - ldrb r1, [r6, 0x5] - ands r3, r1 - orrs r3, r0 - strb r3, [r6, 0x5] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EF0A0: .4byte gHealthboxSpriteIds -_080EF0A4: .4byte gSprites -_080EF0A8: .4byte 0x0000d709 -_080EF0AC: .4byte 0x0000d70a -_080EF0B0: .4byte gPlttBufferUnfaded - thumb_func_end sub_80EEFC8 - - thumb_func_start sub_80EF0B4 -sub_80EF0B4: @ 80EF0B4 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r1, sp - adds r1, 0x1 - ldr r0, _080EF0DC @ =gBattleAnimAttacker - ldrb r2, [r0] - mov r0, sp - bl sub_80EEFC8 - adds r0, r4, 0 - bl DestroyAnimVisualTask - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EF0DC: .4byte gBattleAnimAttacker - thumb_func_end sub_80EF0B4 - - thumb_func_start sub_80EF0E0 -sub_80EF0E0: @ 80EF0E0 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080EF168 @ =gHealthboxSpriteIds - adds r0, r1 - ldrb r0, [r0] - ldr r1, _080EF16C @ =gSprites - mov r8, r1 - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - add r5, r8 - ldrb r0, [r5, 0x6] - mov r9, r0 - ldrh r6, [r5, 0x38] - lsls r6, 24 - lsrs r6, 24 - ldr r0, _080EF170 @ =0x0000d709 - bl FreeSpritePaletteByTag - ldr r0, _080EF174 @ =0x0000d70a - bl FreeSpritePaletteByTag - ldr r0, _080EF178 @ =0x0000d6ff - bl IndexOfSpritePaletteTag - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080EF17C @ =0x0000d704 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsls r4, 4 - ldrb r2, [r5, 0x5] - movs r3, 0xF - adds r1, r3, 0 - ands r1, r2 - orrs r1, r4 - strb r1, [r5, 0x5] - mov r1, r9 - lsls r2, r1, 4 - add r2, r9 - lsls r2, 2 - add r2, r8 - ldrb r5, [r2, 0x5] - adds r1, r3, 0 - ands r1, r5 - orrs r1, r4 - strb r1, [r2, 0x5] - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - add r1, r8 - lsrs r0, 20 - ldrb r2, [r1, 0x5] - ands r3, r2 - orrs r3, r0 - strb r3, [r1, 0x5] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EF168: .4byte gHealthboxSpriteIds -_080EF16C: .4byte gSprites -_080EF170: .4byte 0x0000d709 -_080EF174: .4byte 0x0000d70a -_080EF178: .4byte 0x0000d6ff -_080EF17C: .4byte 0x0000d704 - thumb_func_end sub_80EF0E0 - - thumb_func_start sub_80EF180 -sub_80EF180: @ 80EF180 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080EF19C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80EF0E0 - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EF19C: .4byte gBattleAnimAttacker - thumb_func_end sub_80EF180 - - thumb_func_start sub_80EF1A0 -sub_80EF1A0: @ 80EF1A0 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080EF1C0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r2, _080EF1C4 @ =gBattleAnimArgs - ldrh r0, [r2] - strh r0, [r1, 0x1C] - ldrh r0, [r2, 0x2] - strh r0, [r1, 0x1E] - ldr r0, _080EF1C8 @ =sub_80EF1CC - str r0, [r1] - bx lr - .align 2, 0 -_080EF1C0: .4byte gTasks -_080EF1C4: .4byte gBattleAnimArgs -_080EF1C8: .4byte sub_80EF1CC - thumb_func_end sub_80EF1A0 - - thumb_func_start sub_80EF1CC -sub_80EF1CC: @ 80EF1CC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080EF218 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - movs r6, 0 - adds r1, r0, 0x1 - strh r1, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x1E - ldrsh r1, [r4, r2] - cmp r0, r1 - blt _080EF28C - strh r6, [r4, 0x8] - ldr r0, _080EF21C @ =0x0000d709 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r2, r0, 24 - movs r3, 0x1C - ldrsh r0, [r4, r3] - movs r1, 0x2 - cmp r0, 0 - bne _080EF20A - movs r1, 0x6 -_080EF20A: - movs r3, 0xA - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080EF220 - cmp r0, 0x1 - beq _080EF25C - b _080EF28C - .align 2, 0 -_080EF218: .4byte gTasks -_080EF21C: .4byte 0x0000d709 -_080EF220: - ldrh r0, [r4, 0xC] - adds r0, 0x2 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080EF232 - movs r0, 0x10 - strh r0, [r4, 0xC] -_080EF232: - lsls r0, r2, 4 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2 - orrs r0, r1 - ldrb r2, [r4, 0xC] - ldr r3, _080EF258 @ =0x00007f74 - movs r1, 0x1 - bl BlendPalette - movs r3, 0xC - ldrsh r0, [r4, r3] - cmp r0, 0x10 - bne _080EF28C - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - b _080EF28C - .align 2, 0 -_080EF258: .4byte 0x00007f74 -_080EF25C: - ldrh r0, [r4, 0xC] - subs r0, 0x2 - strh r0, [r4, 0xC] - lsls r0, 16 - cmp r0, 0 - bge _080EF26A - strh r6, [r4, 0xC] -_080EF26A: - lsls r0, r2, 4 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2 - orrs r0, r1 - ldrb r2, [r4, 0xC] - ldr r3, _080EF294 @ =0x00007f74 - movs r1, 0x1 - bl BlendPalette - movs r3, 0xC - ldrsh r0, [r4, r3] - cmp r0, 0 - bne _080EF28C - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080EF28C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EF294: .4byte 0x00007f74 - thumb_func_end sub_80EF1CC - - thumb_func_start sub_80EF298 -sub_80EF298: @ 80EF298 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080EF2C4 @ =gBattlerSpriteIds - ldr r0, _080EF2C8 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r5, [r0] - ldr r1, _080EF2CC @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080EF2E6 - cmp r0, 0x1 - bgt _080EF2D0 - cmp r0, 0 - beq _080EF2D6 - b _080EF338 - .align 2, 0 -_080EF2C4: .4byte gBattlerSpriteIds -_080EF2C8: .4byte gBattleAnimAttacker -_080EF2CC: .4byte gTasks -_080EF2D0: - cmp r0, 0x2 - beq _080EF318 - b _080EF338 -_080EF2D6: - adds r0, r5, 0 - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0x1C] - b _080EF30A -_080EF2E6: - ldrh r0, [r4, 0x1C] - adds r0, 0x30 - strh r0, [r4, 0x1C] - movs r0, 0x1C - ldrsh r2, [r4, r0] - adds r0, r5, 0 - adds r1, r2, 0 - movs r3, 0 - bl SetSpriteRotScale - adds r0, r5, 0 - bl SetBattlerSpriteYOffsetFromYScale - movs r0, 0x1C - ldrsh r1, [r4, r0] - ldr r0, _080EF314 @ =0x000002cf - cmp r1, r0 - ble _080EF338 -_080EF30A: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080EF338 - .align 2, 0 -_080EF314: .4byte 0x000002cf -_080EF318: - adds r0, r5, 0 - bl ResetSpriteRotScale - ldr r1, _080EF340 @ =gSprites - lsls r0, r5, 4 - adds r0, r5 - 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 DestroyAnimVisualTask -_080EF338: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EF340: .4byte gSprites - thumb_func_end sub_80EF298 - - thumb_func_start sub_80EF344 -sub_80EF344: @ 80EF344 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080EF37C @ =gBattlerSpriteIds - ldr r4, _080EF380 @ =gBattleAnimAttacker - ldrb r0, [r4] - adds r1, r0, r1 - ldrb r1, [r1] - mov r9, r1 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080EF38C - ldr r1, _080EF384 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080EF388 @ =gPlayerParty - b _080EF39C - .align 2, 0 -_080EF37C: .4byte gBattlerSpriteIds -_080EF380: .4byte gBattleAnimAttacker -_080EF384: .4byte gBattlerPartyIndexes -_080EF388: .4byte gPlayerParty -_080EF38C: - ldr r1, _080EF3CC @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080EF3D0 @ =gEnemyParty -_080EF39C: - adds r0, r1 - movs r1, 0x26 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl ItemIdToBallId - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r2, _080EF3D4 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r6, r0, r2 - movs r0, 0x8 - ldrsh r7, [r6, r0] - cmp r7, 0 - beq _080EF3D8 - cmp r7, 0x1 - beq _080EF458 - b _080EF482 - .align 2, 0 -_080EF3CC: .4byte gBattlerPartyIndexes -_080EF3D0: .4byte gEnemyParty -_080EF3D4: .4byte gTasks -_080EF3D8: - ldr r5, _080EF450 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - adds r1, r0, 0 - lsls r1, 24 - ldr r2, _080EF454 @ =gSprites - mov r3, r9 - lsls r0, r3, 4 - add r0, r9 - lsls r0, 2 - adds r0, r2 - ldrb r2, [r0, 0x5] - lsls r2, 28 - lsrs r2, 30 - adds r0, 0x43 - ldrb r3, [r0] - movs r0, 0x80 - lsls r0, 22 - adds r1, r0 - lsrs r1, 24 - mov r0, r8 - str r0, [sp] - adds r0, r4, 0 - bl LaunchBallStarsTask - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x1C] - str r7, [sp] - str r7, [sp, 0x4] - str r7, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_8075BE8 - adds r2, r0, 0 - ldrb r1, [r5] - movs r0, 0 - mov r3, r8 - bl LaunchBallFadeMonTask - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x1E] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - b _080EF482 - .align 2, 0 -_080EF450: .4byte gBattleAnimAttacker -_080EF454: .4byte gSprites -_080EF458: - movs r1, 0x1C - ldrsh r0, [r6, r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrb r0, [r1, 0x4] - cmp r0, 0 - bne _080EF482 - movs r3, 0x1E - ldrsh r0, [r6, r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrb r0, [r1, 0x4] - cmp r0, 0 - bne _080EF482 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080EF482: - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80EF344 - - thumb_func_start sub_80EF490 -sub_80EF490: @ 80EF490 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080EF4B4 @ =gLastUsedItem - ldrh r0, [r0] - bl ItemIdToBallId - lsls r0, 24 - lsrs r0, 24 - bl LoadBallGfx - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EF4B4: .4byte gLastUsedItem - thumb_func_end sub_80EF490 - - thumb_func_start sub_80EF4B8 -sub_80EF4B8: @ 80EF4B8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080EF4DC @ =gLastUsedItem - ldrh r0, [r0] - bl ItemIdToBallId - lsls r0, 24 - lsrs r0, 24 - bl FreeBallGfx - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EF4DC: .4byte gLastUsedItem - thumb_func_end sub_80EF4B8 - - thumb_func_start sub_80EF4E0 -sub_80EF4E0: @ 80EF4E0 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080EF4FC @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x8] - cmp r0, 0x5 - beq _080EF504 - cmp r0, 0x6 - beq _080EF514 - ldr r1, _080EF500 @ =gBattleAnimArgs - movs r0, 0 - b _080EF518 - .align 2, 0 -_080EF4FC: .4byte gBattleSpritesDataPtr -_080EF500: .4byte gBattleAnimArgs -_080EF504: - ldr r1, _080EF50C @ =gBattleAnimArgs - ldr r0, _080EF510 @ =0x0000ffff - b _080EF518 - .align 2, 0 -_080EF50C: .4byte gBattleAnimArgs -_080EF510: .4byte 0x0000ffff -_080EF514: - ldr r1, _080EF524 @ =gBattleAnimArgs - ldr r0, _080EF528 @ =0x0000fffe -_080EF518: - strh r0, [r1, 0xE] - adds r0, r2, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080EF524: .4byte gBattleAnimArgs -_080EF528: .4byte 0x0000fffe - thumb_func_end sub_80EF4E0 - - thumb_func_start ItemIdToBallId -ItemIdToBallId: @ 80EF52C - push {lr} - lsls r0, 16 - lsrs r0, 16 - subs r0, 0x1 - cmp r0, 0xB - bhi _080EF5A4 - lsls r0, 2 - ldr r1, _080EF544 @ =_080EF548 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080EF544: .4byte _080EF548 - .align 2, 0 -_080EF548: - .4byte _080EF578 - .4byte _080EF57C - .4byte _080EF580 - .4byte _080EF5A4 - .4byte _080EF584 - .4byte _080EF588 - .4byte _080EF58C - .4byte _080EF590 - .4byte _080EF594 - .4byte _080EF598 - .4byte _080EF59C - .4byte _080EF5A0 -_080EF578: - movs r0, 0x4 - b _080EF5A6 -_080EF57C: - movs r0, 0x3 - b _080EF5A6 -_080EF580: - movs r0, 0x1 - b _080EF5A6 -_080EF584: - movs r0, 0x2 - b _080EF5A6 -_080EF588: - movs r0, 0x5 - b _080EF5A6 -_080EF58C: - movs r0, 0x6 - b _080EF5A6 -_080EF590: - movs r0, 0x7 - b _080EF5A6 -_080EF594: - movs r0, 0x8 - b _080EF5A6 -_080EF598: - movs r0, 0x9 - b _080EF5A6 -_080EF59C: - movs r0, 0xA - b _080EF5A6 -_080EF5A0: - movs r0, 0xB - b _080EF5A6 -_080EF5A4: - movs r0, 0 -_080EF5A6: - pop {r1} - bx r1 - thumb_func_end ItemIdToBallId - - thumb_func_start sub_80EF5AC -sub_80EF5AC: @ 80EF5AC - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - mov r10, r0 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, _080EF674 @ =gLastUsedItem - ldrh r0, [r0] - bl ItemIdToBallId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - ldr r1, _080EF678 @ =gUnknown_82606F4 - adds r0, r1 - movs r1, 0x20 - movs r2, 0x50 - movs r3, 0x1D - bl CreateSprite - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r1, _080EF67C @ =gSprites - mov r9, r1 - lsls r4, r5, 4 - adds r4, r5 - lsls r4, 2 - adds r6, r4, r1 - movs r0, 0x22 - strh r0, [r6, 0x2E] - ldr r2, _080EF680 @ =gBattleAnimTarget - mov r8, r2 - ldrb r0, [r2] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x30] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x10 - strh r0, [r6, 0x32] - mov r0, r9 - adds r0, 0x1C - adds r4, r0 - ldr r0, _080EF684 @ =sub_80EF8C0 - str r0, [r4] - ldr r0, _080EF688 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r3, [r0, 0x8] - ldr r1, _080EF68C @ =gBattlerSpriteIds - mov r2, r8 - ldrb r0, [r2] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r9 - adds r0, 0x3E - ldrb r1, [r0] - lsls r1, 29 - lsrs r1, 31 - lsls r1, 1 - ldrb r2, [r3, 0x9] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x9] - ldr r1, _080EF690 @ =gTasks - mov r2, r10 - lsls r0, r2, 2 - add r0, r10 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0x8] - ldr r1, _080EF694 @ =sub_80EF698 - str r1, [r0] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EF674: .4byte gLastUsedItem -_080EF678: .4byte gUnknown_82606F4 -_080EF67C: .4byte gSprites -_080EF680: .4byte gBattleAnimTarget -_080EF684: .4byte sub_80EF8C0 -_080EF688: .4byte gBattleSpritesDataPtr -_080EF68C: .4byte gBattlerSpriteIds -_080EF690: .4byte gTasks -_080EF694: .4byte sub_80EF698 - thumb_func_end sub_80EF5AC - - thumb_func_start sub_80EF698 -sub_80EF698: @ 80EF698 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _080EF6C8 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0, 0x8] - ldr r2, _080EF6CC @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x2E] - ldr r0, _080EF6D0 @ =0x0000ffff - cmp r1, r0 - bne _080EF6C2 - adds r0, r3, 0 - bl DestroyAnimVisualTask -_080EF6C2: - pop {r0} - bx r0 - .align 2, 0 -_080EF6C8: .4byte gTasks -_080EF6CC: .4byte gSprites -_080EF6D0: .4byte 0x0000ffff - thumb_func_end sub_80EF698 - - thumb_func_start sub_80EF6D4 -sub_80EF6D4: @ 80EF6D4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _080EF6F4 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - beq _080EF6F8 - movs r5, 0x1C - movs r6, 0xB - b _080EF708 - .align 2, 0 -_080EF6F4: .4byte gBattleTypeFlags -_080EF6F8: - movs r5, 0x17 - movs r6, 0xB - ldr r0, _080EF7C4 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0x1 - bne _080EF708 - movs r6, 0xD -_080EF708: - ldr r0, _080EF7C8 @ =gLastUsedItem - ldrh r0, [r0] - bl ItemIdToBallId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 3 - ldr r1, _080EF7CC @ =gUnknown_82606F4 - adds r0, r1 - movs r1, 0x20 - orrs r5, r1 - movs r1, 0x50 - orrs r6, r1 - adds r1, r5, 0 - adds r2, r6, 0 - bl CreateSprite - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _080EF7D0 @ =gSprites - mov r9, r0 - lsls r4, r5, 4 - adds r4, r5 - lsls r4, 2 - adds r6, r4, r0 - movs r0, 0x22 - strh r0, [r6, 0x2E] - ldr r1, _080EF7D4 @ =gBattleAnimTarget - mov r8, r1 - ldrb r0, [r1] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x30] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x10 - strh r0, [r6, 0x32] - movs r0, 0x1C - add r9, r0 - add r4, r9 - ldr r0, _080EF7D8 @ =SpriteCallbackDummy - str r0, [r4] - movs r0, 0 - bl GetBattlerAtPosition - ldr r1, _080EF7DC @ =gBattlerSpriteIds - lsls r0, 24 - lsrs r0, 24 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r9 - ldr r1, _080EF7E0 @ =sub_8012354 - str r1, [r0] - ldr r1, _080EF7E4 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0x8] - ldr r1, _080EF7E8 @ =sub_80EF7EC - str r1, [r0] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EF7C4: .4byte gSaveBlock2Ptr -_080EF7C8: .4byte gLastUsedItem -_080EF7CC: .4byte gUnknown_82606F4 -_080EF7D0: .4byte gSprites -_080EF7D4: .4byte gBattleAnimTarget -_080EF7D8: .4byte SpriteCallbackDummy -_080EF7DC: .4byte gBattlerSpriteIds -_080EF7E0: .4byte sub_8012354 -_080EF7E4: .4byte gTasks -_080EF7E8: .4byte sub_80EF7EC - thumb_func_end sub_80EF6D4 - - thumb_func_start sub_80EF7EC -sub_80EF7EC: @ 80EF7EC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r6, _080EF84C @ =gSprites - movs r0, 0 - bl GetBattlerAtPosition - ldr r1, _080EF850 @ =gBattlerSpriteIds - lsls r0, 24 - lsrs r0, 24 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x2B - ldrb r0, [r0] - cmp r0, 0x1 - bne _080EF846 - movs r0, 0x36 - movs r1, 0 - bl PlaySE12WithPanning - ldr r0, _080EF854 @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r6, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080EF858 @ =sub_80EF8C0 - str r1, [r0] - ldr r0, _080EF85C @ =sub_80EF864 - movs r1, 0xA - bl CreateTask - ldr r0, _080EF860 @ =sub_80EF698 - str r0, [r4] -_080EF846: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EF84C: .4byte gSprites -_080EF850: .4byte gBattlerSpriteIds -_080EF854: .4byte gTasks -_080EF858: .4byte sub_80EF8C0 -_080EF85C: .4byte sub_80EF864 -_080EF860: .4byte sub_80EF698 - thumb_func_end sub_80EF7EC - - thumb_func_start sub_80EF864 -sub_80EF864: @ 80EF864 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r6, _080EF8B8 @ =gSprites - movs r0, 0 - bl GetBattlerAtPosition - ldr r4, _080EF8BC @ =gBattlerSpriteIds - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - cmp r0, 0 - bge _080EF8B0 - movs r0, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0 - bl StartSpriteAnim - adds r0, r5, 0 - bl DestroyTask -_080EF8B0: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EF8B8: .4byte gSprites -_080EF8BC: .4byte gBattlerSpriteIds - thumb_func_end sub_80EF864 - - thumb_func_start sub_80EF8C0 -sub_80EF8C0: @ 80EF8C0 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x30] - ldrh r2, [r4, 0x32] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - strh r1, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - strh r2, [r4, 0x36] - ldr r0, _080EF8E8 @ =0x0000ffd8 - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl InitAnimArcTranslation - ldr r0, _080EF8EC @ =sub_80EF8F0 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EF8E8: .4byte 0x0000ffd8 -_080EF8EC: .4byte sub_80EF8F0 - thumb_func_end sub_80EF8C0 - - thumb_func_start sub_80EF8F0 -sub_80EF8F0: @ 80EF8F0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - beq _080EF99E - ldr r0, _080EF914 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x8] - cmp r0, 0x5 - bne _080EF91C - ldr r0, _080EF918 @ =sub_80F0478 - str r0, [r4, 0x1C] - b _080EF99E - .align 2, 0 -_080EF914: .4byte gBattleSpritesDataPtr -_080EF918: .4byte sub_80F0478 -_080EF91C: - cmp r0, 0x6 - bne _080EF92C - ldr r0, _080EF928 @ =sub_80F052C - str r0, [r4, 0x1C] - b _080EF99E - .align 2, 0 -_080EF928: .4byte sub_80F052C -_080EF92C: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - movs r1, 0 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - strh r1, [r4, 0x24] - strh r1, [r4, 0x26] - adds r1, r4, 0 - adds r1, 0x2E - movs r2, 0 - adds r0, r4, 0 - adds r0, 0x3C -_080EF954: - strh r2, [r0] - subs r0, 0x2 - cmp r0, r1 - bge _080EF954 - movs r0, 0 - strh r0, [r4, 0x38] - ldr r0, _080EF9A8 @ =sub_80EF9B4 - str r0, [r4, 0x1C] - ldr r0, _080EF9AC @ =gLastUsedItem - ldrh r0, [r0] - bl ItemIdToBallId - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xB - bgt _080EF99E - cmp r5, 0 - blt _080EF99E - ldrh r0, [r4, 0x20] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x22] - subs r1, 0x5 - lsls r1, 24 - lsrs r1, 24 - str r5, [sp] - movs r2, 0x1 - movs r3, 0x1C - bl LaunchBallStarsTask - ldr r0, _080EF9B0 @ =gBattleAnimTarget - ldrb r1, [r0] - movs r0, 0 - movs r2, 0xE - adds r3, r5, 0 - bl LaunchBallFadeMonTask -_080EF99E: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EF9A8: .4byte sub_80EF9B4 -_080EF9AC: .4byte gLastUsedItem -_080EF9B0: .4byte gBattleAnimTarget - thumb_func_end sub_80EF8F0 - - thumb_func_start sub_80EF9B4 -sub_80EF9B4: @ 80EF9B4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _080EF9F0 - ldr r0, _080EF9F8 @ =TaskDummy - movs r1, 0x32 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x38] - ldr r0, _080EF9FC @ =sub_80EFA0C - str r0, [r4, 0x1C] - ldr r2, _080EFA00 @ =gSprites - ldr r1, _080EFA04 @ =gBattlerSpriteIds - ldr r0, _080EFA08 @ =gBattleAnimTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x30] -_080EF9F0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EF9F8: .4byte TaskDummy -_080EF9FC: .4byte sub_80EFA0C -_080EFA00: .4byte gSprites -_080EFA04: .4byte gBattlerSpriteIds -_080EFA08: .4byte gBattleAnimTarget - thumb_func_end sub_80EF9B4 - - thumb_func_start sub_80EFA0C -sub_80EFA0C: @ 80EFA0C - push {r4-r7,lr} - adds r7, r0, 0 - ldr r1, _080EFA50 @ =gBattlerSpriteIds - ldr r0, _080EFA54 @ =gBattleAnimTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r4, [r0] - ldrh r0, [r7, 0x38] - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080EFA58 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB - bne _080EFA3E - movs r0, 0x35 - bl PlaySE -_080EFA3E: - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080EFAB4 - cmp r0, 0x1 - bgt _080EFA5C - cmp r0, 0 - beq _080EFA62 - b _080EFB20 - .align 2, 0 -_080EFA50: .4byte gBattlerSpriteIds -_080EFA54: .4byte gBattleAnimTarget -_080EFA58: .4byte gTasks -_080EFA5C: - cmp r0, 0x2 - beq _080EFAF8 - b _080EFB20 -_080EFA62: - adds r0, r4, 0 - movs r1, 0 - bl PrepareBattlerSpriteForRotScale - movs r0, 0x80 - lsls r0, 1 - strh r0, [r5, 0x1C] - ldr r1, _080EFAA4 @ =gUnknown_3005424 - movs r0, 0x1C - str r0, [r1] - ldr r2, _080EFAA8 @ =gUnknown_300542C - ldr r1, _080EFAAC @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x26] - ldrh r0, [r0, 0x22] - adds r1, r0 - ldrh r0, [r7, 0x26] - ldrh r7, [r7, 0x22] - adds r0, r7 - subs r1, r0 - strh r1, [r2] - ldr r4, _080EFAB0 @ =gUnknown_3005428 - ldrh r0, [r2] - lsls r0, 8 - movs r1, 0x1C - bl __udivsi3 - strh r0, [r4] - strh r0, [r5, 0xC] - b _080EFB12 - .align 2, 0 -_080EFAA4: .4byte gUnknown_3005424 -_080EFAA8: .4byte gUnknown_300542C -_080EFAAC: .4byte gSprites -_080EFAB0: .4byte gUnknown_3005428 -_080EFAB4: - ldrh r0, [r5, 0x1C] - adds r0, 0x20 - strh r0, [r5, 0x1C] - movs r0, 0x1C - ldrsh r2, [r5, r0] - adds r0, r4, 0 - adds r1, r2, 0 - movs r3, 0 - bl SetSpriteRotScale - ldrh r0, [r5, 0xC] - ldrh r1, [r5, 0xE] - adds r0, r1 - strh r0, [r5, 0xE] - ldr r0, _080EFAF0 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - movs r2, 0xE - ldrsh r0, [r5, r2] - negs r0, r0 - asrs r0, 8 - strh r0, [r1, 0x26] - movs r0, 0x1C - ldrsh r1, [r5, r0] - ldr r0, _080EFAF4 @ =0x0000047f - cmp r1, r0 - ble _080EFB48 - b _080EFB12 - .align 2, 0 -_080EFAF0: .4byte gSprites -_080EFAF4: .4byte 0x0000047f -_080EFAF8: - adds r0, r4, 0 - bl ResetSpriteRotScale - ldr r1, _080EFB1C @ =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] -_080EFB12: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080EFB48 - .align 2, 0 -_080EFB1C: .4byte gSprites -_080EFB20: - ldr r0, _080EFB50 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0xA - ble _080EFB48 - adds r0, r6, 0 - bl DestroyTask - adds r0, r7, 0 - movs r1, 0x2 - bl StartSpriteAnim - movs r0, 0 - strh r0, [r7, 0x38] - ldr r0, _080EFB54 @ =sub_80EFB58 - str r0, [r7, 0x1C] -_080EFB48: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EFB50: .4byte gTasks -_080EFB54: .4byte sub_80EFB58 - thumb_func_end sub_80EFA0C - - thumb_func_start sub_80EFB58 -sub_80EFB58: @ 80EFB58 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080EFB92 - movs r1, 0 - strh r1, [r4, 0x34] - movs r0, 0x28 - strh r0, [r4, 0x36] - strh r1, [r4, 0x38] - movs r0, 0 - movs r1, 0x28 - bl Cos - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - movs r0, 0x36 - ldrsh r1, [r4, r0] - movs r0, 0 - bl Cos - negs r0, r0 - strh r0, [r4, 0x26] - ldr r0, _080EFB98 @ =sub_80EFB9C - str r0, [r4, 0x1C] -_080EFB92: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EFB98: .4byte sub_80EFB9C - thumb_func_end sub_80EFB58 - - thumb_func_start sub_80EFB9C -sub_80EFB9C: @ 80EFB9C - push {r4,r5,lr} - adds r4, r0, 0 - movs r5, 0 - ldrh r0, [r4, 0x34] - movs r1, 0xFF - ands r1, r0 - cmp r1, 0 - beq _080EFBB2 - cmp r1, 0x1 - beq _080EFC26 - b _080EFC52 -_080EFBB2: - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl Cos - negs r0, r0 - strh r0, [r4, 0x26] - ldrh r1, [r4, 0x38] - adds r1, 0x4 - ldrh r2, [r4, 0x34] - lsls r0, r2, 16 - asrs r0, 24 - adds r1, r0 - strh r1, [r4, 0x38] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x3F - ble _080EFC52 - ldrh r0, [r4, 0x36] - subs r0, 0xA - strh r0, [r4, 0x36] - ldr r1, _080EFBFC @ =0x00000101 - adds r0, r2, r1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 24 - cmp r0, 0x4 - bne _080EFBEE - movs r5, 0x1 -_080EFBEE: - cmp r0, 0x2 - beq _080EFC0E - cmp r0, 0x2 - bgt _080EFC00 - cmp r0, 0x1 - beq _080EFC06 - b _080EFC1E - .align 2, 0 -_080EFBFC: .4byte 0x00000101 -_080EFC00: - cmp r0, 0x3 - beq _080EFC16 - b _080EFC1E -_080EFC06: - movs r0, 0x31 - bl PlaySE - b _080EFC52 -_080EFC0E: - movs r0, 0x32 - bl PlaySE - b _080EFC52 -_080EFC16: - movs r0, 0x33 - bl PlaySE - b _080EFC52 -_080EFC1E: - movs r0, 0x34 - bl PlaySE - b _080EFC52 -_080EFC26: - movs r2, 0x38 - ldrsh r0, [r4, r2] - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl Cos - negs r0, r0 - strh r0, [r4, 0x26] - ldrh r1, [r4, 0x38] - subs r1, 0x4 - ldrh r2, [r4, 0x34] - lsls r0, r2, 16 - asrs r0, 24 - subs r1, r0 - strh r1, [r4, 0x38] - lsls r1, 16 - cmp r1, 0 - bgt _080EFC52 - strh r5, [r4, 0x38] - ldr r0, _080EFC80 @ =0xffffff00 - ands r0, r2 - strh r0, [r4, 0x34] -_080EFC52: - cmp r5, 0 - beq _080EFC96 - movs r5, 0 - strh r5, [r4, 0x34] - movs r0, 0x40 - movs r1, 0x28 - bl Cos - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - strh r5, [r4, 0x26] - ldr r0, _080EFC84 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _080EFC8C - strh r5, [r4, 0x38] - ldr r0, _080EFC88 @ =sub_80EFF80 - str r0, [r4, 0x1C] - b _080EFC96 - .align 2, 0 -_080EFC80: .4byte 0xffffff00 -_080EFC84: .4byte gBattleSpritesDataPtr -_080EFC88: .4byte sub_80EFF80 -_080EFC8C: - ldr r0, _080EFC9C @ =sub_80EFCA0 - str r0, [r4, 0x1C] - movs r0, 0x1 - strh r0, [r4, 0x36] - strh r5, [r4, 0x38] -_080EFC96: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EFC9C: .4byte sub_80EFCA0 - thumb_func_end sub_80EFB9C - - thumb_func_start sub_80EFCA0 -sub_80EFCA0: @ 80EFCA0 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x34] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1F - bne _080EFCDC - strh r5, [r4, 0x34] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r0, _080EFCE4 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - strh r5, [r0, 0xC] - ldr r0, _080EFCE8 @ =sub_80EFCEC - str r0, [r4, 0x1C] - movs r0, 0x17 - bl PlaySE -_080EFCDC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EFCE4: .4byte gBattleSpritesDataPtr -_080EFCE8: .4byte sub_80EFCEC - thumb_func_end sub_80EFCA0 - - thumb_func_start sub_80EFCEC -sub_80EFCEC: @ 80EFCEC - push {r4-r6,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x34] - movs r1, 0xFF - ands r1, r0 - cmp r1, 0x6 - bls _080EFCFC - b _080EFF34 -_080EFCFC: - lsls r0, r1, 2 - ldr r1, _080EFD08 @ =_080EFD0C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080EFD08: .4byte _080EFD0C - .align 2, 0 -_080EFD0C: - .4byte _080EFD28 - .4byte _080EFD7A - .4byte _080EFDC0 - .4byte _080EFE20 - .4byte _080EFE70 - .4byte _080EFED4 - .4byte _080EFF34 -_080EFD28: - ldr r1, _080EFD4C @ =gBattleSpritesDataPtr - ldr r5, [r1] - ldr r2, [r5, 0x8] - ldrh r3, [r2, 0xC] - movs r6, 0xC - ldrsh r0, [r2, r6] - adds r6, r1, 0 - cmp r0, 0xFF - ble _080EFD50 - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - ldr r1, [r5, 0x8] - ldrb r0, [r1, 0xC] - strh r0, [r1, 0xC] - b _080EFD56 - .align 2, 0 -_080EFD4C: .4byte gBattleSpritesDataPtr -_080EFD50: - adds r0, r3, 0 - adds r0, 0xB0 - strh r0, [r2, 0xC] -_080EFD56: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - movs r3, 0 - strh r0, [r4, 0x38] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x38] - adds r0, 0x7 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xE - bhi _080EFD78 - b _080EFF7A -_080EFD78: - b _080EFE10 -_080EFD7A: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080EFE2C - movs r0, 0 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x36] - negs r0, r0 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - movs r6, 0x36 - ldrsh r0, [r4, r6] - cmp r0, 0 - bge _080EFDB6 - adds r0, r4, 0 - movs r1, 0x2 - bl ChangeSpriteAffineAnim - b _080EFF7A -_080EFDB6: - adds r0, r4, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnim - b _080EFF7A -_080EFDC0: - ldr r1, _080EFDE4 @ =gBattleSpritesDataPtr - ldr r5, [r1] - ldr r2, [r5, 0x8] - ldrh r3, [r2, 0xC] - movs r6, 0xC - ldrsh r0, [r2, r6] - adds r6, r1, 0 - cmp r0, 0xFF - ble _080EFDE8 - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - ldr r1, [r5, 0x8] - ldrb r0, [r1, 0xC] - strh r0, [r1, 0xC] - b _080EFDEE - .align 2, 0 -_080EFDE4: .4byte gBattleSpritesDataPtr -_080EFDE8: - adds r0, r3, 0 - adds r0, 0xB0 - strh r0, [r2, 0xC] -_080EFDEE: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - movs r3, 0 - strh r0, [r4, 0x38] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x38] - adds r0, 0xC - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x18 - bhi _080EFE10 - b _080EFF7A -_080EFE10: - ldr r0, [r6] - ldr r0, [r0, 0x8] - strh r3, [r0, 0xC] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - strh r3, [r4, 0x38] - b _080EFF7A -_080EFE20: - ldrh r0, [r4, 0x38] - adds r1, r0, 0x1 - strh r1, [r4, 0x38] - lsls r0, 16 - cmp r0, 0 - bge _080EFE3A -_080EFE2C: - adds r0, r4, 0 - adds r0, 0x2C - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] - b _080EFF7A -_080EFE3A: - movs r0, 0 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x36] - negs r0, r0 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - movs r6, 0x36 - ldrsh r0, [r4, r6] - cmp r0, 0 - bge _080EFE68 - adds r0, r4, 0 - movs r1, 0x2 - bl ChangeSpriteAffineAnim - b _080EFE70 -_080EFE68: - adds r0, r4, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnim -_080EFE70: - ldr r1, _080EFE94 @ =gBattleSpritesDataPtr - ldr r5, [r1] - ldr r2, [r5, 0x8] - ldrh r3, [r2, 0xC] - movs r6, 0xC - ldrsh r0, [r2, r6] - adds r6, r1, 0 - cmp r0, 0xFF - ble _080EFE98 - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - ldr r1, [r5, 0x8] - ldrb r0, [r1, 0xC] - strh r0, [r1, 0xC] - b _080EFE9E - .align 2, 0 -_080EFE94: .4byte gBattleSpritesDataPtr -_080EFE98: - adds r0, r3, 0 - adds r0, 0xB0 - strh r0, [r2, 0xC] -_080EFE9E: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - movs r3, 0 - strh r0, [r4, 0x38] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x38] - adds r0, 0x4 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x8 - bls _080EFF7A - ldr r0, [r6] - ldr r0, [r0, 0x8] - strh r3, [r0, 0xC] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - strh r3, [r4, 0x38] - ldrh r0, [r4, 0x36] - negs r0, r0 - strh r0, [r4, 0x36] - b _080EFF7A -_080EFED4: - movs r6, 0x80 - lsls r6, 1 - adds r0, r6, 0 - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r1, r0, 24 - ldr r0, _080EFF04 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x8] - cmp r1, r0 - bne _080EFF0C - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080EFF08 @ =sub_80EFF80 - str r0, [r4, 0x1C] - b _080EFF7A - .align 2, 0 -_080EFF04: .4byte gBattleSpritesDataPtr -_080EFF08: .4byte sub_80EFF80 -_080EFF0C: - cmp r0, 0x4 - bne _080EFF20 - cmp r1, 0x3 - bne _080EFF20 - ldr r0, _080EFF1C @ =sub_80EFFA4 - str r0, [r4, 0x1C] - b _080EFF26 - .align 2, 0 -_080EFF1C: .4byte sub_80EFFA4 -_080EFF20: - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] -_080EFF26: - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - b _080EFF7A -_080EFF34: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1F - bne _080EFF7A - movs r0, 0 - strh r0, [r4, 0x38] - ldrh r1, [r4, 0x34] - ldr r0, _080EFF68 @ =0xffffff00 - ands r0, r1 - strh r0, [r4, 0x34] - adds r0, r4, 0 - movs r1, 0x3 - bl StartSpriteAffineAnim - movs r6, 0x36 - ldrsh r0, [r4, r6] - cmp r0, 0 - bge _080EFF6C - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - b _080EFF74 - .align 2, 0 -_080EFF68: .4byte 0xffffff00 -_080EFF6C: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080EFF74: - movs r0, 0x17 - bl PlaySE -_080EFF7A: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80EFCEC - - thumb_func_start sub_80EFF80 -sub_80EFF80: @ 80EFF80 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x38] - adds r0, 0x1 - strh r0, [r1, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1F - bne _080EFF9A - movs r0, 0 - strh r0, [r1, 0x38] - ldr r0, _080EFFA0 @ =sub_80F02B0 - str r0, [r1, 0x1C] -_080EFF9A: - pop {r0} - bx r0 - .align 2, 0 -_080EFFA0: .4byte sub_80F02B0 - thumb_func_end sub_80EFF80 - - thumb_func_start sub_80EFFA4 -sub_80EFFA4: @ 80EFFA4 - adds r3, r0, 0 - adds r3, 0x2C - ldrb r1, [r3] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r3] - ldr r1, _080EFFC0 @ =sub_80EFFC4 - str r1, [r0, 0x1C] - movs r1, 0 - strh r1, [r0, 0x34] - strh r1, [r0, 0x36] - strh r1, [r0, 0x38] - bx lr - .align 2, 0 -_080EFFC0: .4byte sub_80EFFC4 - thumb_func_end sub_80EFFA4 - - thumb_func_start sub_80EFFC4 -sub_80EFFC4: @ 80EFFC4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r6, r0, 0 - ldr r7, _080F0004 @ =gBattleAnimTarget - ldrh r0, [r6, 0x36] - adds r0, 0x1 - movs r1, 0 - mov r8, r1 - strh r0, [r6, 0x36] - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0x28 - bne _080F0008 - movs r0, 0xF7 - bl PlaySE - ldrb r1, [r6, 0x5] - lsrs r1, 4 - movs r0, 0x80 - lsls r0, 9 - lsls r0, r1 - movs r1, 0x6 - movs r2, 0 - bl BlendPalettes - adds r0, r6, 0 - bl sub_80F01B8 - b _080F0088 - .align 2, 0 -_080F0004: .4byte gBattleAnimTarget -_080F0008: - cmp r1, 0x3C - bne _080F0026 - ldrb r1, [r6, 0x5] - lsrs r1, 4 - movs r0, 0x80 - lsls r0, 9 - lsls r0, r1 - mov r1, r8 - str r1, [sp] - movs r1, 0x2 - movs r2, 0x6 - movs r3, 0 - bl BeginNormalPaletteFade - b _080F0088 -_080F0026: - cmp r1, 0x5F - bne _080F004C - ldr r0, _080F0044 @ =gDoingBattleAnim - movs r1, 0 - strb r1, [r0] - movs r0, 0x1 - bl UpdateOamPriorityInAllHealthboxes - bl m4aMPlayAllStop - ldr r0, _080F0048 @ =0x0000013f - bl PlaySE - b _080F0088 - .align 2, 0 -_080F0044: .4byte gDoingBattleAnim -_080F0048: .4byte 0x0000013f -_080F004C: - ldr r0, _080F0094 @ =0x0000013b - cmp r1, r0 - bne _080F0088 - ldr r5, _080F0098 @ =gSprites - ldr r4, _080F009C @ =gBattlerSpriteIds - ldrb r0, [r7] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldrb r0, [r7] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite - mov r0, r8 - strh r0, [r6, 0x2E] - ldr r0, _080F00A0 @ =sub_80F00A4 - str r0, [r6, 0x1C] -_080F0088: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F0094: .4byte 0x0000013b -_080F0098: .4byte gSprites -_080F009C: .4byte gBattlerSpriteIds -_080F00A0: .4byte sub_80F00A4 - thumb_func_end sub_80EFFC4 - - thumb_func_start sub_80F00A4 -sub_80F00A4: @ 80F00A4 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080F0110 - cmp r0, 0x1 - bgt _080F00BC - cmp r0, 0 - beq _080F00C2 - b _080F0156 -_080F00BC: - cmp r0, 0x2 - beq _080F0142 - b _080F0156 -_080F00C2: - strh r0, [r4, 0x30] - strh r0, [r4, 0x32] - ldrb r1, [r4, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r4, 0x1] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0x10 - bl SetGpuReg - ldr r0, [r4, 0x14] - ldrh r0, [r0, 0x2] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - movs r1, 0x1 - lsls r1, r0 - ldr r0, _080F010C @ =0x00007fff - str r0, [sp] - adds r0, r1, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _080F014E - .align 2, 0 -_080F010C: .4byte 0x00007fff -_080F0110: - ldrh r0, [r4, 0x30] - adds r1, r0, 0x1 - strh r1, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - ble _080F017C - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r2, [r4, 0x32] - adds r2, 0x1 - strh r2, [r4, 0x32] - lsls r1, r2, 8 - movs r0, 0x10 - subs r0, r2 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080F017C - b _080F014E -_080F0142: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080F014E: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080F017C -_080F0156: - ldr r0, _080F0184 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080F017C - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - strh r5, [r4, 0x2E] - ldr r0, _080F0188 @ =sub_80F018C - str r0, [r4, 0x1C] -_080F017C: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F0184: .4byte gPaletteFade -_080F0188: .4byte sub_80F018C - thumb_func_end sub_80F00A4 - - thumb_func_start sub_80F018C -sub_80F018C: @ 80F018C - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080F01A4 - ldr r0, _080F01A0 @ =0x0000ffff - strh r0, [r4, 0x2E] - b _080F01B0 - .align 2, 0 -_080F01A0: .4byte 0x0000ffff -_080F01A4: - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite -_080F01B0: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F018C - - thumb_func_start sub_80F01B8 -sub_80F01B8: @ 80F01B8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r6, r0, 0 - adds r1, r6, 0 - adds r1, 0x43 - ldrb r0, [r1] - cmp r0, 0 - beq _080F01D8 - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - b _080F01E0 -_080F01D8: - movs r0, 0 - mov r8, r0 - movs r0, 0x1 - strb r0, [r1] -_080F01E0: - movs r0, 0x4 - bl sub_80F05B4 - movs r7, 0 - ldr r2, _080F0264 @ =gSprites - mov r9, r2 - movs r0, 0x1C - add r0, r9 - mov r10, r0 -_080F01F2: - movs r2, 0x20 - ldrsh r1, [r6, r2] - movs r0, 0x22 - ldrsh r2, [r6, r0] - ldr r0, _080F0268 @ =gUnknown_840C104 - mov r3, r8 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080F024E - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - mov r2, r9 - adds r5, r4, r2 - movs r0, 0x18 - strh r0, [r5, 0x2E] - ldr r0, _080F026C @ =gUnknown_840BF3C - lsls r1, r7, 2 - adds r1, r0 - movs r0, 0 - ldrsb r0, [r1, r0] - ldrh r2, [r6, 0x20] - adds r0, r2 - strh r0, [r5, 0x32] - movs r0, 0x1 - ldrsb r0, [r1, r0] - ldrh r2, [r6, 0x22] - adds r0, r2 - strh r0, [r5, 0x36] - movs r0, 0x2 - ldrsb r0, [r1, r0] - strh r0, [r5, 0x38] - adds r0, r5, 0 - bl InitAnimArcTranslation - add r4, r10 - ldr r0, _080F0270 @ =sub_80F0278 - str r0, [r4] - ldr r0, _080F0274 @ =gUnknown_840C068 - ldrb r1, [r0, 0x4] - adds r0, r5, 0 - bl StartSpriteAnim -_080F024E: - adds r7, 0x1 - cmp r7, 0x2 - bls _080F01F2 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F0264: .4byte gSprites -_080F0268: .4byte gUnknown_840C104 -_080F026C: .4byte gUnknown_840BF3C -_080F0270: .4byte sub_80F0278 -_080F0274: .4byte gUnknown_840C068 - thumb_func_end sub_80F01B8 - - thumb_func_start sub_80F0278 -sub_80F0278: @ 80F0278 - push {r4,lr} - adds r4, r0, 0 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - adds r0, r4, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - beq _080F02A8 - adds r0, r4, 0 - bl DestroySprite -_080F02A8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F0278 - - thumb_func_start sub_80F02B0 -sub_80F02B0: @ 80F02B0 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0x1 - bl StartSpriteAnim - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAffineAnim - ldr r0, _080F0364 @ =sub_80F0378 - str r0, [r4, 0x1C] - ldr r0, _080F0368 @ =gLastUsedItem - ldrh r0, [r0] - bl ItemIdToBallId - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xB - bgt _080F0302 - cmp r5, 0 - blt _080F0302 - ldrh r0, [r4, 0x20] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x22] - subs r1, 0x5 - lsls r1, 24 - lsrs r1, 24 - str r5, [sp] - movs r2, 0x1 - movs r3, 0x1C - bl LaunchBallStarsTask - ldr r0, _080F036C @ =gBattleAnimTarget - ldrb r1, [r0] - movs r0, 0x1 - movs r2, 0xE - adds r3, r5, 0 - bl LaunchBallFadeMonTask -_080F0302: - ldr r6, _080F0370 @ =gSprites - ldr r5, _080F0374 @ =gBattlerSpriteIds - ldr r4, _080F036C @ =gBattleAnimTarget - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl AnimateSprite - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x80 - lsls r1, 5 - strh r1, [r0, 0x30] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F0364: .4byte sub_80F0378 -_080F0368: .4byte gLastUsedItem -_080F036C: .4byte gBattleAnimTarget -_080F0370: .4byte gSprites -_080F0374: .4byte gBattlerSpriteIds - thumb_func_end sub_80F02B0 - - thumb_func_start sub_80F0378 -sub_80F0378: @ 80F0378 - push {r4-r7,lr} - adds r7, r0, 0 - movs r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080F0396 - adds r2, r7, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080F0396: - ldr r4, _080F03C4 @ =gSprites - ldr r3, _080F03C8 @ =gBattlerSpriteIds - ldr r2, _080F03CC @ =gBattleAnimTarget - ldrb r0, [r2] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r4 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 26 - cmp r0, 0 - bge _080F03D0 - adds r0, r1, 0 - movs r1, 0 - bl StartSpriteAffineAnim - movs r5, 0x1 - b _080F03F0 - .align 2, 0 -_080F03C4: .4byte gSprites -_080F03C8: .4byte gBattlerSpriteIds -_080F03CC: .4byte gBattleAnimTarget -_080F03D0: - ldr r6, _080F045C @ =0xfffffee0 - adds r0, r6, 0 - ldrh r6, [r1, 0x30] - adds r0, r6 - strh r0, [r1, 0x30] - ldrb r0, [r2] - adds r0, r3 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 24 - strh r0, [r1, 0x26] -_080F03F0: - adds r0, r7, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080F0456 - cmp r5, 0 - beq _080F0456 - ldr r4, _080F0460 @ =gSprites - ldr r3, _080F0464 @ =gBattlerSpriteIds - ldr r2, _080F0468 @ =gBattleAnimTarget - ldrb r0, [r2] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r6, 0 - movs r5, 0 - strh r5, [r0, 0x26] - ldrb r0, [r2] - adds r0, r3 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r4 - ldr r0, _080F046C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r1, [r0, 0x9] - lsls r1, 30 - adds r2, 0x3E - lsrs r1, 31 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - strh r5, [r7, 0x2E] - ldr r0, _080F0470 @ =sub_80F018C - str r0, [r7, 0x1C] - ldr r0, _080F0474 @ =gDoingBattleAnim - strb r6, [r0] - movs r0, 0x1 - bl UpdateOamPriorityInAllHealthboxes -_080F0456: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F045C: .4byte 0xfffffee0 -_080F0460: .4byte gSprites -_080F0464: .4byte gBattlerSpriteIds -_080F0468: .4byte gBattleAnimTarget -_080F046C: .4byte gBattleSpritesDataPtr -_080F0470: .4byte sub_80F018C -_080F0474: .4byte gDoingBattleAnim - thumb_func_end sub_80F0378 - - thumb_func_start sub_80F0478 -sub_80F0478: @ 80F0478 - push {r4,lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x24] - ldrh r1, [r2, 0x20] - adds r0, r1 - movs r1, 0 - strh r0, [r2, 0x20] - ldrh r0, [r2, 0x26] - ldrh r3, [r2, 0x22] - adds r0, r3 - strh r0, [r2, 0x22] - strh r1, [r2, 0x26] - strh r1, [r2, 0x24] - ldr r4, _080F04B0 @ =sub_80F04B4 - movs r3, 0 - movs r1, 0x5 - adds r0, r2, 0 - adds r0, 0x38 -_080F049C: - strh r3, [r0] - subs r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080F049C - str r4, [r2, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F04B0: .4byte sub_80F04B4 - thumb_func_end sub_80F0478 - - thumb_func_start sub_80F04B4 -sub_80F04B4: @ 80F04B4 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x80 - lsls r0, 4 - adds r2, r0, 0 - ldrh r1, [r4, 0x2E] - adds r2, r1 - movs r0, 0xD0 - lsls r0, 3 - adds r3, r0, 0 - ldrh r1, [r4, 0x30] - adds r3, r1 - lsls r1, r3, 16 - asrs r1, 24 - ldrh r0, [r4, 0x24] - subs r0, r1 - strh r0, [r4, 0x24] - lsls r0, r2, 16 - asrs r0, 24 - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - movs r0, 0xFF - ands r2, r0 - strh r2, [r4, 0x2E] - ands r3, r0 - strh r3, [r4, 0x30] - movs r2, 0x22 - ldrsh r0, [r4, r2] - movs r2, 0x26 - ldrsh r1, [r4, r2] - adds r0, r1 - cmp r0, 0xA0 - bgt _080F050A - movs r1, 0x20 - ldrsh r0, [r4, r1] - movs r2, 0x24 - ldrsh r1, [r4, r2] - adds r0, r1 - movs r1, 0x8 - negs r1, r1 - cmp r0, r1 - bge _080F051E -_080F050A: - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _080F0524 @ =sub_80F018C - str r0, [r4, 0x1C] - ldr r1, _080F0528 @ =gDoingBattleAnim - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - bl UpdateOamPriorityInAllHealthboxes -_080F051E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F0524: .4byte sub_80F018C -_080F0528: .4byte gDoingBattleAnim - thumb_func_end sub_80F04B4 - - thumb_func_start sub_80F052C -sub_80F052C: @ 80F052C - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x24] - ldrh r0, [r4, 0x20] - adds r1, r0 - movs r0, 0 - strh r1, [r4, 0x20] - ldrh r2, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r2, r3 - strh r2, [r4, 0x22] - strh r0, [r4, 0x26] - strh r0, [r4, 0x24] - movs r0, 0x22 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - subs r1, 0x8 - strh r1, [r4, 0x32] - strh r2, [r4, 0x34] - movs r0, 0x90 - strh r0, [r4, 0x36] - movs r0, 0x20 - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl InitAnimArcTranslation - adds r0, r4, 0 - bl TranslateAnimVerticalArc - ldr r0, _080F0570 @ =sub_80F0574 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F0570: .4byte sub_80F0574 - thumb_func_end sub_80F052C - - thumb_func_start sub_80F0574 -sub_80F0574: @ 80F0574 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimVerticalArc - lsls r0, 24 - cmp r0, 0 - bne _080F0590 - movs r1, 0x22 - ldrsh r0, [r4, r1] - movs r2, 0x26 - ldrsh r1, [r4, r2] - adds r0, r1 - cmp r0, 0x40 - ble _080F05A4 -_080F0590: - movs r1, 0 - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _080F05AC @ =sub_80F018C - str r0, [r4, 0x1C] - ldr r0, _080F05B0 @ =gDoingBattleAnim - strb r1, [r0] - movs r0, 0x1 - bl UpdateOamPriorityInAllHealthboxes -_080F05A4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F05AC: .4byte sub_80F018C -_080F05B0: .4byte gDoingBattleAnim - thumb_func_end sub_80F0574 - - thumb_func_start sub_80F05B4 -sub_80F05B4: @ 80F05B4 - push {r4,r5,lr} - lsls r0, 24 - ldr r1, _080F05E0 @ =gUnknown_840BF48 - lsrs r5, r0, 21 - adds r4, r5, r1 - ldrh r0, [r4, 0x6] - bl GetSpriteTileStartByTag - lsls r0, 16 - ldr r1, _080F05E4 @ =0xffff0000 - cmp r0, r1 - bne _080F05DA - adds r0, r4, 0 - bl LoadCompressedSpriteSheetUsingHeap - ldr r0, _080F05E8 @ =gUnknown_840BFA8 - adds r0, r5, r0 - bl LoadCompressedSpritePaletteUsingHeap -_080F05DA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F05E0: .4byte gUnknown_840BF48 -_080F05E4: .4byte 0xffff0000 -_080F05E8: .4byte gUnknown_840BFA8 - thumb_func_end sub_80F05B4 - - thumb_func_start LaunchBallStarsTask -LaunchBallStarsTask: @ 80F05EC - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - adds r6, r0, 0 - mov r8, r1 - mov r9, r2 - mov r10, r3 - ldr r5, [sp, 0x1C] - lsls r6, 24 - lsrs r6, 24 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - mov r1, r9 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - mov r0, r10 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r5, 0 - bl sub_80F05B4 - ldr r1, _080F066C @ =gUnknown_840C074 - lsls r0, r5, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x5 - bl CreateTask - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080F0670 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - strh r6, [r0, 0xA] - mov r1, r8 - strh r1, [r0, 0xC] - mov r1, r9 - strh r1, [r0, 0xE] - mov r1, r10 - strh r1, [r0, 0x10] - strh r5, [r0, 0x26] - movs r0, 0xF - bl PlaySE - adds r0, r4, 0 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080F066C: .4byte gUnknown_840C074 -_080F0670: .4byte gTasks - thumb_func_end LaunchBallStarsTask - - thumb_func_start sub_80F0674 -sub_80F0674: @ 80F0674 - push {lr} - ldr r0, _080F0698 @ =gMain - ldr r1, _080F069C @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080F0692 - ldr r0, _080F06A0 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x8] - ldrb r0, [r1, 0xA] - adds r0, 0x1 - strb r0, [r1, 0xA] -_080F0692: - pop {r0} - bx r0 - .align 2, 0 -_080F0698: .4byte gMain -_080F069C: .4byte 0x00000439 -_080F06A0: .4byte gBattleSpritesDataPtr - thumb_func_end sub_80F0674 - - thumb_func_start sub_80F06A4 -sub_80F06A4: @ 80F06A4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _080F0780 @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r6, r0, r1 - ldrh r0, [r6, 0x26] - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - movs r2, 0x8 - ldrsh r0, [r6, r2] - adds r2, r1, 0 - cmp r0, 0xF - bgt _080F079C - ldrb r1, [r6, 0xA] - ldrb r2, [r6, 0xC] - ldrb r4, [r6, 0xE] - mov r9, r4 - ldrb r3, [r6, 0x10] - ldr r4, [sp] - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 3 - ldr r4, _080F0784 @ =gUnknown_840C0A4 - adds r0, r4 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - cmp r0, 0x40 - beq _080F0740 - bl sub_80F0674 - mov r0, r10 - lsls r4, r0, 4 - add r4, r10 - lsls r4, 2 - ldr r5, _080F0788 @ =gSprites - adds r7, r4, r5 - ldr r0, _080F078C @ =gUnknown_840C068 - ldr r1, [sp] - adds r0, r1, r0 - ldrb r1, [r0] - adds r0, r7, 0 - bl StartSpriteAnim - adds r5, 0x1C - adds r4, r5 - ldr r0, _080F0790 @ =sub_80F07BC - str r0, [r4] - movs r0, 0x3 - mov r2, r9 - ands r2, r0 - lsls r2, 2 - ldrb r1, [r7, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r7, 0x5] - ldrb r0, [r6, 0x8] - cmp r0, 0x7 - bls _080F073C - subs r0, 0x8 - lsls r0, 24 - lsrs r0, 24 -_080F073C: - lsls r0, 5 - strh r0, [r7, 0x2E] -_080F0740: - ldr r0, _080F0780 @ =gTasks - mov r4, r8 - lsls r1, r4, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r2, 0x8 - ldrsh r1, [r1, r2] - adds r2, r0, 0 - cmp r1, 0xF - bne _080F079C - ldr r0, _080F0794 @ =gMain - ldr r4, _080F0798 @ =0x00000439 - adds r0, r4 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F0776 - ldr r0, _080F0788 @ =gSprites - mov r2, r10 - lsls r1, r2, 4 - add r1, r10 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_080F0776: - mov r0, r8 - bl DestroyTask - b _080F07AC - .align 2, 0 -_080F0780: .4byte gTasks -_080F0784: .4byte gUnknown_840C0A4 -_080F0788: .4byte gSprites -_080F078C: .4byte gUnknown_840C068 -_080F0790: .4byte sub_80F07BC -_080F0794: .4byte gMain -_080F0798: .4byte 0x00000439 -_080F079C: - mov r4, r8 - lsls r0, r4, 2 - add r0, r8 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] -_080F07AC: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80F06A4 - - thumb_func_start sub_80F07BC -sub_80F07BC: @ 80F07BC - push {lr} - adds r1, r0, 0 - ldrh r2, [r1, 0x30] - movs r3, 0x30 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _080F07D4 - ldr r0, _080F07D0 @ =sub_80F07DC - str r0, [r1, 0x1C] - b _080F07D8 - .align 2, 0 -_080F07D0: .4byte sub_80F07DC -_080F07D4: - subs r0, r2, 0x1 - strh r0, [r1, 0x30] -_080F07D8: - pop {r0} - bx r0 - thumb_func_end sub_80F07BC - - thumb_func_start sub_80F07DC -sub_80F07DC: @ 80F07DC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x2 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x32 - bne _080F0810 - adds r0, r4, 0 - bl sub_80F1198 -_080F0810: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F07DC - - thumb_func_start sub_80F0818 -sub_80F0818: @ 80F0818 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, _080F08FC @ =gTasks - mov r2, r9 - lsls r1, r2, 2 - add r1, r9 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldrb r3, [r1, 0xA] - str r3, [sp] - ldrb r0, [r1, 0xC] - str r0, [sp, 0x4] - ldrb r2, [r1, 0xE] - str r2, [sp, 0x8] - ldrb r1, [r1, 0x10] - str r1, [sp, 0xC] - movs r7, 0 - ldr r3, _080F0900 @ =gSprites - mov r10, r3 - mov r1, r8 - lsls r0, r1, 1 - add r0, r8 - lsls r0, 3 - str r0, [sp, 0x10] -_080F085E: - ldr r0, _080F0904 @ =gUnknown_840C0A4 - ldr r2, [sp, 0x10] - adds r0, r2, r0 - ldr r1, [sp] - ldr r2, [sp, 0x4] - ldr r3, [sp, 0xC] - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _080F08BE - bl sub_80F0674 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - mov r3, r10 - adds r5, r4, r3 - ldr r0, _080F0908 @ =gUnknown_840C068 - add r0, r8 - ldrb r1, [r0] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080F090C @ =gSprites + 0x1C - adds r4, r0 - ldr r0, _080F0910 @ =sub_80F0D5C - str r0, [r4] - movs r0, 0x3 - ldr r2, [sp, 0x8] - ands r2, r0 - lsls r2, 2 - ldrb r0, [r5, 0x5] - movs r3, 0xD - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] - lsls r0, r7, 5 - strh r0, [r5, 0x2E] - movs r0, 0xA - strh r0, [r5, 0x36] - movs r0, 0x2 - strh r0, [r5, 0x38] - movs r0, 0x1 - strh r0, [r5, 0x3A] -_080F08BE: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x7 - bls _080F085E - ldr r0, _080F0914 @ =gMain - ldr r1, _080F0918 @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F08E6 - ldr r0, _080F0900 @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_080F08E6: - mov r0, r9 - bl DestroyTask - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F08FC: .4byte gTasks -_080F0900: .4byte gSprites -_080F0904: .4byte gUnknown_840C0A4 -_080F0908: .4byte gUnknown_840C068 -_080F090C: .4byte gSprites + 0x1C -_080F0910: .4byte sub_80F0D5C -_080F0914: .4byte gMain -_080F0918: .4byte 0x00000439 - thumb_func_end sub_80F0818 - - thumb_func_start sub_80F091C -sub_80F091C: @ 80F091C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, _080F0A00 @ =gTasks - mov r2, r9 - lsls r1, r2, 2 - add r1, r9 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldrb r3, [r1, 0xA] - str r3, [sp] - ldrb r0, [r1, 0xC] - str r0, [sp, 0x4] - ldrb r2, [r1, 0xE] - str r2, [sp, 0x8] - ldrb r1, [r1, 0x10] - str r1, [sp, 0xC] - movs r7, 0 - ldr r3, _080F0A04 @ =gSprites - mov r10, r3 - mov r1, r8 - lsls r0, r1, 1 - add r0, r8 - lsls r0, 3 - str r0, [sp, 0x10] -_080F0962: - ldr r0, _080F0A08 @ =gUnknown_840C0A4 - ldr r2, [sp, 0x10] - adds r0, r2, r0 - ldr r1, [sp] - ldr r2, [sp, 0x4] - ldr r3, [sp, 0xC] - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _080F09C2 - bl sub_80F0674 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - mov r3, r10 - adds r5, r4, r3 - ldr r0, _080F0A0C @ =gUnknown_840C068 - add r0, r8 - ldrb r1, [r0] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080F0A10 @ =gSprites + 0x1C - adds r4, r0 - ldr r0, _080F0A14 @ =sub_80F0D5C - str r0, [r4] - movs r0, 0x3 - ldr r2, [sp, 0x8] - ands r2, r0 - lsls r2, 2 - ldrb r0, [r5, 0x5] - movs r3, 0xD - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] - lsls r0, r7, 5 - strh r0, [r5, 0x2E] - movs r0, 0xA - strh r0, [r5, 0x36] - movs r0, 0x1 - strh r0, [r5, 0x38] - movs r0, 0x2 - strh r0, [r5, 0x3A] -_080F09C2: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x7 - bls _080F0962 - ldr r0, _080F0A18 @ =gMain - ldr r1, _080F0A1C @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F09EA - ldr r0, _080F0A04 @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_080F09EA: - mov r0, r9 - bl DestroyTask - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F0A00: .4byte gTasks -_080F0A04: .4byte gSprites -_080F0A08: .4byte gUnknown_840C0A4 -_080F0A0C: .4byte gUnknown_840C068 -_080F0A10: .4byte gSprites + 0x1C -_080F0A14: .4byte sub_80F0D5C -_080F0A18: .4byte gMain -_080F0A1C: .4byte 0x00000439 - thumb_func_end sub_80F091C - - thumb_func_start sub_80F0A20 -sub_80F0A20: @ 80F0A20 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _080F0B00 @ =gTasks - lsls r0, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x26] - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r0, 0xA] - str r2, [sp] - ldrb r3, [r0, 0xC] - str r3, [sp, 0x4] - ldrb r2, [r0, 0xE] - str r2, [sp, 0x8] - ldrb r0, [r0, 0x10] - str r0, [sp, 0xC] - movs r7, 0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - str r0, [sp, 0x10] - ldr r3, _080F0B04 @ =gSprites - mov r8, r3 - ldr r0, _080F0B08 @ =gUnknown_840C068 - adds r1, r0 - mov r10, r1 -_080F0A66: - ldr r0, _080F0B0C @ =gUnknown_840C0A4 - ldr r1, [sp, 0x10] - adds r0, r1, r0 - ldr r1, [sp] - ldr r2, [sp, 0x4] - ldr r3, [sp, 0xC] - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _080F0AC2 - bl sub_80F0674 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - mov r2, r8 - adds r5, r4, r2 - mov r3, r10 - ldrb r1, [r3] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080F0B10 @ =gSprites + 0x1C - adds r4, r0 - ldr r0, _080F0B14 @ =sub_80F0D5C - str r0, [r4] - movs r0, 0x3 - ldr r2, [sp, 0x8] - ands r2, r0 - lsls r2, 2 - ldrb r0, [r5, 0x5] - movs r3, 0xD - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] - lsls r0, r7, 5 - strh r0, [r5, 0x2E] - movs r0, 0x4 - strh r0, [r5, 0x36] - movs r0, 0x1 - strh r0, [r5, 0x38] - strh r0, [r5, 0x3A] -_080F0AC2: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x7 - bls _080F0A66 - ldr r0, _080F0B18 @ =gMain - ldr r1, _080F0B1C @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F0AEA - ldr r0, _080F0B04 @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_080F0AEA: - mov r0, r9 - bl DestroyTask - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F0B00: .4byte gTasks -_080F0B04: .4byte gSprites -_080F0B08: .4byte gUnknown_840C068 -_080F0B0C: .4byte gUnknown_840C0A4 -_080F0B10: .4byte gSprites + 0x1C -_080F0B14: .4byte sub_80F0D5C -_080F0B18: .4byte gMain -_080F0B1C: .4byte 0x00000439 - thumb_func_end sub_80F0A20 - - thumb_func_start sub_80F0B20 -sub_80F0B20: @ 80F0B20 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, _080F0C08 @ =gTasks - mov r2, r9 - lsls r1, r2, 2 - add r1, r9 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldrb r3, [r1, 0xA] - str r3, [sp] - ldrb r0, [r1, 0xC] - str r0, [sp, 0x4] - ldrb r2, [r1, 0xE] - str r2, [sp, 0x8] - ldrb r1, [r1, 0x10] - str r1, [sp, 0xC] - movs r7, 0 - ldr r3, _080F0C0C @ =gSprites - mov r10, r3 - mov r1, r8 - lsls r0, r1, 1 - add r0, r8 - lsls r0, 3 - str r0, [sp, 0x10] -_080F0B66: - ldr r0, _080F0C10 @ =gUnknown_840C0A4 - ldr r2, [sp, 0x10] - adds r0, r2, r0 - ldr r1, [sp] - ldr r2, [sp, 0x4] - ldr r3, [sp, 0xC] - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _080F0BCA - bl sub_80F0674 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - mov r3, r10 - adds r5, r4, r3 - ldr r0, _080F0C14 @ =gUnknown_840C068 - add r0, r8 - ldrb r1, [r0] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080F0C18 @ =gSprites + 0x1C - adds r4, r0 - ldr r0, _080F0C1C @ =sub_80F0D5C - str r0, [r4] - movs r0, 0x3 - ldr r2, [sp, 0x8] - ands r2, r0 - lsls r2, 2 - ldrb r0, [r5, 0x5] - movs r3, 0xD - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 3 - adds r0, r7 - strh r0, [r5, 0x2E] - movs r0, 0x5 - strh r0, [r5, 0x36] - movs r0, 0x1 - strh r0, [r5, 0x38] - strh r0, [r5, 0x3A] -_080F0BCA: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x9 - bls _080F0B66 - ldr r0, _080F0C20 @ =gMain - ldr r1, _080F0C24 @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F0BF2 - ldr r0, _080F0C0C @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_080F0BF2: - mov r0, r9 - bl DestroyTask - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F0C08: .4byte gTasks -_080F0C0C: .4byte gSprites -_080F0C10: .4byte gUnknown_840C0A4 -_080F0C14: .4byte gUnknown_840C068 -_080F0C18: .4byte gSprites + 0x1C -_080F0C1C: .4byte sub_80F0D5C -_080F0C20: .4byte gMain -_080F0C24: .4byte 0x00000439 - thumb_func_end sub_80F0B20 - - thumb_func_start sub_80F0C28 -sub_80F0C28: @ 80F0C28 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _080F0C54 @ =gTasks - lsls r2, r0, 2 - adds r0, r2, r0 - lsls r0, 3 - adds r3, r0, r1 - ldrh r1, [r3, 0x16] - movs r4, 0x16 - ldrsh r0, [r3, r4] - cmp r0, 0 - beq _080F0C58 - subs r0, r1, 0x1 - strh r0, [r3, 0x16] - b _080F0D2A - .align 2, 0 -_080F0C54: .4byte gTasks -_080F0C58: - ldrh r0, [r3, 0x26] - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r3, 0xA] - str r1, [sp] - ldrb r4, [r3, 0xC] - str r4, [sp, 0x4] - ldrb r1, [r3, 0xE] - str r1, [sp, 0x8] - ldrb r3, [r3, 0x10] - str r3, [sp, 0xC] - movs r7, 0 - str r2, [sp, 0x14] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - str r1, [sp, 0x10] - ldr r3, _080F0D3C @ =gSprites - mov r9, r3 - ldr r1, _080F0D40 @ =gUnknown_840C068 - adds r0, r1 - mov r10, r0 -_080F0C84: - ldr r0, _080F0D44 @ =gUnknown_840C0A4 - ldr r4, [sp, 0x10] - adds r0, r4, r0 - ldr r1, [sp] - ldr r2, [sp, 0x4] - ldr r3, [sp, 0xC] - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _080F0CE0 - bl sub_80F0674 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - mov r0, r9 - adds r5, r4, r0 - mov r3, r10 - ldrb r1, [r3] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080F0D48 @ =gSprites + 0x1C - adds r4, r0 - ldr r0, _080F0D4C @ =sub_80F0D5C - str r0, [r4] - movs r0, 0x3 - ldr r2, [sp, 0x8] - ands r2, r0 - lsls r2, 2 - ldrb r0, [r5, 0x5] - movs r3, 0xD - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] - lsls r0, r7, 5 - strh r0, [r5, 0x2E] - movs r0, 0x8 - strh r0, [r5, 0x36] - movs r0, 0x2 - strh r0, [r5, 0x38] - strh r0, [r5, 0x3A] -_080F0CE0: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x7 - bls _080F0C84 - ldr r0, _080F0D50 @ =gTasks - ldr r1, [sp, 0x14] - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r0, 0x8 - strh r0, [r1, 0x16] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0x2 - bne _080F0D2A - ldr r0, _080F0D54 @ =gMain - ldr r4, _080F0D58 @ =0x00000439 - adds r0, r4 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080F0D24 - ldr r0, _080F0D3C @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_080F0D24: - mov r0, r8 - bl DestroyTask -_080F0D2A: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F0D3C: .4byte gSprites -_080F0D40: .4byte gUnknown_840C068 -_080F0D44: .4byte gUnknown_840C0A4 -_080F0D48: .4byte gSprites + 0x1C -_080F0D4C: .4byte sub_80F0D5C -_080F0D50: .4byte gTasks -_080F0D54: .4byte gMain -_080F0D58: .4byte 0x00000439 - thumb_func_end sub_80F0C28 - - thumb_func_start sub_80F0D5C -sub_80F0D5C: @ 80F0D5C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x2E] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x38] - ldrh r2, [r4, 0x30] - adds r0, r2 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x33 - bne _080F0DAC - adds r0, r4, 0 - bl sub_80F1198 -_080F0DAC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F0D5C - - thumb_func_start sub_80F0DB4 -sub_80F0DB4: @ 80F0DB4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _080F0E90 @ =gTasks - lsls r0, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x26] - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r0, 0xA] - str r2, [sp] - ldrb r3, [r0, 0xC] - str r3, [sp, 0x4] - ldrb r2, [r0, 0xE] - str r2, [sp, 0x8] - ldrb r0, [r0, 0x10] - str r0, [sp, 0xC] - movs r7, 0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - str r0, [sp, 0x10] - ldr r3, _080F0E94 @ =gSprites - mov r8, r3 - ldr r0, _080F0E98 @ =gUnknown_840C068 - adds r1, r0 - mov r10, r1 -_080F0DFA: - ldr r0, _080F0E9C @ =gUnknown_840C0A4 - ldr r1, [sp, 0x10] - adds r0, r1, r0 - ldr r1, [sp] - ldr r2, [sp, 0x4] - ldr r3, [sp, 0xC] - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _080F0E52 - bl sub_80F0674 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - mov r2, r8 - adds r5, r4, r2 - mov r3, r10 - ldrb r1, [r3] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080F0EA0 @ =gSprites + 0x1C - adds r4, r0 - ldr r0, _080F0EA4 @ =sub_80F0EB0 - str r0, [r4] - movs r0, 0x3 - ldr r2, [sp, 0x8] - ands r2, r0 - lsls r2, 2 - ldrb r0, [r5, 0x5] - movs r3, 0xD - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 2 - adds r0, r7 - strh r0, [r5, 0x2E] -_080F0E52: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0xB - bls _080F0DFA - ldr r0, _080F0EA8 @ =gMain - ldr r1, _080F0EAC @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F0E7A - ldr r0, _080F0E94 @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_080F0E7A: - mov r0, r9 - bl DestroyTask - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F0E90: .4byte gTasks -_080F0E94: .4byte gSprites -_080F0E98: .4byte gUnknown_840C068 -_080F0E9C: .4byte gUnknown_840C0A4 -_080F0EA0: .4byte gSprites + 0x1C -_080F0EA4: .4byte sub_80F0EB0 -_080F0EA8: .4byte gMain -_080F0EAC: .4byte 0x00000439 - thumb_func_end sub_80F0DB4 - - thumb_func_start sub_80F0EB0 -sub_80F0EB0: @ 80F0EB0 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - movs r2, 0x30 - ldrsh r1, [r5, r2] - bl Sin - strh r0, [r5, 0x24] - movs r0, 0x2E - ldrsh r4, [r5, r0] - movs r2, 0x32 - ldrsh r1, [r5, r2] - adds r0, r4, 0 - bl Sin - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl Cos - strh r0, [r5, 0x26] - ldrh r0, [r5, 0x2E] - adds r0, 0x6 - movs r1, 0xFF - ands r0, r1 - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x30] - adds r0, 0x1 - strh r0, [r5, 0x30] - ldrh r0, [r5, 0x32] - adds r0, 0x1 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x33 - bne _080F0F08 - adds r0, r5, 0 - bl sub_80F1198 -_080F0F08: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80F0EB0 - - thumb_func_start sub_80F0F10 -sub_80F0F10: @ 80F0F10 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - ldr r0, _080F0FC4 @ =gTasks - ldr r2, [sp] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldrb r3, [r1, 0xA] - str r3, [sp, 0x4] - ldrb r0, [r1, 0xC] - str r0, [sp, 0x8] - ldrb r2, [r1, 0xE] - str r2, [sp, 0xC] - ldrb r1, [r1, 0x10] - str r1, [sp, 0x10] - movs r3, 0 - mov r8, r3 - mov r1, r9 - lsls r0, r1, 1 - add r0, r9 - lsls r0, 3 - str r0, [sp, 0x14] -_080F0F54: - movs r7, 0 - movs r2, 0x1 - add r2, r8 - mov r10, r2 -_080F0F5C: - ldr r0, _080F0FC8 @ =gUnknown_840C0A4 - ldr r3, [sp, 0x14] - adds r0, r3, r0 - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - ldr r3, [sp, 0x10] - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _080F0FE4 - bl sub_80F0674 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - ldr r0, _080F0FCC @ =gSprites - adds r5, r4, r0 - ldr r0, _080F0FD0 @ =gUnknown_840C068 - add r0, r9 - ldrb r1, [r0] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r1, _080F0FD4 @ =gSprites + 0x1C - adds r4, r1 - ldr r0, _080F0FD8 @ =sub_80F0D5C - str r0, [r4] - movs r0, 0x3 - ldr r1, [sp, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r0, [r5, 0x5] - movs r3, 0xD - negs r3, r3 - adds r2, r3, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] - lsls r0, r7, 5 - strh r0, [r5, 0x2E] - movs r0, 0x8 - strh r0, [r5, 0x36] - mov r0, r8 - cmp r0, 0 - bne _080F0FDC - movs r0, 0x2 - strh r0, [r5, 0x38] - movs r0, 0x1 - b _080F0FE2 - .align 2, 0 -_080F0FC4: .4byte gTasks -_080F0FC8: .4byte gUnknown_840C0A4 -_080F0FCC: .4byte gSprites -_080F0FD0: .4byte gUnknown_840C068 -_080F0FD4: .4byte gSprites + 0x1C -_080F0FD8: .4byte sub_80F0D5C -_080F0FDC: - movs r0, 0x1 - strh r0, [r5, 0x38] - movs r0, 0x2 -_080F0FE2: - strh r0, [r5, 0x3A] -_080F0FE4: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x7 - bls _080F0F5C - mov r1, r10 - lsls r0, r1, 24 - lsrs r0, 24 - mov r8, r0 - cmp r0, 0x1 - bls _080F0F54 - ldr r0, _080F1030 @ =gMain - ldr r2, _080F1034 @ =0x00000439 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F1018 - ldr r0, _080F1038 @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_080F1018: - ldr r0, [sp] - bl DestroyTask - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F1030: .4byte gMain -_080F1034: .4byte 0x00000439 -_080F1038: .4byte gSprites - thumb_func_end sub_80F0F10 - - thumb_func_start sub_80F103C -sub_80F103C: @ 80F103C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _080F1114 @ =gTasks - lsls r0, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x26] - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r0, 0xA] - str r2, [sp] - ldrb r3, [r0, 0xC] - str r3, [sp, 0x4] - ldrb r2, [r0, 0xE] - str r2, [sp, 0x8] - ldrb r0, [r0, 0x10] - str r0, [sp, 0xC] - movs r7, 0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - str r0, [sp, 0x10] - ldr r3, _080F1118 @ =gSprites - mov r8, r3 - ldr r0, _080F111C @ =gUnknown_840C068 - adds r1, r0 - mov r10, r1 -_080F1082: - ldr r0, _080F1120 @ =gUnknown_840C0A4 - ldr r1, [sp, 0x10] - adds r0, r1, r0 - ldr r1, [sp] - ldr r2, [sp, 0x4] - ldr r3, [sp, 0xC] - bl CreateSprite - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x40 - beq _080F10D4 - bl sub_80F0674 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - mov r2, r8 - adds r5, r4, r2 - mov r3, r10 - ldrb r1, [r3] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080F1124 @ =gSprites + 0x1C - adds r4, r0 - ldr r0, _080F1128 @ =sub_80F1134 - str r0, [r4] - movs r0, 0x3 - ldr r2, [sp, 0x8] - ands r2, r0 - lsls r2, 2 - ldrb r0, [r5, 0x5] - movs r3, 0xD - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] - lsls r0, r7, 5 - strh r0, [r5, 0x2E] -_080F10D4: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x7 - bls _080F1082 - ldr r0, _080F112C @ =gMain - ldr r1, _080F1130 @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F10FC - ldr r0, _080F1118 @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_080F10FC: - mov r0, r9 - bl DestroyTask - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F1114: .4byte gTasks -_080F1118: .4byte gSprites -_080F111C: .4byte gUnknown_840C068 -_080F1120: .4byte gUnknown_840C0A4 -_080F1124: .4byte gSprites + 0x1C -_080F1128: .4byte sub_80F1134 -_080F112C: .4byte gMain -_080F1130: .4byte 0x00000439 - thumb_func_end sub_80F103C - - thumb_func_start sub_80F1134 -sub_80F1134: @ 80F1134 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - movs r2, 0x30 - ldrsh r1, [r5, r2] - bl Sin - strh r0, [r5, 0x24] - movs r0, 0x2E - ldrsh r4, [r5, r0] - ldrh r1, [r5, 0x2E] - movs r0, 0x3F - ands r0, r1 - movs r2, 0x32 - ldrsh r1, [r5, r2] - bl Sin - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl Cos - strh r0, [r5, 0x26] - ldrh r0, [r5, 0x2E] - adds r0, 0xA - movs r1, 0xFF - ands r0, r1 - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x30] - adds r0, 0x1 - strh r0, [r5, 0x30] - ldrh r0, [r5, 0x32] - adds r0, 0x1 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x33 - bne _080F1190 - adds r0, r5, 0 - bl sub_80F1198 -_080F1190: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80F1134 - - thumb_func_start sub_80F1198 -sub_80F1198: @ 80F1198 - push {r4-r7,lr} - adds r7, r0, 0 - ldr r0, _080F11BC @ =gMain - ldr r1, _080F11C0 @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F11C4 - movs r1, 0x3C - ldrsh r0, [r7, r1] - cmp r0, 0x1 - bne _080F11F6 - adds r0, r7, 0 - bl DestroySpriteAndFreeResources - b _080F1212 - .align 2, 0 -_080F11BC: .4byte gMain -_080F11C0: .4byte 0x00000439 -_080F11C4: - ldr r2, _080F1200 @ =gBattleSpritesDataPtr - ldr r0, [r2] - ldr r1, [r0, 0x8] - ldrb r0, [r1, 0xA] - subs r0, 0x1 - strb r0, [r1, 0xA] - ldr r0, [r2] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0xA] - cmp r0, 0 - bne _080F120C - movs r6, 0 - ldr r5, _080F1204 @ =gUnknown_840BF48 - ldr r4, _080F1208 @ =gUnknown_840BFA8 -_080F11E0: - ldrh r0, [r5, 0x6] - bl FreeSpriteTilesByTag - ldrh r0, [r4, 0x4] - bl FreeSpritePaletteByTag - adds r5, 0x8 - adds r4, 0x8 - adds r6, 0x1 - cmp r6, 0xB - ble _080F11E0 -_080F11F6: - adds r0, r7, 0 - bl DestroySprite - b _080F1212 - .align 2, 0 -_080F1200: .4byte gBattleSpritesDataPtr -_080F1204: .4byte gUnknown_840BF48 -_080F1208: .4byte gUnknown_840BFA8 -_080F120C: - adds r0, r7, 0 - bl DestroySprite -_080F1212: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80F1198 - - thumb_func_start LaunchBallFadeMonTask -LaunchBallFadeMonTask: @ 80F1218 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r4, r0, 0 - mov r9, r2 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r3, 24 - lsrs r7, r3, 24 - ldr r0, _080F127C @ =sub_80F12E0 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _080F1280 @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r5, r0, r1 - strh r7, [r5, 0x26] - strh r6, [r5, 0xE] - mov r0, r9 - strh r0, [r5, 0x1C] - mov r1, r9 - lsrs r0, r1, 16 - strh r0, [r5, 0x1E] - cmp r4, 0 - bne _080F1288 - lsls r0, r6, 20 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r0, 16 - ldr r2, _080F1284 @ =gUnknown_840C1C4 - lsls r1, r7, 1 - adds r1, r2 - ldrh r3, [r1] - movs r1, 0x10 - movs r2, 0 - bl BlendPalette - movs r0, 0x1 - strh r0, [r5, 0xA] - b _080F12AE - .align 2, 0 -_080F127C: .4byte sub_80F12E0 -_080F1280: .4byte gTasks -_080F1284: .4byte gUnknown_840C1C4 -_080F1288: - lsls r0, r6, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r0, 16 - ldr r2, _080F12D0 @ =gUnknown_840C1C4 - lsls r1, r7, 1 - adds r1, r2 - ldrh r3, [r1] - movs r1, 0x10 - movs r2, 0x10 - bl BlendPalette - movs r0, 0x10 - strh r0, [r5, 0x8] - ldr r0, _080F12D4 @ =0x0000ffff - strh r0, [r5, 0xA] - ldr r0, _080F12D8 @ =sub_80F1370 - str r0, [r5] -_080F12AE: - ldr r0, _080F12DC @ =0x00007fff - str r0, [sp] - mov r0, r9 - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - mov r0, r8 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080F12D0: .4byte gUnknown_840C1C4 -_080F12D4: .4byte 0x0000ffff -_080F12D8: .4byte sub_80F1370 -_080F12DC: .4byte 0x00007fff - thumb_func_end LaunchBallFadeMonTask - - thumb_func_start sub_80F12E0 -sub_80F12E0: @ 80F12E0 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _080F1330 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r1, r0, 24 - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0x10 - bgt _080F1338 - movs r2, 0xE - ldrsh r0, [r4, r2] - lsls r0, 20 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r0, 16 - ldrb r2, [r4, 0x8] - ldr r3, _080F1334 @ =gUnknown_840C1C4 - lsls r1, 1 - adds r1, r3 - ldrh r3, [r1] - movs r1, 0x10 - bl BlendPalette - ldrh r0, [r4, 0xA] - ldrh r1, [r4, 0x8] - adds r0, r1 - strh r0, [r4, 0x8] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - b _080F1360 - .align 2, 0 -_080F1330: .4byte gTasks -_080F1334: .4byte gUnknown_840C1C4 -_080F1338: - ldr r0, _080F1368 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080F1360 - ldrh r0, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - lsls r1, 16 - orrs r0, r1 - ldr r1, _080F136C @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - adds r0, r5, 0 - bl DestroyTask -_080F1360: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F1368: .4byte gPaletteFade -_080F136C: .4byte 0x00007fff - thumb_func_end sub_80F12E0 - - thumb_func_start sub_80F1370 -sub_80F1370: @ 80F1370 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080F13B0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080F13A8 - ldr r0, _080F13B4 @ =gTasks - lsls r4, r2, 2 - adds r4, r2 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - lsls r1, 16 - orrs r0, r1 - ldr r1, _080F13B8 @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _080F13BC @ =sub_80F13C0 - str r0, [r4] -_080F13A8: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F13B0: .4byte gPaletteFade -_080F13B4: .4byte gTasks -_080F13B8: .4byte 0x00007fff -_080F13BC: .4byte sub_80F13C0 - thumb_func_end sub_80F1370 - - thumb_func_start sub_80F13C0 -sub_80F13C0: @ 80F13C0 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080F140C @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r1, r0, 24 - movs r3, 0xC - ldrsh r0, [r4, r3] - cmp r0, 0x10 - bgt _080F1414 - movs r2, 0xE - ldrsh r0, [r4, r2] - lsls r0, 20 - movs r3, 0x80 - lsls r3, 17 - adds r0, r3 - lsrs r0, 16 - ldrb r2, [r4, 0x8] - ldr r3, _080F1410 @ =gUnknown_840C1C4 - lsls r1, 1 - adds r1, r3 - ldrh r3, [r1] - movs r1, 0x10 - bl BlendPalette - ldrh r0, [r4, 0xA] - ldrh r1, [r4, 0x8] - adds r0, r1 - strh r0, [r4, 0x8] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - b _080F141A - .align 2, 0 -_080F140C: .4byte gTasks -_080F1410: .4byte gUnknown_840C1C4 -_080F1414: - adds r0, r2, 0 - bl DestroyTask -_080F141A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F13C0 - - thumb_func_start sub_80F1420 -sub_80F1420: @ 80F1420 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0 - mov r8, r0 - ldr r0, _080F1454 @ =gBattlerSpriteIds - ldr r3, _080F1458 @ =gBattleAnimAttacker - ldrb r2, [r3] - adds r0, r2, r0 - ldrb r6, [r0] - ldr r1, _080F145C @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0x1C - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080F14F8 - cmp r0, 0x1 - bgt _080F1460 - cmp r0, 0 - beq _080F1466 - b _080F15BA - .align 2, 0 -_080F1454: .4byte gBattlerSpriteIds -_080F1458: .4byte gBattleAnimAttacker -_080F145C: .4byte gTasks -_080F1460: - cmp r0, 0x2 - beq _080F150A - b _080F15BA -_080F1466: - ldr r0, _080F14A0 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r5, 0x1E] - movs r2, 0xA0 - lsls r2, 3 - adds r0, r2, 0 - ldrh r4, [r5, 0x8] - adds r0, r4 - strh r0, [r5, 0x8] - ldrb r0, [r3] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080F14A8 - ldr r2, _080F14A4 @ =gSprites - lsls r3, r6, 4 - adds r1, r3, r6 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 24 - ldrh r4, [r1, 0x24] - adds r0, r4 - strh r0, [r1, 0x24] - adds r4, r3, 0 - b _080F14C0 - .align 2, 0 -_080F14A0: .4byte gBattleAnimArgs -_080F14A4: .4byte gSprites -_080F14A8: - ldr r3, _080F14F0 @ =gSprites - lsls r4, r6, 4 - adds r2, r4, r6 - lsls r2, 2 - adds r2, r3 - ldrh r1, [r5, 0x8] - lsls r1, 16 - asrs r1, 24 - ldrh r0, [r2, 0x24] - subs r0, r1 - strh r0, [r2, 0x24] - adds r2, r3, 0 -_080F14C0: - ldr r1, _080F14F4 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r3, r0, r1 - ldrb r0, [r3, 0x8] - strh r0, [r3, 0x8] - adds r0, r4, r6 - lsls r0, 2 - adds r0, r2 - movs r2, 0x20 - ldrsh r1, [r0, r2] - movs r4, 0x24 - ldrsh r0, [r0, r4] - adds r1, r0 - adds r1, 0x20 - movs r0, 0x98 - lsls r0, 1 - cmp r1, r0 - bls _080F15BA - ldrh r0, [r3, 0x1C] - adds r0, 0x1 - strh r0, [r3, 0x1C] - b _080F15BA - .align 2, 0 -_080F14F0: .4byte gSprites -_080F14F4: .4byte gTasks -_080F14F8: - ldrb r1, [r5, 0x1E] - adds r0, r2, 0 - adds r2, r6, 0 - bl LoadBattleMonGfxAndAnimate - ldrh r0, [r5, 0x1C] - adds r0, 0x1 - strh r0, [r5, 0x1C] - b _080F15BA -_080F150A: - movs r1, 0xA0 - lsls r1, 3 - adds r0, r1, 0 - ldrh r2, [r5, 0x8] - adds r0, r2 - strh r0, [r5, 0x8] - ldrb r0, [r3] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080F1540 - ldr r0, _080F153C @ =gSprites - lsls r3, r6, 4 - adds r2, r3, r6 - lsls r2, 2 - adds r2, r0 - ldrh r1, [r5, 0x8] - lsls r1, 16 - asrs r1, 24 - ldrh r0, [r2, 0x24] - subs r0, r1 - strh r0, [r2, 0x24] - adds r4, r3, 0 - b _080F1558 - .align 2, 0 -_080F153C: .4byte gSprites -_080F1540: - ldr r0, _080F158C @ =gSprites - lsls r2, r6, 4 - adds r1, r2, r6 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 24 - ldrh r3, [r1, 0x24] - adds r0, r3 - strh r0, [r1, 0x24] - adds r4, r2, 0 -_080F1558: - ldr r1, _080F1590 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0, 0x8] - strh r1, [r0, 0x8] - ldr r0, _080F1594 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _080F1598 - ldr r0, _080F158C @ =gSprites - adds r1, r4, r6 - lsls r1, 2 - adds r1, r0 - movs r4, 0x24 - ldrsh r0, [r1, r4] - cmp r0, 0 - bgt _080F15AE - movs r0, 0 - strh r0, [r1, 0x24] - b _080F15B4 - .align 2, 0 -_080F158C: .4byte gSprites -_080F1590: .4byte gTasks -_080F1594: .4byte gBattleAnimAttacker -_080F1598: - ldr r0, _080F15C4 @ =gSprites - adds r1, r4, r6 - lsls r1, 2 - adds r1, r0 - movs r3, 0x24 - ldrsh r0, [r1, r3] - cmp r0, 0 - blt _080F15AE - strh r2, [r1, 0x24] - movs r4, 0x1 - mov r8, r4 -_080F15AE: - mov r0, r8 - cmp r0, 0 - beq _080F15BA -_080F15B4: - adds r0, r7, 0 - bl DestroyAnimVisualTask -_080F15BA: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F15C4: .4byte gSprites - thumb_func_end sub_80F1420 - - thumb_func_start sub_80F15C8 -sub_80F15C8: @ 80F15C8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080F15EC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x26 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080F1644 - cmp r0, 0x1 - bgt _080F15F0 - cmp r0, 0 - beq _080F15F6 - b _080F16B4 - .align 2, 0 -_080F15EC: .4byte gTasks -_080F15F0: - cmp r0, 0x2 - beq _080F167E - b _080F16B4 -_080F15F6: - ldr r0, _080F1610 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSpriteBGPriorityRank - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080F1618 - ldr r1, _080F1614 @ =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - b _080F1620 - .align 2, 0 -_080F1610: .4byte gBattleAnimAttacker -_080F1614: .4byte 0x00003f42 -_080F1618: - ldr r1, _080F163C @ =0x00003f44 - movs r0, 0x50 - bl SetGpuReg -_080F1620: - movs r0, 0x52 - movs r1, 0x10 - bl SetGpuReg - ldr r0, _080F1640 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _080F16B4 - .align 2, 0 -_080F163C: .4byte 0x00003f44 -_080F1640: .4byte gTasks -_080F1644: - ldrh r0, [r4, 0xA] - adds r1, r0, 0x1 - strh r1, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080F16B4 - movs r0, 0 - strh r0, [r4, 0xA] - ldrh r2, [r4, 0x8] - adds r2, 0x1 - strh r2, [r4, 0x8] - lsls r1, r2, 8 - movs r0, 0x10 - subs r0, r2 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _080F16B4 - ldrh r0, [r4, 0x26] - adds r0, 0x1 - strh r0, [r4, 0x26] - b _080F16B4 -_080F167E: - ldr r1, _080F16BC @ =gBattlerSpriteIds - ldr r4, _080F16C0 @ =gBattleAnimAttacker - ldrb r0, [r4] - adds r0, r1 - ldrb r1, [r0] - ldr r2, _080F16C4 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x4] - lsls r1, 22 - lsrs r1, 17 - ldr r0, _080F16C8 @ =0x06010000 - adds r1, r0 - movs r2, 0x80 - lsls r2, 4 - movs r0, 0 - movs r3, 0x1 - bl RequestDma3Fill - ldrb r0, [r4] - bl ClearBehindSubstituteBit - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080F16B4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F16BC: .4byte gBattlerSpriteIds -_080F16C0: .4byte gBattleAnimAttacker -_080F16C4: .4byte gSprites -_080F16C8: .4byte 0x06010000 - thumb_func_end sub_80F15C8 - - thumb_func_start sub_80F16CC -sub_80F16CC: @ 80F16CC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080F16F4 @ =gBattleAnimArgs - ldr r1, _080F16F8 @ =gBattleSpritesDataPtr - ldr r2, [r1] - ldr r1, _080F16FC @ =gBattleAnimAttacker - ldrb r1, [r1] - ldr r2, [r2] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - lsls r1, 29 - lsrs r1, 31 - strh r1, [r3, 0xE] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080F16F4: .4byte gBattleAnimArgs -_080F16F8: .4byte gBattleSpritesDataPtr -_080F16FC: .4byte gBattleAnimAttacker - thumb_func_end sub_80F16CC - - thumb_func_start sub_80F1700 -sub_80F1700: @ 80F1700 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080F1718 @ =gBattleAnimTarget - ldr r1, _080F171C @ =gEffectBattler - ldrb r1, [r1] - strb r1, [r2] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080F1718: .4byte gBattleAnimTarget -_080F171C: .4byte gEffectBattler - thumb_func_end sub_80F1700 - - thumb_func_start sub_80F1720 -sub_80F1720: @ 80F1720 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r1, 0 - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0 - mov r8, r0 - ldr r0, _080F17DC @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - adds r5, r0, 0 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r4, r0, 0 - adds r0, r6, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080F17F8 - lsrs r0, r5, 16 - ldr r7, _080F17E0 @ =0x0000ffff - ands r5, r7 - eors r0, r5 - lsrs r1, r4, 16 - eors r0, r1 - ands r4, r7 - eors r0, r4 - cmp r0, 0x7 - bhi _080F177E - movs r0, 0x1 - mov r8, r0 -_080F177E: - mov r0, r8 - cmp r0, 0 - beq _080F17F8 - ldr r0, _080F17E4 @ =0x000027f9 - bl GetSpriteTileStartByTag - lsls r0, 16 - lsrs r0, 16 - cmp r0, r7 - bne _080F179E - ldr r0, _080F17E8 @ =gUnknown_83AD350 - bl LoadCompressedSpriteSheetUsingHeap - ldr r0, _080F17EC @ =gUnknown_83ADC58 - bl LoadCompressedSpritePaletteUsingHeap -_080F179E: - ldr r5, _080F17F0 @ =sub_80F181C - adds r0, r5, 0 - movs r1, 0xA - bl CreateTask - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080F17F4 @ =gTasks - lsls r2, r4, 2 - adds r2, r4 - lsls r2, 3 - adds r2, r3 - movs r4, 0 - strh r6, [r2, 0x8] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r3 - strh r6, [r1, 0x8] - strh r4, [r2, 0xA] - movs r0, 0x1 - strh r0, [r1, 0xA] - b _080F180E - .align 2, 0 -_080F17DC: .4byte gBattleSpritesDataPtr -_080F17E0: .4byte 0x0000ffff -_080F17E4: .4byte 0x000027f9 -_080F17E8: .4byte gUnknown_83AD350 -_080F17EC: .4byte gUnknown_83ADC58 -_080F17F0: .4byte sub_80F181C -_080F17F4: .4byte gTasks -_080F17F8: - ldr r0, _080F1818 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x1] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0, 0x1] -_080F180E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F1818: .4byte gBattleSpritesDataPtr - thumb_func_end sub_80F1720 - - thumb_func_start sub_80F181C -sub_80F181C: @ 80F181C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080F1844 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r4, r0, r1 - ldrh r1, [r4, 0x22] - movs r2, 0x22 - ldrsh r0, [r4, r2] - cmp r0, 0x3B - bgt _080F1848 - adds r0, r1, 0x1 - strh r0, [r4, 0x22] - b _080F19C0 - .align 2, 0 -_080F1844: .4byte gTasks -_080F1848: - ldr r0, _080F189C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0xA] - cmp r0, 0 - beq _080F1856 - b _080F19C0 -_080F1856: - ldrh r0, [r4, 0x1C] - adds r1, r0, 0x1 - strh r1, [r4, 0x1C] - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - cmp r1, 0 - beq _080F186A - b _080F19C0 -_080F186A: - ldrb r0, [r4, 0x8] - mov r8, r0 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r8 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r2, r0, 24 - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080F18A4 - ldr r0, _080F18A0 @ =gUnknown_83FF168 - adds r1, r5, 0 - movs r3, 0x5 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - b _080F1906 - .align 2, 0 -_080F189C: .4byte gBattleSpritesDataPtr -_080F18A0: .4byte gUnknown_83FF168 -_080F18A4: - cmp r0, 0 - blt _080F18D8 - cmp r0, 0x3 - bgt _080F18D8 - ldr r0, _080F18D0 @ =gUnknown_83FF180 - adds r1, r5, 0 - movs r3, 0x5 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080F18D4 @ =gSprites - lsls r2, r5, 4 - adds r2, r5 - lsls r2, 2 - adds r2, r0 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x4 - b _080F18F8 - .align 2, 0 -_080F18D0: .4byte gUnknown_83FF180 -_080F18D4: .4byte gSprites -_080F18D8: - ldr r0, _080F1930 @ =gUnknown_83FF180 - adds r1, r5, 0 - movs r3, 0x5 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080F1934 @ =gSprites - lsls r2, r5, 4 - adds r2, r5 - lsls r2, 2 - adds r2, r0 - ldrh r3, [r2, 0x4] - lsls r1, r3, 22 - lsrs r1, 22 - adds r1, 0x5 -_080F18F8: - ldr r4, _080F1938 @ =0x000003ff - adds r0, r4, 0 - ands r1, r0 - ldr r0, _080F193C @ =0xfffffc00 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, 0x4] -_080F1906: - ldr r2, _080F1940 @ =gTasks - lsls r1, r7, 2 - adds r0, r1, r7 - lsls r0, 3 - adds r6, r0, r2 - movs r2, 0xA - ldrsh r0, [r6, r2] - mov r9, r1 - cmp r0, 0 - bne _080F1948 - ldr r1, _080F1934 @ =gSprites - lsls r2, r5, 4 - adds r0, r2, r5 - lsls r0, 2 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080F1944 @ =sub_80F1A2C - str r1, [r0] - adds r4, r2, 0 - b _080F1990 - .align 2, 0 -_080F1930: .4byte gUnknown_83FF180 -_080F1934: .4byte gSprites -_080F1938: .4byte 0x000003ff -_080F193C: .4byte 0xfffffc00 -_080F1940: .4byte gTasks -_080F1944: .4byte sub_80F1A2C -_080F1948: - ldr r3, _080F19CC @ =gSprites - lsls r4, r5, 4 - adds r1, r4, r5 - lsls r1, 2 - adds r0, r3, 0 - adds r0, 0x1C - adds r0, r1, r0 - ldr r2, _080F19D0 @ =sub_80F1A80 - str r2, [r0] - adds r1, r3 - ldr r0, _080F19D4 @ =0x0000ffe0 - strh r0, [r1, 0x24] - movs r0, 0x20 - strh r0, [r1, 0x26] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - movs r1, 0x1E - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080F1990 - mov r0, r8 - bl GetBattlerSide - lsls r0, 24 - movs r1, 0x3F - cmp r0, 0 - bne _080F1986 - movs r1, 0xC0 -_080F1986: - lsls r1, 24 - asrs r1, 24 - movs r0, 0x5F - bl PlaySE12WithPanning -_080F1990: - ldr r1, _080F19CC @ =gSprites - adds r0, r4, r5 - lsls r0, 2 - adds r0, r1 - strh r7, [r0, 0x2E] - ldr r1, _080F19D8 @ =gTasks - mov r2, r9 - adds r0, r2, r7 - lsls r0, 3 - adds r1, r0, r1 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - strh r0, [r1, 0x1E] - cmp r5, 0x40 - beq _080F19B4 - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] -_080F19B4: - movs r4, 0x1E - ldrsh r0, [r1, r4] - cmp r0, 0x5 - bne _080F19C0 - ldr r0, _080F19DC @ =sub_80F19E0 - str r0, [r1] -_080F19C0: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F19CC: .4byte gSprites -_080F19D0: .4byte sub_80F1A80 -_080F19D4: .4byte 0x0000ffe0 -_080F19D8: .4byte gTasks -_080F19DC: .4byte sub_80F19E0 - thumb_func_end sub_80F181C - - thumb_func_start sub_80F19E0 -sub_80F19E0: @ 80F19E0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - adds r3, r0, 0 - ldr r1, _080F1A24 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r1, r0, r1 - movs r2, 0x20 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080F1A20 - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0x1 - bne _080F1A1A - ldrb r1, [r1, 0x8] - ldr r0, _080F1A28 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x1] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0, 0x1] -_080F1A1A: - adds r0, r3, 0 - bl DestroyTask -_080F1A20: - pop {r0} - bx r0 - .align 2, 0 -_080F1A24: .4byte gTasks -_080F1A28: .4byte gBattleSpritesDataPtr - thumb_func_end sub_80F19E0 - - thumb_func_start sub_80F1A2C -sub_80F1A2C: @ 80F1A2C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x18 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x18 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0xC - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080F1A76 - ldr r2, _080F1A7C @ =gTasks - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0x20] - subs r1, 0x1 - strh r1, [r0, 0x20] - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite -_080F1A76: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F1A7C: .4byte gTasks - thumb_func_end sub_80F1A2C - - thumb_func_start sub_80F1A80 -sub_80F1A80: @ 80F1A80 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0x3 - bgt _080F1A94 - adds r0, r1, 0x1 - strh r0, [r4, 0x30] - b _080F1AD6 -_080F1A94: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrh r1, [r4, 0x24] - adds r1, 0x5 - strh r1, [r4, 0x24] - ldrh r0, [r4, 0x26] - subs r0, 0x5 - strh r0, [r4, 0x26] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x20 - ble _080F1AD6 - ldr r2, _080F1ADC @ =gTasks - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0x20] - subs r1, 0x1 - strh r1, [r0, 0x20] - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite -_080F1AD6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F1ADC: .4byte gTasks - thumb_func_end sub_80F1A80 - - thumb_func_start sub_80F1AE0 -sub_80F1AE0: @ 80F1AE0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080F1B08 @ =gUnknown_83AD470 - bl LoadCompressedSpriteSheetUsingHeap - ldr r0, _080F1B0C @ =gUnknown_83ADD78 - bl LoadCompressedSpritePaletteUsingHeap - ldr r0, _080F1B10 @ =0x0000281d - bl IndexOfSpritePaletteTag - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F1B08: .4byte gUnknown_83AD470 -_080F1B0C: .4byte gUnknown_83ADD78 -_080F1B10: .4byte 0x0000281d - thumb_func_end sub_80F1AE0 - - thumb_func_start sub_80F1B14 -sub_80F1B14: @ 80F1B14 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _080F1B38 @ =0x0000281d - adds r0, r5, 0 - bl FreeSpriteTilesByTag - adds r0, r5, 0 - bl FreeSpritePaletteByTag - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F1B38: .4byte 0x0000281d - thumb_func_end sub_80F1B14 - - thumb_func_start sub_80F1B3C -sub_80F1B3C: @ 80F1B3C - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0 - bl InitSpritePosToAnimAttacker - movs r0, 0x1E - strh r0, [r4, 0x2E] - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r5, _080F1BB0 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r5, 0x4] - adds r0, r1 - strh r0, [r4, 0x32] - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x6] - adds r0, r5 - strh r0, [r4, 0x36] - ldr r0, _080F1BB4 @ =0x0000ffe0 - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl InitAnimArcTranslation - ldr r2, _080F1BB8 @ =gSprites - ldr r1, _080F1BBC @ =gBattlerSpriteIds - ldr r0, _080F1BC0 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _080F1BC4 @ =sub_8012354 - str r1, [r0] - ldr r0, _080F1BC8 @ =sub_80F1BCC - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F1BB0: .4byte gBattleAnimArgs -_080F1BB4: .4byte 0x0000ffe0 -_080F1BB8: .4byte gSprites -_080F1BBC: .4byte gBattlerSpriteIds -_080F1BC0: .4byte gBattleAnimAttacker -_080F1BC4: .4byte sub_8012354 -_080F1BC8: .4byte sub_80F1BCC - thumb_func_end sub_80F1B3C - - thumb_func_start sub_80F1BCC -sub_80F1BCC: @ 80F1BCC - push {lr} - adds r3, r0, 0 - ldr r2, _080F1BF4 @ =gSprites - ldr r1, _080F1BF8 @ =gBattlerSpriteIds - ldr r0, _080F1BFC @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x2B - ldrb r0, [r0] - cmp r0, 0x1 - bne _080F1BF0 - ldr r0, _080F1C00 @ =sub_80F1C04 - str r0, [r3, 0x1C] -_080F1BF0: - pop {r0} - bx r0 - .align 2, 0 -_080F1BF4: .4byte gSprites -_080F1BF8: .4byte gBattlerSpriteIds -_080F1BFC: .4byte gBattleAnimAttacker -_080F1C00: .4byte sub_80F1C04 - thumb_func_end sub_80F1BCC - - thumb_func_start sub_80F1C04 -sub_80F1C04: @ 80F1C04 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - beq _080F1C26 - movs r0, 0 - strh r0, [r4, 0x2E] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080F1C2C @ =sub_80F1C30 - str r0, [r4, 0x1C] -_080F1C26: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F1C2C: .4byte sub_80F1C30 - thumb_func_end sub_80F1C04 - - thumb_func_start sub_80F1C30 -sub_80F1C30: @ 80F1C30 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080F1C80 @ =gSprites - ldr r3, _080F1C84 @ =gBattlerSpriteIds - ldr r2, _080F1C88 @ =gBattleAnimAttacker - ldrb r0, [r2] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - cmp r0, 0 - bge _080F1C78 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - ble _080F1C78 - ldrb r0, [r2] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl DestroyAnimSprite -_080F1C78: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F1C80: .4byte gSprites -_080F1C84: .4byte gBattlerSpriteIds -_080F1C88: .4byte gBattleAnimAttacker - thumb_func_end sub_80F1C30 - - thumb_func_start sub_80F1C8C -sub_80F1C8C: @ 80F1C8C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080F1CA4 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _080F1CA8 - cmp r0, 0x1 - beq _080F1CBC - b _080F1CD0 - .align 2, 0 -_080F1CA4: .4byte gBattleAnimArgs -_080F1CA8: - movs r0, 0 - bl GetBattlerAtPosition - ldr r1, _080F1CB8 @ =gBattleAnimAttacker - strb r0, [r1] - movs r0, 0x1 - b _080F1CC8 - .align 2, 0 -_080F1CB8: .4byte gBattleAnimAttacker -_080F1CBC: - movs r0, 0x1 - bl GetBattlerAtPosition - ldr r1, _080F1CDC @ =gBattleAnimAttacker - strb r0, [r1] - movs r0, 0 -_080F1CC8: - bl GetBattlerAtPosition - ldr r1, _080F1CE0 @ =gBattleAnimTarget - strb r0, [r1] -_080F1CD0: - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F1CDC: .4byte gBattleAnimAttacker -_080F1CE0: .4byte gBattleAnimTarget - thumb_func_end sub_80F1C8C - - thumb_func_start sub_80F1CE4 -sub_80F1CE4: @ 80F1CE4 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, _080F1CF8 @ =gBattleCommunication - ldrb r0, [r2, 0x5] - cmp r0, 0x2 - bls _080F1D00 - ldr r1, _080F1CFC @ =gBattleAnimArgs - movs r0, 0 - b _080F1D04 - .align 2, 0 -_080F1CF8: .4byte gBattleCommunication -_080F1CFC: .4byte gBattleAnimArgs -_080F1D00: - ldr r1, _080F1D10 @ =gBattleAnimArgs - ldrb r0, [r2, 0x5] -_080F1D04: - strh r0, [r1, 0xE] - adds r0, r3, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080F1D10: .4byte gBattleAnimArgs - thumb_func_end sub_80F1CE4 - - thumb_func_start sub_80F1D14 -sub_80F1D14: @ 80F1D14 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080F1D2C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrh r1, [r0] - cmp r1, 0x53 - bne _080F1D34 - ldr r1, _080F1D30 @ =gBattleAnimArgs - movs r0, 0x1 - b _080F1D6C - .align 2, 0 -_080F1D2C: .4byte gBattleSpritesDataPtr -_080F1D30: .4byte gBattleAnimArgs -_080F1D34: - cmp r1, 0xFA - bne _080F1D44 - ldr r1, _080F1D40 @ =gBattleAnimArgs - movs r0, 0x2 - b _080F1D6C - .align 2, 0 -_080F1D40: .4byte gBattleAnimArgs -_080F1D44: - cmp r1, 0x80 - bne _080F1D54 - ldr r1, _080F1D50 @ =gBattleAnimArgs - movs r0, 0x3 - b _080F1D6C - .align 2, 0 -_080F1D50: .4byte gBattleAnimArgs -_080F1D54: - movs r0, 0xA4 - lsls r0, 1 - cmp r1, r0 - bne _080F1D68 - ldr r1, _080F1D64 @ =gBattleAnimArgs - movs r0, 0x4 - b _080F1D6C - .align 2, 0 -_080F1D64: .4byte gBattleAnimArgs -_080F1D68: - ldr r1, _080F1D78 @ =gBattleAnimArgs - movs r0, 0 -_080F1D6C: - strh r0, [r1] - adds r0, r2, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080F1D78: .4byte gBattleAnimArgs - thumb_func_end sub_80F1D14 - - thumb_func_start sub_80F1D7C -sub_80F1D7C: @ 80F1D7C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080F1DA0 @ =gBattleAnimAttacker - ldr r1, _080F1DA4 @ =gBattleSpritesDataPtr - ldr r2, [r1] - ldr r1, [r2, 0x8] - ldrh r1, [r1] - strb r1, [r3] - ldr r3, _080F1DA8 @ =gBattleAnimTarget - ldr r1, [r2, 0x8] - ldrh r1, [r1] - lsrs r1, 8 - strb r1, [r3] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080F1DA0: .4byte gBattleAnimAttacker -_080F1DA4: .4byte gBattleSpritesDataPtr -_080F1DA8: .4byte gBattleAnimTarget - thumb_func_end sub_80F1D7C - - .align 2, 0 @ Don't pad with nop. diff --git a/data/battle_anim_effects_3.s b/data/battle_anim_effects_3.s deleted file mode 100644 index ebd42dfb5..000000000 --- a/data/battle_anim_effects_3.s +++ /dev/null @@ -1,181 +0,0 @@ -#include "constants/region_map.h" -#include "constants/flags.h" -#include "constants/moves.h" - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .align 2 - -gUnknown_83FEDE4:: @ 83FEDE4 - .incbin "baserom.gba", 0x3FEDE4, 0x1C - -gUnknown_83FEE00:: - .incbin "baserom.gba", 0x3FEE00, 0x18 - -gUnknown_83FEE18:: - .incbin "baserom.gba", 0x3FEE18, 0x18 - -gUnknown_83FEE30:: - .incbin "baserom.gba", 0x3FEE30, 0x2C - -gUnknown_83FEE5C:: - .incbin "baserom.gba", 0x3FEE5C, 0x18 - -gUnknown_83FEE74:: - .incbin "baserom.gba", 0x3FEE74, 0x18 - -gUnknown_83FEE8C:: - .incbin "baserom.gba", 0x3FEE8C, 0x58 - -gUnknown_83FEEE4:: - .incbin "baserom.gba", 0x3FEEE4, 0x18 - -gUnknown_83FEEFC:: - .incbin "baserom.gba", 0x3FEEFC, 0x34 - -gUnknown_83FEF30:: - .incbin "baserom.gba", 0x3FEF30, 0x40 - -gUnknown_83FEF70:: - .incbin "baserom.gba", 0x3FEF70, 0x4C - -gUnknown_83FEFBC:: - .incbin "baserom.gba", 0x3FEFBC, 0x50 - -gUnknown_83FF00C:: - .incbin "baserom.gba", 0x3FF00C, 0x18 - -gUnknown_83FF024:: - .incbin "baserom.gba", 0x3FF024, 0x18 - -gUnknown_83FF03C:: - .incbin "baserom.gba", 0x3FF03C, 0x2C - -gUnknown_83FF068:: - .incbin "baserom.gba", 0x3FF068, 0x18 - -gUnknown_83FF080:: @ 83FF080 - .incbin "baserom.gba", 0x3FF080, 0x58 - -gUnknown_83FF0D8:: - .incbin "baserom.gba", 0x3FF0D8, 0x40 - -gUnknown_83FF118:: - .incbin "baserom.gba", 0x3FF118, 0x18 - -gUnknown_83FF130:: @ 83FF130 - .incbin "baserom.gba", 0x3FF130, 0x20 - -gUnknown_83FF150:: - .incbin "baserom.gba", 0x3FF150, 0x18 - -gUnknown_83FF168:: @ 83FF168 - .incbin "baserom.gba", 0x3FF168, 0x18 - -gUnknown_83FF180:: @ 83FF180 - .incbin "baserom.gba", 0x3FF180, 0x18 - -gUnknown_83FF198:: @ 83FF198 - .incbin "baserom.gba", 0x3FF198, 0x28 - -gUnknown_83FF1C0:: @ 83FF1C0 - .incbin "baserom.gba", 0x3FF1C0, 0x38 - -gUnknown_83FF1F8:: - .incbin "baserom.gba", 0x3FF1F8, 0x18 - -gUnknown_83FF210:: @ 83FF210 - .incbin "baserom.gba", 0x3FF210, 0x30 - -gUnknown_83FF240:: @ 83FF240 - .incbin "baserom.gba", 0x3FF240, 0x2C - -gUnknown_83FF26C:: @ 83FF26C - .incbin "baserom.gba", 0x3FF26C, 0x18 - -gUnknown_83FF284:: @ 83FF284 - .incbin "baserom.gba", 0x3FF284, 0x4 - -gUnknown_83FF288:: @ 83FF288 - .incbin "baserom.gba", 0x3FF288, 0x8 - -gUnknown_83FF290:: @ 83FF290 - .incbin "baserom.gba", 0x3FF290, 0x20 - -gUnknown_83FF2B0:: - .incbin "baserom.gba", 0x3FF2B0, 0x74 - -gUnknown_83FF324:: - .incbin "baserom.gba", 0x3FF324, 0x4C - -gUnknown_83FF370:: - .incbin "baserom.gba", 0x3FF370, 0x18 - -gUnknown_83FF388:: - .incbin "baserom.gba", 0x3FF388, 0x18 - -gUnknown_83FF3A0:: - .incbin "baserom.gba", 0x3FF3A0, 0x18 - -gUnknown_83FF3B8:: - .incbin "baserom.gba", 0x3FF3B8, 0x18 - -gUnknown_83FF3D0:: @ 83FF3D0 - .incbin "baserom.gba", 0x3FF3D0, 0x9C - -gUnknown_83FF46C:: - .incbin "baserom.gba", 0x3FF46C, 0xA8 - -gUnknown_83FF514:: - .incbin "baserom.gba", 0x3FF514, 0x18 - -gUnknown_83FF52C:: @ 83FF52C - .incbin "baserom.gba", 0x3FF52C, 0x20 - -gUnknown_83FF54C:: @ 83FF54C - .incbin "baserom.gba", 0x3FF54C, 0x18 - -gUnknown_83FF564:: @ 83FF564 - .incbin "baserom.gba", 0x3FF564, 0x50 - -gUnknown_83FF5B4:: - .incbin "baserom.gba", 0x3FF5B4, 0x18 - -gUnknown_83FF5CC:: @ 83FF5CC - .incbin "baserom.gba", 0x3FF5CC, 0x18 - -gUnknown_83FF5E4:: - .incbin "baserom.gba", 0x3FF5E4, 0x48 - -gUnknown_83FF62C:: @ 83FF62C - .incbin "baserom.gba", 0x3FF62C, 0x18 - -gUnknown_83FF644:: - .incbin "baserom.gba", 0x3FF644, 0x18 - -gUnknown_83FF65C:: @ 83FF65C - .incbin "baserom.gba", 0x3FF65C, 0x18 - -gUnknown_83FF674:: - .incbin "baserom.gba", 0x3FF674, 0x18 - -gUnknown_83FF68C:: - .incbin "baserom.gba", 0x3FF68C, 0x18 - -gUnknown_83FF6A4:: - .incbin "baserom.gba", 0x3FF6A4, 0x18 - -gUnknown_83FF6BC:: - .incbin "baserom.gba", 0x3FF6BC, 0x30 - -gUnknown_83FF6EC:: - .incbin "baserom.gba", 0x3FF6EC, 0x78 - -gUnknown_83FF764:: - .incbin "baserom.gba", 0x3FF764, 0x2C - -gUnknown_83FF790:: - .incbin "baserom.gba", 0x3FF790, 0x18 - -gUnknown_83FF7A8:: @ 83FF7A8 - .incbin "baserom.gba", 0x3FF7A8, 0x30 diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 925f6c012..c3c6399dc 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1271,12 +1271,12 @@ Move_REVERSAL:: @ 81C8445 createvisualtask sub_80B9BDC, 2, 31, 3, 2, 0, 10, 32767 delay 10 playsewithpan SE_W179, 192 - createsprite gUnknown_83FF3B8, ANIM_ATTACKER, 2, 26, 0 - createsprite gUnknown_83FF3B8, ANIM_ATTACKER, 2, 26, 42 - createsprite gUnknown_83FF3B8, ANIM_ATTACKER, 2, 26, 84 - createsprite gUnknown_83FF3B8, ANIM_ATTACKER, 2, 26, 126 - createsprite gUnknown_83FF3B8, ANIM_ATTACKER, 2, 26, 168 - createsprite gUnknown_83FF3B8, ANIM_ATTACKER, 2, 26, 210 + createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 0 + createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 42 + createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 84 + createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 126 + createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 168 + createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 210 waitforvisualfinish delay 20 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 @@ -1691,7 +1691,7 @@ Move_DEFENSE_CURL:: @ 81C8F1C createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 0, 0 createvisualtask sub_80DF524, 5, waitforvisualfinish - createsprite gUnknown_83FF118, ANIM_ATTACKER, 2, 0, 6, 0, 1 + createsprite gEclipsingOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, 6, 0, 1 waitforvisualfinish createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 0, 1 waitforvisualfinish @@ -1822,7 +1822,7 @@ gUnknown_81C91D7:: @ 81C91D7 goto gUnknown_81C8FFF gUnknown_81C9253:: @ 81C9253 - createsprite gUnknown_83FF2B0, ANIM_ATTACKER, 2, 20, -28 + createsprite gWeakFrustrationAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 20, -28 waitforvisualfinish delay 10 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 10, 2 @@ -1852,22 +1852,22 @@ Move_SAFEGUARD:: @ 81C9297 Move_PAIN_SPLIT:: @ 81C92D9 loadspritegfx 10239 - createsprite gUnknown_83FF370, ANIM_ATTACKER, 2, -8, -42, 0 - createsprite gUnknown_83FF370, ANIM_TARGET, 2, -8, -42, 1 + 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, 0 createvisualtask sub_80E0B00, 2, 1, 0 waitforvisualfinish - createsprite gUnknown_83FF370, ANIM_ATTACKER, 2, -24, -42, 0 - createsprite gUnknown_83FF370, ANIM_TARGET, 2, -24, -42, 1 + 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 waitforvisualfinish - createsprite gUnknown_83FF370, ANIM_ATTACKER, 2, 8, -42, 0 - createsprite gUnknown_83FF370, ANIM_TARGET, 2, 8, -42, 1 + 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 @@ -2125,7 +2125,7 @@ Move_MEAN_LOOK:: @ 81C9ABA createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, 0 loopsewithpan SE_W109, 63, 15, 4 waitplaysewithpan SE_W043, 63, 85 - createsprite gUnknown_83FEEE4, ANIM_ATTACKER, 2, + createsprite gMeanLookEyeSpriteTemplate, ANIM_ATTACKER, 2, delay 120 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, 0 delay 30 @@ -2305,23 +2305,23 @@ Move_SMOKESCREEN:: @ 81C9EB0 loadspritegfx 10016 loadspritegfx 10017 playsewithpan SE_W104, 192 - createsprite gUnknown_83FEE30, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 + createsprite gBlackBallSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 waitforvisualfinish createvisualtask sub_80DE34C, 2, delay 2 playsewithpan SE_W028, 63 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, -12, 104, 0, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, -12, 72, 1, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, -6, 56, 1, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, -6, 88, 0, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 0, 56, 0, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 0, 88, 1, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 6, 72, 0, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 6, 104, 1, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 12, 72, 0, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 12, 56, 1, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 18, 80, 0, 75 - createsprite gUnknown_83FEE18, ANIM_TARGET, 4, 0, 18, 72, 1, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, -12, 104, 0, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, -12, 72, 1, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, -6, 56, 1, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, -6, 88, 0, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, 0, 56, 0, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, 0, 88, 1, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, 6, 72, 0, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, 6, 104, 1, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, 12, 72, 0, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, 12, 56, 1, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, 18, 80, 0, 75 + createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, 18, 72, 1, 75 waitforvisualfinish end @@ -3217,7 +3217,7 @@ Move_FORESIGHT:: @ 81CB18D monbg 3 monbgprio_28 1 setalpha 16, 0 - createsprite gUnknown_83FF6A4, ANIM_TARGET, 2, 1 + createsprite gForesightMagnifyingGlassSpriteTemplate, ANIM_TARGET, 2, 1 delay 17 loopsewithpan SE_W166, 63, 16, 4 delay 48 @@ -3402,7 +3402,7 @@ Move_RAPID_SPIN:: @ 81CB4E1 loadspritegfx 10135 loadspritegfx 10229 monbg 0 - createsprite gUnknown_83FF068, ANIM_ATTACKER, 2, 0, 0, 32, -32, 40, -2 + createsprite gRapidSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, -32, 40, -2 createvisualtask sub_80DEF9C, 2, 0, 2, 0 loopsewithpan SE_W013B, 192, 8, 4 waitforvisualfinish @@ -3601,15 +3601,15 @@ Move_FACADE:: @ 81CB8D6 Move_SMELLING_SALT:: @ 81CB8F6 loadspritegfx 10247 loadspritegfx 10255 - createsprite gUnknown_83FF644, ANIM_TARGET, 2, 1, 0, 2 - createsprite gUnknown_83FF644, ANIM_TARGET, 2, 1, 1, 2 + createsprite gSmellingSaltsHandSpriteTemplate, ANIM_TARGET, 2, 1, 0, 2 + createsprite gSmellingSaltsHandSpriteTemplate, ANIM_TARGET, 2, 1, 1, 2 delay 32 createvisualtask sub_80E28DC, 3, 1, 2 loopsewithpan SE_W003, 63, 12, 2 waitforvisualfinish delay 4 createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 6, 2 - createsprite gUnknown_83FF674, ANIM_TARGET, 2, 1, 8, 3 + createsprite gSmellingSaltExclamationSpriteTemplate, ANIM_TARGET, 2, 1, 8, 3 loopsewithpan SE_W207B, 63, 16, 3 end @@ -3681,8 +3681,8 @@ Move_TAUNT:: @ 81CBA0B Move_HELPING_HAND:: @ 81CBA5F loadspritegfx 10247 createvisualtask sub_80E2CE4, 5, - createsprite gUnknown_83FF68C, ANIM_ATTACKER, 40, 0 - createsprite gUnknown_83FF68C, ANIM_ATTACKER, 40, 1 + createsprite gHelpingHandClapSpriteTemplate, ANIM_ATTACKER, 40, 0 + createsprite gHelpingHandClapSpriteTemplate, ANIM_ATTACKER, 40, 1 delay 19 playsewithpan SE_W227, 0 createvisualtask AnimTask_ShakeMon2, 2, 2, 2, 0, 5, 1 @@ -3697,18 +3697,18 @@ Move_HELPING_HAND:: @ 81CBA5F Move_ASSIST:: @ 81CBAD2 loadspritegfx 10252 - createsprite gUnknown_83FF5E4, ANIM_ATTACKER, 50, 112, -16, 140, 128, 36 + createsprite gAssistPawprintSpriteTemplate, ANIM_ATTACKER, 50, 112, -16, 140, 128, 36 delay 2 - createsprite gUnknown_83FF5E4, ANIM_ATTACKER, 50, 208, 128, -16, 48, 36 + createsprite gAssistPawprintSpriteTemplate, ANIM_ATTACKER, 50, 208, 128, -16, 48, 36 playsewithpan SE_W010, 0 delay 2 - createsprite gUnknown_83FF5E4, ANIM_ATTACKER, 50, -16, 112, 256, -16, 36 + createsprite gAssistPawprintSpriteTemplate, ANIM_ATTACKER, 50, -16, 112, 256, -16, 36 playsewithpan SE_W010, 0 delay 2 - createsprite gUnknown_83FF5E4, ANIM_ATTACKER, 50, 108, 128, 84, -16, 36 + createsprite gAssistPawprintSpriteTemplate, ANIM_ATTACKER, 50, 108, 128, 84, -16, 36 playsewithpan SE_W010, 0 delay 2 - createsprite gUnknown_83FF5E4, ANIM_ATTACKER, 50, -16, 56, 256, 56, 36 + createsprite gAssistPawprintSpriteTemplate, ANIM_ATTACKER, 50, -16, 56, 256, 56, 36 playsewithpan SE_W010, 0 end @@ -3751,7 +3751,7 @@ Move_RECYCLE:: @ 81CBBFE monbg 0 setalpha 0, 16 delay 1 - createsprite gUnknown_83FF790, ANIM_ATTACKER, 2, + createsprite gRecycleSpriteTemplate, ANIM_ATTACKER, 2, loopsewithpan SE_W036, 192, 24, 3 waitforvisualfinish createvisualtask AnimTask_BlendMonInAndOut, 5, 0, 32767, 12, 2, 1 @@ -3837,12 +3837,12 @@ Move_YAWN:: @ 81CBE37 createvisualtask sub_80E1704, 2, 0 playsewithpan SE_W281, 192 waitforvisualfinish - createsprite gUnknown_83FF46C, ANIM_TARGET, 5, 2 + createsprite gYawnCloudSpriteTemplate, ANIM_TARGET, 5, 2 playsewithpan SE_W255, 192 delay 4 - createsprite gUnknown_83FF46C, ANIM_TARGET, 5, 1 + createsprite gYawnCloudSpriteTemplate, ANIM_TARGET, 5, 1 delay 4 - createsprite gUnknown_83FF46C, ANIM_TARGET, 5, 0 + createsprite gYawnCloudSpriteTemplate, ANIM_TARGET, 5, 0 waitforvisualfinish createvisualtask sub_80E1704, 2, 1 playsewithpan SE_W281, 63 @@ -4436,7 +4436,7 @@ Move_IRON_DEFENSE:: @ 81CCCA3 Move_BLOCK:: @ 81CCCCD loadspritegfx 10250 - createsprite gUnknown_83FF6EC, ANIM_TARGET, 66, + createsprite gBlockXSpriteTemplate, ANIM_TARGET, 66, playsewithpan SE_W207, 63 end @@ -4695,8 +4695,8 @@ Move_MIND_READER:: @ 81CD1A8 loadspritegfx 10191 monbg 4 playsewithpan SE_W109, 63 - createsprite gUnknown_83FEE5C, ANIM_ATTACKER, 5, 0, 0, 1, 0 - createsprite gUnknown_83FEE74, ANIM_ATTACKER, 5, + createsprite gOpeningEyeSpriteTemplate, ANIM_ATTACKER, 5, 0, 0, 1, 0 + createsprite gWhiteHaloSpriteTemplate, ANIM_ATTACKER, 5, delay 40 playsewithpan SE_W043, 63 createvisualtask sub_80B9BDC, 2, 1, 1, 2, 0, 10, 0 @@ -4706,26 +4706,26 @@ Move_MIND_READER:: @ 81CD1A8 end gUnknown_81CD1EF:: @ 81CD1EF - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 70, 0, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 40, 40, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 10, -60, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -50, -40, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -40, 40, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 50, -50, 6 - delay 2 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 50, -30, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 60, 10, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 0, 60, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 0, -40, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -60, 20, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -60, -30, 6 - delay 2 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -50, 50, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -60, 20, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, -40, -40, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 20, -60, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 50, -50, 6 - createsprite gUnknown_83FEE8C, ANIM_ATTACKER, 4, 35, 40, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 70, 0, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 40, 40, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 10, -60, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -50, -40, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -40, 40, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 50, -50, 6 + delay 2 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 50, -30, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 60, 10, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0, 60, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0, -40, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -60, 20, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -60, -30, 6 + delay 2 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -50, 50, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -60, 20, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -40, -40, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 20, -60, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 50, -50, 6 + createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 35, 40, 6 delay 2 return @@ -5000,7 +5000,7 @@ Move_SCRATCH:: @ 81CD97A monbg 1 setalpha 12, 8 playsewithpan SE_W010, 63 - createsprite gUnknown_83FEE00, ANIM_ATTACKER, 2, 0, 0, 1, 0 + createsprite gScratchSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0 createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 waitforvisualfinish clearmonbg 1 @@ -5061,13 +5061,13 @@ Move_ROAR:: @ 81CDAC0 end gUnknown_81CDB06:: @ 81CDB06 - createsprite gUnknown_83FF5B4, ANIM_ATTACKER, 2, 24, -8, 0 - createsprite gUnknown_83FF5B4, ANIM_ATTACKER, 2, 24, 0, 2 - createsprite gUnknown_83FF5B4, ANIM_ATTACKER, 2, 24, 8, 1 + createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, -8, 0 + createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 2 + createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, 8, 1 delay 15 - createsprite gUnknown_83FF5B4, ANIM_ATTACKER, 2, 24, -8, 0 - createsprite gUnknown_83FF5B4, ANIM_ATTACKER, 2, 24, 0, 2 - createsprite gUnknown_83FF5B4, ANIM_ATTACKER, 2, 24, 8, 1 + createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, -8, 0 + createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 2 + createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, 8, 1 return Move_GROWL:: @ 81CDB57 @@ -6192,14 +6192,14 @@ Move_SPIKES:: @ 81CF503 monbg 3 playsewithpan SE_W026, 192 waitplaysewithpan SE_W030, 63, 28 - createsprite gUnknown_83FEEFC, ANIM_TARGET, 2, 20, 0, 0, 24, 30 + createsprite gSpikesSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 24, 30 delay 10 playsewithpan SE_W026, 192 waitplaysewithpan SE_W030, 63, 28 - createsprite gUnknown_83FEEFC, ANIM_TARGET, 2, 20, 0, -24, 24, 30 + createsprite gSpikesSpriteTemplate, ANIM_TARGET, 2, 20, 0, -24, 24, 30 delay 10 waitplaysewithpan SE_W030, 63, 28 - createsprite gUnknown_83FEEFC, ANIM_TARGET, 2, 20, 0, 24, 24, 30 + createsprite gSpikesSpriteTemplate, ANIM_TARGET, 2, 20, 0, 24, 24, 30 waitforvisualfinish clearmonbg 3 end @@ -7099,7 +7099,7 @@ Move_LEER:: @ 81D09C8 monbgprio_28 0 setalpha 8, 8 playsewithpan SE_W043, 192 - createsprite gUnknown_83FEF30, ANIM_ATTACKER, 2, 24, -12 + createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 24, -12 createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, 0, 1 waitforvisualfinish delay 10 @@ -8039,7 +8039,7 @@ Move_BATON_PASS:: @ 81D1F1F loadspritegfx 10226 playsewithpan SE_W226, 192 createvisualtask sub_80B9BDC, 2, 31, 1, 2, 0, 11, 31455 - createsprite gUnknown_83FF150, ANIM_ATTACKER, 2, + createsprite gBatonPassPokeballSpriteTemplate, ANIM_ATTACKER, 2, end Move_PERISH_SONG:: @ 81D1F41 @@ -8082,26 +8082,26 @@ Move_SLEEP_TALK:: @ 81D20AA loadspritegfx 10228 createvisualtask AnimTask_SwayMon, 5, 0, 4, 4096, 2, 0 delay 20 - createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -1 + createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -1 playsewithpan SE_W173, 192 delay 6 - createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -1 + createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -1 delay 6 - createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -1 + createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -1 delay 20 - createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -5 + createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -5 playsewithpan SE_W173, 192 delay 6 - createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -5 + createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -5 delay 6 - createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -5 + createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -5 delay 20 - createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -3 + createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -3 playsewithpan SE_W173, 192 delay 6 - createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -3 + createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -3 delay 6 - createsprite gUnknown_83FEF70, ANIM_TARGET, 2, 0, 20, 5, -3 + createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -3 waitforvisualfinish end @@ -8118,7 +8118,7 @@ Move_HYPER_FANG:: @ 81D2165 gUnknown_81D2193:: @ 81D2193 waitbgfadeout - createsprite gUnknown_83FEFBC, ANIM_TARGET, 2, + createsprite gFangSpriteTemplate, ANIM_TARGET, 2, waitbgfadein createvisualtask AnimTask_ShakeMon, 3, 1, 0, 10, 10, 1 playsewithpan SE_W043, 63 @@ -8142,7 +8142,7 @@ gUnknown_81D21C5:: @ 81D21C5 Move_TRI_ATTACK:: @ 81D21CC loadspritegfx 10230 - createsprite gUnknown_83FF0D8, ANIM_TARGET, 2, 16, 0 + createsprite gTriAttackTriangleSpriteTemplate, ANIM_TARGET, 2, 16, 0 playsewithpan SE_W161, 192 delay 20 playsewithpan SE_W161, 192 @@ -8226,11 +8226,11 @@ Move_ENCORE:: @ 81D23FE createvisualtask sub_80DEDD8, 2, createvisualtask sub_80BAB38, 2, 248, 3, 0, 10, 0 waitforvisualfinish - createsprite gUnknown_83FF00C, ANIM_TARGET, 2, 0, -8 - createsprite gUnknown_83FF024, ANIM_ATTACKER, 2, -2, 0, 0, 0, 9 - createsprite gUnknown_83FF024, ANIM_ATTACKER, 2, 2, 0, 1, 0, 9 - createsprite gUnknown_83FF03C, ANIM_ATTACKER, 3, -2, 0, 0, 0, 9 - createsprite gUnknown_83FF03C, ANIM_ATTACKER, 3, 2, 0, 1, 0, 9 + createsprite gSpotlightSpriteTemplate, ANIM_TARGET, 2, 0, -8 + createsprite gClappingHandSpriteTemplate, ANIM_ATTACKER, 2, -2, 0, 0, 0, 9 + createsprite gClappingHandSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 1, 0, 9 + createsprite gClappingHand2SpriteTemplate, ANIM_ATTACKER, 3, -2, 0, 0, 0, 9 + createsprite gClappingHand2SpriteTemplate, ANIM_ATTACKER, 3, 2, 0, 1, 0, 9 delay 16 createvisualtask sub_80DD410, 5, 216, 63 createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 5, 1 @@ -8274,7 +8274,7 @@ Move_WISH:: @ 81D2523 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 10, 0 waitforvisualfinish panse_27 SE_W115, 63, 192, 253, 0 - createsprite gUnknown_83FF168, ANIM_ATTACKER, 40, + createsprite gWishStarSpriteTemplate, ANIM_ATTACKER, 40, waitforvisualfinish delay 60 loopsewithpan SE_W215, 192, 16, 3 @@ -8383,15 +8383,15 @@ gUnknown_81D27AF:: @ 81D27AF end gUnknown_81D27B6:: @ 81D27B6 - createsprite gUnknown_83FF1F8, ANIM_ATTACKER, 2, 0, -8 + createsprite gSwallowBlueOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, -8 delay 1 - createsprite gUnknown_83FF1F8, ANIM_ATTACKER, 2, -24, -8 + createsprite gSwallowBlueOrbSpriteTemplate, ANIM_ATTACKER, 2, -24, -8 delay 1 - createsprite gUnknown_83FF1F8, ANIM_ATTACKER, 2, 16, -8 + createsprite gSwallowBlueOrbSpriteTemplate, ANIM_ATTACKER, 2, 16, -8 delay 1 - createsprite gUnknown_83FF1F8, ANIM_ATTACKER, 2, -16, -8 + createsprite gSwallowBlueOrbSpriteTemplate, ANIM_ATTACKER, 2, -16, -8 delay 1 - createsprite gUnknown_83FF1F8, ANIM_ATTACKER, 2, 24, -8 + createsprite gSwallowBlueOrbSpriteTemplate, ANIM_ATTACKER, 2, 24, -8 delay 1 return @@ -8442,18 +8442,18 @@ Move_MORNING_SUN:: @ 81D2829 end gUnknown_81D28AF:: @ 81D28AF - createsprite gUnknown_83FF26C, ANIM_ATTACKER, 2, 30, 640 + createsprite gGreenStarSpriteTemplate, ANIM_ATTACKER, 2, 30, 640 delay 5 return Move_SWEET_SCENT:: @ 81D28BD loadspritegfx 10238 playsewithpan SE_W230, 192 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 100, 0, 100 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 100, 0, 100 delay 25 setpan 0 call gUnknown_81D2901 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 55, 0 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 55, 0 setpan 63 createvisualtask sub_80B9BDC, 2, 20, 1, 5, 5, 13, 22207 call gUnknown_81D2901 @@ -8461,27 +8461,27 @@ Move_SWEET_SCENT:: @ 81D28BD end gUnknown_81D2901:: @ 81D2901 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 70, 1, 64 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 70, 1, 64 delay 2 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 60, 0, 64 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 60, 0, 64 delay 5 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 80, 1, 64 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 80, 1, 64 delay 2 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 58, 0, 120 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 58, 0, 120 delay 2 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 100, 0, 120 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 100, 0, 120 delay 2 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 90, 0, 64 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 90, 0, 64 delay 2 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 48, 0, 64 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 48, 0, 64 delay 2 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 95, 1, 80 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 95, 1, 80 delay 2 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 100, 0, 120 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 100, 0, 120 delay 2 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 75, 1, 64 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 75, 1, 64 delay 2 - createsprite gUnknown_83FF324, ANIM_ATTACKER, 2, 85, 0, 120 + createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 85, 0, 120 delay 2 return @@ -8543,7 +8543,7 @@ Move_FLATTER:: @ 81D2AE9 createvisualtask sub_80DEDD8, 2, createvisualtask sub_80BAB38, 2, 248, 3, 0, 10, 0 waitforvisualfinish - createsprite gUnknown_83FF3A0, ANIM_TARGET, 2, 0, -8, 80 + createsprite gFlatterSpotlightSpriteTemplate, ANIM_TARGET, 2, 0, -8, 80 delay 0 createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 5, 2, 1 delay 10 @@ -8578,8 +8578,8 @@ Move_FLATTER:: @ 81D2AE9 end gUnknown_81D2BD2:: @ 81D2BD2 - createsprite gUnknown_83FF388, ANIM_ATTACKER, 40, 0 - createsprite gUnknown_83FF388, ANIM_ATTACKER, 40, 1 + createsprite gFlatterConfettiSpriteTemplate, ANIM_ATTACKER, 40, 0 + createsprite gFlatterConfettiSpriteTemplate, ANIM_ATTACKER, 40, 1 return Move_ROLE_PLAY:: @ 81D2BE5 @@ -8861,12 +8861,12 @@ Move_METEOR_MASH:: @ 81D32D6 fadetobg 16 waitbgfadein waitforvisualfinish - createsprite gUnknown_83FF6BC, ANIM_TARGET, 3, -48, -64, 72, 32, 30 + createsprite gMeteorMashStarSpriteTemplate, ANIM_TARGET, 3, -48, -64, 72, 32, 30 delay 10 - createsprite gUnknown_83FF6BC, ANIM_TARGET, 3, -112, -64, 8, 32, 30 + createsprite gMeteorMashStarSpriteTemplate, ANIM_TARGET, 3, -112, -64, 8, 32, 30 delay 40 createsprite gUnknown_83E678C, ANIM_TARGET, 3, 0, 0, 0, 30 - createsprite gUnknown_83FF6BC, ANIM_TARGET, 3, -80, -64, 40, 32, 30 + createsprite gMeteorMashStarSpriteTemplate, ANIM_TARGET, 3, -80, -64, 40, 32, 30 delay 20 playsewithpan SE_W233B, 63 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 @@ -8911,7 +8911,7 @@ Move_POISON_FANG:: @ 81D33F4 loadspritegfx 10192 loadspritegfx 10150 playsewithpan SE_W044, 63 - createsprite gUnknown_83FEFBC, ANIM_TARGET, 2, + createsprite gFangSpriteTemplate, ANIM_TARGET, 2, delay 10 createvisualtask AnimTask_ShakeMon, 3, 1, 3, 0, 10, 1 waitforvisualfinish @@ -9720,7 +9720,7 @@ Move_KNOCK_OFF:: @ 81D4A0F createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 delay 4 playsewithpan SE_W233, 63 - createsprite gUnknown_83FF764, ANIM_TARGET, 2, -16, -16 + createsprite gKnockOffStrikeSpriteTemplate, ANIM_TARGET, 2, -16, -16 delay 8 createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, 32767, 10, 0, 0 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 2 @@ -10678,31 +10678,31 @@ General_SmokeballEscape:: @ 81D5E66 setalpha 12, 4 delay 0 playsewithpan SE_BOWA2, 63 - createsprite gUnknown_83FF514, ANIM_TARGET, 0, 0, 32, 28, 30 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_TARGET, 0, 0, 32, 28, 30 delay 4 playsewithpan SE_BOWA2, 63 - createsprite gUnknown_83FF514, ANIM_ATTACKER, 127, 2, 12, 20, 30 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 127, 2, 12, 20, 30 delay 12 playsewithpan SE_BOWA2, 63 - createsprite gUnknown_83FF514, ANIM_ATTACKER, 126, 2, -28, 4, 30 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 126, 2, -28, 4, 30 delay 12 playsewithpan SE_BOWA2, 63 - createsprite gUnknown_83FF514, ANIM_ATTACKER, 124, 2, 14, -20, 30 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 124, 2, 14, -20, 30 delay 4 playsewithpan SE_BOWA2, 63 createvisualtask sub_80B78E0, 2, 2 - createsprite gUnknown_83FF514, ANIM_ATTACKER, 123, 3, 4, 4, 30 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 123, 3, 4, 4, 30 delay 14 playsewithpan SE_BOWA2, 63 - createsprite gUnknown_83FF514, ANIM_ATTACKER, 122, 3, -14, 18, 46 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 122, 3, -14, 18, 46 delay 0 - createsprite gUnknown_83FF514, ANIM_ATTACKER, 121, 3, 14, -14, 46 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 121, 3, 14, -14, 46 delay 0 - createsprite gUnknown_83FF514, ANIM_ATTACKER, 120, 3, -12, -10, 46 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 120, 3, -12, -10, 46 delay 0 - createsprite gUnknown_83FF514, ANIM_ATTACKER, 119, 3, 14, 14, 46 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 119, 3, 14, 14, 46 delay 0 - createsprite gUnknown_83FF514, ANIM_ATTACKER, 118, 3, 0, 0, 46 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 118, 3, 0, 0, 46 waitforvisualfinish clearmonbg 0 invisible 0 diff --git a/data/battle_anim_special.s b/data/battle_anim_special.s deleted file mode 100644 index 27d7636f6..000000000 --- a/data/battle_anim_special.s +++ /dev/null @@ -1,148 +0,0 @@ -#include "constants/region_map.h" -#include "constants/flags.h" -#include "constants/moves.h" -#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .align 2 - -gUnknown_840BF3C:: @ 840BF3C - .byte 10, 2, -3, 0 - .byte 15, 0, -4, 0 - .byte -10, 2, -4, 0 - -gUnknown_840BF48:: @ 840BF48 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55020 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55021 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55022 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55023 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55024 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55025 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55026 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55027 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55028 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55029 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55030 - obj_tiles gFile_graphics_battle_anims_sprites_particles_sheet, 0x0100, 55031 - -gUnknown_840BFA8:: @ 840BFA8 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55020 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55021 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55022 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55023 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55024 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55025 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55026 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55027 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55028 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55029 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55030 - obj_pal gFile_graphics_battle_anims_sprites_136_palette, 55031 - -gAnimCmd_840C008:: @ 840C008 - obj_image_anim_frame 0x0000, 1 - obj_image_anim_frame 0x0001, 1 - obj_image_anim_frame 0x0002, 1 - obj_image_anim_frame 0x0000, 1, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 0x0002, 1 - obj_image_anim_frame 0x0001, 1 - obj_image_anim_jump 0x0000 - -gAnimCmd_840C024:: @ 840C024 - obj_image_anim_frame 0x0003, 1 - obj_image_anim_end - -gAnimCmd_840C02C:: @ 840C02C - obj_image_anim_frame 0x0004, 1 - obj_image_anim_end - -gAnimCmd_840C034:: @ 840C034 - obj_image_anim_frame 0x0005, 1 - obj_image_anim_end - -gAnimCmd_840C03C:: @ 840C03C - obj_image_anim_frame 0x0006, 4 - obj_image_anim_frame 0x0007, 4 - obj_image_anim_jump 0x0000 - -gAnimCmd_840C048:: @ 840C048 - obj_image_anim_frame 0x0007, 4 - obj_image_anim_end - -gSpriteAnimTable_840C050:: - .4byte gAnimCmd_840C008 - .4byte gAnimCmd_840C024 - .4byte gAnimCmd_840C02C - .4byte gAnimCmd_840C034 - .4byte gAnimCmd_840C03C - .4byte gAnimCmd_840C048 - -gUnknown_840C068:: @ 840C068 - .byte 0x00, 0x00, 0x00, 0x05, 0x01, 0x02, 0x02, 0x03, 0x05, 0x05, 0x04, 0x04 - -gUnknown_840C074:: @ 840C074 - .4byte sub_80F06A4 - .4byte sub_80F0C28 - .4byte sub_80F0A20 - .4byte sub_80F0B20 - .4byte sub_80F0F10 - .4byte sub_80F0A20 - .4byte sub_80F091C - .4byte sub_80F0B20 - .4byte sub_80F0DB4 - .4byte sub_80F0818 - .4byte sub_80F0C28 - .4byte sub_80F103C - -gUnknown_840C0A4:: @ 840C0A4 - spr_template 55020, 55020, gOamData_AffineOff_ObjNormal_8x8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_840C0BC:: - spr_template 55021, 55021, gOamData_AffineOff_ObjNormal_8x8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 55022, 55022, gOamData_AffineOff_ObjNormal_8x8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 55023, 55023, gOamData_AffineOff_ObjNormal_8x8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_840C104:: @ 840C104 - spr_template 55024, 55024, gOamData_AffineOff_ObjNormal_8x8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 55025, 55025, gOamData_AffineOff_ObjNormal_8x8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 55026, 55026, gOamData_AffineOff_ObjNormal_8x8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 55027, 55027, gOamData_AffineOff_ObjNormal_8x8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 55028, 55028, gOamData_AffineOff_ObjNormal_8x8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 55029, 55029, gOamData_AffineOff_ObjNormal_8x8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 55030, 55030, gOamData_AffineOff_ObjNormal_8x8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 55031, 55031, gOamData_AffineOff_ObjNormal_8x8, gSpriteAnimTable_840C050, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_840C1C4:: @ 840C1C4 - .2byte RGB(31, 22, 30) - .2byte RGB(16, 23, 30) - .2byte RGB(23, 30, 20) - .2byte RGB(31, 31, 15) - .2byte RGB(23, 20, 28) - .2byte RGB(21, 31, 25) - .2byte RGB(12, 25, 30) - .2byte RGB(30, 27, 10) - .2byte RGB(31, 24, 16) - .2byte RGB(29, 30, 30) - .2byte RGB(31, 17, 10) - .2byte RGB(31, 9, 10) - -gUnknown_840C1DC:: @ 840C1DC - .byte 0x00, 0x00, 0x01, 0x02, 0x03 - .byte 0x04, 0x01, 0x01, 0x00, 0x01 - .byte 0x03, 0x05, 0x06, 0x05, 0x04 - - .align 2 -gUnknown_840C1EC:: - spr_template 10269, 10269, gOamData_AffineOff_ObjNormal_16x16, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80F1B3C - -gUnknown_840C204:: - obj_image_anim_frame 0x0040, 1 - obj_image_anim_end - -gSpriteAnimTable_840C20C:: - .4byte gUnknown_840C204 - -gUnknown_840C210:: - spr_template 10058, 10058, gOamData_AffineOff_ObjNormal_32x32, gSpriteAnimTable_840C20C, NULL, gDummySpriteAffineAnimTable, sub_80F1B3C - diff --git a/graphics/battle_anims/unk_83FF33C.pal b/graphics/battle_anims/unk_83FF33C.pal new file mode 100644 index 000000000..1d83a2018 --- /dev/null +++ b/graphics/battle_anims/unk_83FF33C.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 0 49 +131 131 41 +156 197 32 +172 0 32 +189 0 24 +180 197 8 +156 0 8 +131 65 0 +90 0 0 +49 65 0 +32 0 8 +8 197 8 +0 0 24 +16 65 32 +32 197 32 +65 131 41 diff --git a/ld_script.txt b/ld_script.txt index 59b49592a..97acec6ef 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -212,7 +212,7 @@ SECTIONS { src/battle_controller_oak_old_man.o(.text); src/player_pc.o(.text); src/intro.o(.text); - asm/battle_anim_special.o(.text); + src/battle_anim_special.o(.text); src/hall_of_fame.o(.text); src/credits.o(.text); src/diploma.o(.text); @@ -489,7 +489,7 @@ SECTIONS { src/battle_controller_oak_old_man.o(.rodata); src/player_pc.o(.rodata); src/intro.o(.rodata); - data/battle_anim_special.o(.rodata); + src/battle_anim_special.o(.rodata); src/hall_of_fame.o(.rodata); src/credits.o(.rodata); src/diploma.o(.rodata); diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index 89f66139f..4fd6ada0b 100644 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -120,7 +120,9 @@ static void MoveOdorSleuthClone(struct Sprite *); static void AnimTask_TeeterDanceMovementStep(u8); static void AnimRecycleStep(struct Sprite *); static void AnimTask_SlackOffSquishStep(u8); -const union AnimCmd gScratchAnimCmds[] = + +// Data +const union AnimCmd gScratchAnimCmds[] = //83FEDE4 { ANIMCMD_FRAME(0, 4), ANIMCMD_FRAME(16, 4), @@ -130,12 +132,12 @@ const union AnimCmd gScratchAnimCmds[] = ANIMCMD_END, }; -const union AnimCmd *const gScratchAnimTable[] = +const union AnimCmd *const gScratchAnimTable[] = //83FEDFC { gScratchAnimCmds, }; -const struct SpriteTemplate gScratchSpriteTemplate = +const struct SpriteTemplate gScratchSpriteTemplate = //83FEE00 { .tileTag = ANIM_TAG_SCRATCH, .paletteTag = ANIM_TAG_SCRATCH, @@ -146,7 +148,7 @@ const struct SpriteTemplate gScratchSpriteTemplate = .callback = AnimSpriteOnMonPos, }; -const struct SpriteTemplate gBlackSmokeSpriteTemplate = +const struct SpriteTemplate gBlackSmokeSpriteTemplate = //83FEE18 { .tileTag = ANIM_TAG_BLACK_SMOKE, .paletteTag = ANIM_TAG_BLACK_SMOKE, @@ -157,7 +159,7 @@ const struct SpriteTemplate gBlackSmokeSpriteTemplate = .callback = AnimBlackSmoke, }; -const struct SpriteTemplate gBlackBallSpriteTemplate = +const struct SpriteTemplate gBlackBallSpriteTemplate = //83FEE30 { .tileTag = ANIM_TAG_BLACK_BALL, .paletteTag = ANIM_TAG_BLACK_BALL, @@ -168,7 +170,7 @@ const struct SpriteTemplate gBlackBallSpriteTemplate = .callback = AnimThrowProjectile, }; -const union AnimCmd gOpeningEyeAnimCmds[] = +const union AnimCmd gOpeningEyeAnimCmds[] = //83FEE48 { ANIMCMD_FRAME(0, 40), ANIMCMD_FRAME(16, 8), @@ -176,12 +178,12 @@ const union AnimCmd gOpeningEyeAnimCmds[] = ANIMCMD_END, }; -const union AnimCmd *const gOpeningEyeAnimTable[] = +const union AnimCmd *const gOpeningEyeAnimTable[] = //83FEE58 { gOpeningEyeAnimCmds, }; -const struct SpriteTemplate gOpeningEyeSpriteTemplate = +const struct SpriteTemplate gOpeningEyeSpriteTemplate = //83FEE5C { .tileTag = ANIM_TAG_OPENING_EYE, .paletteTag = ANIM_TAG_OPENING_EYE, @@ -192,7 +194,7 @@ const struct SpriteTemplate gOpeningEyeSpriteTemplate = .callback = AnimSpriteOnMonPos, }; -const struct SpriteTemplate gWhiteHaloSpriteTemplate = +const struct SpriteTemplate gWhiteHaloSpriteTemplate = //83FEE74 { .tileTag = ANIM_TAG_ROUND_WHITE_HALO, .paletteTag = ANIM_TAG_ROUND_WHITE_HALO, @@ -203,7 +205,7 @@ const struct SpriteTemplate gWhiteHaloSpriteTemplate = .callback = AnimWhiteHalo, }; -const struct SpriteTemplate gTealAlertSpriteTemplate = +const struct SpriteTemplate gTealAlertSpriteTemplate = //83FEE8C { .tileTag = ANIM_TAG_TEAL_ALERT, .paletteTag = ANIM_TAG_TEAL_ALERT, @@ -214,7 +216,7 @@ const struct SpriteTemplate gTealAlertSpriteTemplate = .callback = AnimTealAlert, }; -const union AffineAnimCmd gMeanLookEyeAffineAnimCmds1[] = +const union AffineAnimCmd gMeanLookEyeAffineAnimCmds1[] = //83FEEA4 { AFFINEANIMCMD_FRAME(0x180, 0x180, 0, 0), AFFINEANIMCMD_FRAME(-0x20, 0x18, 0, 5), @@ -222,20 +224,20 @@ const union AffineAnimCmd gMeanLookEyeAffineAnimCmds1[] = AFFINEANIMCMD_JUMP(1), }; -const union AffineAnimCmd gMeanLookEyeAffineAnimCmds2[] = +const union AffineAnimCmd gMeanLookEyeAffineAnimCmds2[] = //83FEEC4 { AFFINEANIMCMD_FRAME(0x30, 0x30, 0, 0), AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 6), AFFINEANIMCMD_END, }; -const union AffineAnimCmd *const gMeanLookEyeAffineAnimTable[] = +const union AffineAnimCmd *const gMeanLookEyeAffineAnimTable[] = //83FEEDC { gMeanLookEyeAffineAnimCmds1, gMeanLookEyeAffineAnimCmds2, }; -const struct SpriteTemplate gMeanLookEyeSpriteTemplate = +const struct SpriteTemplate gMeanLookEyeSpriteTemplate = //83FEEE4 { .tileTag = ANIM_TAG_EYE, .paletteTag = ANIM_TAG_EYE, @@ -246,7 +248,7 @@ const struct SpriteTemplate gMeanLookEyeSpriteTemplate = .callback = AnimMeanLookEye, }; -const struct SpriteTemplate gSpikesSpriteTemplate = +const struct SpriteTemplate gSpikesSpriteTemplate = //83FEEFC { .tileTag = ANIM_TAG_SPIKES, .paletteTag = ANIM_TAG_SPIKES, @@ -257,7 +259,7 @@ const struct SpriteTemplate gSpikesSpriteTemplate = .callback = AnimSpikes, }; -const union AnimCmd gLeerAnimCmds[] = +const union AnimCmd gLeerAnimCmds[] = //83FEF14 { ANIMCMD_FRAME(0, 3), ANIMCMD_FRAME(16, 3), @@ -267,12 +269,12 @@ const union AnimCmd gLeerAnimCmds[] = ANIMCMD_END, }; -const union AnimCmd *const gLeerAnimTable[] = +const union AnimCmd *const gLeerAnimTable[] = //83FEF2C { gLeerAnimCmds, }; -const struct SpriteTemplate gLeerSpriteTemplate = +const struct SpriteTemplate gLeerSpriteTemplate = //83FEF30 { .tileTag = ANIM_TAG_LEER, .paletteTag = ANIM_TAG_LEER, @@ -283,30 +285,30 @@ const struct SpriteTemplate gLeerSpriteTemplate = .callback = AnimLeer, }; -const union AnimCmd gLetterZAnimCmds[] = +const union AnimCmd gLetterZAnimCmds[] = //83FEF48 { ANIMCMD_FRAME(0, 3), ANIMCMD_END, }; -const union AnimCmd *const gLetterZAnimTable[] = +const union AnimCmd *const gLetterZAnimTable[] = //83FEF50 { gLetterZAnimCmds, }; -const union AffineAnimCmd gLetterZAffineAnimCmds[] = +const union AffineAnimCmd gLetterZAffineAnimCmds[] = //83FEF54 { AFFINEANIMCMD_FRAME(-7, -7, -3, 16), AFFINEANIMCMD_FRAME(7, 7, 3, 16), AFFINEANIMCMD_JUMP(0), }; -const union AffineAnimCmd *const gLetterZAffineAnimTable[] = +const union AffineAnimCmd *const gLetterZAffineAnimTable[] = //83FEF6C { gLetterZAffineAnimCmds, }; -const struct SpriteTemplate gLetterZSpriteTemplate = +const struct SpriteTemplate gLetterZSpriteTemplate = //83FEF70 { .tileTag = ANIM_TAG_LETTER_Z, .paletteTag = ANIM_TAG_LETTER_Z, @@ -317,7 +319,7 @@ const struct SpriteTemplate gLetterZSpriteTemplate = .callback = AnimLetterZ, }; -const union AnimCmd gFangAnimCmds[] = +const union AnimCmd gFangAnimCmds[] = //83FEF88 { ANIMCMD_FRAME(0, 8), ANIMCMD_FRAME(16, 16), @@ -326,24 +328,24 @@ const union AnimCmd gFangAnimCmds[] = ANIMCMD_END, }; -const union AnimCmd *const gFangAnimTable[] = +const union AnimCmd *const gFangAnimTable[] = //83FEF9C { gFangAnimCmds, }; -const union AffineAnimCmd gFangAffineAnimCmds[] = +const union AffineAnimCmd gFangAffineAnimCmds[] = //83FEFA0 { AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0), AFFINEANIMCMD_FRAME(-0x20, -0x20, 0, 8), AFFINEANIMCMD_END, }; -const union AffineAnimCmd *const gFangAffineAnimTable[] = +const union AffineAnimCmd *const gFangAffineAnimTable[] = //83FEFB8 { gFangAffineAnimCmds, }; -const struct SpriteTemplate gFangSpriteTemplate = +const struct SpriteTemplate gFangSpriteTemplate = //83FEFBC { .tileTag = ANIM_TAG_FANG_ATTACK, .paletteTag = ANIM_TAG_FANG_ATTACK, @@ -354,27 +356,27 @@ const struct SpriteTemplate gFangSpriteTemplate = .callback = AnimFang, }; -const union AffineAnimCmd gSpotlightAffineAnimCmds1[] = +const union AffineAnimCmd gSpotlightAffineAnimCmds1[] = //83FEFD4 { AFFINEANIMCMD_FRAME(0x0, 0x180, 0, 0), AFFINEANIMCMD_FRAME(0x10, 0x0, 0, 20), AFFINEANIMCMD_END, }; -const union AffineAnimCmd gSpotlightAffineAnimCmds2[] = +const union AffineAnimCmd gSpotlightAffineAnimCmds2[] = //83FEFEC { AFFINEANIMCMD_FRAME(0x140, 0x180, 0, 0), AFFINEANIMCMD_FRAME(-0x10, 0x0, 0, 19), AFFINEANIMCMD_END, }; -const union AffineAnimCmd *const gSpotlightAffineAnimTable[] = +const union AffineAnimCmd *const gSpotlightAffineAnimTable[] = //83FF004 { gSpotlightAffineAnimCmds1, gSpotlightAffineAnimCmds2, }; -const struct SpriteTemplate gSpotlightSpriteTemplate = +const struct SpriteTemplate gSpotlightSpriteTemplate = //83FF00C { .tileTag = ANIM_TAG_SPOTLIGHT, .paletteTag = ANIM_TAG_SPOTLIGHT, @@ -385,7 +387,7 @@ const struct SpriteTemplate gSpotlightSpriteTemplate = .callback = AnimSpotlight, }; -const struct SpriteTemplate gClappingHandSpriteTemplate = +const struct SpriteTemplate gClappingHandSpriteTemplate = //83FF024 { .tileTag = ANIM_TAG_TAG_HAND, .paletteTag = ANIM_TAG_TAG_HAND, @@ -396,7 +398,7 @@ const struct SpriteTemplate gClappingHandSpriteTemplate = .callback = AnimClappingHand, }; -const struct SpriteTemplate gClappingHand2SpriteTemplate = +const struct SpriteTemplate gClappingHand2SpriteTemplate = //83FF03C { .tileTag = ANIM_TAG_TAG_HAND, .paletteTag = ANIM_TAG_TAG_HAND, @@ -407,7 +409,7 @@ const struct SpriteTemplate gClappingHand2SpriteTemplate = .callback = AnimClappingHand2, }; -const union AnimCmd gRapidSpinAnimCmds[] = +const union AnimCmd gRapidSpinAnimCmds[] = //83FF054 { ANIMCMD_FRAME(0, 2), ANIMCMD_FRAME(8, 2), @@ -415,12 +417,12 @@ const union AnimCmd gRapidSpinAnimCmds[] = ANIMCMD_JUMP(0), }; -const union AnimCmd *const gRapidSpinAnimTable[] = +const union AnimCmd *const gRapidSpinAnimTable[] = //83FF064 { gRapidSpinAnimCmds, }; -const struct SpriteTemplate gRapidSpinSpriteTemplate = +const struct SpriteTemplate gRapidSpinSpriteTemplate = //83FF068 { .tileTag = ANIM_TAG_RAPID_SPIN, .paletteTag = ANIM_TAG_RAPID_SPIN, @@ -431,7 +433,7 @@ const struct SpriteTemplate gRapidSpinSpriteTemplate = .callback = AnimRapidSpin, }; -const union AffineAnimCmd gUnknown_085CE2A0[] = +const union AffineAnimCmd gUnknown_83FF080[] = //83FF080 { AFFINEANIMCMD_FRAME(-12, 8, 0, 4), AFFINEANIMCMD_FRAME(20, -20, 0, 4), @@ -439,18 +441,18 @@ const union AffineAnimCmd gUnknown_085CE2A0[] = AFFINEANIMCMD_END, }; -const union AnimCmd gTriAttackTriangleAnimCmds[] = +const union AnimCmd gTriAttackTriangleAnimCmds[] = //83FF0A0 { ANIMCMD_FRAME(0, 8), ANIMCMD_END, }; -const union AnimCmd *const gTriAttackTriangleAnimTable[] = +const union AnimCmd *const gTriAttackTriangleAnimTable[] = //83FF0A8 { gTriAttackTriangleAnimCmds, }; -const union AffineAnimCmd gTriAttackTriangleAffineAnimCmds[] = +const union AffineAnimCmd gTriAttackTriangleAffineAnimCmds[] = //83FF0AC { AFFINEANIMCMD_FRAME(0, 0, 5, 40), AFFINEANIMCMD_FRAME(0, 0, 10, 10), @@ -459,12 +461,12 @@ const union AffineAnimCmd gTriAttackTriangleAffineAnimCmds[] = AFFINEANIMCMD_JUMP(0), }; -const union AffineAnimCmd *const gTriAttackTriangleAffineAnimTable[] = +const union AffineAnimCmd *const gTriAttackTriangleAffineAnimTable[] = //83FF0D4 { gTriAttackTriangleAffineAnimCmds, }; -const struct SpriteTemplate gTriAttackTriangleSpriteTemplate = +const struct SpriteTemplate gTriAttackTriangleSpriteTemplate = //83FF0D8 { .tileTag = ANIM_TAG_TRI_ATTACK_TRIANGLE, .paletteTag = ANIM_TAG_TRI_ATTACK_TRIANGLE, @@ -475,7 +477,7 @@ const struct SpriteTemplate gTriAttackTriangleSpriteTemplate = .callback = AnimTriAttackTriangle, }; -const union AnimCmd gEclipsingOrbAnimCmds[] = +const union AnimCmd gEclipsingOrbAnimCmds[] = //83FF0F0 { ANIMCMD_FRAME(0, 3), ANIMCMD_FRAME(16, 3), @@ -488,12 +490,12 @@ const union AnimCmd gEclipsingOrbAnimCmds[] = ANIMCMD_END, }; -const union AnimCmd *const gEclipsingOrbAnimTable[] = +const union AnimCmd *const gEclipsingOrbAnimTable[] = //83FF114 { gEclipsingOrbAnimCmds, }; -const struct SpriteTemplate gEclipsingOrbSpriteTemplate = +const struct SpriteTemplate gEclipsingOrbSpriteTemplate = //83FF118 { .tileTag = ANIM_TAG_ECLIPSING_ORB, .paletteTag = ANIM_TAG_ECLIPSING_ORB, @@ -504,7 +506,7 @@ const struct SpriteTemplate gEclipsingOrbSpriteTemplate = .callback = AnimSpriteOnMonPos, }; -const union AffineAnimCmd DefenseCurlDeformMonAffineAnimCmds[] = +const union AffineAnimCmd DefenseCurlDeformMonAffineAnimCmds[] = //83FF130 { AFFINEANIMCMD_FRAME(-12, 20, 0, 8), AFFINEANIMCMD_FRAME(12, -20, 0, 8), @@ -512,7 +514,7 @@ const union AffineAnimCmd DefenseCurlDeformMonAffineAnimCmds[] = AFFINEANIMCMD_END, }; -const struct SpriteTemplate gBatonPassPokeballSpriteTemplate = +const struct SpriteTemplate gBatonPassPokeballSpriteTemplate = //83FF150 { .tileTag = ANIM_TAG_POKEBALL, .paletteTag = ANIM_TAG_POKEBALL, @@ -523,7 +525,7 @@ const struct SpriteTemplate gBatonPassPokeballSpriteTemplate = .callback = AnimBatonPassPokeball, }; -const struct SpriteTemplate gWishStarSpriteTemplate = +const struct SpriteTemplate gWishStarSpriteTemplate = //83FF168 { .tileTag = ANIM_TAG_GOLD_STARS, .paletteTag = ANIM_TAG_GOLD_STARS, @@ -534,7 +536,7 @@ const struct SpriteTemplate gWishStarSpriteTemplate = .callback = AnimWishStar, }; -const struct SpriteTemplate gMiniTwinklingStarSpriteTemplate = +const struct SpriteTemplate gMiniTwinklingStarSpriteTemplate = //83FF180 { .tileTag = ANIM_TAG_GOLD_STARS, .paletteTag = ANIM_TAG_GOLD_STARS, @@ -545,7 +547,7 @@ const struct SpriteTemplate gMiniTwinklingStarSpriteTemplate = .callback = AnimMiniTwinklingStar, }; -const union AffineAnimCmd gStockpileDeformMonAffineAnimCmds[] = +const union AffineAnimCmd gStockpileDeformMonAffineAnimCmds[] = //83FF198 { AFFINEANIMCMD_FRAME(8, -8, 0, 12), AFFINEANIMCMD_FRAME(-16, 16, 0, 12), @@ -554,7 +556,7 @@ const union AffineAnimCmd gStockpileDeformMonAffineAnimCmds[] = AFFINEANIMCMD_END, }; -const union AffineAnimCmd gSpitUpDeformMonAffineAnimCmds[] = +const union AffineAnimCmd gSpitUpDeformMonAffineAnimCmds[] = //83FF1C0 { AFFINEANIMCMD_FRAME(0, 6, 0, 20), AFFINEANIMCMD_FRAME(0, 0, 0, 20), @@ -565,7 +567,7 @@ const union AffineAnimCmd gSpitUpDeformMonAffineAnimCmds[] = AFFINEANIMCMD_END, }; -const struct SpriteTemplate gSwallowBlueOrbSpriteTemplate = +const struct SpriteTemplate gSwallowBlueOrbSpriteTemplate = //83FF1F8 { .tileTag = ANIM_TAG_BLUE_ORB, .paletteTag = ANIM_TAG_BLUE_ORB, @@ -576,7 +578,7 @@ const struct SpriteTemplate gSwallowBlueOrbSpriteTemplate = .callback = AnimSwallowBlueOrb, }; -const union AffineAnimCmd gSwallowDeformMonAffineAnimCmds[] = +const union AffineAnimCmd gSwallowDeformMonAffineAnimCmds[] = //83FF210 { AFFINEANIMCMD_FRAME(0, 6, 0, 20), AFFINEANIMCMD_FRAME(0, 0, 0, 20), @@ -586,7 +588,7 @@ const union AffineAnimCmd gSwallowDeformMonAffineAnimCmds[] = AFFINEANIMCMD_END, }; -const s8 gMorningSunLightBeamCoordsTable[] = +const s8 gMorningSunLightBeamCoordsTable[] = //83FF240 { 0xE8, 0x18, @@ -594,33 +596,33 @@ const s8 gMorningSunLightBeamCoordsTable[] = 0x00, }; -const union AnimCmd gGreenStarAnimCmds1[] = +const union AnimCmd gGreenStarAnimCmds1[] = //83FF244 { ANIMCMD_FRAME(0, 6), ANIMCMD_FRAME(4, 6), ANIMCMD_JUMP(0), }; -const union AnimCmd gGreenStarAnimCmds2[] = +const union AnimCmd gGreenStarAnimCmds2[] = //83FF250 { ANIMCMD_FRAME(8, 6), ANIMCMD_END, }; -const union AnimCmd gGreenStarAnimCmds3[] = +const union AnimCmd gGreenStarAnimCmds3[] = //83FF258 { ANIMCMD_FRAME(12, 6), ANIMCMD_END, }; -const union AnimCmd *const gGreenStarAnimTable[] = +const union AnimCmd *const gGreenStarAnimTable[] = //83FF260 { gGreenStarAnimCmds1, gGreenStarAnimCmds2, gGreenStarAnimCmds3, }; -const struct SpriteTemplate gGreenStarSpriteTemplate = +const struct SpriteTemplate gGreenStarSpriteTemplate = //83FF26C { .tileTag = ANIM_TAG_GREEN_STAR, .paletteTag = ANIM_TAG_GREEN_STAR, @@ -631,7 +633,7 @@ const struct SpriteTemplate gGreenStarSpriteTemplate = .callback = AnimGreenStar, }; -const s8 gDoomDesireLightBeamCoordTable[] = +const s8 gDoomDesireLightBeamCoordTable[] = //83FF284 { 0x78, 0x50, @@ -639,7 +641,7 @@ const s8 gDoomDesireLightBeamCoordTable[] = 0x00, }; -const u8 gDoomDesireLightBeamDelayTable[] = +const u8 gDoomDesireLightBeamDelayTable[] = //83FF288 { 0, 0, @@ -648,7 +650,7 @@ const u8 gDoomDesireLightBeamDelayTable[] = 50, }; -const union AffineAnimCmd gStrongFrustrationAffineAnimCmds[] = +const union AffineAnimCmd gStrongFrustrationAffineAnimCmds[] = //83FF290 { AFFINEANIMCMD_FRAME(0, -15, 0, 7), AFFINEANIMCMD_FRAME(0, 15, 0, 7), @@ -656,7 +658,7 @@ const union AffineAnimCmd gStrongFrustrationAffineAnimCmds[] = AFFINEANIMCMD_END, }; -const struct SpriteTemplate gWeakFrustrationAngerMarkSpriteTemplate = +const struct SpriteTemplate gWeakFrustrationAngerMarkSpriteTemplate = //83FF2B0 { .tileTag = ANIM_TAG_ANGER, .paletteTag = ANIM_TAG_ANGER, @@ -667,7 +669,7 @@ const struct SpriteTemplate gWeakFrustrationAngerMarkSpriteTemplate = .callback = AnimWeakFrustrationAngerMark, }; -const union AnimCmd gSweetScentPetalAnimCmds1[] = +const union AnimCmd gSweetScentPetalAnimCmds1[] = //83FF2C8 { ANIMCMD_FRAME(0, 8), ANIMCMD_FRAME(1, 8), @@ -680,7 +682,7 @@ const union AnimCmd gSweetScentPetalAnimCmds1[] = ANIMCMD_JUMP(0), }; -const union AnimCmd gSweetScentPetalAnimCmds2[] = +const union AnimCmd gSweetScentPetalAnimCmds2[] = //83FF2EC { ANIMCMD_FRAME(0, 8, .hFlip = TRUE), ANIMCMD_FRAME(1, 8, .hFlip = TRUE), @@ -693,20 +695,20 @@ const union AnimCmd gSweetScentPetalAnimCmds2[] = ANIMCMD_JUMP(0), }; -const union AnimCmd gSweetScentPetalAnimCmds3[] = +const union AnimCmd gSweetScentPetalAnimCmds3[] = //83FF310 { ANIMCMD_FRAME(0, 8), ANIMCMD_END, }; -const union AnimCmd *const gSweetScentPetalAnimCmdTable[] = +const union AnimCmd *const gSweetScentPetalAnimCmdTable[] = //83FF318 { gSweetScentPetalAnimCmds1, gSweetScentPetalAnimCmds2, gSweetScentPetalAnimCmds3, }; -const struct SpriteTemplate gSweetScentPetalSpriteTemplate = +const struct SpriteTemplate gSweetScentPetalSpriteTemplate = //83FF324 { .tileTag = ANIM_TAG_PINK_PETAL, .paletteTag = ANIM_TAG_PINK_PETAL, @@ -717,9 +719,9 @@ const struct SpriteTemplate gSweetScentPetalSpriteTemplate = .callback = AnimSweetScentPetal, }; -const u16 gUnknown_085CE55C[] = INCBIN_U16("graphics/unknown/unknown_85CE55C.gbapal"); +const u16 gUnknown_83FF33C[] = INCBIN_U16("graphics/unknown/unk_83FF33C.gbapal"); //Unused -const union AnimCmd gPainSplitAnimCmds[] = +const union AnimCmd gPainSplitAnimCmds[] = //83FF35C { ANIMCMD_FRAME(0, 5), ANIMCMD_FRAME(4, 9), @@ -727,12 +729,12 @@ const union AnimCmd gPainSplitAnimCmds[] = ANIMCMD_END, }; -const union AnimCmd *const gPainSplitAnimCmdTable[] = +const union AnimCmd *const gPainSplitAnimCmdTable[] = //83FF36C { gPainSplitAnimCmds, }; -const struct SpriteTemplate gPainSplitProjectileSpriteTemplate = +const struct SpriteTemplate gPainSplitProjectileSpriteTemplate = //83FF370 { .tileTag = ANIM_TAG_PAIN_SPLIT, .paletteTag = ANIM_TAG_PAIN_SPLIT, @@ -743,7 +745,7 @@ const struct SpriteTemplate gPainSplitProjectileSpriteTemplate = .callback = AnimPainSplitProjectile, }; -const struct SpriteTemplate gFlatterConfettiSpriteTemplate = +const struct SpriteTemplate gFlatterConfettiSpriteTemplate = //83FF388 { .tileTag = ANIM_TAG_CONFETTI, .paletteTag = ANIM_TAG_CONFETTI, @@ -754,7 +756,7 @@ const struct SpriteTemplate gFlatterConfettiSpriteTemplate = .callback = AnimFlatterConfetti, }; -const struct SpriteTemplate gFlatterSpotlightSpriteTemplate = +const struct SpriteTemplate gFlatterSpotlightSpriteTemplate = //83FF3A0 { .tileTag = ANIM_TAG_SPOTLIGHT, .paletteTag = ANIM_TAG_SPOTLIGHT, @@ -765,7 +767,7 @@ const struct SpriteTemplate gFlatterSpotlightSpriteTemplate = .callback = AnimFlatterSpotlight, }; -const struct SpriteTemplate gReversalOrbSpriteTemplate = +const struct SpriteTemplate gReversalOrbSpriteTemplate = //83FF3B8 { .tileTag = ANIM_TAG_BLUE_ORB, .paletteTag = ANIM_TAG_BLUE_ORB, @@ -776,7 +778,7 @@ const struct SpriteTemplate gReversalOrbSpriteTemplate = .callback = AnimReversalOrb, }; -const union AffineAnimCmd gDeepInhaleAffineAnimCmds[] = +const union AffineAnimCmd gDeepInhaleAffineAnimCmds[] = //83FF3D0 { AFFINEANIMCMD_FRAME(16, 0, 0, 4), AFFINEANIMCMD_FRAME(0, -3, 0, 16), @@ -786,7 +788,7 @@ const union AffineAnimCmd gDeepInhaleAffineAnimCmds[] = AFFINEANIMCMD_END, }; -const union AffineAnimCmd gYawnCloudAffineAnimCmds1[] = +const union AffineAnimCmd gYawnCloudAffineAnimCmds1[] = //83FF400 { AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0), AFFINEANIMCMD_FRAME(-8, -8, 0, 8), @@ -794,7 +796,7 @@ const union AffineAnimCmd gYawnCloudAffineAnimCmds1[] = AFFINEANIMCMD_JUMP(0), }; -const union AffineAnimCmd gYawnCloudAffineAnimCmds2[] = +const union AffineAnimCmd gYawnCloudAffineAnimCmds2[] = //83FF420 { AFFINEANIMCMD_FRAME(0xC0, 0xC0, 0, 0), AFFINEANIMCMD_FRAME(8, 8, 0, 8), @@ -802,7 +804,7 @@ const union AffineAnimCmd gYawnCloudAffineAnimCmds2[] = AFFINEANIMCMD_JUMP(0), }; -const union AffineAnimCmd gYawnCloudAffineAnimCmds3[] = +const union AffineAnimCmd gYawnCloudAffineAnimCmds3[] = //83FF440 { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(8, 8, 0, 8), @@ -810,14 +812,14 @@ const union AffineAnimCmd gYawnCloudAffineAnimCmds3[] = AFFINEANIMCMD_JUMP(0), }; -const union AffineAnimCmd *const gYawnCloudAffineAnimTable[] = +const union AffineAnimCmd *const gYawnCloudAffineAnimTable[] = //83FF460 { gYawnCloudAffineAnimCmds1, gYawnCloudAffineAnimCmds2, gYawnCloudAffineAnimCmds3, }; -const struct SpriteTemplate gYawnCloudSpriteTemplate = +const struct SpriteTemplate gYawnCloudSpriteTemplate = //83FF46C { .tileTag = ANIM_TAG_PINK_CLOUD, .paletteTag = ANIM_TAG_PINK_CLOUD, @@ -828,7 +830,7 @@ const struct SpriteTemplate gYawnCloudSpriteTemplate = .callback = AnimYawnCloud, }; -const union AffineAnimCmd gSmokeBallEscapeCloudAffineAnimCmds1[] = +const union AffineAnimCmd gSmokeBallEscapeCloudAffineAnimCmds1[] = //83FF484 { AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0), AFFINEANIMCMD_FRAME(-4, -6, 0, 16), @@ -836,7 +838,7 @@ const union AffineAnimCmd gSmokeBallEscapeCloudAffineAnimCmds1[] = AFFINEANIMCMD_JUMP(0), }; -const union AffineAnimCmd gSmokeBallEscapeCloudAffineAnimCmds2[] = +const union AffineAnimCmd gSmokeBallEscapeCloudAffineAnimCmds2[] = //83FF4A4 { AFFINEANIMCMD_FRAME(0xC0, 0xC0, 0, 0), AFFINEANIMCMD_FRAME(4, 6, 0, 16), @@ -844,7 +846,7 @@ const union AffineAnimCmd gSmokeBallEscapeCloudAffineAnimCmds2[] = AFFINEANIMCMD_JUMP(0), }; -const union AffineAnimCmd gSmokeBallEscapeCloudAffineAnimCmds3[] = +const union AffineAnimCmd gSmokeBallEscapeCloudAffineAnimCmds3[] = //83FF4C4 { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(4, 6, 0, 16), @@ -852,7 +854,7 @@ const union AffineAnimCmd gSmokeBallEscapeCloudAffineAnimCmds3[] = AFFINEANIMCMD_JUMP(0), }; -const union AffineAnimCmd gSmokeBallEscapeCloudAffineAnimCmds4[] = +const union AffineAnimCmd gSmokeBallEscapeCloudAffineAnimCmds4[] = //83FF4E4 { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(8, 10, 0, 30), @@ -860,7 +862,7 @@ const union AffineAnimCmd gSmokeBallEscapeCloudAffineAnimCmds4[] = AFFINEANIMCMD_JUMP(0), }; -const union AffineAnimCmd *const gSmokeBallEscapeCloudAffineAnimTable[] = +const union AffineAnimCmd *const gSmokeBallEscapeCloudAffineAnimTable[] = //83FF504 { gSmokeBallEscapeCloudAffineAnimCmds1, gSmokeBallEscapeCloudAffineAnimCmds2, @@ -868,7 +870,7 @@ const union AffineAnimCmd *const gSmokeBallEscapeCloudAffineAnimTable[] = gSmokeBallEscapeCloudAffineAnimCmds4, }; -const struct SpriteTemplate gSmokeBallEscapeCloudSpriteTemplate = +const struct SpriteTemplate gSmokeBallEscapeCloudSpriteTemplate = //83FF514 { .tileTag = ANIM_TAG_PINK_CLOUD, .paletteTag = ANIM_TAG_PINK_CLOUD, @@ -879,7 +881,7 @@ const struct SpriteTemplate gSmokeBallEscapeCloudSpriteTemplate = .callback = AnimSmokeBallEscapeCloud, }; -const union AffineAnimCmd gFacadeSquishAffineAnimCmds[] = +const union AffineAnimCmd gFacadeSquishAffineAnimCmds[] = //83FF52C { AFFINEANIMCMD_FRAME(-16, 16, 0, 6), AFFINEANIMCMD_FRAME(16, -16, 0, 12), @@ -887,7 +889,7 @@ const union AffineAnimCmd gFacadeSquishAffineAnimCmds[] = AFFINEANIMCMD_END, }; -const struct SpriteTemplate gFacadeSweatDropSpriteTemplate = +const struct SpriteTemplate gFacadeSweatDropSpriteTemplate = //83FF54C { .tileTag = ANIM_TAG_SWEAT_DROP, .paletteTag = ANIM_TAG_SWEAT_DROP, @@ -898,7 +900,8 @@ const struct SpriteTemplate gFacadeSweatDropSpriteTemplate = .callback = AnimFacadeSweatDrop, }; -const u16 gFacadeBlendColors[] = { +const u16 gFacadeBlendColors[] = //83FF564 +{ RGB(28, 25, 1), RGB(28, 21, 5), RGB(27, 18, 8), @@ -925,27 +928,27 @@ const u16 gFacadeBlendColors[] = { RGB(29, 27, 0), }; -const union AnimCmd gRoarNoiseLineAnimCmds1[] = +const union AnimCmd gRoarNoiseLineAnimCmds1[] = //83FF594 { ANIMCMD_FRAME(0, 3), ANIMCMD_FRAME(16, 3), ANIMCMD_JUMP(0), }; -const union AnimCmd gRoarNoiseLineAnimCmds2[] = +const union AnimCmd gRoarNoiseLineAnimCmds2[] = //83FF5A0 { ANIMCMD_FRAME(32, 3), ANIMCMD_FRAME(48, 3), ANIMCMD_JUMP(0), }; -const union AnimCmd *const gRoarNoiseLineAnimTable[] = +const union AnimCmd *const gRoarNoiseLineAnimTable[] = //83FF5AC { gRoarNoiseLineAnimCmds1, gRoarNoiseLineAnimCmds2, }; -const struct SpriteTemplate gRoarNoiseLineSpriteTemplate = +const struct SpriteTemplate gRoarNoiseLineSpriteTemplate = //83FF5B4 { .tileTag = ANIM_TAG_NOISE_LINE, .paletteTag = ANIM_TAG_NOISE_LINE, @@ -956,7 +959,7 @@ const struct SpriteTemplate gRoarNoiseLineSpriteTemplate = .callback = AnimRoarNoiseLine, }; -const struct SpriteTemplate gGlareEyeDotSpriteTemplate = +const struct SpriteTemplate gGlareEyeDotSpriteTemplate = //83FF5CC { .tileTag = ANIM_TAG_SMALL_RED_EYE, .paletteTag = ANIM_TAG_SMALL_RED_EYE, @@ -967,7 +970,7 @@ const struct SpriteTemplate gGlareEyeDotSpriteTemplate = .callback = AnimGlareEyeDot, }; -const struct SpriteTemplate gAssistPawprintSpriteTemplate = +const struct SpriteTemplate gAssistPawprintSpriteTemplate = //83FF5E4 { .tileTag = ANIM_TAG_PAW_PRINT, .paletteTag = ANIM_TAG_PAW_PRINT, @@ -978,26 +981,26 @@ const struct SpriteTemplate gAssistPawprintSpriteTemplate = .callback = AnimAssistPawprint, }; -const union AffineAnimCmd gBarrageBallAffineAnimCmds1[] = +const union AffineAnimCmd gBarrageBallAffineAnimCmds1[] = //83FF5FC { AFFINEANIMCMD_FRAME(0, 0, -4, 24), AFFINEANIMCMD_END, }; -const union AffineAnimCmd gBarrageBallAffineAnimCmds2[] = +const union AffineAnimCmd gBarrageBallAffineAnimCmds2[] = //83FF60C { AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_FRAME(0, 0, 4, 24), AFFINEANIMCMD_END, }; -const union AffineAnimCmd *const gBarrageBallAffineAnimTable[] = +const union AffineAnimCmd *const gBarrageBallAffineAnimTable[] = //83FF624 { gBarrageBallAffineAnimCmds1, gBarrageBallAffineAnimCmds2, }; -const struct SpriteTemplate gBarrageBallSpriteTemplate = +const struct SpriteTemplate gBarrageBallSpriteTemplate = //83FF62C { .tileTag = ANIM_TAG_RED_BALL, .paletteTag = ANIM_TAG_RED_BALL, @@ -1008,7 +1011,7 @@ const struct SpriteTemplate gBarrageBallSpriteTemplate = .callback = SpriteCallbackDummy, }; -const struct SpriteTemplate gSmellingSaltsHandSpriteTemplate = +const struct SpriteTemplate gSmellingSaltsHandSpriteTemplate = //83FF644 { .tileTag = ANIM_TAG_TAG_HAND, .paletteTag = ANIM_TAG_TAG_HAND, @@ -1019,14 +1022,14 @@ const struct SpriteTemplate gSmellingSaltsHandSpriteTemplate = .callback = AnimSmellingSaltsHand, }; -const union AffineAnimCmd gSmellingSaltsSquishAffineAnimCmds[] = +const union AffineAnimCmd gSmellingSaltsSquishAffineAnimCmds[] = //83FF65C { AFFINEANIMCMD_FRAME(0, -16, 0, 6), AFFINEANIMCMD_FRAME(0, 16, 0, 6), AFFINEANIMCMD_END, }; -const struct SpriteTemplate gSmellingSaltExclamationSpriteTemplate = +const struct SpriteTemplate gSmellingSaltExclamationSpriteTemplate = //83FF674 { .tileTag = ANIM_TAG_SMELLINGSALT_EFFECT, .paletteTag = ANIM_TAG_SMELLINGSALT_EFFECT, @@ -1037,7 +1040,7 @@ const struct SpriteTemplate gSmellingSaltExclamationSpriteTemplate = .callback = AnimSmellingSaltExclamation, }; -const struct SpriteTemplate gHelpingHandClapSpriteTemplate = +const struct SpriteTemplate gHelpingHandClapSpriteTemplate = //83FF68C { .tileTag = ANIM_TAG_TAG_HAND, .paletteTag = ANIM_TAG_TAG_HAND, @@ -1048,7 +1051,7 @@ const struct SpriteTemplate gHelpingHandClapSpriteTemplate = .callback = AnimHelpingHandClap, }; -const struct SpriteTemplate gForesightMagnifyingGlassSpriteTemplate = +const struct SpriteTemplate gForesightMagnifyingGlassSpriteTemplate = //83FF6A4 { .tileTag = ANIM_TAG_MAGNIFYING_GLASS, .paletteTag = ANIM_TAG_MAGNIFYING_GLASS, @@ -1059,7 +1062,7 @@ const struct SpriteTemplate gForesightMagnifyingGlassSpriteTemplate = .callback = AnimForesightMagnifyingGlass, }; -const struct SpriteTemplate gMeteorMashStarSpriteTemplate = +const struct SpriteTemplate gMeteorMashStarSpriteTemplate = //83FF6BC { .tileTag = ANIM_TAG_GOLD_STARS, .paletteTag = ANIM_TAG_GOLD_STARS, @@ -1070,7 +1073,7 @@ const struct SpriteTemplate gMeteorMashStarSpriteTemplate = .callback = AnimMeteorMashStar, }; -const struct SpriteTemplate gUnknown_085CE8F4 = +const struct SpriteTemplate gUnknown_83FF6D4 = //83FF6D4 { .tileTag = ANIM_TAG_GOLD_STARS, .paletteTag = ANIM_TAG_GOLD_STARS, @@ -1081,7 +1084,7 @@ const struct SpriteTemplate gUnknown_085CE8F4 = .callback = AnimParticuleBurst, }; -const struct SpriteTemplate gBlockXSpriteTemplate = +const struct SpriteTemplate gBlockXSpriteTemplate = //83FF6EC { .tileTag = ANIM_TAG_X_SIGN, .paletteTag = ANIM_TAG_X_SIGN, @@ -1092,7 +1095,7 @@ const struct SpriteTemplate gBlockXSpriteTemplate = .callback = AnimBlockX, }; -const struct SpriteTemplate gUnknown_085CE924 = +const struct SpriteTemplate gUnknown_83FF704 = //83FF704 { .tileTag = ANIM_TAG_ITEM_BAG, .paletteTag = ANIM_TAG_ITEM_BAG, @@ -1100,42 +1103,42 @@ const struct SpriteTemplate gUnknown_085CE924 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_815FE80, + .callback = sub_80E3E84, }; -const union AnimCmd gKnockOffStrikeAnimCmds[] = +const union AnimCmd gKnockOffStrikeAnimCmds[] = //83FF71C { ANIMCMD_FRAME(0, 4), ANIMCMD_FRAME(64, 4), ANIMCMD_END, }; -const union AnimCmd *const gKnockOffStrikeAnimTable[] = +const union AnimCmd *const gKnockOffStrikeAnimTable[] = //83FF728 { gKnockOffStrikeAnimCmds, }; -const union AffineAnimCmd gKnockOffStrikeAffineanimCmds1[] = +const union AffineAnimCmd gKnockOffStrikeAffineanimCmds1[] = //83FF72C { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0, 0, -4, 8), AFFINEANIMCMD_END, }; -const union AffineAnimCmd gKnockOffStrikeAffineanimCmds2[] = +const union AffineAnimCmd gKnockOffStrikeAffineanimCmds2[] = //83FF744 { AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0, 0, 4, 8), AFFINEANIMCMD_END, }; -const union AffineAnimCmd *const gKnockOffStrikeAffineAnimTable[] = +const union AffineAnimCmd *const gKnockOffStrikeAffineAnimTable[] = //83FF75C { gKnockOffStrikeAffineanimCmds1, gKnockOffStrikeAffineanimCmds2, }; -const struct SpriteTemplate gKnockOffStrikeSpriteTemplate = +const struct SpriteTemplate gKnockOffStrikeSpriteTemplate = //83FF764 { .tileTag = ANIM_TAG_SLAM_HIT_2, .paletteTag = ANIM_TAG_SLAM_HIT_2, @@ -1146,18 +1149,18 @@ const struct SpriteTemplate gKnockOffStrikeSpriteTemplate = .callback = AnimKnockOffStrike, }; -const union AffineAnimCmd gRecycleSpriteAffineAnimCmds[] = +const union AffineAnimCmd gRecycleSpriteAffineAnimCmds[] = //83FF77C { AFFINEANIMCMD_FRAME(0, 0, -4, 64), AFFINEANIMCMD_JUMP(0), }; -const union AffineAnimCmd *const gRecycleSpriteAffineAnimTable[] = +const union AffineAnimCmd *const gRecycleSpriteAffineAnimTable[] = //83FF78C { gRecycleSpriteAffineAnimCmds, }; -const struct SpriteTemplate gRecycleSpriteTemplate = +const struct SpriteTemplate gRecycleSpriteTemplate = //83FF790 { .tileTag = ANIM_TAG_RECYCLE, .paletteTag = ANIM_TAG_RECYCLE, @@ -1168,7 +1171,7 @@ const struct SpriteTemplate gRecycleSpriteTemplate = .callback = AnimRecycle, }; -const union AffineAnimCmd gSlackOffSquishAffineAnimCmds[] = +const union AffineAnimCmd gSlackOffSquishAffineAnimCmds[] = //83FF7A8 { AFFINEANIMCMD_FRAME(0, 16, 0, 4), AFFINEANIMCMD_FRAME(-2, 0, 0, 8), @@ -1179,6 +1182,8 @@ const union AffineAnimCmd gSlackOffSquishAffineAnimCmds[] = }; // Functions + +// 80DE2C0 void AnimBlackSmoke(struct Sprite *sprite) { sprite->pos1.x += gBattleAnimArgs[0]; @@ -1944,7 +1949,7 @@ static void TormentAttacker_Step(u8 taskId) task->data[5] -= 6; } - PrepareAffineAnimInTaskData(task, task->data[15], gUnknown_085CE2A0); + PrepareAffineAnimInTaskData(task, task->data[15], gUnknown_83FF080); task->data[1]++; task->data[0] = 1; break; @@ -2049,7 +2054,7 @@ void AnimTask_DefenseCurlDeformMon(u8 taskId) switch (gTasks[taskId].data[0]) { case 0: - PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), gUnknown_085CE350); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), DefenseCurlDeformMonAffineAnimCmds); gTasks[taskId].data[0]++; break; case 1: @@ -2191,7 +2196,7 @@ void AnimTask_StockpileDeformMon(u8 taskId) { if (!gTasks[taskId].data[0]) { - PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), gUnknown_085CE3B8); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), gStockpileDeformMonAffineAnimCmds); gTasks[taskId].data[0]++; } else @@ -2205,7 +2210,7 @@ void AnimTask_SpitUpDeformMon(u8 taskId) { if (!gTasks[taskId].data[0]) { - PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), gUnknown_085CE3E0); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), gSpitUpDeformMonAffineAnimCmds); gTasks[taskId].data[0]++; } else @@ -2238,7 +2243,7 @@ void AnimTask_SwallowDeformMon(u8 taskId) { if (!gTasks[taskId].data[0]) { - PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), gUnknown_085CE430); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), gSwallowDeformMonAffineAnimCmds); gTasks[taskId].data[0]++; } else @@ -2248,6 +2253,7 @@ void AnimTask_SwallowDeformMon(u8 taskId) } } +// case 2 quite different :/ void AnimTask_TransformMon(u8 taskId) { int i, j; @@ -2456,7 +2462,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId) if (!gTasks[taskId].data[1]) { - gBattle_BG1_X = gUnknown_085CE460[gTasks[taskId].data[2]] + gTasks[taskId].data[10]; + gBattle_BG1_X = gMorningSunLightBeamCoordsTable[gTasks[taskId].data[2]] + gTasks[taskId].data[10]; if (++gTasks[taskId].data[2] == 4) gTasks[taskId].data[0] = 4; else @@ -2503,8 +2509,8 @@ void AnimGreenStar(struct Sprite *sprite) sprite->data[1] = gBattleAnimArgs[0]; sprite->data[2] = gBattleAnimArgs[1]; - spriteId1 = CreateSprite(&gUnknown_085CE48C, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1); - spriteId2 = CreateSprite(&gUnknown_085CE48C, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1); + spriteId1 = CreateSprite(&gGreenStarSpriteTemplate, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1); + spriteId2 = CreateSprite(&gGreenStarSpriteTemplate, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1); StartSpriteAnim(&gSprites[spriteId1], 1); StartSpriteAnim(&gSprites[spriteId2], 2); @@ -2595,10 +2601,10 @@ void AnimTask_DoomDesireLightBeam(u8 taskId) sub_80A6D60(&animBg, &gUnknown_08C2A6EC, 0); */ - sub_80752A0 - sub_807543C - sub_80753B4 - LoadCompressedPalette + sub_80752A0( , + sub_807543C( , gUnknown_8D2A8C0 + sub_80753B4( , gUnknown_8D2A808 + LoadCompressedPalette(gUnknown_8D2A808 //... if (IsContest()) @@ -2631,8 +2637,8 @@ void AnimTask_DoomDesireLightBeam(u8 taskId) gBattle_BG1_Y = 0; } - AnimLoadCompressedBgGfx(animBg.bgId, gUnknown_08C2A634, animBg.tilesOffset); - LoadCompressedPalette(gUnknown_08C2A6D4, animBg.paletteId * 16, 32); + //AnimLoadCompressedBgGfx(animBg.bgId, gUnknown_08C2A634, animBg.tilesOffset); + //LoadCompressedPalette(gUnknown_08C2A6D4, animBg.paletteId * 16, 32); gTasks[taskId].data[10] = gBattle_BG1_X; gTasks[taskId].data[11] = gBattle_BG1_Y; gTasks[taskId].data[0]++; @@ -2640,9 +2646,9 @@ void AnimTask_DoomDesireLightBeam(u8 taskId) case 1: gTasks[taskId].data[3] = 0; if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) - gBattle_BG1_X = gTasks[taskId].data[10] + gUnknown_085CE4A4[gTasks[taskId].data[2]]; + gBattle_BG1_X = gTasks[taskId].data[10] + gDoomDesireLightBeamCoordTable[gTasks[taskId].data[2]]; else - gBattle_BG1_X = gTasks[taskId].data[10] - gUnknown_085CE4A4[gTasks[taskId].data[2]]; + gBattle_BG1_X = gTasks[taskId].data[10] - gDoomDesireLightBeamCoordTable[gTasks[taskId].data[2]]; if (++gTasks[taskId].data[2] == 5) gTasks[taskId].data[0] = 5; @@ -2658,7 +2664,7 @@ void AnimTask_DoomDesireLightBeam(u8 taskId) gTasks[taskId].data[0]++; break; case 3: - if (++gTasks[taskId].data[3] > gUnknown_085CE4A8[gTasks[taskId].data[2]]) + if (++gTasks[taskId].data[3] > gDoomDesireLightBeamDelayTable[gTasks[taskId].data[2]]) gTasks[taskId].data[0]++; break; case 4: diff --git a/src/battle_anim_special.c b/src/battle_anim_special.c new file mode 100644 index 000000000..d0d40a6d8 --- /dev/null +++ b/src/battle_anim_special.c @@ -0,0 +1,2296 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_controllers.h" +#include "battle_interface.h" +#include "decompress.h" +#include "dma3.h" +#include "gpu_regs.h" +#include "graphics.h" +#include "m4a.h" +#include "main.h" +#include "palette.h" +#include "pokeball.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" +#include "trig.h" +#include "util.h" +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/songs.h" +#include "constants/rgb.h" + +// Defines +#define TAG_PARTICLES_POKEBALL 55020 +#define TAG_PARTICLES_GREATBALL 55021 +#define TAG_PARTICLES_SAFARIBALL 55022 +#define TAG_PARTICLES_ULTRABALL 55023 +#define TAG_PARTICLES_MASTERBALL 55024 +#define TAG_PARTICLES_NETBALL 55025 +#define TAG_PARTICLES_DIVEBALL 55026 +#define TAG_PARTICLES_NESTBALL 55027 +#define TAG_PARTICLES_REPEATBALL 55028 +#define TAG_PARTICLES_TIMERBALL 55029 +#define TAG_PARTICLES_LUXURYBALL 55030 +#define TAG_PARTICLES_PREMIERBALL 55031 + +// IWRAM +EWRAM_DATA int gUnknown_3005424 = 0; +EWRAM_DATA u16 gUnknown_3005428 = 0; +EWRAM_DATA u16 gUnknown_300542C = 0; + +// Function Declarations +static void sub_80EEDF4(u8); +static void sub_80EF1CC(u8); +static void sub_80EF698(u8); +static void sub_80EF8C0(struct Sprite *); +static void sub_80EF7EC(u8); +static void sub_80EF864(u8); +static void sub_80EF8F0(struct Sprite *); +static void sub_80F0478(struct Sprite *); +static void sub_80EF9B4(struct Sprite *); +static void sub_80EFA0C(struct Sprite *); +static void sub_80EFB58(struct Sprite *); +static void sub_80EFB9C(struct Sprite *); +static void sub_80EFF80(struct Sprite *); +static void sub_80EFCA0(struct Sprite *); +static void sub_80EFCEC(struct Sprite *); +static void sub_80EFFA4(struct Sprite *); +static void sub_80F02B0(struct Sprite *); +static void sub_80EFFC4(struct Sprite *); +static void sub_80F01B8(struct Sprite *); +static void sub_80F00A4(struct Sprite *); +static void sub_80F018C(struct Sprite *); +static void sub_80F05B4(u8); +static void sub_80F0278(struct Sprite *); +static void sub_80F0378(struct Sprite *); +static void sub_80F04B4(struct Sprite *); +static void PokeBallOpenParticleAnimation_Step1(struct Sprite *); +static void PokeBallOpenParticleAnimation_Step2(struct Sprite *); +static void DestroyBallOpenAnimationParticle(struct Sprite *); +static void FanOutBallOpenParticles_Step1(struct Sprite *); +static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *); +static void PremierBallOpenParticleAnimation_Step1(struct Sprite *); +static void sub_80F12E0(u8); +static void sub_80F1370(u8); +static void sub_80F13C0(u8); +static void sub_80F181C(u8); +static void sub_80F1A2C(struct Sprite *); +static void sub_80F1A80(struct Sprite *); +static void sub_80F19E0(u8); +static void sub_80F1BCC(struct Sprite *); +static void sub_80F1C04(struct Sprite *); +static void sub_80F1C30(struct Sprite *); +static void PokeBallOpenParticleAnimation(u8); +static void GreatBallOpenParticleAnimation(u8); +static void SafariBallOpenParticleAnimation(u8); +static void UltraBallOpenParticleAnimation(u8); +static void MasterBallOpenParticleAnimation(u8); +static void DiveBallOpenParticleAnimation(u8); +static void RepeatBallOpenParticleAnimation(u8); +static void TimerBallOpenParticleAnimation(u8); +static void PremierBallOpenParticleAnimation(u8); +static void sub_80F1B3C(struct Sprite *); + +// Data +struct BallCaptureSuccessStarData +{ + s8 xOffset; + s8 yOffset; + s8 unk2; +}; + +static const struct BallCaptureSuccessStarData sBallCaptureSuccessStarData[] = //gUnknown_840BF3C +{ + { + .xOffset = 10, + .yOffset = 2, + .unk2 = -3, + }, + { + .xOffset = 15, + .yOffset = 0, + .unk2 = -4, + }, + { + .xOffset = -10, + .yOffset = 2, + .unk2 = -4, + }, +}; + +const struct CompressedSpriteSheet gBallParticleSpritesheets[] = //gUnknown_840BF48 +{ + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_POKEBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_GREATBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_SAFARIBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_ULTRABALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_MASTERBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_NETBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_DIVEBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_NESTBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_REPEATBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_TIMERBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_LUXURYBALL}, + {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_PREMIERBALL}, +}; + +const struct CompressedSpritePalette gBallParticlePalettes[] = //gUnknown_840BFA8 +{ + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_POKEBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_GREATBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_SAFARIBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_ULTRABALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_MASTERBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_NETBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_DIVEBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_NESTBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_REPEATBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_TIMERBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_LUXURYBALL}, + {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_PREMIERBALL}, +}; + +const union AnimCmd gAnim_RegularBall[] = //gAnimCmd_840C008 +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(0, 1, .hFlip = TRUE), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gAnim_MasterBall[] = //gAnimCmd_840C024 +{ + ANIMCMD_FRAME(3, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnim_NetDiveBall[] = //gAnimCmd_840C02C +{ + ANIMCMD_FRAME(4, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnim_NestBall[] = //gAnimCmd_840C034 +{ + ANIMCMD_FRAME(5, 1), + ANIMCMD_END, +}; + +const union AnimCmd gAnim_LuxuryPremierBall[] = //gAnimCmd_840C03C +{ + ANIMCMD_FRAME(6, 4), + ANIMCMD_FRAME(7, 4), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gAnim_UltraRepeatTimerBall[] = //gAnimCmd_840C048 +{ + ANIMCMD_FRAME(7, 4), + ANIMCMD_END, +}; + +const union AnimCmd *const gAnims_BallParticles[] = //gSpriteAnimTable_840C050 +{ + gAnim_RegularBall, + gAnim_MasterBall, + gAnim_NetDiveBall, + gAnim_NestBall, + gAnim_LuxuryPremierBall, + gAnim_UltraRepeatTimerBall, +}; + +const u8 gBallParticleAnimNums[] = //gUnknown_840C068 +{ + [BALL_POKE] = 0, + [BALL_GREAT] = 0, + [BALL_SAFARI] = 0, + [BALL_ULTRA] = 5, + [BALL_MASTER] = 1, + [BALL_NET] = 2, + [BALL_DIVE] = 2, + [BALL_NEST] = 3, + [BALL_REPEAT] = 5, + [BALL_TIMER] = 5, + [BALL_LUXURY] = 4, + [BALL_PREMIER] = 4, +}; + +const TaskFunc gBallParticleAnimationFuncs[] = //gUnknown_840C074 +{ + PokeBallOpenParticleAnimation, + GreatBallOpenParticleAnimation, + SafariBallOpenParticleAnimation, + UltraBallOpenParticleAnimation, + MasterBallOpenParticleAnimation, + SafariBallOpenParticleAnimation, + DiveBallOpenParticleAnimation, + UltraBallOpenParticleAnimation, + RepeatBallOpenParticleAnimation, + TimerBallOpenParticleAnimation, + GreatBallOpenParticleAnimation, + PremierBallOpenParticleAnimation, +}; + +const struct SpriteTemplate gBallParticlesSpriteTemplates[] = //gUnknown_840C0A4 +{ + { + .tileTag = TAG_PARTICLES_POKEBALL, + .paletteTag = TAG_PARTICLES_POKEBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_GREATBALL, + .paletteTag = TAG_PARTICLES_GREATBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_SAFARIBALL, + .paletteTag = TAG_PARTICLES_SAFARIBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_ULTRABALL, + .paletteTag = TAG_PARTICLES_ULTRABALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_MASTERBALL, + .paletteTag = TAG_PARTICLES_MASTERBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_NETBALL, + .paletteTag = TAG_PARTICLES_NETBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_DIVEBALL, + .paletteTag = TAG_PARTICLES_DIVEBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_NESTBALL, + .paletteTag = TAG_PARTICLES_NESTBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_REPEATBALL, + .paletteTag = TAG_PARTICLES_REPEATBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_TIMERBALL, + .paletteTag = TAG_PARTICLES_TIMERBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_LUXURYBALL, + .paletteTag = TAG_PARTICLES_LUXURYBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = TAG_PARTICLES_PREMIERBALL, + .paletteTag = TAG_PARTICLES_PREMIERBALL, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gAnims_BallParticles, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, +}; + +const u16 gBallOpenFadeColors[] = //gUnknown_840C1C4 +{ + [BALL_POKE] = RGB(31, 22, 30), + [BALL_GREAT] = RGB(16, 23, 30), + [BALL_SAFARI] = RGB(23, 30, 20), + [BALL_ULTRA] = RGB(31, 31, 15), + [BALL_MASTER] = RGB(23, 20, 28), + [BALL_NET] = RGB(21, 31, 25), + [BALL_DIVE] = RGB(12, 25, 30), + [BALL_NEST] = RGB(30, 27, 10), + [BALL_REPEAT] = RGB(31, 24, 16), + [BALL_TIMER] = RGB(29, 30, 30), + [BALL_LUXURY] = RGB(31, 17, 10), + [BALL_PREMIER] = RGB(31, 9, 10), + + // Garbage data + RGB(0, 0, 0), + RGB(1, 16, 0), + RGB(3, 0, 1), + RGB(1, 8, 0), + RGB(0, 8, 0), + RGB(3, 8, 1), + RGB(6, 8, 1), + RGB(4, 0, 0), +}; + +const struct SpriteTemplate gPokeblockSpriteTemplate = //gUnknown_840C1EC +{ + .tileTag = ANIM_TAG_POKEBLOCK, + .paletteTag = ANIM_TAG_POKEBLOCK, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80F1B3C, +}; + +const union AnimCmd gUnknown_840C204[] = +{ + ANIMCMD_FRAME(64, 1), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_840C20C[] = { + gUnknown_840C204, +}; + +const struct SpriteTemplate gUnknown_840C210 = +{ + .tileTag = ANIM_TAG_ROCKS, + .paletteTag = ANIM_TAG_ROCKS, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gSpriteAnimTable_840C20C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80F1B3C, +}; + +extern const struct SpriteTemplate gWishStarSpriteTemplate; +extern const struct SpriteTemplate gMiniTwinklingStarSpriteTemplate; + +// Functions +void sub_80EEC0C(u8 taskId) +{ + struct BattleAnimBgData unknownStruct; + u8 healthBoxSpriteId; + u8 battler; + u8 spriteId1, spriteId2, spriteId3, spriteId4; + + battler = gBattleAnimAttacker; + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 0); + SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0); + SetAnimBgAttribute(1, BG_ANIM_AREA_OVERFLOW_MODE, 1); + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); + + healthBoxSpriteId = gHealthboxSpriteIds[battler]; + spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam; + spriteId2 = gSprites[healthBoxSpriteId].data[5]; + spriteId3 = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); + spriteId4 = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); + gSprites[healthBoxSpriteId].oam.priority = 1; + gSprites[spriteId1].oam.priority = 1; + gSprites[spriteId2].oam.priority = 1; + gSprites[spriteId3] = gSprites[healthBoxSpriteId]; + gSprites[spriteId4] = gSprites[spriteId1]; + gSprites[spriteId3].oam.objMode = ST_OAM_OBJ_WINDOW; + gSprites[spriteId4].oam.objMode = ST_OAM_OBJ_WINDOW; + gSprites[spriteId3].callback = SpriteCallbackDummy; + gSprites[spriteId4].callback = SpriteCallbackDummy; + + sub_80A6B30(&unknownStruct); + AnimLoadCompressedBgTilemap(unknownStruct.bgId, gUnknown_08C2EA9C); + AnimLoadCompressedBgGfx(unknownStruct.bgId, gUnknown_08C2EA50, unknownStruct.tilesOffset); + LoadCompressedPalette(gCureBubblesPal, unknownStruct.paletteId << 4, 32); + + gBattle_BG1_X = -gSprites[spriteId3].pos1.x + 32; + gBattle_BG1_Y = -gSprites[spriteId3].pos1.y - 32; + gTasks[taskId].data[1] = 640; + gTasks[taskId].data[0] = spriteId3; + gTasks[taskId].data[2] = spriteId4; + gTasks[taskId].func = sub_80EEDF4; +} + +static void sub_80EEDF4(u8 taskId) +{ + u8 spriteId1, spriteId2; + u8 battler; + + battler = gBattleAnimAttacker; + gTasks[taskId].data[13] += gTasks[taskId].data[1]; + gBattle_BG1_Y += (u16)gTasks[taskId].data[13] >> 8; + gTasks[taskId].data[13] &= 0xFF; + + switch (gTasks[taskId].data[15]) + { + case 0: + if (gTasks[taskId].data[11]++ > 1) + { + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[12]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12])); + if (gTasks[taskId].data[12] == 8) + gTasks[taskId].data[15]++; + } + break; + case 1: + if (++gTasks[taskId].data[10] == 30) + gTasks[taskId].data[15]++; + break; + case 2: + if (gTasks[taskId].data[11]++ > 1) + { + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[12]--; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12])); + if (gTasks[taskId].data[12] == 0) + { + sub_80A477C(0); + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0); + + SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0)); + DestroySprite(&gSprites[gTasks[taskId].data[0]]); + DestroySprite(&gSprites[gTasks[taskId].data[2]]); + SetAnimBgAttribute(1, BG_ANIM_AREA_OVERFLOW_MODE, 0); + spriteId1 = gSprites[gHealthboxSpriteIds[battler]].oam.affineParam; + spriteId2 = gSprites[gHealthboxSpriteIds[battler]].data[5]; + gSprites[gHealthboxSpriteIds[battler]].oam.priority = 1; + gSprites[spriteId1].oam.priority = 1; + gSprites[spriteId2].oam.priority = 1; + DestroyAnimVisualTask(taskId); + } + } + break; + } +} + +static void sub_80EEFC8(u8 *paletteId1, u8 *paletteId2, u8 battler) +{ + u8 healthBoxSpriteId; + u8 spriteId1, spriteId2; + u16 offset1, offset2; + + healthBoxSpriteId = gHealthboxSpriteIds[battler]; + spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam; + spriteId2 = gSprites[healthBoxSpriteId].data[5]; + *paletteId1 = AllocSpritePalette(0xD709); + *paletteId2 = AllocSpritePalette(0xD70A); + + offset1 = (gSprites[healthBoxSpriteId].oam.paletteNum * 16) + 0x100; + offset2 = (gSprites[spriteId2].oam.paletteNum * 16) + 0x100; + LoadPalette(&gPlttBufferUnfaded[offset1], *paletteId1 * 16 + 0x100, 0x20); + LoadPalette(&gPlttBufferUnfaded[offset2], *paletteId2 * 16 + 0x100, 0x20); + + gSprites[healthBoxSpriteId].oam.paletteNum = *paletteId1; + gSprites[spriteId1].oam.paletteNum = *paletteId1; + gSprites[spriteId2].oam.paletteNum = *paletteId2; +} + +void sub_80EF0B4(u8 taskId) +{ + u8 paletteId1, paletteId2; + sub_80EEFC8(&paletteId1, &paletteId2, gBattleAnimAttacker); + DestroyAnimVisualTask(taskId); +} + +static void sub_80EF0E0(u8 battler) +{ + u8 healthBoxSpriteId; + u8 spriteId1, spriteId2; + u8 paletteId1, paletteId2; + + healthBoxSpriteId = gHealthboxSpriteIds[battler]; + spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam; + spriteId2 = gSprites[healthBoxSpriteId].data[5]; + + FreeSpritePaletteByTag(0xD709); + FreeSpritePaletteByTag(0xD70A); + paletteId1 = IndexOfSpritePaletteTag(0xD6FF); + paletteId2 = IndexOfSpritePaletteTag(0xD704); + gSprites[healthBoxSpriteId].oam.paletteNum = paletteId1; + gSprites[spriteId1].oam.paletteNum = paletteId1; + gSprites[spriteId2].oam.paletteNum = paletteId2; +} + +void sub_80EF180(u8 taskId) +{ + sub_80EF0E0(gBattleAnimAttacker); + DestroyAnimVisualTask(taskId); +} + +void sub_80EF1A0(u8 taskId) +{ + gTasks[taskId].data[10] = gBattleAnimArgs[0]; + gTasks[taskId].data[11] = gBattleAnimArgs[1]; + gTasks[taskId].func = sub_80EF1CC; +} + +static void sub_80EF1CC(u8 taskId) +{ + u8 paletteNum; + int paletteOffset, colorOffset; + + gTasks[taskId].data[0]++; + if (gTasks[taskId].data[0]++ >= gTasks[taskId].data[11]) + { + gTasks[taskId].data[0] = 0; + paletteNum = IndexOfSpritePaletteTag(0xD709); + colorOffset = gTasks[taskId].data[10] == 0 ? 6 : 2; + switch (gTasks[taskId].data[1]) + { + case 0: + gTasks[taskId].data[2] += 2; + if (gTasks[taskId].data[2] > 16) + gTasks[taskId].data[2] = 16; + + paletteOffset = paletteNum * 16 + 0x100; + BlendPalette(paletteOffset + colorOffset, 1, gTasks[taskId].data[2], RGB(20, 27, 31)); + if (gTasks[taskId].data[2] == 16) + gTasks[taskId].data[1]++; + break; + case 1: + gTasks[taskId].data[2] -= 2; + if (gTasks[taskId].data[2] < 0) + gTasks[taskId].data[2] = 0; + + paletteOffset = paletteNum * 16 + 0x100; + BlendPalette(paletteOffset + colorOffset, 1, gTasks[taskId].data[2], RGB(20, 27, 31)); + if (gTasks[taskId].data[2] == 0) + DestroyAnimVisualTask(taskId); + break; + } + } +} + +void sub_80EF298(u8 taskId) +{ + u8 spriteId; + + spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + switch (gTasks[taskId].data[0]) + { + case 0: + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); + gTasks[taskId].data[10] = 0x100; + gTasks[taskId].data[0]++; + break; + case 1: + gTasks[taskId].data[10] += 0x30; + SetSpriteRotScale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[10], 0); + SetBattlerSpriteYOffsetFromYScale(spriteId); + if (gTasks[taskId].data[10] >= 0x2D0) + gTasks[taskId].data[0]++; + break; + case 2: + ResetSpriteRotScale(spriteId); + gSprites[spriteId].invisible = 1; + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80EF344(u8 taskId) +{ + u8 spriteId; + u16 ball; + u8 ballId; + u8 x, y; + u8 priority, subpriority; + u32 selectedPalettes; + + spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + ball = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_POKEBALL); + else + ball = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_POKEBALL); + + ballId = ItemIdToBallId(ball); + switch (gTasks[taskId].data[0]) + { + case 0: + x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); + y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1); + priority = gSprites[spriteId].oam.priority; + subpriority = gSprites[spriteId].subpriority; + gTasks[taskId].data[10] = AnimateBallOpenParticles(x, y + 32, priority, subpriority, ballId); + selectedPalettes = sub_80A75AC(1, 0, 0, 0, 0, 0, 0); + gTasks[taskId].data[11] = LaunchBallFadeMonTask(0, gBattleAnimAttacker, selectedPalettes, ballId); + gTasks[taskId].data[0]++; + break; + case 1: + if (!gTasks[gTasks[taskId].data[10]].isActive && !gTasks[gTasks[taskId].data[11]].isActive) + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80EF490(u8 taskId) +{ + u8 ballId = ItemIdToBallId(gLastUsedItem); + LoadBallGfx(ballId); + DestroyAnimVisualTask(taskId); +} + +void sub_80EF4B8(u8 taskId) +{ + u8 ballId = ItemIdToBallId(gLastUsedItem); + FreeBallGfx(ballId); + DestroyAnimVisualTask(taskId); +} + +void AnimTask_IsBallBlockedByTrainer(u8 taskId) +{ + if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_TRAINER_BLOCK) + gBattleAnimArgs[ARG_RET_ID] = -1; + else + gBattleAnimArgs[ARG_RET_ID] = 0; + + DestroyAnimVisualTask(taskId); +} + +u8 ItemIdToBallId(u16 ballItem) +{ + switch (ballItem) + { + case ITEM_MASTER_BALL: + return BALL_MASTER; + case ITEM_ULTRA_BALL: + return BALL_ULTRA; + case ITEM_GREAT_BALL: + return BALL_GREAT; + case ITEM_SAFARI_BALL: + return BALL_SAFARI; + case ITEM_NET_BALL: + return BALL_NET; + case ITEM_DIVE_BALL: + return BALL_DIVE; + case ITEM_NEST_BALL: + return BALL_NEST; + case ITEM_REPEAT_BALL: + return BALL_REPEAT; + case ITEM_TIMER_BALL: + return BALL_TIMER; + case ITEM_LUXURY_BALL: + return BALL_LUXURY; + case ITEM_PREMIER_BALL: + return BALL_PREMIER; + case ITEM_POKE_BALL: + default: + return BALL_POKE; + } +} + +void sub_80EF5AC(u8 taskId) +{ + u8 ballId; + u8 spriteId; + + ballId = ItemIdToBallId(gLastUsedItem); + spriteId = CreateSprite(&gBallSpriteTemplates[ballId], 32, 80, 29); + gSprites[spriteId].data[0] = 34; + gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 0); + gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) - 16; + gSprites[spriteId].callback = sub_80EF8C0; + gBattleSpritesDataPtr->animationData->field_9_x2 = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible; + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].func = sub_80EF698; +} + +static void sub_80EF698(u8 taskId) +{ + u8 spriteId = gTasks[taskId].data[0]; + if ((u16)gSprites[spriteId].data[0] == 0xFFFF) + DestroyAnimVisualTask(taskId); +} + +void sub_80EF6D4(u8 taskId) +{ + int x, y; + u8 ballId; + u8 subpriority; + u8 spriteId; + + if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL) + { + x = 32; + y = 11; + } + else + { + x = 23; + y = 5; + } + + ballId = ItemIdToBallId(gLastUsedItem); + subpriority = GetBattlerSpriteSubpriority(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)) + 1; + spriteId = CreateSprite(&gBallSpriteTemplates[ballId], x + 32, y | 80, subpriority); + gSprites[spriteId].data[0] = 34; + gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 0); + gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) - 16; + gSprites[spriteId].callback = SpriteCallbackDummy; + gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].callback = sub_8039E84; + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].func = sub_80EF7EC; +} + +static void sub_80EF7EC(u8 taskId) +{ + if (gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animCmdIndex == 1) + { + PlaySE12WithPanning(SE_NAGERU, 0); + gSprites[gTasks[taskId].data[0]].callback = sub_80EF8C0; + CreateTask(sub_80EF864, 10); + gTasks[taskId].func = sub_80EF698; + } +} + +static void sub_80EF864(u8 taskId) +{ + if (gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animEnded) + { + StartSpriteAnim(&gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]], 0); + DestroyTask(taskId); + } +} + +static void sub_80EF8C0(struct Sprite *sprite) +{ + u16 temp = sprite->data[1]; + u16 temp2 = sprite->data[2]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = temp; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = temp2; + sprite->data[5] = -40; + InitAnimArcTranslation(sprite); + sprite->callback = sub_80EF8F0; +} + +static void sub_80EF8F0(struct Sprite *sprite) +{ + int i; + u8 ballId; + + if (TranslateAnimHorizontalArc(sprite)) + { + if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_TRAINER_BLOCK) + { + sprite->callback = sub_80F0478; + } + else if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_GHOST_DODGE) + { + sprite->callback = sub_80F052C; + } + else + { + StartSpriteAnim(sprite, 1); + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + + for (i = 0; i < 8; i++) + sprite->data[i] = 0; + + sprite->data[5] = 0; + sprite->callback = sub_80EF9B4; + + ballId = ItemIdToBallId(gLastUsedItem); + switch (ballId) + { + case 0 ... POKEBALL_COUNT - 1: + AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId); + LaunchBallFadeMonTask(0, gBattleAnimTarget, 14, ballId); + break; + } + } + } +} + +static void sub_80EF9B4(struct Sprite *sprite) +{ + if (++sprite->data[5] == 10) + { + sprite->data[5] = CreateTask(TaskDummy, 50); + sprite->callback = sub_80EFA0C; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0; + } +} + +static void sub_80EFA0C(struct Sprite *sprite) +{ + u8 spriteId; + u8 taskId; + + spriteId = gBattlerSpriteIds[gBattleAnimTarget]; + taskId = sprite->data[5]; + + if (++gTasks[taskId].data[1] == 11) + PlaySE(SE_SUIKOMU); + + switch (gTasks[taskId].data[0]) + { + case 0: + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); + gTasks[taskId].data[10] = 256; + gUnknown_3005424 = 28; + gUnknown_300542C = (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) - (sprite->pos1.y + sprite->pos2.y); + gUnknown_3005428 = (u32)(gUnknown_300542C * 256) / 28; + gTasks[taskId].data[2] = gUnknown_3005428; + gTasks[taskId].data[0]++; + break; + case 1: + gTasks[taskId].data[10] += 0x20; + SetSpriteRotScale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[10], 0); + gTasks[taskId].data[3] += gTasks[taskId].data[2]; + gSprites[spriteId].pos2.y = -gTasks[taskId].data[3] >> 8; + if (gTasks[taskId].data[10] >= 0x480) + gTasks[taskId].data[0]++; + break; + case 2: + ResetSpriteRotScale(spriteId); + gSprites[spriteId].invisible = 1; + gTasks[taskId].data[0]++; + break; + default: + if (gTasks[taskId].data[1] > 10) + { + DestroyTask(taskId); + StartSpriteAnim(sprite, 2); + sprite->data[5] = 0; + sprite->callback = sub_80EFB58; + } + break; + } +} + +static void sub_80EFB58(struct Sprite *sprite) +{ + int angle; + + if (sprite->animEnded) + { + sprite->data[3] = 0; + sprite->data[4] = 40; + sprite->data[5] = 0; + angle = 0; + sprite->pos1.y += Cos(angle, 40); + sprite->pos2.y = -Cos(angle, sprite->data[4]); + sprite->callback = sub_80EFB9C; + } +} + +static void sub_80EFB9C(struct Sprite *sprite) +{ + bool8 lastBounce; + int bounceCount; + + lastBounce = 0; + + switch (sprite->data[3] & 0xFF) + { + case 0: + sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]); + sprite->data[5] += (sprite->data[3] >> 8) + 4; + if (sprite->data[5] >= 64) + { + sprite->data[4] -= 10; + sprite->data[3] += 257; + + bounceCount = sprite->data[3] >> 8; + if (bounceCount == 4) + lastBounce = 1; + + // Play a different sound effect for each pokeball bounce. + switch (bounceCount) + { + case 1: + PlaySE(SE_KON); + break; + case 2: + PlaySE(SE_KON2); + break; + case 3: + PlaySE(SE_KON3); + break; + default: + PlaySE(SE_KON4); + break; + } + } + break; + case 1: + sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]); + sprite->data[5] -= (sprite->data[3] >> 8) + 4; + if (sprite->data[5] <= 0) + { + sprite->data[5] = 0; + sprite->data[3] &= -0x100; + } + break; + } + + if (lastBounce) + { + sprite->data[3] = 0; + sprite->pos1.y += Cos(64, 40); + sprite->pos2.y = 0; + if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_NO_SHAKES) + { + sprite->data[5] = 0; + sprite->callback = sub_80EFF80; + } + else + { + sprite->callback = sub_80EFCA0; + sprite->data[4] = 1; + sprite->data[5] = 0; + } + } +} + +static void sub_80EFCA0(struct Sprite *sprite) +{ + if (++sprite->data[3] == 31) + { + sprite->data[3] = 0; + sprite->affineAnimPaused = 1; + StartSpriteAffineAnim(sprite, 1); + gBattleSpritesDataPtr->animationData->field_C = 0; + sprite->callback = sub_80EFCEC; + PlaySE(SE_BOWA); + } +} + +static void sub_80EFCEC(struct Sprite *sprite) +{ + s8 state; + u16 var0; + + switch (sprite->data[3] & 0xFF) + { + case 0: + if (gBattleSpritesDataPtr->animationData->field_C > 0xFF) + { + sprite->pos2.x += sprite->data[4]; + gBattleSpritesDataPtr->animationData->field_C &= 0xFF; + } + else + { + gBattleSpritesDataPtr->animationData->field_C += 0xB0; + } + + sprite->data[5]++; + sprite->affineAnimPaused = 0; + var0 = sprite->data[5] + 7; + if (var0 > 14) + { + gBattleSpritesDataPtr->animationData->field_C = 0; + sprite->data[3]++; + sprite->data[5] = 0; + } + break; + case 1: + if (++sprite->data[5] == 1) + { + sprite->data[5] = 0; + sprite->data[4] = -sprite->data[4]; + sprite->data[3]++; + sprite->affineAnimPaused = 0; + if (sprite->data[4] < 0) + ChangeSpriteAffineAnim(sprite, 2); + else + ChangeSpriteAffineAnim(sprite, 1); + } + else + { + sprite->affineAnimPaused = 1; + } + break; + case 2: + if (gBattleSpritesDataPtr->animationData->field_C > 0xFF) + { + sprite->pos2.x += sprite->data[4]; + gBattleSpritesDataPtr->animationData->field_C &= 0xFF; + } + else + { + gBattleSpritesDataPtr->animationData->field_C += 0xB0; + } + + sprite->data[5]++; + sprite->affineAnimPaused = 0; + var0 = sprite->data[5] + 12; + if (var0 > 24) + { + gBattleSpritesDataPtr->animationData->field_C = 0; + sprite->data[3]++; + sprite->data[5] = 0; + } + break; + case 3: + if (sprite->data[5]++ < 0) + { + sprite->affineAnimPaused = 1; + break; + } + + sprite->data[5] = 0; + sprite->data[4] = -sprite->data[4]; + sprite->data[3]++; + sprite->affineAnimPaused = 0; + if (sprite->data[4] < 0) + ChangeSpriteAffineAnim(sprite, 2); + else + ChangeSpriteAffineAnim(sprite, 1); + // fall through + case 4: + if (gBattleSpritesDataPtr->animationData->field_C > 0xFF) + { + sprite->pos2.x += sprite->data[4]; + gBattleSpritesDataPtr->animationData->field_C &= 0xFF; + } + else + { + gBattleSpritesDataPtr->animationData->field_C += 0xB0; + } + + sprite->data[5]++; + sprite->affineAnimPaused = 0; + var0 = sprite->data[5] + 4; + if (var0 > 8) + { + gBattleSpritesDataPtr->animationData->field_C = 0; + sprite->data[3]++; + sprite->data[5] = 0; + sprite->data[4] = -sprite->data[4]; + } + break; + case 5: + sprite->data[3] += 0x100; + state = sprite->data[3] >> 8; + if (state == gBattleSpritesDataPtr->animationData->ballThrowCaseId) + { + sprite->affineAnimPaused = 1; + sprite->callback = sub_80EFF80; + } + else + { + if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_3_SHAKES_SUCCESS && state == 3) + { + sprite->callback = sub_80EFFA4; + sprite->affineAnimPaused = 1; + } + else + { + sprite->data[3]++; + sprite->affineAnimPaused = 1; + } + } + break; + case 6: + default: + if (++sprite->data[5] == 31) + { + sprite->data[5] = 0; + sprite->data[3] &= -0x100; + StartSpriteAffineAnim(sprite, 3); + if (sprite->data[4] < 0) + StartSpriteAffineAnim(sprite, 2); + else + StartSpriteAffineAnim(sprite, 1); + + PlaySE(SE_BOWA); + } + break; + } +} + +static void sub_80EFF80(struct Sprite *sprite) +{ + if (++sprite->data[5] == 31) + { + sprite->data[5] = 0; + sprite->callback = sub_80F02B0; + } +} + +static void sub_80EFFA4(struct Sprite *sprite) +{ + sprite->animPaused = 1; + sprite->callback = sub_80EFFC4; + sprite->data[3] = 0; + sprite->data[4] = 0; + sprite->data[5] = 0; +} + +static void sub_80EFFC4(struct Sprite *sprite) +{ + u8 *battler = &gBattleAnimTarget; + + sprite->data[4]++; + if (sprite->data[4] == 40) + { + PlaySE(SE_RG_GETTING); + BlendPalettes(0x10000 << sprite->oam.paletteNum, 6, RGB(0, 0, 0)); + sub_80F01B8(sprite); + } + else if (sprite->data[4] == 60) + { + BeginNormalPaletteFade(0x10000 << sprite->oam.paletteNum, 2, 6, 0, RGB(0, 0, 0)); + } + else if (sprite->data[4] == 95) + { + gDoingBattleAnim = 0; + UpdateOamPriorityInAllHealthboxes(1); + m4aMPlayAllStop(); + PlaySE(MUS_RG_FAN6); + } + else if (sprite->data[4] == 315) + { + FreeOamMatrix(gSprites[gBattlerSpriteIds[*battler]].oam.matrixNum); + DestroySprite(&gSprites[gBattlerSpriteIds[*battler]]); + sprite->data[0] = 0; + sprite->callback = sub_80F00A4; + } +} + +static void sub_80F00A4(struct Sprite *sprite) +{ + u8 paletteIndex; + + switch (sprite->data[0]) + { + case 0: + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->oam.objMode = ST_OAM_OBJ_BLEND; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0)); + paletteIndex = IndexOfSpritePaletteTag(sprite->template->paletteTag); + BeginNormalPaletteFade(1 << (paletteIndex + 0x10), 0, 0, 16, RGB(31, 31, 31)); + sprite->data[0]++; + break; + case 1: + if (sprite->data[1]++ > 0) + { + sprite->data[1] = 0; + sprite->data[2]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - sprite->data[2], sprite->data[2])); + if (sprite->data[2] == 16) + sprite->data[0]++; + } + break; + case 2: + sprite->invisible = 1; + sprite->data[0]++; + break; + default: + if (!gPaletteFade.active) + { + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + sprite->data[0] = 0; + sprite->callback = sub_80F018C; + } + break; + } +} + +static void sub_80F018C(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + sprite->data[0] = -1; + } + else + { + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } +} + +static void sub_80F01B8(struct Sprite *sprite) +{ + u32 i; + u8 subpriority; + + if (sprite->subpriority) + { + subpriority = sprite->subpriority - 1; + } + else + { + subpriority = 0; + sprite->subpriority = 1; + } + + sub_80F05B4(4); + for (i = 0; i < 3; i++) + { + u8 spriteId = CreateSprite(&gBallParticlesSpriteTemplates[4], sprite->pos1.x, sprite->pos1.y, subpriority); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[0] = 24; + gSprites[spriteId].data[2] = sprite->pos1.x + sBallCaptureSuccessStarData[i].xOffset; + gSprites[spriteId].data[4] = sprite->pos1.y + sBallCaptureSuccessStarData[i].yOffset; + gSprites[spriteId].data[5] = sBallCaptureSuccessStarData[i].unk2; + InitAnimArcTranslation(&gSprites[spriteId]); + gSprites[spriteId].callback = sub_80F0278; + StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[4]); + } + } +} + +static void sub_80F0278(struct Sprite *sprite) +{ + sprite->invisible = !sprite->invisible; + if (TranslateAnimHorizontalArc(sprite)) + DestroySprite(sprite); +} + +static void sub_80F02B0(struct Sprite *sprite) +{ + u8 ballId; + + StartSpriteAnim(sprite, 1); + StartSpriteAffineAnim(sprite, 0); + sprite->callback = sub_80F0378; + + ballId = ItemIdToBallId(gLastUsedItem); + switch (ballId) + { + case 0 ... POKEBALL_COUNT - 1: + AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId); + LaunchBallFadeMonTask(1, gBattleAnimTarget, 14, ballId); + break; + } + + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = 0; + StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 1); + AnimateSprite(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]]); + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0x1000; +} + +static void sub_80F0378(struct Sprite *sprite) +{ + int next = FALSE; + + if (sprite->animEnded) + sprite->invisible = 1; + + if (gSprites[gBattlerSpriteIds[gBattleAnimTarget]].affineAnimEnded) + { + StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 0); + next = TRUE; + } + else + { + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] -= 288; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] >> 8; + } + + if (sprite->animEnded && next) + { + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = 0; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = gBattleSpritesDataPtr->animationData->field_9_x2; + sprite->data[0] = 0; + sprite->callback = sub_80F018C; + gDoingBattleAnim = 0; + UpdateOamPriorityInAllHealthboxes(1); + } +} + +static void sub_80F0478(struct Sprite *sprite) +{ + int i; + + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + for (i = 0; i < 6; i++) + sprite->data[i] = 0; + + sprite->callback = sub_80F04B4; +} + +static void sub_80F04B4(struct Sprite *sprite) +{ + s16 var0 = sprite->data[0] + 0x800; + s16 var1 = sprite->data[1] + 0x680; + sprite->pos2.x -= var1 >> 8; + sprite->pos2.y += var0 >> 8; + sprite->data[0] = (sprite->data[0] + 0x800) & 0xFF; + sprite->data[1] = (sprite->data[1] + 0x680) & 0xFF; + + if (sprite->pos1.y + sprite->pos2.y > 160 + || sprite->pos1.x + sprite->pos2.x < -8) + { + sprite->data[0] = 0; + sprite->callback = sub_80F018C; + gDoingBattleAnim = 0; + UpdateOamPriorityInAllHealthboxes(1); + } +} + +// GhostBallDodge +static void sub_80F052C(struct Sprite *sprite) +{ + // to do +} + +static void sub_80F0574(struct Sprite *sprite) +{ + //to do +} + +static void sub_80F05B4(u8 ballId) +{ + u8 taskId; + + if (GetSpriteTileStartByTag(gBallParticleSpritesheets[ballId].tag) == 0xFFFF) + { + LoadCompressedSpriteSheetUsingHeap(&gBallParticleSpritesheets[ballId]); + LoadCompressedSpritePaletteUsingHeap(&gBallParticlePalettes[ballId]); + } +} + +u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId) +{ + u8 taskId; + + sub_80F05B4(ballId); + taskId = CreateTask(gBallParticleAnimationFuncs[ballId], 5); + gTasks[taskId].data[1] = x; + gTasks[taskId].data[2] = y; + gTasks[taskId].data[3] = priority; + gTasks[taskId].data[4] = subpriority; + gTasks[taskId].data[15] = ballId; + PlaySE(SE_BOWA2); + + return taskId; +} + +void sub_80F0674(void) +{ + if (gMain.inBattle) + gBattleSpritesDataPtr->animationData->field_A++; +} + +static void PokeBallOpenParticleAnimation(u8 taskId) +{ + u8 spriteId; + u8 x, y; + u8 priority, subpriority; + u8 ballId; + u8 var0; + + ballId = gTasks[taskId].data[15]; + if (gTasks[taskId].data[0] < 16) + { + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_80F0674(); + StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]); + gSprites[spriteId].callback = PokeBallOpenParticleAnimation_Step1; + gSprites[spriteId].oam.priority = priority; + + var0 = (u8)gTasks[taskId].data[0]; + if (var0 >= 8) + var0 -= 8; + + gSprites[spriteId].data[0] = var0 * 32; + } + + if (gTasks[taskId].data[0] == 15) + { + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); + return; + } + } + + gTasks[taskId].data[0]++; +} + +static void PokeBallOpenParticleAnimation_Step1(struct Sprite *sprite) +{ + if (sprite->data[1] == 0) + sprite->callback = PokeBallOpenParticleAnimation_Step2; + else + sprite->data[1]--; +} + +static void PokeBallOpenParticleAnimation_Step2(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[0], sprite->data[1]); + sprite->data[1] += 2; + if (sprite->data[1] == 50) + DestroyBallOpenAnimationParticle(sprite); +} + +static void TimerBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 8; i++) + { + spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_80F0674(); + StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 32; + gSprites[spriteId].data[4] = 10; + gSprites[spriteId].data[5] = 2; + gSprites[spriteId].data[6] = 1; + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +static void DiveBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 8; i++) + { + spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_80F0674(); + StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 32; + gSprites[spriteId].data[4] = 10; + gSprites[spriteId].data[5] = 1; + gSprites[spriteId].data[6] = 2; + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +// Also used for Net Ball +static void SafariBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 8; i++) + { + spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_80F0674(); + StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 32; + gSprites[spriteId].data[4] = 4; + gSprites[spriteId].data[5] = 1; + gSprites[spriteId].data[6] = 1; + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +// Also used for Nest Ball +static void UltraBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 10; i++) + { + spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_80F0674(); + StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 25; + gSprites[spriteId].data[4] = 5; + gSprites[spriteId].data[5] = 1; + gSprites[spriteId].data[6] = 1; + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +// Also used for Luxury Ball +static void GreatBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + if (gTasks[taskId].data[7]) + { + gTasks[taskId].data[7]--; + } + else + { + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 8; i++) + { + spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_80F0674(); + StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 32; + gSprites[spriteId].data[4] = 8; + gSprites[spriteId].data[5] = 2; + gSprites[spriteId].data[6] = 2; + } + } + + gTasks[taskId].data[7] = 8; + if (++gTasks[taskId].data[0] == 2) + { + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); + } + } +} + +static void FanOutBallOpenParticles_Step1(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[0], sprite->data[2]); + sprite->data[0] = (sprite->data[0] + sprite->data[4]) & 0xFF; + sprite->data[1] += sprite->data[5]; + sprite->data[2] += sprite->data[6]; + if (++sprite->data[3] == 51) + DestroyBallOpenAnimationParticle(sprite); +} + +static void RepeatBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < POKEBALL_COUNT; i++) + { + spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_80F0674(); + StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]); + gSprites[spriteId].callback = RepeatBallOpenParticleAnimation_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 21; + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0], sprite->data[2])); + sprite->data[0] = (sprite->data[0] + 6) & 0xFF; + sprite->data[1]++; + sprite->data[2]++; + if (++sprite->data[3] == 51) + DestroyBallOpenAnimationParticle(sprite); +} + +static void MasterBallOpenParticleAnimation(u8 taskId) +{ + u8 i, j; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (j = 0; j < 2; j++) + { + for (i = 0; i < 8; i++) + { + spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_80F0674(); + StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 32; + gSprites[spriteId].data[4] = 8; + + if (j == 0) + { + gSprites[spriteId].data[5] = 2; + gSprites[spriteId].data[6] = 1; + } + else + { + gSprites[spriteId].data[5] = 1; + gSprites[spriteId].data[6] = 2; + } + } + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +static void PremierBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 8; i++) + { + spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_80F0674(); + StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]); + gSprites[spriteId].callback = PremierBallOpenParticleAnimation_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 32; + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +static void PremierBallOpenParticleAnimation_Step1(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0] & 0x3F, sprite->data[2])); + sprite->data[0] = (sprite->data[0] + 10) & 0xFF; + sprite->data[1]++; + sprite->data[2]++; + if (++sprite->data[3] == 51) + DestroyBallOpenAnimationParticle(sprite); +} + +static void DestroyBallOpenAnimationParticle(struct Sprite *sprite) +{ + int i, j; + + if (!gMain.inBattle) + { + if (sprite->data[7] == 1) + DestroySpriteAndFreeResources(sprite); + else + DestroySprite(sprite); + } + else + { + gBattleSpritesDataPtr->animationData->field_A--; + if (gBattleSpritesDataPtr->animationData->field_A == 0) + { + for (i = 0; i < POKEBALL_COUNT; i++) + { + if (FuncIsActiveTask(gBallParticleAnimationFuncs[i]) == TRUE) + break; + } + + if (i == POKEBALL_COUNT) + { + for (j = 0; j < POKEBALL_COUNT; j++) + { + FreeSpriteTilesByTag(gBallParticleSpritesheets[j].tag); + FreeSpritePaletteByTag(gBallParticlePalettes[j].tag); + } + } + + DestroySprite(sprite); + } + else + { + DestroySprite(sprite); + } + } +} + +u8 LaunchBallFadeMonTask(u8 unfadeLater, u8 battler, u32 selectedPalettes, u8 ballId) +{ + u8 taskId; + + taskId = CreateTask(sub_80F12E0, 5); + gTasks[taskId].data[15] = ballId; + gTasks[taskId].data[3] = battler; + gTasks[taskId].data[10] = selectedPalettes; + gTasks[taskId].data[11] = selectedPalettes >> 16; + + if (!unfadeLater) + { + BlendPalette(battler * 16 + 0x100, 16, 0, gBallOpenFadeColors[ballId]); + gTasks[taskId].data[1] = 1; + } + else + { + BlendPalette(battler * 16 + 0x100, 16, 16, gBallOpenFadeColors[ballId]); + gTasks[taskId].data[0] = 16; + gTasks[taskId].data[1] = -1; + gTasks[taskId].func = sub_80F1370; + } + + BeginNormalPaletteFade(selectedPalettes, 0, 0, 16, RGB(31, 31, 31)); + return taskId; +} + +static void sub_80F12E0(u8 taskId) +{ + u8 ballId = gTasks[taskId].data[15]; + + if (gTasks[taskId].data[2] <= 16) + { + BlendPalette(gTasks[taskId].data[3] * 16 + 0x100, 16, gTasks[taskId].data[0], gBallOpenFadeColors[ballId]); + gTasks[taskId].data[0] += gTasks[taskId].data[1]; + gTasks[taskId].data[2]++; + } + else if (!gPaletteFade.active) + { + u32 selectedPalettes = (u16)gTasks[taskId].data[10] | ((u16)gTasks[taskId].data[11] << 16); + BeginNormalPaletteFade(selectedPalettes, 0, 16, 0, RGB(31, 31, 31)); + DestroyTask(taskId); + } +} + +static void sub_80F1370(u8 taskId) +{ + if (!gPaletteFade.active) + { + u32 selectedPalettes = (u16)gTasks[taskId].data[10] | ((u16)gTasks[taskId].data[11] << 16); + BeginNormalPaletteFade(selectedPalettes, 0, 16, 0, RGB(31, 31, 31)); + gTasks[taskId].func = sub_80F13C0; + } +} + +static void sub_80F13C0(u8 taskId) +{ + u8 ballId = gTasks[taskId].data[15]; + + if (gTasks[taskId].data[2] <= 16) + { + BlendPalette(gTasks[taskId].data[3] * 16 + 0x100, 16, gTasks[taskId].data[0], gBallOpenFadeColors[ballId]); + gTasks[taskId].data[0] += gTasks[taskId].data[1]; + gTasks[taskId].data[2]++; + } + else + { + DestroyTask(taskId); + } +} + +void sub_80F1420(u8 taskId) +{ + u8 spriteId; + u32 x; + u32 done = FALSE; + + spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + switch (gTasks[taskId].data[10]) + { + case 0: + gTasks[taskId].data[11] = gBattleAnimArgs[0]; + gTasks[taskId].data[0] += 0x500; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gSprites[spriteId].pos2.x += gTasks[taskId].data[0] >> 8; + else + gSprites[spriteId].pos2.x -= gTasks[taskId].data[0] >> 8; + + gTasks[taskId].data[0] &= 0xFF; + x = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x + 32; + if (x > 304) + gTasks[taskId].data[10]++; + break; + case 1: + LoadBattleMonGfxAndAnimate(gBattleAnimAttacker, gTasks[taskId].data[11], spriteId); + gTasks[taskId].data[10]++; + break; + case 2: + gTasks[taskId].data[0] += 0x500; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gSprites[spriteId].pos2.x -= gTasks[taskId].data[0] >> 8; + else + gSprites[spriteId].pos2.x += gTasks[taskId].data[0] >> 8; + + gTasks[taskId].data[0] &= 0xFF; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + if (gSprites[spriteId].pos2.x <= 0) + { + gSprites[spriteId].pos2.x = 0; + done = TRUE; + } + } + else + { + if (gSprites[spriteId].pos2.x >= 0) + { + gSprites[spriteId].pos2.x = 0; + done = TRUE; + } + } + + if (done) + DestroyAnimVisualTask(taskId); + + break; + } +} + +void sub_80F15C8(u8 taskId) +{ + u8 spriteId; + + switch (gTasks[taskId].data[15]) + { + case 0: + if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == B_POSITION_OPPONENT_LEFT) + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); + else + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0)); + gTasks[taskId].data[15]++; + break; + case 1: + if (gTasks[taskId].data[1]++ > 1) + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - gTasks[taskId].data[0], gTasks[taskId].data[0])); + if (gTasks[taskId].data[0] == 16) + gTasks[taskId].data[15]++; + } + break; + case 2: + spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + RequestDma3Fill(0, (void *)OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * TILE_SIZE_4BPP, 0x800, 1); + ClearBehindSubstituteBit(gBattleAnimAttacker); + DestroyAnimVisualTask(taskId); + break; + } +} + +void AnimTask_IsAttackerBehindSubstitute(u8 taskId) +{ + gBattleAnimArgs[ARG_RET_ID] = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].behindSubstitute; + DestroyAnimVisualTask(taskId); +} + +void AnimTask_TargetToEffectBattler(u8 taskId) +{ + gBattleAnimTarget = gEffectBattler; + DestroyAnimVisualTask(taskId); +} + +void sub_80F1720(u8 battler, struct Pokemon *mon) +{ + int isShiny; + u32 otId, personality; + u32 shinyValue; + u8 taskId1, taskId2; + + isShiny = 0; + gBattleSpritesDataPtr->healthBoxesData[battler].flag_x80 = 1; + otId = GetMonData(mon, MON_DATA_OT_ID); + personality = GetMonData(mon, MON_DATA_PERSONALITY); + + if (IsBattlerSpriteVisible(battler)) + { + shinyValue = HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality); + if (shinyValue < SHINY_ODDS) + isShiny = TRUE; + + if (isShiny) + { + if (GetSpriteTileStartByTag(ANIM_TAG_GOLD_STARS) == 0xFFFF) + { + LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[ANIM_TAG_GOLD_STARS - ANIM_SPRITES_START]); + LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[ANIM_TAG_GOLD_STARS - ANIM_SPRITES_START]); + } + + taskId1 = CreateTask(sub_80F181C, 10); + taskId2 = CreateTask(sub_80F181C, 10); + gTasks[taskId1].data[0] = battler; + gTasks[taskId2].data[0] = battler; + gTasks[taskId1].data[1] = 0; + gTasks[taskId2].data[1] = 1; + return; + } + } + + gBattleSpritesDataPtr->healthBoxesData[battler].field_1_x1 = 1; +} + +static void sub_80F181C(u8 taskId) +{ + u8 battler; + u8 x, y; + u8 spriteId; + u16 counter; + s16 state; + u8 pan; + + if (gTasks[taskId].data[13] < 60) + { + gTasks[taskId].data[13]++; + return; + } + + if (gBattleSpritesDataPtr->animationData->field_A) + return; + + counter = gTasks[taskId].data[10]++; + if (counter & 3) + return; + + battler = gTasks[taskId].data[0]; + x = GetBattlerSpriteCoord(battler, 0); + y = GetBattlerSpriteCoord(battler, 1); + state = gTasks[taskId].data[11]; + if (state == 0) + { + spriteId = CreateSprite(&gWishStarSpriteTemplate, x, y, 5); + } + else if (state >= 0 && gTasks[taskId].data[11] < 4) + { + spriteId = CreateSprite(&gMiniTwinklingStarSpriteTemplate, x, y, 5); + gSprites[spriteId].oam.tileNum += 4; + } + else + { + spriteId = CreateSprite(&gMiniTwinklingStarSpriteTemplate, x, y, 5); + gSprites[spriteId].oam.tileNum += 5; + } + + if (gTasks[taskId].data[1] == 0) + { + gSprites[spriteId].callback = sub_80F1A2C; + } + else + { + gSprites[spriteId].callback = sub_80F1A80; + gSprites[spriteId].pos2.x = -32; + gSprites[spriteId].pos2.y = 32; + gSprites[spriteId].invisible = 1; + if (gTasks[taskId].data[11] == 0) + { + if (GetBattlerSide(battler) == B_SIDE_PLAYER) + pan = -64; + else + pan = 63; + + PlaySE12WithPanning(SE_REAPOKE, pan); + } + } + + gSprites[spriteId].data[0] = taskId; + gTasks[taskId].data[11]++; + if (spriteId != MAX_SPRITES) + gTasks[taskId].data[12]++; + + if (gTasks[taskId].data[11] == 5) + gTasks[taskId].func = sub_80F19E0; +} + +static void sub_80F19E0(u8 taskId) +{ + u8 battler; + + if (gTasks[taskId].data[12] == 0) + { + if (gTasks[taskId].data[1] == 1) + { + battler = gTasks[taskId].data[0]; + gBattleSpritesDataPtr->healthBoxesData[battler].field_1_x1 = 1; + } + + DestroyTask(taskId); + } +} + +static void sub_80F1A2C(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[1], 24); + sprite->pos2.y = Cos(sprite->data[1], 24); + sprite->data[1] += 12; + if (sprite->data[1] > 0xFF) + { + gTasks[sprite->data[0]].data[12]--; + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } +} + +static void sub_80F1A80(struct Sprite *sprite) +{ + if (sprite->data[1] < 4) + { + sprite->data[1]++; + } + else + { + sprite->invisible = 0; + sprite->pos2.x += 5; + sprite->pos2.y -= 5; + if (sprite->pos2.x > 32) + { + gTasks[sprite->data[0]].data[12]--; + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } + } +} + +void AnimTask_LoadPokeblockGfx(u8 taskId) +{ + u8 paletteIndex; + + LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[ANIM_TAG_POKEBLOCK - ANIM_SPRITES_START]); + LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[ANIM_TAG_POKEBLOCK - ANIM_SPRITES_START]); + paletteIndex = IndexOfSpritePaletteTag(ANIM_TAG_POKEBLOCK); // unused + DestroyAnimVisualTask(taskId); +} + +void AnimTask_FreePokeblockGfx(u8 taskId) +{ + FreeSpriteTilesByTag(ANIM_TAG_POKEBLOCK); + FreeSpritePaletteByTag(ANIM_TAG_POKEBLOCK); + DestroyAnimVisualTask(taskId); +} + +static void sub_80F1B3C(struct Sprite *sprite) +{ + InitSpritePosToAnimAttacker(sprite, 0); + sprite->data[0] = 30; + sprite->data[2] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), 0) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), 1) + gBattleAnimArgs[3]; + sprite->data[5] = -32; + InitAnimArcTranslation(sprite); + gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].callback = sub_8039E84; + sprite->callback = sub_80F1BCC; +} + +static void sub_80F1BCC(struct Sprite *sprite) +{ + if (gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].animCmdIndex == 1) + sprite->callback = sub_80F1C04; +} + +static void sub_80F1C04(struct Sprite *sprite) +{ + if (TranslateAnimHorizontalArc(sprite)) //TranslateAnimArc? + { + sprite->data[0] = 0; + sprite->invisible = 1; + sprite->callback = sub_80F1C30; + } +} + +static void sub_80F1C30(struct Sprite *sprite) +{ + if (gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].animEnded) + { + if (++sprite->data[0] > 0) + { + StartSpriteAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], 0); + DestroyAnimSprite(sprite); + } + } +} + +void sub_80F1C8C(u8 taskId) +{ + switch (gBattleAnimArgs[0]) + { + case 0: + gBattleAnimAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + gBattleAnimTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + break; + case 1: + gBattleAnimAttacker = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + gBattleAnimTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + break; + } + + DestroyAnimVisualTask(taskId); +} + +void sub_80F1C8C(u8 taskId) +{ + // to do +} + +// 080F1D14 +void AnimTask_GetTrappedMoveAnimId(u8 taskId) +{ + if (gBattleSpritesDataPtr->animationData->animArg == MOVE_FIRE_SPIN) + gBattleAnimArgs[0] = TRAP_ANIM_FIRE_SPIN; + else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_WHIRLPOOL) + gBattleAnimArgs[0] = TRAP_ANIM_WHIRLPOOL; + else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_CLAMP) + gBattleAnimArgs[0] = TRAP_ANIM_CLAMP; + else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_SAND_TOMB) + gBattleAnimArgs[0] = TRAP_ANIM_SAND_TOMB; + else + gBattleAnimArgs[0] = TRAP_ANIM_BIND; + + DestroyAnimVisualTask(taskId); +} + +void AnimTask_GetBattlersFromArg(u8 taskId) +{ + gBattleAnimAttacker = gBattleSpritesDataPtr->animationData->animArg; + gBattleAnimTarget = gBattleSpritesDataPtr->animationData->animArg >> 8; + DestroyAnimVisualTask(taskId); +} diff --git a/sym_common.txt b/sym_common.txt index 9a64a9d0f..345829a24 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -98,16 +98,8 @@ gUnknown_3005354: @ 3005354 .include "evolution_scene.o" .align 2 .include "save.o" - .align 2 -gUnknown_3005424: @ 3005424 - .space 0x4 - -gUnknown_3005428: @ 3005428 - .space 0x4 - -gUnknown_300542C: @ 300542C - .space 0x4 + .include "battle_anim_special.o" gUnknown_3005430: @ 3005430 .space 0x10 |