From e4136de32e7518521d595e601a86e9e8f6349aba Mon Sep 17 00:00:00 2001 From: garak Date: Thu, 23 May 2019 19:00:16 -0400 Subject: rename remaining battle anim files --- asm/battle_anim_8074480.s | 6343 ------------------ asm/battle_anim_8078178.s | 977 --- asm/battle_anim_80989F8.s | 2588 -------- asm/battle_anim_80DE2C0.s | 12857 ------------------------------------- asm/battle_anim_80EEC0C.s | 6299 ------------------ asm/battle_anim_effects_3.s | 12857 +++++++++++++++++++++++++++++++++++++ asm/battle_anim_mon_movement.s | 2588 ++++++++ asm/battle_anim_mons.s | 6343 ++++++++++++++++++ asm/battle_anim_special.s | 6299 ++++++++++++++++++ asm/battle_anim_status_effects.s | 977 +++ ld_script.txt | 10 +- 11 files changed, 29069 insertions(+), 29069 deletions(-) delete mode 100644 asm/battle_anim_8074480.s delete mode 100644 asm/battle_anim_8078178.s delete mode 100644 asm/battle_anim_80989F8.s delete mode 100644 asm/battle_anim_80DE2C0.s delete mode 100644 asm/battle_anim_80EEC0C.s create mode 100644 asm/battle_anim_effects_3.s create mode 100644 asm/battle_anim_mon_movement.s create mode 100644 asm/battle_anim_mons.s create mode 100644 asm/battle_anim_special.s create mode 100644 asm/battle_anim_status_effects.s diff --git a/asm/battle_anim_8074480.s b/asm/battle_anim_8074480.s deleted file mode 100644 index aded063d4..000000000 --- a/asm/battle_anim_8074480.s +++ /dev/null @@ -1,6343 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8074480 -sub_8074480: @ 8074480 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r4, 0x4 - bhi _08074500 - lsls r0, r4, 2 - ldr r1, _08074498 @ =_0807449C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08074498: .4byte _0807449C - .align 2, 0 -_0807449C: - .4byte _080744B0 - .4byte _080744D8 - .4byte _080744B0 - .4byte _08074500 - .4byte _08074500 -_080744B0: - ldr r4, _080744D0 @ =gUnknown_83AE01C - adds r0, r5, 0 - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 22 - ldr r1, _080744D4 @ =gBattleTypeFlags - ldr r1, [r1] - movs r2, 0x1 - ands r1, r2 - lsls r1, 4 - adds r0, r1 - adds r0, r4 - ldrb r0, [r0] - b _08074588 - .align 2, 0 -_080744D0: .4byte gUnknown_83AE01C -_080744D4: .4byte gBattleTypeFlags -_080744D8: - ldr r4, _080744F8 @ =gUnknown_83AE01C - adds r0, r5, 0 - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 22 - ldr r1, _080744FC @ =gBattleTypeFlags - ldr r1, [r1] - movs r2, 0x1 - ands r1, r2 - lsls r1, 4 - adds r0, r1 - adds r0, r4 - ldrb r0, [r0, 0x1] - b _08074588 - .align 2, 0 -_080744F8: .4byte gUnknown_83AE01C -_080744FC: .4byte gBattleTypeFlags -_08074500: - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08074538 - ldr r0, _0807452C @ =gUnknown_2024018 - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r5, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _08074570 - ldr r1, _08074530 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08074534 @ =gEnemyParty - b _08074556 - .align 2, 0 -_0807452C: .4byte gUnknown_2024018 -_08074530: .4byte gBattlerPartyIndexes -_08074534: .4byte gEnemyParty -_08074538: - ldr r0, _08074564 @ =gUnknown_2024018 - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r5, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _08074570 - ldr r1, _08074568 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0807456C @ =gPlayerParty -_08074556: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - b _08074572 - .align 2, 0 -_08074564: .4byte gUnknown_2024018 -_08074568: .4byte gBattlerPartyIndexes -_0807456C: .4byte gPlayerParty -_08074570: - ldrh r1, [r1, 0x2] -_08074572: - cmp r4, 0x3 - bne _0807457C - adds r0, r5, 0 - movs r2, 0x1 - b _08074580 -_0807457C: - adds r0, r5, 0 - movs r2, 0 -_08074580: - bl sub_80747AC - lsls r0, 24 - lsrs r0, 24 -_08074588: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8074480 - - thumb_func_start sub_8074590 -sub_8074590: @ 8074590 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - lsls r1, 16 - lsrs r4, r1, 16 - adds r7, r4, 0 - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08074674 - cmp r4, 0xC9 - bne _08074638 - ldr r0, _080745D8 @ =gUnknown_2024018 - ldr r0, [r0] - ldr r0, [r0] - lsls r1, r5, 2 - adds r0, r1, r0 - ldrh r0, [r0, 0x2] - cmp r0, 0 - bne _080745E4 - ldr r1, _080745DC @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080745E0 @ =gPlayerParty - adds r0, r1 - movs r1, 0 - bl GetMonData - adds r2, r0, 0 - b _080745EA - .align 2, 0 -_080745D8: .4byte gUnknown_2024018 -_080745DC: .4byte gBattlerPartyIndexes -_080745E0: .4byte gPlayerParty -_080745E4: - ldr r0, _08074620 @ =gUnknown_2024008 - adds r0, r1, r0 - ldr r2, [r0] -_080745EA: - movs r0, 0xC0 - lsls r0, 18 - ands r0, r2 - lsrs r0, 18 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r2 - lsrs r1, 12 - orrs r0, r1 - movs r1, 0xC0 - lsls r1, 2 - ands r1, r2 - lsrs r1, 6 - orrs r0, r1 - movs r1, 0x3 - ands r1, r2 - orrs r0, r1 - movs r1, 0x1C - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _08074624 - adds r0, r7, 0 - b _0807462E - .align 2, 0 -_08074620: .4byte gUnknown_2024008 -_08074624: - movs r1, 0xCE - lsls r1, 1 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 -_0807462E: - ldr r1, _08074634 @ =gUnknown_8235E6C - lsls r0, 2 - b _0807473C - .align 2, 0 -_08074634: .4byte gUnknown_8235E6C -_08074638: - ldr r0, _0807464C @ =0x00000181 - cmp r4, r0 - bne _08074658 - ldr r0, _08074650 @ =gUnknown_83AE050 - ldr r1, _08074654 @ =gBattleMonForms - adds r1, r5, r1 - ldrb r1, [r1] - adds r1, r0 - ldrb r0, [r1] - b _08074740 - .align 2, 0 -_0807464C: .4byte 0x00000181 -_08074650: .4byte gUnknown_83AE050 -_08074654: .4byte gBattleMonForms -_08074658: - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - bls _08074668 - ldr r0, _08074664 @ =gUnknown_8235E6C - b _0807473E - .align 2, 0 -_08074664: .4byte gUnknown_8235E6C -_08074668: - ldr r1, _08074670 @ =gUnknown_8235E6C - lsls r0, r4, 2 - b _0807473C - .align 2, 0 -_08074670: .4byte gUnknown_8235E6C -_08074674: - cmp r4, 0xC9 - bne _08074704 - ldr r0, _080746A4 @ =gUnknown_2024018 - ldr r0, [r0] - ldr r0, [r0] - lsls r1, r5, 2 - adds r0, r1, r0 - ldrh r0, [r0, 0x2] - cmp r0, 0 - bne _080746B0 - ldr r1, _080746A8 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080746AC @ =gEnemyParty - adds r0, r1 - movs r1, 0 - bl GetMonData - adds r2, r0, 0 - b _080746B6 - .align 2, 0 -_080746A4: .4byte gUnknown_2024018 -_080746A8: .4byte gBattlerPartyIndexes -_080746AC: .4byte gEnemyParty -_080746B0: - ldr r0, _080746EC @ =gUnknown_2024008 - adds r0, r1, r0 - ldr r2, [r0] -_080746B6: - movs r0, 0xC0 - lsls r0, 18 - ands r0, r2 - lsrs r0, 18 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r2 - lsrs r1, 12 - orrs r0, r1 - movs r1, 0xC0 - lsls r1, 2 - ands r1, r2 - lsrs r1, 6 - orrs r0, r1 - movs r1, 0x3 - ands r1, r2 - orrs r0, r1 - movs r1, 0x1C - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _080746F0 - adds r0, r7, 0 - b _080746FA - .align 2, 0 -_080746EC: .4byte gUnknown_2024008 -_080746F0: - movs r1, 0xCE - lsls r1, 1 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 -_080746FA: - ldr r1, _08074700 @ =gUnknown_82349CC - lsls r0, 2 - b _0807473C - .align 2, 0 -_08074700: .4byte gUnknown_82349CC -_08074704: - ldr r0, _0807471C @ =0x00000181 - cmp r4, r0 - bne _08074728 - ldr r0, _08074720 @ =gUnknown_83AE03C - ldr r1, _08074724 @ =gBattleMonForms - adds r1, r6, r1 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - b _08074740 - .align 2, 0 -_0807471C: .4byte 0x00000181 -_08074720: .4byte gUnknown_83AE03C -_08074724: .4byte gBattleMonForms -_08074728: - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - bls _08074738 - ldr r0, _08074734 @ =gUnknown_82349CC - b _0807473E - .align 2, 0 -_08074734: .4byte gUnknown_82349CC -_08074738: - ldr r1, _08074748 @ =gUnknown_82349CC - lsls r0, r7, 2 -_0807473C: - adds r0, r1 -_0807473E: - ldrb r0, [r0, 0x1] -_08074740: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08074748: .4byte gUnknown_82349CC - thumb_func_end sub_8074590 - - thumb_func_start sub_807474C -sub_807474C: @ 807474C - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - adds r7, r4, 0 - movs r5, 0 - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0807479E - ldr r0, _0807477C @ =0x00000181 - cmp r4, r0 - bne _08074788 - ldr r0, _08074780 @ =gUnknown_83AE04C - ldr r1, _08074784 @ =gBattleMonForms - adds r1, r6, r1 - ldrb r1, [r1] - adds r1, r0 - ldrb r5, [r1] - b _0807479E - .align 2, 0 -_0807477C: .4byte 0x00000181 -_08074780: .4byte gUnknown_83AE04C -_08074784: .4byte gBattleMonForms -_08074788: - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - bls _08074798 - ldr r0, _08074794 @ =gUnknown_823A004 - b _0807479C - .align 2, 0 -_08074794: .4byte gUnknown_823A004 -_08074798: - ldr r0, _080747A8 @ =gUnknown_823A004 - adds r0, r7, r0 -_0807479C: - ldrb r5, [r0] -_0807479E: - adds r0, r5, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080747A8: .4byte gUnknown_823A004 - thumb_func_end sub_807474C - - thumb_func_start sub_80747AC -sub_80747AC: @ 80747AC - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 24 - lsrs r7, r2, 24 - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080747D4 - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_8074590 - lsls r0, 24 - lsrs r5, r0, 24 - b _080747F2 -_080747D4: - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_8074590 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_807474C - lsls r0, 24 - lsrs r0, 24 - subs r0, r5, r0 - lsls r0, 16 - lsrs r5, r0, 16 -_080747F2: - adds r0, r6, 0 - bl GetBattlerPosition - ldr r3, _0807483C @ =gUnknown_83AE01C - lsls r0, 24 - lsrs r0, 22 - ldr r1, _08074840 @ =gBattleTypeFlags - ldr r1, [r1] - movs r2, 0x1 - ands r1, r2 - lsls r1, 4 - adds r0, r1 - adds r0, r3 - ldrb r0, [r0, 0x1] - adds r0, r5 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r7, 0 - beq _08074832 - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0807482C - adds r0, r4, 0 - adds r0, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 -_0807482C: - cmp r4, 0x68 - bls _08074832 - movs r4, 0x68 -_08074832: - adds r0, r4, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0807483C: .4byte gUnknown_83AE01C -_08074840: .4byte gBattleTypeFlags - thumb_func_end sub_80747AC - - thumb_func_start sub_8074844 -sub_8074844: @ 8074844 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - movs r0, 0xFD - lsls r0, 24 - adds r1, r0 - lsrs r1, 24 - cmp r1, 0x1 - bhi _08074896 - ldr r0, _08074874 @ =gUnknown_2024018 - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r2, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _0807487C - ldr r1, _08074878 @ =gUnknown_2037F1C - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - b _0807487E - .align 2, 0 -_08074874: .4byte gUnknown_2024018 -_08074878: .4byte gUnknown_2037F1C -_0807487C: - ldrh r1, [r1, 0x2] -_0807487E: - cmp r3, 0x3 - bne _0807488C - adds r0, r2, 0 - movs r2, 0x1 - bl sub_80747AC - b _0807489E -_0807488C: - adds r0, r2, 0 - movs r2, 0 - bl sub_80747AC - b _0807489E -_08074896: - adds r0, r2, 0 - adds r1, r3, 0 - bl sub_8074480 -_0807489E: - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8074844 - - thumb_func_start GetBankSpriteDefault_Y -GetBankSpriteDefault_Y: @ 80748A8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x4 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end GetBankSpriteDefault_Y - - thumb_func_start GetSubstituteSpriteDefault_Y -GetSubstituteSpriteDefault_Y: @ 80748BC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080748E0 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 8 - movs r1, 0x80 - lsls r1, 13 - b _080748F0 -_080748E0: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 8 - movs r1, 0x88 - lsls r1, 13 -_080748F0: - adds r0, r1 - lsrs r0, 16 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetSubstituteSpriteDefault_Y - - thumb_func_start sub_8074900 -sub_8074900: @ 8074900 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0807491A - adds r0, r4, 0 - movs r1, 0x1 - b _0807491E -_0807491A: - adds r0, r4, 0 - movs r1, 0x4 -_0807491E: - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8074900 - - thumb_func_start sub_807492C -sub_807492C: @ 807492C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08074978 - ldr r0, _0807496C @ =gUnknown_2024018 - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r5, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _080749B0 - ldr r1, _08074970 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08074974 @ =gEnemyParty - b _08074996 - .align 2, 0 -_0807496C: .4byte gUnknown_2024018 -_08074970: .4byte gBattlerPartyIndexes -_08074974: .4byte gEnemyParty -_08074978: - ldr r0, _080749A4 @ =gUnknown_2024018 - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r5, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _080749B0 - ldr r1, _080749A8 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080749AC @ =gPlayerParty -_08074996: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - b _080749B2 - .align 2, 0 -_080749A4: .4byte gUnknown_2024018 -_080749A8: .4byte gBattlerPartyIndexes -_080749AC: .4byte gPlayerParty -_080749B0: - ldrh r4, [r1, 0x2] -_080749B2: - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080749CC - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_807474C - subs r0, r6, r0 - lsls r0, 24 - lsrs r6, r0, 24 -_080749CC: - adds r0, r6, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_807492C - - thumb_func_start GetAnimBankSpriteId -GetAnimBankSpriteId: @ 80749D4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0 - bne _080749FC - ldr r4, _080749F4 @ =gBattleAnimAttacker - ldrb r0, [r4] - bl sub_8075224 - lsls r0, 24 - cmp r0, 0 - beq _08074A4A - ldr r1, _080749F8 @ =gBattlerSpriteIds - ldrb r0, [r4] - b _08074A5A - .align 2, 0 -_080749F4: .4byte gBattleAnimAttacker -_080749F8: .4byte gBattlerSpriteIds -_080749FC: - cmp r0, 0x1 - bne _08074A1C - ldr r4, _08074A14 @ =gBattleAnimTarget - ldrb r0, [r4] - bl sub_8075224 - lsls r0, 24 - cmp r0, 0 - beq _08074A4A - ldr r1, _08074A18 @ =gBattlerSpriteIds - ldrb r0, [r4] - b _08074A5A - .align 2, 0 -_08074A14: .4byte gBattleAnimTarget -_08074A18: .4byte gBattlerSpriteIds -_08074A1C: - cmp r1, 0x2 - bne _08074A38 - ldr r5, _08074A34 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r4, 0x2 - eors r0, r4 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _08074A4A - b _08074A54 - .align 2, 0 -_08074A34: .4byte gBattleAnimAttacker -_08074A38: - ldr r5, _08074A50 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r4, 0x2 - eors r0, r4 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - bne _08074A54 -_08074A4A: - movs r0, 0xFF - b _08074A5E - .align 2, 0 -_08074A50: .4byte gBattleAnimTarget -_08074A54: - ldr r1, _08074A64 @ =gBattlerSpriteIds - ldrb r0, [r5] - eors r0, r4 -_08074A5A: - adds r0, r1 - ldrb r0, [r0] -_08074A5E: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08074A64: .4byte gBattlerSpriteIds - thumb_func_end GetAnimBankSpriteId - - thumb_func_start StoreSpriteCallbackInData6 -StoreSpriteCallbackInData6: @ 8074A68 - strh r1, [r0, 0x3A] - lsrs r1, 16 - strh r1, [r0, 0x3C] - bx lr - thumb_func_end StoreSpriteCallbackInData6 - - thumb_func_start SetCallbackToStoredInData -SetCallbackToStoredInData: @ 8074A70 - ldrh r2, [r0, 0x3A] - movs r3, 0x3C - ldrsh r1, [r0, r3] - lsls r1, 16 - orrs r2, r1 - str r2, [r0, 0x1C] - bx lr - thumb_func_end SetCallbackToStoredInData - - thumb_func_start sub_8074A80 -sub_8074A80: @ 8074A80 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08074AD4 - movs r2, 0x2E - ldrsh r0, [r4, r2] - 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, 0x32] - ldrh r2, [r4, 0x2E] - adds r1, r0, r2 - strh r1, [r4, 0x2E] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _08074AC0 - ldr r2, _08074ABC @ =0xffffff00 - b _08074AC8 - .align 2, 0 -_08074ABC: .4byte 0xffffff00 -_08074AC0: - cmp r0, 0 - bge _08074ACC - movs r2, 0x80 - lsls r2, 1 -_08074AC8: - adds r0, r1, r2 - strh r0, [r4, 0x2E] -_08074ACC: - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - b _08074ADA -_08074AD4: - adds r0, r4, 0 - bl SetCallbackToStoredInData -_08074ADA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074A80 - - thumb_func_start sub_8074AE0 -sub_8074AE0: @ 8074AE0 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08074B50 - movs r2, 0x2E - ldrsh r0, [r4, r2] - ldrh r1, [r4, 0x38] - lsls r1, 16 - asrs r1, 24 - ldrh r2, [r4, 0x30] - adds r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - ldrh r1, [r4, 0x38] - lsls r1, 16 - asrs r1, 24 - ldrh r2, [r4, 0x30] - adds r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x2E] - adds r1, r0, r2 - strh r1, [r4, 0x2E] - ldrh r0, [r4, 0x36] - ldrh r2, [r4, 0x38] - adds r0, r2 - strh r0, [r4, 0x38] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _08074B3C - ldr r2, _08074B38 @ =0xffffff00 - b _08074B44 - .align 2, 0 -_08074B38: .4byte 0xffffff00 -_08074B3C: - cmp r0, 0 - bge _08074B48 - movs r2, 0x80 - lsls r2, 1 -_08074B44: - adds r0, r1, r2 - strh r0, [r4, 0x2E] -_08074B48: - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - b _08074B56 -_08074B50: - adds r0, r4, 0 - bl SetCallbackToStoredInData -_08074B56: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074AE0 - - thumb_func_start sub_8074B5C -sub_8074B5C: @ 8074B5C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08074BD8 - movs r2, 0x2E - ldrsh r0, [r4, r2] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x2E] - adds r1, r0, r2 - strh r1, [r4, 0x2E] - ldrh r0, [r4, 0x38] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _08074BA4 - ldr r2, _08074BA0 @ =0xffffff00 - b _08074BAC - .align 2, 0 -_08074BA0: .4byte 0xffffff00 -_08074BA4: - cmp r0, 0 - bge _08074BB0 - movs r2, 0x80 - lsls r2, 1 -_08074BAC: - adds r0, r1, r2 - strh r0, [r4, 0x2E] -_08074BB0: - ldrh r1, [r4, 0x36] - movs r2, 0x36 - ldrsh r0, [r4, r2] - cmp r0, 0xFF - ble _08074BC4 - ldr r2, _08074BC0 @ =0xffffff00 - b _08074BCC - .align 2, 0 -_08074BC0: .4byte 0xffffff00 -_08074BC4: - cmp r0, 0 - bge _08074BD0 - movs r2, 0x80 - lsls r2, 1 -_08074BCC: - adds r0, r1, r2 - strh r0, [r4, 0x36] -_08074BD0: - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - b _08074BDE -_08074BD8: - adds r0, r4, 0 - bl SetCallbackToStoredInData -_08074BDE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074B5C - - thumb_func_start sub_8074BE4 -sub_8074BE4: @ 8074BE4 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08074C38 - movs r2, 0x2E - ldrsh r0, [r4, r2] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x2E] - adds r1, r0, r2 - strh r1, [r4, 0x2E] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _08074C24 - ldr r2, _08074C20 @ =0xffffff00 - b _08074C2C - .align 2, 0 -_08074C20: .4byte 0xffffff00 -_08074C24: - cmp r0, 0 - bge _08074C30 - movs r2, 0x80 - lsls r2, 1 -_08074C2C: - adds r0, r1, r2 - strh r0, [r4, 0x2E] -_08074C30: - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - b _08074C3E -_08074C38: - adds r0, r4, 0 - bl SetCallbackToStoredInData -_08074C3E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074BE4 - - thumb_func_start sub_8074C44 -sub_8074C44: @ 8074C44 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1, 0x2E] - movs r3, 0x2E - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08074C58 - subs r0, r2, 0x1 - strh r0, [r1, 0x2E] - b _08074C5E -_08074C58: - adds r0, r1, 0 - bl SetCallbackToStoredInData -_08074C5E: - pop {r0} - bx r0 - thumb_func_end sub_8074C44 - - thumb_func_start sub_8074C64 -sub_8074C64: @ 8074C64 - push {r4,lr} - adds r4, r0, 0 - bl sub_8074C80 - ldr r1, _08074C7C @ =sub_8074CD0 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08074C7C: .4byte sub_8074CD0 - thumb_func_end sub_8074C64 - - thumb_func_start sub_8074C80 -sub_8074C80: @ 8074C80 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x30 - ldrsh r1, [r4, r0] - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r1, r0 - ble _08074C96 - ldrh r0, [r4, 0x2E] - negs r0, r0 - strh r0, [r4, 0x2E] -_08074C96: - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r2, 0x30 - ldrsh r1, [r4, r2] - subs r0, r1 - ldrh r5, [r4, 0x2E] - movs r2, 0x2E - ldrsh r1, [r4, r2] - bl __divsi3 - cmp r0, 0 - bge _08074CB0 - negs r0, r0 -_08074CB0: - strh r0, [r4, 0x2E] - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r2, 0x34 - ldrsh r1, [r4, r2] - subs r0, r1 - movs r2, 0x2E - ldrsh r1, [r4, r2] - bl __divsi3 - strh r0, [r4, 0x32] - strh r5, [r4, 0x30] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8074C80 - - thumb_func_start sub_8074CD0 -sub_8074CD0: @ 8074CD0 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1, 0x2E] - movs r3, 0x2E - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _08074CF4 - subs r0, r2, 0x1 - strh r0, [r1, 0x2E] - ldrh r0, [r1, 0x30] - ldrh r2, [r1, 0x24] - adds r0, r2 - strh r0, [r1, 0x24] - ldrh r0, [r1, 0x32] - ldrh r3, [r1, 0x26] - adds r0, r3 - strh r0, [r1, 0x26] - b _08074CFA -_08074CF4: - adds r0, r1, 0 - bl SetCallbackToStoredInData -_08074CFA: - pop {r0} - bx r0 - thumb_func_end sub_8074CD0 - - thumb_func_start sub_8074D00 -sub_8074D00: @ 8074D00 - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x2E] - movs r3, 0x2E - ldrsh r0, [r2, r3] - cmp r0, 0 - ble _08074D30 - subs r0, r1, 0x1 - strh r0, [r2, 0x2E] - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x34] - adds r0, r1 - strh r0, [r2, 0x34] - ldrh r1, [r2, 0x32] - ldrh r3, [r2, 0x36] - adds r1, r3 - strh r1, [r2, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r2, 0x24] - lsls r1, 16 - asrs r1, 24 - strh r1, [r2, 0x26] - b _08074D36 -_08074D30: - adds r0, r2, 0 - bl SetCallbackToStoredInData -_08074D36: - pop {r0} - bx r0 - thumb_func_end sub_8074D00 - - thumb_func_start sub_8074D3C -sub_8074D3C: @ 8074D3C - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _08074D6C - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x36] - adds r1, r2 - strh r1, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - lsls r1, 16 - asrs r1, 24 - strh r1, [r4, 0x26] - b _08074D72 -_08074D6C: - adds r0, r4, 0 - bl SetCallbackToStoredInData -_08074D72: - adds r0, r4, 0 - bl UpdateMonIconFrame - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074D3C - - thumb_func_start sub_8074D80 -sub_8074D80: @ 8074D80 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x34] - ldr r5, _08074DBC @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, _08074DC0 @ =sub_8074C64 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08074DBC: .4byte gBattleAnimTarget -_08074DC0: .4byte sub_8074C64 - thumb_func_end sub_8074D80 - - thumb_func_start sub_8074DC4 -sub_8074DC4: @ 8074DC4 - push {r4,lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x2E] - movs r2, 0x2E - ldrsh r0, [r3, r2] - cmp r0, 0 - ble _08074E08 - subs r0, r1, 0x1 - strh r0, [r3, 0x2E] - ldr r2, _08074E04 @ =gSprites - movs r4, 0x34 - ldrsh r1, [r3, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x30] - ldrh r4, [r0, 0x24] - adds r1, r4 - strh r1, [r0, 0x24] - movs r0, 0x34 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x32] - ldrh r2, [r0, 0x26] - adds r1, r2 - strh r1, [r0, 0x26] - b _08074E0E - .align 2, 0 -_08074E04: .4byte gSprites -_08074E08: - adds r0, r3, 0 - bl SetCallbackToStoredInData -_08074E0E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074DC4 - - thumb_func_start sub_8074E14 -sub_8074E14: @ 8074E14 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _08074E64 - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x30] - ldrh r0, [r4, 0x34] - adds r1, r0 - strh r1, [r4, 0x34] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - ldr r3, _08074E60 @ =gSprites - movs r0, 0x38 - ldrsh r2, [r4, r0] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - lsls r1, 16 - asrs r1, 24 - strh r1, [r0, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r1, 0x26] - b _08074E6A - .align 2, 0 -_08074E60: .4byte gSprites -_08074E64: - adds r0, r4, 0 - bl SetCallbackToStoredInData -_08074E6A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074E14 - - thumb_func_start sub_8074E70 -sub_8074E70: @ 8074E70 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _08074ED2 - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x32] - lsls r0, r1, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r1, r0 - strh r1, [r4, 0x32] - ldrh r1, [r4, 0x36] - lsls r0, r1, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r1, r0 - strh r1, [r4, 0x36] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl __modsi3 - cmp r0, 0 - bne _08074ED8 - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08074ED8 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - 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 - strb r0, [r3] - b _08074ED8 -_08074ED2: - adds r0, r4, 0 - bl SetCallbackToStoredInData -_08074ED8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074E70 - - thumb_func_start move_anim_8074EE0 -move_anim_8074EE0: @ 8074EE0 - push {r4,lr} - adds r4, r0, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroyAnimSprite - pop {r4} - pop {r0} - bx r0 - thumb_func_end move_anim_8074EE0 - - thumb_func_start sub_8074EF4 -sub_8074EF4: @ 8074EF4 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x34] - ldr r5, _08074F30 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, _08074F34 @ =sub_8074C64 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08074F30: .4byte gBattleAnimAttacker -_08074F34: .4byte sub_8074C64 - thumb_func_end sub_8074EF4 - - thumb_func_start sub_8074F38 -sub_8074F38: @ 8074F38 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x38] - bl ResetPaletteStructByUid - adds r0, r4, 0 - bl move_anim_8074EE0 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074F38 - - thumb_func_start sub_8074F50 -sub_8074F50: @ 8074F50 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08074F66 - adds r0, r2, 0 - bl SetCallbackToStoredInData -_08074F66: - pop {r0} - bx r0 - thumb_func_end sub_8074F50 - - thumb_func_start sub_8074F6C -sub_8074F6C: @ 8074F6C - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08074F82 - adds r0, r2, 0 - bl SetCallbackToStoredInData -_08074F82: - pop {r0} - bx r0 - thumb_func_end sub_8074F6C - - thumb_func_start sub_8074F88 -sub_8074F88: @ 8074F88 - 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_8074F88 - - thumb_func_start sub_8074FA8 -sub_8074FA8: @ 8074FA8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8074FA8 - - thumb_func_start sub_8074FCC -sub_8074FCC: @ 8074FCC - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _08074FF4 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08074FF4: .4byte gBattleAnimAttacker - thumb_func_end sub_8074FCC - - thumb_func_start sub_8074FF8 -sub_8074FF8: @ 8074FF8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - lsls r1, 16 - lsrs r5, r1, 16 - mov r8, r5 - ldr r7, _08075030 @ =gBattleAnimAttacker - ldrb r0, [r7] - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _08075034 @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - bhi _08075044 - cmp r6, r0 - bcs _08075038 - lsls r0, r5, 16 - b _08075054 - .align 2, 0 -_08075030: .4byte gBattleAnimAttacker -_08075034: .4byte gBattleAnimTarget -_08075038: - ldrb r0, [r7] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08075050 -_08075044: - ldrh r1, [r4, 0x20] - lsls r0, r5, 16 - asrs r0, 16 - subs r1, r0 - strh r1, [r4, 0x20] - b _0807505C -_08075050: - mov r1, r8 - lsls r0, r1, 16 -_08075054: - asrs r0, 16 - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] -_0807505C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8074FF8 - - thumb_func_start sub_8075068 -sub_8075068: @ 8075068 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - movs r5, 0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r0, 0x80 - lsls r0, 8 - bl __divsi3 - strh r0, [r4, 0x3A] - strh r5, [r4, 0x3C] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8075068 - - thumb_func_start AnimateBallThrow -AnimateBallThrow: @ 8075094 - push {r4,lr} - adds r4, r0, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - bne _080750C0 - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x3C] - adds r0, r1 - strh r0, [r4, 0x3C] - lsls r0, 16 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - movs r0, 0 - b _080750C2 -_080750C0: - movs r0, 0x1 -_080750C2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end AnimateBallThrow - - thumb_func_start sub_80750C8 -sub_80750C8: @ 80750C8 - push {r4,lr} - adds r4, r0, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - bne _080750F4 - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x3C] - adds r0, r1 - strh r0, [r4, 0x3C] - lsls r0, 16 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - movs r0, 0 - b _080750F6 -_080750F4: - movs r0, 0x1 -_080750F6: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80750C8 - - thumb_func_start oamt_add_pos2_onto_pos1 -oamt_add_pos2_onto_pos1: @ 80750FC - ldrh r1, [r0, 0x24] - ldrh r2, [r0, 0x20] - adds r1, r2 - movs r2, 0 - strh r1, [r0, 0x20] - ldrh r1, [r0, 0x26] - ldrh r3, [r0, 0x22] - adds r1, r3 - strh r1, [r0, 0x22] - strh r2, [r0, 0x24] - strh r2, [r0, 0x26] - bx lr - thumb_func_end oamt_add_pos2_onto_pos1 - - thumb_func_start sub_8075114 -sub_8075114: @ 8075114 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - cmp r1, 0 - bne _0807513C - ldr r4, _08075158 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0 - bl sub_8074844 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8074844 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] -_0807513C: - ldr r4, _0807515C @ =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r4, r0] - adds r0, r5, 0 - bl sub_8074FF8 - ldrh r0, [r4, 0x2] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08075158: .4byte gBattleAnimTarget -_0807515C: .4byte gBattleAnimArgs - thumb_func_end sub_8075114 - - thumb_func_start sub_8075160 -sub_8075160: @ 8075160 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - cmp r1, 0 - bne _08075184 - ldr r4, _08075180 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0 - bl sub_8074844 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - b _08075198 - .align 2, 0 -_08075180: .4byte gBattleAnimAttacker -_08075184: - ldr r4, _080751BC @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074844 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 -_08075198: - bl sub_8074844 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r4, _080751C0 @ =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r4, r0] - adds r0, r5, 0 - bl sub_8074FF8 - ldrh r0, [r4, 0x2] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080751BC: .4byte gBattleAnimAttacker -_080751C0: .4byte gBattleAnimArgs - thumb_func_end sub_8075160 - - thumb_func_start GetBattlerSide -GetBattlerSide: @ 80751C4 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080751D4 @ =gUnknown_2023BD6 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - bx lr - .align 2, 0 -_080751D4: .4byte gUnknown_2023BD6 - thumb_func_end GetBattlerSide - - thumb_func_start GetBattlerPosition -GetBattlerPosition: @ 80751D8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080751E4 @ =gUnknown_2023BD6 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080751E4: .4byte gUnknown_2023BD6 - thumb_func_end GetBattlerPosition - - thumb_func_start GetBattlerAtPosition -GetBattlerAtPosition: @ 80751E8 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - movs r1, 0 - ldr r0, _0807521C @ =gBattlersCount - ldrb r2, [r0] - cmp r1, r2 - bcs _08075212 - ldr r4, _08075220 @ =gUnknown_2023BD6 - ldrb r0, [r4] - cmp r0, r3 - beq _08075212 -_08075200: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, r2 - bcs _08075212 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, r3 - bne _08075200 -_08075212: - adds r0, r1, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0807521C: .4byte gBattlersCount -_08075220: .4byte gUnknown_2023BD6 - thumb_func_end GetBattlerAtPosition - - thumb_func_start sub_8075224 -sub_8075224: @ 8075224 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - ldr r0, _08075254 @ =gUnknown_2023BD6 - adds r0, r4, r0 - ldrb r0, [r0] - cmp r0, 0xFF - beq _08075288 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08075260 - ldr r1, _08075258 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0807525C @ =gEnemyParty - b _0807526E - .align 2, 0 -_08075254: .4byte gUnknown_2023BD6 -_08075258: .4byte gBattlerPartyIndexes -_0807525C: .4byte gEnemyParty -_08075260: - ldr r1, _08075280 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08075284 @ =gPlayerParty -_0807526E: - adds r0, r1 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08075288 - movs r0, 0x1 - b _0807528A - .align 2, 0 -_08075280: .4byte gBattlerPartyIndexes -_08075284: .4byte gPlayerParty -_08075288: - movs r0, 0 -_0807528A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8075224 - - thumb_func_start sub_8075290 -sub_8075290: @ 8075290 - ldr r0, _0807529C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - bx lr - .align 2, 0 -_0807529C: .4byte gBattleTypeFlags - thumb_func_end sub_8075290 - - thumb_func_start sub_80752A0 -sub_80752A0: @ 80752A0 - ldr r1, _080752C0 @ =gUnknown_2022BB8 - ldr r1, [r1] - str r1, [r0] - ldr r1, _080752C4 @ =gUnknown_2022BBC - ldr r1, [r1] - str r1, [r0, 0x4] - movs r2, 0 - movs r1, 0x8 - strb r1, [r0, 0x8] - movs r1, 0x1 - strb r1, [r0, 0x9] - movs r1, 0x80 - lsls r1, 2 - strh r1, [r0, 0xA] - strh r2, [r0, 0xC] - bx lr - .align 2, 0 -_080752C0: .4byte gUnknown_2022BB8 -_080752C4: .4byte gUnknown_2022BBC - thumb_func_end sub_80752A0 - - thumb_func_start sub_80752C8 -sub_80752C8: @ 80752C8 - push {lr} - adds r2, r0, 0 - cmp r1, 0x1 - bne _080752D6 - bl sub_80752A0 - b _080752F4 -_080752D6: - ldr r0, _080752F8 @ =gUnknown_2022BB8 - ldr r0, [r0] - str r0, [r2] - ldr r0, _080752FC @ =gUnknown_2022BBC - ldr r0, [r0] - str r0, [r2, 0x4] - movs r1, 0 - movs r0, 0x9 - strb r0, [r2, 0x8] - movs r0, 0x2 - strb r0, [r2, 0x9] - movs r0, 0xC0 - lsls r0, 2 - strh r0, [r2, 0xA] - strh r1, [r2, 0xC] -_080752F4: - pop {r0} - bx r0 - .align 2, 0 -_080752F8: .4byte gUnknown_2022BB8 -_080752FC: .4byte gUnknown_2022BBC - thumb_func_end sub_80752C8 - - thumb_func_start sub_8075300 -sub_8075300: @ 8075300 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _08075334 @ =gUnknown_2022BB8 - ldr r0, [r0] - str r0, [r4] - ldr r0, _08075338 @ =gUnknown_2022BBC - ldr r0, [r0] - str r0, [r4, 0x4] - ldr r0, _0807533C @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80768B0 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x1 - bne _08075340 - movs r0, 0 - movs r1, 0x8 - strb r1, [r4, 0x8] - strb r2, [r4, 0x9] - movs r1, 0x80 - lsls r1, 2 - strh r1, [r4, 0xA] - strh r0, [r4, 0xC] - b _08075352 - .align 2, 0 -_08075334: .4byte gUnknown_2022BB8 -_08075338: .4byte gUnknown_2022BBC -_0807533C: .4byte gBattleAnimAttacker -_08075340: - movs r1, 0 - movs r0, 0x9 - strb r0, [r4, 0x8] - movs r0, 0x2 - strb r0, [r4, 0x9] - movs r0, 0xC0 - lsls r0, 2 - strh r0, [r4, 0xA] - strh r1, [r4, 0xC] -_08075352: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8075300 - - thumb_func_start sub_8075358 -sub_8075358: @ 8075358 - push {r4,lr} - sub sp, 0x20 - adds r4, r0, 0 - add r0, sp, 0xC - adds r1, r4, 0 - bl sub_80752C8 - movs r0, 0 - str r0, [sp, 0x1C] - add r0, sp, 0x1C - ldr r1, [sp, 0xC] - ldr r2, _080753B0 @ =0x05000800 - bl CpuSet - lsls r4, 24 - lsrs r4, 24 - ldr r1, [sp, 0xC] - movs r2, 0x80 - lsls r2, 6 - add r0, sp, 0xC - ldrh r3, [r0, 0xA] - adds r0, r4, 0 - bl LoadBgTiles - movs r0, 0x20 - str r0, [sp] - movs r0, 0x40 - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect - adds r0, r4, 0 - bl CopyBgTilemapBufferToVram - add sp, 0x20 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080753B0: .4byte 0x05000800 - thumb_func_end sub_8075358 - - thumb_func_start sub_80753B4 -sub_80753B4: @ 80753B4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - adds r5, r0, 0 - mov r8, r1 - adds r6, r2, 0 - movs r0, 0 - str r0, [sp] - ldr r4, _080753FC @ =gUnknown_2022BB8 - ldr r1, [r4] - ldr r2, _08075400 @ =0x05000800 - mov r0, sp - bl CpuSet - ldr r1, [r4] - mov r0, r8 - bl LZDecompressWram - lsls r5, 24 - lsrs r5, 24 - ldr r1, [r4] - movs r2, 0x80 - lsls r2, 6 - lsls r6, 16 - lsrs r6, 16 - adds r0, r5, 0 - adds r3, r6, 0 - bl LoadBgTiles - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080753FC: .4byte gUnknown_2022BB8 -_08075400: .4byte 0x05000800 - thumb_func_end sub_80753B4 - - thumb_func_start sub_8075404 -sub_8075404: @ 8075404 - push {r4,r5,lr} - sub sp, 0xC - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x20 - str r0, [sp] - movs r0, 0x40 - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8075404 - - thumb_func_start sub_807543C -sub_807543C: @ 807543C - push {r4,lr} - adds r4, r0, 0 - bl sub_8075404 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl CopyBgTilemapBufferToVram - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_807543C - - thumb_func_start sub_8075454 -sub_8075454: @ 8075454 - movs r0, 0x2 - bx lr - thumb_func_end sub_8075454 - - thumb_func_start sub_8075458 -sub_8075458: @ 8075458 - push {lr} - lsls r0, 24 - cmp r0, 0 - bne _08075476 - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - movs r0, 0x3 - movs r1, 0x1 - movs r2, 0x1 - bl SetAnimBgAttribute - b _0807548A -_08075476: - movs r0, 0x3 - movs r1, 0 - movs r2, 0x1 - bl SetAnimBgAttribute - movs r0, 0x3 - movs r1, 0x1 - movs r2, 0 - bl SetAnimBgAttribute -_0807548A: - pop {r0} - bx r0 - thumb_func_end sub_8075458 - - thumb_func_start sub_8075490 -sub_8075490: @ 8075490 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - adds r0, r4, 0 - bl sub_80754B8 - ldr r1, _080754B4 @ =sub_8074D3C - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080754B4: .4byte sub_8074D3C - thumb_func_end sub_8075490 - - thumb_func_start sub_80754B8 -sub_80754B8: @ 80754B8 - push {r4-r6,lr} - adds r5, r0, 0 - ldrh r0, [r5, 0x32] - ldrh r1, [r5, 0x30] - subs r0, r1 - ldrh r4, [r5, 0x36] - ldrh r1, [r5, 0x34] - subs r4, r1 - lsls r4, 24 - lsrs r4, 16 - lsls r0, 24 - asrs r0, 16 - movs r2, 0x2E - ldrsh r1, [r5, r2] - bl __divsi3 - movs r6, 0 - strh r0, [r5, 0x30] - lsls r4, 16 - asrs r4, 16 - movs r0, 0x2E - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl __divsi3 - strh r0, [r5, 0x32] - strh r6, [r5, 0x36] - strh r6, [r5, 0x34] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80754B8 - - thumb_func_start obj_translate_based_on_private_1_2_3_4 -obj_translate_based_on_private_1_2_3_4: @ 80754F8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - movs r0, 0x32 - ldrsh r1, [r7, r0] - movs r2, 0x30 - ldrsh r0, [r7, r2] - subs r1, r0 - movs r3, 0x36 - ldrsh r2, [r7, r3] - movs r3, 0x34 - ldrsh r0, [r7, r3] - subs r2, r0 - lsrs r0, r1, 31 - mov r8, r0 - lsrs r3, r2, 31 - mov r9, r3 - cmp r1, 0 - bge _08075524 - negs r1, r1 -_08075524: - lsls r0, r1, 24 - lsrs r6, r0, 16 - adds r0, r2, 0 - cmp r0, 0 - bge _08075530 - negs r0, r0 -_08075530: - lsls r0, 24 - lsrs r5, r0, 16 - movs r0, 0x2E - ldrsh r4, [r7, r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl __divsi3 - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl __divsi3 - lsls r0, 16 - lsrs r5, r0, 16 - mov r2, r8 - cmp r2, 0 - beq _0807555C - movs r0, 0x1 - orrs r6, r0 - b _08075560 -_0807555C: - ldr r0, _0807556C @ =0x0000fffe - ands r6, r0 -_08075560: - mov r3, r9 - cmp r3, 0 - beq _08075570 - movs r0, 0x1 - orrs r5, r0 - b _08075574 - .align 2, 0 -_0807556C: .4byte 0x0000fffe -_08075570: - ldr r0, _0807558C @ =0x0000fffe - ands r5, r0 -_08075574: - movs r0, 0 - strh r6, [r7, 0x30] - strh r5, [r7, 0x32] - strh r0, [r7, 0x36] - strh r0, [r7, 0x34] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807558C: .4byte 0x0000fffe - thumb_func_end obj_translate_based_on_private_1_2_3_4 - - thumb_func_start sub_8075590 -sub_8075590: @ 8075590 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r1, _080755B4 @ =sub_807563C - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080755B4: .4byte sub_807563C - thumb_func_end sub_8075590 - - thumb_func_start sub_80755B8 -sub_80755B8: @ 80755B8 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r1, _080755DC @ =sub_8075658 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080755DC: .4byte sub_8075658 - thumb_func_end sub_80755B8 - - thumb_func_start sub_80755E0 -sub_80755E0: @ 80755E0 - push {r4-r6,lr} - adds r2, r0, 0 - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _080755F0 - movs r0, 0x1 - b _08075634 -_080755F0: - ldrh r1, [r2, 0x30] - ldrh r4, [r2, 0x32] - ldrh r6, [r2, 0x34] - ldrh r5, [r2, 0x36] - adds r0, r6, r1 - lsls r3, r0, 16 - lsrs r6, r3, 16 - adds r0, r5, r4 - lsls r0, 16 - lsrs r5, r0, 16 - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _08075612 - lsrs r0, r3, 24 - negs r0, r0 - b _08075614 -_08075612: - lsrs r0, r3, 24 -_08075614: - strh r0, [r2, 0x24] - movs r0, 0x1 - ands r4, r0 - cmp r4, 0 - beq _08075624 - lsrs r0, r5, 8 - negs r0, r0 - b _08075626 -_08075624: - lsrs r0, r5, 8 -_08075626: - strh r0, [r2, 0x26] - strh r6, [r2, 0x34] - strh r5, [r2, 0x36] - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - strh r0, [r2, 0x2E] - movs r0, 0 -_08075634: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80755E0 - - thumb_func_start sub_807563C -sub_807563C: @ 807563C - push {r4,lr} - adds r4, r0, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - beq _08075650 - adds r0, r4, 0 - bl SetCallbackToStoredInData -_08075650: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_807563C - - thumb_func_start sub_8075658 -sub_8075658: @ 8075658 - push {r4,lr} - adds r4, r0, 0 - bl sub_801236C - adds r0, r4, 0 - bl sub_80755E0 - lsls r0, 24 - cmp r0, 0 - beq _08075672 - adds r0, r4, 0 - bl SetCallbackToStoredInData -_08075672: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8075658 - - thumb_func_start sub_8075678 -sub_8075678: @ 8075678 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x32 - ldrsh r1, [r4, r0] - movs r2, 0x30 - ldrsh r0, [r4, r2] - subs r0, r1, r0 - cmp r0, 0 - bge _0807568C - negs r0, r0 -_0807568C: - lsls r0, 8 - movs r2, 0x2E - ldrsh r1, [r4, r2] - bl __divsi3 - strh r0, [r4, 0x2E] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8075678 - - thumb_func_start sub_80756A4 -sub_80756A4: @ 80756A4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - adds r0, r4, 0 - bl sub_8075678 - ldr r1, _080756C8 @ =sub_807563C - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080756C8: .4byte sub_807563C - thumb_func_end sub_80756A4 - - thumb_func_start sub_80756CC -sub_80756CC: @ 80756CC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - movs r0, 0x32 - ldrsh r1, [r7, r0] - movs r2, 0x30 - ldrsh r0, [r7, r2] - subs r1, r0 - movs r3, 0x36 - ldrsh r2, [r7, r3] - movs r3, 0x34 - ldrsh r0, [r7, r3] - subs r2, r0 - lsrs r0, r1, 31 - mov r8, r0 - lsrs r3, r2, 31 - mov r9, r3 - cmp r1, 0 - bge _080756F8 - negs r1, r1 -_080756F8: - lsls r0, r1, 20 - lsrs r6, r0, 16 - adds r0, r2, 0 - cmp r0, 0 - bge _08075704 - negs r0, r0 -_08075704: - lsls r0, 20 - lsrs r5, r0, 16 - movs r0, 0x2E - ldrsh r4, [r7, r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl __divsi3 - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl __divsi3 - lsls r0, 16 - lsrs r5, r0, 16 - mov r2, r8 - cmp r2, 0 - beq _08075730 - movs r0, 0x1 - orrs r6, r0 - b _08075734 -_08075730: - ldr r0, _08075740 @ =0x0000fffe - ands r6, r0 -_08075734: - mov r3, r9 - cmp r3, 0 - beq _08075744 - movs r0, 0x1 - orrs r5, r0 - b _08075748 - .align 2, 0 -_08075740: .4byte 0x0000fffe -_08075744: - ldr r0, _08075760 @ =0x0000fffe - ands r5, r0 -_08075748: - movs r0, 0 - strh r6, [r7, 0x30] - strh r5, [r7, 0x32] - strh r0, [r7, 0x36] - strh r0, [r7, 0x34] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08075760: .4byte 0x0000fffe - thumb_func_end sub_80756CC - - thumb_func_start sub_8075764 -sub_8075764: @ 8075764 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - adds r0, r4, 0 - bl sub_80756CC - ldr r1, _08075788 @ =sub_80757E8 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08075788: .4byte sub_80757E8 - thumb_func_end sub_8075764 - - thumb_func_start sub_807578C -sub_807578C: @ 807578C - push {r4-r6,lr} - adds r2, r0, 0 - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _0807579C - movs r0, 0x1 - b _080757E0 -_0807579C: - ldrh r1, [r2, 0x30] - ldrh r4, [r2, 0x32] - ldrh r6, [r2, 0x34] - ldrh r5, [r2, 0x36] - adds r0, r6, r1 - lsls r3, r0, 16 - lsrs r6, r3, 16 - adds r0, r5, r4 - lsls r0, 16 - lsrs r5, r0, 16 - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _080757BE - lsrs r0, r3, 20 - negs r0, r0 - b _080757C0 -_080757BE: - lsrs r0, r3, 20 -_080757C0: - strh r0, [r2, 0x24] - movs r0, 0x1 - ands r4, r0 - cmp r4, 0 - beq _080757D0 - lsrs r0, r5, 4 - negs r0, r0 - b _080757D2 -_080757D0: - lsrs r0, r5, 4 -_080757D2: - strh r0, [r2, 0x26] - strh r6, [r2, 0x34] - strh r5, [r2, 0x36] - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - strh r0, [r2, 0x2E] - movs r0, 0 -_080757E0: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_807578C - - thumb_func_start sub_80757E8 -sub_80757E8: @ 80757E8 - push {r4,lr} - adds r4, r0, 0 - bl sub_807578C - lsls r0, 24 - cmp r0, 0 - beq _080757FC - adds r0, r4, 0 - bl SetCallbackToStoredInData -_080757FC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80757E8 - - thumb_func_start sub_8075804 -sub_8075804: @ 8075804 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x32 - ldrsh r1, [r4, r0] - movs r2, 0x30 - ldrsh r0, [r4, r2] - subs r0, r1, r0 - cmp r0, 0 - bge _08075818 - negs r0, r0 -_08075818: - lsls r0, 4 - movs r2, 0x2E - ldrsh r1, [r4, r2] - bl __divsi3 - strh r0, [r4, 0x2E] - adds r0, r4, 0 - bl sub_80756CC - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8075804 - - thumb_func_start sub_8075830 -sub_8075830: @ 8075830 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - adds r0, r4, 0 - bl sub_8075804 - ldr r1, _08075854 @ =sub_80757E8 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08075854: .4byte sub_80757E8 - thumb_func_end sub_8075830 - - thumb_func_start obj_id_set_rotscale -obj_id_set_rotscale: @ 8075858 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 16 - lsls r3, 16 - lsrs r3, 16 - ldr r5, _080758D0 @ =0xffff0000 - lsls r2, 16 - lsrs r1, 16 - orrs r1, r2 - str r1, [sp] - ldr r0, [sp, 0x4] - ands r0, r5 - orrs r0, r3 - str r0, [sp, 0x4] - bl sub_80758DC - lsls r0, 24 - cmp r0, 0 - beq _08075894 - mov r0, sp - ldrh r0, [r0] - negs r0, r0 - lsls r0, 16 - lsrs r0, 16 - ldr r1, [sp] - ands r1, r5 - orrs r1, r0 - str r1, [sp] -_08075894: - ldr r1, _080758D4 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x3] - lsls r4, 26 - lsrs r4, 27 - add r5, sp, 0x8 - mov r0, sp - adds r1, r5, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ObjAffineSet - ldr r0, _080758D8 @ =gOamMatrices - lsls r4, 3 - adds r4, r0 - ldrh r0, [r5] - strh r0, [r4] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x2] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x4] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x6] - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080758D0: .4byte 0xffff0000 -_080758D4: .4byte gSprites -_080758D8: .4byte gOamMatrices - thumb_func_end obj_id_set_rotscale - - thumb_func_start sub_80758DC -sub_80758DC: @ 80758DC - movs r0, 0 - bx lr - thumb_func_end sub_80758DC - - thumb_func_start sub_80758E0 -sub_80758E0: @ 80758E0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r2, _08075978 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r4, r1, r2 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _08075914 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_08075914: - movs r7, 0x3 - ands r5, r7 - lsls r2, r5, 2 - ldrb r1, [r4, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x1] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4, 0x1] - lsls r0, 30 - cmp r0, 0 - bne _0807595C - ldr r0, _0807597C @ =gUnknown_2024018 - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x6] - movs r0, 0x1F - ands r1, r0 - lsls r1, 1 - ldrb r2, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x3] -_0807595C: - ldrb r3, [r4, 0x1] - orrs r3, r7 - 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 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08075978: .4byte gSprites -_0807597C: .4byte gUnknown_2024018 - thumb_func_end sub_80758E0 - - thumb_func_start sub_8075980 -sub_8075980: @ 8075980 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r2, 0x80 - lsls r2, 1 - adds r0, r4, 0 - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldr r1, _080759D8 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0, 0x1] - movs r1, 0x4 - negs r1, r1 - ands r1, r2 - movs r2, 0x1 - orrs r1, r2 - movs r2, 0xD - negs r2, r2 - ands r1, r2 - strb r1, [r0, 0x1] - adds r3, r0, 0 - adds r3, 0x2C - ldrb r2, [r3] - movs r1, 0x7F - ands r1, r2 - strb r1, [r3] - ldrb r3, [r0, 0x1] - lsrs r1, r3, 6 - ldrb r2, [r0, 0x3] - lsrs r2, 6 - lsls r3, 30 - lsrs r3, 30 - bl CalcCenterToCornerVec - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080759D8: .4byte gSprites - thumb_func_end sub_8075980 - - thumb_func_start sub_80759DC -sub_80759DC: @ 80759DC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08075A14 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r2, r1, r2 - ldrb r0, [r2, 0x3] - lsls r0, 26 - lsrs r0, 27 - ldr r1, _08075A18 @ =gOamMatrices - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x4] - movs r3, 0x4 - ldrsh r0, [r0, r3] - cmp r0, 0 - bge _08075A08 - negs r0, r0 - lsls r0, 16 - lsrs r1, r0, 16 -_08075A08: - lsls r0, r1, 16 - asrs r0, 19 - strh r0, [r2, 0x26] - pop {r0} - bx r0 - .align 2, 0 -_08075A14: .4byte gSprites -_08075A18: .4byte gOamMatrices - thumb_func_end sub_80759DC - - thumb_func_start sub_8075A1C -sub_8075A1C: @ 8075A1C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r4, r0, 0 - ldr r0, [sp, 0x28] - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 16 - lsrs r5, r2, 16 - lsls r3, 16 - lsrs r7, r3, 16 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldrb r0, [r4, 0x1] - lsls r0, 30 - lsrs r0, 30 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08075AC2 - adds r0, r4, 0 - adds r0, 0x2C - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] - cmp r6, 0 - beq _08075A6A - ldrb 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 -_08075A6A: - ldr r6, _08075AD0 @ =0xffff0000 - lsls r0, r7, 16 - orrs r5, r0 - str r5, [sp] - ldr r0, [sp, 0x4] - ands r0, r6 - mov r1, r8 - orrs r0, r1 - str r0, [sp, 0x4] - bl sub_80758DC - lsls r0, 24 - cmp r0, 0 - beq _08075A98 - mov r0, sp - ldrh r0, [r0] - negs r0, r0 - lsls r0, 16 - lsrs r0, 16 - ldr r1, [sp] - ands r1, r6 - orrs r1, r0 - str r1, [sp] -_08075A98: - ldrb r4, [r4, 0x3] - lsls r4, 26 - lsrs r4, 27 - add r5, sp, 0x8 - mov r0, sp - adds r1, r5, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ObjAffineSet - ldr r0, _08075AD4 @ =gOamMatrices - lsls r4, 3 - adds r4, r0 - ldrh r0, [r5] - strh r0, [r4] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x2] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x4] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x6] -_08075AC2: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08075AD0: .4byte 0xffff0000 -_08075AD4: .4byte gOamMatrices - thumb_func_end sub_8075A1C - - thumb_func_start sub_8075AD8 -sub_8075AD8: @ 8075AD8 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r3, 0x80 - lsls r3, 1 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r1, 0x1 - adds r2, r3, 0 - bl sub_8075A1C - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - ldrb 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 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8075AD8 - - thumb_func_start ArcTan2_ -ArcTan2_: @ 8075B18 - push {lr} - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl ArcTan2 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end ArcTan2_ - - thumb_func_start sub_8075B30 -sub_8075B30: @ 8075B30 - push {lr} - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl ArcTan2_ - lsls r0, 16 - negs r0, r0 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_8075B30 - - thumb_func_start sub_8075B48 -sub_8075B48: @ 8075B48 - push {r4-r7,lr} - lsls r1, 24 - lsls r0, 20 - lsrs r0, 16 - cmp r1, 0 - bne _08075BC4 - ldr r2, _08075BB8 @ =gPlttBufferUnfaded - ldr r1, _08075BBC @ =gPlttBufferFaded - lsls r0, 1 - adds r4, r0, r1 - adds r5, r0, r2 - movs r6, 0xF -_08075B60: - ldr r0, [r5] - lsls r2, r0, 27 - lsrs r2, 27 - lsls r1, r0, 22 - lsrs r1, 27 - adds r2, r1 - lsls r0, 17 - lsrs r0, 27 - adds r0, r2 - movs r1, 0x3 - bl __udivsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1F - ands r0, r1 - ldrb r1, [r4] - movs r3, 0x20 - negs r3, r3 - adds r2, r3, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r4] - lsls r3, r0, 5 - ldrh r1, [r4] - ldr r7, _08075BC0 @ =0xfffffc1f - adds r2, r7, 0 - ands r1, r2 - orrs r1, r3 - strh r1, [r4] - lsls r0, 2 - ldrb r1, [r4, 0x1] - movs r3, 0x7D - negs r3, r3 - adds r2, r3, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x1] - adds r4, 0x2 - adds r5, 0x2 - subs r6, 0x1 - cmp r6, 0 - bge _08075B60 - b _08075BD4 - .align 2, 0 -_08075BB8: .4byte gPlttBufferUnfaded -_08075BBC: .4byte gPlttBufferFaded -_08075BC0: .4byte 0xfffffc1f -_08075BC4: - lsls r1, r0, 1 - ldr r0, _08075BDC @ =gPlttBufferUnfaded - adds r0, r1, r0 - ldr r2, _08075BE0 @ =gPlttBufferFaded - adds r1, r2 - ldr r2, _08075BE4 @ =0x04000008 - bl CpuSet -_08075BD4: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08075BDC: .4byte gPlttBufferUnfaded -_08075BE0: .4byte gPlttBufferFaded -_08075BE4: .4byte 0x04000008 - thumb_func_end sub_8075B48 - - thumb_func_start sub_8075BE8 -sub_8075BE8: @ 8075BE8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r4, [sp, 0x1C] - ldr r5, [sp, 0x20] - ldr r6, [sp, 0x24] - lsls r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r4, 24 - lsrs r7, r4, 24 - lsls r5, 24 - lsrs r5, 24 - mov r8, r5 - lsls r6, 24 - lsrs r6, 24 - mov r9, r6 - movs r4, 0 - cmp r0, 0 - beq _08075C1C - movs r4, 0xE -_08075C1C: - cmp r1, 0 - beq _08075C2E - ldr r0, _08075CB0 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r1, r0, 0 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - orrs r4, r0 -_08075C2E: - cmp r2, 0 - beq _08075C40 - ldr r0, _08075CB4 @ =gBattleAnimTarget - ldrb r0, [r0] - adds r1, r0, 0 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - orrs r4, r0 -_08075C40: - cmp r3, 0 - beq _08075C64 - ldr r6, _08075CB0 @ =gBattleAnimAttacker - ldrb r0, [r6] - movs r5, 0x2 - eors r0, r5 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _08075C64 - ldrb r0, [r6] - eors r0, r5 - adds r1, r0, 0 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - orrs r4, r0 -_08075C64: - cmp r7, 0 - beq _08075C88 - ldr r6, _08075CB4 @ =gBattleAnimTarget - ldrb r0, [r6] - movs r5, 0x2 - eors r0, r5 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _08075C88 - ldrb r0, [r6] - eors r0, r5 - adds r1, r0, 0 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - orrs r4, r0 -_08075C88: - mov r0, r8 - cmp r0, 0 - beq _08075C94 - movs r0, 0x80 - lsls r0, 1 - orrs r4, r0 -_08075C94: - mov r0, r9 - cmp r0, 0 - beq _08075CA0 - movs r0, 0x80 - lsls r0, 2 - orrs r4, r0 -_08075CA0: - adds r0, r4, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08075CB0: .4byte gBattleAnimAttacker -_08075CB4: .4byte gBattleAnimTarget - thumb_func_end sub_8075BE8 - - thumb_func_start sub_8075CB8 -sub_8075CB8: @ 8075CB8 - push {r4-r7,lr} - lsls r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - lsls r3, 24 - lsrs r7, r3, 24 - movs r4, 0 - cmp r0, 0 - beq _08075CF2 - movs r0, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _08075CF2 - movs r0, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - movs r4, 0x1 - lsls r4, r0 -_08075CF2: - cmp r5, 0 - beq _08075D1E - movs r0, 0x2 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _08075D1E - movs r0, 0x2 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - orrs r4, r0 -_08075D1E: - cmp r6, 0 - beq _08075D4A - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _08075D4A - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - orrs r4, r0 -_08075D4A: - cmp r7, 0 - beq _08075D76 - movs r0, 0x3 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _08075D76 - movs r0, 0x3 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - orrs r4, r0 -_08075D76: - adds r0, r4, 0 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8075CB8 - - thumb_func_start sub_8075D80 -sub_8075D80: @ 8075D80 - lsls r0, 24 - lsrs r0, 24 - bx lr - thumb_func_end sub_8075D80 - - thumb_func_start sub_8075D88 -sub_8075D88: @ 8075D88 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8075D88 - - thumb_func_start sub_8075D9C -sub_8075D9C: @ 8075D9C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08075DDA - ldr r2, _08075DC8 @ =gBattleAnimArgs - movs r3, 0x6 - ldrsh r0, [r2, r3] - movs r1, 0 - cmp r0, 0 - bne _08075DB6 - movs r1, 0x1 -_08075DB6: - movs r3, 0x4 - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _08075DCC - adds r0, r4, 0 - bl sub_8075160 - b _08075DD2 - .align 2, 0 -_08075DC8: .4byte gBattleAnimArgs -_08075DCC: - adds r0, r4, 0 - bl sub_8075114 -_08075DD2: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _08075DEE -_08075DDA: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x30 - ands r0, r1 - cmp r0, 0 - beq _08075DEE - adds r0, r4, 0 - bl move_anim_8074EE0 -_08075DEE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8075D9C - - thumb_func_start sub_8075DF4 -sub_8075DF4: @ 8075DF4 - push {r4-r7,lr} - adds r5, r0, 0 - ldr r6, _08075E6C @ =gBattleAnimArgs - movs r1, 0xA - ldrsh r0, [r6, r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0 - cmp r0, 0 - bne _08075E0C - movs r1, 0x1 -_08075E0C: - ldrb r0, [r6, 0xA] - movs r7, 0x1 - cmp r0, 0 - bne _08075E16 - movs r7, 0x3 -_08075E16: - adds r0, r5, 0 - bl sub_8075160 - ldr r0, _08075E70 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08075E30 - ldrh r0, [r6, 0x4] - negs r0, r0 - strh r0, [r6, 0x4] -_08075E30: - ldrh r0, [r6, 0x8] - strh r0, [r5, 0x2E] - ldr r4, _08075E74 @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x4] - adds r0, r1 - strh r0, [r5, 0x32] - ldrb r0, [r4] - adds r1, r7, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x6] - adds r0, r6 - strh r0, [r5, 0x36] - ldr r0, _08075E78 @ =sub_8075590 - str r0, [r5, 0x1C] - ldr r1, _08075E7C @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08075E6C: .4byte gBattleAnimArgs -_08075E70: .4byte gBattleAnimAttacker -_08075E74: .4byte gBattleAnimTarget -_08075E78: .4byte sub_8075590 -_08075E7C: .4byte DestroyAnimSprite - thumb_func_end sub_8075DF4 - - thumb_func_start sub_8075E80 -sub_8075E80: @ 8075E80 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x1 - bl sub_8075160 - ldr r0, _08075EE0 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08075EA0 - ldr r1, _08075EE4 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_08075EA0: - ldr r4, _08075EE4 @ =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x2E] - ldr r5, _08075EE8 @ =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r6, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x6] - adds r0, r1 - strh r0, [r6, 0x36] - ldrh r0, [r4, 0xA] - strh r0, [r6, 0x38] - adds r0, r6, 0 - bl sub_8075068 - ldr r0, _08075EEC @ =sub_8075EF0 - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08075EE0: .4byte gBattleAnimAttacker -_08075EE4: .4byte gBattleAnimArgs -_08075EE8: .4byte gBattleAnimTarget -_08075EEC: .4byte sub_8075EF0 - thumb_func_end sub_8075E80 - - thumb_func_start sub_8075EF0 -sub_8075EF0: @ 8075EF0 - push {r4,lr} - adds r4, r0, 0 - bl AnimateBallThrow - lsls r0, 24 - cmp r0, 0 - beq _08075F04 - adds r0, r4, 0 - bl DestroyAnimSprite -_08075F04: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8075EF0 - - thumb_func_start sub_8075F0C -sub_8075F0C: @ 8075F0C - push {r4-r7,lr} - adds r5, r0, 0 - ldr r0, _08075F20 @ =gBattleAnimArgs - movs r2, 0xC - ldrsh r1, [r0, r2] - cmp r1, 0 - bne _08075F24 - movs r4, 0x1 - movs r7, 0x3 - b _08075F28 - .align 2, 0 -_08075F20: .4byte gBattleAnimArgs -_08075F24: - movs r4, 0 - movs r7, 0x1 -_08075F28: - movs r1, 0xA - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08075F40 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8075160 - ldr r0, _08075F3C @ =gBattleAnimAttacker - b _08075F4A - .align 2, 0 -_08075F3C: .4byte gBattleAnimAttacker -_08075F40: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8075114 - ldr r0, _08075FA8 @ =gBattleAnimTarget -_08075F4A: - ldrb r6, [r0] - ldr r0, _08075FAC @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08075F62 - ldr r1, _08075FB0 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_08075F62: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8075114 - ldr r4, _08075FB0 @ =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x2E] - adds r0, r6, 0 - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r4, 0x4] - adds r0, r2 - strh r0, [r5, 0x32] - adds r0, r6, 0 - adds r1, r7, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x6] - adds r0, r4 - strh r0, [r5, 0x36] - ldr r0, _08075FB4 @ =sub_8075590 - str r0, [r5, 0x1C] - ldr r1, _08075FB8 @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08075FA8: .4byte gBattleAnimTarget -_08075FAC: .4byte gBattleAnimAttacker -_08075FB0: .4byte gBattleAnimArgs -_08075FB4: .4byte sub_8075590 -_08075FB8: .4byte DestroyAnimSprite - thumb_func_end sub_8075F0C - - thumb_func_start duplicate_obj_of_side_rel2move_in_transparent_mode -duplicate_obj_of_side_rel2move_in_transparent_mode: @ 8075FBC - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xFF - beq _08076026 - movs r6, 0 - ldr r2, _08076018 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r1, r0, 2 -_08075FD8: - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r4, r0, r2 - adds r5, r4, 0 - adds r5, 0x3E - ldrb r0, [r5] - lsls r0, 31 - cmp r0, 0 - bne _0807601C - adds r0, r4, 0 - adds r1, r2 - movs r2, 0x44 - bl memcpy - ldrb r1, [r4, 0x1] - movs r2, 0xD - negs r2, r2 - adds r0, r2, 0 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4, 0x1] - ldrb r0, [r5] - adds r2, 0x8 - adds r1, r2, 0 - ands r0, r1 - strb r0, [r5] - lsls r0, r6, 16 - asrs r0, 16 - b _0807602A - .align 2, 0 -_08076018: .4byte gSprites -_0807601C: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x3F - bls _08075FD8 -_08076026: - movs r0, 0x1 - negs r0, r0 -_0807602A: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end duplicate_obj_of_side_rel2move_in_transparent_mode - - thumb_func_start obj_delete_but_dont_free_vram -obj_delete_but_dont_free_vram: @ 8076030 - push {lr} - adds r3, r0, 0 - adds r3, 0x3F - ldrb r1, [r3] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r3] - bl DestroySprite - pop {r0} - bx r0 - thumb_func_end obj_delete_but_dont_free_vram - - thumb_func_start sub_8076048 -sub_8076048: @ 8076048 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0 - movs r3, 0 - ldr r2, _080760C0 @ =gBattleAnimArgs - movs r0, 0x4 - ldrsh r1, [r2, r0] - movs r4, 0 - ldrsh r0, [r2, r4] - cmp r1, r0 - ble _08076062 - movs r3, 0x1 -_08076062: - cmp r1, r0 - bge _08076068 - ldr r3, _080760C4 @ =0x0000ffff -_08076068: - movs r0, 0x6 - ldrsh r1, [r2, r0] - movs r4, 0x2 - ldrsh r0, [r2, r4] - cmp r1, r0 - ble _08076076 - movs r6, 0x1 -_08076076: - cmp r1, r0 - bge _0807607C - ldr r6, _080760C4 @ =0x0000ffff -_0807607C: - ldr r0, _080760C8 @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - movs r1, 0 - strh r1, [r4, 0x8] - ldrh r0, [r2, 0x8] - strh r0, [r4, 0xA] - strh r1, [r4, 0xC] - ldrh r0, [r2] - strh r0, [r4, 0xE] - ldrh r0, [r2, 0x2] - strh r0, [r4, 0x10] - strh r3, [r4, 0x12] - strh r6, [r4, 0x14] - ldrh r0, [r2, 0x4] - strh r0, [r4, 0x16] - ldrh r0, [r2, 0x6] - strh r0, [r4, 0x18] - ldrh r1, [r2, 0x2] - lsls r1, 8 - ldrh r0, [r2] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - ldr r0, _080760CC @ =sub_80760D0 - str r0, [r4] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080760C0: .4byte gBattleAnimArgs -_080760C4: .4byte 0x0000ffff -_080760C8: .4byte gTasks -_080760CC: .4byte sub_80760D0 - thumb_func_end sub_8076048 - - thumb_func_start sub_80760D0 -sub_80760D0: @ 80760D0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0807611C @ =gTasks - adds r4, r0, r1 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - movs r2, 0xA - ldrsh r1, [r4, r2] - cmp r0, r1 - ble _08076164 - movs r0, 0 - strh r0, [r4, 0x8] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08076120 - ldrh r2, [r4, 0xE] - movs r3, 0xE - ldrsh r1, [r4, r3] - movs r3, 0x16 - ldrsh r0, [r4, r3] - cmp r1, r0 - beq _08076134 - ldrh r0, [r4, 0x12] - adds r0, r2, r0 - strh r0, [r4, 0xE] - b _08076134 - .align 2, 0 -_0807611C: .4byte gTasks -_08076120: - ldrh r2, [r4, 0x10] - movs r0, 0x10 - ldrsh r1, [r4, r0] - movs r3, 0x18 - ldrsh r0, [r4, r3] - cmp r1, r0 - beq _08076134 - ldrh r0, [r4, 0x14] - adds r0, r2, r0 - strh r0, [r4, 0x10] -_08076134: - ldrh r1, [r4, 0x10] - lsls r1, 8 - ldrh r0, [r4, 0xE] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _08076164 - movs r3, 0x10 - ldrsh r1, [r4, r3] - movs r2, 0x18 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _08076164 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_08076164: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80760D0 - - thumb_func_start sub_807616C -sub_807616C: @ 807616C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0807618C @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xFF - bne _08076190 - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080761B6 - .align 2, 0 -_0807618C: .4byte gBattleAnimArgs -_08076190: - ldr r1, _080761BC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r2, _080761C0 @ =gSprites - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x5] - lsrs r1, 4 - lsls r1, 4 - ldr r3, _080761C4 @ =0x00000101 - adds r2, r3, 0 - adds r1, r2 - strh r1, [r0, 0x8] - bl sub_80761C8 -_080761B6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080761BC: .4byte gTasks -_080761C0: .4byte gSprites -_080761C4: .4byte 0x00000101 - thumb_func_end sub_807616C - - thumb_func_start sub_80761C8 -sub_80761C8: @ 80761C8 - ldr r3, _080761E8 @ =gBattleAnimArgs - ldrh r1, [r3, 0x2] - movs r2, 0 - strh r1, [r0, 0xA] - strh r2, [r0, 0xC] - ldrh r1, [r3, 0x4] - strh r1, [r0, 0xE] - strh r2, [r0, 0x10] - ldrh r1, [r3, 0x6] - strh r1, [r0, 0x12] - strh r2, [r0, 0x14] - ldrh r1, [r3, 0x8] - strh r1, [r0, 0x16] - ldr r1, _080761EC @ =sub_80761F0 - str r1, [r0] - bx lr - .align 2, 0 -_080761E8: .4byte gBattleAnimArgs -_080761EC: .4byte sub_80761F0 - thumb_func_end sub_80761C8 - - thumb_func_start sub_80761F0 -sub_80761F0: @ 80761F0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08076248 @ =gTasks - adds r4, r0, r1 - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x12 - ldrsh r1, [r4, r2] - cmp r0, r1 - blt _08076280 - movs r0, 0 - strh r0, [r4, 0x10] - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0807624C - ldrh r2, [r4, 0xC] - adds r2, 0x1 - strh r2, [r4, 0xC] - ldrh r0, [r4, 0x8] - lsls r2, 24 - lsrs r2, 24 - ldrh r3, [r4, 0xA] - movs r1, 0xF - bl BlendPalette - movs r2, 0xC - ldrsh r1, [r4, r2] - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _08076280 - movs r0, 0x1 - strh r0, [r4, 0x14] - b _08076280 - .align 2, 0 -_08076248: .4byte gTasks -_0807624C: - ldrh r2, [r4, 0xC] - subs r2, 0x1 - strh r2, [r4, 0xC] - ldrh r0, [r4, 0x8] - lsls r2, 24 - lsrs r2, 24 - ldrh r3, [r4, 0xA] - movs r1, 0xF - bl BlendPalette - movs r0, 0xC - ldrsh r1, [r4, r0] - cmp r1, 0 - bne _08076280 - ldrh r0, [r4, 0x16] - subs r0, 0x1 - strh r0, [r4, 0x16] - lsls r0, 16 - cmp r0, 0 - beq _0807627A - strh r1, [r4, 0x10] - strh r1, [r4, 0x14] - b _08076280 -_0807627A: - adds r0, r5, 0 - bl DestroyAnimVisualTask -_08076280: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80761F0 - - thumb_func_start sub_8076288 -sub_8076288: @ 8076288 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080762A8 @ =gBattleAnimArgs - ldrh r0, [r0] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - bne _080762AC - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080762C2 - .align 2, 0 -_080762A8: .4byte gBattleAnimArgs -_080762AC: - ldr r1, _080762C8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - lsls r1, r2, 4 - ldr r2, _080762CC @ =0x00000101 - adds r1, r2 - strh r1, [r0, 0x8] - bl sub_80761C8 -_080762C2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080762C8: .4byte gTasks -_080762CC: .4byte 0x00000101 - thumb_func_end sub_8076288 - - thumb_func_start sub_80762D0 -sub_80762D0: @ 80762D0 - push {r4,lr} - adds r3, r0, 0 - adds r4, r1, 0 - lsls r4, 24 - lsrs r4, 24 - movs r1, 0 - strh r1, [r3, 0x16] - strh r1, [r3, 0x18] - strh r1, [r3, 0x1A] - strh r4, [r3, 0x26] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r3, 0x1C] - strh r0, [r3, 0x1E] - strh r1, [r3, 0x20] - adds r0, r3, 0 - adds r0, 0x22 - adds r3, 0x24 - adds r1, r3, 0 - bl sub_80765C0 - adds r0, r4, 0 - movs r1, 0 - bl sub_80758E0 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80762D0 - - thumb_func_start sub_8076308 -sub_8076308: @ 8076308 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r5, _080763A8 @ =gUnknown_2037F28 - movs r1, 0x22 - ldrsh r0, [r4, r1] - movs r2, 0x24 - ldrsh r1, [r4, r2] - bl sub_80765C8 - movs r3, 0x16 - ldrsh r1, [r4, r3] - lsls r1, 3 - adds r1, r0, r1 - str r1, [r5] - movs r6, 0 - ldrsh r2, [r1, r6] - ldr r0, _080763AC @ =0x00007ffe - cmp r2, r0 - beq _080763B0 - cmp r2, r0 - bgt _08076410 - subs r0, 0x1 - cmp r2, r0 - beq _080763B6 - ldrb r0, [r1, 0x5] - cmp r0, 0 - bne _08076356 - ldrh r0, [r1] - strh r0, [r4, 0x1C] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x1E] - ldrb r0, [r1, 0x4] - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x16] - adds r0, 0x1 - strh r0, [r4, 0x16] - adds r0, r1, 0 - adds r0, 0x8 - str r0, [r5] -_08076356: - ldr r1, [r5] - ldrh r0, [r1] - ldrh r2, [r4, 0x1C] - adds r0, r2 - strh r0, [r4, 0x1C] - ldrh r0, [r1, 0x2] - ldrh r3, [r4, 0x1E] - adds r0, r3 - strh r0, [r4, 0x1E] - ldrh r0, [r4, 0x20] - ldrb r1, [r1, 0x4] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r6, 0x1C - ldrsh r1, [r4, r6] - movs r3, 0x1E - ldrsh r2, [r4, r3] - ldrh r3, [r4, 0x20] - bl obj_id_set_rotscale - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl sub_8076440 - ldrh r0, [r4, 0x18] - adds r0, 0x1 - strh r0, [r4, 0x18] - lsls r0, 16 - asrs r0, 16 - ldr r1, [r5] - ldrb r1, [r1, 0x5] - cmp r0, r1 - blt _08076436 - movs r0, 0 - strh r0, [r4, 0x18] - b _08076408 - .align 2, 0 -_080763A8: .4byte gUnknown_2037F28 -_080763AC: .4byte 0x00007ffe -_080763B0: - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x16] - b _08076436 -_080763B6: - ldrh r2, [r1, 0x2] - movs r6, 0x2 - ldrsh r0, [r1, r6] - cmp r0, 0 - beq _08076408 - ldrh r1, [r4, 0x1A] - movs r3, 0x1A - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _080763D6 - subs r0, r1, 0x1 - strh r0, [r4, 0x1A] - lsls r0, 16 - cmp r0, 0 - bne _080763D8 - b _08076408 -_080763D6: - strh r2, [r4, 0x1A] -_080763D8: - movs r6, 0x16 - ldrsh r0, [r4, r6] - cmp r0, 0 - beq _08076436 - ldr r3, _08076400 @ =gUnknown_2037F28 - ldr r5, _08076404 @ =0x00007ffd -_080763E4: - ldrh r2, [r4, 0x16] - subs r1, r2, 0x1 - strh r1, [r4, 0x16] - ldr r0, [r3] - subs r0, 0x8 - str r0, [r3] - movs r6, 0 - ldrsh r0, [r0, r6] - cmp r0, r5 - beq _08076434 - lsls r0, r1, 16 - cmp r0, 0 - bne _080763E4 - b _08076436 - .align 2, 0 -_08076400: .4byte gUnknown_2037F28 -_08076404: .4byte 0x00007ffd -_08076408: - ldrh r0, [r4, 0x16] - adds r0, 0x1 - strh r0, [r4, 0x16] - b _08076436 -_08076410: - ldr r2, _08076430 @ =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] - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl sub_8075980 - movs r0, 0 - b _08076438 - .align 2, 0 -_08076430: .4byte gSprites -_08076434: - strh r2, [r4, 0x16] -_08076436: - movs r0, 0x1 -_08076438: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8076308 - - thumb_func_start sub_8076440 -sub_8076440: @ 8076440 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_80764EC - lsls r0, 16 - lsrs r0, 15 - movs r1, 0x40 - subs r5, r1, r0 - ldr r1, _0807648C @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r4, r0, r1 - ldrb r1, [r4, 0x3] - lsls r1, 26 - lsrs r1, 27 - lsls r0, r5, 8 - ldr r2, _08076490 @ =gOamMatrices - lsls r1, 3 - adds r1, r2 - movs r2, 0x6 - ldrsh r1, [r1, r2] - bl __divsi3 - cmp r0, 0x80 - ble _0807647C - movs r0, 0x80 -_0807647C: - subs r0, r5, r0 - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x26] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807648C: .4byte gSprites -_08076490: .4byte gOamMatrices - thumb_func_end sub_8076440 - - thumb_func_start sub_8076494 -sub_8076494: @ 8076494 - push {r4,r5,lr} - adds r4, r0, 0 - adds r0, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, 24 - lsrs r0, 24 - bl sub_80764EC - lsls r0, 16 - lsrs r0, 15 - movs r1, 0x40 - subs r5, r1, r0 - ldr r1, _080764E4 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r4, r0, r1 - ldrb r1, [r4, 0x3] - lsls r1, 26 - lsrs r1, 27 - lsls r0, r5, 8 - ldr r2, _080764E8 @ =gOamMatrices - lsls r1, 3 - adds r1, r2 - movs r2, 0x6 - ldrsh r1, [r1, r2] - bl __divsi3 - cmp r0, 0x80 - ble _080764D4 - movs r0, 0x80 -_080764D4: - subs r0, r5, r0 - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x26] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080764E4: .4byte gSprites -_080764E8: .4byte gOamMatrices - thumb_func_end sub_8076494 - - thumb_func_start sub_80764EC -sub_80764EC: @ 80764EC - push {r4-r6,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _08076548 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x2E] - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r1, _0807654C @ =gBattlerSpriteIds - ldr r6, _08076550 @ =gBattlerPartyIndexes -_08076508: - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, r2 - bne _080765AC - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08076568 - ldr r0, _08076554 @ =gUnknown_2024018 - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r5, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _0807655C - lsls r0, r4, 1 - adds r0, r6 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08076558 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - b _0807655E - .align 2, 0 -_08076548: .4byte gSprites -_0807654C: .4byte gBattlerSpriteIds -_08076550: .4byte gBattlerPartyIndexes -_08076554: .4byte gUnknown_2024018 -_08076558: .4byte gPlayerParty -_0807655C: - ldrh r1, [r1, 0x2] -_0807655E: - ldr r0, _08076564 @ =gUnknown_8235E6C - b _080765A0 - .align 2, 0 -_08076564: .4byte gUnknown_8235E6C -_08076568: - ldr r0, _08076594 @ =gUnknown_2024018 - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r5, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _0807659C - lsls r0, r4, 1 - adds r0, r6 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08076598 @ =gEnemyParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - b _0807659E - .align 2, 0 -_08076594: .4byte gUnknown_2024018 -_08076598: .4byte gEnemyParty -_0807659C: - ldrh r1, [r1, 0x2] -_0807659E: - ldr r0, _080765A8 @ =gUnknown_82349CC -_080765A0: - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - b _080765B8 - .align 2, 0 -_080765A8: .4byte gUnknown_82349CC -_080765AC: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _08076508 - movs r0, 0x40 -_080765B8: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80764EC - - thumb_func_start sub_80765C0 -sub_80765C0: @ 80765C0 - strh r2, [r0] - asrs r2, 16 - strh r2, [r1] - bx lr - thumb_func_end sub_80765C0 - - thumb_func_start sub_80765C8 -sub_80765C8: @ 80765C8 - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - orrs r0, r1 - bx lr - thumb_func_end sub_80765C8 - - thumb_func_start sub_80765D4 -sub_80765D4: @ 80765D4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - adds r5, r3, 0 - ldr r0, [sp, 0x14] - ldr r4, [sp, 0x18] - ldr r6, [sp, 0x1C] - lsls r1, 24 - lsrs r1, 24 - lsls r2, 16 - lsrs r2, 16 - lsls r5, 16 - lsrs r5, 16 - lsls r0, 16 - lsrs r0, 16 - lsls r4, 16 - lsrs r4, 16 - lsls r6, 16 - lsrs r6, 16 - mov r3, r8 - strh r6, [r3, 0x18] - strh r1, [r3, 0x26] - strh r2, [r3, 0x1A] - strh r5, [r3, 0x1C] - strh r0, [r3, 0x22] - strh r4, [r3, 0x24] - lsls r0, 16 - asrs r0, 16 - lsls r2, 16 - asrs r2, 16 - subs r0, r2 - adds r1, r6, 0 - bl __divsi3 - mov r1, r8 - strh r0, [r1, 0x1E] - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 16 - subs r4, r5 - adds r0, r4, 0 - adds r1, r6, 0 - bl __divsi3 - mov r3, r8 - strh r0, [r3, 0x20] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80765D4 - - thumb_func_start sub_8076640 -sub_8076640: @ 8076640 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x18] - movs r2, 0x18 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _08076652 - movs r0, 0 - b _080766AE -_08076652: - subs r0, r1, 0x1 - strh r0, [r4, 0x18] - lsls r0, 16 - cmp r0, 0 - beq _0807666C - ldrh r0, [r4, 0x1E] - ldrh r3, [r4, 0x1A] - adds r0, r3 - strh r0, [r4, 0x1A] - ldrh r0, [r4, 0x20] - ldrh r1, [r4, 0x1C] - adds r0, r1 - b _08076672 -_0807666C: - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x1A] - ldrh r0, [r4, 0x24] -_08076672: - strh r0, [r4, 0x1C] - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x1A - ldrsh r1, [r4, r2] - movs r3, 0x1C - ldrsh r2, [r4, r3] - movs r3, 0 - bl obj_id_set_rotscale - movs r0, 0x18 - ldrsh r3, [r4, r0] - cmp r3, 0 - beq _0807669C - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl sub_8076440 - b _080766AC -_0807669C: - ldr r2, _080766B4 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r3, [r0, 0x26] -_080766AC: - ldrb r0, [r4, 0x18] -_080766AE: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080766B4: .4byte gSprites - thumb_func_end sub_8076640 - - thumb_func_start sub_80766B8 -sub_80766B8: @ 80766B8 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080766E4 @ =gUnknown_2037EFE - ldrb r0, [r0] - movs r1, 0 - cmp r0, 0x1E - bls _080766D6 - movs r1, 0x1 - cmp r0, 0x64 - bls _080766D6 - movs r1, 0x3 - cmp r0, 0xC8 - bhi _080766D6 - movs r1, 0x2 -_080766D6: - ldr r0, _080766E8 @ =gBattleAnimArgs - strh r1, [r0, 0xE] - adds r0, r2, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080766E4: .4byte gUnknown_2037EFE -_080766E8: .4byte gBattleAnimArgs - thumb_func_end sub_80766B8 - - thumb_func_start sub_80766EC -sub_80766EC: @ 80766EC - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r4, r0, 24 - adds r7, r4, 0 - ldr r6, _080767E0 @ =gBattleAnimTarget - ldrb r0, [r6] - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _0807672C - ldr r2, _080767E4 @ =gSprites - ldr r1, _080767E8 @ =gBattlerSpriteIds - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x3 - adds r2, r4, 0 - ands r2, r0 - lsls r2, 2 - ldrb r3, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x5] -_0807672C: - ldr r0, _080767EC @ =gBattleAnimAttacker - mov r8, r0 - ldrb r0, [r0] - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _08076764 - ldr r2, _080767E4 @ =gSprites - ldr r1, _080767E8 @ =gBattlerSpriteIds - mov r3, r8 - ldrb r0, [r3] - adds r0, r1 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x3 - adds r2, r4, 0 - ands r2, r0 - lsls r2, 2 - ldrb r3, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x5] -_08076764: - ldrb r0, [r6] - movs r5, 0x2 - eors r0, r5 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _0807679C - ldr r2, _080767E4 @ =gSprites - ldr r1, _080767E8 @ =gBattlerSpriteIds - ldrb r0, [r6] - eors r0, r5 - adds r0, r1 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x3 - adds r2, r4, 0 - ands r2, r0 - lsls r2, 2 - ldrb r3, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x5] -_0807679C: - mov r1, r8 - ldrb r0, [r1] - eors r0, r5 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _080767D4 - ldr r2, _080767E4 @ =gSprites - ldr r1, _080767E8 @ =gBattlerSpriteIds - mov r3, r8 - ldrb r0, [r3] - eors r0, r5 - adds r0, r1 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x3 - ands r7, r0 - lsls r3, r7, 2 - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] -_080767D4: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080767E0: .4byte gBattleAnimTarget -_080767E4: .4byte gSprites -_080767E8: .4byte gBattlerSpriteIds -_080767EC: .4byte gBattleAnimAttacker - thumb_func_end sub_80766EC - - thumb_func_start sub_80767F0 -sub_80767F0: @ 80767F0 - push {r4-r6,lr} - movs r5, 0 - ldr r0, _08076850 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - bge _0807684A - ldr r6, _08076854 @ =gSprites -_080767FE: - lsls r0, r5, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _08076840 - adds r0, r4, 0 - bl sub_807685C - ldr r3, _08076858 @ =gBattlerSpriteIds - adds r3, r5, r3 - ldrb r2, [r3] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r6 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r2, [r0, 0x5] - movs r3, 0xD - negs r3, r3 - adds r1, r3, 0 - ands r2, r1 - movs r1, 0x8 - orrs r2, r1 - strb r2, [r0, 0x5] -_08076840: - adds r5, 0x1 - ldr r0, _08076850 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _080767FE -_0807684A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08076850: .4byte gBattlersCount -_08076854: .4byte gSprites -_08076858: .4byte gBattlerSpriteIds - thumb_func_end sub_80767F0 - - thumb_func_start sub_807685C -sub_807685C: @ 807685C - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1E - cmp r0, 0 - beq _0807687E - movs r1, 0x14 - cmp r0, 0x2 - beq _0807687E - movs r1, 0x32 - cmp r0, 0x1 - bne _0807687E - movs r1, 0x28 -_0807687E: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end sub_807685C - - thumb_func_start sub_8076884 -sub_8076884: @ 8076884 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0807689A - cmp r0, 0x3 - bne _0807689E -_0807689A: - movs r0, 0x2 - b _080768A0 -_0807689E: - movs r0, 0x1 -_080768A0: - movs r1, 0x4 - bl sub_80BC30C - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8076884 - - thumb_func_start sub_80768B0 -sub_80768B0: @ 80768B0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080768C6 - cmp r0, 0x3 - bne _080768CA -_080768C6: - movs r0, 0x2 - b _080768CC -_080768CA: - movs r0, 0x1 -_080768CC: - pop {r1} - bx r1 - thumb_func_end sub_80768B0 - - thumb_func_start sub_80768D0 -sub_80768D0: @ 80768D0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - ldr r4, [sp, 0x30] - ldr r5, [sp, 0x34] - ldr r6, [sp, 0x38] - mov r8, r6 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - lsls r2, 24 - lsrs r7, r2, 24 - lsls r3, 16 - lsrs r3, 16 - mov r10, r3 - lsls r4, 16 - lsrs r4, 16 - str r4, [sp, 0x4] - lsls r5, 24 - lsrs r5, 24 - str r5, [sp, 0x8] - lsls r0, r7, 3 - ldr r1, _080769B0 @ =gUnknown_83AE084 - adds r0, r1 - bl LoadSpriteSheet - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0xC] - ldr r1, _080769B4 @ =gUnknown_83AE054 - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x2] - bl AllocSpritePalette - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _080769B8 @ =gMonSpritesGfxPtr - ldr r0, [r4] - cmp r0, 0 - beq _0807694E - movs r1, 0xBE - lsls r1, 1 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - bne _0807694E - movs r0, 0x80 - lsls r0, 6 - bl AllocZeroed - ldr r1, [r4] - movs r2, 0xBE - lsls r2, 1 - adds r1, r2 - str r0, [r1] -_0807694E: - mov r3, r9 - cmp r3, 0 - bne _080769EC - adds r0, r6, 0 - ldr r1, [sp, 0x3C] - mov r2, r8 - bl GetFrontSpritePalFromSpeciesAndPersonality - lsls r1, r5, 20 - movs r2, 0x80 - lsls r2, 17 - adds r1, r2 - lsrs r1, 16 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r3, [sp, 0x44] - cmp r3, 0x1 - beq _0807699A - ldr r0, [sp, 0x40] - lsls r1, r0, 24 - lsrs r1, 24 - movs r0, 0x5 - bl sub_804455C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0807699A - ldr r0, _080769BC @ =gUnknown_2024018 - ldr r0, [r0] - ldr r1, [r0] - ldr r2, [sp, 0x40] - lsls r0, r2, 2 - adds r0, r1 - ldrh r0, [r0, 0x2] - cmp r0, 0 - beq _080769C4 -_0807699A: - lsls r0, r6, 3 - ldr r1, _080769C0 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _080769B8 @ =gMonSpritesGfxPtr - ldr r1, [r1] - movs r3, 0xBE - lsls r3, 1 - adds r1, r3 - ldr r1, [r1] - movs r2, 0x1 - b _08076A46 - .align 2, 0 -_080769B0: .4byte gUnknown_83AE084 -_080769B4: .4byte gUnknown_83AE054 -_080769B8: .4byte gMonSpritesGfxPtr -_080769BC: .4byte gUnknown_2024018 -_080769C0: .4byte gMonFrontPicTable -_080769C4: - lsls r0, r6, 3 - ldr r1, _080769E4 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _080769E8 @ =gMonSpritesGfxPtr - ldr r1, [r1] - movs r2, 0xBE - lsls r2, 1 - adds r1, r2 - ldr r1, [r1] - movs r2, 0x1 - str r2, [sp] - adds r2, r6, 0 - mov r3, r8 - bl LoadSpecialPokePic - b _08076A7C - .align 2, 0 -_080769E4: .4byte gMonFrontPicTable -_080769E8: .4byte gMonSpritesGfxPtr -_080769EC: - adds r0, r6, 0 - ldr r1, [sp, 0x3C] - mov r2, r8 - bl GetFrontSpritePalFromSpeciesAndPersonality - lsls r1, r5, 20 - movs r3, 0x80 - lsls r3, 17 - adds r1, r3 - lsrs r1, 16 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r0, [sp, 0x44] - cmp r0, 0x1 - beq _08076A32 - ldr r2, [sp, 0x40] - lsls r1, r2, 24 - lsrs r1, 24 - movs r0, 0x5 - bl sub_804455C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08076A32 - ldr r0, _08076A54 @ =gUnknown_2024018 - ldr r0, [r0] - ldr r1, [r0] - ldr r3, [sp, 0x40] - lsls r0, r3, 2 - adds r0, r1 - ldrh r2, [r0, 0x2] - cmp r2, 0 - beq _08076A60 -_08076A32: - lsls r0, r6, 3 - ldr r1, _08076A58 @ =gMonBackPicTable - adds r0, r1 - ldr r1, _08076A5C @ =gMonSpritesGfxPtr - ldr r1, [r1] - movs r2, 0xBE - lsls r2, 1 - adds r1, r2 - ldr r1, [r1] - movs r2, 0 -_08076A46: - str r2, [sp] - adds r2, r6, 0 - mov r3, r8 - bl LoadSpecialPokePic_DontHandleDeoxys - b _08076A7C - .align 2, 0 -_08076A54: .4byte gUnknown_2024018 -_08076A58: .4byte gMonBackPicTable -_08076A5C: .4byte gMonSpritesGfxPtr -_08076A60: - lsls r0, r6, 3 - ldr r1, _08076AC8 @ =gMonBackPicTable - adds r0, r1 - ldr r1, _08076ACC @ =gMonSpritesGfxPtr - ldr r1, [r1] - movs r3, 0xBE - lsls r3, 1 - adds r1, r3 - ldr r1, [r1] - str r2, [sp] - adds r2, r6, 0 - mov r3, r8 - bl LoadSpecialPokePic -_08076A7C: - ldr r5, _08076ACC @ =gMonSpritesGfxPtr - ldr r0, [r5] - movs r4, 0xBE - lsls r4, 1 - adds r0, r4 - ldr r0, [r0] - ldr r2, [sp, 0xC] - lsls r1, r2, 5 - ldr r3, _08076AD0 @ =0x06010000 - adds r1, r3 - movs r2, 0x80 - lsls r2, 4 - movs r3, 0x1 - bl RequestDma3Copy - ldr r0, [r5] - adds r0, r4 - ldr r0, [r0] - bl Free - ldr r0, [r5] - adds r0, r4 - movs r1, 0 - str r1, [r0] - mov r0, r9 - cmp r0, 0 - bne _08076ADC - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 3 - ldr r1, _08076AD4 @ =gUnknown_83AE054 - adds r0, r1 - mov r2, r10 - lsls r1, r2, 16 - asrs r1, 16 - ldr r3, _08076AD8 @ =gUnknown_82349CC - b _08076AEE - .align 2, 0 -_08076AC8: .4byte gMonBackPicTable -_08076ACC: .4byte gMonSpritesGfxPtr -_08076AD0: .4byte 0x06010000 -_08076AD4: .4byte gUnknown_83AE054 -_08076AD8: .4byte gUnknown_82349CC -_08076ADC: - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 3 - ldr r1, _08076B18 @ =gUnknown_83AE054 - adds r0, r1 - mov r2, r10 - lsls r1, r2, 16 - asrs r1, 16 - ldr r3, _08076B1C @ =gUnknown_8235E6C -_08076AEE: - lsls r2, r6, 2 - adds r2, r3 - ldrb r2, [r2, 0x1] - ldr r3, [sp, 0x4] - adds r2, r3 - lsls r2, 16 - asrs r2, 16 - ldr r3, [sp, 0x8] - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08076B18: .4byte gUnknown_83AE054 -_08076B1C: .4byte gUnknown_8235E6C - thumb_func_end sub_80768D0 - - thumb_func_start sub_8076B20 -sub_8076B20: @ 8076B20 - push {lr} - bl DestroySpriteAndFreeResources - pop {r0} - bx r0 - thumb_func_end sub_8076B20 - - thumb_func_start sub_8076B2C -sub_8076B2C: @ 8076B2C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08076C08 - ldr r0, _08076B88 @ =gUnknown_2024018 - ldr r0, [r0] - ldr r0, [r0] - mov r1, r8 - lsls r2, r1, 2 - adds r1, r2, r0 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _08076B94 - ldr r0, _08076B8C @ =gBattlerPartyIndexes - mov r1, r8 - lsls r4, r1, 1 - adds r4, r0 - ldrh r0, [r4] - movs r6, 0x64 - muls r0, r6 - ldr r5, _08076B90 @ =gPlayerParty - adds r0, r5 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r7, r0, 16 - ldrh r0, [r4] - muls r0, r6 - adds r0, r5 - movs r1, 0 - bl GetMonData - adds r2, r0, 0 - b _08076B9C - .align 2, 0 -_08076B88: .4byte gUnknown_2024018 -_08076B8C: .4byte gBattlerPartyIndexes -_08076B90: .4byte gPlayerParty -_08076B94: - ldrh r7, [r1, 0x2] - ldr r0, _08076BD4 @ =gUnknown_2024008 - adds r0, r2, r0 - ldr r2, [r0] -_08076B9C: - cmp r7, 0xC9 - bne _08076BEC - movs r0, 0xC0 - lsls r0, 18 - ands r0, r2 - lsrs r0, 18 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r2 - lsrs r1, 12 - orrs r0, r1 - movs r1, 0xC0 - lsls r1, 2 - ands r1, r2 - lsrs r1, 6 - orrs r0, r1 - movs r1, 0x3 - ands r1, r2 - orrs r0, r1 - movs r1, 0x1C - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _08076BD8 - movs r0, 0xC9 - b _08076BE2 - .align 2, 0 -_08076BD4: .4byte gUnknown_2024008 -_08076BD8: - movs r1, 0xCE - lsls r1, 1 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 -_08076BE2: - lsls r1, r0, 2 - ldr r0, _08076BE8 @ =gUnknown_8235E6C - b _08076CDC - .align 2, 0 -_08076BE8: .4byte gUnknown_8235E6C -_08076BEC: - movs r0, 0xCE - lsls r0, 1 - cmp r7, r0 - bls _08076BFC - ldr r4, _08076BF8 @ =gUnknown_8235E6C - b _08076CDE - .align 2, 0 -_08076BF8: .4byte gUnknown_8235E6C -_08076BFC: - lsls r1, r7, 2 - ldr r0, _08076C04 @ =gUnknown_8235E6C - b _08076CDC - .align 2, 0 -_08076C04: .4byte gUnknown_8235E6C -_08076C08: - ldr r0, _08076C48 @ =gUnknown_2024018 - ldr r0, [r0] - ldr r0, [r0] - mov r1, r8 - lsls r2, r1, 2 - adds r1, r2, r0 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _08076C54 - ldr r0, _08076C4C @ =gBattlerPartyIndexes - mov r1, r8 - lsls r4, r1, 1 - adds r4, r0 - ldrh r0, [r4] - movs r6, 0x64 - muls r0, r6 - ldr r5, _08076C50 @ =gEnemyParty - adds r0, r5 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r7, r0, 16 - ldrh r0, [r4] - muls r0, r6 - adds r0, r5 - movs r1, 0 - bl GetMonData - adds r2, r0, 0 - b _08076C5C - .align 2, 0 -_08076C48: .4byte gUnknown_2024018 -_08076C4C: .4byte gBattlerPartyIndexes -_08076C50: .4byte gEnemyParty -_08076C54: - ldrh r7, [r1, 0x2] - ldr r0, _08076C94 @ =gUnknown_2024008 - adds r0, r2, r0 - ldr r2, [r0] -_08076C5C: - cmp r7, 0xC9 - bne _08076CA6 - movs r0, 0xC0 - lsls r0, 18 - ands r0, r2 - lsrs r0, 18 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r2 - lsrs r1, 12 - orrs r0, r1 - movs r1, 0xC0 - lsls r1, 2 - ands r1, r2 - lsrs r1, 6 - orrs r0, r1 - movs r1, 0x3 - ands r1, r2 - orrs r0, r1 - movs r1, 0x1C - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _08076C98 - movs r0, 0xC9 - b _08076CA2 - .align 2, 0 -_08076C94: .4byte gUnknown_2024008 -_08076C98: - movs r1, 0xCE - lsls r1, 1 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 -_08076CA2: - lsls r1, r0, 2 - b _08076CDA -_08076CA6: - ldr r0, _08076CBC @ =0x00000181 - cmp r7, r0 - bne _08076CC8 - ldr r0, _08076CC0 @ =gBattleMonForms - add r0, r8 - ldrb r0, [r0] - lsls r0, 2 - ldr r1, _08076CC4 @ =gUnknown_83AE03C - adds r4, r0, r1 - b _08076CDE - .align 2, 0 -_08076CBC: .4byte 0x00000181 -_08076CC0: .4byte gBattleMonForms -_08076CC4: .4byte gUnknown_83AE03C -_08076CC8: - movs r0, 0xCE - lsls r0, 1 - cmp r7, r0 - bls _08076CD8 - ldr r4, _08076CD4 @ =gUnknown_82349CC - b _08076CDE - .align 2, 0 -_08076CD4: .4byte gUnknown_82349CC -_08076CD8: - lsls r1, r7, 2 -_08076CDA: - ldr r0, _08076CF0 @ =gUnknown_82349CC -_08076CDC: - adds r4, r1, r0 -_08076CDE: - mov r0, r9 - cmp r0, 0x6 - bhi _08076D8E - lsls r0, 2 - ldr r1, _08076CF4 @ =_08076CF8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08076CF0: .4byte gUnknown_82349CC -_08076CF4: .4byte _08076CF8 - .align 2, 0 -_08076CF8: - .4byte _08076D14 - .4byte _08076D1E - .4byte _08076D4A - .4byte _08076D62 - .4byte _08076D26 - .4byte _08076D38 - .4byte _08076D7A -_08076D14: - ldrb r1, [r4] - movs r0, 0xF - ands r0, r1 - lsls r0, 3 - b _08076D90 -_08076D1E: - ldrb r0, [r4] - lsrs r0, 4 - lsls r0, 3 - b _08076D90 -_08076D26: - mov r0, r8 - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r4] - lsrs r1, 4 - b _08076D5C -_08076D38: - mov r0, r8 - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r4] - lsrs r1, 4 - b _08076D74 -_08076D4A: - mov r0, r8 - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrb r2, [r4] - movs r1, 0xF - ands r1, r2 -_08076D5C: - lsls r1, 2 - subs r0, r1 - b _08076D90 -_08076D62: - mov r0, r8 - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrb r2, [r4] - movs r1, 0xF - ands r1, r2 -_08076D74: - lsls r1, 2 - adds r0, r1 - b _08076D90 -_08076D7A: - mov r0, r8 - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1F - ldrb r1, [r4, 0x1] - subs r0, r1 - b _08076D90 -_08076D8E: - movs r0, 0 -_08076D90: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8076B2C - - thumb_func_start sub_8076D9C -sub_8076D9C: @ 8076D9C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r9, r2 - mov r10, r3 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - cmp r1, 0 - bne _08076DBA - movs r5, 0 - movs r6, 0x1 - b _08076DBE -_08076DBA: - movs r5, 0x2 - movs r6, 0x3 -_08076DBE: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r7, r0, 24 - bl sub_8075290 - lsls r0, 24 - cmp r0, 0 - beq _08076E06 - movs r0, 0x2 - eors r4, r0 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_8074480 - lsls r0, 24 - lsrs r3, r0, 24 - mov r0, r8 - lsls r1, r0, 16 - lsls r2, r7, 16 - b _08076E12 -_08076E06: - mov r0, r8 - lsls r1, r0, 16 - lsrs r5, r1, 16 - lsls r0, r7, 16 - lsrs r3, r0, 16 - adds r2, r0, 0 -_08076E12: - asrs r0, r1, 16 - adds r0, r5 - asrs r0, 1 - mov r1, r9 - strh r0, [r1] - asrs r0, r2, 16 - adds r0, r3 - asrs r0, 1 - mov r1, r10 - strh r0, [r1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8076D9C - - thumb_func_start sub_8076E34 -sub_8076E34: @ 8076E34 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x4 - lsls r6, r1, 24 - lsrs r6, 24 - ldr r0, _08076ECC @ =SpriteCallbackDummy - mov r10, r0 - bl CreateInvisibleSpriteWithCallback - mov r8, r0 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _08076ED0 @ =gSprites - mov r9, r0 - mov r0, r8 - lsls r3, r0, 4 - add r3, r8 - lsls r3, 2 - mov r0, r9 - adds r5, r3, r0 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - add r4, r9 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x44 - str r3, [sp] - bl memcpy - adds r2, r5, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - ldrb r2, [r5, 0x5] - movs r1, 0xD - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - strb r0, [r5, 0x5] - ldrb r0, [r5, 0x1] - ands r1, r0 - movs r0, 0x8 - orrs r1, r0 - strb r1, [r5, 0x1] - ldrh r1, [r4, 0x4] - lsls r1, 22 - lsrs r1, 22 - ldrh r2, [r5, 0x4] - ldr r0, _08076ED4 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - movs r0, 0x1C - add r9, r0 - ldr r3, [sp] - add r3, r9 - mov r0, r10 - str r0, [r3] - mov r0, r8 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08076ECC: .4byte SpriteCallbackDummy -_08076ED0: .4byte gSprites -_08076ED4: .4byte 0xfffffc00 - thumb_func_end sub_8076E34 - - thumb_func_start sub_8076ED8 -sub_8076ED8: @ 8076ED8 - push {r4,lr} - adds r4, r0, 0 - bl sub_8074FCC - ldr r0, _08076F10 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08076F18 - ldr r2, _08076F14 @ =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x6] - negs r0, r0 - strh r0, [r2, 0x6] - adds r3, r4, 0 - adds r3, 0x3F - ldrb r0, [r3] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r3] - adds r1, r2, 0 - b _08076F22 - .align 2, 0 -_08076F10: .4byte gBattleAnimAttacker -_08076F14: .4byte gBattleAnimArgs -_08076F18: - ldr r1, _08076F4C @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] -_08076F22: - ldrh r0, [r1, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x34] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x38] - ldr r1, _08076F50 @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _08076F54 @ =sub_8074E70 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08076F4C: .4byte gBattleAnimArgs -_08076F50: .4byte move_anim_8074EE0 -_08076F54: .4byte sub_8074E70 - thumb_func_end sub_8076ED8 - - thumb_func_start sub_8076F58 -sub_8076F58: @ 8076F58 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _08076F80 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08076F88 - ldr r2, _08076F84 @ =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - movs r1, 0x6 - ldrsh r0, [r2, r1] - negs r0, r0 - strh r0, [r2, 0x6] - adds r1, r2, 0 - b _08076F92 - .align 2, 0 -_08076F80: .4byte gBattleAnimAttacker -_08076F84: .4byte gBattleAnimArgs -_08076F88: - ldr r1, _08076FC4 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] -_08076F92: - ldrh r0, [r1, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x34] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x38] - ldrb r1, [r1, 0xC] - adds r0, r4, 0 - bl StartSpriteAnim - ldr r1, _08076FC8 @ =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _08076FCC @ =sub_8074E70 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08076FC4: .4byte gBattleAnimArgs -_08076FC8: .4byte move_anim_8074EE0 -_08076FCC: .4byte sub_8074E70 - thumb_func_end sub_8076F58 - - thumb_func_start sub_8076FD0 -sub_8076FD0: @ 8076FD0 - push {r4,lr} - adds r4, r0, 0 - bl sub_8074FCC - ldr r0, _08076FF4 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08076FFC - ldr r0, _08076FF8 @ =gBattleAnimArgs - ldrh r1, [r4, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r4, 0x20] - b _08077008 - .align 2, 0 -_08076FF4: .4byte gBattleAnimAttacker -_08076FF8: .4byte gBattleAnimArgs -_08076FFC: - ldr r1, _08077024 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - adds r0, r1, 0 -_08077008: - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _08077028 @ =sub_8074F6C - str r0, [r4, 0x1C] - ldr r1, _0807702C @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08077024: .4byte gBattleAnimArgs -_08077028: .4byte sub_8074F6C -_0807702C: .4byte DestroyAnimSprite - thumb_func_end sub_8076FD0 - - thumb_func_start sub_8077030 -sub_8077030: @ 8077030 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080770C4 @ =gTasks - adds r5, r1, r0 - movs r0, 0 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - movs r6, 0 - strh r0, [r5, 0x8] - ldr r7, _080770C8 @ =gBattleAnimAttacker - ldrb r0, [r7] - bl GetBattlerSide - lsls r0, 24 - movs r1, 0x8 - cmp r0, 0 - beq _08077064 - movs r0, 0x8 - negs r0, r0 - adds r1, r0, 0 -_08077064: - strh r1, [r5, 0xA] - strh r6, [r5, 0xC] - strh r6, [r5, 0xE] - ldr r4, _080770CC @ =gSprites - movs r0, 0x8 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x24] - ldrh r2, [r5, 0x8] - subs r1, r2 - strh r1, [r0, 0x24] - ldr r0, _080770D0 @ =0x00002771 - bl AllocSpritePalette - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x10] - strh r6, [r5, 0x12] - movs r1, 0x10 - ldrsh r0, [r5, r1] - adds r0, 0x10 - lsls r0, 20 - lsrs r6, r0, 16 - movs r0, 0x8 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - lsls r4, r0, 4 - ldrb r0, [r7] - bl sub_807685C - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x14] - cmp r0, 0x14 - beq _080770C0 - cmp r0, 0x28 - bne _080770D4 -_080770C0: - movs r0, 0x2 - b _080770D6 - .align 2, 0 -_080770C4: .4byte gTasks -_080770C8: .4byte gBattleAnimAttacker -_080770CC: .4byte gSprites -_080770D0: .4byte 0x00002771 -_080770D4: - movs r0, 0x3 -_080770D6: - strh r0, [r5, 0x14] - lsls r0, r4, 1 - ldr r1, _08077104 @ =gPlttBufferUnfaded - adds r0, r1 - lsls r1, r6, 1 - ldr r2, _08077108 @ =gPlttBufferFaded - adds r1, r2 - ldr r2, _0807710C @ =0x04000008 - bl CpuSet - ldr r0, _08077110 @ =gBattleAnimArgs - ldrb r2, [r0, 0x2] - ldrh r3, [r0] - adds r0, r6, 0 - movs r1, 0x10 - bl BlendPalette - ldr r0, _08077114 @ =sub_8077118 - str r0, [r5] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08077104: .4byte gPlttBufferUnfaded -_08077108: .4byte gPlttBufferFaded -_0807710C: .4byte 0x04000008 -_08077110: .4byte gBattleAnimArgs -_08077114: .4byte sub_8077118 - thumb_func_end sub_8077030 - - thumb_func_start sub_8077118 -sub_8077118: @ 8077118 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0807713C @ =gTasks - adds r4, r0, r1 - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _0807717C - cmp r0, 0x1 - bgt _08077140 - cmp r0, 0 - beq _08077146 - b _080771D8 - .align 2, 0 -_0807713C: .4byte gTasks -_08077140: - cmp r0, 0x2 - beq _080771C4 - b _080771D8 -_08077146: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80771E4 - ldr r2, _08077178 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0xA] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - ldrh r1, [r4, 0xE] - adds r0, r1, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080771D8 - strh r1, [r4, 0xE] - b _080771B6 - .align 2, 0 -_08077178: .4byte gSprites -_0807717C: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80771E4 - ldr r3, _080771C0 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x24] - ldrh r2, [r4, 0xA] - subs r1, r2 - strh r1, [r0, 0x24] - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0 - bne _080771D8 - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - strh r2, [r1, 0x24] -_080771B6: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - b _080771D8 - .align 2, 0 -_080771C0: .4byte gSprites -_080771C4: - movs r2, 0x12 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080771D8 - ldr r0, _080771E0 @ =0x00002771 - bl FreeSpritePaletteByTag - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080771D8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080771E0: .4byte 0x00002771 - thumb_func_end sub_8077118 - - thumb_func_start sub_80771E4 -sub_80771E4: @ 80771E4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - movs r0, 0 - bl duplicate_obj_of_side_rel2move_in_transparent_mode - lsls r0, 16 - lsrs r7, r0, 16 - asrs r0, 16 - cmp r0, 0 - blt _08077254 - ldr r5, _08077260 @ =gSprites - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - adds r3, r4, r5 - movs r0, 0x3 - ldrb r1, [r6, 0x14] - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x5] - ldrb r1, [r6, 0x10] - lsls r1, 4 - movs r2, 0xF - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x5] - movs r0, 0x8 - strh r0, [r3, 0x2E] - mov r0, r8 - strh r0, [r3, 0x30] - strh r7, [r3, 0x32] - movs r0, 0x8 - ldrsh r1, [r6, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r0, [r0, 0x24] - strh r0, [r3, 0x24] - adds r5, 0x1C - adds r4, r5 - ldr r0, _08077264 @ =sub_8077268 - str r0, [r4] - ldrh r0, [r6, 0x12] - adds r0, 0x1 - strh r0, [r6, 0x12] -_08077254: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08077260: .4byte gSprites -_08077264: .4byte sub_8077268 - thumb_func_end sub_80771E4 - - thumb_func_start sub_8077268 -sub_8077268: @ 8077268 - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - subs r0, 0x1 - strh r0, [r3, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _08077292 - ldr r2, _08077298 @ =gTasks - movs r0, 0x30 - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0x12] - subs r1, 0x1 - strh r1, [r0, 0x12] - adds r0, r3, 0 - bl obj_delete_but_dont_free_vram -_08077292: - pop {r0} - bx r0 - .align 2, 0 -_08077298: .4byte gTasks - thumb_func_end sub_8077268 - - thumb_func_start sub_807729C -sub_807729C: @ 807729C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080772D0 @ =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080772D4 - movs r0, 0x5 - b _080772D6 - .align 2, 0 -_080772D0: .4byte gBattleAnimAttacker -_080772D4: - ldr r0, _080772E8 @ =0x0000fff6 -_080772D6: - strh r0, [r5, 0x2E] - ldr r0, _080772EC @ =0x0000ffd8 - strh r0, [r5, 0x30] - ldr r0, _080772F0 @ =sub_80772F4 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080772E8: .4byte 0x0000fff6 -_080772EC: .4byte 0x0000ffd8 -_080772F0: .4byte sub_80772F4 - thumb_func_end sub_807729C - - thumb_func_start sub_80772F4 -sub_80772F4: @ 80772F4 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - ldrh r5, [r4, 0x30] - ldrh r2, [r4, 0x34] - adds r0, r5, r2 - strh r0, [r4, 0x34] - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl __divsi3 - strh r0, [r4, 0x24] - movs r2, 0x34 - ldrsh r0, [r4, r2] - movs r1, 0xA - bl __divsi3 - strh r0, [r4, 0x26] - lsls r0, r5, 16 - asrs r0, 16 - movs r1, 0x14 - negs r1, r1 - cmp r0, r1 - bge _08077330 - adds r0, r5, 0x1 - strh r0, [r4, 0x30] -_08077330: - movs r1, 0x22 - ldrsh r0, [r4, r1] - movs r2, 0x26 - ldrsh r1, [r4, r2] - adds r0, r1 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - bge _08077348 - adds r0, r4, 0 - bl DestroyAnimSprite -_08077348: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80772F4 - - thumb_func_start sub_8077350 -sub_8077350: @ 8077350 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _08077388 @ =gBattleAnimArgs - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x8] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x32] - ldrh r0, [r5, 0xA] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x36] - ldr r0, _0807738C @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08077390 - ldrh r0, [r5, 0x8] - adds r0, 0x1E - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r5, 0xA] - subs r0, 0x14 - b _0807739E - .align 2, 0 -_08077388: .4byte gBattleAnimArgs -_0807738C: .4byte gBattleAnimTarget -_08077390: - ldrh r0, [r5, 0x8] - subs r0, 0x1E - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r5, 0xA] - subs r0, 0x50 -_0807739E: - strh r0, [r4, 0x22] - ldr r0, _080773B4 @ =sub_8075590 - str r0, [r4, 0x1C] - ldr r1, _080773B8 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080773B4: .4byte sub_8075590 -_080773B8: .4byte DestroyAnimSprite - thumb_func_end sub_8077350 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_8078178.s b/asm/battle_anim_8078178.s deleted file mode 100644 index 5530fd869..000000000 --- a/asm/battle_anim_8078178.s +++ /dev/null @@ -1,977 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8078178 -sub_8078178: @ 8078178 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _0807821C @ =gBattlerSpriteIds - adds r0, r4, r0 - ldrb r6, [r0] - ldr r0, _08078220 @ =sub_80782BC - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _08078224 @ =gUnknown_83AD048 - bl sub_800F034 - ldr r0, _08078228 @ =gUnknown_83AD950 - bl sub_800F078 - ldr r1, _0807822C @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r1, r0, r1 - strh r4, [r1, 0x8] - cmp r5, 0 - beq _08078238 - movs r0, 0x1F - strh r0, [r1, 0xA] - movs r5, 0 - lsls r0, r6, 4 - ldr r7, _08078230 @ =gSprites - adds r0, r6 - lsls r0, 2 - adds r6, r0, r7 -_080781CC: - movs r0, 0x20 - ldrsh r1, [r6, r0] - ldrh r2, [r6, 0x22] - adds r2, 0x20 - lsls r2, 16 - asrs r2, 16 - ldr r0, _08078234 @ =gUnknown_83BF574 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r3, r0, r7 - lsls r0, r5, 1 - adds r0, r5 - lsls r1, r0, 4 - adds r0, r1 - strh r0, [r3, 0x2E] - movs r0, 0xFF - lsls r0, 8 - strh r0, [r3, 0x30] - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - cmp r5, 0x4 - bls _08078210 - movs r0, 0x15 - strh r0, [r3, 0x3A] -_08078210: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x9 - bls _080781CC - b _08078298 - .align 2, 0 -_0807821C: .4byte gBattlerSpriteIds -_08078220: .4byte sub_80782BC -_08078224: .4byte gUnknown_83AD048 -_08078228: .4byte gUnknown_83AD950 -_0807822C: .4byte gTasks -_08078230: .4byte gSprites -_08078234: .4byte gUnknown_83BF574 -_08078238: - movs r0, 0xF8 - lsls r0, 7 - strh r0, [r1, 0xA] - movs r5, 0 - lsls r0, r6, 4 - ldr r7, _080782B4 @ =gSprites - adds r0, r6 - lsls r0, 2 - adds r6, r0, r7 -_0807824A: - movs r2, 0x20 - ldrsh r1, [r6, r2] - ldrh r2, [r6, 0x22] - subs r2, 0x20 - lsls r2, 16 - asrs r2, 16 - ldr r0, _080782B8 @ =gUnknown_83BF574 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r3, r0, r7 - lsls r0, r5, 1 - adds r0, r5 - lsls r1, r0, 4 - adds r0, r1 - strh r0, [r3, 0x2E] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r3, 0x30] - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - cmp r5, 0x4 - bls _0807828E - movs r0, 0x15 - strh r0, [r3, 0x3A] -_0807828E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x9 - bls _0807824A -_08078298: - ldr r0, _080782B4 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] - mov r0, r8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080782B4: .4byte gSprites -_080782B8: .4byte gUnknown_83BF574 - thumb_func_end sub_8078178 - - thumb_func_start sub_80782BC -sub_80782BC: @ 80782BC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08078314 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r1, [r4, 0xC] - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0x2 - bne _08078342 - movs r0, 0 - strh r0, [r4, 0xC] - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 20 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r0, 16 - ldrb r2, [r4, 0x10] - ldrh r3, [r4, 0xA] - movs r1, 0x10 - bl BlendPalette - ldrh r2, [r4, 0x12] - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08078318 - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _08078346 - movs r0, 0x1 - eors r0, r2 - strh r0, [r4, 0x12] - b _08078346 - .align 2, 0 -_08078314: .4byte gTasks -_08078318: - ldrh r1, [r4, 0x10] - subs r0, r1, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - cmp r0, 0 - bge _08078346 - strh r1, [r4, 0x10] - movs r0, 0x1 - eors r0, r2 - strh r0, [r4, 0x12] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _08078346 - adds r0, r5, 0 - bl DestroyTask - b _08078346 -_08078342: - adds r0, r1, 0x1 - strh r0, [r4, 0xC] -_08078346: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80782BC - - thumb_func_start sub_807834C -sub_807834C: @ 807834C - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x3A] - movs r3, 0x3A - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _08078378 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r3] - ldr r1, _08078374 @ =sub_8078380 - str r1, [r2, 0x1C] - adds r0, r2, 0 - bl _call_via_r1 - b _0807837C - .align 2, 0 -_08078374: .4byte sub_8078380 -_08078378: - subs r0, r1, 0x1 - strh r0, [r2, 0x3A] -_0807837C: - pop {r0} - bx r0 - thumb_func_end sub_807834C - - thumb_func_start sub_8078380 -sub_8078380: @ 8078380 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x20 - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Sin - strh r0, [r4, 0x26] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x7F - bgt _080783AC - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1D - b _080783B2 -_080783AC: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1F -_080783B2: - strb r0, [r1] - ldrh r0, [r4, 0x2E] - adds r0, 0x8 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x38] - adds r0, r1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x34 - bne _080783F4 - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080783EE - adds r0, r4, 0 - bl DestroySpriteAndFreeResources - b _080783F4 -_080783EE: - adds r0, r4, 0 - bl DestroySprite -_080783F4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8078380 - - thumb_func_start sub_80783FC -sub_80783FC: @ 80783FC - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r4, _080784AC @ =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 8 - ldr r1, _080784B0 @ =0xffe00000 - adds r0, r1 - lsrs r5, r0, 16 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 8 - ldr r1, _080784B4 @ =0xffdc0000 - adds r0, r1 - lsrs r4, r0, 16 - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - beq _0807843A - lsls r0, r5, 16 - ldr r1, _080784B8 @ =0xfffa0000 - adds r0, r1 - lsrs r5, r0, 16 -_0807843A: - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - ldr r0, _080784BC @ =gUnknown_83BF55C - lsls r1, r5, 16 - asrs r1, 16 - lsls r2, r4, 16 - asrs r2, 16 - movs r3, 0x4 - bl CreateSprite - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080784C0 @ =0x0000271a - bl GetSpriteTileStartByTag - lsls r0, 16 - ldr r1, _080784C4 @ =0xffff0000 - cmp r0, r1 - bne _08078484 - ldr r1, _080784C8 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_08078484: - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _080784C8 @ =gSprites - adds r0, r1 - ldr r1, _080784CC @ =gUnknown_83BF554 - bl SetSubspriteTables - ldr r1, _080784D0 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - strh r4, [r0, 0x26] - ldr r1, _080784D4 @ =sub_80784D8 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080784AC: .4byte gBattleAnimTarget -_080784B0: .4byte 0xffe00000 -_080784B4: .4byte 0xffdc0000 -_080784B8: .4byte 0xfffa0000 -_080784BC: .4byte gUnknown_83BF55C -_080784C0: .4byte 0x0000271a -_080784C4: .4byte 0xffff0000 -_080784C8: .4byte gSprites -_080784CC: .4byte gUnknown_83BF554 -_080784D0: .4byte gTasks -_080784D4: .4byte sub_80784D8 - thumb_func_end sub_80783FC - - thumb_func_start sub_80784D8 -sub_80784D8: @ 80784D8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08078504 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrh r0, [r1, 0xA] - adds r0, 0x1 - adds r2, r0, 0 - strh r0, [r1, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _0807850C - ldr r0, _08078508 @ =sub_8078528 - str r0, [r1] - movs r0, 0 - strh r0, [r1, 0xA] - b _08078522 - .align 2, 0 -_08078504: .4byte gTasks -_08078508: .4byte sub_8078528 -_0807850C: - lsls r0, r2, 24 - lsrs r0, 24 - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg -_08078522: - pop {r0} - bx r0 - thumb_func_end sub_80784D8 - - thumb_func_start sub_8078528 -sub_8078528: @ 8078528 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080785C0 @ =0x0000271a - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080785C4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0xA] - adds r1, r0, 0x1 - strh r1, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - ble _080785B8 - ldrh r0, [r5, 0xC] - adds r0, 0x1 - movs r6, 0 - strh r0, [r5, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080785B8 - ldr r3, _080785C8 @ =gPlttBufferFaded - lsls r2, 4 - mov r12, r2 - ldr r1, _080785CC @ =0x0000010d - add r1, r12 - lsls r1, 1 - adds r1, r3 - ldrh r4, [r1] - movs r2, 0x87 - lsls r2, 1 - add r2, r12 - lsls r2, 1 - adds r2, r3 - ldrh r0, [r2] - strh r0, [r1] - ldr r0, _080785D0 @ =0x0000010f - add r0, r12 - lsls r0, 1 - adds r0, r3 - ldrh r1, [r0] - strh r1, [r2] - strh r4, [r0] - strh r6, [r5, 0xC] - ldrh r0, [r5, 0xE] - adds r0, 0x1 - strh r0, [r5, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080785B8 - strh r6, [r5, 0xE] - strh r6, [r5, 0xA] - ldrh r0, [r5, 0x10] - adds r0, 0x1 - strh r0, [r5, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080785B8 - movs r0, 0x9 - strh r0, [r5, 0xA] - ldr r0, _080785D4 @ =sub_80785D8 - str r0, [r5] -_080785B8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080785C0: .4byte 0x0000271a -_080785C4: .4byte gTasks -_080785C8: .4byte gPlttBufferFaded -_080785CC: .4byte 0x0000010d -_080785D0: .4byte 0x0000010f -_080785D4: .4byte sub_80785D8 - thumb_func_end sub_8078528 - - thumb_func_start sub_80785D8 -sub_80785D8: @ 80785D8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08078608 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r2, r1, r2 - ldrh r0, [r2, 0xA] - subs r0, 0x1 - adds r3, r0, 0 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _08078610 - ldr r0, _0807860C @ =sub_807862C - str r0, [r2] - movs r0, 0 - strh r0, [r2, 0xA] - b _08078626 - .align 2, 0 -_08078608: .4byte gTasks -_0807860C: .4byte sub_807862C -_08078610: - lsls r0, r3, 24 - lsrs r0, 24 - movs r1, 0x10 - subs r1, r0 - lsls r1, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg -_08078626: - pop {r0} - bx r0 - thumb_func_end sub_80785D8 - - thumb_func_start sub_807862C -sub_807862C: @ 807862C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - ldr r1, _0807866C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r1 - ldrh r0, [r1, 0xA] - adds r0, 0x1 - strh r0, [r1, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x25 - bne _08078674 - ldrh r0, [r1, 0x26] - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, _08078670 @ =gSprites - adds r4, r0 - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite - b _0807868E - .align 2, 0 -_0807866C: .4byte gTasks -_08078670: .4byte gSprites -_08078674: - cmp r0, 0x27 - bne _0807868E - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimVisualTask -_0807868E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_807862C - - thumb_func_start sub_8078694 -sub_8078694: @ 8078694 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r3, 0 - ldr r0, _080786B8 @ =gUnknown_2024018 - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrh r0, [r0] - subs r0, 0xF - cmp r0, 0x2B - bls _080786AC - b _08078830 -_080786AC: - lsls r0, 2 - ldr r1, _080786BC @ =_080786C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080786B8: .4byte gUnknown_2024018 -_080786BC: .4byte _080786C0 - .align 2, 0 -_080786C0: - .4byte _08078770 - .4byte _08078776 - .4byte _0807877C - .4byte _08078782 - .4byte _08078788 - .4byte _0807878E - .4byte _08078794 - .4byte _0807879A - .4byte _080787A0 - .4byte _080787A6 - .4byte _080787AC - .4byte _080787B2 - .4byte _080787B8 - .4byte _080787BE - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _08078830 - .4byte _080787C4 - .4byte _080787C8 - .4byte _080787CC - .4byte _080787D0 - .4byte _080787D4 - .4byte _080787D8 - .4byte _080787DC - .4byte _080787E0 - .4byte _080787E8 - .4byte _080787F0 - .4byte _080787F8 - .4byte _08078800 - .4byte _08078808 - .4byte _08078810 - .4byte _08078830 - .4byte _08078830 - .4byte _08078818 - .4byte _0807881C - .4byte _08078820 - .4byte _08078828 -_08078770: - movs r5, 0 - movs r2, 0 - b _08078838 -_08078776: - movs r5, 0 - movs r2, 0x1 - b _08078838 -_0807877C: - movs r5, 0 - movs r2, 0x3 - b _08078838 -_08078782: - movs r5, 0 - movs r2, 0x5 - b _08078838 -_08078788: - movs r5, 0 - movs r2, 0x6 - b _08078838 -_0807878E: - movs r5, 0 - movs r2, 0x2 - b _08078838 -_08078794: - movs r5, 0 - movs r2, 0x4 - b _08078838 -_0807879A: - movs r5, 0x1 - movs r2, 0 - b _08078838 -_080787A0: - movs r5, 0x1 - movs r2, 0x1 - b _08078838 -_080787A6: - movs r5, 0x1 - movs r2, 0x3 - b _08078838 -_080787AC: - movs r5, 0x1 - movs r2, 0x5 - b _08078838 -_080787B2: - movs r5, 0x1 - movs r2, 0x6 - b _08078838 -_080787B8: - movs r5, 0x1 - movs r2, 0x2 - b _08078838 -_080787BE: - movs r5, 0x1 - movs r2, 0x4 - b _08078838 -_080787C4: - movs r5, 0 - b _080787E2 -_080787C8: - movs r5, 0 - b _080787EA -_080787CC: - movs r5, 0 - b _080787F2 -_080787D0: - movs r5, 0 - b _080787FA -_080787D4: - movs r5, 0 - b _08078802 -_080787D8: - movs r5, 0 - b _0807880A -_080787DC: - movs r5, 0 - b _08078812 -_080787E0: - movs r5, 0x1 -_080787E2: - movs r2, 0 - movs r3, 0x1 - b _08078838 -_080787E8: - movs r5, 0x1 -_080787EA: - movs r2, 0x1 - movs r3, 0x1 - b _08078838 -_080787F0: - movs r5, 0x1 -_080787F2: - movs r2, 0x3 - movs r3, 0x1 - b _08078838 -_080787F8: - movs r5, 0x1 -_080787FA: - movs r2, 0x5 - movs r3, 0x1 - b _08078838 -_08078800: - movs r5, 0x1 -_08078802: - movs r2, 0x6 - movs r3, 0x1 - b _08078838 -_08078808: - movs r5, 0x1 -_0807880A: - movs r2, 0x2 - movs r3, 0x1 - b _08078838 -_08078810: - movs r5, 0x1 -_08078812: - movs r2, 0x4 - movs r3, 0x1 - b _08078838 -_08078818: - movs r5, 0 - b _08078822 -_0807881C: - movs r5, 0 - b _0807882A -_08078820: - movs r5, 0x1 -_08078822: - movs r2, 0xFF - movs r3, 0 - b _08078838 -_08078828: - movs r5, 0x1 -_0807882A: - movs r2, 0xFF - movs r3, 0x1 - b _08078838 -_08078830: - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _0807885A -_08078838: - ldr r0, _08078860 @ =gBattleAnimArgs - movs r1, 0 - strh r5, [r0] - strh r2, [r0, 0x2] - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - strh r3, [r0, 0x8] - ldr r1, _08078864 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08078868 @ =sub_80BB088 - str r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 -_0807885A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08078860: .4byte gBattleAnimArgs -_08078864: .4byte gTasks -_08078868: .4byte sub_80BB088 - thumb_func_end sub_8078694 - - thumb_func_start LaunchStatusAnimation -LaunchStatusAnimation: @ 807886C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _080788A8 @ =gBattleAnimAttacker - strb r4, [r0] - ldr r0, _080788AC @ =gBattleAnimTarget - strb r4, [r0] - ldr r0, _080788B0 @ =gUnknown_81C6E84 - movs r2, 0 - bl sub_80725D4 - ldr r0, _080788B4 @ =task0A_80788BC - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080788B8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080788A8: .4byte gBattleAnimAttacker -_080788AC: .4byte gBattleAnimTarget -_080788B0: .4byte gUnknown_81C6E84 -_080788B4: .4byte task0A_80788BC -_080788B8: .4byte gTasks - thumb_func_end LaunchStatusAnimation - - thumb_func_start task0A_80788BC -task0A_80788BC: @ 80788BC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08078904 @ =gUnknown_2037EDC - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _08078908 @ =gUnknown_2037EE1 - ldrb r0, [r0] - cmp r0, 0 - bne _080788FE - ldr r0, _0807890C @ =gUnknown_2024018 - ldr r2, [r0] - ldr r1, _08078910 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - ldrsh r0, [r0, r1] - ldr r2, [r2, 0x4] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_080788FE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08078904: .4byte gUnknown_2037EDC -_08078908: .4byte gUnknown_2037EE1 -_0807890C: .4byte gUnknown_2024018 -_08078910: .4byte gTasks - thumb_func_end task0A_80788BC - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_80989F8.s b/asm/battle_anim_80989F8.s deleted file mode 100644 index 14cc141cd..000000000 --- a/asm/battle_anim_80989F8.s +++ /dev/null @@ -1,2588 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80989F8 -sub_80989F8: @ 80989F8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _08098A18 @ =gBattleAnimArgs - ldrb r0, [r4] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - bne _08098A1C - adds r0, r5, 0 - bl DestroyAnimVisualTask - b _08098A58 - .align 2, 0 -_08098A18: .4byte gBattleAnimArgs -_08098A1C: - ldr r1, _08098A60 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r4, 0x2] - strh r1, [r0, 0x24] - ldrh r1, [r4, 0x4] - strh r1, [r0, 0x26] - ldr r1, _08098A64 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - strh r2, [r0, 0x8] - ldrh r1, [r4, 0x6] - strh r1, [r0, 0xA] - ldrh r1, [r4, 0x8] - strh r1, [r0, 0xC] - ldrh r1, [r4, 0x8] - strh r1, [r0, 0xE] - ldrh r1, [r4, 0x2] - strh r1, [r0, 0x10] - ldrh r1, [r4, 0x4] - strh r1, [r0, 0x12] - ldr r1, _08098A68 @ =sub_8098A6C - str r1, [r0] - adds r0, r5, 0 - bl _call_via_r1 -_08098A58: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08098A60: .4byte gSprites -_08098A64: .4byte gTasks -_08098A68: .4byte sub_8098A6C - thumb_func_end sub_80989F8 - - thumb_func_start sub_8098A6C -sub_8098A6C: @ 8098A6C - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08098AA8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r3, r0, r1 - ldrh r0, [r3, 0xE] - movs r2, 0xE - ldrsh r5, [r3, r2] - adds r7, r1, 0 - cmp r5, 0 - bne _08098B12 - ldr r2, _08098AAC @ =gSprites - movs r6, 0x8 - ldrsh r1, [r3, r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - movs r6, 0x24 - ldrsh r0, [r1, r6] - adds r6, r2, 0 - cmp r0, 0 - bne _08098AB0 - ldrh r0, [r3, 0x10] - strh r0, [r1, 0x24] - b _08098AB2 - .align 2, 0 -_08098AA8: .4byte gTasks -_08098AAC: .4byte gSprites -_08098AB0: - strh r5, [r1, 0x24] -_08098AB2: - lsls r2, r4, 2 - adds r0, r2, r4 - lsls r0, 3 - adds r3, r0, r7 - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r6 - movs r5, 0x26 - ldrsh r0, [r1, r5] - cmp r0, 0 - bne _08098AD2 - ldrh r0, [r3, 0x12] - b _08098AD4 -_08098AD2: - movs r0, 0 -_08098AD4: - strh r0, [r1, 0x26] - adds r0, r2, r4 - lsls r0, 3 - adds r2, r0, r7 - ldrh r0, [r2, 0xC] - strh r0, [r2, 0xE] - ldrh r0, [r2, 0xA] - subs r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r3, r0, 16 - cmp r3, 0 - bne _08098B16 - movs r0, 0x8 - ldrsh r1, [r2, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - strh r3, [r0, 0x24] - movs r5, 0x8 - ldrsh r1, [r2, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - strh r3, [r0, 0x26] - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _08098B16 -_08098B12: - subs r0, 0x1 - strh r0, [r3, 0xE] -_08098B16: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8098A6C - - thumb_func_start sub_8098B1C -sub_8098B1C: @ 8098B1C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0 - ldr r2, _08098B44 @ =gBattleAnimArgs - ldrh r0, [r2] - movs r3, 0 - ldrsh r1, [r2, r3] - cmp r1, 0x3 - bgt _08098B48 - lsls r0, 24 - lsrs r0, 24 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xFF - bne _08098B9E - b _08098BA2 - .align 2, 0 -_08098B44: .4byte gBattleAnimArgs -_08098B48: - cmp r1, 0x8 - beq _08098B94 - movs r1, 0 - ldrsh r0, [r2, r1] - cmp r0, 0x5 - beq _08098B68 - cmp r0, 0x5 - bgt _08098B5E - cmp r0, 0x4 - beq _08098B64 - b _08098B70 -_08098B5E: - cmp r0, 0x6 - beq _08098B6C - b _08098B70 -_08098B64: - movs r0, 0 - b _08098B72 -_08098B68: - movs r0, 0x2 - b _08098B72 -_08098B6C: - movs r0, 0x1 - b _08098B72 -_08098B70: - movs r0, 0x3 -_08098B72: - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - bne _08098B88 - movs r6, 0x1 -_08098B88: - ldr r0, _08098B90 @ =gBattlerSpriteIds - adds r0, r4, r0 - b _08098B9C - .align 2, 0 -_08098B90: .4byte gBattlerSpriteIds -_08098B94: - ldr r1, _08098BAC @ =gBattlerSpriteIds - ldr r0, _08098BB0 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 -_08098B9C: - ldrb r3, [r0] -_08098B9E: - cmp r6, 0 - beq _08098BB4 -_08098BA2: - adds r0, r5, 0 - bl DestroyAnimVisualTask - b _08098BF2 - .align 2, 0 -_08098BAC: .4byte gBattlerSpriteIds -_08098BB0: .4byte gBattleAnimAttacker -_08098BB4: - ldr r1, _08098BF8 @ =gSprites - lsls r0, r3, 4 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldr r2, _08098BFC @ =gBattleAnimArgs - ldrh r1, [r2, 0x2] - strh r1, [r0, 0x24] - ldrh r1, [r2, 0x4] - strh r1, [r0, 0x26] - ldr r1, _08098C00 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - strh r3, [r0, 0x8] - ldrh r1, [r2, 0x6] - strh r1, [r0, 0xA] - ldrh r1, [r2, 0x8] - strh r1, [r0, 0xC] - ldrh r1, [r2, 0x8] - strh r1, [r0, 0xE] - ldrh r1, [r2, 0x2] - strh r1, [r0, 0x10] - ldrh r1, [r2, 0x4] - strh r1, [r0, 0x12] - ldr r1, _08098C04 @ =sub_8098C08 - str r1, [r0] - adds r0, r5, 0 - bl _call_via_r1 -_08098BF2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08098BF8: .4byte gSprites -_08098BFC: .4byte gBattleAnimArgs -_08098C00: .4byte gTasks -_08098C04: .4byte sub_8098C08 - thumb_func_end sub_8098B1C - - thumb_func_start sub_8098C08 -sub_8098C08: @ 8098C08 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _08098C4C @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r3, r0, r1 - ldrh r2, [r3, 0xE] - movs r4, 0xE - ldrsh r0, [r3, r4] - mov r12, r1 - cmp r0, 0 - bne _08098CC0 - ldr r2, _08098C50 @ =gSprites - movs r7, 0x8 - ldrsh r1, [r3, r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - movs r0, 0x24 - ldrsh r1, [r4, r0] - ldrh r5, [r3, 0x10] - movs r7, 0x10 - ldrsh r0, [r3, r7] - adds r7, r2, 0 - cmp r1, r0 - bne _08098C54 - negs r0, r5 - strh r0, [r4, 0x24] - b _08098C56 - .align 2, 0 -_08098C4C: .4byte gTasks -_08098C50: .4byte gSprites -_08098C54: - strh r5, [r4, 0x24] -_08098C56: - lsls r3, r6, 2 - adds r1, r3, r6 - lsls r1, 3 - add r1, r12 - movs r0, 0x8 - ldrsh r2, [r1, r0] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r4, r0, r7 - movs r0, 0x26 - ldrsh r2, [r4, r0] - mov r8, r2 - ldrh r5, [r1, 0x12] - movs r2, 0x12 - ldrsh r0, [r1, r2] - cmp r8, r0 - bne _08098C80 - negs r0, r5 - strh r0, [r4, 0x26] - b _08098C82 -_08098C80: - strh r5, [r4, 0x26] -_08098C82: - adds r0, r3, r6 - lsls r0, 3 - mov r4, r12 - adds r3, r0, r4 - ldrh r0, [r3, 0xC] - strh r0, [r3, 0xE] - ldrh r0, [r3, 0xA] - subs r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0 - bne _08098CC4 - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - strh r2, [r0, 0x24] - movs r4, 0x8 - ldrsh r1, [r3, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - strh r2, [r0, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask - b _08098CC4 -_08098CC0: - subs r0, r2, 0x1 - strh r0, [r3, 0xE] -_08098CC4: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8098C08 - - thumb_func_start sub_8098CD0 -sub_8098CD0: @ 8098CD0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _08098CF0 @ =gBattleAnimArgs - ldrb r0, [r4] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xFF - bne _08098CF4 - adds r0, r5, 0 - bl DestroyAnimVisualTask - b _08098D42 - .align 2, 0 -_08098CF0: .4byte gBattleAnimArgs -_08098CF4: - ldr r0, _08098D48 @ =gSprites - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r4, 0x2] - ldrh r2, [r1, 0x24] - adds r0, r2 - movs r2, 0 - strh r0, [r1, 0x24] - ldrh r0, [r4, 0x4] - ldrh r6, [r1, 0x26] - adds r0, r6 - strh r0, [r1, 0x26] - ldr r0, _08098D4C @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - strh r3, [r1, 0x8] - strh r2, [r1, 0xA] - ldrh r0, [r4, 0x6] - strh r0, [r1, 0xC] - strh r2, [r1, 0xE] - ldrh r0, [r4, 0x8] - strh r0, [r1, 0x10] - movs r2, 0x2 - ldrsh r0, [r4, r2] - lsls r0, 1 - strh r0, [r1, 0x12] - movs r6, 0x4 - ldrsh r0, [r4, r6] - lsls r0, 1 - strh r0, [r1, 0x14] - ldr r2, _08098D50 @ =sub_8098D54 - str r2, [r1] - adds r0, r5, 0 - bl _call_via_r2 -_08098D42: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08098D48: .4byte gSprites -_08098D4C: .4byte gTasks -_08098D50: .4byte sub_8098D54 - thumb_func_end sub_8098CD0 - - thumb_func_start sub_8098D54 -sub_8098D54: @ 8098D54 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08098DAC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r2, [r4, 0xE] - movs r3, 0xE - ldrsh r0, [r4, r3] - adds r6, r1, 0 - cmp r0, 0 - beq _08098D72 - b _08098E84 -_08098D72: - ldrh r1, [r4, 0xA] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08098DB4 - ldr r2, _08098DB0 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x12] - ldrh r3, [r0, 0x24] - adds r1, r3 - strh r1, [r0, 0x24] - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x14] - ldrh r3, [r0, 0x26] - adds r1, r3 - strh r1, [r0, 0x26] - adds r3, r2, 0 - b _08098DDE - .align 2, 0 -_08098DAC: .4byte gTasks -_08098DB0: .4byte gSprites -_08098DB4: - ldr r3, _08098E40 @ =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x24] - ldrh r2, [r4, 0x12] - subs r1, r2 - strh r1, [r0, 0x24] - movs r2, 0x8 - ldrsh r1, [r4, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x26] - ldrh r2, [r4, 0x14] - subs r1, r2 - strh r1, [r0, 0x26] -_08098DDE: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r6 - ldrh r0, [r4, 0x10] - strh r0, [r4, 0xE] - ldrh r0, [r4, 0xA] - adds r2, r0, 0x1 - strh r2, [r4, 0xA] - lsls r0, r2, 16 - asrs r0, 16 - movs r6, 0xC - ldrsh r1, [r4, r6] - cmp r0, r1 - blt _08098E88 - movs r0, 0x1 - ands r2, r0 - cmp r2, 0 - beq _08098E44 - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - movs r2, 0x12 - ldrsh r0, [r4, r2] - lsrs r2, r0, 31 - adds r0, r2 - asrs r0, 1 - ldrh r6, [r1, 0x24] - adds r0, r6 - strh r0, [r1, 0x24] - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - movs r2, 0x14 - ldrsh r0, [r4, r2] - lsrs r2, r0, 31 - adds r0, r2 - asrs r0, 1 - ldrh r3, [r1, 0x26] - adds r0, r3 - strh r0, [r1, 0x26] - b _08098E7C - .align 2, 0 -_08098E40: .4byte gSprites -_08098E44: - movs r6, 0x8 - ldrsh r0, [r4, r6] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - movs r0, 0x12 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - ldrh r0, [r2, 0x24] - subs r0, r1 - strh r0, [r2, 0x24] - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - movs r3, 0x14 - ldrsh r1, [r4, r3] - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - ldrh r0, [r2, 0x26] - subs r0, r1 - strh r0, [r2, 0x26] -_08098E7C: - adds r0, r5, 0 - bl DestroyAnimVisualTask - b _08098E88 -_08098E84: - subs r0, r2, 0x1 - strh r0, [r4, 0xE] -_08098E88: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8098D54 - - thumb_func_start sub_8098E90 -sub_8098E90: @ 8098E90 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _08098EE0 @ =gBattleAnimArgs - ldrb r0, [r5] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08098EE4 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r2, [r5, 0x2] - strh r2, [r1, 0x24] - ldr r2, _08098EE8 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r2 - strh r0, [r1, 0x8] - ldrh r0, [r5, 0x2] - strh r0, [r1, 0xA] - ldrh r0, [r5, 0x4] - strh r0, [r1, 0xC] - ldrh r0, [r5, 0x6] - strh r0, [r1, 0xE] - ldrh r0, [r5, 0x8] - strh r0, [r1, 0x10] - ldr r2, _08098EEC @ =sub_8098EF0 - str r2, [r1] - adds r0, r4, 0 - bl _call_via_r2 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08098EE0: .4byte gBattleAnimArgs -_08098EE4: .4byte gSprites -_08098EE8: .4byte gTasks -_08098EEC: .4byte sub_8098EF0 - thumb_func_end sub_8098E90 - - thumb_func_start sub_8098EF0 -sub_8098EF0: @ 8098EF0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, _08098F7C @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r3, r0, r2 - ldrb r5, [r3, 0x8] - ldrh r4, [r3, 0xA] - ldrh r1, [r3, 0x18] - adds r0, r1, 0x1 - strh r0, [r3, 0x18] - movs r7, 0xC - ldrsh r0, [r3, r7] - lsls r1, 16 - asrs r1, 16 - mov r12, r2 - ldr r7, _08098F80 @ =gSprites - cmp r0, r1 - bne _08098F42 - movs r0, 0 - strh r0, [r3, 0x18] - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r1, r0, r7 - ldrh r3, [r1, 0x24] - movs r0, 0x24 - ldrsh r2, [r1, r0] - lsls r0, r4, 16 - asrs r0, 16 - cmp r2, r0 - bne _08098F3A - negs r0, r2 - lsls r0, 16 - lsrs r4, r0, 16 -_08098F3A: - lsls r0, r4, 16 - asrs r0, 16 - adds r0, r3 - strh r0, [r1, 0x24] -_08098F42: - lsls r2, r6, 2 - adds r2, r6 - lsls r2, 3 - add r2, r12 - strh r4, [r2, 0xA] - ldrh r1, [r2, 0xE] - ldrh r0, [r2, 0x1A] - adds r1, r0 - strh r1, [r2, 0x1A] - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r0, r7 - lsls r1, 16 - asrs r1, 24 - strh r1, [r0, 0x26] - ldrh r0, [r2, 0x10] - subs r0, 0x1 - strh r0, [r2, 0x10] - lsls r0, 16 - cmp r0, 0 - bne _08098F74 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_08098F74: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08098F7C: .4byte gTasks -_08098F80: .4byte gSprites - thumb_func_end sub_8098EF0 - - thumb_func_start sub_8098F84 -sub_8098F84: @ 8098F84 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0x1 - ldr r4, _08098FF8 @ =gBattleAnimArgs - ldrb r0, [r4] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r7, r0, 24 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x5 - ble _08098FA8 - movs r0, 0x5 - strh r0, [r4, 0x8] -_08098FA8: - movs r1, 0 - movs r2, 0x8 - ldrsh r0, [r4, r2] - adds r3, r4, 0 - ldr r2, _08098FFC @ =gTasks - mov r12, r2 - lsls r4, r5, 2 - ldr r2, _08099000 @ =sub_8099004 - mov r8, r2 - cmp r1, r0 - bge _08098FCE - adds r2, r0, 0 -_08098FC0: - lsls r0, r6, 25 - lsrs r6, r0, 24 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, r2 - blt _08098FC0 -_08098FCE: - adds r0, r4, r5 - lsls r0, 3 - add r0, r12 - strh r7, [r0, 0x8] - ldrh r1, [r3, 0x2] - strh r1, [r0, 0xA] - ldrh r1, [r3, 0x4] - strh r1, [r0, 0xC] - ldrh r1, [r3, 0x6] - strh r1, [r0, 0xE] - strh r6, [r0, 0x10] - mov r1, r8 - str r1, [r0] - adds r0, r5, 0 - bl _call_via_r8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08098FF8: .4byte gBattleAnimArgs -_08098FFC: .4byte gTasks -_08099000: .4byte sub_8099004 - thumb_func_end sub_8098F84 - - thumb_func_start sub_8099004 -sub_8099004: @ 8099004 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - ldr r1, _08099074 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrb r4, [r5, 0x8] - movs r1, 0x12 - ldrsh r0, [r5, r1] - movs r2, 0xA - ldrsh r1, [r5, r2] - bl Sin - ldr r2, _08099078 @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r4, r1, r2 - strh r0, [r4, 0x24] - movs r1, 0x12 - ldrsh r0, [r5, r1] - movs r2, 0xC - ldrsh r1, [r5, r2] - bl Cos - negs r0, r0 - strh r0, [r4, 0x26] - ldrh r1, [r5, 0xC] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r5, 0x10] - ldrh r1, [r5, 0x12] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r5, 0x12] - cmp r0, 0 - bne _0809905C - ldrh r0, [r5, 0xE] - subs r0, 0x1 - strh r0, [r5, 0xE] -_0809905C: - movs r2, 0xE - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _0809906E - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_0809906E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08099074: .4byte gTasks -_08099078: .4byte gSprites - thumb_func_end sub_8099004 - - thumb_func_start sub_809907C -sub_809907C: @ 809907C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080990A4 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08099098 - ldr r1, _080990A8 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] -_08099098: - adds r0, r4, 0 - bl sub_8098F84 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080990A4: .4byte gBattleAnimAttacker -_080990A8: .4byte gBattleAnimArgs - thumb_func_end sub_809907C - - thumb_func_start sub_80990AC -sub_80990AC: @ 80990AC - push {r4,lr} - adds r4, r0, 0 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080990D4 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080990DC - ldr r1, _080990D8 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - negs r0, r0 - b _080990E0 - .align 2, 0 -_080990D4: .4byte gBattleAnimAttacker -_080990D8: .4byte gBattleAnimArgs -_080990DC: - ldr r1, _0809910C @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] -_080990E0: - strh r0, [r4, 0x30] - ldrh r2, [r1] - movs r0, 0 - strh r2, [r4, 0x2E] - strh r0, [r4, 0x32] - ldr r1, _08099110 @ =gBattlerSpriteIds - ldr r0, _08099114 @ =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r4, 0x34] - strh r2, [r4, 0x36] - ldr r1, _08099118 @ =sub_8099120 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _0809911C @ =sub_8074DC4 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809910C: .4byte gBattleAnimArgs -_08099110: .4byte gBattlerSpriteIds -_08099114: .4byte gBattleAnimAttacker -_08099118: .4byte sub_8099120 -_0809911C: .4byte sub_8074DC4 - thumb_func_end sub_80990AC - - thumb_func_start sub_8099120 -sub_8099120: @ 8099120 - push {lr} - ldrh r1, [r0, 0x36] - strh r1, [r0, 0x2E] - ldrh r1, [r0, 0x30] - negs r1, r1 - strh r1, [r0, 0x30] - ldr r1, _0809913C @ =sub_8074DC4 - str r1, [r0, 0x1C] - ldr r1, _08099140 @ =DestroyAnimSprite - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_0809913C: .4byte sub_8074DC4 -_08099140: .4byte DestroyAnimSprite - thumb_func_end sub_8099120 - - thumb_func_start sub_8099144 -sub_8099144: @ 8099144 - push {r4,r5,lr} - adds r4, r0, 0 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r5, _08099184 @ =gBattleAnimArgs - ldrb r0, [r5, 0x4] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r5] - movs r1, 0 - strh r2, [r4, 0x2E] - strh r1, [r4, 0x30] - ldrh r1, [r5, 0x2] - strh r1, [r4, 0x32] - strh r0, [r4, 0x34] - strh r2, [r4, 0x36] - ldr r1, _08099188 @ =sub_8099190 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _0809918C @ =sub_8074DC4 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08099184: .4byte gBattleAnimArgs -_08099188: .4byte sub_8099190 -_0809918C: .4byte sub_8074DC4 - thumb_func_end sub_8099144 - - thumb_func_start sub_8099190 -sub_8099190: @ 8099190 - push {lr} - ldrh r1, [r0, 0x36] - strh r1, [r0, 0x2E] - ldrh r1, [r0, 0x32] - negs r1, r1 - strh r1, [r0, 0x32] - ldr r1, _080991AC @ =sub_8074DC4 - str r1, [r0, 0x1C] - ldr r1, _080991B0 @ =DestroyAnimSprite - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .align 2, 0 -_080991AC: .4byte sub_8074DC4 -_080991B0: .4byte DestroyAnimSprite - thumb_func_end sub_8099190 - - thumb_func_start sub_80991B4 -sub_80991B4: @ 80991B4 - push {r4-r7,lr} - sub sp, 0x4 - adds r6, r0, 0 - ldr r0, _080991CC @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080991D8 - ldr r1, _080991D0 @ =gBattlerSpriteIds - ldr r0, _080991D4 @ =gBattleAnimAttacker - b _080991DC - .align 2, 0 -_080991CC: .4byte gBattleAnimArgs -_080991D0: .4byte gBattlerSpriteIds -_080991D4: .4byte gBattleAnimAttacker -_080991D8: - ldr r1, _0809923C @ =gBattlerSpriteIds - ldr r0, _08099240 @ =gBattleAnimTarget -_080991DC: - ldrb r0, [r0] - adds r0, r1 - ldrb r7, [r0] - ldr r5, _08099244 @ =gBattleAnimArgs - ldrh r0, [r5, 0x4] - movs r3, 0 - strh r0, [r6, 0x2E] - ldr r0, _08099248 @ =gSprites - lsls r4, r7, 4 - adds r4, r7 - lsls r4, 2 - adds r4, r0 - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r6, 0x30] - ldrh r0, [r4, 0x20] - strh r0, [r6, 0x32] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r6, 0x34] - ldrh r0, [r4, 0x22] - strh r0, [r6, 0x36] - adds r0, r6, 0 - str r3, [sp] - bl sub_80754B8 - ldr r3, [sp] - strh r3, [r6, 0x34] - strh r3, [r6, 0x36] - ldrh r0, [r4, 0x24] - strh r0, [r6, 0x38] - ldrh r0, [r4, 0x26] - strh r0, [r6, 0x3A] - adds r2, r6, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r1, 0x2 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _0809924C - strh r3, [r6, 0x32] - b _08099252 - .align 2, 0 -_0809923C: .4byte gBattlerSpriteIds -_08099240: .4byte gBattleAnimTarget -_08099244: .4byte gBattleAnimArgs -_08099248: .4byte gSprites -_0809924C: - cmp r0, 0x2 - bne _08099252 - strh r3, [r6, 0x30] -_08099252: - ldr r0, _08099268 @ =gBattleAnimArgs - ldrh r1, [r0, 0x2] - lsls r0, r7, 8 - orrs r0, r1 - strh r0, [r6, 0x3C] - ldr r0, _0809926C @ =sub_8099270 - str r0, [r6, 0x1C] - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08099268: .4byte gBattleAnimArgs -_0809926C: .4byte sub_8099270 - thumb_func_end sub_80991B4 - - thumb_func_start sub_8099270 -sub_8099270: @ 8099270 - push {r4-r6,lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x3C] - lsls r1, r0, 24 - lsrs r4, r1, 24 - adds r5, r4, 0 - lsls r0, 16 - asrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _080992AC @ =gSprites - adds r3, r1, r0 - ldrh r0, [r2, 0x2E] - movs r6, 0x2E - ldrsh r1, [r2, r6] - cmp r1, 0 - bne _080992B0 - cmp r4, 0x1 - bhi _0809929A - strh r1, [r3, 0x24] -_0809929A: - cmp r5, 0x2 - beq _080992A2 - cmp r5, 0 - bne _080992A4 -_080992A2: - strh r1, [r3, 0x26] -_080992A4: - adds r0, r2, 0 - bl DestroyAnimSprite - b _080992DA - .align 2, 0 -_080992AC: .4byte gSprites -_080992B0: - subs r0, 0x1 - strh r0, [r2, 0x2E] - ldrh r1, [r2, 0x30] - ldrh r0, [r2, 0x34] - adds r1, r0 - strh r1, [r2, 0x34] - ldrh r0, [r2, 0x32] - ldrh r4, [r2, 0x36] - adds r0, r4 - strh r0, [r2, 0x36] - lsls r1, 16 - asrs r1, 24 - ldrh r6, [r2, 0x38] - adds r1, r6 - strh r1, [r3, 0x24] - ldrh r0, [r2, 0x36] - lsls r0, 16 - asrs r0, 24 - ldrh r2, [r2, 0x3A] - adds r0, r2 - strh r0, [r3, 0x26] -_080992DA: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8099270 - - thumb_func_start sub_80992E0 -sub_80992E0: @ 80992E0 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, _080992F4 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080992FC - ldr r0, _080992F8 @ =gBattleAnimAttacker - b _080992FE - .align 2, 0 -_080992F4: .4byte gBattleAnimArgs -_080992F8: .4byte gBattleAnimAttacker -_080992FC: - ldr r0, _0809937C @ =gBattleAnimTarget -_080992FE: - ldrb r2, [r0] - ldr r0, _08099380 @ =gBattlerSpriteIds - adds r0, r2, r0 - ldrb r6, [r0] - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08099328 - ldr r1, _08099384 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] - movs r2, 0x6 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - bne _08099328 - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_08099328: - ldr r2, _08099384 @ =gBattleAnimArgs - ldrh r0, [r2, 0x8] - movs r4, 0 - strh r0, [r5, 0x2E] - ldr r0, _08099388 @ =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x20] - strh r0, [r5, 0x30] - ldrh r0, [r2, 0x2] - ldrh r3, [r1, 0x20] - adds r0, r3 - strh r0, [r5, 0x32] - ldrh r0, [r1, 0x22] - strh r0, [r5, 0x34] - ldrh r0, [r2, 0x4] - ldrh r1, [r1, 0x22] - adds r0, r1 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl sub_80754B8 - strh r4, [r5, 0x34] - strh r4, [r5, 0x36] - strh r6, [r5, 0x38] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r1, _0809938C @ =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, _08099390 @ =sub_8074E14 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809937C: .4byte gBattleAnimTarget -_08099380: .4byte gBattlerSpriteIds -_08099384: .4byte gBattleAnimArgs -_08099388: .4byte gSprites -_0809938C: .4byte DestroyAnimSprite -_08099390: .4byte sub_8074E14 - thumb_func_end sub_80992E0 - - thumb_func_start sub_8099394 -sub_8099394: @ 8099394 - push {r4-r7,lr} - adds r6, r0, 0 - adds r2, r6, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080993B4 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080993BC - ldr r0, _080993B8 @ =gBattleAnimAttacker - b _080993BE - .align 2, 0 -_080993B4: .4byte gBattleAnimArgs -_080993B8: .4byte gBattleAnimAttacker -_080993BC: - ldr r0, _0809943C @ =gBattleAnimTarget -_080993BE: - ldrb r1, [r0] - ldr r0, _08099440 @ =gBattlerSpriteIds - adds r0, r1, r0 - ldrb r7, [r0] - adds r0, r1, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080993E8 - ldr r1, _08099444 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] - movs r2, 0x6 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - bne _080993E8 - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080993E8: - ldr r5, _08099444 @ =gBattleAnimArgs - ldrh r0, [r5, 0x8] - strh r0, [r6, 0x2E] - ldr r0, _08099448 @ =gSprites - lsls r4, r7, 4 - adds r4, r7 - lsls r4, 2 - adds r4, r0 - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r6, 0x30] - ldrh r1, [r5, 0x2] - adds r0, r1 - strh r0, [r6, 0x32] - ldrh r0, [r4, 0x26] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r6, 0x34] - ldrh r1, [r5, 0x4] - adds r0, r1 - strh r0, [r6, 0x36] - adds r0, r6, 0 - bl sub_80754B8 - ldrh r0, [r4, 0x24] - lsls r0, 8 - strh r0, [r6, 0x34] - ldrh r0, [r4, 0x26] - lsls r0, 8 - strh r0, [r6, 0x36] - strh r7, [r6, 0x38] - ldrh r0, [r5, 0xA] - strh r0, [r6, 0x3A] - lsls r0, 16 - cmp r0, 0 - bne _08099450 - ldr r1, _0809944C @ =DestroyAnimSprite - adds r0, r6, 0 - bl StoreSpriteCallbackInData6 - b _08099458 - .align 2, 0 -_0809943C: .4byte gBattleAnimTarget -_08099440: .4byte gBattlerSpriteIds -_08099444: .4byte gBattleAnimArgs -_08099448: .4byte gSprites -_0809944C: .4byte DestroyAnimSprite -_08099450: - ldr r1, _08099464 @ =sub_809946C - adds r0, r6, 0 - bl StoreSpriteCallbackInData6 -_08099458: - ldr r0, _08099468 @ =sub_8074E14 - str r0, [r6, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08099464: .4byte sub_809946C -_08099468: .4byte sub_8074E14 - thumb_func_end sub_8099394 - - thumb_func_start sub_809946C -sub_809946C: @ 809946C - push {r4,lr} - ldr r4, _08099498 @ =gSprites - movs r1, 0x38 - ldrsh r2, [r0, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - movs r3, 0 - strh r3, [r1, 0x24] - movs r1, 0x38 - ldrsh r2, [r0, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - strh r3, [r1, 0x26] - bl DestroyAnimSprite - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08099498: .4byte gSprites - thumb_func_end sub_809946C - - thumb_func_start sub_809949C -sub_809949C: @ 809949C - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, _08099520 @ =gBattleAnimArgs - movs r0, 0x6 - ldrsh r1, [r5, r0] - movs r0, 0x80 - lsls r0, 8 - bl __divsi3 - lsls r0, 16 - lsrs r7, r0, 16 - ldr r0, _08099524 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080994CE - ldrh r0, [r5, 0x2] - negs r0, r0 - strh r0, [r5, 0x2] - ldrh r0, [r5, 0xA] - negs r0, r0 - strh r0, [r5, 0xA] -_080994CE: - ldrb r0, [r5] - bl GetAnimBankSpriteId - ldr r1, _08099528 @ =gTasks - lsls r4, r6, 2 - adds r4, r6 - lsls r4, 3 - adds r4, r1 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x8] - movs r1, 0x2 - ldrsh r0, [r5, r1] - lsls r0, 8 - movs r2, 0x6 - ldrsh r1, [r5, r2] - bl __divsi3 - strh r0, [r4, 0xA] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0xC] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0xE] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x10] - movs r1, 0xA - ldrsh r0, [r5, r1] - lsls r0, 8 - movs r2, 0xC - ldrsh r1, [r5, r2] - bl __divsi3 - strh r0, [r4, 0x12] - ldrh r0, [r5, 0xC] - strh r0, [r4, 0x14] - strh r7, [r4, 0x16] - ldr r0, _0809952C @ =sub_8099530 - str r0, [r4] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08099520: .4byte gBattleAnimArgs -_08099524: .4byte gBattleAnimAttacker -_08099528: .4byte gTasks -_0809952C: .4byte sub_8099530 - thumb_func_end sub_809949C - - thumb_func_start sub_8099530 -sub_8099530: @ 8099530 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08099588 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r5, r1, r2 - ldrb r1, [r5, 0x8] - ldrh r0, [r5, 0xA] - ldrh r2, [r5, 0x1E] - adds r0, r2 - strh r0, [r5, 0x1E] - ldr r2, _0809958C @ =gSprites - lsls r4, r1, 4 - adds r4, r1 - lsls r4, 2 - adds r4, r2 - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - ldrh r0, [r5, 0x1C] - lsrs r0, 8 - movs r2, 0xC - ldrsh r1, [r5, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r5, 0x16] - ldrh r1, [r5, 0x1C] - adds r0, r1 - strh r0, [r5, 0x1C] - ldrh r0, [r5, 0xE] - subs r0, 0x1 - strh r0, [r5, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _08099580 - ldr r0, _08099590 @ =sub_8099594 - str r0, [r5] -_08099580: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08099588: .4byte gTasks -_0809958C: .4byte gSprites -_08099590: .4byte sub_8099594 - thumb_func_end sub_8099530 - - thumb_func_start sub_8099594 -sub_8099594: @ 8099594 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _080995B8 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r1, [r4, 0x10] - movs r2, 0x10 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080995BC - subs r0, r1, 0x1 - strh r0, [r4, 0x10] - b _080995F0 - .align 2, 0 -_080995B8: .4byte gTasks -_080995BC: - ldrb r0, [r4, 0x8] - ldrh r2, [r4, 0x12] - ldrh r1, [r4, 0x20] - adds r2, r1 - strh r2, [r4, 0x20] - ldr r3, _080995F8 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - lsls r2, 16 - asrs r2, 24 - ldrh r0, [r4, 0x1E] - lsls r0, 16 - asrs r0, 24 - adds r2, r0 - strh r2, [r1, 0x24] - ldrh r0, [r4, 0x14] - subs r0, 0x1 - strh r0, [r4, 0x14] - lsls r0, 16 - cmp r0, 0 - bne _080995F0 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080995F0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080995F8: .4byte gSprites - thumb_func_end sub_8099594 - - thumb_func_start sub_80995FC -sub_80995FC: @ 80995FC - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _08099620 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0x2 - beq _0809962A - cmp r0, 0x2 - bgt _08099624 - cmp r0, 0 - blt _0809965C - ldrb r0, [r1] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r2, r0, 24 - b _08099664 - .align 2, 0 -_08099620: .4byte gBattleAnimArgs -_08099624: - cmp r0, 0x3 - beq _08099634 - b _0809965C -_0809962A: - ldr r5, _08099630 @ =gBattleAnimAttacker - b _08099636 - .align 2, 0 -_08099630: .4byte gBattleAnimAttacker -_08099634: - ldr r5, _08099654 @ =gBattleAnimTarget -_08099636: - ldrb r0, [r5] - movs r4, 0x2 - eors r0, r4 - bl sub_8072DF0 - lsls r0, 24 - cmp r0, 0 - beq _0809965C - ldr r1, _08099658 @ =gBattlerSpriteIds - ldrb r0, [r5] - eors r0, r4 - adds r0, r1 - ldrb r2, [r0] - b _08099664 - .align 2, 0 -_08099654: .4byte gBattleAnimTarget -_08099658: .4byte gBattlerSpriteIds -_0809965C: - adds r0, r6, 0 - bl DestroyAnimVisualTask - b _080996A4 -_08099664: - ldr r1, _08099684 @ =gTasks - lsls r4, r6, 2 - adds r0, r4, r6 - lsls r0, 3 - adds r5, r0, r1 - strh r2, [r5, 0x8] - ldr r0, _08099688 @ =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08099690 - ldr r0, _0809968C @ =gBattleAnimArgs - ldrh r0, [r0, 0x2] - b _08099696 - .align 2, 0 -_08099684: .4byte gTasks -_08099688: .4byte gBattleAnimTarget -_0809968C: .4byte gBattleAnimArgs -_08099690: - ldr r0, _080996AC @ =gBattleAnimArgs - ldrh r0, [r0, 0x2] - negs r0, r0 -_08099696: - strh r0, [r5, 0xA] - ldr r0, _080996B0 @ =gTasks - adds r1, r4, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _080996B4 @ =sub_80996B8 - str r0, [r1] -_080996A4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080996AC: .4byte gBattleAnimArgs -_080996B0: .4byte gTasks -_080996B4: .4byte sub_80996B8 - thumb_func_end sub_80995FC - - thumb_func_start sub_80996B8 -sub_80996B8: @ 80996B8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080996FC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrb r2, [r1, 0x8] - ldr r3, _08099700 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r1, 0xA] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - movs r2, 0x24 - ldrsh r1, [r0, r2] - movs r2, 0x20 - ldrsh r0, [r0, r2] - adds r1, r0 - adds r1, 0x20 - movs r0, 0x98 - lsls r0, 1 - cmp r1, r0 - bls _080996F6 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080996F6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080996FC: .4byte gTasks -_08099700: .4byte gSprites - thumb_func_end sub_80996B8 - - thumb_func_start sub_8099704 -sub_8099704: @ 8099704 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r6, _08099754 @ =gBattleAnimAttacker - ldrb r0, [r6] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08099720 - ldr r1, _08099758 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] -_08099720: - ldr r4, _08099758 @ =gBattleAnimArgs - ldrb r0, [r4, 0x8] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0809975C @ =gTasks - lsls r3, r5, 2 - adds r1, r3, r5 - lsls r1, 3 - adds r2, r1, r2 - ldrh r1, [r4] - strh r1, [r2, 0x8] - ldrh r1, [r4, 0x2] - strh r1, [r2, 0xA] - ldrh r1, [r4, 0x4] - strh r1, [r2, 0xC] - ldrh r1, [r4, 0x6] - strh r1, [r2, 0xE] - strh r0, [r2, 0x10] - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08099760 - ldrb r0, [r6] - b _08099764 - .align 2, 0 -_08099754: .4byte gBattleAnimAttacker -_08099758: .4byte gBattleAnimArgs -_0809975C: .4byte gTasks -_08099760: - ldr r0, _0809977C @ =gBattleAnimTarget - ldrb r0, [r0] -_08099764: - strh r0, [r2, 0x12] - ldr r1, _08099780 @ =gTasks - adds r0, r3, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0, 0x20] - ldr r1, _08099784 @ =sub_8099788 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809977C: .4byte gBattleAnimTarget -_08099780: .4byte gTasks -_08099784: .4byte sub_8099788 - thumb_func_end sub_8099704 - - thumb_func_start sub_8099788 -sub_8099788: @ 8099788 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080997D8 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r1 - ldrb r7, [r4, 0x10] - ldrh r0, [r4, 0xC] - ldrh r1, [r4, 0x1C] - adds r0, r1 - lsls r1, r0, 16 - strh r0, [r4, 0x1C] - lsrs r1, 24 - mov r8, r1 - mov r0, r8 - movs r2, 0xA - ldrsh r1, [r4, r2] - bl Sin - lsls r0, 16 - lsrs r5, r0, 16 - mov r9, r5 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080997E0 - ldr r0, _080997DC @ =gSprites - lsls r2, r7, 4 - adds r1, r2, r7 - lsls r1, 2 - adds r1, r0 - strh r5, [r1, 0x24] - mov r9, r0 - adds r4, r2, 0 - b _08099826 - .align 2, 0 -_080997D8: .4byte gTasks -_080997DC: .4byte gSprites -_080997E0: - ldrb r0, [r4, 0x12] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08099808 - ldr r1, _08099804 @ =gSprites - lsls r2, r7, 4 - adds r0, r2, r7 - lsls r0, 2 - adds r3, r0, r1 - lsls r0, r5, 16 - asrs r0, 16 - mov r9, r1 - adds r4, r2, 0 - cmp r0, 0 - bge _08099824 - b _08099822 - .align 2, 0 -_08099804: .4byte gSprites -_08099808: - ldr r1, _080998A8 @ =gSprites - lsls r2, r7, 4 - adds r0, r2, r7 - lsls r0, 2 - adds r3, r0, r1 - mov r4, r9 - lsls r0, r4, 16 - asrs r0, 16 - mov r9, r1 - adds r4, r2, 0 - cmp r0, 0 - bge _08099822 - negs r0, r0 -_08099822: - negs r0, r0 -_08099824: - strh r0, [r3, 0x26] -_08099826: - mov r5, r8 - cmp r5, 0x7F - bls _08099848 - ldr r1, _080998AC @ =gTasks - lsls r2, r6, 2 - adds r0, r2, r6 - lsls r0, 3 - adds r3, r0, r1 - movs r5, 0x1E - ldrsh r0, [r3, r5] - adds r5, r1, 0 - cmp r0, 0 - bne _08099848 - movs r1, 0x20 - ldrsh r0, [r3, r1] - cmp r0, 0x1 - beq _0809986A -_08099848: - mov r2, r8 - cmp r2, 0x7E - bhi _0809989C - ldr r1, _080998AC @ =gTasks - lsls r2, r6, 2 - adds r0, r2, r6 - lsls r0, 3 - adds r3, r0, r1 - movs r5, 0x1E - ldrsh r0, [r3, r5] - adds r5, r1, 0 - cmp r0, 0x1 - bne _0809989C - movs r1, 0x20 - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _0809989C -_0809986A: - adds r1, r2, r6 - lsls r1, 3 - adds r1, r5 - ldrh r0, [r1, 0x1E] - movs r2, 0x1 - eors r0, r2 - strh r0, [r1, 0x1E] - ldrh r0, [r1, 0x20] - eors r0, r2 - strh r0, [r1, 0x20] - ldrh r0, [r1, 0xE] - subs r0, 0x1 - strh r0, [r1, 0xE] - lsls r0, 16 - asrs r3, r0, 16 - cmp r3, 0 - bne _0809989C - adds r0, r4, r7 - lsls r0, 2 - add r0, r9 - strh r3, [r0, 0x24] - strh r3, [r0, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_0809989C: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080998A8: .4byte gSprites -_080998AC: .4byte gTasks - thumb_func_end sub_8099788 - - thumb_func_start sub_80998B0 -sub_80998B0: @ 80998B0 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r6, _080998FC @ =gBattleAnimArgs - ldrb r0, [r6, 0x6] - bl GetAnimBankSpriteId - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldrb r1, [r6, 0x8] - adds r0, r5, 0 - bl sub_80758E0 - ldr r1, _08099900 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r6] - strh r1, [r0, 0x8] - ldrh r1, [r6, 0x2] - strh r1, [r0, 0xA] - ldrh r1, [r6, 0x4] - strh r1, [r0, 0xC] - ldrh r1, [r6, 0x4] - strh r1, [r0, 0xE] - strh r5, [r0, 0x10] - movs r1, 0x80 - lsls r1, 1 - strh r1, [r0, 0x1C] - strh r1, [r0, 0x1E] - ldr r1, _08099904 @ =sub_8099908 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080998FC: .4byte gBattleAnimArgs -_08099900: .4byte gTasks -_08099904: .4byte sub_8099908 - thumb_func_end sub_80998B0 - - thumb_func_start sub_8099908 -sub_8099908: @ 8099908 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, _08099968 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x8] - ldrh r1, [r4, 0x1C] - adds r0, r1 - strh r0, [r4, 0x1C] - ldrh r0, [r4, 0xA] - ldrh r3, [r4, 0x1E] - adds r0, r3 - strh r0, [r4, 0x1E] - ldrb r0, [r4, 0x10] - adds r6, r0, 0 - movs r0, 0x1C - ldrsh r1, [r4, r0] - movs r3, 0x1E - ldrsh r2, [r4, r3] - adds r0, r6, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrh r0, [r4, 0xC] - subs r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - bne _08099978 - ldrh r2, [r4, 0xE] - movs r3, 0xE - ldrsh r0, [r4, r3] - cmp r0, 0 - ble _0809996C - ldrh r0, [r4, 0x8] - negs r0, r0 - strh r0, [r4, 0x8] - ldrh r0, [r4, 0xA] - negs r0, r0 - strh r0, [r4, 0xA] - strh r2, [r4, 0xC] - strh r1, [r4, 0xE] - b _08099978 - .align 2, 0 -_08099968: .4byte gTasks -_0809996C: - adds r0, r6, 0 - bl sub_8075980 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_08099978: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8099908 - - thumb_func_start sub_8099980 -sub_8099980: @ 8099980 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r4, _080999BC @ =gBattleAnimArgs - ldrb r0, [r4, 0x4] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r1, 0 - bl sub_80758E0 - ldr r1, _080999C0 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r2, r0, r1 - movs r1, 0 - strh r1, [r2, 0xA] - ldrh r0, [r4] - strh r0, [r2, 0xC] - movs r3, 0x6 - ldrsh r0, [r4, r3] - cmp r0, 0x1 - beq _080999C4 - strh r1, [r2, 0xE] - b _080999D0 - .align 2, 0 -_080999BC: .4byte gBattleAnimArgs -_080999C0: .4byte gTasks -_080999C4: - ldrh r0, [r4] - ldrh r1, [r4, 0x2] - adds r3, r0, 0 - muls r3, r1 - adds r0, r3, 0 - strh r0, [r2, 0xE] -_080999D0: - ldr r1, _080999FC @ =gTasks - lsls r4, r7, 2 - adds r0, r4, r7 - lsls r0, 3 - adds r5, r0, r1 - ldr r6, _08099A00 @ =gBattleAnimArgs - ldrh r0, [r6, 0x2] - strh r0, [r5, 0x10] - mov r0, r8 - strh r0, [r5, 0x12] - ldrh r0, [r6, 0x6] - strh r0, [r5, 0x14] - bl sub_8073788 - lsls r0, 24 - mov r8, r4 - cmp r0, 0 - beq _08099A04 - movs r0, 0x1 - strh r0, [r5, 0x16] - b _08099A28 - .align 2, 0 -_080999FC: .4byte gTasks -_08099A00: .4byte gBattleAnimArgs -_08099A04: - movs r1, 0x4 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _08099A14 - ldr r0, _08099A10 @ =gBattleAnimAttacker - b _08099A16 - .align 2, 0 -_08099A10: .4byte gBattleAnimAttacker -_08099A14: - ldr r0, _08099A6C @ =gBattleAnimTarget -_08099A16: - ldrb r0, [r0] - bl GetBattlerSide - movs r1, 0 - lsls r0, 24 - cmp r0, 0 - bne _08099A26 - movs r1, 0x1 -_08099A26: - strh r1, [r5, 0x16] -_08099A28: - ldr r0, _08099A70 @ =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r4, r1, r0 - movs r3, 0x16 - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _08099A54 - bl sub_8073788 - lsls r0, 24 - cmp r0, 0 - bne _08099A54 - movs r1, 0xE - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0xE] - movs r2, 0x10 - ldrsh r0, [r4, r2] - negs r0, r0 - strh r0, [r4, 0x10] -_08099A54: - ldr r0, _08099A70 @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r1, r0 - ldr r0, _08099A74 @ =sub_8099B54 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08099A6C: .4byte gBattleAnimTarget -_08099A70: .4byte gTasks -_08099A74: .4byte sub_8099B54 - thumb_func_end sub_8099980 - - thumb_func_start sub_8099A78 -sub_8099A78: @ 8099A78 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _08099AB4 @ =gBattleAnimArgs - ldrb r0, [r4, 0x4] - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r1, 0 - bl sub_80758E0 - ldr r1, _08099AB8 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0xA] - ldrh r1, [r4] - strh r1, [r0, 0xC] - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08099AC0 - ldr r0, _08099ABC @ =gBattleAnimAttacker - b _08099AC2 - .align 2, 0 -_08099AB4: .4byte gBattleAnimArgs -_08099AB8: .4byte gTasks -_08099ABC: .4byte gBattleAnimAttacker -_08099AC0: - ldr r0, _08099AF0 @ =gBattleAnimTarget -_08099AC2: - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08099AD4 - ldrh r0, [r4, 0x2] - negs r0, r0 - strh r0, [r4, 0x2] -_08099AD4: - ldr r0, _08099AF4 @ =gBattleAnimArgs - movs r2, 0x6 - ldrsh r1, [r0, r2] - adds r6, r0, 0 - cmp r1, 0x1 - beq _08099AFC - ldr r2, _08099AF8 @ =gTasks - lsls r3, r5, 2 - adds r0, r3, r5 - lsls r0, 3 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0xE] - b _08099B16 - .align 2, 0 -_08099AF0: .4byte gBattleAnimTarget -_08099AF4: .4byte gBattleAnimArgs -_08099AF8: .4byte gTasks -_08099AFC: - ldr r3, _08099B4C @ =gTasks - lsls r4, r5, 2 - adds r0, r4, r5 - lsls r0, 3 - adds r0, r3 - ldrh r2, [r6] - ldrh r1, [r6, 0x2] - adds r7, r2, 0 - muls r7, r1 - adds r1, r7, 0 - strh r1, [r0, 0xE] - adds r2, r3, 0 - adds r3, r4, 0 -_08099B16: - adds r1, r3, r5 - lsls r1, 3 - adds r1, r2 - ldrh r0, [r6, 0x2] - strh r0, [r1, 0x10] - mov r0, r8 - strh r0, [r1, 0x12] - ldrh r0, [r6, 0x6] - strh r0, [r1, 0x14] - movs r0, 0x1 - strh r0, [r1, 0x16] - movs r2, 0xE - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0xE] - movs r7, 0x10 - ldrsh r0, [r1, r7] - negs r0, r0 - strh r0, [r1, 0x10] - ldr r0, _08099B50 @ =sub_8099B54 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08099B4C: .4byte gTasks -_08099B50: .4byte sub_8099B54 - thumb_func_end sub_8099A78 - - thumb_func_start sub_8099B54 -sub_8099B54: @ 8099B54 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08099BAC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x10] - ldrh r1, [r4, 0xE] - adds r0, r1 - strh r0, [r4, 0xE] - ldrb r0, [r4, 0x12] - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0xE] - adds r1, r2, 0 - bl obj_id_set_rotscale - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08099B88 - ldrb r0, [r4, 0x12] - bl sub_80759DC -_08099B88: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r2, 0xC - ldrsh r1, [r4, r2] - cmp r0, r1 - blt _08099BCE - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08099BB0 - cmp r0, 0x1 - ble _08099BB6 - cmp r0, 0x2 - beq _08099BBE - b _08099BB6 - .align 2, 0 -_08099BAC: .4byte gTasks -_08099BB0: - ldrb r0, [r4, 0x12] - bl sub_8075980 -_08099BB6: - adds r0, r5, 0 - bl DestroyAnimVisualTask - b _08099BCE -_08099BBE: - movs r0, 0 - strh r0, [r4, 0xA] - movs r2, 0x10 - ldrsh r0, [r4, r2] - negs r0, r0 - strh r0, [r4, 0x10] - movs r0, 0x1 - strh r0, [r4, 0x14] -_08099BCE: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8099B54 - - thumb_func_start sub_8099BD4 -sub_8099BD4: @ 8099BD4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _08099C00 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r0, r2] - mov r8, r0 - cmp r1, 0 - bne _08099C0C - ldr r4, _08099C04 @ =gTasks - lsls r5, r7, 2 - adds r0, r5, r7 - lsls r0, 3 - adds r6, r0, r4 - ldr r0, _08099C08 @ =gUnknown_2037EEC - ldrh r0, [r0] - movs r1, 0xC - bl __udivsi3 - b _08099C20 - .align 2, 0 -_08099C00: .4byte gBattleAnimArgs -_08099C04: .4byte gTasks -_08099C08: .4byte gUnknown_2037EEC -_08099C0C: - ldr r4, _08099CA8 @ =gTasks - lsls r5, r7, 2 - adds r0, r5, r7 - lsls r0, 3 - adds r6, r0, r4 - ldr r0, _08099CAC @ =gUnknown_2037EE8 - ldr r0, [r0] - movs r1, 0xC - bl __divsi3 -_08099C20: - strh r0, [r6, 0x26] - lsls r0, 16 - adds r1, r4, 0 - cmp r0, 0 - bgt _08099C2E - movs r0, 0x1 - strh r0, [r6, 0x26] -_08099C2E: - movs r2, 0x26 - ldrsh r0, [r6, r2] - cmp r0, 0x10 - ble _08099C3A - movs r0, 0x10 - strh r0, [r6, 0x26] -_08099C3A: - adds r4, r5, r7 - lsls r4, 3 - adds r4, r1 - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - movs r5, 0 - strh r1, [r4, 0x24] - ldrh r2, [r4, 0x26] - movs r0, 0x1 - ands r0, r2 - adds r1, r0 - strh r1, [r4, 0x22] - strh r5, [r4, 0x20] - mov r1, r8 - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x1C] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x1E] - movs r0, 0x1 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x16] - ldr r2, _08099CB0 @ =gSprites - movs r0, 0x16 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x24] - strh r0, [r4, 0x18] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x26] - strh r0, [r4, 0x1A] - strh r5, [r4, 0x8] - mov r1, r8 - ldrh r0, [r1, 0x2] - strh r0, [r4, 0xA] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0xC] - ldr r0, _08099CB4 @ =sub_8099CB8 - str r0, [r4] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08099CA8: .4byte gTasks -_08099CAC: .4byte gUnknown_2037EE8 -_08099CB0: .4byte gSprites -_08099CB4: .4byte sub_8099CB8 - thumb_func_end sub_8099BD4 - - thumb_func_start sub_8099CB8 -sub_8099CB8: @ 8099CB8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08099D0C @ =gTasks - adds r3, r0, r1 - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - lsls r0, 16 - asrs r0, 16 - movs r2, 0xA - ldrsh r1, [r3, r2] - cmp r0, r1 - ble _08099D96 - movs r0, 0 - strh r0, [r3, 0x8] - ldrh r0, [r3, 0x20] - adds r1, r0, 0x1 - movs r0, 0x1 - ands r1, r0 - strh r1, [r3, 0x20] - movs r2, 0x1C - ldrsh r0, [r3, r2] - cmp r0, 0 - beq _08099D2A - cmp r1, 0 - beq _08099D14 - ldr r2, _08099D10 @ =gSprites - movs r0, 0x16 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x22] - ldrh r2, [r3, 0x18] - adds r1, r2 - b _08099D28 - .align 2, 0 -_08099D0C: .4byte gTasks -_08099D10: .4byte gSprites -_08099D14: - ldr r2, _08099D50 @ =gSprites - movs r0, 0x16 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x18] - ldrh r2, [r3, 0x24] - subs r1, r2 -_08099D28: - strh r1, [r0, 0x24] -_08099D2A: - movs r1, 0x1E - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _08099D64 - movs r2, 0x20 - ldrsh r4, [r3, r2] - cmp r4, 0 - beq _08099D54 - ldr r2, _08099D50 @ =gSprites - movs r0, 0x16 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x26] - strh r1, [r0, 0x26] - b _08099D64 - .align 2, 0 -_08099D50: .4byte gSprites -_08099D54: - ldr r2, _08099D9C @ =gSprites - movs r0, 0x16 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r4, [r0, 0x26] -_08099D64: - ldrh r0, [r3, 0xC] - subs r0, 0x1 - strh r0, [r3, 0xC] - lsls r0, 16 - asrs r4, r0, 16 - cmp r4, 0 - bne _08099D96 - ldr r2, _08099D9C @ =gSprites - movs r0, 0x16 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r4, [r0, 0x24] - movs r0, 0x16 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r4, [r0, 0x26] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_08099D96: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08099D9C: .4byte gSprites - thumb_func_end sub_8099CB8 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_80DE2C0.s b/asm/battle_anim_80DE2C0.s deleted file mode 100644 index 74f6ef9fc..000000000 --- a/asm/battle_anim_80DE2C0.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 sub_8074480 - 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 sub_8074480 - 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 @ =sub_8074C44 - 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 sub_8074C44 -_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 sub_8074480 - lsls r0, 24 - lsrs r0, 24 - adds r7, r0, 0 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8075114 - 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 sub_8075B30 - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 23 - adds r0, r1 - lsrs r4, r0, 16 - bl sub_8073788 - 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 sub_8075A1C - ldr r0, _080DE4D0 @ =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r5, 0x2E] - strh r7, [r5, 0x32] - strh r6, [r5, 0x36] - ldr r0, _080DE4D4 @ =sub_8075590 - 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 sub_8075590 -_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 @ =gUnknown_2037EE2 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - bx lr - .align 2, 0 -_080DE70C: .4byte gTasks -_080DE710: .4byte sub_80DE718 -_080DE714: .4byte gUnknown_2037EE2 - 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 @ =gUnknown_2037EE2 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - bx lr - .align 2, 0 -_080DE7D0: .4byte gTasks -_080DE7D4: .4byte sub_80DE7DC -_080DE7D8: .4byte gUnknown_2037EE2 - 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 sub_8075160 - ldr r0, _080DE914 @ =gBattleAnimTarget - ldrb r0, [r0] - mov r5, sp - adds r5, 0x2 - movs r1, 0 - mov r2, sp - adds r3, r5, 0 - bl sub_8076D9C - 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 sub_8075068 - 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 AnimateBallThrow - 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 @ =sub_8074C44 - 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 sub_8074C44 -_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 sub_8074FCC - ldr r5, _080DE9CC @ =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl sub_8074FF8 - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _080DE9D0 @ =sub_8074F6C - 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 sub_8074F6C -_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 sub_8074FCC - ldr r5, _080DEA14 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r5, r2] - adds r0, r4, 0 - bl sub_8074FF8 - bl sub_8073788 - 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 @ =gUnknown_2037EE8 - ldr r0, [r0] - cmp r0, 0 - ble _080DEB0C - ldr r1, _080DEB08 @ =gBattleAnimArgs - movs r0, 0 - b _080DEB10 - .align 2, 0 -_080DEB04: .4byte gUnknown_2037EE8 -_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 @ =gUnknown_2022984 - movs r1, 0 - strh r1, [r0] - ldr r4, _080DEB84 @ =gUnknown_2022986 - 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 sub_8075114 - 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 gUnknown_2022984 -_080DEB84: .4byte gUnknown_2022986 -_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 sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8074480 - 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 sub_8073A44 - 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 sub_8073788 - lsls r0, 24 - cmp r0, 0 - beq _080DEE2C - ldr r1, _080DEE14 @ =0x00001f3f - movs r0, 0x48 - bl SetGpuReg - ldr r1, _080DEE18 @ =gUnknown_2022988 - ldr r2, _080DEE1C @ =0x000098f0 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _080DEE20 @ =gUnknown_202298A - movs r0, 0xA0 - strh r0, [r1] - ldr r0, _080DEE24 @ =gUnknown_2022984 - ldrh r1, [r0] - movs r0, 0x42 - bl SetGpuReg - ldr r0, _080DEE28 @ =gUnknown_2022986 - ldrh r1, [r0] - movs r0, 0x46 - bl SetGpuReg - b _080DEE5C - .align 2, 0 -_080DEE14: .4byte 0x00001f3f -_080DEE18: .4byte gUnknown_2022988 -_080DEE1C: .4byte 0x000098f0 -_080DEE20: .4byte gUnknown_202298A -_080DEE24: .4byte gUnknown_2022984 -_080DEE28: .4byte gUnknown_2022986 -_080DEE2C: - ldr r1, _080DEE68 @ =0x00001f3f - movs r0, 0x48 - bl SetGpuReg - ldr r1, _080DEE6C @ =gUnknown_2022988 - movs r0, 0xF0 - strh r0, [r1] - ldr r4, _080DEE70 @ =gUnknown_202298A - 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 gUnknown_2022988 -_080DEE70: .4byte gUnknown_202298A -_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 @ =gUnknown_2022988 - movs r1, 0 - strh r1, [r0] - ldr r0, _080DEEB8 @ =gUnknown_202298A - strh r1, [r0] - bl sub_8073788 - 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 gUnknown_2022988 -_080DEEB8: .4byte gUnknown_202298A - 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 sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x2] - adds r0, r6 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8074480 - 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 sub_807492C - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - bl sub_80768B0 - 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 sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0xC] - ldrb r0, [r6] - movs r1, 0x3 - bl sub_8074480 - 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 GetAnimBankSpriteId - 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 sub_8073A44 - 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 sub_80762D0 - 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 sub_8076308 - 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 sub_8075160 -_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 sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - ldr r0, _080DF520 @ =sub_8075590 - str r0, [r5, 0x1C] -_080DF510: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DF518: .4byte DestroyAnimSprite -_080DF51C: .4byte gBattleAnimTarget -_080DF520: .4byte sub_8075590 - 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 GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080DF564 @ =gUnknown_83FF130 - adds r0, r4, 0 - bl sub_80762D0 - 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 sub_8076308 - 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 GetAnimBankSpriteId - 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 sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - adds r0, r6, 0 - movs r1, 0 - bl sub_80758E0 - 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 obj_id_set_rotscale - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _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 obj_id_set_rotscale - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bne _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 sub_8075980 -_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 GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080DF884 @ =gUnknown_83FF198 - adds r0, r4, 0 - bl sub_80762D0 - 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 sub_8076308 - 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 GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080DF8DC @ =gUnknown_83FF1C0 - adds r0, r4, 0 - bl sub_80762D0 - 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 sub_8076308 - 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 sub_8075160 - movs r0, 0x90 - lsls r0, 4 - strh r0, [r4, 0x30] - ldr r0, _080DF930 @ =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0x3 - bl sub_8074480 - 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 GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080DF9A0 @ =gUnknown_83FF210 - adds r0, r4, 0 - bl sub_80762D0 - 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 sub_8076308 - 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 sub_80768B0 - 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 sub_8034BF4 - ldrb r1, [r6] - mov r0, sp - bl sub_8075300 - bl sub_8073788 - 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 sub_80768B0 - 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 sub_8073788 - 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 @ =gUnknown_2024018 - ldr r1, [r1] - ldr r2, [r1] - lsls r1, r0, 2 - adds r1, r2 - ldrh r1, [r1, 0x2] - bl SetBankEnemyShadowSpriteCallback -_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 gUnknown_2024018 - 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 sub_8034BF4 - 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 sub_8073788 - 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 sub_807543C - 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 sub_80753B4 - 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 sub_8073788 - 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 sub_8073A44 - 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 sub_8073788 - 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 sub_8074480 - lsls r0, 24 - lsrs r0, 24 - adds r0, r5 - strh r0, [r7, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_8074480 - 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 sub_8073788 - 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 sub_807543C - 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 sub_80753B4 - 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 sub_8073788 - 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 sub_8075290 - 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 sub_8073788 - 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 GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080E04C4 @ =gUnknown_83FF290 - adds r0, r4, 0 - bl sub_80762D0 - 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 sub_8076308 - 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 sub_8075160 - 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 GetAnimBankSpriteId - 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 sub_80758E0 - 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 obj_id_set_rotscale - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl sub_80759DC - 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 obj_id_set_rotscale - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl sub_80759DC - 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 obj_id_set_rotscale - ldrh r0, [r4, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl sub_80759DC - 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 sub_8075980 - 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 GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - movs r1, 0 - bl sub_80758E0 - 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 sub_8075980 - 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 obj_id_set_rotscale - ldrh r0, [r7, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl sub_80759DC - 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 sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - 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 GetAnimBankSpriteId - 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 sub_80758E0 - 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 obj_id_set_rotscale - adds r0, r5, 0 - bl sub_8076440 - 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 obj_id_set_rotscale - adds r0, r5, 0 - bl sub_8076440 - bl sub_8073788 - 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 sub_8075980 - 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 @ =gUnknown_2022984 - movs r1, 0 - strh r1, [r0] - ldr r4, _080E0DE0 @ =gUnknown_2022986 - 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 sub_8075114 - 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 gUnknown_2022984 -_080E0DE0: .4byte gUnknown_2022986 -_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 sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8074480 - 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 sub_807685C - subs r0, 0x1 - b _080E0F32 - .align 2, 0 -_080E0F24: .4byte gBattleAnimAttacker -_080E0F28: - ldr r0, _080E0F74 @ =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_807685C - 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 GetAnimBankSpriteId - 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 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_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 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_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 sub_8076884 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r5, _080E1200 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0 - bl sub_8074480 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r5] - movs r1, 0x1 - bl sub_8074480 - 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 sub_8075A1C - 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 sub_8076B20 - ldr r0, _080E12F4 @ =sub_8074FA8 - 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 sub_8074FA8 - 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 sub_807492C - 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 GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - adds r0, r5, 0 - bl sub_80768B0 - 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 sub_80768B0 - 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 GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r4, 0x26] - ldr r2, _080E1744 @ =gUnknown_83FF3D0 - adds r0, r4, 0 - bl sub_80762D0 - 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 sub_8076308 - 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 sub_8074FCC - 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 move_anim_8074EE0 -_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 sub_8074480 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x2] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - 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 @ =gUnknown_2037EE2 - 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 gUnknown_2037EE2 - 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 sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x10] - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x12] - adds r0, r4, 0 - bl sub_807685C - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x14] - ldr r0, _080E1DF4 @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r5, 0x26] - ldr r2, _080E1DF8 @ =gUnknown_83FF52C - adds r0, r5, 0 - bl sub_80762D0 - 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 sub_8076308 - 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 sub_80762D0 - 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 GetAnimBankSpriteId - 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 sub_8074480 - 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 sub_8074480 - 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 sub_8074480 - adds r4, r0, 0 - ldrb r0, [r5] - movs r1, 0 - bl sub_8076B2C - 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 sub_8074480 - adds r4, r0, 0 - ldrb r0, [r5] - movs r1, 0 - bl sub_8076B2C - 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 sub_8074480 - adds r4, r0, 0 - ldrb r0, [r5] - movs r1, 0 - bl sub_8076B2C - 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 sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x22] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - 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 @ =sub_8075764 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E250C: .4byte gBattleAnimArgs -_080E2510: .4byte DestroyAnimSprite -_080E2514: .4byte sub_8075764 - 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 sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x1E] - mov r1, r10 - ldrb r0, [r1] - movs r1, 0x3 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x20] - ldr r0, _080E2640 @ =gBattleAnimTarget - mov r8, r0 - ldrb r0, [r0] - movs r1, 0x2 - bl sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x22] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x3 - bl sub_8074480 - adds r4, r0, 0 - mov r1, r8 - ldrb r0, [r1] - movs r1, 0 - bl sub_8076B2C - 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 sub_807685C - 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 sub_8075068 - 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 AnimateBallThrow - 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 AnimateBallThrow - 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 sub_8074480 - 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 sub_8076B2C - 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 sub_8076B2C - 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 GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r4, 0x26] - ldr r2, _080E292C @ =gUnknown_83FF65C - adds r0, r4, 0 - bl sub_80762D0 - 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 sub_8076308 - 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 sub_80762D0 - 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 sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8076B2C - 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 GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x26] - bl sub_8075290 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x1 - bne _080E2D44 - ldr r5, _080E2D38 @ =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0 - bl sub_8074480 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r1, [r5] - movs r0, 0x2 - eors r0, r1 - movs r1, 0 - bl sub_8074480 - 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 sub_8075160 - 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 sub_8076884 - 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 sub_8076B2C - 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 sub_8076B2C - subs r0, 0x4 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl sub_8076B2C - adds r0, 0x4 - b _080E3076 -_080E303A: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x4 - bl sub_8076B2C - 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 sub_8076B2C - 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 sub_8076B2C - 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 sub_8074480 - lsls r0, 24 - lsrs r5, r0, 24 - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - bl sub_8074480 - 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 obj_translate_based_on_private_1_2_3_4 - b _080E3188 -_080E30C8: - adds r0, r4, 0 - bl sub_80755E0 - 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 sub_8074480 - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8074480 - 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 GetAnimBankSpriteId - 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 sub_80758E0 - 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 obj_id_set_rotscale - 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 sub_8075980 - 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 GetAnimBankSpriteId - 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 sub_8073A44 - 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 sub_8073A44 - 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 sub_807685C - 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 sub_807685C - 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 sub_8074480 - 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 sub_8073A44 - 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 sub_8073A44 - 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 sub_8073A44 - 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 duplicate_obj_of_side_rel2move_in_transparent_mode - lsls r0, 16 - lsrs r1, r0, 16 - str r1, [sp] - asrs r6, r0, 16 - cmp r6, 0 - blt _080E36A6 - movs r0, 0x1 - bl duplicate_obj_of_side_rel2move_in_transparent_mode - 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 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_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 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_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 @ =gUnknown_2037EFE - 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 gUnknown_2037EFE - 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 GetAnimBankSpriteId - 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 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_080E3AA0: - ldrh r5, [r1, 0x2] -_080E3AA2: - movs r0, 0x1 - bl GetAnimBankSpriteId - 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 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_080E3B30: - ldrh r5, [r1, 0x2] -_080E3B32: - movs r0, 0x1 - bl GetAnimBankSpriteId - 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 sub_8074480 - 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 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_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 sub_8074480 - 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 sub_8074480 - 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 GetAnimBankSpriteId - 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 sub_8076B20 - 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 GetAnimBankSpriteId - 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 sub_8074480 - 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 sub_8074480 - 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 sub_8073A44 - 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 sub_8074480 - 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 GetAnimBankSpriteId - 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 sub_8074480 - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r0, _080E404C @ =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0 - bl sub_8074480 - 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 GetAnimBankSpriteId - 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 sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8076B2C - 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 move_anim_8074EE0 -_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 @ =gUnknown_2037F00 - 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 gUnknown_2037F00 -_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 GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r4, 0x26] - ldr r2, _080E4580 @ =gUnknown_83FF7A8 - adds r0, r4, 0 - bl sub_80762D0 - 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 sub_8076308 - 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_80EEC0C.s b/asm/battle_anim_80EEC0C.s deleted file mode 100644 index 704a1e9a7..000000000 --- a/asm/battle_anim_80EEC0C.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 @ =gUnknown_2022984 - movs r1, 0 - strh r1, [r0] - ldr r0, _080EEDBC @ =gUnknown_2022986 - 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 @ =gUnknown_3004FF0 - 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 sub_807543C - 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 sub_80753B4 - 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 gUnknown_2022984 -_080EEDBC: .4byte gUnknown_2022986 -_080EEDC0: .4byte 0x00003f3f -_080EEDC4: .4byte 0x00003f3d -_080EEDC8: .4byte 0x00003f42 -_080EEDCC: .4byte gUnknown_3004FF0 -_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 @ =gUnknown_2022984 - strh r4, [r0] - ldr r0, _080EEFB8 @ =gUnknown_2022986 - 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 sub_8073788 - 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 @ =gUnknown_3004FF0 - 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 gUnknown_2022984 -_080EEFB8: .4byte gUnknown_2022986 -_080EEFBC: .4byte 0x00003f3f -_080EEFC0: .4byte gSprites -_080EEFC4: .4byte gUnknown_3004FF0 - 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 @ =gUnknown_3004FF0 - 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 gUnknown_3004FF0 -_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 @ =gUnknown_3004FF0 - 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 gUnknown_3004FF0 -_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 sub_80758E0 - 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 obj_id_set_rotscale - adds r0, r5, 0 - bl sub_8076440 - 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 sub_8075980 - 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 sub_8074480 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r5] - movs r1, 0x1 - bl sub_8074480 - 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 @ =gUnknown_2023D68 - 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 gUnknown_2023D68 - 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 @ =gUnknown_2023D68 - 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 gUnknown_2023D68 - 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 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_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 @ =gUnknown_2023D68 - 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 sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x30] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x1 - bl sub_8074480 - 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 @ =gUnknown_2024018 - 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 gUnknown_2023D68 -_080EF678: .4byte gUnknown_82606F4 -_080EF67C: .4byte gSprites -_080EF680: .4byte gBattleAnimTarget -_080EF684: .4byte sub_80EF8C0 -_080EF688: .4byte gUnknown_2024018 -_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 @ =gUnknown_2023D68 - 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 sub_807685C - 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 sub_8074480 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x30] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x1 - bl sub_8074480 - 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 gUnknown_2023D68 -_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 sub_8075068 - 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 AnimateBallThrow - lsls r0, 24 - cmp r0, 0 - beq _080EF99E - ldr r0, _080EF914 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_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 @ =gUnknown_2023D68 - 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 gUnknown_2023D68 -_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 sub_80758E0 - 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 obj_id_set_rotscale - 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 sub_8075980 - 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 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_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 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_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 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_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 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_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 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_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 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_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 @ =gUnknown_2024005 - 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 gUnknown_2024005 -_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 sub_8075068 - 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 AnimateBallThrow - 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 @ =gUnknown_2023D68 - 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 gUnknown_2023D68 -_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 @ =gUnknown_2024018 - 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 @ =gUnknown_2024005 - 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 gUnknown_2024018 -_080F0470: .4byte sub_80F018C -_080F0474: .4byte gUnknown_2024005 - 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 @ =gUnknown_2024005 - 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 gUnknown_2024005 - 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 sub_8075068 - adds r0, r4, 0 - bl sub_80750C8 - 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 sub_80750C8 - 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 @ =gUnknown_2024005 - strb r1, [r0] - movs r0, 0x1 - bl UpdateOamPriorityInAllHealthboxes -_080F05A4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F05AC: .4byte sub_80F018C -_080F05B0: .4byte gUnknown_2024005 - 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 sub_800F034 - ldr r0, _080F05E8 @ =gUnknown_840BFA8 - adds r0, r5, r0 - bl sub_800F078 -_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 @ =gUnknown_2024018 - 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 gUnknown_2024018 - 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 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_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 sub_80768B0 - 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 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_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 @ =gUnknown_2023D6E - ldrb r1, [r1] - strb r1, [r2] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .align 2, 0 -_080F1718: .4byte gBattleAnimTarget -_080F171C: .4byte gUnknown_2023D6E - 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 @ =gUnknown_2024018 - 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 sub_8072DF0 - 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 sub_800F034 - ldr r0, _080F17EC @ =gUnknown_83ADC58 - bl sub_800F078 -_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 gUnknown_2024018 -_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 @ =gUnknown_2024018 - 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 gUnknown_2024018 - 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 @ =gUnknown_2024018 - 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 sub_8074480 - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r8 - movs r1, 0x1 - bl sub_8074480 - 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 gUnknown_2024018 -_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 @ =gUnknown_2024018 - 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 gUnknown_2024018 - 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 sub_800F034 - ldr r0, _080F1B0C @ =gUnknown_83ADD78 - bl sub_800F078 - 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 sub_8075160 - movs r0, 0x1E - strh r0, [r4, 0x2E] - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_8074480 - 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 sub_8074480 - 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 sub_8075068 - 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 AnimateBallThrow - 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 @ =gUnknown_2023E82 - ldrb r0, [r2, 0x5] - cmp r0, 0x2 - bls _080F1D00 - ldr r1, _080F1CFC @ =gBattleAnimArgs - movs r0, 0 - b _080F1D04 - .align 2, 0 -_080F1CF8: .4byte gUnknown_2023E82 -_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 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_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 @ =gUnknown_2024018 - 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 gUnknown_2024018 -_080F1DA8: .4byte gBattleAnimTarget - thumb_func_end sub_80F1D7C - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_effects_3.s b/asm/battle_anim_effects_3.s new file mode 100644 index 000000000..74f6ef9fc --- /dev/null +++ b/asm/battle_anim_effects_3.s @@ -0,0 +1,12857 @@ + .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 sub_8074480 + 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 sub_8074480 + 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 @ =sub_8074C44 + 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 sub_8074C44 +_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 sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r7, r0, 0 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8075114 + 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 sub_8075B30 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 23 + adds r0, r1 + lsrs r4, r0, 16 + bl sub_8073788 + 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 sub_8075A1C + ldr r0, _080DE4D0 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r5, 0x2E] + strh r7, [r5, 0x32] + strh r6, [r5, 0x36] + ldr r0, _080DE4D4 @ =sub_8075590 + 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 sub_8075590 +_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 @ =gUnknown_2037EE2 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + bx lr + .align 2, 0 +_080DE70C: .4byte gTasks +_080DE710: .4byte sub_80DE718 +_080DE714: .4byte gUnknown_2037EE2 + 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 @ =gUnknown_2037EE2 + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + bx lr + .align 2, 0 +_080DE7D0: .4byte gTasks +_080DE7D4: .4byte sub_80DE7DC +_080DE7D8: .4byte gUnknown_2037EE2 + 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 sub_8075160 + ldr r0, _080DE914 @ =gBattleAnimTarget + ldrb r0, [r0] + mov r5, sp + adds r5, 0x2 + movs r1, 0 + mov r2, sp + adds r3, r5, 0 + bl sub_8076D9C + 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 sub_8075068 + 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 AnimateBallThrow + 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 @ =sub_8074C44 + 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 sub_8074C44 +_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 sub_8074FCC + ldr r5, _080DE9CC @ =gBattleAnimArgs + movs r0, 0 + ldrsh r1, [r5, r0] + adds r0, r4, 0 + bl sub_8074FF8 + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r0, _080DE9D0 @ =sub_8074F6C + 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 sub_8074F6C +_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 sub_8074FCC + ldr r5, _080DEA14 @ =gBattleAnimArgs + movs r2, 0 + ldrsh r1, [r5, r2] + adds r0, r4, 0 + bl sub_8074FF8 + bl sub_8073788 + 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 @ =gUnknown_2037EE8 + ldr r0, [r0] + cmp r0, 0 + ble _080DEB0C + ldr r1, _080DEB08 @ =gBattleAnimArgs + movs r0, 0 + b _080DEB10 + .align 2, 0 +_080DEB04: .4byte gUnknown_2037EE8 +_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 @ =gUnknown_2022984 + movs r1, 0 + strh r1, [r0] + ldr r4, _080DEB84 @ =gUnknown_2022986 + 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 sub_8075114 + 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 gUnknown_2022984 +_080DEB84: .4byte gUnknown_2022986 +_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 sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + 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 sub_8073A44 + 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 sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _080DEE2C + ldr r1, _080DEE14 @ =0x00001f3f + movs r0, 0x48 + bl SetGpuReg + ldr r1, _080DEE18 @ =gUnknown_2022988 + ldr r2, _080DEE1C @ =0x000098f0 + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _080DEE20 @ =gUnknown_202298A + movs r0, 0xA0 + strh r0, [r1] + ldr r0, _080DEE24 @ =gUnknown_2022984 + ldrh r1, [r0] + movs r0, 0x42 + bl SetGpuReg + ldr r0, _080DEE28 @ =gUnknown_2022986 + ldrh r1, [r0] + movs r0, 0x46 + bl SetGpuReg + b _080DEE5C + .align 2, 0 +_080DEE14: .4byte 0x00001f3f +_080DEE18: .4byte gUnknown_2022988 +_080DEE1C: .4byte 0x000098f0 +_080DEE20: .4byte gUnknown_202298A +_080DEE24: .4byte gUnknown_2022984 +_080DEE28: .4byte gUnknown_2022986 +_080DEE2C: + ldr r1, _080DEE68 @ =0x00001f3f + movs r0, 0x48 + bl SetGpuReg + ldr r1, _080DEE6C @ =gUnknown_2022988 + movs r0, 0xF0 + strh r0, [r1] + ldr r4, _080DEE70 @ =gUnknown_202298A + 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 gUnknown_2022988 +_080DEE70: .4byte gUnknown_202298A +_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 @ =gUnknown_2022988 + movs r1, 0 + strh r1, [r0] + ldr r0, _080DEEB8 @ =gUnknown_202298A + strh r1, [r0] + bl sub_8073788 + 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 gUnknown_2022988 +_080DEEB8: .4byte gUnknown_202298A + 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 sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x2] + adds r0, r6 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + 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 sub_807492C + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + bl sub_80768B0 + 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 sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0xC] + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8074480 + 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 GetAnimBankSpriteId + 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 sub_8073A44 + 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 sub_80762D0 + 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 sub_8076308 + 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 sub_8075160 +_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 sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + ldr r0, _080DF520 @ =sub_8075590 + str r0, [r5, 0x1C] +_080DF510: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080DF518: .4byte DestroyAnimSprite +_080DF51C: .4byte gBattleAnimTarget +_080DF520: .4byte sub_8075590 + 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 GetAnimBankSpriteId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080DF564 @ =gUnknown_83FF130 + adds r0, r4, 0 + bl sub_80762D0 + 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 sub_8076308 + 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 GetAnimBankSpriteId + 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 sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + adds r0, r6, 0 + movs r1, 0 + bl sub_80758E0 + 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 obj_id_set_rotscale + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + bne _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 obj_id_set_rotscale + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x9 + bne _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 sub_8075980 +_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 GetAnimBankSpriteId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080DF884 @ =gUnknown_83FF198 + adds r0, r4, 0 + bl sub_80762D0 + 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 sub_8076308 + 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 GetAnimBankSpriteId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080DF8DC @ =gUnknown_83FF1C0 + adds r0, r4, 0 + bl sub_80762D0 + 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 sub_8076308 + 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 sub_8075160 + movs r0, 0x90 + lsls r0, 4 + strh r0, [r4, 0x30] + ldr r0, _080DF930 @ =gBattleAnimAttacker + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8074480 + 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 GetAnimBankSpriteId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080DF9A0 @ =gUnknown_83FF210 + adds r0, r4, 0 + bl sub_80762D0 + 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 sub_8076308 + 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 sub_80768B0 + 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 sub_8034BF4 + ldrb r1, [r6] + mov r0, sp + bl sub_8075300 + bl sub_8073788 + 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 sub_80768B0 + 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 sub_8073788 + 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 @ =gUnknown_2024018 + ldr r1, [r1] + ldr r2, [r1] + lsls r1, r0, 2 + adds r1, r2 + ldrh r1, [r1, 0x2] + bl SetBankEnemyShadowSpriteCallback +_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 gUnknown_2024018 + 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 sub_8034BF4 + 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 sub_8073788 + 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 sub_807543C + 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 sub_80753B4 + 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 sub_8073788 + 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 sub_8073A44 + 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 sub_8073788 + 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 sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, r5 + strh r0, [r7, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074480 + 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 sub_8073788 + 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 sub_807543C + 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 sub_80753B4 + 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 sub_8073788 + 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 sub_8075290 + 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 sub_8073788 + 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 GetAnimBankSpriteId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080E04C4 @ =gUnknown_83FF290 + adds r0, r4, 0 + bl sub_80762D0 + 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 sub_8076308 + 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 sub_8075160 + 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 GetAnimBankSpriteId + 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 sub_80758E0 + 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 obj_id_set_rotscale + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_80759DC + 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 obj_id_set_rotscale + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_80759DC + 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 obj_id_set_rotscale + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_80759DC + 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 sub_8075980 + 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 GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + movs r1, 0 + bl sub_80758E0 + 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 sub_8075980 + 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 obj_id_set_rotscale + ldrh r0, [r7, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_80759DC + 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 sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + 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 GetAnimBankSpriteId + 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 sub_80758E0 + 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 obj_id_set_rotscale + adds r0, r5, 0 + bl sub_8076440 + 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 obj_id_set_rotscale + adds r0, r5, 0 + bl sub_8076440 + bl sub_8073788 + 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 sub_8075980 + 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 @ =gUnknown_2022984 + movs r1, 0 + strh r1, [r0] + ldr r4, _080E0DE0 @ =gUnknown_2022986 + 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 sub_8075114 + 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 gUnknown_2022984 +_080E0DE0: .4byte gUnknown_2022986 +_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 sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + 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 sub_807685C + subs r0, 0x1 + b _080E0F32 + .align 2, 0 +_080E0F24: .4byte gBattleAnimAttacker +_080E0F28: + ldr r0, _080E0F74 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_807685C + 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 GetAnimBankSpriteId + 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 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_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 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_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 sub_8076884 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r5, _080E1200 @ =gBattleAnimAttacker + ldrb r0, [r5] + movs r1, 0 + bl sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + 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 sub_8075A1C + 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 sub_8076B20 + ldr r0, _080E12F4 @ =sub_8074FA8 + 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 sub_8074FA8 + 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 sub_807492C + 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 GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x26] + adds r0, r5, 0 + bl sub_80768B0 + 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 sub_80768B0 + 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 GetAnimBankSpriteId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + strh r1, [r4, 0x26] + ldr r2, _080E1744 @ =gUnknown_83FF3D0 + adds r0, r4, 0 + bl sub_80762D0 + 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 sub_8076308 + 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 sub_8074FCC + 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 move_anim_8074EE0 +_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 sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x2] + adds r0, r1 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + 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 @ =gUnknown_2037EE2 + 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 gUnknown_2037EE2 + 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 sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x10] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x12] + adds r0, r4, 0 + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x14] + ldr r0, _080E1DF4 @ =gBattleAnimArgs + ldrb r0, [r0] + bl GetAnimBankSpriteId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + strh r1, [r5, 0x26] + ldr r2, _080E1DF8 @ =gUnknown_83FF52C + adds r0, r5, 0 + bl sub_80762D0 + 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 sub_8076308 + 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 sub_80762D0 + 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 GetAnimBankSpriteId + 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 sub_8074480 + 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 sub_8074480 + 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 sub_8074480 + adds r4, r0, 0 + ldrb r0, [r5] + movs r1, 0 + bl sub_8076B2C + 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 sub_8074480 + adds r4, r0, 0 + ldrb r0, [r5] + movs r1, 0 + bl sub_8076B2C + 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 sub_8074480 + adds r4, r0, 0 + ldrb r0, [r5] + movs r1, 0 + bl sub_8076B2C + 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 sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x22] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + 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 @ =sub_8075764 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E250C: .4byte gBattleAnimArgs +_080E2510: .4byte DestroyAnimSprite +_080E2514: .4byte sub_8075764 + 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 sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7, 0x1E] + mov r1, r10 + ldrb r0, [r1] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7, 0x20] + ldr r0, _080E2640 @ =gBattleAnimTarget + mov r8, r0 + ldrb r0, [r0] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7, 0x22] + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x3 + bl sub_8074480 + adds r4, r0, 0 + mov r1, r8 + ldrb r0, [r1] + movs r1, 0 + bl sub_8076B2C + 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 sub_807685C + 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 sub_8075068 + 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 AnimateBallThrow + 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 AnimateBallThrow + 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 sub_8074480 + 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 sub_8076B2C + 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 sub_8076B2C + 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 GetAnimBankSpriteId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + strh r1, [r4, 0x26] + ldr r2, _080E292C @ =gUnknown_83FF65C + adds r0, r4, 0 + bl sub_80762D0 + 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 sub_8076308 + 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 sub_80762D0 + 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 sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8076B2C + 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 GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x26] + bl sub_8075290 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x1 + bne _080E2D44 + ldr r5, _080E2D38 @ =gBattleAnimAttacker + ldrb r0, [r5] + movs r1, 0 + bl sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r1, [r5] + movs r0, 0x2 + eors r0, r1 + movs r1, 0 + bl sub_8074480 + 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 sub_8075160 + 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 sub_8076884 + 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 sub_8076B2C + 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 sub_8076B2C + subs r0, 0x4 + lsls r0, 16 + lsrs r5, r0, 16 + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_8076B2C + adds r0, 0x4 + b _080E3076 +_080E303A: + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x4 + bl sub_8076B2C + 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 sub_8076B2C + 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 sub_8076B2C + 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 sub_8074480 + lsls r0, 24 + lsrs r5, r0, 24 + ldrh r0, [r4, 0x3C] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x3 + bl sub_8074480 + 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 obj_translate_based_on_private_1_2_3_4 + b _080E3188 +_080E30C8: + adds r0, r4, 0 + bl sub_80755E0 + 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 sub_8074480 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + 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 GetAnimBankSpriteId + 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 sub_80758E0 + 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 obj_id_set_rotscale + 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 sub_8075980 + 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 GetAnimBankSpriteId + 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 sub_8073A44 + 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 sub_8073A44 + 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 sub_807685C + 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 sub_807685C + 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 sub_8074480 + 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 sub_8073A44 + 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 sub_8073A44 + 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 sub_8073A44 + 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 duplicate_obj_of_side_rel2move_in_transparent_mode + lsls r0, 16 + lsrs r1, r0, 16 + str r1, [sp] + asrs r6, r0, 16 + cmp r6, 0 + blt _080E36A6 + movs r0, 0x1 + bl duplicate_obj_of_side_rel2move_in_transparent_mode + 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 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_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 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_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 @ =gUnknown_2037EFE + 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 gUnknown_2037EFE + 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 GetAnimBankSpriteId + 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 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_080E3AA0: + ldrh r5, [r1, 0x2] +_080E3AA2: + movs r0, 0x1 + bl GetAnimBankSpriteId + 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 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_080E3B30: + ldrh r5, [r1, 0x2] +_080E3B32: + movs r0, 0x1 + bl GetAnimBankSpriteId + 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 sub_8074480 + 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 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_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 sub_8074480 + 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 sub_8074480 + 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 GetAnimBankSpriteId + 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 sub_8076B20 + 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 GetAnimBankSpriteId + 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 sub_8074480 + 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 sub_8074480 + 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 sub_8073A44 + 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 sub_8074480 + 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 GetAnimBankSpriteId + 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 sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r0, _080E404C @ =gBattleAnimTarget + ldrb r0, [r0] + movs r1, 0 + bl sub_8074480 + 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 GetAnimBankSpriteId + 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 sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8076B2C + 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 move_anim_8074EE0 +_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 @ =gUnknown_2037F00 + 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 gUnknown_2037F00 +_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 GetAnimBankSpriteId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + strh r1, [r4, 0x26] + ldr r2, _080E4580 @ =gUnknown_83FF7A8 + adds r0, r4, 0 + bl sub_80762D0 + 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 sub_8076308 + 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_mon_movement.s b/asm/battle_anim_mon_movement.s new file mode 100644 index 000000000..14cc141cd --- /dev/null +++ b/asm/battle_anim_mon_movement.s @@ -0,0 +1,2588 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_80989F8 +sub_80989F8: @ 80989F8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _08098A18 @ =gBattleAnimArgs + ldrb r0, [r4] + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + bne _08098A1C + adds r0, r5, 0 + bl DestroyAnimVisualTask + b _08098A58 + .align 2, 0 +_08098A18: .4byte gBattleAnimArgs +_08098A1C: + ldr r1, _08098A60 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrh r1, [r4, 0x2] + strh r1, [r0, 0x24] + ldrh r1, [r4, 0x4] + strh r1, [r0, 0x26] + ldr r1, _08098A64 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + strh r2, [r0, 0x8] + ldrh r1, [r4, 0x6] + strh r1, [r0, 0xA] + ldrh r1, [r4, 0x8] + strh r1, [r0, 0xC] + ldrh r1, [r4, 0x8] + strh r1, [r0, 0xE] + ldrh r1, [r4, 0x2] + strh r1, [r0, 0x10] + ldrh r1, [r4, 0x4] + strh r1, [r0, 0x12] + ldr r1, _08098A68 @ =sub_8098A6C + str r1, [r0] + adds r0, r5, 0 + bl _call_via_r1 +_08098A58: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08098A60: .4byte gSprites +_08098A64: .4byte gTasks +_08098A68: .4byte sub_8098A6C + thumb_func_end sub_80989F8 + + thumb_func_start sub_8098A6C +sub_8098A6C: @ 8098A6C + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08098AA8 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r3, r0, r1 + ldrh r0, [r3, 0xE] + movs r2, 0xE + ldrsh r5, [r3, r2] + adds r7, r1, 0 + cmp r5, 0 + bne _08098B12 + ldr r2, _08098AAC @ =gSprites + movs r6, 0x8 + ldrsh r1, [r3, r6] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + movs r6, 0x24 + ldrsh r0, [r1, r6] + adds r6, r2, 0 + cmp r0, 0 + bne _08098AB0 + ldrh r0, [r3, 0x10] + strh r0, [r1, 0x24] + b _08098AB2 + .align 2, 0 +_08098AA8: .4byte gTasks +_08098AAC: .4byte gSprites +_08098AB0: + strh r5, [r1, 0x24] +_08098AB2: + lsls r2, r4, 2 + adds r0, r2, r4 + lsls r0, 3 + adds r3, r0, r7 + movs r0, 0x8 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r6 + movs r5, 0x26 + ldrsh r0, [r1, r5] + cmp r0, 0 + bne _08098AD2 + ldrh r0, [r3, 0x12] + b _08098AD4 +_08098AD2: + movs r0, 0 +_08098AD4: + strh r0, [r1, 0x26] + adds r0, r2, r4 + lsls r0, 3 + adds r2, r0, r7 + ldrh r0, [r2, 0xC] + strh r0, [r2, 0xE] + ldrh r0, [r2, 0xA] + subs r0, 0x1 + strh r0, [r2, 0xA] + lsls r0, 16 + asrs r3, r0, 16 + cmp r3, 0 + bne _08098B16 + movs r0, 0x8 + ldrsh r1, [r2, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + strh r3, [r0, 0x24] + movs r5, 0x8 + ldrsh r1, [r2, r5] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + strh r3, [r0, 0x26] + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _08098B16 +_08098B12: + subs r0, 0x1 + strh r0, [r3, 0xE] +_08098B16: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8098A6C + + thumb_func_start sub_8098B1C +sub_8098B1C: @ 8098B1C + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r6, 0 + ldr r2, _08098B44 @ =gBattleAnimArgs + ldrh r0, [r2] + movs r3, 0 + ldrsh r1, [r2, r3] + cmp r1, 0x3 + bgt _08098B48 + lsls r0, 24 + lsrs r0, 24 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xFF + bne _08098B9E + b _08098BA2 + .align 2, 0 +_08098B44: .4byte gBattleAnimArgs +_08098B48: + cmp r1, 0x8 + beq _08098B94 + movs r1, 0 + ldrsh r0, [r2, r1] + cmp r0, 0x5 + beq _08098B68 + cmp r0, 0x5 + bgt _08098B5E + cmp r0, 0x4 + beq _08098B64 + b _08098B70 +_08098B5E: + cmp r0, 0x6 + beq _08098B6C + b _08098B70 +_08098B64: + movs r0, 0 + b _08098B72 +_08098B68: + movs r0, 0x2 + b _08098B72 +_08098B6C: + movs r0, 0x1 + b _08098B72 +_08098B70: + movs r0, 0x3 +_08098B72: + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + bne _08098B88 + movs r6, 0x1 +_08098B88: + ldr r0, _08098B90 @ =gBattlerSpriteIds + adds r0, r4, r0 + b _08098B9C + .align 2, 0 +_08098B90: .4byte gBattlerSpriteIds +_08098B94: + ldr r1, _08098BAC @ =gBattlerSpriteIds + ldr r0, _08098BB0 @ =gBattleAnimAttacker + ldrb r0, [r0] + adds r0, r1 +_08098B9C: + ldrb r3, [r0] +_08098B9E: + cmp r6, 0 + beq _08098BB4 +_08098BA2: + adds r0, r5, 0 + bl DestroyAnimVisualTask + b _08098BF2 + .align 2, 0 +_08098BAC: .4byte gBattlerSpriteIds +_08098BB0: .4byte gBattleAnimAttacker +_08098BB4: + ldr r1, _08098BF8 @ =gSprites + lsls r0, r3, 4 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldr r2, _08098BFC @ =gBattleAnimArgs + ldrh r1, [r2, 0x2] + strh r1, [r0, 0x24] + ldrh r1, [r2, 0x4] + strh r1, [r0, 0x26] + ldr r1, _08098C00 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + strh r3, [r0, 0x8] + ldrh r1, [r2, 0x6] + strh r1, [r0, 0xA] + ldrh r1, [r2, 0x8] + strh r1, [r0, 0xC] + ldrh r1, [r2, 0x8] + strh r1, [r0, 0xE] + ldrh r1, [r2, 0x2] + strh r1, [r0, 0x10] + ldrh r1, [r2, 0x4] + strh r1, [r0, 0x12] + ldr r1, _08098C04 @ =sub_8098C08 + str r1, [r0] + adds r0, r5, 0 + bl _call_via_r1 +_08098BF2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08098BF8: .4byte gSprites +_08098BFC: .4byte gBattleAnimArgs +_08098C00: .4byte gTasks +_08098C04: .4byte sub_8098C08 + thumb_func_end sub_8098B1C + + thumb_func_start sub_8098C08 +sub_8098C08: @ 8098C08 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _08098C4C @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r3, r0, r1 + ldrh r2, [r3, 0xE] + movs r4, 0xE + ldrsh r0, [r3, r4] + mov r12, r1 + cmp r0, 0 + bne _08098CC0 + ldr r2, _08098C50 @ =gSprites + movs r7, 0x8 + ldrsh r1, [r3, r7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r2 + movs r0, 0x24 + ldrsh r1, [r4, r0] + ldrh r5, [r3, 0x10] + movs r7, 0x10 + ldrsh r0, [r3, r7] + adds r7, r2, 0 + cmp r1, r0 + bne _08098C54 + negs r0, r5 + strh r0, [r4, 0x24] + b _08098C56 + .align 2, 0 +_08098C4C: .4byte gTasks +_08098C50: .4byte gSprites +_08098C54: + strh r5, [r4, 0x24] +_08098C56: + lsls r3, r6, 2 + adds r1, r3, r6 + lsls r1, 3 + add r1, r12 + movs r0, 0x8 + ldrsh r2, [r1, r0] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r4, r0, r7 + movs r0, 0x26 + ldrsh r2, [r4, r0] + mov r8, r2 + ldrh r5, [r1, 0x12] + movs r2, 0x12 + ldrsh r0, [r1, r2] + cmp r8, r0 + bne _08098C80 + negs r0, r5 + strh r0, [r4, 0x26] + b _08098C82 +_08098C80: + strh r5, [r4, 0x26] +_08098C82: + adds r0, r3, r6 + lsls r0, 3 + mov r4, r12 + adds r3, r0, r4 + ldrh r0, [r3, 0xC] + strh r0, [r3, 0xE] + ldrh r0, [r3, 0xA] + subs r0, 0x1 + strh r0, [r3, 0xA] + lsls r0, 16 + asrs r2, r0, 16 + cmp r2, 0 + bne _08098CC4 + movs r0, 0x8 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r7 + strh r2, [r0, 0x24] + movs r4, 0x8 + ldrsh r1, [r3, r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r7 + strh r2, [r0, 0x26] + adds r0, r6, 0 + bl DestroyAnimVisualTask + b _08098CC4 +_08098CC0: + subs r0, r2, 0x1 + strh r0, [r3, 0xE] +_08098CC4: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8098C08 + + thumb_func_start sub_8098CD0 +sub_8098CD0: @ 8098CD0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _08098CF0 @ =gBattleAnimArgs + ldrb r0, [r4] + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xFF + bne _08098CF4 + adds r0, r5, 0 + bl DestroyAnimVisualTask + b _08098D42 + .align 2, 0 +_08098CF0: .4byte gBattleAnimArgs +_08098CF4: + ldr r0, _08098D48 @ =gSprites + lsls r1, r3, 4 + adds r1, r3 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r4, 0x2] + ldrh r2, [r1, 0x24] + adds r0, r2 + movs r2, 0 + strh r0, [r1, 0x24] + ldrh r0, [r4, 0x4] + ldrh r6, [r1, 0x26] + adds r0, r6 + strh r0, [r1, 0x26] + ldr r0, _08098D4C @ =gTasks + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + strh r3, [r1, 0x8] + strh r2, [r1, 0xA] + ldrh r0, [r4, 0x6] + strh r0, [r1, 0xC] + strh r2, [r1, 0xE] + ldrh r0, [r4, 0x8] + strh r0, [r1, 0x10] + movs r2, 0x2 + ldrsh r0, [r4, r2] + lsls r0, 1 + strh r0, [r1, 0x12] + movs r6, 0x4 + ldrsh r0, [r4, r6] + lsls r0, 1 + strh r0, [r1, 0x14] + ldr r2, _08098D50 @ =sub_8098D54 + str r2, [r1] + adds r0, r5, 0 + bl _call_via_r2 +_08098D42: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08098D48: .4byte gSprites +_08098D4C: .4byte gTasks +_08098D50: .4byte sub_8098D54 + thumb_func_end sub_8098CD0 + + thumb_func_start sub_8098D54 +sub_8098D54: @ 8098D54 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _08098DAC @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r2, [r4, 0xE] + movs r3, 0xE + ldrsh r0, [r4, r3] + adds r6, r1, 0 + cmp r0, 0 + beq _08098D72 + b _08098E84 +_08098D72: + ldrh r1, [r4, 0xA] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08098DB4 + ldr r2, _08098DB0 @ =gSprites + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x12] + ldrh r3, [r0, 0x24] + adds r1, r3 + strh r1, [r0, 0x24] + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0x14] + ldrh r3, [r0, 0x26] + adds r1, r3 + strh r1, [r0, 0x26] + adds r3, r2, 0 + b _08098DDE + .align 2, 0 +_08098DAC: .4byte gTasks +_08098DB0: .4byte gSprites +_08098DB4: + ldr r3, _08098E40 @ =gSprites + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x24] + ldrh r2, [r4, 0x12] + subs r1, r2 + strh r1, [r0, 0x24] + movs r2, 0x8 + ldrsh r1, [r4, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x26] + ldrh r2, [r4, 0x14] + subs r1, r2 + strh r1, [r0, 0x26] +_08098DDE: + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r6 + ldrh r0, [r4, 0x10] + strh r0, [r4, 0xE] + ldrh r0, [r4, 0xA] + adds r2, r0, 0x1 + strh r2, [r4, 0xA] + lsls r0, r2, 16 + asrs r0, 16 + movs r6, 0xC + ldrsh r1, [r4, r6] + cmp r0, r1 + blt _08098E88 + movs r0, 0x1 + ands r2, r0 + cmp r2, 0 + beq _08098E44 + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + movs r2, 0x12 + ldrsh r0, [r4, r2] + lsrs r2, r0, 31 + adds r0, r2 + asrs r0, 1 + ldrh r6, [r1, 0x24] + adds r0, r6 + strh r0, [r1, 0x24] + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + movs r2, 0x14 + ldrsh r0, [r4, r2] + lsrs r2, r0, 31 + adds r0, r2 + asrs r0, 1 + ldrh r3, [r1, 0x26] + adds r0, r3 + strh r0, [r1, 0x26] + b _08098E7C + .align 2, 0 +_08098E40: .4byte gSprites +_08098E44: + movs r6, 0x8 + ldrsh r0, [r4, r6] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + movs r0, 0x12 + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + ldrh r0, [r2, 0x24] + subs r0, r1 + strh r0, [r2, 0x24] + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + movs r3, 0x14 + ldrsh r1, [r4, r3] + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + ldrh r0, [r2, 0x26] + subs r0, r1 + strh r0, [r2, 0x26] +_08098E7C: + adds r0, r5, 0 + bl DestroyAnimVisualTask + b _08098E88 +_08098E84: + subs r0, r2, 0x1 + strh r0, [r4, 0xE] +_08098E88: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8098D54 + + thumb_func_start sub_8098E90 +sub_8098E90: @ 8098E90 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r5, _08098EE0 @ =gBattleAnimArgs + ldrb r0, [r5] + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08098EE4 @ =gSprites + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrh r2, [r5, 0x2] + strh r2, [r1, 0x24] + ldr r2, _08098EE8 @ =gTasks + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r2 + strh r0, [r1, 0x8] + ldrh r0, [r5, 0x2] + strh r0, [r1, 0xA] + ldrh r0, [r5, 0x4] + strh r0, [r1, 0xC] + ldrh r0, [r5, 0x6] + strh r0, [r1, 0xE] + ldrh r0, [r5, 0x8] + strh r0, [r1, 0x10] + ldr r2, _08098EEC @ =sub_8098EF0 + str r2, [r1] + adds r0, r4, 0 + bl _call_via_r2 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08098EE0: .4byte gBattleAnimArgs +_08098EE4: .4byte gSprites +_08098EE8: .4byte gTasks +_08098EEC: .4byte sub_8098EF0 + thumb_func_end sub_8098E90 + + thumb_func_start sub_8098EF0 +sub_8098EF0: @ 8098EF0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r2, _08098F7C @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r3, r0, r2 + ldrb r5, [r3, 0x8] + ldrh r4, [r3, 0xA] + ldrh r1, [r3, 0x18] + adds r0, r1, 0x1 + strh r0, [r3, 0x18] + movs r7, 0xC + ldrsh r0, [r3, r7] + lsls r1, 16 + asrs r1, 16 + mov r12, r2 + ldr r7, _08098F80 @ =gSprites + cmp r0, r1 + bne _08098F42 + movs r0, 0 + strh r0, [r3, 0x18] + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + adds r1, r0, r7 + ldrh r3, [r1, 0x24] + movs r0, 0x24 + ldrsh r2, [r1, r0] + lsls r0, r4, 16 + asrs r0, 16 + cmp r2, r0 + bne _08098F3A + negs r0, r2 + lsls r0, 16 + lsrs r4, r0, 16 +_08098F3A: + lsls r0, r4, 16 + asrs r0, 16 + adds r0, r3 + strh r0, [r1, 0x24] +_08098F42: + lsls r2, r6, 2 + adds r2, r6 + lsls r2, 3 + add r2, r12 + strh r4, [r2, 0xA] + ldrh r1, [r2, 0xE] + ldrh r0, [r2, 0x1A] + adds r1, r0 + strh r1, [r2, 0x1A] + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + adds r0, r7 + lsls r1, 16 + asrs r1, 24 + strh r1, [r0, 0x26] + ldrh r0, [r2, 0x10] + subs r0, 0x1 + strh r0, [r2, 0x10] + lsls r0, 16 + cmp r0, 0 + bne _08098F74 + adds r0, r6, 0 + bl DestroyAnimVisualTask +_08098F74: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08098F7C: .4byte gTasks +_08098F80: .4byte gSprites + thumb_func_end sub_8098EF0 + + thumb_func_start sub_8098F84 +sub_8098F84: @ 8098F84 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r5, r0, 24 + movs r6, 0x1 + ldr r4, _08098FF8 @ =gBattleAnimArgs + ldrb r0, [r4] + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r7, r0, 24 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x5 + ble _08098FA8 + movs r0, 0x5 + strh r0, [r4, 0x8] +_08098FA8: + movs r1, 0 + movs r2, 0x8 + ldrsh r0, [r4, r2] + adds r3, r4, 0 + ldr r2, _08098FFC @ =gTasks + mov r12, r2 + lsls r4, r5, 2 + ldr r2, _08099000 @ =sub_8099004 + mov r8, r2 + cmp r1, r0 + bge _08098FCE + adds r2, r0, 0 +_08098FC0: + lsls r0, r6, 25 + lsrs r6, r0, 24 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r2 + blt _08098FC0 +_08098FCE: + adds r0, r4, r5 + lsls r0, 3 + add r0, r12 + strh r7, [r0, 0x8] + ldrh r1, [r3, 0x2] + strh r1, [r0, 0xA] + ldrh r1, [r3, 0x4] + strh r1, [r0, 0xC] + ldrh r1, [r3, 0x6] + strh r1, [r0, 0xE] + strh r6, [r0, 0x10] + mov r1, r8 + str r1, [r0] + adds r0, r5, 0 + bl _call_via_r8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08098FF8: .4byte gBattleAnimArgs +_08098FFC: .4byte gTasks +_08099000: .4byte sub_8099004 + thumb_func_end sub_8098F84 + + thumb_func_start sub_8099004 +sub_8099004: @ 8099004 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r1, _08099074 @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + ldrb r4, [r5, 0x8] + movs r1, 0x12 + ldrsh r0, [r5, r1] + movs r2, 0xA + ldrsh r1, [r5, r2] + bl Sin + ldr r2, _08099078 @ =gSprites + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + adds r4, r1, r2 + strh r0, [r4, 0x24] + movs r1, 0x12 + ldrsh r0, [r5, r1] + movs r2, 0xC + ldrsh r1, [r5, r2] + bl Cos + negs r0, r0 + strh r0, [r4, 0x26] + ldrh r1, [r5, 0xC] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r5, 0x10] + ldrh r1, [r5, 0x12] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r5, 0x12] + cmp r0, 0 + bne _0809905C + ldrh r0, [r5, 0xE] + subs r0, 0x1 + strh r0, [r5, 0xE] +_0809905C: + movs r2, 0xE + ldrsh r0, [r5, r2] + cmp r0, 0 + bne _0809906E + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + adds r0, r6, 0 + bl DestroyAnimVisualTask +_0809906E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08099074: .4byte gTasks +_08099078: .4byte gSprites + thumb_func_end sub_8099004 + + thumb_func_start sub_809907C +sub_809907C: @ 809907C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080990A4 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08099098 + ldr r1, _080990A8 @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] +_08099098: + adds r0, r4, 0 + bl sub_8098F84 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080990A4: .4byte gBattleAnimAttacker +_080990A8: .4byte gBattleAnimArgs + thumb_func_end sub_809907C + + thumb_func_start sub_80990AC +sub_80990AC: @ 80990AC + push {r4,lr} + adds r4, r0, 0 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080990D4 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080990DC + ldr r1, _080990D8 @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + negs r0, r0 + b _080990E0 + .align 2, 0 +_080990D4: .4byte gBattleAnimAttacker +_080990D8: .4byte gBattleAnimArgs +_080990DC: + ldr r1, _0809910C @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] +_080990E0: + strh r0, [r4, 0x30] + ldrh r2, [r1] + movs r0, 0 + strh r2, [r4, 0x2E] + strh r0, [r4, 0x32] + ldr r1, _08099110 @ =gBattlerSpriteIds + ldr r0, _08099114 @ =gBattleAnimAttacker + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r4, 0x34] + strh r2, [r4, 0x36] + ldr r1, _08099118 @ =sub_8099120 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _0809911C @ =sub_8074DC4 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809910C: .4byte gBattleAnimArgs +_08099110: .4byte gBattlerSpriteIds +_08099114: .4byte gBattleAnimAttacker +_08099118: .4byte sub_8099120 +_0809911C: .4byte sub_8074DC4 + thumb_func_end sub_80990AC + + thumb_func_start sub_8099120 +sub_8099120: @ 8099120 + push {lr} + ldrh r1, [r0, 0x36] + strh r1, [r0, 0x2E] + ldrh r1, [r0, 0x30] + negs r1, r1 + strh r1, [r0, 0x30] + ldr r1, _0809913C @ =sub_8074DC4 + str r1, [r0, 0x1C] + ldr r1, _08099140 @ =DestroyAnimSprite + bl StoreSpriteCallbackInData6 + pop {r0} + bx r0 + .align 2, 0 +_0809913C: .4byte sub_8074DC4 +_08099140: .4byte DestroyAnimSprite + thumb_func_end sub_8099120 + + thumb_func_start sub_8099144 +sub_8099144: @ 8099144 + push {r4,r5,lr} + adds r4, r0, 0 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r5, _08099184 @ =gBattleAnimArgs + ldrb r0, [r5, 0x4] + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r5] + movs r1, 0 + strh r2, [r4, 0x2E] + strh r1, [r4, 0x30] + ldrh r1, [r5, 0x2] + strh r1, [r4, 0x32] + strh r0, [r4, 0x34] + strh r2, [r4, 0x36] + ldr r1, _08099188 @ =sub_8099190 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _0809918C @ =sub_8074DC4 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08099184: .4byte gBattleAnimArgs +_08099188: .4byte sub_8099190 +_0809918C: .4byte sub_8074DC4 + thumb_func_end sub_8099144 + + thumb_func_start sub_8099190 +sub_8099190: @ 8099190 + push {lr} + ldrh r1, [r0, 0x36] + strh r1, [r0, 0x2E] + ldrh r1, [r0, 0x32] + negs r1, r1 + strh r1, [r0, 0x32] + ldr r1, _080991AC @ =sub_8074DC4 + str r1, [r0, 0x1C] + ldr r1, _080991B0 @ =DestroyAnimSprite + bl StoreSpriteCallbackInData6 + pop {r0} + bx r0 + .align 2, 0 +_080991AC: .4byte sub_8074DC4 +_080991B0: .4byte DestroyAnimSprite + thumb_func_end sub_8099190 + + thumb_func_start sub_80991B4 +sub_80991B4: @ 80991B4 + push {r4-r7,lr} + sub sp, 0x4 + adds r6, r0, 0 + ldr r0, _080991CC @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080991D8 + ldr r1, _080991D0 @ =gBattlerSpriteIds + ldr r0, _080991D4 @ =gBattleAnimAttacker + b _080991DC + .align 2, 0 +_080991CC: .4byte gBattleAnimArgs +_080991D0: .4byte gBattlerSpriteIds +_080991D4: .4byte gBattleAnimAttacker +_080991D8: + ldr r1, _0809923C @ =gBattlerSpriteIds + ldr r0, _08099240 @ =gBattleAnimTarget +_080991DC: + ldrb r0, [r0] + adds r0, r1 + ldrb r7, [r0] + ldr r5, _08099244 @ =gBattleAnimArgs + ldrh r0, [r5, 0x4] + movs r3, 0 + strh r0, [r6, 0x2E] + ldr r0, _08099248 @ =gSprites + lsls r4, r7, 4 + adds r4, r7 + lsls r4, 2 + adds r4, r0 + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r6, 0x30] + ldrh r0, [r4, 0x20] + strh r0, [r6, 0x32] + ldrh r0, [r4, 0x26] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r6, 0x34] + ldrh r0, [r4, 0x22] + strh r0, [r6, 0x36] + adds r0, r6, 0 + str r3, [sp] + bl sub_80754B8 + ldr r3, [sp] + strh r3, [r6, 0x34] + strh r3, [r6, 0x36] + ldrh r0, [r4, 0x24] + strh r0, [r6, 0x38] + ldrh r0, [r4, 0x26] + strh r0, [r6, 0x3A] + adds r2, r6, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + movs r1, 0x2 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _0809924C + strh r3, [r6, 0x32] + b _08099252 + .align 2, 0 +_0809923C: .4byte gBattlerSpriteIds +_08099240: .4byte gBattleAnimTarget +_08099244: .4byte gBattleAnimArgs +_08099248: .4byte gSprites +_0809924C: + cmp r0, 0x2 + bne _08099252 + strh r3, [r6, 0x30] +_08099252: + ldr r0, _08099268 @ =gBattleAnimArgs + ldrh r1, [r0, 0x2] + lsls r0, r7, 8 + orrs r0, r1 + strh r0, [r6, 0x3C] + ldr r0, _0809926C @ =sub_8099270 + str r0, [r6, 0x1C] + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08099268: .4byte gBattleAnimArgs +_0809926C: .4byte sub_8099270 + thumb_func_end sub_80991B4 + + thumb_func_start sub_8099270 +sub_8099270: @ 8099270 + push {r4-r6,lr} + adds r2, r0, 0 + ldrh r0, [r2, 0x3C] + lsls r1, r0, 24 + lsrs r4, r1, 24 + adds r5, r4, 0 + lsls r0, 16 + asrs r0, 24 + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + ldr r0, _080992AC @ =gSprites + adds r3, r1, r0 + ldrh r0, [r2, 0x2E] + movs r6, 0x2E + ldrsh r1, [r2, r6] + cmp r1, 0 + bne _080992B0 + cmp r4, 0x1 + bhi _0809929A + strh r1, [r3, 0x24] +_0809929A: + cmp r5, 0x2 + beq _080992A2 + cmp r5, 0 + bne _080992A4 +_080992A2: + strh r1, [r3, 0x26] +_080992A4: + adds r0, r2, 0 + bl DestroyAnimSprite + b _080992DA + .align 2, 0 +_080992AC: .4byte gSprites +_080992B0: + subs r0, 0x1 + strh r0, [r2, 0x2E] + ldrh r1, [r2, 0x30] + ldrh r0, [r2, 0x34] + adds r1, r0 + strh r1, [r2, 0x34] + ldrh r0, [r2, 0x32] + ldrh r4, [r2, 0x36] + adds r0, r4 + strh r0, [r2, 0x36] + lsls r1, 16 + asrs r1, 24 + ldrh r6, [r2, 0x38] + adds r1, r6 + strh r1, [r3, 0x24] + ldrh r0, [r2, 0x36] + lsls r0, 16 + asrs r0, 24 + ldrh r2, [r2, 0x3A] + adds r0, r2 + strh r0, [r3, 0x26] +_080992DA: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8099270 + + thumb_func_start sub_80992E0 +sub_80992E0: @ 80992E0 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r0, _080992F4 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080992FC + ldr r0, _080992F8 @ =gBattleAnimAttacker + b _080992FE + .align 2, 0 +_080992F4: .4byte gBattleAnimArgs +_080992F8: .4byte gBattleAnimAttacker +_080992FC: + ldr r0, _0809937C @ =gBattleAnimTarget +_080992FE: + ldrb r2, [r0] + ldr r0, _08099380 @ =gBattlerSpriteIds + adds r0, r2, r0 + ldrb r6, [r0] + adds r0, r2, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08099328 + ldr r1, _08099384 @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] + movs r2, 0x6 + ldrsh r0, [r1, r2] + cmp r0, 0x1 + bne _08099328 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_08099328: + ldr r2, _08099384 @ =gBattleAnimArgs + ldrh r0, [r2, 0x8] + movs r4, 0 + strh r0, [r5, 0x2E] + ldr r0, _08099388 @ =gSprites + lsls r1, r6, 4 + adds r1, r6 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1, 0x20] + strh r0, [r5, 0x30] + ldrh r0, [r2, 0x2] + ldrh r3, [r1, 0x20] + adds r0, r3 + strh r0, [r5, 0x32] + ldrh r0, [r1, 0x22] + strh r0, [r5, 0x34] + ldrh r0, [r2, 0x4] + ldrh r1, [r1, 0x22] + adds r0, r1 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl sub_80754B8 + strh r4, [r5, 0x34] + strh r4, [r5, 0x36] + strh r6, [r5, 0x38] + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0809938C @ =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _08099390 @ =sub_8074E14 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809937C: .4byte gBattleAnimTarget +_08099380: .4byte gBattlerSpriteIds +_08099384: .4byte gBattleAnimArgs +_08099388: .4byte gSprites +_0809938C: .4byte DestroyAnimSprite +_08099390: .4byte sub_8074E14 + thumb_func_end sub_80992E0 + + thumb_func_start sub_8099394 +sub_8099394: @ 8099394 + push {r4-r7,lr} + adds r6, r0, 0 + adds r2, r6, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080993B4 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080993BC + ldr r0, _080993B8 @ =gBattleAnimAttacker + b _080993BE + .align 2, 0 +_080993B4: .4byte gBattleAnimArgs +_080993B8: .4byte gBattleAnimAttacker +_080993BC: + ldr r0, _0809943C @ =gBattleAnimTarget +_080993BE: + ldrb r1, [r0] + ldr r0, _08099440 @ =gBattlerSpriteIds + adds r0, r1, r0 + ldrb r7, [r0] + adds r0, r1, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080993E8 + ldr r1, _08099444 @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] + movs r2, 0x6 + ldrsh r0, [r1, r2] + cmp r0, 0x1 + bne _080993E8 + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080993E8: + ldr r5, _08099444 @ =gBattleAnimArgs + ldrh r0, [r5, 0x8] + strh r0, [r6, 0x2E] + ldr r0, _08099448 @ =gSprites + lsls r4, r7, 4 + adds r4, r7 + lsls r4, 2 + adds r4, r0 + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r6, 0x30] + ldrh r1, [r5, 0x2] + adds r0, r1 + strh r0, [r6, 0x32] + ldrh r0, [r4, 0x26] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r6, 0x34] + ldrh r1, [r5, 0x4] + adds r0, r1 + strh r0, [r6, 0x36] + adds r0, r6, 0 + bl sub_80754B8 + ldrh r0, [r4, 0x24] + lsls r0, 8 + strh r0, [r6, 0x34] + ldrh r0, [r4, 0x26] + lsls r0, 8 + strh r0, [r6, 0x36] + strh r7, [r6, 0x38] + ldrh r0, [r5, 0xA] + strh r0, [r6, 0x3A] + lsls r0, 16 + cmp r0, 0 + bne _08099450 + ldr r1, _0809944C @ =DestroyAnimSprite + adds r0, r6, 0 + bl StoreSpriteCallbackInData6 + b _08099458 + .align 2, 0 +_0809943C: .4byte gBattleAnimTarget +_08099440: .4byte gBattlerSpriteIds +_08099444: .4byte gBattleAnimArgs +_08099448: .4byte gSprites +_0809944C: .4byte DestroyAnimSprite +_08099450: + ldr r1, _08099464 @ =sub_809946C + adds r0, r6, 0 + bl StoreSpriteCallbackInData6 +_08099458: + ldr r0, _08099468 @ =sub_8074E14 + str r0, [r6, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08099464: .4byte sub_809946C +_08099468: .4byte sub_8074E14 + thumb_func_end sub_8099394 + + thumb_func_start sub_809946C +sub_809946C: @ 809946C + push {r4,lr} + ldr r4, _08099498 @ =gSprites + movs r1, 0x38 + ldrsh r2, [r0, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + movs r3, 0 + strh r3, [r1, 0x24] + movs r1, 0x38 + ldrsh r2, [r0, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + strh r3, [r1, 0x26] + bl DestroyAnimSprite + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08099498: .4byte gSprites + thumb_func_end sub_809946C + + thumb_func_start sub_809949C +sub_809949C: @ 809949C + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r5, _08099520 @ =gBattleAnimArgs + movs r0, 0x6 + ldrsh r1, [r5, r0] + movs r0, 0x80 + lsls r0, 8 + bl __divsi3 + lsls r0, 16 + lsrs r7, r0, 16 + ldr r0, _08099524 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080994CE + ldrh r0, [r5, 0x2] + negs r0, r0 + strh r0, [r5, 0x2] + ldrh r0, [r5, 0xA] + negs r0, r0 + strh r0, [r5, 0xA] +_080994CE: + ldrb r0, [r5] + bl GetAnimBankSpriteId + ldr r1, _08099528 @ =gTasks + lsls r4, r6, 2 + adds r4, r6 + lsls r4, 3 + adds r4, r1 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x8] + movs r1, 0x2 + ldrsh r0, [r5, r1] + lsls r0, 8 + movs r2, 0x6 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r4, 0xA] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0xC] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0xE] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x10] + movs r1, 0xA + ldrsh r0, [r5, r1] + lsls r0, 8 + movs r2, 0xC + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r4, 0x12] + ldrh r0, [r5, 0xC] + strh r0, [r4, 0x14] + strh r7, [r4, 0x16] + ldr r0, _0809952C @ =sub_8099530 + str r0, [r4] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08099520: .4byte gBattleAnimArgs +_08099524: .4byte gBattleAnimAttacker +_08099528: .4byte gTasks +_0809952C: .4byte sub_8099530 + thumb_func_end sub_809949C + + thumb_func_start sub_8099530 +sub_8099530: @ 8099530 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08099588 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r5, r1, r2 + ldrb r1, [r5, 0x8] + ldrh r0, [r5, 0xA] + ldrh r2, [r5, 0x1E] + adds r0, r2 + strh r0, [r5, 0x1E] + ldr r2, _0809958C @ =gSprites + lsls r4, r1, 4 + adds r4, r1 + lsls r4, 2 + adds r4, r2 + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + ldrh r0, [r5, 0x1C] + lsrs r0, 8 + movs r2, 0xC + ldrsh r1, [r5, r2] + bl Sin + strh r0, [r4, 0x26] + ldrh r0, [r5, 0x16] + ldrh r1, [r5, 0x1C] + adds r0, r1 + strh r0, [r5, 0x1C] + ldrh r0, [r5, 0xE] + subs r0, 0x1 + strh r0, [r5, 0xE] + lsls r0, 16 + cmp r0, 0 + bne _08099580 + ldr r0, _08099590 @ =sub_8099594 + str r0, [r5] +_08099580: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08099588: .4byte gTasks +_0809958C: .4byte gSprites +_08099590: .4byte sub_8099594 + thumb_func_end sub_8099530 + + thumb_func_start sub_8099594 +sub_8099594: @ 8099594 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _080995B8 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r1, [r4, 0x10] + movs r2, 0x10 + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080995BC + subs r0, r1, 0x1 + strh r0, [r4, 0x10] + b _080995F0 + .align 2, 0 +_080995B8: .4byte gTasks +_080995BC: + ldrb r0, [r4, 0x8] + ldrh r2, [r4, 0x12] + ldrh r1, [r4, 0x20] + adds r2, r1 + strh r2, [r4, 0x20] + ldr r3, _080995F8 @ =gSprites + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + lsls r2, 16 + asrs r2, 24 + ldrh r0, [r4, 0x1E] + lsls r0, 16 + asrs r0, 24 + adds r2, r0 + strh r2, [r1, 0x24] + ldrh r0, [r4, 0x14] + subs r0, 0x1 + strh r0, [r4, 0x14] + lsls r0, 16 + cmp r0, 0 + bne _080995F0 + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080995F0: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080995F8: .4byte gSprites + thumb_func_end sub_8099594 + + thumb_func_start sub_80995FC +sub_80995FC: @ 80995FC + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _08099620 @ =gBattleAnimArgs + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0x2 + beq _0809962A + cmp r0, 0x2 + bgt _08099624 + cmp r0, 0 + blt _0809965C + ldrb r0, [r1] + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r2, r0, 24 + b _08099664 + .align 2, 0 +_08099620: .4byte gBattleAnimArgs +_08099624: + cmp r0, 0x3 + beq _08099634 + b _0809965C +_0809962A: + ldr r5, _08099630 @ =gBattleAnimAttacker + b _08099636 + .align 2, 0 +_08099630: .4byte gBattleAnimAttacker +_08099634: + ldr r5, _08099654 @ =gBattleAnimTarget +_08099636: + ldrb r0, [r5] + movs r4, 0x2 + eors r0, r4 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _0809965C + ldr r1, _08099658 @ =gBattlerSpriteIds + ldrb r0, [r5] + eors r0, r4 + adds r0, r1 + ldrb r2, [r0] + b _08099664 + .align 2, 0 +_08099654: .4byte gBattleAnimTarget +_08099658: .4byte gBattlerSpriteIds +_0809965C: + adds r0, r6, 0 + bl DestroyAnimVisualTask + b _080996A4 +_08099664: + ldr r1, _08099684 @ =gTasks + lsls r4, r6, 2 + adds r0, r4, r6 + lsls r0, 3 + adds r5, r0, r1 + strh r2, [r5, 0x8] + ldr r0, _08099688 @ =gBattleAnimTarget + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08099690 + ldr r0, _0809968C @ =gBattleAnimArgs + ldrh r0, [r0, 0x2] + b _08099696 + .align 2, 0 +_08099684: .4byte gTasks +_08099688: .4byte gBattleAnimTarget +_0809968C: .4byte gBattleAnimArgs +_08099690: + ldr r0, _080996AC @ =gBattleAnimArgs + ldrh r0, [r0, 0x2] + negs r0, r0 +_08099696: + strh r0, [r5, 0xA] + ldr r0, _080996B0 @ =gTasks + adds r1, r4, r6 + lsls r1, 3 + adds r1, r0 + ldr r0, _080996B4 @ =sub_80996B8 + str r0, [r1] +_080996A4: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080996AC: .4byte gBattleAnimArgs +_080996B0: .4byte gTasks +_080996B4: .4byte sub_80996B8 + thumb_func_end sub_80995FC + + thumb_func_start sub_80996B8 +sub_80996B8: @ 80996B8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080996FC @ =gTasks + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 3 + adds r1, r0 + ldrb r2, [r1, 0x8] + ldr r3, _08099700 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r1, 0xA] + ldrh r2, [r0, 0x24] + adds r1, r2 + strh r1, [r0, 0x24] + movs r2, 0x24 + ldrsh r1, [r0, r2] + movs r2, 0x20 + ldrsh r0, [r0, r2] + adds r1, r0 + adds r1, 0x20 + movs r0, 0x98 + lsls r0, 1 + cmp r1, r0 + bls _080996F6 + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080996F6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080996FC: .4byte gTasks +_08099700: .4byte gSprites + thumb_func_end sub_80996B8 + + thumb_func_start sub_8099704 +sub_8099704: @ 8099704 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r6, _08099754 @ =gBattleAnimAttacker + ldrb r0, [r6] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08099720 + ldr r1, _08099758 @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + negs r0, r0 + strh r0, [r1, 0x2] +_08099720: + ldr r4, _08099758 @ =gBattleAnimArgs + ldrb r0, [r4, 0x8] + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0809975C @ =gTasks + lsls r3, r5, 2 + adds r1, r3, r5 + lsls r1, 3 + adds r2, r1, r2 + ldrh r1, [r4] + strh r1, [r2, 0x8] + ldrh r1, [r4, 0x2] + strh r1, [r2, 0xA] + ldrh r1, [r4, 0x4] + strh r1, [r2, 0xC] + ldrh r1, [r4, 0x6] + strh r1, [r2, 0xE] + strh r0, [r2, 0x10] + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08099760 + ldrb r0, [r6] + b _08099764 + .align 2, 0 +_08099754: .4byte gBattleAnimAttacker +_08099758: .4byte gBattleAnimArgs +_0809975C: .4byte gTasks +_08099760: + ldr r0, _0809977C @ =gBattleAnimTarget + ldrb r0, [r0] +_08099764: + strh r0, [r2, 0x12] + ldr r1, _08099780 @ =gTasks + adds r0, r3, r5 + lsls r0, 3 + adds r0, r1 + movs r1, 0x1 + strh r1, [r0, 0x20] + ldr r1, _08099784 @ =sub_8099788 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809977C: .4byte gBattleAnimTarget +_08099780: .4byte gTasks +_08099784: .4byte sub_8099788 + thumb_func_end sub_8099704 + + thumb_func_start sub_8099788 +sub_8099788: @ 8099788 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _080997D8 @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r4, r0, r1 + ldrb r7, [r4, 0x10] + ldrh r0, [r4, 0xC] + ldrh r1, [r4, 0x1C] + adds r0, r1 + lsls r1, r0, 16 + strh r0, [r4, 0x1C] + lsrs r1, 24 + mov r8, r1 + mov r0, r8 + movs r2, 0xA + ldrsh r1, [r4, r2] + bl Sin + lsls r0, 16 + lsrs r5, r0, 16 + mov r9, r5 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080997E0 + ldr r0, _080997DC @ =gSprites + lsls r2, r7, 4 + adds r1, r2, r7 + lsls r1, 2 + adds r1, r0 + strh r5, [r1, 0x24] + mov r9, r0 + adds r4, r2, 0 + b _08099826 + .align 2, 0 +_080997D8: .4byte gTasks +_080997DC: .4byte gSprites +_080997E0: + ldrb r0, [r4, 0x12] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _08099808 + ldr r1, _08099804 @ =gSprites + lsls r2, r7, 4 + adds r0, r2, r7 + lsls r0, 2 + adds r3, r0, r1 + lsls r0, r5, 16 + asrs r0, 16 + mov r9, r1 + adds r4, r2, 0 + cmp r0, 0 + bge _08099824 + b _08099822 + .align 2, 0 +_08099804: .4byte gSprites +_08099808: + ldr r1, _080998A8 @ =gSprites + lsls r2, r7, 4 + adds r0, r2, r7 + lsls r0, 2 + adds r3, r0, r1 + mov r4, r9 + lsls r0, r4, 16 + asrs r0, 16 + mov r9, r1 + adds r4, r2, 0 + cmp r0, 0 + bge _08099822 + negs r0, r0 +_08099822: + negs r0, r0 +_08099824: + strh r0, [r3, 0x26] +_08099826: + mov r5, r8 + cmp r5, 0x7F + bls _08099848 + ldr r1, _080998AC @ =gTasks + lsls r2, r6, 2 + adds r0, r2, r6 + lsls r0, 3 + adds r3, r0, r1 + movs r5, 0x1E + ldrsh r0, [r3, r5] + adds r5, r1, 0 + cmp r0, 0 + bne _08099848 + movs r1, 0x20 + ldrsh r0, [r3, r1] + cmp r0, 0x1 + beq _0809986A +_08099848: + mov r2, r8 + cmp r2, 0x7E + bhi _0809989C + ldr r1, _080998AC @ =gTasks + lsls r2, r6, 2 + adds r0, r2, r6 + lsls r0, 3 + adds r3, r0, r1 + movs r5, 0x1E + ldrsh r0, [r3, r5] + adds r5, r1, 0 + cmp r0, 0x1 + bne _0809989C + movs r1, 0x20 + ldrsh r0, [r3, r1] + cmp r0, 0 + bne _0809989C +_0809986A: + adds r1, r2, r6 + lsls r1, 3 + adds r1, r5 + ldrh r0, [r1, 0x1E] + movs r2, 0x1 + eors r0, r2 + strh r0, [r1, 0x1E] + ldrh r0, [r1, 0x20] + eors r0, r2 + strh r0, [r1, 0x20] + ldrh r0, [r1, 0xE] + subs r0, 0x1 + strh r0, [r1, 0xE] + lsls r0, 16 + asrs r3, r0, 16 + cmp r3, 0 + bne _0809989C + adds r0, r4, r7 + lsls r0, 2 + add r0, r9 + strh r3, [r0, 0x24] + strh r3, [r0, 0x26] + adds r0, r6, 0 + bl DestroyAnimVisualTask +_0809989C: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080998A8: .4byte gSprites +_080998AC: .4byte gTasks + thumb_func_end sub_8099788 + + thumb_func_start sub_80998B0 +sub_80998B0: @ 80998B0 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r6, _080998FC @ =gBattleAnimArgs + ldrb r0, [r6, 0x6] + bl GetAnimBankSpriteId + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldrb r1, [r6, 0x8] + adds r0, r5, 0 + bl sub_80758E0 + ldr r1, _08099900 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldrh r1, [r6] + strh r1, [r0, 0x8] + ldrh r1, [r6, 0x2] + strh r1, [r0, 0xA] + ldrh r1, [r6, 0x4] + strh r1, [r0, 0xC] + ldrh r1, [r6, 0x4] + strh r1, [r0, 0xE] + strh r5, [r0, 0x10] + movs r1, 0x80 + lsls r1, 1 + strh r1, [r0, 0x1C] + strh r1, [r0, 0x1E] + ldr r1, _08099904 @ =sub_8099908 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080998FC: .4byte gBattleAnimArgs +_08099900: .4byte gTasks +_08099904: .4byte sub_8099908 + thumb_func_end sub_80998B0 + + thumb_func_start sub_8099908 +sub_8099908: @ 8099908 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + ldr r1, _08099968 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x8] + ldrh r1, [r4, 0x1C] + adds r0, r1 + strh r0, [r4, 0x1C] + ldrh r0, [r4, 0xA] + ldrh r3, [r4, 0x1E] + adds r0, r3 + strh r0, [r4, 0x1E] + ldrb r0, [r4, 0x10] + adds r6, r0, 0 + movs r0, 0x1C + ldrsh r1, [r4, r0] + movs r3, 0x1E + ldrsh r2, [r4, r3] + adds r0, r6, 0 + movs r3, 0 + bl obj_id_set_rotscale + ldrh r0, [r4, 0xC] + subs r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + asrs r1, r0, 16 + cmp r1, 0 + bne _08099978 + ldrh r2, [r4, 0xE] + movs r3, 0xE + ldrsh r0, [r4, r3] + cmp r0, 0 + ble _0809996C + ldrh r0, [r4, 0x8] + negs r0, r0 + strh r0, [r4, 0x8] + ldrh r0, [r4, 0xA] + negs r0, r0 + strh r0, [r4, 0xA] + strh r2, [r4, 0xC] + strh r1, [r4, 0xE] + b _08099978 + .align 2, 0 +_08099968: .4byte gTasks +_0809996C: + adds r0, r6, 0 + bl sub_8075980 + adds r0, r5, 0 + bl DestroyAnimVisualTask +_08099978: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8099908 + + thumb_func_start sub_8099980 +sub_8099980: @ 8099980 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r4, _080999BC @ =gBattleAnimArgs + ldrb r0, [r4, 0x4] + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r1, 0 + bl sub_80758E0 + ldr r1, _080999C0 @ =gTasks + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 3 + adds r2, r0, r1 + movs r1, 0 + strh r1, [r2, 0xA] + ldrh r0, [r4] + strh r0, [r2, 0xC] + movs r3, 0x6 + ldrsh r0, [r4, r3] + cmp r0, 0x1 + beq _080999C4 + strh r1, [r2, 0xE] + b _080999D0 + .align 2, 0 +_080999BC: .4byte gBattleAnimArgs +_080999C0: .4byte gTasks +_080999C4: + ldrh r0, [r4] + ldrh r1, [r4, 0x2] + adds r3, r0, 0 + muls r3, r1 + adds r0, r3, 0 + strh r0, [r2, 0xE] +_080999D0: + ldr r1, _080999FC @ =gTasks + lsls r4, r7, 2 + adds r0, r4, r7 + lsls r0, 3 + adds r5, r0, r1 + ldr r6, _08099A00 @ =gBattleAnimArgs + ldrh r0, [r6, 0x2] + strh r0, [r5, 0x10] + mov r0, r8 + strh r0, [r5, 0x12] + ldrh r0, [r6, 0x6] + strh r0, [r5, 0x14] + bl sub_8073788 + lsls r0, 24 + mov r8, r4 + cmp r0, 0 + beq _08099A04 + movs r0, 0x1 + strh r0, [r5, 0x16] + b _08099A28 + .align 2, 0 +_080999FC: .4byte gTasks +_08099A00: .4byte gBattleAnimArgs +_08099A04: + movs r1, 0x4 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _08099A14 + ldr r0, _08099A10 @ =gBattleAnimAttacker + b _08099A16 + .align 2, 0 +_08099A10: .4byte gBattleAnimAttacker +_08099A14: + ldr r0, _08099A6C @ =gBattleAnimTarget +_08099A16: + ldrb r0, [r0] + bl GetBattlerSide + movs r1, 0 + lsls r0, 24 + cmp r0, 0 + bne _08099A26 + movs r1, 0x1 +_08099A26: + strh r1, [r5, 0x16] +_08099A28: + ldr r0, _08099A70 @ =gTasks + mov r2, r8 + adds r1, r2, r7 + lsls r1, 3 + adds r4, r1, r0 + movs r3, 0x16 + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _08099A54 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + bne _08099A54 + movs r1, 0xE + ldrsh r0, [r4, r1] + negs r0, r0 + strh r0, [r4, 0xE] + movs r2, 0x10 + ldrsh r0, [r4, r2] + negs r0, r0 + strh r0, [r4, 0x10] +_08099A54: + ldr r0, _08099A70 @ =gTasks + mov r3, r8 + adds r1, r3, r7 + lsls r1, 3 + adds r1, r0 + ldr r0, _08099A74 @ =sub_8099B54 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08099A6C: .4byte gBattleAnimTarget +_08099A70: .4byte gTasks +_08099A74: .4byte sub_8099B54 + thumb_func_end sub_8099980 + + thumb_func_start sub_8099A78 +sub_8099A78: @ 8099A78 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _08099AB4 @ =gBattleAnimArgs + ldrb r0, [r4, 0x4] + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r1, 0 + bl sub_80758E0 + ldr r1, _08099AB8 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r0, r1 + movs r1, 0 + strh r1, [r0, 0xA] + ldrh r1, [r4] + strh r1, [r0, 0xC] + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08099AC0 + ldr r0, _08099ABC @ =gBattleAnimAttacker + b _08099AC2 + .align 2, 0 +_08099AB4: .4byte gBattleAnimArgs +_08099AB8: .4byte gTasks +_08099ABC: .4byte gBattleAnimAttacker +_08099AC0: + ldr r0, _08099AF0 @ =gBattleAnimTarget +_08099AC2: + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08099AD4 + ldrh r0, [r4, 0x2] + negs r0, r0 + strh r0, [r4, 0x2] +_08099AD4: + ldr r0, _08099AF4 @ =gBattleAnimArgs + movs r2, 0x6 + ldrsh r1, [r0, r2] + adds r6, r0, 0 + cmp r1, 0x1 + beq _08099AFC + ldr r2, _08099AF8 @ =gTasks + lsls r3, r5, 2 + adds r0, r3, r5 + lsls r0, 3 + adds r0, r2 + movs r1, 0 + strh r1, [r0, 0xE] + b _08099B16 + .align 2, 0 +_08099AF0: .4byte gBattleAnimTarget +_08099AF4: .4byte gBattleAnimArgs +_08099AF8: .4byte gTasks +_08099AFC: + ldr r3, _08099B4C @ =gTasks + lsls r4, r5, 2 + adds r0, r4, r5 + lsls r0, 3 + adds r0, r3 + ldrh r2, [r6] + ldrh r1, [r6, 0x2] + adds r7, r2, 0 + muls r7, r1 + adds r1, r7, 0 + strh r1, [r0, 0xE] + adds r2, r3, 0 + adds r3, r4, 0 +_08099B16: + adds r1, r3, r5 + lsls r1, 3 + adds r1, r2 + ldrh r0, [r6, 0x2] + strh r0, [r1, 0x10] + mov r0, r8 + strh r0, [r1, 0x12] + ldrh r0, [r6, 0x6] + strh r0, [r1, 0x14] + movs r0, 0x1 + strh r0, [r1, 0x16] + movs r2, 0xE + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1, 0xE] + movs r7, 0x10 + ldrsh r0, [r1, r7] + negs r0, r0 + strh r0, [r1, 0x10] + ldr r0, _08099B50 @ =sub_8099B54 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08099B4C: .4byte gTasks +_08099B50: .4byte sub_8099B54 + thumb_func_end sub_8099A78 + + thumb_func_start sub_8099B54 +sub_8099B54: @ 8099B54 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _08099BAC @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x10] + ldrh r1, [r4, 0xE] + adds r0, r1 + strh r0, [r4, 0xE] + ldrb r0, [r4, 0x12] + movs r2, 0x80 + lsls r2, 1 + ldrh r3, [r4, 0xE] + adds r1, r2, 0 + bl obj_id_set_rotscale + movs r2, 0x16 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _08099B88 + ldrb r0, [r4, 0x12] + bl sub_80759DC +_08099B88: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + movs r2, 0xC + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _08099BCE + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _08099BB0 + cmp r0, 0x1 + ble _08099BB6 + cmp r0, 0x2 + beq _08099BBE + b _08099BB6 + .align 2, 0 +_08099BAC: .4byte gTasks +_08099BB0: + ldrb r0, [r4, 0x12] + bl sub_8075980 +_08099BB6: + adds r0, r5, 0 + bl DestroyAnimVisualTask + b _08099BCE +_08099BBE: + movs r0, 0 + strh r0, [r4, 0xA] + movs r2, 0x10 + ldrsh r0, [r4, r2] + negs r0, r0 + strh r0, [r4, 0x10] + movs r0, 0x1 + strh r0, [r4, 0x14] +_08099BCE: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8099B54 + + thumb_func_start sub_8099BD4 +sub_8099BD4: @ 8099BD4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _08099C00 @ =gBattleAnimArgs + movs r2, 0 + ldrsh r1, [r0, r2] + mov r8, r0 + cmp r1, 0 + bne _08099C0C + ldr r4, _08099C04 @ =gTasks + lsls r5, r7, 2 + adds r0, r5, r7 + lsls r0, 3 + adds r6, r0, r4 + ldr r0, _08099C08 @ =gUnknown_2037EEC + ldrh r0, [r0] + movs r1, 0xC + bl __udivsi3 + b _08099C20 + .align 2, 0 +_08099C00: .4byte gBattleAnimArgs +_08099C04: .4byte gTasks +_08099C08: .4byte gUnknown_2037EEC +_08099C0C: + ldr r4, _08099CA8 @ =gTasks + lsls r5, r7, 2 + adds r0, r5, r7 + lsls r0, 3 + adds r6, r0, r4 + ldr r0, _08099CAC @ =gUnknown_2037EE8 + ldr r0, [r0] + movs r1, 0xC + bl __divsi3 +_08099C20: + strh r0, [r6, 0x26] + lsls r0, 16 + adds r1, r4, 0 + cmp r0, 0 + bgt _08099C2E + movs r0, 0x1 + strh r0, [r6, 0x26] +_08099C2E: + movs r2, 0x26 + ldrsh r0, [r6, r2] + cmp r0, 0x10 + ble _08099C3A + movs r0, 0x10 + strh r0, [r6, 0x26] +_08099C3A: + adds r4, r5, r7 + lsls r4, 3 + adds r4, r1 + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + movs r5, 0 + strh r1, [r4, 0x24] + ldrh r2, [r4, 0x26] + movs r0, 0x1 + ands r0, r2 + adds r1, r0 + strh r1, [r4, 0x22] + strh r5, [r4, 0x20] + mov r1, r8 + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x1C] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x1E] + movs r0, 0x1 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x16] + ldr r2, _08099CB0 @ =gSprites + movs r0, 0x16 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x24] + strh r0, [r4, 0x18] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x26] + strh r0, [r4, 0x1A] + strh r5, [r4, 0x8] + mov r1, r8 + ldrh r0, [r1, 0x2] + strh r0, [r4, 0xA] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0xC] + ldr r0, _08099CB4 @ =sub_8099CB8 + str r0, [r4] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08099CA8: .4byte gTasks +_08099CAC: .4byte gUnknown_2037EE8 +_08099CB0: .4byte gSprites +_08099CB4: .4byte sub_8099CB8 + thumb_func_end sub_8099BD4 + + thumb_func_start sub_8099CB8 +sub_8099CB8: @ 8099CB8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08099D0C @ =gTasks + adds r3, r0, r1 + ldrh r0, [r3, 0x8] + adds r0, 0x1 + strh r0, [r3, 0x8] + lsls r0, 16 + asrs r0, 16 + movs r2, 0xA + ldrsh r1, [r3, r2] + cmp r0, r1 + ble _08099D96 + movs r0, 0 + strh r0, [r3, 0x8] + ldrh r0, [r3, 0x20] + adds r1, r0, 0x1 + movs r0, 0x1 + ands r1, r0 + strh r1, [r3, 0x20] + movs r2, 0x1C + ldrsh r0, [r3, r2] + cmp r0, 0 + beq _08099D2A + cmp r1, 0 + beq _08099D14 + ldr r2, _08099D10 @ =gSprites + movs r0, 0x16 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0x22] + ldrh r2, [r3, 0x18] + adds r1, r2 + b _08099D28 + .align 2, 0 +_08099D0C: .4byte gTasks +_08099D10: .4byte gSprites +_08099D14: + ldr r2, _08099D50 @ =gSprites + movs r0, 0x16 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0x18] + ldrh r2, [r3, 0x24] + subs r1, r2 +_08099D28: + strh r1, [r0, 0x24] +_08099D2A: + movs r1, 0x1E + ldrsh r0, [r3, r1] + cmp r0, 0 + beq _08099D64 + movs r2, 0x20 + ldrsh r4, [r3, r2] + cmp r4, 0 + beq _08099D54 + ldr r2, _08099D50 @ =gSprites + movs r0, 0x16 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0x26] + strh r1, [r0, 0x26] + b _08099D64 + .align 2, 0 +_08099D50: .4byte gSprites +_08099D54: + ldr r2, _08099D9C @ =gSprites + movs r0, 0x16 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r4, [r0, 0x26] +_08099D64: + ldrh r0, [r3, 0xC] + subs r0, 0x1 + strh r0, [r3, 0xC] + lsls r0, 16 + asrs r4, r0, 16 + cmp r4, 0 + bne _08099D96 + ldr r2, _08099D9C @ =gSprites + movs r0, 0x16 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r4, [r0, 0x24] + movs r0, 0x16 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r4, [r0, 0x26] + adds r0, r5, 0 + bl DestroyAnimVisualTask +_08099D96: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08099D9C: .4byte gSprites + thumb_func_end sub_8099CB8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_mons.s b/asm/battle_anim_mons.s new file mode 100644 index 000000000..aded063d4 --- /dev/null +++ b/asm/battle_anim_mons.s @@ -0,0 +1,6343 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8074480 +sub_8074480: @ 8074480 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + cmp r4, 0x4 + bhi _08074500 + lsls r0, r4, 2 + ldr r1, _08074498 @ =_0807449C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08074498: .4byte _0807449C + .align 2, 0 +_0807449C: + .4byte _080744B0 + .4byte _080744D8 + .4byte _080744B0 + .4byte _08074500 + .4byte _08074500 +_080744B0: + ldr r4, _080744D0 @ =gUnknown_83AE01C + adds r0, r5, 0 + bl GetBattlerPosition + lsls r0, 24 + lsrs r0, 22 + ldr r1, _080744D4 @ =gBattleTypeFlags + ldr r1, [r1] + movs r2, 0x1 + ands r1, r2 + lsls r1, 4 + adds r0, r1 + adds r0, r4 + ldrb r0, [r0] + b _08074588 + .align 2, 0 +_080744D0: .4byte gUnknown_83AE01C +_080744D4: .4byte gBattleTypeFlags +_080744D8: + ldr r4, _080744F8 @ =gUnknown_83AE01C + adds r0, r5, 0 + bl GetBattlerPosition + lsls r0, 24 + lsrs r0, 22 + ldr r1, _080744FC @ =gBattleTypeFlags + ldr r1, [r1] + movs r2, 0x1 + ands r1, r2 + lsls r1, 4 + adds r0, r1 + adds r0, r4 + ldrb r0, [r0, 0x1] + b _08074588 + .align 2, 0 +_080744F8: .4byte gUnknown_83AE01C +_080744FC: .4byte gBattleTypeFlags +_08074500: + adds r0, r5, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08074538 + ldr r0, _0807452C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _08074570 + ldr r1, _08074530 @ =gBattlerPartyIndexes + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08074534 @ =gEnemyParty + b _08074556 + .align 2, 0 +_0807452C: .4byte gUnknown_2024018 +_08074530: .4byte gBattlerPartyIndexes +_08074534: .4byte gEnemyParty +_08074538: + ldr r0, _08074564 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _08074570 + ldr r1, _08074568 @ =gBattlerPartyIndexes + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0807456C @ =gPlayerParty +_08074556: + adds r0, r1 + movs r1, 0xB + bl GetMonData + lsls r0, 16 + lsrs r1, r0, 16 + b _08074572 + .align 2, 0 +_08074564: .4byte gUnknown_2024018 +_08074568: .4byte gBattlerPartyIndexes +_0807456C: .4byte gPlayerParty +_08074570: + ldrh r1, [r1, 0x2] +_08074572: + cmp r4, 0x3 + bne _0807457C + adds r0, r5, 0 + movs r2, 0x1 + b _08074580 +_0807457C: + adds r0, r5, 0 + movs r2, 0 +_08074580: + bl sub_80747AC + lsls r0, 24 + lsrs r0, 24 +_08074588: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8074480 + + thumb_func_start sub_8074590 +sub_8074590: @ 8074590 + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r6, r5, 0 + lsls r1, 16 + lsrs r4, r1, 16 + adds r7, r4, 0 + adds r0, r5, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _08074674 + cmp r4, 0xC9 + bne _08074638 + ldr r0, _080745D8 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + lsls r1, r5, 2 + adds r0, r1, r0 + ldrh r0, [r0, 0x2] + cmp r0, 0 + bne _080745E4 + ldr r1, _080745DC @ =gBattlerPartyIndexes + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080745E0 @ =gPlayerParty + adds r0, r1 + movs r1, 0 + bl GetMonData + adds r2, r0, 0 + b _080745EA + .align 2, 0 +_080745D8: .4byte gUnknown_2024018 +_080745DC: .4byte gBattlerPartyIndexes +_080745E0: .4byte gPlayerParty +_080745E4: + ldr r0, _08074620 @ =gUnknown_2024008 + adds r0, r1, r0 + ldr r2, [r0] +_080745EA: + movs r0, 0xC0 + lsls r0, 18 + ands r0, r2 + lsrs r0, 18 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r2 + lsrs r1, 12 + orrs r0, r1 + movs r1, 0xC0 + lsls r1, 2 + ands r1, r2 + lsrs r1, 6 + orrs r0, r1 + movs r1, 0x3 + ands r1, r2 + orrs r0, r1 + movs r1, 0x1C + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _08074624 + adds r0, r7, 0 + b _0807462E + .align 2, 0 +_08074620: .4byte gUnknown_2024008 +_08074624: + movs r1, 0xCE + lsls r1, 1 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 +_0807462E: + ldr r1, _08074634 @ =gUnknown_8235E6C + lsls r0, 2 + b _0807473C + .align 2, 0 +_08074634: .4byte gUnknown_8235E6C +_08074638: + ldr r0, _0807464C @ =0x00000181 + cmp r4, r0 + bne _08074658 + ldr r0, _08074650 @ =gUnknown_83AE050 + ldr r1, _08074654 @ =gBattleMonForms + adds r1, r5, r1 + ldrb r1, [r1] + adds r1, r0 + ldrb r0, [r1] + b _08074740 + .align 2, 0 +_0807464C: .4byte 0x00000181 +_08074650: .4byte gUnknown_83AE050 +_08074654: .4byte gBattleMonForms +_08074658: + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + bls _08074668 + ldr r0, _08074664 @ =gUnknown_8235E6C + b _0807473E + .align 2, 0 +_08074664: .4byte gUnknown_8235E6C +_08074668: + ldr r1, _08074670 @ =gUnknown_8235E6C + lsls r0, r4, 2 + b _0807473C + .align 2, 0 +_08074670: .4byte gUnknown_8235E6C +_08074674: + cmp r4, 0xC9 + bne _08074704 + ldr r0, _080746A4 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + lsls r1, r5, 2 + adds r0, r1, r0 + ldrh r0, [r0, 0x2] + cmp r0, 0 + bne _080746B0 + ldr r1, _080746A8 @ =gBattlerPartyIndexes + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080746AC @ =gEnemyParty + adds r0, r1 + movs r1, 0 + bl GetMonData + adds r2, r0, 0 + b _080746B6 + .align 2, 0 +_080746A4: .4byte gUnknown_2024018 +_080746A8: .4byte gBattlerPartyIndexes +_080746AC: .4byte gEnemyParty +_080746B0: + ldr r0, _080746EC @ =gUnknown_2024008 + adds r0, r1, r0 + ldr r2, [r0] +_080746B6: + movs r0, 0xC0 + lsls r0, 18 + ands r0, r2 + lsrs r0, 18 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r2 + lsrs r1, 12 + orrs r0, r1 + movs r1, 0xC0 + lsls r1, 2 + ands r1, r2 + lsrs r1, 6 + orrs r0, r1 + movs r1, 0x3 + ands r1, r2 + orrs r0, r1 + movs r1, 0x1C + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _080746F0 + adds r0, r7, 0 + b _080746FA + .align 2, 0 +_080746EC: .4byte gUnknown_2024008 +_080746F0: + movs r1, 0xCE + lsls r1, 1 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 +_080746FA: + ldr r1, _08074700 @ =gUnknown_82349CC + lsls r0, 2 + b _0807473C + .align 2, 0 +_08074700: .4byte gUnknown_82349CC +_08074704: + ldr r0, _0807471C @ =0x00000181 + cmp r4, r0 + bne _08074728 + ldr r0, _08074720 @ =gUnknown_83AE03C + ldr r1, _08074724 @ =gBattleMonForms + adds r1, r6, r1 + ldrb r1, [r1] + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + b _08074740 + .align 2, 0 +_0807471C: .4byte 0x00000181 +_08074720: .4byte gUnknown_83AE03C +_08074724: .4byte gBattleMonForms +_08074728: + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + bls _08074738 + ldr r0, _08074734 @ =gUnknown_82349CC + b _0807473E + .align 2, 0 +_08074734: .4byte gUnknown_82349CC +_08074738: + ldr r1, _08074748 @ =gUnknown_82349CC + lsls r0, r7, 2 +_0807473C: + adds r0, r1 +_0807473E: + ldrb r0, [r0, 0x1] +_08074740: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08074748: .4byte gUnknown_82349CC + thumb_func_end sub_8074590 + + thumb_func_start sub_807474C +sub_807474C: @ 807474C + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 16 + lsrs r4, r1, 16 + adds r7, r4, 0 + movs r5, 0 + adds r0, r6, 0 + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0807479E + ldr r0, _0807477C @ =0x00000181 + cmp r4, r0 + bne _08074788 + ldr r0, _08074780 @ =gUnknown_83AE04C + ldr r1, _08074784 @ =gBattleMonForms + adds r1, r6, r1 + ldrb r1, [r1] + adds r1, r0 + ldrb r5, [r1] + b _0807479E + .align 2, 0 +_0807477C: .4byte 0x00000181 +_08074780: .4byte gUnknown_83AE04C +_08074784: .4byte gBattleMonForms +_08074788: + movs r0, 0xCE + lsls r0, 1 + cmp r4, r0 + bls _08074798 + ldr r0, _08074794 @ =gUnknown_823A004 + b _0807479C + .align 2, 0 +_08074794: .4byte gUnknown_823A004 +_08074798: + ldr r0, _080747A8 @ =gUnknown_823A004 + adds r0, r7, r0 +_0807479C: + ldrb r5, [r0] +_0807479E: + adds r0, r5, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080747A8: .4byte gUnknown_823A004 + thumb_func_end sub_807474C + + thumb_func_start sub_80747AC +sub_80747AC: @ 80747AC + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 24 + lsrs r7, r2, 24 + adds r0, r6, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080747D4 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8074590 + lsls r0, 24 + lsrs r5, r0, 24 + b _080747F2 +_080747D4: + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8074590 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_807474C + lsls r0, 24 + lsrs r0, 24 + subs r0, r5, r0 + lsls r0, 16 + lsrs r5, r0, 16 +_080747F2: + adds r0, r6, 0 + bl GetBattlerPosition + ldr r3, _0807483C @ =gUnknown_83AE01C + lsls r0, 24 + lsrs r0, 22 + ldr r1, _08074840 @ =gBattleTypeFlags + ldr r1, [r1] + movs r2, 0x1 + ands r1, r2 + lsls r1, 4 + adds r0, r1 + adds r0, r3 + ldrb r0, [r0, 0x1] + adds r0, r5 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r7, 0 + beq _08074832 + adds r0, r6, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _0807482C + adds r0, r4, 0 + adds r0, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 +_0807482C: + cmp r4, 0x68 + bls _08074832 + movs r4, 0x68 +_08074832: + adds r0, r4, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0807483C: .4byte gUnknown_83AE01C +_08074840: .4byte gBattleTypeFlags + thumb_func_end sub_80747AC + + thumb_func_start sub_8074844 +sub_8074844: @ 8074844 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + movs r0, 0xFD + lsls r0, 24 + adds r1, r0 + lsrs r1, 24 + cmp r1, 0x1 + bhi _08074896 + ldr r0, _08074874 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r2, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _0807487C + ldr r1, _08074878 @ =gUnknown_2037F1C + lsls r0, r2, 1 + adds r0, r1 + ldrh r1, [r0] + b _0807487E + .align 2, 0 +_08074874: .4byte gUnknown_2024018 +_08074878: .4byte gUnknown_2037F1C +_0807487C: + ldrh r1, [r1, 0x2] +_0807487E: + cmp r3, 0x3 + bne _0807488C + adds r0, r2, 0 + movs r2, 0x1 + bl sub_80747AC + b _0807489E +_0807488C: + adds r0, r2, 0 + movs r2, 0 + bl sub_80747AC + b _0807489E +_08074896: + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_8074480 +_0807489E: + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8074844 + + thumb_func_start GetBankSpriteDefault_Y +GetBankSpriteDefault_Y: @ 80748A8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x4 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end GetBankSpriteDefault_Y + + thumb_func_start GetSubstituteSpriteDefault_Y +GetSubstituteSpriteDefault_Y: @ 80748BC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080748E0 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 8 + movs r1, 0x80 + lsls r1, 13 + b _080748F0 +_080748E0: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 8 + movs r1, 0x88 + lsls r1, 13 +_080748F0: + adds r0, r1 + lsrs r0, 16 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + thumb_func_end GetSubstituteSpriteDefault_Y + + thumb_func_start sub_8074900 +sub_8074900: @ 8074900 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl GetBattlerSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0807491A + adds r0, r4, 0 + movs r1, 0x1 + b _0807491E +_0807491A: + adds r0, r4, 0 + movs r1, 0x4 +_0807491E: + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8074900 + + thumb_func_start sub_807492C +sub_807492C: @ 807492C + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r5, 0 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r5, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08074978 + ldr r0, _0807496C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _080749B0 + ldr r1, _08074970 @ =gBattlerPartyIndexes + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08074974 @ =gEnemyParty + b _08074996 + .align 2, 0 +_0807496C: .4byte gUnknown_2024018 +_08074970: .4byte gBattlerPartyIndexes +_08074974: .4byte gEnemyParty +_08074978: + ldr r0, _080749A4 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _080749B0 + ldr r1, _080749A8 @ =gBattlerPartyIndexes + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080749AC @ =gPlayerParty +_08074996: + adds r0, r1 + movs r1, 0xB + bl GetMonData + lsls r0, 16 + lsrs r4, r0, 16 + b _080749B2 + .align 2, 0 +_080749A4: .4byte gUnknown_2024018 +_080749A8: .4byte gBattlerPartyIndexes +_080749AC: .4byte gPlayerParty +_080749B0: + ldrh r4, [r1, 0x2] +_080749B2: + adds r0, r5, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _080749CC + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_807474C + subs r0, r6, r0 + lsls r0, 24 + lsrs r6, r0, 24 +_080749CC: + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_807492C + + thumb_func_start GetAnimBankSpriteId +GetAnimBankSpriteId: @ 80749D4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0 + bne _080749FC + ldr r4, _080749F4 @ =gBattleAnimAttacker + ldrb r0, [r4] + bl sub_8075224 + lsls r0, 24 + cmp r0, 0 + beq _08074A4A + ldr r1, _080749F8 @ =gBattlerSpriteIds + ldrb r0, [r4] + b _08074A5A + .align 2, 0 +_080749F4: .4byte gBattleAnimAttacker +_080749F8: .4byte gBattlerSpriteIds +_080749FC: + cmp r0, 0x1 + bne _08074A1C + ldr r4, _08074A14 @ =gBattleAnimTarget + ldrb r0, [r4] + bl sub_8075224 + lsls r0, 24 + cmp r0, 0 + beq _08074A4A + ldr r1, _08074A18 @ =gBattlerSpriteIds + ldrb r0, [r4] + b _08074A5A + .align 2, 0 +_08074A14: .4byte gBattleAnimTarget +_08074A18: .4byte gBattlerSpriteIds +_08074A1C: + cmp r1, 0x2 + bne _08074A38 + ldr r5, _08074A34 @ =gBattleAnimAttacker + ldrb r0, [r5] + movs r4, 0x2 + eors r0, r4 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08074A4A + b _08074A54 + .align 2, 0 +_08074A34: .4byte gBattleAnimAttacker +_08074A38: + ldr r5, _08074A50 @ =gBattleAnimTarget + ldrb r0, [r5] + movs r4, 0x2 + eors r0, r4 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + bne _08074A54 +_08074A4A: + movs r0, 0xFF + b _08074A5E + .align 2, 0 +_08074A50: .4byte gBattleAnimTarget +_08074A54: + ldr r1, _08074A64 @ =gBattlerSpriteIds + ldrb r0, [r5] + eors r0, r4 +_08074A5A: + adds r0, r1 + ldrb r0, [r0] +_08074A5E: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08074A64: .4byte gBattlerSpriteIds + thumb_func_end GetAnimBankSpriteId + + thumb_func_start StoreSpriteCallbackInData6 +StoreSpriteCallbackInData6: @ 8074A68 + strh r1, [r0, 0x3A] + lsrs r1, 16 + strh r1, [r0, 0x3C] + bx lr + thumb_func_end StoreSpriteCallbackInData6 + + thumb_func_start SetCallbackToStoredInData +SetCallbackToStoredInData: @ 8074A70 + ldrh r2, [r0, 0x3A] + movs r3, 0x3C + ldrsh r1, [r0, r3] + lsls r1, 16 + orrs r2, r1 + str r2, [r0, 0x1C] + bx lr + thumb_func_end SetCallbackToStoredInData + + thumb_func_start sub_8074A80 +sub_8074A80: @ 8074A80 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08074AD4 + movs r2, 0x2E + ldrsh r0, [r4, r2] + 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, 0x32] + ldrh r2, [r4, 0x2E] + adds r1, r0, r2 + strh r1, [r4, 0x2E] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _08074AC0 + ldr r2, _08074ABC @ =0xffffff00 + b _08074AC8 + .align 2, 0 +_08074ABC: .4byte 0xffffff00 +_08074AC0: + cmp r0, 0 + bge _08074ACC + movs r2, 0x80 + lsls r2, 1 +_08074AC8: + adds r0, r1, r2 + strh r0, [r4, 0x2E] +_08074ACC: + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + b _08074ADA +_08074AD4: + adds r0, r4, 0 + bl SetCallbackToStoredInData +_08074ADA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074A80 + + thumb_func_start sub_8074AE0 +sub_8074AE0: @ 8074AE0 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08074B50 + movs r2, 0x2E + ldrsh r0, [r4, r2] + ldrh r1, [r4, 0x38] + lsls r1, 16 + asrs r1, 24 + ldrh r2, [r4, 0x30] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + ldrh r1, [r4, 0x38] + lsls r1, 16 + asrs r1, 24 + ldrh r2, [r4, 0x30] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + bl Cos + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x2E] + adds r1, r0, r2 + strh r1, [r4, 0x2E] + ldrh r0, [r4, 0x36] + ldrh r2, [r4, 0x38] + adds r0, r2 + strh r0, [r4, 0x38] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _08074B3C + ldr r2, _08074B38 @ =0xffffff00 + b _08074B44 + .align 2, 0 +_08074B38: .4byte 0xffffff00 +_08074B3C: + cmp r0, 0 + bge _08074B48 + movs r2, 0x80 + lsls r2, 1 +_08074B44: + adds r0, r1, r2 + strh r0, [r4, 0x2E] +_08074B48: + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + b _08074B56 +_08074B50: + adds r0, r4, 0 + bl SetCallbackToStoredInData +_08074B56: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074AE0 + + thumb_func_start sub_8074B5C +sub_8074B5C: @ 8074B5C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08074BD8 + movs r2, 0x2E + ldrsh r0, [r4, r2] + movs r2, 0x30 + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r2, 0x30 + ldrsh r1, [r4, r2] + bl Cos + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x2E] + adds r1, r0, r2 + strh r1, [r4, 0x2E] + ldrh r0, [r4, 0x38] + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _08074BA4 + ldr r2, _08074BA0 @ =0xffffff00 + b _08074BAC + .align 2, 0 +_08074BA0: .4byte 0xffffff00 +_08074BA4: + cmp r0, 0 + bge _08074BB0 + movs r2, 0x80 + lsls r2, 1 +_08074BAC: + adds r0, r1, r2 + strh r0, [r4, 0x2E] +_08074BB0: + ldrh r1, [r4, 0x36] + movs r2, 0x36 + ldrsh r0, [r4, r2] + cmp r0, 0xFF + ble _08074BC4 + ldr r2, _08074BC0 @ =0xffffff00 + b _08074BCC + .align 2, 0 +_08074BC0: .4byte 0xffffff00 +_08074BC4: + cmp r0, 0 + bge _08074BD0 + movs r2, 0x80 + lsls r2, 1 +_08074BCC: + adds r0, r1, r2 + strh r0, [r4, 0x36] +_08074BD0: + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + b _08074BDE +_08074BD8: + adds r0, r4, 0 + bl SetCallbackToStoredInData +_08074BDE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074B5C + + thumb_func_start sub_8074BE4 +sub_8074BE4: @ 8074BE4 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08074C38 + movs r2, 0x2E + ldrsh r0, [r4, r2] + movs r2, 0x30 + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl Cos + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x2E] + adds r1, r0, r2 + strh r1, [r4, 0x2E] + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0xFF + ble _08074C24 + ldr r2, _08074C20 @ =0xffffff00 + b _08074C2C + .align 2, 0 +_08074C20: .4byte 0xffffff00 +_08074C24: + cmp r0, 0 + bge _08074C30 + movs r2, 0x80 + lsls r2, 1 +_08074C2C: + adds r0, r1, r2 + strh r0, [r4, 0x2E] +_08074C30: + ldrh r0, [r4, 0x34] + subs r0, 0x1 + strh r0, [r4, 0x34] + b _08074C3E +_08074C38: + adds r0, r4, 0 + bl SetCallbackToStoredInData +_08074C3E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074BE4 + + thumb_func_start sub_8074C44 +sub_8074C44: @ 8074C44 + push {lr} + adds r1, r0, 0 + ldrh r2, [r1, 0x2E] + movs r3, 0x2E + ldrsh r0, [r1, r3] + cmp r0, 0 + ble _08074C58 + subs r0, r2, 0x1 + strh r0, [r1, 0x2E] + b _08074C5E +_08074C58: + adds r0, r1, 0 + bl SetCallbackToStoredInData +_08074C5E: + pop {r0} + bx r0 + thumb_func_end sub_8074C44 + + thumb_func_start sub_8074C64 +sub_8074C64: @ 8074C64 + push {r4,lr} + adds r4, r0, 0 + bl sub_8074C80 + ldr r1, _08074C7C @ =sub_8074CD0 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08074C7C: .4byte sub_8074CD0 + thumb_func_end sub_8074C64 + + thumb_func_start sub_8074C80 +sub_8074C80: @ 8074C80 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x30 + ldrsh r1, [r4, r0] + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r1, r0 + ble _08074C96 + ldrh r0, [r4, 0x2E] + negs r0, r0 + strh r0, [r4, 0x2E] +_08074C96: + movs r1, 0x32 + ldrsh r0, [r4, r1] + movs r2, 0x30 + ldrsh r1, [r4, r2] + subs r0, r1 + ldrh r5, [r4, 0x2E] + movs r2, 0x2E + ldrsh r1, [r4, r2] + bl __divsi3 + cmp r0, 0 + bge _08074CB0 + negs r0, r0 +_08074CB0: + strh r0, [r4, 0x2E] + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r2, 0x34 + ldrsh r1, [r4, r2] + subs r0, r1 + movs r2, 0x2E + ldrsh r1, [r4, r2] + bl __divsi3 + strh r0, [r4, 0x32] + strh r5, [r4, 0x30] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8074C80 + + thumb_func_start sub_8074CD0 +sub_8074CD0: @ 8074CD0 + push {lr} + adds r1, r0, 0 + ldrh r2, [r1, 0x2E] + movs r3, 0x2E + ldrsh r0, [r1, r3] + cmp r0, 0 + ble _08074CF4 + subs r0, r2, 0x1 + strh r0, [r1, 0x2E] + ldrh r0, [r1, 0x30] + ldrh r2, [r1, 0x24] + adds r0, r2 + strh r0, [r1, 0x24] + ldrh r0, [r1, 0x32] + ldrh r3, [r1, 0x26] + adds r0, r3 + strh r0, [r1, 0x26] + b _08074CFA +_08074CF4: + adds r0, r1, 0 + bl SetCallbackToStoredInData +_08074CFA: + pop {r0} + bx r0 + thumb_func_end sub_8074CD0 + + thumb_func_start sub_8074D00 +sub_8074D00: @ 8074D00 + push {lr} + adds r2, r0, 0 + ldrh r1, [r2, 0x2E] + movs r3, 0x2E + ldrsh r0, [r2, r3] + cmp r0, 0 + ble _08074D30 + subs r0, r1, 0x1 + strh r0, [r2, 0x2E] + ldrh r0, [r2, 0x30] + ldrh r1, [r2, 0x34] + adds r0, r1 + strh r0, [r2, 0x34] + ldrh r1, [r2, 0x32] + ldrh r3, [r2, 0x36] + adds r1, r3 + strh r1, [r2, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r2, 0x24] + lsls r1, 16 + asrs r1, 24 + strh r1, [r2, 0x26] + b _08074D36 +_08074D30: + adds r0, r2, 0 + bl SetCallbackToStoredInData +_08074D36: + pop {r0} + bx r0 + thumb_func_end sub_8074D00 + + thumb_func_start sub_8074D3C +sub_8074D3C: @ 8074D3C + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _08074D6C + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x34] + adds r0, r1 + strh r0, [r4, 0x34] + ldrh r1, [r4, 0x32] + ldrh r2, [r4, 0x36] + adds r1, r2 + strh r1, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + lsls r1, 16 + asrs r1, 24 + strh r1, [r4, 0x26] + b _08074D72 +_08074D6C: + adds r0, r4, 0 + bl SetCallbackToStoredInData +_08074D72: + adds r0, r4, 0 + bl UpdateMonIconFrame + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074D3C + + thumb_func_start sub_8074D80 +sub_8074D80: @ 8074D80 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x26] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x34] + ldr r5, _08074DBC @ =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, _08074DC0 @ =sub_8074C64 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08074DBC: .4byte gBattleAnimTarget +_08074DC0: .4byte sub_8074C64 + thumb_func_end sub_8074D80 + + thumb_func_start sub_8074DC4 +sub_8074DC4: @ 8074DC4 + push {r4,lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x2E] + movs r2, 0x2E + ldrsh r0, [r3, r2] + cmp r0, 0 + ble _08074E08 + subs r0, r1, 0x1 + strh r0, [r3, 0x2E] + ldr r2, _08074E04 @ =gSprites + movs r4, 0x34 + ldrsh r1, [r3, r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0x30] + ldrh r4, [r0, 0x24] + adds r1, r4 + strh r1, [r0, 0x24] + movs r0, 0x34 + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r3, 0x32] + ldrh r2, [r0, 0x26] + adds r1, r2 + strh r1, [r0, 0x26] + b _08074E0E + .align 2, 0 +_08074E04: .4byte gSprites +_08074E08: + adds r0, r3, 0 + bl SetCallbackToStoredInData +_08074E0E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074DC4 + + thumb_func_start sub_8074E14 +sub_8074E14: @ 8074E14 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _08074E64 + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] + ldrh r1, [r4, 0x30] + ldrh r0, [r4, 0x34] + adds r1, r0 + strh r1, [r4, 0x34] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + ldr r3, _08074E60 @ =gSprites + movs r0, 0x38 + ldrsh r2, [r4, r0] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r3 + lsls r1, 16 + asrs r1, 24 + strh r1, [r0, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldrh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r1, 0x26] + b _08074E6A + .align 2, 0 +_08074E60: .4byte gSprites +_08074E64: + adds r0, r4, 0 + bl SetCallbackToStoredInData +_08074E6A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074E14 + + thumb_func_start sub_8074E70 +sub_8074E70: @ 8074E70 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _08074ED2 + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] + ldrh r1, [r4, 0x32] + lsls r0, r1, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x30] + adds r1, r0 + strh r1, [r4, 0x32] + ldrh r1, [r4, 0x36] + lsls r0, r1, 16 + asrs r0, 24 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x34] + adds r1, r0 + strh r1, [r4, 0x36] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl __modsi3 + cmp r0, 0 + bne _08074ED8 + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _08074ED8 + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + 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 + strb r0, [r3] + b _08074ED8 +_08074ED2: + adds r0, r4, 0 + bl SetCallbackToStoredInData +_08074ED8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074E70 + + thumb_func_start move_anim_8074EE0 +move_anim_8074EE0: @ 8074EE0 + push {r4,lr} + adds r4, r0, 0 + bl FreeSpriteOamMatrix + adds r0, r4, 0 + bl DestroyAnimSprite + pop {r4} + pop {r0} + bx r0 + thumb_func_end move_anim_8074EE0 + + thumb_func_start sub_8074EF4 +sub_8074EF4: @ 8074EF4 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x26] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x34] + ldr r5, _08074F30 @ =gBattleAnimAttacker + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, _08074F34 @ =sub_8074C64 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08074F30: .4byte gBattleAnimAttacker +_08074F34: .4byte sub_8074C64 + thumb_func_end sub_8074EF4 + + thumb_func_start sub_8074F38 +sub_8074F38: @ 8074F38 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x38] + bl ResetPaletteStructByUid + adds r0, r4, 0 + bl move_anim_8074EE0 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074F38 + + thumb_func_start sub_8074F50 +sub_8074F50: @ 8074F50 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08074F66 + adds r0, r2, 0 + bl SetCallbackToStoredInData +_08074F66: + pop {r0} + bx r0 + thumb_func_end sub_8074F50 + + thumb_func_start sub_8074F6C +sub_8074F6C: @ 8074F6C + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08074F82 + adds r0, r2, 0 + bl SetCallbackToStoredInData +_08074F82: + pop {r0} + bx r0 + thumb_func_end sub_8074F6C + + thumb_func_start sub_8074F88 +sub_8074F88: @ 8074F88 + 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_8074F88 + + thumb_func_start sub_8074FA8 +sub_8074FA8: @ 8074FA8 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x50 + movs r1, 0 + bl SetGpuReg + movs r0, 0x52 + movs r1, 0 + bl SetGpuReg + adds r0, r4, 0 + bl DestroyAnimVisualTask + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8074FA8 + + thumb_func_start sub_8074FCC +sub_8074FCC: @ 8074FCC + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _08074FF4 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08074FF4: .4byte gBattleAnimAttacker + thumb_func_end sub_8074FCC + + thumb_func_start sub_8074FF8 +sub_8074FF8: @ 8074FF8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + lsls r1, 16 + lsrs r5, r1, 16 + mov r8, r5 + ldr r7, _08075030 @ =gBattleAnimAttacker + ldrb r0, [r7] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _08075034 @ =gBattleAnimTarget + ldrb r0, [r0] + movs r1, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + bhi _08075044 + cmp r6, r0 + bcs _08075038 + lsls r0, r5, 16 + b _08075054 + .align 2, 0 +_08075030: .4byte gBattleAnimAttacker +_08075034: .4byte gBattleAnimTarget +_08075038: + ldrb r0, [r7] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08075050 +_08075044: + ldrh r1, [r4, 0x20] + lsls r0, r5, 16 + asrs r0, 16 + subs r1, r0 + strh r1, [r4, 0x20] + b _0807505C +_08075050: + mov r1, r8 + lsls r0, r1, 16 +_08075054: + asrs r0, 16 + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] +_0807505C: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8074FF8 + + thumb_func_start sub_8075068 +sub_8075068: @ 8075068 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x20] + movs r5, 0 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + movs r0, 0x2E + ldrsh r1, [r4, r0] + movs r0, 0x80 + lsls r0, 8 + bl __divsi3 + strh r0, [r4, 0x3A] + strh r5, [r4, 0x3C] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8075068 + + thumb_func_start AnimateBallThrow +AnimateBallThrow: @ 8075094 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080750C0 + ldrh r0, [r4, 0x3A] + ldrh r1, [r4, 0x3C] + adds r0, r1 + strh r0, [r4, 0x3C] + lsls r0, 16 + lsrs r0, 24 + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Sin + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + movs r0, 0 + b _080750C2 +_080750C0: + movs r0, 0x1 +_080750C2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end AnimateBallThrow + + thumb_func_start sub_80750C8 +sub_80750C8: @ 80750C8 + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + bne _080750F4 + ldrh r0, [r4, 0x3A] + ldrh r1, [r4, 0x3C] + adds r0, r1 + strh r0, [r4, 0x3C] + lsls r0, 16 + lsrs r0, 24 + movs r2, 0x38 + ldrsh r1, [r4, r2] + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r0, 0 + b _080750F6 +_080750F4: + movs r0, 0x1 +_080750F6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80750C8 + + thumb_func_start oamt_add_pos2_onto_pos1 +oamt_add_pos2_onto_pos1: @ 80750FC + ldrh r1, [r0, 0x24] + ldrh r2, [r0, 0x20] + adds r1, r2 + movs r2, 0 + strh r1, [r0, 0x20] + ldrh r1, [r0, 0x26] + ldrh r3, [r0, 0x22] + adds r1, r3 + strh r1, [r0, 0x22] + strh r2, [r0, 0x24] + strh r2, [r0, 0x26] + bx lr + thumb_func_end oamt_add_pos2_onto_pos1 + + thumb_func_start sub_8075114 +sub_8075114: @ 8075114 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + cmp r1, 0 + bne _0807513C + ldr r4, _08075158 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0 + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] +_0807513C: + ldr r4, _0807515C @ =gBattleAnimArgs + movs r0, 0 + ldrsh r1, [r4, r0] + adds r0, r5, 0 + bl sub_8074FF8 + ldrh r0, [r4, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08075158: .4byte gBattleAnimTarget +_0807515C: .4byte gBattleAnimArgs + thumb_func_end sub_8075114 + + thumb_func_start sub_8075160 +sub_8075160: @ 8075160 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + cmp r1, 0 + bne _08075184 + ldr r4, _08075180 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0 + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + b _08075198 + .align 2, 0 +_08075180: .4byte gBattleAnimAttacker +_08075184: + ldr r4, _080751BC @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 +_08075198: + bl sub_8074844 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r4, _080751C0 @ =gBattleAnimArgs + movs r0, 0 + ldrsh r1, [r4, r0] + adds r0, r5, 0 + bl sub_8074FF8 + ldrh r0, [r4, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080751BC: .4byte gBattleAnimAttacker +_080751C0: .4byte gBattleAnimArgs + thumb_func_end sub_8075160 + + thumb_func_start GetBattlerSide +GetBattlerSide: @ 80751C4 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080751D4 @ =gUnknown_2023BD6 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + bx lr + .align 2, 0 +_080751D4: .4byte gUnknown_2023BD6 + thumb_func_end GetBattlerSide + + thumb_func_start GetBattlerPosition +GetBattlerPosition: @ 80751D8 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080751E4 @ =gUnknown_2023BD6 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080751E4: .4byte gUnknown_2023BD6 + thumb_func_end GetBattlerPosition + + thumb_func_start GetBattlerAtPosition +GetBattlerAtPosition: @ 80751E8 + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + movs r1, 0 + ldr r0, _0807521C @ =gBattlersCount + ldrb r2, [r0] + cmp r1, r2 + bcs _08075212 + ldr r4, _08075220 @ =gUnknown_2023BD6 + ldrb r0, [r4] + cmp r0, r3 + beq _08075212 +_08075200: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r2 + bcs _08075212 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, r3 + bne _08075200 +_08075212: + adds r0, r1, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0807521C: .4byte gBattlersCount +_08075220: .4byte gUnknown_2023BD6 + thumb_func_end GetBattlerAtPosition + + thumb_func_start sub_8075224 +sub_8075224: @ 8075224 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r5, r4, 0 + ldr r0, _08075254 @ =gUnknown_2023BD6 + adds r0, r4, r0 + ldrb r0, [r0] + cmp r0, 0xFF + beq _08075288 + adds r0, r4, 0 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08075260 + ldr r1, _08075258 @ =gBattlerPartyIndexes + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0807525C @ =gEnemyParty + b _0807526E + .align 2, 0 +_08075254: .4byte gUnknown_2023BD6 +_08075258: .4byte gBattlerPartyIndexes +_0807525C: .4byte gEnemyParty +_08075260: + ldr r1, _08075280 @ =gBattlerPartyIndexes + lsls r0, r5, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08075284 @ =gPlayerParty +_0807526E: + adds r0, r1 + movs r1, 0x39 + bl GetMonData + cmp r0, 0 + beq _08075288 + movs r0, 0x1 + b _0807528A + .align 2, 0 +_08075280: .4byte gBattlerPartyIndexes +_08075284: .4byte gPlayerParty +_08075288: + movs r0, 0 +_0807528A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8075224 + + thumb_func_start sub_8075290 +sub_8075290: @ 8075290 + ldr r0, _0807529C @ =gBattleTypeFlags + ldr r0, [r0] + movs r1, 0x1 + ands r0, r1 + bx lr + .align 2, 0 +_0807529C: .4byte gBattleTypeFlags + thumb_func_end sub_8075290 + + thumb_func_start sub_80752A0 +sub_80752A0: @ 80752A0 + ldr r1, _080752C0 @ =gUnknown_2022BB8 + ldr r1, [r1] + str r1, [r0] + ldr r1, _080752C4 @ =gUnknown_2022BBC + ldr r1, [r1] + str r1, [r0, 0x4] + movs r2, 0 + movs r1, 0x8 + strb r1, [r0, 0x8] + movs r1, 0x1 + strb r1, [r0, 0x9] + movs r1, 0x80 + lsls r1, 2 + strh r1, [r0, 0xA] + strh r2, [r0, 0xC] + bx lr + .align 2, 0 +_080752C0: .4byte gUnknown_2022BB8 +_080752C4: .4byte gUnknown_2022BBC + thumb_func_end sub_80752A0 + + thumb_func_start sub_80752C8 +sub_80752C8: @ 80752C8 + push {lr} + adds r2, r0, 0 + cmp r1, 0x1 + bne _080752D6 + bl sub_80752A0 + b _080752F4 +_080752D6: + ldr r0, _080752F8 @ =gUnknown_2022BB8 + ldr r0, [r0] + str r0, [r2] + ldr r0, _080752FC @ =gUnknown_2022BBC + ldr r0, [r0] + str r0, [r2, 0x4] + movs r1, 0 + movs r0, 0x9 + strb r0, [r2, 0x8] + movs r0, 0x2 + strb r0, [r2, 0x9] + movs r0, 0xC0 + lsls r0, 2 + strh r0, [r2, 0xA] + strh r1, [r2, 0xC] +_080752F4: + pop {r0} + bx r0 + .align 2, 0 +_080752F8: .4byte gUnknown_2022BB8 +_080752FC: .4byte gUnknown_2022BBC + thumb_func_end sub_80752C8 + + thumb_func_start sub_8075300 +sub_8075300: @ 8075300 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08075334 @ =gUnknown_2022BB8 + ldr r0, [r0] + str r0, [r4] + ldr r0, _08075338 @ =gUnknown_2022BBC + ldr r0, [r0] + str r0, [r4, 0x4] + ldr r0, _0807533C @ =gBattleAnimAttacker + ldrb r0, [r0] + bl sub_80768B0 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x1 + bne _08075340 + movs r0, 0 + movs r1, 0x8 + strb r1, [r4, 0x8] + strb r2, [r4, 0x9] + movs r1, 0x80 + lsls r1, 2 + strh r1, [r4, 0xA] + strh r0, [r4, 0xC] + b _08075352 + .align 2, 0 +_08075334: .4byte gUnknown_2022BB8 +_08075338: .4byte gUnknown_2022BBC +_0807533C: .4byte gBattleAnimAttacker +_08075340: + movs r1, 0 + movs r0, 0x9 + strb r0, [r4, 0x8] + movs r0, 0x2 + strb r0, [r4, 0x9] + movs r0, 0xC0 + lsls r0, 2 + strh r0, [r4, 0xA] + strh r1, [r4, 0xC] +_08075352: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075300 + + thumb_func_start sub_8075358 +sub_8075358: @ 8075358 + push {r4,lr} + sub sp, 0x20 + adds r4, r0, 0 + add r0, sp, 0xC + adds r1, r4, 0 + bl sub_80752C8 + movs r0, 0 + str r0, [sp, 0x1C] + add r0, sp, 0x1C + ldr r1, [sp, 0xC] + ldr r2, _080753B0 @ =0x05000800 + bl CpuSet + lsls r4, 24 + lsrs r4, 24 + ldr r1, [sp, 0xC] + movs r2, 0x80 + lsls r2, 6 + add r0, sp, 0xC + ldrh r3, [r0, 0xA] + adds r0, r4, 0 + bl LoadBgTiles + movs r0, 0x20 + str r0, [sp] + movs r0, 0x40 + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl FillBgTilemapBufferRect + adds r0, r4, 0 + bl CopyBgTilemapBufferToVram + add sp, 0x20 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080753B0: .4byte 0x05000800 + thumb_func_end sub_8075358 + + thumb_func_start sub_80753B4 +sub_80753B4: @ 80753B4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + adds r5, r0, 0 + mov r8, r1 + adds r6, r2, 0 + movs r0, 0 + str r0, [sp] + ldr r4, _080753FC @ =gUnknown_2022BB8 + ldr r1, [r4] + ldr r2, _08075400 @ =0x05000800 + mov r0, sp + bl CpuSet + ldr r1, [r4] + mov r0, r8 + bl LZDecompressWram + lsls r5, 24 + lsrs r5, 24 + ldr r1, [r4] + movs r2, 0x80 + lsls r2, 6 + lsls r6, 16 + lsrs r6, 16 + adds r0, r5, 0 + adds r3, r6, 0 + bl LoadBgTiles + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080753FC: .4byte gUnknown_2022BB8 +_08075400: .4byte 0x05000800 + thumb_func_end sub_80753B4 + + thumb_func_start sub_8075404 +sub_8075404: @ 8075404 + push {r4,r5,lr} + sub sp, 0xC + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x20 + str r0, [sp] + movs r0, 0x40 + str r0, [sp, 0x4] + movs r0, 0x11 + str r0, [sp, 0x8] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl FillBgTilemapBufferRect + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0 + movs r3, 0 + bl CopyToBgTilemapBuffer + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8075404 + + thumb_func_start sub_807543C +sub_807543C: @ 807543C + push {r4,lr} + adds r4, r0, 0 + bl sub_8075404 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl CopyBgTilemapBufferToVram + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807543C + + thumb_func_start sub_8075454 +sub_8075454: @ 8075454 + movs r0, 0x2 + bx lr + thumb_func_end sub_8075454 + + thumb_func_start sub_8075458 +sub_8075458: @ 8075458 + push {lr} + lsls r0, 24 + cmp r0, 0 + bne _08075476 + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl SetAnimBgAttribute + movs r0, 0x3 + movs r1, 0x1 + movs r2, 0x1 + bl SetAnimBgAttribute + b _0807548A +_08075476: + movs r0, 0x3 + movs r1, 0 + movs r2, 0x1 + bl SetAnimBgAttribute + movs r0, 0x3 + movs r1, 0x1 + movs r2, 0 + bl SetAnimBgAttribute +_0807548A: + pop {r0} + bx r0 + thumb_func_end sub_8075458 + + thumb_func_start sub_8075490 +sub_8075490: @ 8075490 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + adds r0, r4, 0 + bl sub_80754B8 + ldr r1, _080754B4 @ =sub_8074D3C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080754B4: .4byte sub_8074D3C + thumb_func_end sub_8075490 + + thumb_func_start sub_80754B8 +sub_80754B8: @ 80754B8 + push {r4-r6,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x32] + ldrh r1, [r5, 0x30] + subs r0, r1 + ldrh r4, [r5, 0x36] + ldrh r1, [r5, 0x34] + subs r4, r1 + lsls r4, 24 + lsrs r4, 16 + lsls r0, 24 + asrs r0, 16 + movs r2, 0x2E + ldrsh r1, [r5, r2] + bl __divsi3 + movs r6, 0 + strh r0, [r5, 0x30] + lsls r4, 16 + asrs r4, 16 + movs r0, 0x2E + ldrsh r1, [r5, r0] + adds r0, r4, 0 + bl __divsi3 + strh r0, [r5, 0x32] + strh r6, [r5, 0x36] + strh r6, [r5, 0x34] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80754B8 + + thumb_func_start obj_translate_based_on_private_1_2_3_4 +obj_translate_based_on_private_1_2_3_4: @ 80754F8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + movs r0, 0x32 + ldrsh r1, [r7, r0] + movs r2, 0x30 + ldrsh r0, [r7, r2] + subs r1, r0 + movs r3, 0x36 + ldrsh r2, [r7, r3] + movs r3, 0x34 + ldrsh r0, [r7, r3] + subs r2, r0 + lsrs r0, r1, 31 + mov r8, r0 + lsrs r3, r2, 31 + mov r9, r3 + cmp r1, 0 + bge _08075524 + negs r1, r1 +_08075524: + lsls r0, r1, 24 + lsrs r6, r0, 16 + adds r0, r2, 0 + cmp r0, 0 + bge _08075530 + negs r0, r0 +_08075530: + lsls r0, 24 + lsrs r5, r0, 16 + movs r0, 0x2E + ldrsh r4, [r7, r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl __divsi3 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl __divsi3 + lsls r0, 16 + lsrs r5, r0, 16 + mov r2, r8 + cmp r2, 0 + beq _0807555C + movs r0, 0x1 + orrs r6, r0 + b _08075560 +_0807555C: + ldr r0, _0807556C @ =0x0000fffe + ands r6, r0 +_08075560: + mov r3, r9 + cmp r3, 0 + beq _08075570 + movs r0, 0x1 + orrs r5, r0 + b _08075574 + .align 2, 0 +_0807556C: .4byte 0x0000fffe +_08075570: + ldr r0, _0807558C @ =0x0000fffe + ands r5, r0 +_08075574: + movs r0, 0 + strh r6, [r7, 0x30] + strh r5, [r7, 0x32] + strh r0, [r7, 0x36] + strh r0, [r7, 0x34] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0807558C: .4byte 0x0000fffe + thumb_func_end obj_translate_based_on_private_1_2_3_4 + + thumb_func_start sub_8075590 +sub_8075590: @ 8075590 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r1, _080755B4 @ =sub_807563C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080755B4: .4byte sub_807563C + thumb_func_end sub_8075590 + + thumb_func_start sub_80755B8 +sub_80755B8: @ 80755B8 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldr r1, _080755DC @ =sub_8075658 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080755DC: .4byte sub_8075658 + thumb_func_end sub_80755B8 + + thumb_func_start sub_80755E0 +sub_80755E0: @ 80755E0 + push {r4-r6,lr} + adds r2, r0, 0 + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0 + bne _080755F0 + movs r0, 0x1 + b _08075634 +_080755F0: + ldrh r1, [r2, 0x30] + ldrh r4, [r2, 0x32] + ldrh r6, [r2, 0x34] + ldrh r5, [r2, 0x36] + adds r0, r6, r1 + lsls r3, r0, 16 + lsrs r6, r3, 16 + adds r0, r5, r4 + lsls r0, 16 + lsrs r5, r0, 16 + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + beq _08075612 + lsrs r0, r3, 24 + negs r0, r0 + b _08075614 +_08075612: + lsrs r0, r3, 24 +_08075614: + strh r0, [r2, 0x24] + movs r0, 0x1 + ands r4, r0 + cmp r4, 0 + beq _08075624 + lsrs r0, r5, 8 + negs r0, r0 + b _08075626 +_08075624: + lsrs r0, r5, 8 +_08075626: + strh r0, [r2, 0x26] + strh r6, [r2, 0x34] + strh r5, [r2, 0x36] + ldrh r0, [r2, 0x2E] + subs r0, 0x1 + strh r0, [r2, 0x2E] + movs r0, 0 +_08075634: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80755E0 + + thumb_func_start sub_807563C +sub_807563C: @ 807563C + push {r4,lr} + adds r4, r0, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _08075650 + adds r0, r4, 0 + bl SetCallbackToStoredInData +_08075650: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807563C + + thumb_func_start sub_8075658 +sub_8075658: @ 8075658 + push {r4,lr} + adds r4, r0, 0 + bl sub_801236C + adds r0, r4, 0 + bl sub_80755E0 + lsls r0, 24 + cmp r0, 0 + beq _08075672 + adds r0, r4, 0 + bl SetCallbackToStoredInData +_08075672: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075658 + + thumb_func_start sub_8075678 +sub_8075678: @ 8075678 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x32 + ldrsh r1, [r4, r0] + movs r2, 0x30 + ldrsh r0, [r4, r2] + subs r0, r1, r0 + cmp r0, 0 + bge _0807568C + negs r0, r0 +_0807568C: + lsls r0, 8 + movs r2, 0x2E + ldrsh r1, [r4, r2] + bl __divsi3 + strh r0, [r4, 0x2E] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075678 + + thumb_func_start sub_80756A4 +sub_80756A4: @ 80756A4 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + adds r0, r4, 0 + bl sub_8075678 + ldr r1, _080756C8 @ =sub_807563C + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080756C8: .4byte sub_807563C + thumb_func_end sub_80756A4 + + thumb_func_start sub_80756CC +sub_80756CC: @ 80756CC + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + movs r0, 0x32 + ldrsh r1, [r7, r0] + movs r2, 0x30 + ldrsh r0, [r7, r2] + subs r1, r0 + movs r3, 0x36 + ldrsh r2, [r7, r3] + movs r3, 0x34 + ldrsh r0, [r7, r3] + subs r2, r0 + lsrs r0, r1, 31 + mov r8, r0 + lsrs r3, r2, 31 + mov r9, r3 + cmp r1, 0 + bge _080756F8 + negs r1, r1 +_080756F8: + lsls r0, r1, 20 + lsrs r6, r0, 16 + adds r0, r2, 0 + cmp r0, 0 + bge _08075704 + negs r0, r0 +_08075704: + lsls r0, 20 + lsrs r5, r0, 16 + movs r0, 0x2E + ldrsh r4, [r7, r0] + adds r0, r6, 0 + adds r1, r4, 0 + bl __divsi3 + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl __divsi3 + lsls r0, 16 + lsrs r5, r0, 16 + mov r2, r8 + cmp r2, 0 + beq _08075730 + movs r0, 0x1 + orrs r6, r0 + b _08075734 +_08075730: + ldr r0, _08075740 @ =0x0000fffe + ands r6, r0 +_08075734: + mov r3, r9 + cmp r3, 0 + beq _08075744 + movs r0, 0x1 + orrs r5, r0 + b _08075748 + .align 2, 0 +_08075740: .4byte 0x0000fffe +_08075744: + ldr r0, _08075760 @ =0x0000fffe + ands r5, r0 +_08075748: + movs r0, 0 + strh r6, [r7, 0x30] + strh r5, [r7, 0x32] + strh r0, [r7, 0x36] + strh r0, [r7, 0x34] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08075760: .4byte 0x0000fffe + thumb_func_end sub_80756CC + + thumb_func_start sub_8075764 +sub_8075764: @ 8075764 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + adds r0, r4, 0 + bl sub_80756CC + ldr r1, _08075788 @ =sub_80757E8 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08075788: .4byte sub_80757E8 + thumb_func_end sub_8075764 + + thumb_func_start sub_807578C +sub_807578C: @ 807578C + push {r4-r6,lr} + adds r2, r0, 0 + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0 + bne _0807579C + movs r0, 0x1 + b _080757E0 +_0807579C: + ldrh r1, [r2, 0x30] + ldrh r4, [r2, 0x32] + ldrh r6, [r2, 0x34] + ldrh r5, [r2, 0x36] + adds r0, r6, r1 + lsls r3, r0, 16 + lsrs r6, r3, 16 + adds r0, r5, r4 + lsls r0, 16 + lsrs r5, r0, 16 + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + beq _080757BE + lsrs r0, r3, 20 + negs r0, r0 + b _080757C0 +_080757BE: + lsrs r0, r3, 20 +_080757C0: + strh r0, [r2, 0x24] + movs r0, 0x1 + ands r4, r0 + cmp r4, 0 + beq _080757D0 + lsrs r0, r5, 4 + negs r0, r0 + b _080757D2 +_080757D0: + lsrs r0, r5, 4 +_080757D2: + strh r0, [r2, 0x26] + strh r6, [r2, 0x34] + strh r5, [r2, 0x36] + ldrh r0, [r2, 0x2E] + subs r0, 0x1 + strh r0, [r2, 0x2E] + movs r0, 0 +_080757E0: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_807578C + + thumb_func_start sub_80757E8 +sub_80757E8: @ 80757E8 + push {r4,lr} + adds r4, r0, 0 + bl sub_807578C + lsls r0, 24 + cmp r0, 0 + beq _080757FC + adds r0, r4, 0 + bl SetCallbackToStoredInData +_080757FC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80757E8 + + thumb_func_start sub_8075804 +sub_8075804: @ 8075804 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x32 + ldrsh r1, [r4, r0] + movs r2, 0x30 + ldrsh r0, [r4, r2] + subs r0, r1, r0 + cmp r0, 0 + bge _08075818 + negs r0, r0 +_08075818: + lsls r0, 4 + movs r2, 0x2E + ldrsh r1, [r4, r2] + bl __divsi3 + strh r0, [r4, 0x2E] + adds r0, r4, 0 + bl sub_80756CC + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075804 + + thumb_func_start sub_8075830 +sub_8075830: @ 8075830 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + adds r0, r4, 0 + bl sub_8075804 + ldr r1, _08075854 @ =sub_80757E8 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08075854: .4byte sub_80757E8 + thumb_func_end sub_8075830 + + thumb_func_start obj_id_set_rotscale +obj_id_set_rotscale: @ 8075858 + push {r4,r5,lr} + sub sp, 0x10 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 16 + lsls r3, 16 + lsrs r3, 16 + ldr r5, _080758D0 @ =0xffff0000 + lsls r2, 16 + lsrs r1, 16 + orrs r1, r2 + str r1, [sp] + ldr r0, [sp, 0x4] + ands r0, r5 + orrs r0, r3 + str r0, [sp, 0x4] + bl sub_80758DC + lsls r0, 24 + cmp r0, 0 + beq _08075894 + mov r0, sp + ldrh r0, [r0] + negs r0, r0 + lsls r0, 16 + lsrs r0, 16 + ldr r1, [sp] + ands r1, r5 + orrs r1, r0 + str r1, [sp] +_08075894: + ldr r1, _080758D4 @ =gSprites + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r4, [r0, 0x3] + lsls r4, 26 + lsrs r4, 27 + add r5, sp, 0x8 + mov r0, sp + adds r1, r5, 0 + movs r2, 0x1 + movs r3, 0x2 + bl ObjAffineSet + ldr r0, _080758D8 @ =gOamMatrices + lsls r4, 3 + adds r4, r0 + ldrh r0, [r5] + strh r0, [r4] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x2] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x4] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x6] + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080758D0: .4byte 0xffff0000 +_080758D4: .4byte gSprites +_080758D8: .4byte gOamMatrices + thumb_func_end obj_id_set_rotscale + + thumb_func_start sub_80758DC +sub_80758DC: @ 80758DC + movs r0, 0 + bx lr + thumb_func_end sub_80758DC + + thumb_func_start sub_80758E0 +sub_80758E0: @ 80758E0 + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r2, _08075978 @ =gSprites + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r4, r1, r2 + ldrh r0, [r4, 0x2E] + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075914 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] +_08075914: + movs r7, 0x3 + ands r5, r7 + lsls r2, r5, 2 + ldrb r1, [r4, 0x1] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x1] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4, 0x1] + lsls r0, 30 + cmp r0, 0 + bne _0807595C + ldr r0, _0807597C @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x6] + movs r0, 0x1F + ands r1, r0 + lsls r1, 1 + ldrb r2, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x3] +_0807595C: + ldrb r3, [r4, 0x1] + orrs r3, r7 + 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 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08075978: .4byte gSprites +_0807597C: .4byte gUnknown_2024018 + thumb_func_end sub_80758E0 + + thumb_func_start sub_8075980 +sub_8075980: @ 8075980 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r2, 0x80 + lsls r2, 1 + adds r0, r4, 0 + adds r1, r2, 0 + movs r3, 0 + bl obj_id_set_rotscale + ldr r1, _080759D8 @ =gSprites + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r2, [r0, 0x1] + movs r1, 0x4 + negs r1, r1 + ands r1, r2 + movs r2, 0x1 + orrs r1, r2 + movs r2, 0xD + negs r2, r2 + ands r1, r2 + strb r1, [r0, 0x1] + adds r3, r0, 0 + adds r3, 0x2C + ldrb r2, [r3] + movs r1, 0x7F + ands r1, r2 + strb r1, [r3] + ldrb r3, [r0, 0x1] + lsrs r1, r3, 6 + ldrb r2, [r0, 0x3] + lsrs r2, 6 + lsls r3, 30 + lsrs r3, 30 + bl CalcCenterToCornerVec + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080759D8: .4byte gSprites + thumb_func_end sub_8075980 + + thumb_func_start sub_80759DC +sub_80759DC: @ 80759DC + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08075A14 @ =gSprites + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r2, r1, r2 + ldrb r0, [r2, 0x3] + lsls r0, 26 + lsrs r0, 27 + ldr r1, _08075A18 @ =gOamMatrices + lsls r0, 3 + adds r0, r1 + ldrh r1, [r0, 0x4] + movs r3, 0x4 + ldrsh r0, [r0, r3] + cmp r0, 0 + bge _08075A08 + negs r0, r0 + lsls r0, 16 + lsrs r1, r0, 16 +_08075A08: + lsls r0, r1, 16 + asrs r0, 19 + strh r0, [r2, 0x26] + pop {r0} + bx r0 + .align 2, 0 +_08075A14: .4byte gSprites +_08075A18: .4byte gOamMatrices + thumb_func_end sub_80759DC + + thumb_func_start sub_8075A1C +sub_8075A1C: @ 8075A1C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + adds r4, r0, 0 + ldr r0, [sp, 0x28] + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 16 + lsrs r5, r2, 16 + lsls r3, 16 + lsrs r7, r3, 16 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08075AC2 + adds r0, r4, 0 + adds r0, 0x2C + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] + cmp r6, 0 + beq _08075A6A + ldrb 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 +_08075A6A: + ldr r6, _08075AD0 @ =0xffff0000 + lsls r0, r7, 16 + orrs r5, r0 + str r5, [sp] + ldr r0, [sp, 0x4] + ands r0, r6 + mov r1, r8 + orrs r0, r1 + str r0, [sp, 0x4] + bl sub_80758DC + lsls r0, 24 + cmp r0, 0 + beq _08075A98 + mov r0, sp + ldrh r0, [r0] + negs r0, r0 + lsls r0, 16 + lsrs r0, 16 + ldr r1, [sp] + ands r1, r6 + orrs r1, r0 + str r1, [sp] +_08075A98: + ldrb r4, [r4, 0x3] + lsls r4, 26 + lsrs r4, 27 + add r5, sp, 0x8 + mov r0, sp + adds r1, r5, 0 + movs r2, 0x1 + movs r3, 0x2 + bl ObjAffineSet + ldr r0, _08075AD4 @ =gOamMatrices + lsls r4, 3 + adds r4, r0 + ldrh r0, [r5] + strh r0, [r4] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x2] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x4] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x6] +_08075AC2: + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08075AD0: .4byte 0xffff0000 +_08075AD4: .4byte gOamMatrices + thumb_func_end sub_8075A1C + + thumb_func_start sub_8075AD8 +sub_8075AD8: @ 8075AD8 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + movs r3, 0x80 + lsls r3, 1 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r1, 0x1 + adds r2, r3, 0 + bl sub_8075A1C + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + ldrb 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 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075AD8 + + thumb_func_start ArcTan2_ +ArcTan2_: @ 8075B18 + push {lr} + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + bl ArcTan2 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end ArcTan2_ + + thumb_func_start sub_8075B30 +sub_8075B30: @ 8075B30 + push {lr} + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + bl ArcTan2_ + lsls r0, 16 + negs r0, r0 + lsrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_8075B30 + + thumb_func_start sub_8075B48 +sub_8075B48: @ 8075B48 + push {r4-r7,lr} + lsls r1, 24 + lsls r0, 20 + lsrs r0, 16 + cmp r1, 0 + bne _08075BC4 + ldr r2, _08075BB8 @ =gPlttBufferUnfaded + ldr r1, _08075BBC @ =gPlttBufferFaded + lsls r0, 1 + adds r4, r0, r1 + adds r5, r0, r2 + movs r6, 0xF +_08075B60: + ldr r0, [r5] + lsls r2, r0, 27 + lsrs r2, 27 + lsls r1, r0, 22 + lsrs r1, 27 + adds r2, r1 + lsls r0, 17 + lsrs r0, 27 + adds r0, r2 + movs r1, 0x3 + bl __udivsi3 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1F + ands r0, r1 + ldrb r1, [r4] + movs r3, 0x20 + negs r3, r3 + adds r2, r3, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4] + lsls r3, r0, 5 + ldrh r1, [r4] + ldr r7, _08075BC0 @ =0xfffffc1f + adds r2, r7, 0 + ands r1, r2 + orrs r1, r3 + strh r1, [r4] + lsls r0, 2 + ldrb r1, [r4, 0x1] + movs r3, 0x7D + negs r3, r3 + adds r2, r3, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x1] + adds r4, 0x2 + adds r5, 0x2 + subs r6, 0x1 + cmp r6, 0 + bge _08075B60 + b _08075BD4 + .align 2, 0 +_08075BB8: .4byte gPlttBufferUnfaded +_08075BBC: .4byte gPlttBufferFaded +_08075BC0: .4byte 0xfffffc1f +_08075BC4: + lsls r1, r0, 1 + ldr r0, _08075BDC @ =gPlttBufferUnfaded + adds r0, r1, r0 + ldr r2, _08075BE0 @ =gPlttBufferFaded + adds r1, r2 + ldr r2, _08075BE4 @ =0x04000008 + bl CpuSet +_08075BD4: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08075BDC: .4byte gPlttBufferUnfaded +_08075BE0: .4byte gPlttBufferFaded +_08075BE4: .4byte 0x04000008 + thumb_func_end sub_8075B48 + + thumb_func_start sub_8075BE8 +sub_8075BE8: @ 8075BE8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r4, [sp, 0x1C] + ldr r5, [sp, 0x20] + ldr r6, [sp, 0x24] + lsls r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r7, r4, 24 + lsls r5, 24 + lsrs r5, 24 + mov r8, r5 + lsls r6, 24 + lsrs r6, 24 + mov r9, r6 + movs r4, 0 + cmp r0, 0 + beq _08075C1C + movs r4, 0xE +_08075C1C: + cmp r1, 0 + beq _08075C2E + ldr r0, _08075CB0 @ =gBattleAnimAttacker + ldrb r0, [r0] + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075C2E: + cmp r2, 0 + beq _08075C40 + ldr r0, _08075CB4 @ =gBattleAnimTarget + ldrb r0, [r0] + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075C40: + cmp r3, 0 + beq _08075C64 + ldr r6, _08075CB0 @ =gBattleAnimAttacker + ldrb r0, [r6] + movs r5, 0x2 + eors r0, r5 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075C64 + ldrb r0, [r6] + eors r0, r5 + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075C64: + cmp r7, 0 + beq _08075C88 + ldr r6, _08075CB4 @ =gBattleAnimTarget + ldrb r0, [r6] + movs r5, 0x2 + eors r0, r5 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075C88 + ldrb r0, [r6] + eors r0, r5 + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075C88: + mov r0, r8 + cmp r0, 0 + beq _08075C94 + movs r0, 0x80 + lsls r0, 1 + orrs r4, r0 +_08075C94: + mov r0, r9 + cmp r0, 0 + beq _08075CA0 + movs r0, 0x80 + lsls r0, 2 + orrs r4, r0 +_08075CA0: + adds r0, r4, 0 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08075CB0: .4byte gBattleAnimAttacker +_08075CB4: .4byte gBattleAnimTarget + thumb_func_end sub_8075BE8 + + thumb_func_start sub_8075CB8 +sub_8075CB8: @ 8075CB8 + push {r4-r7,lr} + lsls r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + lsls r3, 24 + lsrs r7, r3, 24 + movs r4, 0 + cmp r0, 0 + beq _08075CF2 + movs r0, 0 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075CF2 + movs r0, 0 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x10 + movs r4, 0x1 + lsls r4, r0 +_08075CF2: + cmp r5, 0 + beq _08075D1E + movs r0, 0x2 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075D1E + movs r0, 0x2 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075D1E: + cmp r6, 0 + beq _08075D4A + movs r0, 0x1 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075D4A + movs r0, 0x1 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075D4A: + cmp r7, 0 + beq _08075D76 + movs r0, 0x3 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08075D76 + movs r0, 0x3 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + adds r1, 0x10 + movs r0, 0x1 + lsls r0, r1 + orrs r4, r0 +_08075D76: + adds r0, r4, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8075CB8 + + thumb_func_start sub_8075D80 +sub_8075D80: @ 8075D80 + lsls r0, 24 + lsrs r0, 24 + bx lr + thumb_func_end sub_8075D80 + + thumb_func_start sub_8075D88 +sub_8075D88: @ 8075D88 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8075D88 + + thumb_func_start sub_8075D9C +sub_8075D9C: @ 8075D9C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08075DDA + ldr r2, _08075DC8 @ =gBattleAnimArgs + movs r3, 0x6 + ldrsh r0, [r2, r3] + movs r1, 0 + cmp r0, 0 + bne _08075DB6 + movs r1, 0x1 +_08075DB6: + movs r3, 0x4 + ldrsh r0, [r2, r3] + cmp r0, 0 + bne _08075DCC + adds r0, r4, 0 + bl sub_8075160 + b _08075DD2 + .align 2, 0 +_08075DC8: .4byte gBattleAnimArgs +_08075DCC: + adds r0, r4, 0 + bl sub_8075114 +_08075DD2: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _08075DEE +_08075DDA: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x30 + ands r0, r1 + cmp r0, 0 + beq _08075DEE + adds r0, r4, 0 + bl move_anim_8074EE0 +_08075DEE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075D9C + + thumb_func_start sub_8075DF4 +sub_8075DF4: @ 8075DF4 + push {r4-r7,lr} + adds r5, r0, 0 + ldr r6, _08075E6C @ =gBattleAnimArgs + movs r1, 0xA + ldrsh r0, [r6, r1] + movs r1, 0xFF + lsls r1, 8 + ands r0, r1 + movs r1, 0 + cmp r0, 0 + bne _08075E0C + movs r1, 0x1 +_08075E0C: + ldrb r0, [r6, 0xA] + movs r7, 0x1 + cmp r0, 0 + bne _08075E16 + movs r7, 0x3 +_08075E16: + adds r0, r5, 0 + bl sub_8075160 + ldr r0, _08075E70 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08075E30 + ldrh r0, [r6, 0x4] + negs r0, r0 + strh r0, [r6, 0x4] +_08075E30: + ldrh r0, [r6, 0x8] + strh r0, [r5, 0x2E] + ldr r4, _08075E74 @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x4] + adds r0, r1 + strh r0, [r5, 0x32] + ldrb r0, [r4] + adds r1, r7, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x6] + adds r0, r6 + strh r0, [r5, 0x36] + ldr r0, _08075E78 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _08075E7C @ =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08075E6C: .4byte gBattleAnimArgs +_08075E70: .4byte gBattleAnimAttacker +_08075E74: .4byte gBattleAnimTarget +_08075E78: .4byte sub_8075590 +_08075E7C: .4byte DestroyAnimSprite + thumb_func_end sub_8075DF4 + + thumb_func_start sub_8075E80 +sub_8075E80: @ 8075E80 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_8075160 + ldr r0, _08075EE0 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08075EA0 + ldr r1, _08075EE4 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_08075EA0: + ldr r4, _08075EE4 @ =gBattleAnimArgs + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x2E] + ldr r5, _08075EE8 @ =gBattleAnimTarget + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x6] + adds r0, r1 + strh r0, [r6, 0x36] + ldrh r0, [r4, 0xA] + strh r0, [r6, 0x38] + adds r0, r6, 0 + bl sub_8075068 + ldr r0, _08075EEC @ =sub_8075EF0 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08075EE0: .4byte gBattleAnimAttacker +_08075EE4: .4byte gBattleAnimArgs +_08075EE8: .4byte gBattleAnimTarget +_08075EEC: .4byte sub_8075EF0 + thumb_func_end sub_8075E80 + + thumb_func_start sub_8075EF0 +sub_8075EF0: @ 8075EF0 + push {r4,lr} + adds r4, r0, 0 + bl AnimateBallThrow + lsls r0, 24 + cmp r0, 0 + beq _08075F04 + adds r0, r4, 0 + bl DestroyAnimSprite +_08075F04: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8075EF0 + + thumb_func_start sub_8075F0C +sub_8075F0C: @ 8075F0C + push {r4-r7,lr} + adds r5, r0, 0 + ldr r0, _08075F20 @ =gBattleAnimArgs + movs r2, 0xC + ldrsh r1, [r0, r2] + cmp r1, 0 + bne _08075F24 + movs r4, 0x1 + movs r7, 0x3 + b _08075F28 + .align 2, 0 +_08075F20: .4byte gBattleAnimArgs +_08075F24: + movs r4, 0 + movs r7, 0x1 +_08075F28: + movs r1, 0xA + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _08075F40 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8075160 + ldr r0, _08075F3C @ =gBattleAnimAttacker + b _08075F4A + .align 2, 0 +_08075F3C: .4byte gBattleAnimAttacker +_08075F40: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8075114 + ldr r0, _08075FA8 @ =gBattleAnimTarget +_08075F4A: + ldrb r6, [r0] + ldr r0, _08075FAC @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08075F62 + ldr r1, _08075FB0 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_08075F62: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8075114 + ldr r4, _08075FB0 @ =gBattleAnimArgs + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x2E] + adds r0, r6, 0 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r2, [r4, 0x4] + adds r0, r2 + strh r0, [r5, 0x32] + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x6] + adds r0, r4 + strh r0, [r5, 0x36] + ldr r0, _08075FB4 @ =sub_8075590 + str r0, [r5, 0x1C] + ldr r1, _08075FB8 @ =DestroyAnimSprite + adds r0, r5, 0 + bl StoreSpriteCallbackInData6 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08075FA8: .4byte gBattleAnimTarget +_08075FAC: .4byte gBattleAnimAttacker +_08075FB0: .4byte gBattleAnimArgs +_08075FB4: .4byte sub_8075590 +_08075FB8: .4byte DestroyAnimSprite + thumb_func_end sub_8075F0C + + thumb_func_start duplicate_obj_of_side_rel2move_in_transparent_mode +duplicate_obj_of_side_rel2move_in_transparent_mode: @ 8075FBC + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _08076026 + movs r6, 0 + ldr r2, _08076018 @ =gSprites + lsls r0, r1, 4 + adds r0, r1 + lsls r1, r0, 2 +_08075FD8: + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r4, r0, r2 + adds r5, r4, 0 + adds r5, 0x3E + ldrb r0, [r5] + lsls r0, 31 + cmp r0, 0 + bne _0807601C + adds r0, r4, 0 + adds r1, r2 + movs r2, 0x44 + bl memcpy + ldrb r1, [r4, 0x1] + movs r2, 0xD + negs r2, r2 + adds r0, r2, 0 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r4, 0x1] + ldrb r0, [r5] + adds r2, 0x8 + adds r1, r2, 0 + ands r0, r1 + strb r0, [r5] + lsls r0, r6, 16 + asrs r0, 16 + b _0807602A + .align 2, 0 +_08076018: .4byte gSprites +_0807601C: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r6, 0x3F + bls _08075FD8 +_08076026: + movs r0, 0x1 + negs r0, r0 +_0807602A: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end duplicate_obj_of_side_rel2move_in_transparent_mode + + thumb_func_start obj_delete_but_dont_free_vram +obj_delete_but_dont_free_vram: @ 8076030 + push {lr} + adds r3, r0, 0 + adds r3, 0x3F + ldrb r1, [r3] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r3] + bl DestroySprite + pop {r0} + bx r0 + thumb_func_end obj_delete_but_dont_free_vram + + thumb_func_start sub_8076048 +sub_8076048: @ 8076048 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r6, 0 + movs r3, 0 + ldr r2, _080760C0 @ =gBattleAnimArgs + movs r0, 0x4 + ldrsh r1, [r2, r0] + movs r4, 0 + ldrsh r0, [r2, r4] + cmp r1, r0 + ble _08076062 + movs r3, 0x1 +_08076062: + cmp r1, r0 + bge _08076068 + ldr r3, _080760C4 @ =0x0000ffff +_08076068: + movs r0, 0x6 + ldrsh r1, [r2, r0] + movs r4, 0x2 + ldrsh r0, [r2, r4] + cmp r1, r0 + ble _08076076 + movs r6, 0x1 +_08076076: + cmp r1, r0 + bge _0807607C + ldr r6, _080760C4 @ =0x0000ffff +_0807607C: + ldr r0, _080760C8 @ =gTasks + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 3 + adds r4, r0 + movs r1, 0 + strh r1, [r4, 0x8] + ldrh r0, [r2, 0x8] + strh r0, [r4, 0xA] + strh r1, [r4, 0xC] + ldrh r0, [r2] + strh r0, [r4, 0xE] + ldrh r0, [r2, 0x2] + strh r0, [r4, 0x10] + strh r3, [r4, 0x12] + strh r6, [r4, 0x14] + ldrh r0, [r2, 0x4] + strh r0, [r4, 0x16] + ldrh r0, [r2, 0x6] + strh r0, [r4, 0x18] + ldrh r1, [r2, 0x2] + lsls r1, 8 + ldrh r0, [r2] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + ldr r0, _080760CC @ =sub_80760D0 + str r0, [r4] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080760C0: .4byte gBattleAnimArgs +_080760C4: .4byte 0x0000ffff +_080760C8: .4byte gTasks +_080760CC: .4byte sub_80760D0 + thumb_func_end sub_8076048 + + thumb_func_start sub_80760D0 +sub_80760D0: @ 80760D0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0807611C @ =gTasks + adds r4, r0, r1 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 16 + movs r2, 0xA + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _08076164 + movs r0, 0 + strh r0, [r4, 0x8] + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08076120 + ldrh r2, [r4, 0xE] + movs r3, 0xE + ldrsh r1, [r4, r3] + movs r3, 0x16 + ldrsh r0, [r4, r3] + cmp r1, r0 + beq _08076134 + ldrh r0, [r4, 0x12] + adds r0, r2, r0 + strh r0, [r4, 0xE] + b _08076134 + .align 2, 0 +_0807611C: .4byte gTasks +_08076120: + ldrh r2, [r4, 0x10] + movs r0, 0x10 + ldrsh r1, [r4, r0] + movs r3, 0x18 + ldrsh r0, [r4, r3] + cmp r1, r0 + beq _08076134 + ldrh r0, [r4, 0x14] + adds r0, r2, r0 + strh r0, [r4, 0x10] +_08076134: + ldrh r1, [r4, 0x10] + lsls r1, 8 + ldrh r0, [r4, 0xE] + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r2, 0x16 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _08076164 + movs r3, 0x10 + ldrsh r1, [r4, r3] + movs r2, 0x18 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _08076164 + adds r0, r5, 0 + bl DestroyAnimVisualTask +_08076164: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80760D0 + + thumb_func_start sub_807616C +sub_807616C: @ 807616C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0807618C @ =gBattleAnimArgs + ldrb r0, [r0] + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xFF + bne _08076190 + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _080761B6 + .align 2, 0 +_0807618C: .4byte gBattleAnimArgs +_08076190: + ldr r1, _080761BC @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r2, _080761C0 @ =gSprites + lsls r1, r3, 4 + adds r1, r3 + lsls r1, 2 + adds r1, r2 + ldrb r1, [r1, 0x5] + lsrs r1, 4 + lsls r1, 4 + ldr r3, _080761C4 @ =0x00000101 + adds r2, r3, 0 + adds r1, r2 + strh r1, [r0, 0x8] + bl sub_80761C8 +_080761B6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080761BC: .4byte gTasks +_080761C0: .4byte gSprites +_080761C4: .4byte 0x00000101 + thumb_func_end sub_807616C + + thumb_func_start sub_80761C8 +sub_80761C8: @ 80761C8 + ldr r3, _080761E8 @ =gBattleAnimArgs + ldrh r1, [r3, 0x2] + movs r2, 0 + strh r1, [r0, 0xA] + strh r2, [r0, 0xC] + ldrh r1, [r3, 0x4] + strh r1, [r0, 0xE] + strh r2, [r0, 0x10] + ldrh r1, [r3, 0x6] + strh r1, [r0, 0x12] + strh r2, [r0, 0x14] + ldrh r1, [r3, 0x8] + strh r1, [r0, 0x16] + ldr r1, _080761EC @ =sub_80761F0 + str r1, [r0] + bx lr + .align 2, 0 +_080761E8: .4byte gBattleAnimArgs +_080761EC: .4byte sub_80761F0 + thumb_func_end sub_80761C8 + + thumb_func_start sub_80761F0 +sub_80761F0: @ 80761F0 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08076248 @ =gTasks + adds r4, r0, r1 + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x12 + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _08076280 + movs r0, 0 + strh r0, [r4, 0x10] + movs r1, 0x14 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0807624C + ldrh r2, [r4, 0xC] + adds r2, 0x1 + strh r2, [r4, 0xC] + ldrh r0, [r4, 0x8] + lsls r2, 24 + lsrs r2, 24 + ldrh r3, [r4, 0xA] + movs r1, 0xF + bl BlendPalette + movs r2, 0xC + ldrsh r1, [r4, r2] + movs r2, 0xE + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _08076280 + movs r0, 0x1 + strh r0, [r4, 0x14] + b _08076280 + .align 2, 0 +_08076248: .4byte gTasks +_0807624C: + ldrh r2, [r4, 0xC] + subs r2, 0x1 + strh r2, [r4, 0xC] + ldrh r0, [r4, 0x8] + lsls r2, 24 + lsrs r2, 24 + ldrh r3, [r4, 0xA] + movs r1, 0xF + bl BlendPalette + movs r0, 0xC + ldrsh r1, [r4, r0] + cmp r1, 0 + bne _08076280 + ldrh r0, [r4, 0x16] + subs r0, 0x1 + strh r0, [r4, 0x16] + lsls r0, 16 + cmp r0, 0 + beq _0807627A + strh r1, [r4, 0x10] + strh r1, [r4, 0x14] + b _08076280 +_0807627A: + adds r0, r5, 0 + bl DestroyAnimVisualTask +_08076280: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80761F0 + + thumb_func_start sub_8076288 +sub_8076288: @ 8076288 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080762A8 @ =gBattleAnimArgs + ldrh r0, [r0] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + bne _080762AC + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _080762C2 + .align 2, 0 +_080762A8: .4byte gBattleAnimArgs +_080762AC: + ldr r1, _080762C8 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + lsls r1, r2, 4 + ldr r2, _080762CC @ =0x00000101 + adds r1, r2 + strh r1, [r0, 0x8] + bl sub_80761C8 +_080762C2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080762C8: .4byte gTasks +_080762CC: .4byte 0x00000101 + thumb_func_end sub_8076288 + + thumb_func_start sub_80762D0 +sub_80762D0: @ 80762D0 + push {r4,lr} + adds r3, r0, 0 + adds r4, r1, 0 + lsls r4, 24 + lsrs r4, 24 + movs r1, 0 + strh r1, [r3, 0x16] + strh r1, [r3, 0x18] + strh r1, [r3, 0x1A] + strh r4, [r3, 0x26] + movs r0, 0x80 + lsls r0, 1 + strh r0, [r3, 0x1C] + strh r0, [r3, 0x1E] + strh r1, [r3, 0x20] + adds r0, r3, 0 + adds r0, 0x22 + adds r3, 0x24 + adds r1, r3, 0 + bl sub_80765C0 + adds r0, r4, 0 + movs r1, 0 + bl sub_80758E0 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80762D0 + + thumb_func_start sub_8076308 +sub_8076308: @ 8076308 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r5, _080763A8 @ =gUnknown_2037F28 + movs r1, 0x22 + ldrsh r0, [r4, r1] + movs r2, 0x24 + ldrsh r1, [r4, r2] + bl sub_80765C8 + movs r3, 0x16 + ldrsh r1, [r4, r3] + lsls r1, 3 + adds r1, r0, r1 + str r1, [r5] + movs r6, 0 + ldrsh r2, [r1, r6] + ldr r0, _080763AC @ =0x00007ffe + cmp r2, r0 + beq _080763B0 + cmp r2, r0 + bgt _08076410 + subs r0, 0x1 + cmp r2, r0 + beq _080763B6 + ldrb r0, [r1, 0x5] + cmp r0, 0 + bne _08076356 + ldrh r0, [r1] + strh r0, [r4, 0x1C] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x1E] + ldrb r0, [r1, 0x4] + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] + adds r0, r1, 0 + adds r0, 0x8 + str r0, [r5] +_08076356: + ldr r1, [r5] + ldrh r0, [r1] + ldrh r2, [r4, 0x1C] + adds r0, r2 + strh r0, [r4, 0x1C] + ldrh r0, [r1, 0x2] + ldrh r3, [r4, 0x1E] + adds r0, r3 + strh r0, [r4, 0x1E] + ldrh r0, [r4, 0x20] + ldrb r1, [r1, 0x4] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r6, 0x1C + ldrsh r1, [r4, r6] + movs r3, 0x1E + ldrsh r2, [r4, r3] + ldrh r3, [r4, 0x20] + bl obj_id_set_rotscale + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8076440 + ldrh r0, [r4, 0x18] + adds r0, 0x1 + strh r0, [r4, 0x18] + lsls r0, 16 + asrs r0, 16 + ldr r1, [r5] + ldrb r1, [r1, 0x5] + cmp r0, r1 + blt _08076436 + movs r0, 0 + strh r0, [r4, 0x18] + b _08076408 + .align 2, 0 +_080763A8: .4byte gUnknown_2037F28 +_080763AC: .4byte 0x00007ffe +_080763B0: + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x16] + b _08076436 +_080763B6: + ldrh r2, [r1, 0x2] + movs r6, 0x2 + ldrsh r0, [r1, r6] + cmp r0, 0 + beq _08076408 + ldrh r1, [r4, 0x1A] + movs r3, 0x1A + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _080763D6 + subs r0, r1, 0x1 + strh r0, [r4, 0x1A] + lsls r0, 16 + cmp r0, 0 + bne _080763D8 + b _08076408 +_080763D6: + strh r2, [r4, 0x1A] +_080763D8: + movs r6, 0x16 + ldrsh r0, [r4, r6] + cmp r0, 0 + beq _08076436 + ldr r3, _08076400 @ =gUnknown_2037F28 + ldr r5, _08076404 @ =0x00007ffd +_080763E4: + ldrh r2, [r4, 0x16] + subs r1, r2, 0x1 + strh r1, [r4, 0x16] + ldr r0, [r3] + subs r0, 0x8 + str r0, [r3] + movs r6, 0 + ldrsh r0, [r0, r6] + cmp r0, r5 + beq _08076434 + lsls r0, r1, 16 + cmp r0, 0 + bne _080763E4 + b _08076436 + .align 2, 0 +_08076400: .4byte gUnknown_2037F28 +_08076404: .4byte 0x00007ffd +_08076408: + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] + b _08076436 +_08076410: + ldr r2, _08076430 @ =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] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8075980 + movs r0, 0 + b _08076438 + .align 2, 0 +_08076430: .4byte gSprites +_08076434: + strh r2, [r4, 0x16] +_08076436: + movs r0, 0x1 +_08076438: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8076308 + + thumb_func_start sub_8076440 +sub_8076440: @ 8076440 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_80764EC + lsls r0, 16 + lsrs r0, 15 + movs r1, 0x40 + subs r5, r1, r0 + ldr r1, _0807648C @ =gSprites + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r4, r0, r1 + ldrb r1, [r4, 0x3] + lsls r1, 26 + lsrs r1, 27 + lsls r0, r5, 8 + ldr r2, _08076490 @ =gOamMatrices + lsls r1, 3 + adds r1, r2 + movs r2, 0x6 + ldrsh r1, [r1, r2] + bl __divsi3 + cmp r0, 0x80 + ble _0807647C + movs r0, 0x80 +_0807647C: + subs r0, r5, r0 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r4, 0x26] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807648C: .4byte gSprites +_08076490: .4byte gOamMatrices + thumb_func_end sub_8076440 + + thumb_func_start sub_8076494 +sub_8076494: @ 8076494 + push {r4,r5,lr} + adds r4, r0, 0 + adds r0, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r0, 24 + lsrs r0, 24 + bl sub_80764EC + lsls r0, 16 + lsrs r0, 15 + movs r1, 0x40 + subs r5, r1, r0 + ldr r1, _080764E4 @ =gSprites + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r4, r0, r1 + ldrb r1, [r4, 0x3] + lsls r1, 26 + lsrs r1, 27 + lsls r0, r5, 8 + ldr r2, _080764E8 @ =gOamMatrices + lsls r1, 3 + adds r1, r2 + movs r2, 0x6 + ldrsh r1, [r1, r2] + bl __divsi3 + cmp r0, 0x80 + ble _080764D4 + movs r0, 0x80 +_080764D4: + subs r0, r5, r0 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r4, 0x26] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080764E4: .4byte gSprites +_080764E8: .4byte gOamMatrices + thumb_func_end sub_8076494 + + thumb_func_start sub_80764EC +sub_80764EC: @ 80764EC + push {r4-r6,lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _08076548 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrh r0, [r0, 0x2E] + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + ldr r1, _0807654C @ =gBattlerSpriteIds + ldr r6, _08076550 @ =gBattlerPartyIndexes +_08076508: + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, r2 + bne _080765AC + lsls r0, r4, 24 + lsrs r0, 24 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _08076568 + ldr r0, _08076554 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _0807655C + lsls r0, r4, 1 + adds r0, r6 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08076558 @ =gPlayerParty + adds r0, r1 + movs r1, 0xB + bl GetMonData + lsls r0, 16 + lsrs r1, r0, 16 + b _0807655E + .align 2, 0 +_08076548: .4byte gSprites +_0807654C: .4byte gBattlerSpriteIds +_08076550: .4byte gBattlerPartyIndexes +_08076554: .4byte gUnknown_2024018 +_08076558: .4byte gPlayerParty +_0807655C: + ldrh r1, [r1, 0x2] +_0807655E: + ldr r0, _08076564 @ =gUnknown_8235E6C + b _080765A0 + .align 2, 0 +_08076564: .4byte gUnknown_8235E6C +_08076568: + ldr r0, _08076594 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, 2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _0807659C + lsls r0, r4, 1 + adds r0, r6 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08076598 @ =gEnemyParty + adds r0, r1 + movs r1, 0xB + bl GetMonData + lsls r0, 16 + lsrs r1, r0, 16 + b _0807659E + .align 2, 0 +_08076594: .4byte gUnknown_2024018 +_08076598: .4byte gEnemyParty +_0807659C: + ldrh r1, [r1, 0x2] +_0807659E: + ldr r0, _080765A8 @ =gUnknown_82349CC +_080765A0: + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + b _080765B8 + .align 2, 0 +_080765A8: .4byte gUnknown_82349CC +_080765AC: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x3 + bls _08076508 + movs r0, 0x40 +_080765B8: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80764EC + + thumb_func_start sub_80765C0 +sub_80765C0: @ 80765C0 + strh r2, [r0] + asrs r2, 16 + strh r2, [r1] + bx lr + thumb_func_end sub_80765C0 + + thumb_func_start sub_80765C8 +sub_80765C8: @ 80765C8 + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + orrs r0, r1 + bx lr + thumb_func_end sub_80765C8 + + thumb_func_start sub_80765D4 +sub_80765D4: @ 80765D4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + mov r8, r0 + adds r5, r3, 0 + ldr r0, [sp, 0x14] + ldr r4, [sp, 0x18] + ldr r6, [sp, 0x1C] + lsls r1, 24 + lsrs r1, 24 + lsls r2, 16 + lsrs r2, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r0, 16 + lsrs r0, 16 + lsls r4, 16 + lsrs r4, 16 + lsls r6, 16 + lsrs r6, 16 + mov r3, r8 + strh r6, [r3, 0x18] + strh r1, [r3, 0x26] + strh r2, [r3, 0x1A] + strh r5, [r3, 0x1C] + strh r0, [r3, 0x22] + strh r4, [r3, 0x24] + lsls r0, 16 + asrs r0, 16 + lsls r2, 16 + asrs r2, 16 + subs r0, r2 + adds r1, r6, 0 + bl __divsi3 + mov r1, r8 + strh r0, [r1, 0x1E] + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + subs r4, r5 + adds r0, r4, 0 + adds r1, r6, 0 + bl __divsi3 + mov r3, r8 + strh r0, [r3, 0x20] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80765D4 + + thumb_func_start sub_8076640 +sub_8076640: @ 8076640 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x18] + movs r2, 0x18 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _08076652 + movs r0, 0 + b _080766AE +_08076652: + subs r0, r1, 0x1 + strh r0, [r4, 0x18] + lsls r0, 16 + cmp r0, 0 + beq _0807666C + ldrh r0, [r4, 0x1E] + ldrh r3, [r4, 0x1A] + adds r0, r3 + strh r0, [r4, 0x1A] + ldrh r0, [r4, 0x20] + ldrh r1, [r4, 0x1C] + adds r0, r1 + b _08076672 +_0807666C: + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x1A] + ldrh r0, [r4, 0x24] +_08076672: + strh r0, [r4, 0x1C] + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x1A + ldrsh r1, [r4, r2] + movs r3, 0x1C + ldrsh r2, [r4, r3] + movs r3, 0 + bl obj_id_set_rotscale + movs r0, 0x18 + ldrsh r3, [r4, r0] + cmp r3, 0 + beq _0807669C + ldrh r0, [r4, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl sub_8076440 + b _080766AC +_0807669C: + ldr r2, _080766B4 @ =gSprites + movs r0, 0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r3, [r0, 0x26] +_080766AC: + ldrb r0, [r4, 0x18] +_080766AE: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080766B4: .4byte gSprites + thumb_func_end sub_8076640 + + thumb_func_start sub_80766B8 +sub_80766B8: @ 80766B8 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080766E4 @ =gUnknown_2037EFE + ldrb r0, [r0] + movs r1, 0 + cmp r0, 0x1E + bls _080766D6 + movs r1, 0x1 + cmp r0, 0x64 + bls _080766D6 + movs r1, 0x3 + cmp r0, 0xC8 + bhi _080766D6 + movs r1, 0x2 +_080766D6: + ldr r0, _080766E8 @ =gBattleAnimArgs + strh r1, [r0, 0xE] + adds r0, r2, 0 + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080766E4: .4byte gUnknown_2037EFE +_080766E8: .4byte gBattleAnimArgs + thumb_func_end sub_80766B8 + + thumb_func_start sub_80766EC +sub_80766EC: @ 80766EC + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r4, r0, 24 + adds r7, r4, 0 + ldr r6, _080767E0 @ =gBattleAnimTarget + ldrb r0, [r6] + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _0807672C + ldr r2, _080767E4 @ =gSprites + ldr r1, _080767E8 @ =gBattlerSpriteIds + ldrb r0, [r6] + adds r0, r1 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r0, 0x3 + adds r2, r4, 0 + ands r2, r0 + lsls r2, 2 + ldrb r3, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x5] +_0807672C: + ldr r0, _080767EC @ =gBattleAnimAttacker + mov r8, r0 + ldrb r0, [r0] + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08076764 + ldr r2, _080767E4 @ =gSprites + ldr r1, _080767E8 @ =gBattlerSpriteIds + mov r3, r8 + ldrb r0, [r3] + adds r0, r1 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r0, 0x3 + adds r2, r4, 0 + ands r2, r0 + lsls r2, 2 + ldrb r3, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x5] +_08076764: + ldrb r0, [r6] + movs r5, 0x2 + eors r0, r5 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _0807679C + ldr r2, _080767E4 @ =gSprites + ldr r1, _080767E8 @ =gBattlerSpriteIds + ldrb r0, [r6] + eors r0, r5 + adds r0, r1 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r0, 0x3 + adds r2, r4, 0 + ands r2, r0 + lsls r2, 2 + ldrb r3, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x5] +_0807679C: + mov r1, r8 + ldrb r0, [r1] + eors r0, r5 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _080767D4 + ldr r2, _080767E4 @ =gSprites + ldr r1, _080767E8 @ =gBattlerSpriteIds + mov r3, r8 + ldrb r0, [r3] + eors r0, r5 + adds r0, r1 + ldrb r0, [r0] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r0, 0x3 + ands r7, r0 + lsls r3, r7, 2 + ldrb r2, [r1, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x5] +_080767D4: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080767E0: .4byte gBattleAnimTarget +_080767E4: .4byte gSprites +_080767E8: .4byte gBattlerSpriteIds +_080767EC: .4byte gBattleAnimAttacker + thumb_func_end sub_80766EC + + thumb_func_start sub_80767F0 +sub_80767F0: @ 80767F0 + push {r4-r6,lr} + movs r5, 0 + ldr r0, _08076850 @ =gBattlersCount + ldrb r0, [r0] + cmp r5, r0 + bge _0807684A + ldr r6, _08076854 @ =gSprites +_080767FE: + lsls r0, r5, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8072DF0 + lsls r0, 24 + cmp r0, 0 + beq _08076840 + adds r0, r4, 0 + bl sub_807685C + ldr r3, _08076858 @ =gBattlerSpriteIds + adds r3, r5, r3 + ldrb r2, [r3] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r6 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r2, [r0, 0x5] + movs r3, 0xD + negs r3, r3 + adds r1, r3, 0 + ands r2, r1 + movs r1, 0x8 + orrs r2, r1 + strb r2, [r0, 0x5] +_08076840: + adds r5, 0x1 + ldr r0, _08076850 @ =gBattlersCount + ldrb r0, [r0] + cmp r5, r0 + blt _080767FE +_0807684A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08076850: .4byte gBattlersCount +_08076854: .4byte gSprites +_08076858: .4byte gBattlerSpriteIds + thumb_func_end sub_80767F0 + + thumb_func_start sub_807685C +sub_807685C: @ 807685C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl GetBattlerPosition + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1E + cmp r0, 0 + beq _0807687E + movs r1, 0x14 + cmp r0, 0x2 + beq _0807687E + movs r1, 0x32 + cmp r0, 0x1 + bne _0807687E + movs r1, 0x28 +_0807687E: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_807685C + + thumb_func_start sub_8076884 +sub_8076884: @ 8076884 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl GetBattlerPosition + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0807689A + cmp r0, 0x3 + bne _0807689E +_0807689A: + movs r0, 0x2 + b _080768A0 +_0807689E: + movs r0, 0x1 +_080768A0: + movs r1, 0x4 + bl sub_80BC30C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8076884 + + thumb_func_start sub_80768B0 +sub_80768B0: @ 80768B0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl GetBattlerPosition + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _080768C6 + cmp r0, 0x3 + bne _080768CA +_080768C6: + movs r0, 0x2 + b _080768CC +_080768CA: + movs r0, 0x1 +_080768CC: + pop {r1} + bx r1 + thumb_func_end sub_80768B0 + + thumb_func_start sub_80768D0 +sub_80768D0: @ 80768D0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + ldr r4, [sp, 0x30] + ldr r5, [sp, 0x34] + ldr r6, [sp, 0x38] + mov r8, r6 + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r2, 24 + lsrs r7, r2, 24 + lsls r3, 16 + lsrs r3, 16 + mov r10, r3 + lsls r4, 16 + lsrs r4, 16 + str r4, [sp, 0x4] + lsls r5, 24 + lsrs r5, 24 + str r5, [sp, 0x8] + lsls r0, r7, 3 + ldr r1, _080769B0 @ =gUnknown_83AE084 + adds r0, r1 + bl LoadSpriteSheet + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0xC] + ldr r1, _080769B4 @ =gUnknown_83AE054 + lsls r0, r7, 1 + adds r0, r7 + lsls r0, 3 + adds r0, r1 + ldrh r0, [r0, 0x2] + bl AllocSpritePalette + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _080769B8 @ =gMonSpritesGfxPtr + ldr r0, [r4] + cmp r0, 0 + beq _0807694E + movs r1, 0xBE + lsls r1, 1 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + bne _0807694E + movs r0, 0x80 + lsls r0, 6 + bl AllocZeroed + ldr r1, [r4] + movs r2, 0xBE + lsls r2, 1 + adds r1, r2 + str r0, [r1] +_0807694E: + mov r3, r9 + cmp r3, 0 + bne _080769EC + adds r0, r6, 0 + ldr r1, [sp, 0x3C] + mov r2, r8 + bl GetFrontSpritePalFromSpeciesAndPersonality + lsls r1, r5, 20 + movs r2, 0x80 + lsls r2, 17 + adds r1, r2 + lsrs r1, 16 + movs r2, 0x20 + bl LoadCompressedPalette + ldr r3, [sp, 0x44] + cmp r3, 0x1 + beq _0807699A + ldr r0, [sp, 0x40] + lsls r1, r0, 24 + lsrs r1, 24 + movs r0, 0x5 + bl sub_804455C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0807699A + ldr r0, _080769BC @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + ldr r2, [sp, 0x40] + lsls r0, r2, 2 + adds r0, r1 + ldrh r0, [r0, 0x2] + cmp r0, 0 + beq _080769C4 +_0807699A: + lsls r0, r6, 3 + ldr r1, _080769C0 @ =gMonFrontPicTable + adds r0, r1 + ldr r1, _080769B8 @ =gMonSpritesGfxPtr + ldr r1, [r1] + movs r3, 0xBE + lsls r3, 1 + adds r1, r3 + ldr r1, [r1] + movs r2, 0x1 + b _08076A46 + .align 2, 0 +_080769B0: .4byte gUnknown_83AE084 +_080769B4: .4byte gUnknown_83AE054 +_080769B8: .4byte gMonSpritesGfxPtr +_080769BC: .4byte gUnknown_2024018 +_080769C0: .4byte gMonFrontPicTable +_080769C4: + lsls r0, r6, 3 + ldr r1, _080769E4 @ =gMonFrontPicTable + adds r0, r1 + ldr r1, _080769E8 @ =gMonSpritesGfxPtr + ldr r1, [r1] + movs r2, 0xBE + lsls r2, 1 + adds r1, r2 + ldr r1, [r1] + movs r2, 0x1 + str r2, [sp] + adds r2, r6, 0 + mov r3, r8 + bl LoadSpecialPokePic + b _08076A7C + .align 2, 0 +_080769E4: .4byte gMonFrontPicTable +_080769E8: .4byte gMonSpritesGfxPtr +_080769EC: + adds r0, r6, 0 + ldr r1, [sp, 0x3C] + mov r2, r8 + bl GetFrontSpritePalFromSpeciesAndPersonality + lsls r1, r5, 20 + movs r3, 0x80 + lsls r3, 17 + adds r1, r3 + lsrs r1, 16 + movs r2, 0x20 + bl LoadCompressedPalette + ldr r0, [sp, 0x44] + cmp r0, 0x1 + beq _08076A32 + ldr r2, [sp, 0x40] + lsls r1, r2, 24 + lsrs r1, 24 + movs r0, 0x5 + bl sub_804455C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08076A32 + ldr r0, _08076A54 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r1, [r0] + ldr r3, [sp, 0x40] + lsls r0, r3, 2 + adds r0, r1 + ldrh r2, [r0, 0x2] + cmp r2, 0 + beq _08076A60 +_08076A32: + lsls r0, r6, 3 + ldr r1, _08076A58 @ =gMonBackPicTable + adds r0, r1 + ldr r1, _08076A5C @ =gMonSpritesGfxPtr + ldr r1, [r1] + movs r2, 0xBE + lsls r2, 1 + adds r1, r2 + ldr r1, [r1] + movs r2, 0 +_08076A46: + str r2, [sp] + adds r2, r6, 0 + mov r3, r8 + bl LoadSpecialPokePic_DontHandleDeoxys + b _08076A7C + .align 2, 0 +_08076A54: .4byte gUnknown_2024018 +_08076A58: .4byte gMonBackPicTable +_08076A5C: .4byte gMonSpritesGfxPtr +_08076A60: + lsls r0, r6, 3 + ldr r1, _08076AC8 @ =gMonBackPicTable + adds r0, r1 + ldr r1, _08076ACC @ =gMonSpritesGfxPtr + ldr r1, [r1] + movs r3, 0xBE + lsls r3, 1 + adds r1, r3 + ldr r1, [r1] + str r2, [sp] + adds r2, r6, 0 + mov r3, r8 + bl LoadSpecialPokePic +_08076A7C: + ldr r5, _08076ACC @ =gMonSpritesGfxPtr + ldr r0, [r5] + movs r4, 0xBE + lsls r4, 1 + adds r0, r4 + ldr r0, [r0] + ldr r2, [sp, 0xC] + lsls r1, r2, 5 + ldr r3, _08076AD0 @ =0x06010000 + adds r1, r3 + movs r2, 0x80 + lsls r2, 4 + movs r3, 0x1 + bl RequestDma3Copy + ldr r0, [r5] + adds r0, r4 + ldr r0, [r0] + bl Free + ldr r0, [r5] + adds r0, r4 + movs r1, 0 + str r1, [r0] + mov r0, r9 + cmp r0, 0 + bne _08076ADC + lsls r0, r7, 1 + adds r0, r7 + lsls r0, 3 + ldr r1, _08076AD4 @ =gUnknown_83AE054 + adds r0, r1 + mov r2, r10 + lsls r1, r2, 16 + asrs r1, 16 + ldr r3, _08076AD8 @ =gUnknown_82349CC + b _08076AEE + .align 2, 0 +_08076AC8: .4byte gMonBackPicTable +_08076ACC: .4byte gMonSpritesGfxPtr +_08076AD0: .4byte 0x06010000 +_08076AD4: .4byte gUnknown_83AE054 +_08076AD8: .4byte gUnknown_82349CC +_08076ADC: + lsls r0, r7, 1 + adds r0, r7 + lsls r0, 3 + ldr r1, _08076B18 @ =gUnknown_83AE054 + adds r0, r1 + mov r2, r10 + lsls r1, r2, 16 + asrs r1, 16 + ldr r3, _08076B1C @ =gUnknown_8235E6C +_08076AEE: + lsls r2, r6, 2 + adds r2, r3 + ldrb r2, [r2, 0x1] + ldr r3, [sp, 0x4] + adds r2, r3 + lsls r2, 16 + asrs r2, 16 + ldr r3, [sp, 0x8] + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08076B18: .4byte gUnknown_83AE054 +_08076B1C: .4byte gUnknown_8235E6C + thumb_func_end sub_80768D0 + + thumb_func_start sub_8076B20 +sub_8076B20: @ 8076B20 + push {lr} + bl DestroySpriteAndFreeResources + pop {r0} + bx r0 + thumb_func_end sub_8076B20 + + thumb_func_start sub_8076B2C +sub_8076B2C: @ 8076B2C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _08076C08 + ldr r0, _08076B88 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + mov r1, r8 + lsls r2, r1, 2 + adds r1, r2, r0 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _08076B94 + ldr r0, _08076B8C @ =gBattlerPartyIndexes + mov r1, r8 + lsls r4, r1, 1 + adds r4, r0 + ldrh r0, [r4] + movs r6, 0x64 + muls r0, r6 + ldr r5, _08076B90 @ =gPlayerParty + adds r0, r5 + movs r1, 0xB + bl GetMonData + lsls r0, 16 + lsrs r7, r0, 16 + ldrh r0, [r4] + muls r0, r6 + adds r0, r5 + movs r1, 0 + bl GetMonData + adds r2, r0, 0 + b _08076B9C + .align 2, 0 +_08076B88: .4byte gUnknown_2024018 +_08076B8C: .4byte gBattlerPartyIndexes +_08076B90: .4byte gPlayerParty +_08076B94: + ldrh r7, [r1, 0x2] + ldr r0, _08076BD4 @ =gUnknown_2024008 + adds r0, r2, r0 + ldr r2, [r0] +_08076B9C: + cmp r7, 0xC9 + bne _08076BEC + movs r0, 0xC0 + lsls r0, 18 + ands r0, r2 + lsrs r0, 18 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r2 + lsrs r1, 12 + orrs r0, r1 + movs r1, 0xC0 + lsls r1, 2 + ands r1, r2 + lsrs r1, 6 + orrs r0, r1 + movs r1, 0x3 + ands r1, r2 + orrs r0, r1 + movs r1, 0x1C + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _08076BD8 + movs r0, 0xC9 + b _08076BE2 + .align 2, 0 +_08076BD4: .4byte gUnknown_2024008 +_08076BD8: + movs r1, 0xCE + lsls r1, 1 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 +_08076BE2: + lsls r1, r0, 2 + ldr r0, _08076BE8 @ =gUnknown_8235E6C + b _08076CDC + .align 2, 0 +_08076BE8: .4byte gUnknown_8235E6C +_08076BEC: + movs r0, 0xCE + lsls r0, 1 + cmp r7, r0 + bls _08076BFC + ldr r4, _08076BF8 @ =gUnknown_8235E6C + b _08076CDE + .align 2, 0 +_08076BF8: .4byte gUnknown_8235E6C +_08076BFC: + lsls r1, r7, 2 + ldr r0, _08076C04 @ =gUnknown_8235E6C + b _08076CDC + .align 2, 0 +_08076C04: .4byte gUnknown_8235E6C +_08076C08: + ldr r0, _08076C48 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0] + mov r1, r8 + lsls r2, r1, 2 + adds r1, r2, r0 + ldrh r0, [r1, 0x2] + cmp r0, 0 + bne _08076C54 + ldr r0, _08076C4C @ =gBattlerPartyIndexes + mov r1, r8 + lsls r4, r1, 1 + adds r4, r0 + ldrh r0, [r4] + movs r6, 0x64 + muls r0, r6 + ldr r5, _08076C50 @ =gEnemyParty + adds r0, r5 + movs r1, 0xB + bl GetMonData + lsls r0, 16 + lsrs r7, r0, 16 + ldrh r0, [r4] + muls r0, r6 + adds r0, r5 + movs r1, 0 + bl GetMonData + adds r2, r0, 0 + b _08076C5C + .align 2, 0 +_08076C48: .4byte gUnknown_2024018 +_08076C4C: .4byte gBattlerPartyIndexes +_08076C50: .4byte gEnemyParty +_08076C54: + ldrh r7, [r1, 0x2] + ldr r0, _08076C94 @ =gUnknown_2024008 + adds r0, r2, r0 + ldr r2, [r0] +_08076C5C: + cmp r7, 0xC9 + bne _08076CA6 + movs r0, 0xC0 + lsls r0, 18 + ands r0, r2 + lsrs r0, 18 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r2 + lsrs r1, 12 + orrs r0, r1 + movs r1, 0xC0 + lsls r1, 2 + ands r1, r2 + lsrs r1, 6 + orrs r0, r1 + movs r1, 0x3 + ands r1, r2 + orrs r0, r1 + movs r1, 0x1C + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _08076C98 + movs r0, 0xC9 + b _08076CA2 + .align 2, 0 +_08076C94: .4byte gUnknown_2024008 +_08076C98: + movs r1, 0xCE + lsls r1, 1 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 +_08076CA2: + lsls r1, r0, 2 + b _08076CDA +_08076CA6: + ldr r0, _08076CBC @ =0x00000181 + cmp r7, r0 + bne _08076CC8 + ldr r0, _08076CC0 @ =gBattleMonForms + add r0, r8 + ldrb r0, [r0] + lsls r0, 2 + ldr r1, _08076CC4 @ =gUnknown_83AE03C + adds r4, r0, r1 + b _08076CDE + .align 2, 0 +_08076CBC: .4byte 0x00000181 +_08076CC0: .4byte gBattleMonForms +_08076CC4: .4byte gUnknown_83AE03C +_08076CC8: + movs r0, 0xCE + lsls r0, 1 + cmp r7, r0 + bls _08076CD8 + ldr r4, _08076CD4 @ =gUnknown_82349CC + b _08076CDE + .align 2, 0 +_08076CD4: .4byte gUnknown_82349CC +_08076CD8: + lsls r1, r7, 2 +_08076CDA: + ldr r0, _08076CF0 @ =gUnknown_82349CC +_08076CDC: + adds r4, r1, r0 +_08076CDE: + mov r0, r9 + cmp r0, 0x6 + bhi _08076D8E + lsls r0, 2 + ldr r1, _08076CF4 @ =_08076CF8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08076CF0: .4byte gUnknown_82349CC +_08076CF4: .4byte _08076CF8 + .align 2, 0 +_08076CF8: + .4byte _08076D14 + .4byte _08076D1E + .4byte _08076D4A + .4byte _08076D62 + .4byte _08076D26 + .4byte _08076D38 + .4byte _08076D7A +_08076D14: + ldrb r1, [r4] + movs r0, 0xF + ands r0, r1 + lsls r0, 3 + b _08076D90 +_08076D1E: + ldrb r0, [r4] + lsrs r0, 4 + lsls r0, 3 + b _08076D90 +_08076D26: + mov r0, r8 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r4] + lsrs r1, 4 + b _08076D5C +_08076D38: + mov r0, r8 + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r4] + lsrs r1, 4 + b _08076D74 +_08076D4A: + mov r0, r8 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrb r2, [r4] + movs r1, 0xF + ands r1, r2 +_08076D5C: + lsls r1, 2 + subs r0, r1 + b _08076D90 +_08076D62: + mov r0, r8 + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + ldrb r2, [r4] + movs r1, 0xF + ands r1, r2 +_08076D74: + lsls r1, 2 + adds r0, r1 + b _08076D90 +_08076D7A: + mov r0, r8 + movs r1, 0x1 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1F + ldrb r1, [r4, 0x1] + subs r0, r1 + b _08076D90 +_08076D8E: + movs r0, 0 +_08076D90: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8076B2C + + thumb_func_start sub_8076D9C +sub_8076D9C: @ 8076D9C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r9, r2 + mov r10, r3 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + cmp r1, 0 + bne _08076DBA + movs r5, 0 + movs r6, 0x1 + b _08076DBE +_08076DBA: + movs r5, 0x2 + movs r6, 0x3 +_08076DBE: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r7, r0, 24 + bl sub_8075290 + lsls r0, 24 + cmp r0, 0 + beq _08076E06 + movs r0, 0x2 + eors r4, r0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r4, 0 + adds r1, r6, 0 + bl sub_8074480 + lsls r0, 24 + lsrs r3, r0, 24 + mov r0, r8 + lsls r1, r0, 16 + lsls r2, r7, 16 + b _08076E12 +_08076E06: + mov r0, r8 + lsls r1, r0, 16 + lsrs r5, r1, 16 + lsls r0, r7, 16 + lsrs r3, r0, 16 + adds r2, r0, 0 +_08076E12: + asrs r0, r1, 16 + adds r0, r5 + asrs r0, 1 + mov r1, r9 + strh r0, [r1] + asrs r0, r2, 16 + adds r0, r3 + asrs r0, 1 + mov r1, r10 + strh r0, [r1] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8076D9C + + thumb_func_start sub_8076E34 +sub_8076E34: @ 8076E34 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x4 + lsls r6, r1, 24 + lsrs r6, 24 + ldr r0, _08076ECC @ =SpriteCallbackDummy + mov r10, r0 + bl CreateInvisibleSpriteWithCallback + mov r8, r0 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, _08076ED0 @ =gSprites + mov r9, r0 + mov r0, r8 + lsls r3, r0, 4 + add r3, r8 + lsls r3, 2 + mov r0, r9 + adds r5, r3, r0 + lsls r4, r6, 4 + adds r4, r6 + lsls r4, 2 + add r4, r9 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x44 + str r3, [sp] + bl memcpy + adds r2, r5, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + ldrb r2, [r5, 0x5] + movs r1, 0xD + negs r1, r1 + adds r0, r1, 0 + ands r0, r2 + strb r0, [r5, 0x5] + ldrb r0, [r5, 0x1] + ands r1, r0 + movs r0, 0x8 + orrs r1, r0 + strb r1, [r5, 0x1] + ldrh r1, [r4, 0x4] + lsls r1, 22 + lsrs r1, 22 + ldrh r2, [r5, 0x4] + ldr r0, _08076ED4 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + movs r0, 0x1C + add r9, r0 + ldr r3, [sp] + add r3, r9 + mov r0, r10 + str r0, [r3] + mov r0, r8 + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08076ECC: .4byte SpriteCallbackDummy +_08076ED0: .4byte gSprites +_08076ED4: .4byte 0xfffffc00 + thumb_func_end sub_8076E34 + + thumb_func_start sub_8076ED8 +sub_8076ED8: @ 8076ED8 + push {r4,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r0, _08076F10 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08076F18 + ldr r2, _08076F14 @ =gBattleAnimArgs + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x6] + negs r0, r0 + strh r0, [r2, 0x6] + adds r3, r4, 0 + adds r3, 0x3F + ldrb r0, [r3] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r3] + adds r1, r2, 0 + b _08076F22 + .align 2, 0 +_08076F10: .4byte gBattleAnimAttacker +_08076F14: .4byte gBattleAnimArgs +_08076F18: + ldr r1, _08076F4C @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] +_08076F22: + ldrh r0, [r1, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x34] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x38] + ldr r1, _08076F50 @ =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _08076F54 @ =sub_8074E70 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08076F4C: .4byte gBattleAnimArgs +_08076F50: .4byte move_anim_8074EE0 +_08076F54: .4byte sub_8074E70 + thumb_func_end sub_8076ED8 + + thumb_func_start sub_8076F58 +sub_8076F58: @ 8076F58 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08076F80 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08076F88 + ldr r2, _08076F84 @ =gBattleAnimArgs + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + movs r1, 0x6 + ldrsh r0, [r2, r1] + negs r0, r0 + strh r0, [r2, 0x6] + adds r1, r2, 0 + b _08076F92 + .align 2, 0 +_08076F80: .4byte gBattleAnimAttacker +_08076F84: .4byte gBattleAnimArgs +_08076F88: + ldr r1, _08076FC4 @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] +_08076F92: + ldrh r0, [r1, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x34] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x38] + ldrb r1, [r1, 0xC] + adds r0, r4, 0 + bl StartSpriteAnim + ldr r1, _08076FC8 @ =move_anim_8074EE0 + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + ldr r0, _08076FCC @ =sub_8074E70 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08076FC4: .4byte gBattleAnimArgs +_08076FC8: .4byte move_anim_8074EE0 +_08076FCC: .4byte sub_8074E70 + thumb_func_end sub_8076F58 + + thumb_func_start sub_8076FD0 +sub_8076FD0: @ 8076FD0 + push {r4,lr} + adds r4, r0, 0 + bl sub_8074FCC + ldr r0, _08076FF4 @ =gBattleAnimAttacker + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + beq _08076FFC + ldr r0, _08076FF8 @ =gBattleAnimArgs + ldrh r1, [r4, 0x20] + ldrh r2, [r0] + subs r1, r2 + strh r1, [r4, 0x20] + b _08077008 + .align 2, 0 +_08076FF4: .4byte gBattleAnimAttacker +_08076FF8: .4byte gBattleAnimArgs +_08076FFC: + ldr r1, _08077024 @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + adds r0, r1, 0 +_08077008: + ldrh r0, [r0, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r0, _08077028 @ =sub_8074F6C + str r0, [r4, 0x1C] + ldr r1, _0807702C @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08077024: .4byte gBattleAnimArgs +_08077028: .4byte sub_8074F6C +_0807702C: .4byte DestroyAnimSprite + thumb_func_end sub_8076FD0 + + thumb_func_start sub_8077030 +sub_8077030: @ 8077030 + push {r4-r7,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080770C4 @ =gTasks + adds r5, r1, r0 + movs r0, 0 + bl GetAnimBankSpriteId + lsls r0, 24 + lsrs r0, 24 + movs r6, 0 + strh r0, [r5, 0x8] + ldr r7, _080770C8 @ =gBattleAnimAttacker + ldrb r0, [r7] + bl GetBattlerSide + lsls r0, 24 + movs r1, 0x8 + cmp r0, 0 + beq _08077064 + movs r0, 0x8 + negs r0, r0 + adds r1, r0, 0 +_08077064: + strh r1, [r5, 0xA] + strh r6, [r5, 0xC] + strh r6, [r5, 0xE] + ldr r4, _080770CC @ =gSprites + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r0, 0x24] + ldrh r2, [r5, 0x8] + subs r1, r2 + strh r1, [r0, 0x24] + ldr r0, _080770D0 @ =0x00002771 + bl AllocSpritePalette + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x10] + strh r6, [r5, 0x12] + movs r1, 0x10 + ldrsh r0, [r5, r1] + adds r0, 0x10 + lsls r0, 20 + lsrs r6, r0, 16 + movs r0, 0x8 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x5] + lsrs r0, 4 + adds r0, 0x10 + lsls r4, r0, 4 + ldrb r0, [r7] + bl sub_807685C + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x14] + cmp r0, 0x14 + beq _080770C0 + cmp r0, 0x28 + bne _080770D4 +_080770C0: + movs r0, 0x2 + b _080770D6 + .align 2, 0 +_080770C4: .4byte gTasks +_080770C8: .4byte gBattleAnimAttacker +_080770CC: .4byte gSprites +_080770D0: .4byte 0x00002771 +_080770D4: + movs r0, 0x3 +_080770D6: + strh r0, [r5, 0x14] + lsls r0, r4, 1 + ldr r1, _08077104 @ =gPlttBufferUnfaded + adds r0, r1 + lsls r1, r6, 1 + ldr r2, _08077108 @ =gPlttBufferFaded + adds r1, r2 + ldr r2, _0807710C @ =0x04000008 + bl CpuSet + ldr r0, _08077110 @ =gBattleAnimArgs + ldrb r2, [r0, 0x2] + ldrh r3, [r0] + adds r0, r6, 0 + movs r1, 0x10 + bl BlendPalette + ldr r0, _08077114 @ =sub_8077118 + str r0, [r5] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08077104: .4byte gPlttBufferUnfaded +_08077108: .4byte gPlttBufferFaded +_0807710C: .4byte 0x04000008 +_08077110: .4byte gBattleAnimArgs +_08077114: .4byte sub_8077118 + thumb_func_end sub_8077030 + + thumb_func_start sub_8077118 +sub_8077118: @ 8077118 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _0807713C @ =gTasks + adds r4, r0, r1 + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0807717C + cmp r0, 0x1 + bgt _08077140 + cmp r0, 0 + beq _08077146 + b _080771D8 + .align 2, 0 +_0807713C: .4byte gTasks +_08077140: + cmp r0, 0x2 + beq _080771C4 + b _080771D8 +_08077146: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80771E4 + ldr r2, _08077178 @ =gSprites + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r1, [r4, 0xA] + ldrh r2, [r0, 0x24] + adds r1, r2 + strh r1, [r0, 0x24] + ldrh r1, [r4, 0xE] + adds r0, r1, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + bne _080771D8 + strh r1, [r4, 0xE] + b _080771B6 + .align 2, 0 +_08077178: .4byte gSprites +_0807717C: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80771E4 + ldr r3, _080771C0 @ =gSprites + movs r0, 0x8 + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x24] + ldrh r2, [r4, 0xA] + subs r1, r2 + strh r1, [r0, 0x24] + ldrh r0, [r4, 0xE] + subs r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r2, r0, 16 + cmp r2, 0 + bne _080771D8 + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + strh r2, [r1, 0x24] +_080771B6: + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] + b _080771D8 + .align 2, 0 +_080771C0: .4byte gSprites +_080771C4: + movs r2, 0x12 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080771D8 + ldr r0, _080771E0 @ =0x00002771 + bl FreeSpritePaletteByTag + adds r0, r5, 0 + bl DestroyAnimVisualTask +_080771D8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080771E0: .4byte 0x00002771 + thumb_func_end sub_8077118 + + thumb_func_start sub_80771E4 +sub_80771E4: @ 80771E4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + movs r0, 0 + bl duplicate_obj_of_side_rel2move_in_transparent_mode + lsls r0, 16 + lsrs r7, r0, 16 + asrs r0, 16 + cmp r0, 0 + blt _08077254 + ldr r5, _08077260 @ =gSprites + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + adds r3, r4, r5 + movs r0, 0x3 + ldrb r1, [r6, 0x14] + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x5] + ldrb r1, [r6, 0x10] + lsls r1, 4 + movs r2, 0xF + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x5] + movs r0, 0x8 + strh r0, [r3, 0x2E] + mov r0, r8 + strh r0, [r3, 0x30] + strh r7, [r3, 0x32] + movs r0, 0x8 + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrh r0, [r0, 0x24] + strh r0, [r3, 0x24] + adds r5, 0x1C + adds r4, r5 + ldr r0, _08077264 @ =sub_8077268 + str r0, [r4] + ldrh r0, [r6, 0x12] + adds r0, 0x1 + strh r0, [r6, 0x12] +_08077254: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08077260: .4byte gSprites +_08077264: .4byte sub_8077268 + thumb_func_end sub_80771E4 + + thumb_func_start sub_8077268 +sub_8077268: @ 8077268 + push {lr} + adds r3, r0, 0 + ldrh r0, [r3, 0x2E] + subs r0, 0x1 + strh r0, [r3, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _08077292 + ldr r2, _08077298 @ =gTasks + movs r0, 0x30 + ldrsh r1, [r3, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrh r1, [r0, 0x12] + subs r1, 0x1 + strh r1, [r0, 0x12] + adds r0, r3, 0 + bl obj_delete_but_dont_free_vram +_08077292: + pop {r0} + bx r0 + .align 2, 0 +_08077298: .4byte gTasks + thumb_func_end sub_8077268 + + thumb_func_start sub_807729C +sub_807729C: @ 807729C + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080772D0 @ =gBattleAnimAttacker + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldrb r0, [r4] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _080772D4 + movs r0, 0x5 + b _080772D6 + .align 2, 0 +_080772D0: .4byte gBattleAnimAttacker +_080772D4: + ldr r0, _080772E8 @ =0x0000fff6 +_080772D6: + strh r0, [r5, 0x2E] + ldr r0, _080772EC @ =0x0000ffd8 + strh r0, [r5, 0x30] + ldr r0, _080772F0 @ =sub_80772F4 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080772E8: .4byte 0x0000fff6 +_080772EC: .4byte 0x0000ffd8 +_080772F0: .4byte sub_80772F4 + thumb_func_end sub_807729C + + thumb_func_start sub_80772F4 +sub_80772F4: @ 80772F4 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + ldrh r1, [r4, 0x32] + adds r0, r1 + strh r0, [r4, 0x32] + ldrh r5, [r4, 0x30] + ldrh r2, [r4, 0x34] + adds r0, r5, r2 + strh r0, [r4, 0x34] + movs r1, 0x32 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl __divsi3 + strh r0, [r4, 0x24] + movs r2, 0x34 + ldrsh r0, [r4, r2] + movs r1, 0xA + bl __divsi3 + strh r0, [r4, 0x26] + lsls r0, r5, 16 + asrs r0, 16 + movs r1, 0x14 + negs r1, r1 + cmp r0, r1 + bge _08077330 + adds r0, r5, 0x1 + strh r0, [r4, 0x30] +_08077330: + movs r1, 0x22 + ldrsh r0, [r4, r1] + movs r2, 0x26 + ldrsh r1, [r4, r2] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + bge _08077348 + adds r0, r4, 0 + bl DestroyAnimSprite +_08077348: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80772F4 + + thumb_func_start sub_8077350 +sub_8077350: @ 8077350 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _08077388 @ =gBattleAnimArgs + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x8] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x32] + ldrh r0, [r5, 0xA] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x36] + ldr r0, _0807738C @ =gBattleAnimTarget + ldrb r0, [r0] + bl GetBattlerSide + lsls r0, 24 + cmp r0, 0 + bne _08077390 + ldrh r0, [r5, 0x8] + adds r0, 0x1E + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r5, 0xA] + subs r0, 0x14 + b _0807739E + .align 2, 0 +_08077388: .4byte gBattleAnimArgs +_0807738C: .4byte gBattleAnimTarget +_08077390: + ldrh r0, [r5, 0x8] + subs r0, 0x1E + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r5, 0xA] + subs r0, 0x50 +_0807739E: + strh r0, [r4, 0x22] + ldr r0, _080773B4 @ =sub_8075590 + str r0, [r4, 0x1C] + ldr r1, _080773B8 @ =DestroyAnimSprite + adds r0, r4, 0 + bl StoreSpriteCallbackInData6 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080773B4: .4byte sub_8075590 +_080773B8: .4byte DestroyAnimSprite + thumb_func_end sub_8077350 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_special.s b/asm/battle_anim_special.s new file mode 100644 index 000000000..704a1e9a7 --- /dev/null +++ b/asm/battle_anim_special.s @@ -0,0 +1,6299 @@ + .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 @ =gUnknown_2022984 + movs r1, 0 + strh r1, [r0] + ldr r0, _080EEDBC @ =gUnknown_2022986 + 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 @ =gUnknown_3004FF0 + 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 sub_807543C + 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 sub_80753B4 + 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 gUnknown_2022984 +_080EEDBC: .4byte gUnknown_2022986 +_080EEDC0: .4byte 0x00003f3f +_080EEDC4: .4byte 0x00003f3d +_080EEDC8: .4byte 0x00003f42 +_080EEDCC: .4byte gUnknown_3004FF0 +_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 @ =gUnknown_2022984 + strh r4, [r0] + ldr r0, _080EEFB8 @ =gUnknown_2022986 + 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 sub_8073788 + 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 @ =gUnknown_3004FF0 + 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 gUnknown_2022984 +_080EEFB8: .4byte gUnknown_2022986 +_080EEFBC: .4byte 0x00003f3f +_080EEFC0: .4byte gSprites +_080EEFC4: .4byte gUnknown_3004FF0 + 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 @ =gUnknown_3004FF0 + 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 gUnknown_3004FF0 +_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 @ =gUnknown_3004FF0 + 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 gUnknown_3004FF0 +_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 sub_80758E0 + 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 obj_id_set_rotscale + adds r0, r5, 0 + bl sub_8076440 + 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 sub_8075980 + 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 sub_8074480 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8074480 + 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 @ =gUnknown_2023D68 + 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 gUnknown_2023D68 + 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 @ =gUnknown_2023D68 + 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 gUnknown_2023D68 + 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 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_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 @ =gUnknown_2023D68 + 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 sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x30] + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x1 + bl sub_8074480 + 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 @ =gUnknown_2024018 + 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 gUnknown_2023D68 +_080EF678: .4byte gUnknown_82606F4 +_080EF67C: .4byte gSprites +_080EF680: .4byte gBattleAnimTarget +_080EF684: .4byte sub_80EF8C0 +_080EF688: .4byte gUnknown_2024018 +_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 @ =gUnknown_2023D68 + 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 sub_807685C + 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 sub_8074480 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r6, 0x30] + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x1 + bl sub_8074480 + 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 gUnknown_2023D68 +_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 sub_8075068 + 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 AnimateBallThrow + lsls r0, 24 + cmp r0, 0 + beq _080EF99E + ldr r0, _080EF914 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_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 @ =gUnknown_2023D68 + 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 gUnknown_2023D68 +_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 sub_80758E0 + 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 obj_id_set_rotscale + 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 sub_8075980 + 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 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_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 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_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 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_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 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_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 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_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 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_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 @ =gUnknown_2024005 + 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 gUnknown_2024005 +_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 sub_8075068 + 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 AnimateBallThrow + 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 @ =gUnknown_2023D68 + 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 gUnknown_2023D68 +_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 @ =gUnknown_2024018 + 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 @ =gUnknown_2024005 + 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 gUnknown_2024018 +_080F0470: .4byte sub_80F018C +_080F0474: .4byte gUnknown_2024005 + 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 @ =gUnknown_2024005 + 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 gUnknown_2024005 + 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 sub_8075068 + adds r0, r4, 0 + bl sub_80750C8 + 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 sub_80750C8 + 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 @ =gUnknown_2024005 + strb r1, [r0] + movs r0, 0x1 + bl UpdateOamPriorityInAllHealthboxes +_080F05A4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F05AC: .4byte sub_80F018C +_080F05B0: .4byte gUnknown_2024005 + 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 sub_800F034 + ldr r0, _080F05E8 @ =gUnknown_840BFA8 + adds r0, r5, r0 + bl sub_800F078 +_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 @ =gUnknown_2024018 + 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 gUnknown_2024018 + 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 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_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 sub_80768B0 + 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 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_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 @ =gUnknown_2023D6E + ldrb r1, [r1] + strb r1, [r2] + bl DestroyAnimVisualTask + pop {r0} + bx r0 + .align 2, 0 +_080F1718: .4byte gBattleAnimTarget +_080F171C: .4byte gUnknown_2023D6E + 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 @ =gUnknown_2024018 + 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 sub_8072DF0 + 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 sub_800F034 + ldr r0, _080F17EC @ =gUnknown_83ADC58 + bl sub_800F078 +_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 gUnknown_2024018 +_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 @ =gUnknown_2024018 + 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 gUnknown_2024018 + 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 @ =gUnknown_2024018 + 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 sub_8074480 + lsls r0, 24 + lsrs r5, r0, 24 + mov r0, r8 + movs r1, 0x1 + bl sub_8074480 + 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 gUnknown_2024018 +_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 @ =gUnknown_2024018 + 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 gUnknown_2024018 + 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 sub_800F034 + ldr r0, _080F1B0C @ =gUnknown_83ADD78 + bl sub_800F078 + 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 sub_8075160 + movs r0, 0x1E + strh r0, [r4, 0x2E] + movs r0, 0x1 + bl GetBattlerAtPosition + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + bl sub_8074480 + 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 sub_8074480 + 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 sub_8075068 + 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 AnimateBallThrow + 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 @ =gUnknown_2023E82 + ldrb r0, [r2, 0x5] + cmp r0, 0x2 + bls _080F1D00 + ldr r1, _080F1CFC @ =gBattleAnimArgs + movs r0, 0 + b _080F1D04 + .align 2, 0 +_080F1CF8: .4byte gUnknown_2023E82 +_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 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_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 @ =gUnknown_2024018 + 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 gUnknown_2024018 +_080F1DA8: .4byte gBattleAnimTarget + thumb_func_end sub_80F1D7C + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_status_effects.s b/asm/battle_anim_status_effects.s new file mode 100644 index 000000000..5530fd869 --- /dev/null +++ b/asm/battle_anim_status_effects.s @@ -0,0 +1,977 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8078178 +sub_8078178: @ 8078178 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _0807821C @ =gBattlerSpriteIds + adds r0, r4, r0 + ldrb r6, [r0] + ldr r0, _08078220 @ =sub_80782BC + movs r1, 0xA + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, _08078224 @ =gUnknown_83AD048 + bl sub_800F034 + ldr r0, _08078228 @ =gUnknown_83AD950 + bl sub_800F078 + ldr r1, _0807822C @ =gTasks + mov r2, r8 + lsls r0, r2, 2 + add r0, r8 + lsls r0, 3 + adds r1, r0, r1 + strh r4, [r1, 0x8] + cmp r5, 0 + beq _08078238 + movs r0, 0x1F + strh r0, [r1, 0xA] + movs r5, 0 + lsls r0, r6, 4 + ldr r7, _08078230 @ =gSprites + adds r0, r6 + lsls r0, 2 + adds r6, r0, r7 +_080781CC: + movs r0, 0x20 + ldrsh r1, [r6, r0] + ldrh r2, [r6, 0x22] + adds r2, 0x20 + lsls r2, 16 + asrs r2, 16 + ldr r0, _08078234 @ =gUnknown_83BF574 + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r3, r0, r7 + lsls r0, r5, 1 + adds r0, r5 + lsls r1, r0, 4 + adds r0, r1 + strh r0, [r3, 0x2E] + movs r0, 0xFF + lsls r0, 8 + strh r0, [r3, 0x30] + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + cmp r5, 0x4 + bls _08078210 + movs r0, 0x15 + strh r0, [r3, 0x3A] +_08078210: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x9 + bls _080781CC + b _08078298 + .align 2, 0 +_0807821C: .4byte gBattlerSpriteIds +_08078220: .4byte sub_80782BC +_08078224: .4byte gUnknown_83AD048 +_08078228: .4byte gUnknown_83AD950 +_0807822C: .4byte gTasks +_08078230: .4byte gSprites +_08078234: .4byte gUnknown_83BF574 +_08078238: + movs r0, 0xF8 + lsls r0, 7 + strh r0, [r1, 0xA] + movs r5, 0 + lsls r0, r6, 4 + ldr r7, _080782B4 @ =gSprites + adds r0, r6 + lsls r0, 2 + adds r6, r0, r7 +_0807824A: + movs r2, 0x20 + ldrsh r1, [r6, r2] + ldrh r2, [r6, 0x22] + subs r2, 0x20 + lsls r2, 16 + asrs r2, 16 + ldr r0, _080782B8 @ =gUnknown_83BF574 + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r3, r0, r7 + lsls r0, r5, 1 + adds r0, r5 + lsls r1, r0, 4 + adds r0, r1 + strh r0, [r3, 0x2E] + movs r0, 0x80 + lsls r0, 1 + strh r0, [r3, 0x30] + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + cmp r5, 0x4 + bls _0807828E + movs r0, 0x15 + strh r0, [r3, 0x3A] +_0807828E: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x9 + bls _0807824A +_08078298: + ldr r0, _080782B4 @ =gSprites + lsls r1, r4, 4 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + movs r0, 0x1 + strh r0, [r1, 0x3C] + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080782B4: .4byte gSprites +_080782B8: .4byte gUnknown_83BF574 + thumb_func_end sub_8078178 + + thumb_func_start sub_80782BC +sub_80782BC: @ 80782BC + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _08078314 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r1, [r4, 0xC] + movs r2, 0xC + ldrsh r0, [r4, r2] + cmp r0, 0x2 + bne _08078342 + movs r0, 0 + strh r0, [r4, 0xC] + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 20 + movs r2, 0x80 + lsls r2, 17 + adds r0, r2 + lsrs r0, 16 + ldrb r2, [r4, 0x10] + ldrh r3, [r4, 0xA] + movs r1, 0x10 + bl BlendPalette + ldrh r2, [r4, 0x12] + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08078318 + ldrh r0, [r4, 0x10] + adds r0, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _08078346 + movs r0, 0x1 + eors r0, r2 + strh r0, [r4, 0x12] + b _08078346 + .align 2, 0 +_08078314: .4byte gTasks +_08078318: + ldrh r1, [r4, 0x10] + subs r0, r1, 0x1 + strh r0, [r4, 0x10] + lsls r0, 16 + cmp r0, 0 + bge _08078346 + strh r1, [r4, 0x10] + movs r0, 0x1 + eors r0, r2 + strh r0, [r4, 0x12] + ldrh r0, [r4, 0xE] + adds r0, 0x1 + strh r0, [r4, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _08078346 + adds r0, r5, 0 + bl DestroyTask + b _08078346 +_08078342: + adds r0, r1, 0x1 + strh r0, [r4, 0xC] +_08078346: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80782BC + + thumb_func_start sub_807834C +sub_807834C: @ 807834C + push {lr} + adds r2, r0, 0 + ldrh r1, [r2, 0x3A] + movs r3, 0x3A + ldrsh r0, [r2, r3] + cmp r0, 0 + bne _08078378 + adds r3, r2, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x5 + negs r1, r1 + ands r1, r0 + strb r1, [r3] + ldr r1, _08078374 @ =sub_8078380 + str r1, [r2, 0x1C] + adds r0, r2, 0 + bl _call_via_r1 + b _0807837C + .align 2, 0 +_08078374: .4byte sub_8078380 +_08078378: + subs r0, r1, 0x1 + strh r0, [r2, 0x3A] +_0807837C: + pop {r0} + bx r0 + thumb_func_end sub_807834C + + thumb_func_start sub_8078380 +sub_8078380: @ 8078380 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x20 + bl Cos + strh r0, [r4, 0x24] + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x8 + bl Sin + strh r0, [r4, 0x26] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x7F + bgt _080783AC + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1D + b _080783B2 +_080783AC: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1F +_080783B2: + strb r0, [r1] + ldrh r0, [r4, 0x2E] + adds r0, 0x8 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + ldrh r1, [r4, 0x38] + adds r0, r1 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x34 + bne _080783F4 + movs r1, 0x3C + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080783EE + adds r0, r4, 0 + bl DestroySpriteAndFreeResources + b _080783F4 +_080783EE: + adds r0, r4, 0 + bl DestroySprite +_080783F4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8078380 + + thumb_func_start sub_80783FC +sub_80783FC: @ 80783FC + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r4, _080784AC @ =gBattleAnimTarget + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 8 + ldr r1, _080784B0 @ =0xffe00000 + adds r0, r1 + lsrs r5, r0, 16 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8074480 + lsls r0, 24 + lsrs r0, 8 + ldr r1, _080784B4 @ =0xffdc0000 + adds r0, r1 + lsrs r4, r0, 16 + bl sub_8073788 + lsls r0, 24 + cmp r0, 0 + beq _0807843A + lsls r0, r5, 16 + ldr r1, _080784B8 @ =0xfffa0000 + adds r0, r1 + lsrs r5, r0, 16 +_0807843A: + movs r1, 0xFD + lsls r1, 6 + movs r0, 0x50 + bl SetGpuReg + movs r1, 0x80 + lsls r1, 5 + movs r0, 0x52 + bl SetGpuReg + ldr r0, _080784BC @ =gUnknown_83BF55C + lsls r1, r5, 16 + asrs r1, 16 + lsls r2, r4, 16 + asrs r2, 16 + movs r3, 0x4 + bl CreateSprite + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _080784C0 @ =0x0000271a + bl GetSpriteTileStartByTag + lsls r0, 16 + ldr r1, _080784C4 @ =0xffff0000 + cmp r0, r1 + bne _08078484 + ldr r1, _080784C8 @ =gSprites + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_08078484: + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + ldr r1, _080784C8 @ =gSprites + adds r0, r1 + ldr r1, _080784CC @ =gUnknown_83BF554 + bl SetSubspriteTables + ldr r1, _080784D0 @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r0, r1 + strh r4, [r0, 0x26] + ldr r1, _080784D4 @ =sub_80784D8 + str r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080784AC: .4byte gBattleAnimTarget +_080784B0: .4byte 0xffe00000 +_080784B4: .4byte 0xffdc0000 +_080784B8: .4byte 0xfffa0000 +_080784BC: .4byte gUnknown_83BF55C +_080784C0: .4byte 0x0000271a +_080784C4: .4byte 0xffff0000 +_080784C8: .4byte gSprites +_080784CC: .4byte gUnknown_83BF554 +_080784D0: .4byte gTasks +_080784D4: .4byte sub_80784D8 + thumb_func_end sub_80783FC + + thumb_func_start sub_80784D8 +sub_80784D8: @ 80784D8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08078504 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + ldrh r0, [r1, 0xA] + adds r0, 0x1 + adds r2, r0, 0 + strh r0, [r1, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xA + bne _0807850C + ldr r0, _08078508 @ =sub_8078528 + str r0, [r1] + movs r0, 0 + strh r0, [r1, 0xA] + b _08078522 + .align 2, 0 +_08078504: .4byte gTasks +_08078508: .4byte sub_8078528 +_0807850C: + lsls r0, r2, 24 + lsrs r0, 24 + movs r1, 0x10 + subs r1, r0 + lsls r1, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg +_08078522: + pop {r0} + bx r0 + thumb_func_end sub_80784D8 + + thumb_func_start sub_8078528 +sub_8078528: @ 8078528 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080785C0 @ =0x0000271a + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080785C4 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r5, r0, r1 + ldrh r0, [r5, 0xA] + adds r1, r0, 0x1 + strh r1, [r5, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xD + ble _080785B8 + ldrh r0, [r5, 0xC] + adds r0, 0x1 + movs r6, 0 + strh r0, [r5, 0xC] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080785B8 + ldr r3, _080785C8 @ =gPlttBufferFaded + lsls r2, 4 + mov r12, r2 + ldr r1, _080785CC @ =0x0000010d + add r1, r12 + lsls r1, 1 + adds r1, r3 + ldrh r4, [r1] + movs r2, 0x87 + lsls r2, 1 + add r2, r12 + lsls r2, 1 + adds r2, r3 + ldrh r0, [r2] + strh r0, [r1] + ldr r0, _080785D0 @ =0x0000010f + add r0, r12 + lsls r0, 1 + adds r0, r3 + ldrh r1, [r0] + strh r1, [r2] + strh r4, [r0] + strh r6, [r5, 0xC] + ldrh r0, [r5, 0xE] + adds r0, 0x1 + strh r0, [r5, 0xE] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080785B8 + strh r6, [r5, 0xE] + strh r6, [r5, 0xA] + ldrh r0, [r5, 0x10] + adds r0, 0x1 + strh r0, [r5, 0x10] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x2 + bne _080785B8 + movs r0, 0x9 + strh r0, [r5, 0xA] + ldr r0, _080785D4 @ =sub_80785D8 + str r0, [r5] +_080785B8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080785C0: .4byte 0x0000271a +_080785C4: .4byte gTasks +_080785C8: .4byte gPlttBufferFaded +_080785CC: .4byte 0x0000010d +_080785D0: .4byte 0x0000010f +_080785D4: .4byte sub_80785D8 + thumb_func_end sub_8078528 + + thumb_func_start sub_80785D8 +sub_80785D8: @ 80785D8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08078608 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r2, r1, r2 + ldrh r0, [r2, 0xA] + subs r0, 0x1 + adds r3, r0, 0 + strh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _08078610 + ldr r0, _0807860C @ =sub_807862C + str r0, [r2] + movs r0, 0 + strh r0, [r2, 0xA] + b _08078626 + .align 2, 0 +_08078608: .4byte gTasks +_0807860C: .4byte sub_807862C +_08078610: + lsls r0, r3, 24 + lsrs r0, 24 + movs r1, 0x10 + subs r1, r0 + lsls r1, 8 + orrs r1, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x52 + bl SetGpuReg +_08078626: + pop {r0} + bx r0 + thumb_func_end sub_80785D8 + + thumb_func_start sub_807862C +sub_807862C: @ 807862C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + ldr r1, _0807866C @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r1, r0, r1 + ldrh r0, [r1, 0xA] + adds r0, 0x1 + strh r0, [r1, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x25 + bne _08078674 + ldrh r0, [r1, 0x26] + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _08078670 @ =gSprites + adds r4, r0 + adds r0, r4, 0 + bl FreeSpriteOamMatrix + adds r0, r4, 0 + bl DestroySprite + b _0807868E + .align 2, 0 +_0807866C: .4byte gTasks +_08078670: .4byte gSprites +_08078674: + cmp r0, 0x27 + bne _0807868E + movs r0, 0x50 + movs r1, 0 + bl SetGpuReg + movs r0, 0x52 + movs r1, 0 + bl SetGpuReg + adds r0, r4, 0 + bl DestroyAnimVisualTask +_0807868E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_807862C + + thumb_func_start sub_8078694 +sub_8078694: @ 8078694 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r3, 0 + ldr r0, _080786B8 @ =gUnknown_2024018 + ldr r0, [r0] + ldr r0, [r0, 0x8] + ldrh r0, [r0] + subs r0, 0xF + cmp r0, 0x2B + bls _080786AC + b _08078830 +_080786AC: + lsls r0, 2 + ldr r1, _080786BC @ =_080786C0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080786B8: .4byte gUnknown_2024018 +_080786BC: .4byte _080786C0 + .align 2, 0 +_080786C0: + .4byte _08078770 + .4byte _08078776 + .4byte _0807877C + .4byte _08078782 + .4byte _08078788 + .4byte _0807878E + .4byte _08078794 + .4byte _0807879A + .4byte _080787A0 + .4byte _080787A6 + .4byte _080787AC + .4byte _080787B2 + .4byte _080787B8 + .4byte _080787BE + .4byte _08078830 + .4byte _08078830 + .4byte _08078830 + .4byte _08078830 + .4byte _08078830 + .4byte _08078830 + .4byte _08078830 + .4byte _08078830 + .4byte _08078830 + .4byte _08078830 + .4byte _080787C4 + .4byte _080787C8 + .4byte _080787CC + .4byte _080787D0 + .4byte _080787D4 + .4byte _080787D8 + .4byte _080787DC + .4byte _080787E0 + .4byte _080787E8 + .4byte _080787F0 + .4byte _080787F8 + .4byte _08078800 + .4byte _08078808 + .4byte _08078810 + .4byte _08078830 + .4byte _08078830 + .4byte _08078818 + .4byte _0807881C + .4byte _08078820 + .4byte _08078828 +_08078770: + movs r5, 0 + movs r2, 0 + b _08078838 +_08078776: + movs r5, 0 + movs r2, 0x1 + b _08078838 +_0807877C: + movs r5, 0 + movs r2, 0x3 + b _08078838 +_08078782: + movs r5, 0 + movs r2, 0x5 + b _08078838 +_08078788: + movs r5, 0 + movs r2, 0x6 + b _08078838 +_0807878E: + movs r5, 0 + movs r2, 0x2 + b _08078838 +_08078794: + movs r5, 0 + movs r2, 0x4 + b _08078838 +_0807879A: + movs r5, 0x1 + movs r2, 0 + b _08078838 +_080787A0: + movs r5, 0x1 + movs r2, 0x1 + b _08078838 +_080787A6: + movs r5, 0x1 + movs r2, 0x3 + b _08078838 +_080787AC: + movs r5, 0x1 + movs r2, 0x5 + b _08078838 +_080787B2: + movs r5, 0x1 + movs r2, 0x6 + b _08078838 +_080787B8: + movs r5, 0x1 + movs r2, 0x2 + b _08078838 +_080787BE: + movs r5, 0x1 + movs r2, 0x4 + b _08078838 +_080787C4: + movs r5, 0 + b _080787E2 +_080787C8: + movs r5, 0 + b _080787EA +_080787CC: + movs r5, 0 + b _080787F2 +_080787D0: + movs r5, 0 + b _080787FA +_080787D4: + movs r5, 0 + b _08078802 +_080787D8: + movs r5, 0 + b _0807880A +_080787DC: + movs r5, 0 + b _08078812 +_080787E0: + movs r5, 0x1 +_080787E2: + movs r2, 0 + movs r3, 0x1 + b _08078838 +_080787E8: + movs r5, 0x1 +_080787EA: + movs r2, 0x1 + movs r3, 0x1 + b _08078838 +_080787F0: + movs r5, 0x1 +_080787F2: + movs r2, 0x3 + movs r3, 0x1 + b _08078838 +_080787F8: + movs r5, 0x1 +_080787FA: + movs r2, 0x5 + movs r3, 0x1 + b _08078838 +_08078800: + movs r5, 0x1 +_08078802: + movs r2, 0x6 + movs r3, 0x1 + b _08078838 +_08078808: + movs r5, 0x1 +_0807880A: + movs r2, 0x2 + movs r3, 0x1 + b _08078838 +_08078810: + movs r5, 0x1 +_08078812: + movs r2, 0x4 + movs r3, 0x1 + b _08078838 +_08078818: + movs r5, 0 + b _08078822 +_0807881C: + movs r5, 0 + b _0807882A +_08078820: + movs r5, 0x1 +_08078822: + movs r2, 0xFF + movs r3, 0 + b _08078838 +_08078828: + movs r5, 0x1 +_0807882A: + movs r2, 0xFF + movs r3, 0x1 + b _08078838 +_08078830: + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _0807885A +_08078838: + ldr r0, _08078860 @ =gBattleAnimArgs + movs r1, 0 + strh r5, [r0] + strh r2, [r0, 0x2] + strh r1, [r0, 0x4] + strh r1, [r0, 0x6] + strh r3, [r0, 0x8] + ldr r1, _08078864 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r1, _08078868 @ =sub_80BB088 + str r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 +_0807885A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08078860: .4byte gBattleAnimArgs +_08078864: .4byte gTasks +_08078868: .4byte sub_80BB088 + thumb_func_end sub_8078694 + + thumb_func_start LaunchStatusAnimation +LaunchStatusAnimation: @ 807886C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _080788A8 @ =gBattleAnimAttacker + strb r4, [r0] + ldr r0, _080788AC @ =gBattleAnimTarget + strb r4, [r0] + ldr r0, _080788B0 @ =gUnknown_81C6E84 + movs r2, 0 + bl sub_80725D4 + ldr r0, _080788B4 @ =task0A_80788BC + movs r1, 0xA + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080788B8 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080788A8: .4byte gBattleAnimAttacker +_080788AC: .4byte gBattleAnimTarget +_080788B0: .4byte gUnknown_81C6E84 +_080788B4: .4byte task0A_80788BC +_080788B8: .4byte gTasks + thumb_func_end LaunchStatusAnimation + + thumb_func_start task0A_80788BC +task0A_80788BC: @ 80788BC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08078904 @ =gUnknown_2037EDC + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _08078908 @ =gUnknown_2037EE1 + ldrb r0, [r0] + cmp r0, 0 + bne _080788FE + ldr r0, _0807890C @ =gUnknown_2024018 + ldr r2, [r0] + ldr r1, _08078910 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r1, 0x8 + ldrsh r0, [r0, r1] + ldr r2, [r2, 0x4] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, 0 + bl DestroyTask +_080788FE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08078904: .4byte gUnknown_2037EDC +_08078908: .4byte gUnknown_2037EE1 +_0807890C: .4byte gUnknown_2024018 +_08078910: .4byte gTasks + thumb_func_end task0A_80788BC + + .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index c0ebec726..a524fc643 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -112,10 +112,10 @@ SECTIONS { asm/palette.o(.text); src/sound.o(.text); asm/battle_anim.o(.text); - asm/battle_anim_8074480.o(.text); + asm/battle_anim_mons.o(.text); src/task.o(.text); asm/reshow_battle_screen.o(.text); - asm/battle_anim_8078178.o(.text); + asm/battle_anim_status_effects.o(.text); asm/title_screen.o(.text); asm/reset_save_heap.o(.text); asm/field_weather.o(.text); @@ -138,7 +138,7 @@ SECTIONS { asm/mail_data.o(.text); asm/map_name_popup.o(.text); asm/item_menu_icons.o(.text); - asm/battle_anim_80989F8.o(.text); + asm/battle_anim_mon_movement.o(.text); asm/item.o(.text); asm/shop.o(.text); src/berry.o(.text); @@ -203,14 +203,14 @@ SECTIONS { asm/battle_anim_sound_tasks.o(.text); asm/battle_controller_safari.o(.text); asm/fldeff_sweetscent.o(.text); - asm/battle_anim_80DE2C0.o(.text); + asm/battle_anim_effects_3.o(.text); asm/learn_move.o(.text); asm/fldeff_softboiled.o(.text); asm/battle_tower.o(.text); asm/battle_controller_oak.o(.text); asm/player_pc.o(.text); asm/intro.o(.text); - asm/battle_anim_80EEC0C.o(.text); + asm/battle_anim_special.o(.text); asm/hall_of_fame.o(.text); asm/credits.o(.text); asm/diploma.o(.text); -- cgit v1.2.3