diff options
85 files changed, 14906 insertions, 32961 deletions
diff --git a/asm/battle_anim_815A0D4.s b/asm/battle_anim_815A0D4.s index 362183765..84f7a7883 100644 --- a/asm/battle_anim_815A0D4.s +++ b/asm/battle_anim_815A0D4.s @@ -253,7 +253,7 @@ _0815A2B2: adds r0, r5, 0 movs r1, 0 adds r2, r3, 0 - bl sub_80A73E0 + bl TrySetSpriteRotScale ldr r0, =gBattleAnimArgs ldrh r0, [r0, 0x4] strh r0, [r5, 0x2E] @@ -879,7 +879,7 @@ _0815A7AC: sub_815A7B0: @ 815A7B0 push {r4,r5,lr} adds r4, r0, 0 - bl sub_80A6838 + bl SetSpriteCoordsToAnimAttackerCoords ldr r5, =gBattleAnimArgs movs r0, 0 ldrsh r1, [r5, r0] @@ -889,7 +889,7 @@ sub_815A7B0: @ 815A7B0 ldrh r1, [r4, 0x22] adds r0, r1 strh r0, [r4, 0x22] - ldr r0, =sub_80A67D8 + ldr r0, =RunStoredCallbackWhenAnimEnds str r0, [r4, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r4, 0 @@ -909,7 +909,7 @@ sub_815A7EC: @ 815A7EC cmp r0, 0 bne _0815A84C adds r0, r4, 0 - bl sub_80A6838 + bl SetSpriteCoordsToAnimAttackerCoords ldr r5, =gBattleAnimArgs movs r2, 0 ldrsh r1, [r5, r2] @@ -2050,7 +2050,7 @@ _0815B138: lsrs r1, 24 ldr r2, =gUnknown_085CE2A0 adds r0, r6, 0 - bl sub_80A7CFC + bl PrepareAffineAnimInTaskData ldrh r0, [r6, 0xA] adds r0, 0x1 strh r0, [r6, 0xA] @@ -2059,7 +2059,7 @@ _0815B138: .pool _0815B160: adds r0, r6, 0 - bl sub_80A7D34 + bl RunAffineAnimFromTaskData lsls r0, 24 lsrs r0, 24 cmp r0, 0 @@ -2326,7 +2326,7 @@ _0815B35C: lsrs r1, 24 ldr r2, =gUnknown_085CE350 adds r0, r4, 0 - bl sub_80A7CFC + bl PrepareAffineAnimInTaskData ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -2334,7 +2334,7 @@ _0815B35C: .pool _0815B37C: adds r0, r4, 0 - bl sub_80A7D34 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _0815B38E @@ -2385,7 +2385,7 @@ _0815B3BE: strh r0, [r5, 0x22] adds r0, r6, 0 movs r1, 0 - bl sub_80A7270 + bl PrepareBattlerSpriteForRotScale movs r0, 0x80 lsls r0, 1 strh r0, [r5, 0x30] @@ -2405,7 +2405,7 @@ _0815B3F4: ldrsh r2, [r5, r0] adds r0, r6, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r5, 0x34] adds r0, 0x1 strh r0, [r5, 0x34] @@ -2429,7 +2429,7 @@ _0815B424: ldrsh r2, [r5, r0] adds r0, r6, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r5, 0x34] adds r0, 0x1 strh r0, [r5, 0x34] @@ -2450,7 +2450,7 @@ _0815B424: orrs r1, r2 strb r1, [r0] adds r0, r6, 0 - bl sub_80A7344 + bl ResetSpriteRotScale _0815B46C: ldrh r0, [r5, 0x2E] adds r0, 0x1 @@ -2734,7 +2734,7 @@ sub_815B65C: @ 815B65C lsrs r1, 24 ldr r2, =gUnknown_085CE3B8 adds r0, r4, 0 - bl sub_80A7CFC + bl PrepareAffineAnimInTaskData ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -2742,7 +2742,7 @@ sub_815B65C: @ 815B65C .pool _0815B69C: adds r0, r4, 0 - bl sub_80A7D34 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _0815B6AE @@ -2776,7 +2776,7 @@ sub_815B6B4: @ 815B6B4 lsrs r1, 24 ldr r2, =gUnknown_085CE3E0 adds r0, r4, 0 - bl sub_80A7CFC + bl PrepareAffineAnimInTaskData ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -2784,7 +2784,7 @@ sub_815B6B4: @ 815B6B4 .pool _0815B6F4: adds r0, r4, 0 - bl sub_80A7D34 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _0815B706 @@ -2874,7 +2874,7 @@ sub_815B778: @ 815B778 lsrs r1, 24 ldr r2, =gUnknown_085CE430 adds r0, r4, 0 - bl sub_80A7CFC + bl PrepareAffineAnimInTaskData ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -2882,7 +2882,7 @@ sub_815B778: @ 815B778 .pool _0815B7B8: adds r0, r4, 0 - bl sub_80A7D34 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _0815B7CA @@ -4278,7 +4278,7 @@ sub_815C3A8: @ 815C3A8 lsrs r1, 24 ldr r2, =gUnknown_085CE4B0 adds r0, r4, 0 - bl sub_80A7CFC + bl PrepareAffineAnimInTaskData ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -4286,7 +4286,7 @@ sub_815C3A8: @ 815C3A8 .pool _0815C3E8: adds r0, r4, 0 - bl sub_80A7D34 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _0815C3FA @@ -4452,7 +4452,7 @@ _0815C528: lsls r0, 24 lsrs r0, 24 movs r1, 0 - bl sub_80A7270 + bl PrepareBattlerSpriteForRotScale ldr r0, =sub_815C548 str r0, [r4] _0815C538: @@ -4513,11 +4513,11 @@ _0815C57C: lsls r2, 1 ldrh r3, [r4, 0xC] adds r1, r2, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_80A73A0 + bl SetBattlerSpriteYOffsetFromRotation ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] @@ -4553,11 +4553,11 @@ _0815C5D0: lsls r2, 1 ldrh r3, [r4, 0xC] adds r1, r2, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_80A73A0 + bl SetBattlerSpriteYOffsetFromRotation ldrh r1, [r4, 0xA] adds r1, 0x1 strh r1, [r4, 0xA] @@ -4596,11 +4596,11 @@ _0815C628: lsls r2, 1 ldrh r3, [r4, 0xC] adds r1, r2, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_80A73A0 + bl SetBattlerSpriteYOffsetFromRotation ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] @@ -4630,7 +4630,7 @@ _0815C698: ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_80A7344 + bl ResetSpriteRotScale adds r0, r5, 0 bl DestroyAnimVisualTask _0815C6A8: @@ -4763,7 +4763,7 @@ sub_815C770: @ 815C770 lsrs r0, 24 strh r0, [r4, 0x26] movs r1, 0 - bl sub_80A7270 + bl PrepareBattlerSpriteForRotScale ldr r0, =sub_815C7C4 str r0, [r4] pop {r4} @@ -4907,7 +4907,7 @@ _0815C8C8: ldrh r0, [r7, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_80A7344 + bl ResetSpriteRotScale adds r0, r4, 0 bl DestroyAnimVisualTask b _0815C950 @@ -4919,11 +4919,11 @@ _0815C8DA: lsls r2, 1 ldrh r3, [r7, 0xC] adds r1, r2, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r7, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_80A73A0 + bl SetBattlerSpriteYOffsetFromRotation ldr r2, =gSprites movs r0, 0x26 ldrsh r1, [r7, r0] @@ -5121,7 +5121,7 @@ _0815CA5E: strh r5, [r6, 0x1C] adds r0, r5, 0 movs r1, 0 - bl sub_80A7270 + bl PrepareBattlerSpriteForRotScale mov r2, r8 movs r3, 0x2 ldrsh r0, [r2, r3] @@ -5145,9 +5145,9 @@ _0815CAA8: adds r0, r5, 0 movs r1, 0xE0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale adds r0, r5, 0 - bl sub_80A7E6C + bl SetBattlerSpriteYOffsetFromYScale lsls r2, r5, 4 b _0815CB08 _0815CAC0: @@ -5164,9 +5164,9 @@ _0815CACA: _0815CAD2: adds r0, r5, 0 movs r1, 0xD0 - bl obj_id_set_rotscale + bl SetSpriteRotScale adds r0, r5, 0 - bl sub_80A7E6C + bl SetBattlerSpriteYOffsetFromYScale bl IsContest lsls r0, 24 cmp r0, 0 @@ -5230,7 +5230,7 @@ _0815CB50: cmp r0, 0xD bne _0815CB78 adds r0, r5, 0 - bl sub_80A7344 + bl ResetSpriteRotScale ldr r1, =gSprites lsls r0, r5, 4 adds r0, r5 @@ -5588,14 +5588,14 @@ sub_815CDFC: @ 815CDFC _0815CE36: ldr r0, =gBattleAnimAttacker ldrb r0, [r0] - bl sub_80A82E4 + bl GetBattlerSpriteSubpriority subs r0, 0x1 b _0815CE52 .pool _0815CE48: ldr r0, =gBattleAnimAttacker ldrb r0, [r0] - bl sub_80A82E4 + bl GetBattlerSpriteSubpriority adds r0, 0x1 _0815CE52: adds r1, r4, 0 @@ -6034,7 +6034,7 @@ sub_815D1BC: @ 815D1BC str r4, [sp] adds r0, r6, 0 movs r1, 0x1 - bl sub_80A73E0 + bl TrySetSpriteRotScale ldrh r0, [r5, 0x20] adds r0, 0x1 strh r0, [r5, 0x20] @@ -6569,7 +6569,7 @@ sub_815D64C: @ 815D64C strh r1, [r4, 0x26] ldr r2, =gUnknown_085CE5F0 adds r0, r4, 0 - bl sub_80A7CFC + bl PrepareAffineAnimInTaskData ldr r0, =sub_815D694 str r0, [r4] pop {r4} @@ -6638,7 +6638,7 @@ _0815D708: adds r0, r4 lsls r0, 3 adds r0, r6 - bl sub_80A7D34 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _0815D720 @@ -6731,7 +6731,7 @@ sub_815D7B4: @ 815D7B4 adds r4, r0, 0 ldrh r6, [r4, 0x20] ldrh r5, [r4, 0x22] - bl sub_80A6838 + bl SetSpriteCoordsToAnimAttackerCoords ldr r0, =gBattleAnimArgs ldrb r1, [r0] adds r0, r4, 0 @@ -6810,7 +6810,7 @@ sub_815D804: @ 815D804 cmp r0, 0x3 ble _0815D86A adds r0, r5, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _0815D86A: pop {r4,r5} pop {r0} @@ -7393,7 +7393,7 @@ _0815DCEA: lsrs r0, 24 strh r0, [r5, 0x12] adds r0, r4, 0 - bl sub_80A82E4 + bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x14] @@ -7406,7 +7406,7 @@ _0815DCEA: strh r1, [r5, 0x26] ldr r2, =gUnknown_085CE74C adds r0, r5, 0 - bl sub_80A7CFC + bl PrepareAffineAnimInTaskData ldr r0, =sub_815DD48 str r0, [r5] pop {r4,r5} @@ -7454,7 +7454,7 @@ _0815DD82: bl sub_815DDE0 _0815DD92: adds r0, r4, 0 - bl sub_80A7D34 + bl RunAffineAnimFromTaskData lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 @@ -7476,7 +7476,7 @@ _0815DDB4: lsrs r1, 24 ldr r2, =gUnknown_085CE74C adds r0, r4, 0 - bl sub_80A7CFC + bl PrepareAffineAnimInTaskData b _0815DDDA .pool _0815DDCC: @@ -8395,7 +8395,7 @@ _0815E4EE: ldrsh r6, [r7, r1] mov r1, r8 ldrb r0, [r1] - bl sub_80A82E4 + bl GetBattlerSpriteSubpriority adds r3, r0, 0 subs r3, 0x5 lsls r3, 24 @@ -8834,7 +8834,7 @@ _0815E85C: strh r1, [r4, 0x26] ldr r2, =gUnknown_085CE87C adds r0, r4, 0 - bl sub_80A7CFC + bl PrepareAffineAnimInTaskData ldr r0, =sub_815E898 str r0, [r4] _0815E884: @@ -8891,7 +8891,7 @@ _0815E8F0: strh r1, [r0, 0x24] _0815E8F2: adds r0, r4, 0 - bl sub_80A7D34 + bl RunAffineAnimFromTaskData lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0 @@ -8919,7 +8919,7 @@ _0815E8F2: lsls r1, 24 lsrs r1, 24 ldr r2, =gUnknown_085CE87C - bl sub_80A7CFC + bl PrepareAffineAnimInTaskData strh r5, [r4, 0xA] strh r5, [r4, 0xC] b _0815E94E @@ -10075,7 +10075,7 @@ AnimTask_MonToSubstitute: @ 815F20C bne _0815F254 adds r0, r5, 0 movs r1, 0 - bl sub_80A7270 + bl PrepareBattlerSpriteForRotScale movs r0, 0x80 lsls r0, 1 strh r0, [r4, 0xA] @@ -10097,7 +10097,7 @@ _0815F254: ldrsh r2, [r4, r0] adds r0, r5, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r4, 0xE] adds r0, 0x1 strh r0, [r4, 0xE] @@ -10108,7 +10108,7 @@ _0815F254: movs r0, 0 strh r0, [r4, 0xE] adds r0, r5, 0 - bl sub_80A7344 + bl ResetSpriteRotScale ldr r1, =gSprites lsls r0, r5, 4 adds r0, r5 @@ -10367,7 +10367,7 @@ sub_815F48C: @ 815F48C cmp r0, 0 bne _0815F4B8 ldrb r0, [r4] - bl sub_80A82E4 + bl GetBattlerSpriteSubpriority subs r0, 0x2 adds r1, r5, 0 adds r1, 0x43 @@ -10377,7 +10377,7 @@ sub_815F48C: @ 815F48C .pool _0815F4B8: ldrb r0, [r4] - bl sub_80A82E4 + bl GetBattlerSpriteSubpriority adds r0, 0x2 adds r1, r5, 0 adds r1, 0x43 @@ -10566,7 +10566,7 @@ sub_815F620: @ 815F620 cmp r7, 0 bne _0815F66E movs r0, 0x1 - bl duplicate_obj_of_side_rel2move_in_transparent_mode + bl CloneBattlerSpriteWithBlend lsls r0, 16 lsrs r1, r0, 16 mov r10, r1 @@ -10574,7 +10574,7 @@ sub_815F620: @ 815F620 cmp r6, 0 blt _0815F66E movs r0, 0x1 - bl duplicate_obj_of_side_rel2move_in_transparent_mode + bl CloneBattlerSpriteWithBlend lsls r0, 16 lsrs r1, r0, 16 mov r9, r1 @@ -11038,7 +11038,7 @@ _0815F9F4: ldrh r6, [r0] ldr r0, =gBattleAnimAttacker ldrb r0, [r0] - bl sub_80A82E4 + bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r4, r0, 24 movs r7, 0 @@ -12329,7 +12329,7 @@ _081604DA: b _081604E8 _081604E2: adds r0, r4, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _081604E8: pop {r4} pop {r0} @@ -12403,7 +12403,7 @@ sub_8160544: @ 8160544 strh r1, [r4, 0x26] ldr r2, =gUnknown_085CE9C8 adds r0, r4, 0 - bl sub_80A7CFC + bl PrepareAffineAnimInTaskData ldr r0, =sub_816058C str r0, [r4] pop {r4} @@ -12472,7 +12472,7 @@ _08160600: adds r0, r4 lsls r0, 3 adds r0, r6 - bl sub_80A7D34 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _08160618 diff --git a/asm/battle_anim_8170478.s b/asm/battle_anim_8170478.s deleted file mode 100644 index c0881e682..000000000 --- a/asm/battle_anim_8170478.s +++ /dev/null @@ -1,5832 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8170478 -sub_8170478: @ 8170478 - 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, =gBattleAnimAttacker - ldrb r4, [r0] - ldr r0, =gBattle_WIN0H - movs r1, 0 - strh r1, [r0] - ldr r0, =gBattle_WIN0V - strh r1, [r0] - ldr r1, =0x00003f3f - movs r0, 0x48 - bl SetGpuReg - ldr r1, =0x00003f3d - movs r0, 0x4A - bl SetGpuReg - movs r1, 0x80 - lsls r1, 8 - movs r0, 0 - bl SetGpuRegBits - ldr r1, =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, =gHealthboxSpriteIds - adds r4, r0 - ldrb r0, [r4] - ldr r1, =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, =SpriteCallbackDummy - bl CreateInvisibleSpriteWithCallback - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x14] - ldr r0, =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, =SpriteCallbackDummy - str r1, [r6] - add r4, r9 - str r1, [r4] - mov r0, sp - bl sub_80A6B30 - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, =gUnknown_08C2EA9C - bl sub_80A6D48 - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, =gUnknown_08C2EA50 - mov r2, sp - ldrh r2, [r2, 0xA] - bl sub_80A6CC0 - ldr r0, =gUnknown_08C2DDA4 - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r1, =gBattle_BG1_X - ldrh r0, [r7, 0x20] - negs r0, r0 - adds r0, 0x20 - strh r0, [r1] - ldr r1, =gBattle_BG1_Y - ldrh r0, [r7, 0x22] - negs r0, r0 - subs r0, 0x20 - strh r0, [r1] - ldr r1, =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, =sub_8170660 - 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 - .pool - thumb_func_end sub_8170478 - - thumb_func_start sub_8170660 -sub_8170660: @ 8170660 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - mov r8, r0 - ldr r1, =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, =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 _081706F0 - cmp r0, 0x1 - bgt _081706B4 - cmp r0, 0 - beq _081706BA - b _08170814 - .pool -_081706B4: - cmp r0, 0x2 - beq _08170708 - b _08170814 -_081706BA: - ldrh r0, [r5, 0x1E] - adds r1, r0, 0x1 - strh r1, [r5, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bgt _081706CA - b _08170814 -_081706CA: - 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 _081706EE - b _08170814 -_081706EE: - b _08170700 -_081706F0: - ldrh r0, [r5, 0x1C] - adds r0, 0x1 - strh r0, [r5, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - beq _08170700 - b _08170814 -_08170700: - ldrh r0, [r5, 0x26] - adds r0, 0x1 - strh r0, [r5, 0x26] - b _08170814 -_08170708: - ldrh r0, [r5, 0x1E] - adds r1, r0, 0x1 - strh r1, [r5, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _08170814 - 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 _08170814 - movs r0, 0 - bl sub_80A477C - ldr r0, =gBattle_WIN0H - strh r4, [r0] - ldr r0, =gBattle_WIN0V - strh r4, [r0] - ldr r4, =0x00003f3f - movs r0, 0x48 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x4A - adds r1, r4, 0 - bl SetGpuReg - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _0817076C - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_0817076C: - 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, =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, =gHealthboxSpriteIds - add r0, r8 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r2, [r1, 0x6] - mov r8, r2 - ldrh r4, [r1, 0x38] - lsls r4, 24 - lsrs r4, 24 - ldrb r3, [r1, 0x5] - movs r2, 0xD - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - movs r5, 0x4 - orrs r0, r5 - strb r0, [r1, 0x5] - mov r0, r8 - lsls r1, r0, 4 - add r1, r8 - lsls r1, 2 - adds r1, r6 - ldrb r3, [r1, 0x5] - adds r0, r2, 0 - ands r0, r3 - orrs r0, r5 - strb r0, [r1, 0x5] - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0, 0x5] - ands r2, r1 - orrs r2, r5 - strb r2, [r0, 0x5] - adds r0, r7, 0 - bl DestroyAnimVisualTask -_08170814: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8170660 - - thumb_func_start sub_8170834 -sub_8170834: @ 8170834 - 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, =gHealthboxSpriteIds - adds r2, r0 - ldrb r0, [r2] - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - ldr r0, =gSprites - adds r5, r0 - ldrb r1, [r5, 0x6] - mov r10, r1 - ldrh r4, [r5, 0x38] - lsls r4, 24 - lsrs r4, 24 - ldr r0, =0x0000d709 - bl AllocSpritePalette - mov r2, r9 - strb r0, [r2] - ldr r0, =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, =gSprites - adds r6, r2 - ldrb r4, [r6, 0x5] - lsrs r4, 4 - lsls r4, 4 - orrs r4, r3 - lsls r0, 1 - ldr r1, =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, =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 - .pool - thumb_func_end sub_8170834 - - thumb_func_start sub_8170920 -sub_8170920: @ 8170920 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r1, sp - adds r1, 0x1 - ldr r0, =gBattleAnimAttacker - ldrb r2, [r0] - mov r0, sp - bl sub_8170834 - adds r0, r4, 0 - bl DestroyAnimVisualTask - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8170920 - - thumb_func_start sub_817094C -sub_817094C: @ 817094C - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gHealthboxSpriteIds - adds r0, r1 - ldrb r0, [r0] - ldr r1, =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, =0x0000d709 - bl FreeSpritePaletteByTag - ldr r0, =0x0000d70a - bl FreeSpritePaletteByTag - ldr r0, =0x0000d6ff - bl IndexOfSpritePaletteTag - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =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 - .pool - thumb_func_end sub_817094C - - thumb_func_start sub_81709EC -sub_81709EC: @ 81709EC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_817094C - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81709EC - - thumb_func_start sub_8170A0C -sub_8170A0C: @ 8170A0C - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r2, =gBattleAnimArgs - ldrh r0, [r2] - strh r0, [r1, 0x1C] - ldrh r0, [r2, 0x2] - strh r0, [r1, 0x1E] - ldr r0, =sub_8170A38 - str r0, [r1] - bx lr - .pool - thumb_func_end sub_8170A0C - - thumb_func_start sub_8170A38 -sub_8170A38: @ 8170A38 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =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 _08170AF8 - strh r6, [r4, 0x8] - ldr r0, =0x0000d709 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r2, r0, 24 - movs r3, 0x1C - ldrsh r0, [r4, r3] - movs r1, 0x2 - cmp r0, 0 - bne _08170A76 - movs r1, 0x6 -_08170A76: - movs r3, 0xA - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _08170A8C - cmp r0, 0x1 - beq _08170AC8 - b _08170AF8 - .pool -_08170A8C: - ldrh r0, [r4, 0xC] - adds r0, 0x2 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _08170A9E - movs r0, 0x10 - strh r0, [r4, 0xC] -_08170A9E: - lsls r0, r2, 4 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2 - orrs r0, r1 - ldrb r2, [r4, 0xC] - ldr r3, =0x00007f74 - movs r1, 0x1 - bl BlendPalette - movs r3, 0xC - ldrsh r0, [r4, r3] - cmp r0, 0x10 - bne _08170AF8 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - b _08170AF8 - .pool -_08170AC8: - ldrh r0, [r4, 0xC] - subs r0, 0x2 - strh r0, [r4, 0xC] - lsls r0, 16 - cmp r0, 0 - bge _08170AD6 - strh r6, [r4, 0xC] -_08170AD6: - lsls r0, r2, 4 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2 - orrs r0, r1 - ldrb r2, [r4, 0xC] - ldr r3, =0x00007f74 - movs r1, 0x1 - bl BlendPalette - movs r3, 0xC - ldrsh r0, [r4, r3] - cmp r0, 0 - bne _08170AF8 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_08170AF8: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8170A38 - - thumb_func_start sub_8170B04 -sub_8170B04: @ 8170B04 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, =gBattlerSpriteIds - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r5, [r0] - ldr r1, =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 _08170B52 - cmp r0, 0x1 - bgt _08170B3C - cmp r0, 0 - beq _08170B42 - b _08170BA4 - .pool -_08170B3C: - cmp r0, 0x2 - beq _08170B84 - b _08170BA4 -_08170B42: - adds r0, r5, 0 - movs r1, 0 - bl sub_80A7270 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0x1C] - b _08170B76 -_08170B52: - 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_80A7E6C - movs r0, 0x1C - ldrsh r1, [r4, r0] - ldr r0, =0x000002cf - cmp r1, r0 - ble _08170BA4 -_08170B76: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _08170BA4 - .pool -_08170B84: - adds r0, r5, 0 - bl sub_80A7344 - ldr r1, =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 -_08170BA4: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8170B04 - - thumb_func_start sub_8170BB0 -sub_8170BB0: @ 8170BB0 - 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, =gBattlerSpriteIds - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - adds r1, r0, r1 - ldrb r1, [r1] - mov r9, r1 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08170BF8 - ldr r1, =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - b _08170C08 - .pool -_08170BF8: - ldr r1, =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty -_08170C08: - 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, =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 _08170C44 - cmp r7, 0x1 - beq _08170CC4 - b _08170CEE - .pool -_08170C44: - ldr r5, =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - adds r1, r0, 0 - lsls r1, 24 - ldr r2, =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_80A75AC - 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 _08170CEE - .pool -_08170CC4: - 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 _08170CEE - 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 _08170CEE - adds r0, r5, 0 - bl DestroyAnimVisualTask -_08170CEE: - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8170BB0 - - thumb_func_start sub_8170CFC -sub_8170CFC: @ 8170CFC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =gLastUsedItem - ldrh r0, [r0] - bl ItemIdToBallId - lsls r0, 24 - lsrs r0, 24 - bl LoadBallGfx - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8170CFC - - thumb_func_start sub_8170D24 -sub_8170D24: @ 8170D24 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =gLastUsedItem - ldrh r0, [r0] - bl ItemIdToBallId - lsls r0, 24 - lsrs r0, 24 - bl FreeBallGfx - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8170D24 - - thumb_func_start AnimTask_IsBallBlockedByTrainer -AnimTask_IsBallBlockedByTrainer: @ 8170D4C - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x8] - cmp r0, 0x5 - bne _08170D70 - ldr r1, =gBattleAnimArgs - ldr r0, =0x0000ffff - b _08170D74 - .pool -_08170D70: - ldr r1, =gBattleAnimArgs - movs r0, 0 -_08170D74: - strh r0, [r1, 0xE] - adds r0, r2, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .pool - thumb_func_end AnimTask_IsBallBlockedByTrainer - - thumb_func_start ItemIdToBallId -ItemIdToBallId: @ 8170D84 - push {lr} - lsls r0, 16 - lsrs r0, 16 - subs r0, 0x1 - cmp r0, 0xB - bhi _08170DFC - lsls r0, 2 - ldr r1, =_08170DA0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08170DA0: - .4byte _08170DD0 - .4byte _08170DD4 - .4byte _08170DD8 - .4byte _08170DFC - .4byte _08170DDC - .4byte _08170DE0 - .4byte _08170DE4 - .4byte _08170DE8 - .4byte _08170DEC - .4byte _08170DF0 - .4byte _08170DF4 - .4byte _08170DF8 -_08170DD0: - movs r0, 0x4 - b _08170DFE -_08170DD4: - movs r0, 0x3 - b _08170DFE -_08170DD8: - movs r0, 0x1 - b _08170DFE -_08170DDC: - movs r0, 0x2 - b _08170DFE -_08170DE0: - movs r0, 0x5 - b _08170DFE -_08170DE4: - movs r0, 0x6 - b _08170DFE -_08170DE8: - movs r0, 0x7 - b _08170DFE -_08170DEC: - movs r0, 0x8 - b _08170DFE -_08170DF0: - movs r0, 0x9 - b _08170DFE -_08170DF4: - movs r0, 0xA - b _08170DFE -_08170DF8: - movs r0, 0xB - b _08170DFE -_08170DFC: - movs r0, 0 -_08170DFE: - pop {r1} - bx r1 - thumb_func_end ItemIdToBallId - - thumb_func_start sub_8170E04 -sub_8170E04: @ 8170E04 - 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, =gLastUsedItem - ldrh r0, [r0] - bl ItemIdToBallId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - ldr r1, =gBallSpriteTemplates - 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, =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, =gBattleAnimTarget - mov r8, r2 - ldrb r0, [r2] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x30] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x10 - strh r0, [r6, 0x32] - mov r0, r9 - adds r0, 0x1C - adds r4, r0 - ldr r0, =sub_8171104 - str r0, [r4] - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r3, [r0, 0x8] - ldr r1, =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, =gTasks - mov r2, r10 - lsls r0, r2, 2 - add r0, r10 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0x8] - ldr r1, =sub_8170EF0 - str r1, [r0] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8170E04 - - thumb_func_start sub_8170EF0 -sub_8170EF0: @ 8170EF0 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0, 0x8] - ldr r2, =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x2E] - ldr r0, =0x0000ffff - cmp r1, r0 - bne _08170F1A - adds r0, r3, 0 - bl DestroyAnimVisualTask -_08170F1A: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8170EF0 - - thumb_func_start sub_8170F2C -sub_8170F2C: @ 8170F2C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - beq _08170F50 - movs r6, 0x20 - movs r5, 0xB - b _08170F54 - .pool -_08170F50: - movs r6, 0x17 - movs r5, 0x5 -_08170F54: - ldr r0, =gLastUsedItem - ldrh r0, [r0] - bl ItemIdToBallId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - bl sub_80A82E4 - 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, =gBallSpriteTemplates - adds r0, r1 - adds r1, r6, 0 - adds r1, 0x20 - movs r2, 0x50 - orrs r5, r2 - adds r2, r5, 0 - bl CreateSprite - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, =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, =gBattleAnimTarget - mov r8, r1 - ldrb r0, [r1] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x30] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x10 - strh r0, [r6, 0x32] - movs r0, 0x1C - add r9, r0 - add r4, r9 - ldr r0, =SpriteCallbackDummy - str r0, [r4] - movs r0, 0 - bl GetBattlerAtPosition - ldr r1, =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, =sub_8039E84 - str r1, [r0] - ldr r1, =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0x8] - ldr r1, =sub_8171030 - str r1, [r0] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8170F2C - - thumb_func_start sub_8171030 -sub_8171030: @ 8171030 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r6, =gSprites - movs r0, 0 - bl GetBattlerAtPosition - ldr r1, =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 _0817108A - movs r0, 0x3D - movs r1, 0 - bl PlaySE12WithPanning - ldr r0, =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, =sub_8171104 - str r1, [r0] - ldr r0, =sub_81710A8 - movs r1, 0xA - bl CreateTask - ldr r0, =sub_8170EF0 - str r0, [r4] -_0817108A: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8171030 - - thumb_func_start sub_81710A8 -sub_81710A8: @ 81710A8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r6, =gSprites - movs r0, 0 - bl GetBattlerAtPosition - ldr r4, =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 _081710F4 - 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 -_081710F4: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81710A8 - - thumb_func_start sub_8171104 -sub_8171104: @ 8171104 - 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, =0x0000ffd8 - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl InitAnimArcTranslation - ldr r0, =sub_8171134 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8171104 - - thumb_func_start sub_8171134 -sub_8171134: @ 8171134 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - beq _081711D2 - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x8] - cmp r0, 0x5 - bne _08171160 - ldr r0, =sub_8171CAC - str r0, [r4, 0x1C] - b _081711D2 - .pool -_08171160: - 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 -_08171188: - strh r2, [r0] - subs r0, 0x2 - cmp r0, r1 - bge _08171188 - movs r0, 0 - strh r0, [r4, 0x38] - ldr r0, =sub_81711E8 - str r0, [r4, 0x1C] - ldr r0, =gLastUsedItem - ldrh r0, [r0] - bl ItemIdToBallId - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xB - bgt _081711D2 - cmp r5, 0 - blt _081711D2 - 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, =gBattleAnimTarget - ldrb r1, [r0] - movs r0, 0 - movs r2, 0xE - adds r3, r5, 0 - bl LaunchBallFadeMonTask -_081711D2: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8171134 - - thumb_func_start sub_81711E8 -sub_81711E8: @ 81711E8 - 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 _08171224 - ldr r0, =TaskDummy - movs r1, 0x32 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x38] - ldr r0, =sub_8171240 - str r0, [r4, 0x1C] - ldr r2, =gSprites - ldr r1, =gBattlerSpriteIds - ldr r0, =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] -_08171224: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81711E8 - - thumb_func_start sub_8171240 -sub_8171240: @ 8171240 - push {r4-r7,lr} - adds r7, r0, 0 - ldr r1, =gBattlerSpriteIds - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r4, [r0] - ldrh r0, [r7, 0x38] - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, =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 _08171272 - movs r0, 0x3C - bl PlaySE -_08171272: - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _081712E8 - cmp r0, 0x1 - bgt _08171290 - cmp r0, 0 - beq _08171296 - b _08171354 - .pool -_08171290: - cmp r0, 0x2 - beq _0817132C - b _08171354 -_08171296: - adds r0, r4, 0 - movs r1, 0 - bl sub_80A7270 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r5, 0x1C] - ldr r1, =gUnknown_030062DC - movs r0, 0x1C - str r0, [r1] - ldr r2, =gUnknown_030062E4 - ldr r1, =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, =gUnknown_030062E0 - ldrh r0, [r2] - lsls r0, 8 - movs r1, 0x1C - bl __udivsi3 - strh r0, [r4] - strh r0, [r5, 0xC] - b _08171346 - .pool -_081712E8: - 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, =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, =0x0000047f - cmp r1, r0 - ble _0817137C - b _08171346 - .pool -_0817132C: - adds r0, r4, 0 - bl sub_80A7344 - ldr r1, =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] -_08171346: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _0817137C - .pool -_08171354: - ldr r0, =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 _0817137C - adds r0, r6, 0 - bl DestroyTask - adds r0, r7, 0 - movs r1, 0x2 - bl StartSpriteAnim - movs r0, 0 - strh r0, [r7, 0x38] - ldr r0, =sub_817138C - str r0, [r7, 0x1C] -_0817137C: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8171240 - - thumb_func_start sub_817138C -sub_817138C: @ 817138C - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _081713C6 - 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, =sub_81713D0 - str r0, [r4, 0x1C] -_081713C6: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_817138C - - thumb_func_start sub_81713D0 -sub_81713D0: @ 81713D0 - 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 _081713E6 - cmp r1, 0x1 - beq _0817145A - b _08171486 -_081713E6: - 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 _08171486 - ldrh r0, [r4, 0x36] - subs r0, 0xA - strh r0, [r4, 0x36] - ldr r1, =0x00000101 - adds r0, r2, r1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 24 - cmp r0, 0x4 - bne _08171422 - movs r5, 0x1 -_08171422: - cmp r0, 0x2 - beq _08171442 - cmp r0, 0x2 - bgt _08171434 - cmp r0, 0x1 - beq _0817143A - b _08171452 - .pool -_08171434: - cmp r0, 0x3 - beq _0817144A - b _08171452 -_0817143A: - movs r0, 0x38 - bl PlaySE - b _08171486 -_08171442: - movs r0, 0x39 - bl PlaySE - b _08171486 -_0817144A: - movs r0, 0x3A - bl PlaySE - b _08171486 -_08171452: - movs r0, 0x3B - bl PlaySE - b _08171486 -_0817145A: - 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 _08171486 - strh r5, [r4, 0x38] - ldr r0, =0xffffff00 - ands r0, r2 - strh r0, [r4, 0x34] -_08171486: - cmp r5, 0 - beq _081714CA - 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, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _081714C0 - strh r5, [r4, 0x38] - ldr r0, =sub_81717B4 - str r0, [r4, 0x1C] - b _081714CA - .pool -_081714C0: - ldr r0, =sub_81714D4 - str r0, [r4, 0x1C] - movs r0, 0x1 - strh r0, [r4, 0x36] - strh r5, [r4, 0x38] -_081714CA: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81713D0 - - thumb_func_start sub_81714D4 -sub_81714D4: @ 81714D4 - 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 _08171510 - 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, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - strh r5, [r0, 0xC] - ldr r0, =sub_8171520 - str r0, [r4, 0x1C] - movs r0, 0x17 - bl PlaySE -_08171510: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81714D4 - - thumb_func_start sub_8171520 -sub_8171520: @ 8171520 - push {r4-r6,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x34] - movs r1, 0xFF - ands r1, r0 - cmp r1, 0x6 - bls _08171530 - b _08171768 -_08171530: - lsls r0, r1, 2 - ldr r1, =_08171540 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08171540: - .4byte _0817155C - .4byte _081715AE - .4byte _081715F4 - .4byte _08171654 - .4byte _081716A4 - .4byte _08171708 - .4byte _08171768 -_0817155C: - ldr r1, =gBattleSpritesDataPtr - ldr r5, [r1] - ldr r2, [r5, 0x8] - ldrh r3, [r2, 0xC] - movs r6, 0xC - ldrsh r0, [r2, r6] - adds r6, r1, 0 - cmp r0, 0xFF - ble _08171584 - 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 _0817158A - .pool -_08171584: - adds r0, r3, 0 - adds r0, 0xB0 - strh r0, [r2, 0xC] -_0817158A: - 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 _081715AC - b _081717AE -_081715AC: - b _08171644 -_081715AE: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _08171660 - 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 _081715EA - adds r0, r4, 0 - movs r1, 0x2 - bl ChangeSpriteAffineAnim - b _081717AE -_081715EA: - adds r0, r4, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnim - b _081717AE -_081715F4: - ldr r1, =gBattleSpritesDataPtr - ldr r5, [r1] - ldr r2, [r5, 0x8] - ldrh r3, [r2, 0xC] - movs r6, 0xC - ldrsh r0, [r2, r6] - adds r6, r1, 0 - cmp r0, 0xFF - ble _0817161C - 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 _08171622 - .pool -_0817161C: - adds r0, r3, 0 - adds r0, 0xB0 - strh r0, [r2, 0xC] -_08171622: - 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 _08171644 - b _081717AE -_08171644: - 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 _081717AE -_08171654: - ldrh r0, [r4, 0x38] - adds r1, r0, 0x1 - strh r1, [r4, 0x38] - lsls r0, 16 - cmp r0, 0 - bge _0817166E -_08171660: - adds r0, r4, 0 - adds r0, 0x2C - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] - b _081717AE -_0817166E: - 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 _0817169C - adds r0, r4, 0 - movs r1, 0x2 - bl ChangeSpriteAffineAnim - b _081716A4 -_0817169C: - adds r0, r4, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnim -_081716A4: - ldr r1, =gBattleSpritesDataPtr - ldr r5, [r1] - ldr r2, [r5, 0x8] - ldrh r3, [r2, 0xC] - movs r6, 0xC - ldrsh r0, [r2, r6] - adds r6, r1, 0 - cmp r0, 0xFF - ble _081716CC - 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 _081716D2 - .pool -_081716CC: - adds r0, r3, 0 - adds r0, 0xB0 - strh r0, [r2, 0xC] -_081716D2: - 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 _081717AE - 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 _081717AE -_08171708: - 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, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0x8] - cmp r1, r0 - bne _08171740 - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r0, =sub_81717B4 - str r0, [r4, 0x1C] - b _081717AE - .pool -_08171740: - cmp r0, 0x4 - bne _08171754 - cmp r1, 0x3 - bne _08171754 - ldr r0, =sub_81717D8 - str r0, [r4, 0x1C] - b _0817175A - .pool -_08171754: - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] -_0817175A: - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - b _081717AE -_08171768: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1F - bne _081717AE - movs r0, 0 - strh r0, [r4, 0x38] - ldrh r1, [r4, 0x34] - ldr r0, =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 _081717A0 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - b _081717A8 - .pool -_081717A0: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_081717A8: - movs r0, 0x17 - bl PlaySE -_081717AE: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8171520 - - thumb_func_start sub_81717B4 -sub_81717B4: @ 81717B4 - 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 _081717CE - movs r0, 0 - strh r0, [r1, 0x38] - ldr r0, =sub_8171AE4 - str r0, [r1, 0x1C] -_081717CE: - pop {r0} - bx r0 - .pool - thumb_func_end sub_81717B4 - - thumb_func_start sub_81717D8 -sub_81717D8: @ 81717D8 - adds r3, r0, 0 - adds r3, 0x2C - ldrb r1, [r3] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r3] - ldr r1, =sub_81717F8 - str r1, [r0, 0x1C] - movs r1, 0 - strh r1, [r0, 0x34] - strh r1, [r0, 0x36] - strh r1, [r0, 0x38] - bx lr - .pool - thumb_func_end sub_81717D8 - - thumb_func_start sub_81717F8 -sub_81717F8: @ 81717F8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r6, r0, 0 - ldr r7, =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 _0817183C - movs r0, 0xFE - 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_81719EC - b _081718BC - .pool -_0817183C: - cmp r1, 0x3C - bne _0817185A - 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 _081718BC -_0817185A: - cmp r1, 0x5F - bne _08171880 - ldr r0, =gDoingBattleAnim - movs r1, 0 - strb r1, [r0] - movs r0, 0x1 - bl UpdateOamPriorityInAllHealthboxes - bl m4aMPlayAllStop - ldr r0, =0x00000213 - bl PlaySE - b _081718BC - .pool -_08171880: - ldr r0, =0x0000013b - cmp r1, r0 - bne _081718BC - ldr r5, =gSprites - ldr r4, =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, =sub_81718D8 - str r0, [r6, 0x1C] -_081718BC: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81717F8 - - thumb_func_start sub_81718D8 -sub_81718D8: @ 81718D8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08171944 - cmp r0, 0x1 - bgt _081718F0 - cmp r0, 0 - beq _081718F6 - b _0817198A -_081718F0: - cmp r0, 0x2 - beq _08171976 - b _0817198A -_081718F6: - 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, =0x00007fff - str r0, [sp] - adds r0, r1, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _08171982 - .pool -_08171944: - ldrh r0, [r4, 0x30] - adds r1, r0, 0x1 - strh r1, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - ble _081719B0 - 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 _081719B0 - b _08171982 -_08171976: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_08171982: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _081719B0 -_0817198A: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _081719B0 - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - strh r5, [r4, 0x2E] - ldr r0, =sub_81719C0 - str r0, [r4, 0x1C] -_081719B0: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81718D8 - - thumb_func_start sub_81719C0 -sub_81719C0: @ 81719C0 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _081719D8 - ldr r0, =0x0000ffff - strh r0, [r4, 0x2E] - b _081719E4 - .pool -_081719D8: - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite -_081719E4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81719C0 - - thumb_func_start sub_81719EC -sub_81719EC: @ 81719EC - 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 _08171A0C - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - b _08171A14 -_08171A0C: - movs r0, 0 - mov r8, r0 - movs r0, 0x1 - strb r0, [r1] -_08171A14: - movs r0, 0x4 - bl sub_8171D60 - movs r7, 0 - ldr r2, =gSprites - mov r9, r2 - movs r0, 0x1C - add r0, r9 - mov r10, r0 -_08171A26: - movs r2, 0x20 - ldrsh r1, [r6, r2] - movs r0, 0x22 - ldrsh r2, [r6, r0] - ldr r0, =gUnknown_085E5250 - mov r3, r8 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08171A82 - 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, =gUnknown_085E5088 - lsls r1, r7, 2 - adds r1, r0 - movs r0, 0 - ldrsb r0, [r1, r0] - ldrh r2, [r6, 0x20] - adds r0, r2 - strh r0, [r5, 0x32] - movs r0, 0x1 - ldrsb r0, [r1, r0] - ldrh r2, [r6, 0x22] - adds r0, r2 - strh r0, [r5, 0x36] - movs r0, 0x2 - ldrsb r0, [r1, r0] - strh r0, [r5, 0x38] - adds r0, r5, 0 - bl InitAnimArcTranslation - add r4, r10 - ldr r0, =sub_8171AAC - str r0, [r4] - ldr r0, =gUnknown_085E51B4 - ldrb r1, [r0, 0x4] - adds r0, r5, 0 - bl StartSpriteAnim -_08171A82: - adds r7, 0x1 - cmp r7, 0x2 - bls _08171A26 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81719EC - - thumb_func_start sub_8171AAC -sub_8171AAC: @ 8171AAC - 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 TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - beq _08171ADC - adds r0, r4, 0 - bl DestroySprite -_08171ADC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8171AAC - - thumb_func_start sub_8171AE4 -sub_8171AE4: @ 8171AE4 - 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, =sub_8171BAC - str r0, [r4, 0x1C] - ldr r0, =gLastUsedItem - ldrh r0, [r0] - bl ItemIdToBallId - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xB - bgt _08171B36 - cmp r5, 0 - blt _08171B36 - 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, =gBattleAnimTarget - ldrb r1, [r0] - movs r0, 0x1 - movs r2, 0xE - adds r3, r5, 0 - bl LaunchBallFadeMonTask -_08171B36: - ldr r6, =gSprites - ldr r5, =gBattlerSpriteIds - ldr r4, =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 - .pool - thumb_func_end sub_8171AE4 - - thumb_func_start sub_8171BAC -sub_8171BAC: @ 8171BAC - 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 _08171BCA - adds r2, r7, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_08171BCA: - ldr r4, =gSprites - ldr r3, =gBattlerSpriteIds - ldr r2, =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 _08171C04 - adds r0, r1, 0 - movs r1, 0 - bl StartSpriteAffineAnim - movs r5, 0x1 - b _08171C24 - .pool -_08171C04: - ldr r6, =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] -_08171C24: - adds r0, r7, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08171C8A - cmp r5, 0 - beq _08171C8A - ldr r4, =gSprites - ldr r3, =gBattlerSpriteIds - ldr r2, =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, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r1, [r0, 0x9] - lsls r1, 30 - adds r2, 0x3E - lsrs r1, 31 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - strh r5, [r7, 0x2E] - ldr r0, =sub_81719C0 - str r0, [r7, 0x1C] - ldr r0, =gDoingBattleAnim - strb r6, [r0] - movs r0, 0x1 - bl UpdateOamPriorityInAllHealthboxes -_08171C8A: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8171BAC - - thumb_func_start sub_8171CAC -sub_8171CAC: @ 8171CAC - 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, =sub_8171CE8 - movs r3, 0 - movs r1, 0x5 - adds r0, r2, 0 - adds r0, 0x38 -_08171CD0: - strh r3, [r0] - subs r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _08171CD0 - str r4, [r2, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8171CAC - - thumb_func_start sub_8171CE8 -sub_8171CE8: @ 8171CE8 - 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 _08171D3E - 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 _08171D52 -_08171D3E: - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, =sub_81719C0 - str r0, [r4, 0x1C] - ldr r1, =gDoingBattleAnim - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - bl UpdateOamPriorityInAllHealthboxes -_08171D52: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8171CE8 - - thumb_func_start sub_8171D60 -sub_8171D60: @ 8171D60 - push {r4,r5,lr} - lsls r0, 24 - ldr r1, =gUnknown_085E5094 - lsrs r5, r0, 21 - adds r4, r5, r1 - ldrh r0, [r4, 0x6] - bl GetSpriteTileStartByTag - lsls r0, 16 - ldr r1, =0xffff0000 - cmp r0, r1 - bne _08171D86 - adds r0, r4, 0 - bl LoadCompressedObjectPicUsingHeap - ldr r0, =gUnknown_085E50F4 - adds r0, r5, r0 - bl LoadCompressedObjectPaletteUsingHeap -_08171D86: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8171D60 - - thumb_func_start LaunchBallStarsTask -LaunchBallStarsTask: @ 8171D98 - 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_8171D60 - ldr r1, =gUnknown_085E51C0 - 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, =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 - .pool - thumb_func_end LaunchBallStarsTask - - thumb_func_start sub_8171E20 -sub_8171E20: @ 8171E20 - push {lr} - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08171E3E - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x8] - ldrb r0, [r1, 0xA] - adds r0, 0x1 - strb r0, [r1, 0xA] -_08171E3E: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8171E20 - - thumb_func_start sub_8171E50 -sub_8171E50: @ 8171E50 - 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, =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 _08171F48 - 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, =gUnknown_085E51F0 - adds r0, r4 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - cmp r0, 0x40 - beq _08171EEC - bl sub_8171E20 - mov r0, r10 - lsls r4, r0, 4 - add r4, r10 - lsls r4, 2 - ldr r5, =gSprites - adds r7, r4, r5 - ldr r0, =gUnknown_085E51B4 - ldr r1, [sp] - adds r0, r1, r0 - ldrb r1, [r0] - adds r0, r7, 0 - bl StartSpriteAnim - adds r5, 0x1C - adds r4, r5 - ldr r0, =sub_8171F68 - 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 _08171EE8 - subs r0, 0x8 - lsls r0, 24 - lsrs r0, 24 -_08171EE8: - lsls r0, 5 - strh r0, [r7, 0x2E] -_08171EEC: - ldr r0, =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 _08171F48 - ldr r0, =gMain - ldr r4, =0x00000439 - adds r0, r4 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08171F22 - ldr r0, =gSprites - mov r2, r10 - lsls r1, r2, 4 - add r1, r10 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_08171F22: - mov r0, r8 - bl DestroyTask - b _08171F58 - .pool -_08171F48: - 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] -_08171F58: - 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_8171E50 - - thumb_func_start sub_8171F68 -sub_8171F68: @ 8171F68 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1, 0x30] - movs r3, 0x30 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _08171F80 - ldr r0, =sub_8171F88 - str r0, [r1, 0x1C] - b _08171F84 - .pool -_08171F80: - subs r0, r2, 0x1 - strh r0, [r1, 0x30] -_08171F84: - pop {r0} - bx r0 - thumb_func_end sub_8171F68 - - thumb_func_start sub_8171F88 -sub_8171F88: @ 8171F88 - 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 _08171FBC - adds r0, r4, 0 - bl sub_8172944 -_08171FBC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8171F88 - - thumb_func_start sub_8171FC4 -sub_8171FC4: @ 8171FC4 - 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, =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, =gSprites - mov r10, r3 - mov r1, r8 - lsls r0, r1, 1 - add r0, r8 - lsls r0, 3 - str r0, [sp, 0x10] -_0817200A: - ldr r0, =gUnknown_085E51F0 - 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 _0817206A - bl sub_8171E20 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - mov r3, r10 - adds r5, r4, r3 - ldr r0, =gUnknown_085E51B4 - add r0, r8 - ldrb r1, [r0] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, =gSprites + 0x1C - adds r4, r0 - ldr r0, =sub_8172508 - 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] -_0817206A: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x7 - bls _0817200A - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08172092 - ldr r0, =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_08172092: - 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 - .pool - thumb_func_end sub_8171FC4 - - thumb_func_start sub_81720C8 -sub_81720C8: @ 81720C8 - 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, =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, =gSprites - mov r10, r3 - mov r1, r8 - lsls r0, r1, 1 - add r0, r8 - lsls r0, 3 - str r0, [sp, 0x10] -_0817210E: - ldr r0, =gUnknown_085E51F0 - 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 _0817216E - bl sub_8171E20 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - mov r3, r10 - adds r5, r4, r3 - ldr r0, =gUnknown_085E51B4 - add r0, r8 - ldrb r1, [r0] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, =gSprites + 0x1C - adds r4, r0 - ldr r0, =sub_8172508 - 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] -_0817216E: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x7 - bls _0817210E - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08172196 - ldr r0, =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_08172196: - 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 - .pool - thumb_func_end sub_81720C8 - - thumb_func_start sub_81721CC -sub_81721CC: @ 81721CC - 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, =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, =gSprites - mov r8, r3 - ldr r0, =gUnknown_085E51B4 - adds r1, r0 - mov r10, r1 -_08172212: - ldr r0, =gUnknown_085E51F0 - 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 _0817226E - bl sub_8171E20 - 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, =gSprites + 0x1C - adds r4, r0 - ldr r0, =sub_8172508 - 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] -_0817226E: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x7 - bls _08172212 - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08172296 - ldr r0, =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_08172296: - 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 - .pool - thumb_func_end sub_81721CC - - thumb_func_start sub_81722CC -sub_81722CC: @ 81722CC - 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, =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, =gSprites - mov r10, r3 - mov r1, r8 - lsls r0, r1, 1 - add r0, r8 - lsls r0, 3 - str r0, [sp, 0x10] -_08172312: - ldr r0, =gUnknown_085E51F0 - 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 _08172376 - bl sub_8171E20 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - mov r3, r10 - adds r5, r4, r3 - ldr r0, =gUnknown_085E51B4 - add r0, r8 - ldrb r1, [r0] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, =gSprites + 0x1C - adds r4, r0 - ldr r0, =sub_8172508 - 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] -_08172376: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x9 - bls _08172312 - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0817239E - ldr r0, =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_0817239E: - 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 - .pool - thumb_func_end sub_81722CC - - thumb_func_start sub_81723D4 -sub_81723D4: @ 81723D4 - 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, =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 _08172404 - subs r0, r1, 0x1 - strh r0, [r3, 0x16] - b _081724D6 - .pool -_08172404: - 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, =gSprites - mov r9, r3 - ldr r1, =gUnknown_085E51B4 - adds r0, r1 - mov r10, r0 -_08172430: - ldr r0, =gUnknown_085E51F0 - 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 _0817248C - bl sub_8171E20 - 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, =gSprites + 0x1C - adds r4, r0 - ldr r0, =sub_8172508 - 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] -_0817248C: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x7 - bls _08172430 - ldr r0, =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 _081724D6 - ldr r0, =gMain - ldr r4, =0x00000439 - adds r0, r4 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _081724D0 - ldr r0, =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_081724D0: - mov r0, r8 - bl DestroyTask -_081724D6: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81723D4 - - thumb_func_start sub_8172508 -sub_8172508: @ 8172508 - 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 _08172558 - adds r0, r4, 0 - bl sub_8172944 -_08172558: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8172508 - - thumb_func_start sub_8172560 -sub_8172560: @ 8172560 - 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, =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, =gSprites - mov r8, r3 - ldr r0, =gUnknown_085E51B4 - adds r1, r0 - mov r10, r1 -_081725A6: - ldr r0, =gUnknown_085E51F0 - 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 _081725FE - bl sub_8171E20 - 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, =gSprites + 0x1C - adds r4, r0 - ldr r0, =sub_817265C - 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] -_081725FE: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0xB - bls _081725A6 - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08172626 - ldr r0, =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_08172626: - 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 - .pool - thumb_func_end sub_8172560 - - thumb_func_start sub_817265C -sub_817265C: @ 817265C - 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 _081726B4 - adds r0, r5, 0 - bl sub_8172944 -_081726B4: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_817265C - - thumb_func_start sub_81726BC -sub_81726BC: @ 81726BC - 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, =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] -_08172700: - movs r7, 0 - movs r2, 0x1 - add r2, r8 - mov r10, r2 -_08172708: - ldr r0, =gUnknown_085E51F0 - 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 _08172790 - bl sub_8171E20 - lsls r4, r6, 4 - adds r4, r6 - lsls r4, 2 - ldr r0, =gSprites - adds r5, r4, r0 - ldr r0, =gUnknown_085E51B4 - add r0, r9 - ldrb r1, [r0] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r1, =gSprites + 0x1C - adds r4, r1 - ldr r0, =sub_8172508 - 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 _08172788 - movs r0, 0x2 - strh r0, [r5, 0x38] - movs r0, 0x1 - b _0817278E - .pool -_08172788: - movs r0, 0x1 - strh r0, [r5, 0x38] - movs r0, 0x2 -_0817278E: - strh r0, [r5, 0x3A] -_08172790: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x7 - bls _08172708 - mov r1, r10 - lsls r0, r1, 24 - lsrs r0, 24 - mov r8, r0 - cmp r0, 0x1 - bls _08172700 - ldr r0, =gMain - ldr r2, =0x00000439 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _081727C4 - ldr r0, =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_081727C4: - 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 - .pool - thumb_func_end sub_81726BC - - thumb_func_start sub_81727E8 -sub_81727E8: @ 81727E8 - 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, =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, =gSprites - mov r8, r3 - ldr r0, =gUnknown_085E51B4 - adds r1, r0 - mov r10, r1 -_0817282E: - ldr r0, =gUnknown_085E51F0 - 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 _08172880 - bl sub_8171E20 - 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, =gSprites + 0x1C - adds r4, r0 - ldr r0, =sub_81728E0 - 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] -_08172880: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x7 - bls _0817282E - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _081728A8 - ldr r0, =gSprites - lsls r1, r6, 4 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x3C] -_081728A8: - 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 - .pool - thumb_func_end sub_81727E8 - - thumb_func_start sub_81728E0 -sub_81728E0: @ 81728E0 - 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 _0817293C - adds r0, r5, 0 - bl sub_8172944 -_0817293C: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_81728E0 - - thumb_func_start sub_8172944 -sub_8172944: @ 8172944 - push {r4-r7,lr} - adds r7, r0, 0 - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08172970 - movs r1, 0x3C - ldrsh r0, [r7, r1] - cmp r0, 0x1 - bne _081729CA - adds r0, r7, 0 - bl DestroySpriteAndFreeResources - b _081729E2 - .pool -_08172970: - ldr r2, =gBattleSpritesDataPtr - ldr r0, [r2] - ldr r1, [r0, 0x8] - ldrb r0, [r1, 0xA] - subs r0, 0x1 - strb r0, [r1, 0xA] - ldr r0, [r2] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0xA] - cmp r0, 0 - bne _081729DC - movs r4, 0 - ldr r5, =gUnknown_085E51C0 - b _08172998 - .pool -_08172994: - adds r5, 0x4 - adds r4, 0x1 -_08172998: - cmp r4, 0xB - bgt _081729AA - ldr r0, [r5] - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08172994 -_081729AA: - cmp r4, 0xC - bne _081729CA - movs r6, 0 - ldr r5, =gUnknown_085E5094 - ldr r4, =gUnknown_085E50F4 -_081729B4: - 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 _081729B4 -_081729CA: - adds r0, r7, 0 - bl DestroySprite - b _081729E2 - .pool -_081729DC: - adds r0, r7, 0 - bl DestroySprite -_081729E2: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8172944 - - thumb_func_start LaunchBallFadeMonTask -LaunchBallFadeMonTask: @ 81729E8 - 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, =sub_8172AB0 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, =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 _08172A58 - lsls r0, r6, 20 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r0, 16 - ldr r2, =gUnknown_085E5310 - 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 _08172A7E - .pool -_08172A58: - lsls r0, r6, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r0, 16 - ldr r2, =gUnknown_085E5310 - 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, =0x0000ffff - strh r0, [r5, 0xA] - ldr r0, =sub_8172B40 - str r0, [r5] -_08172A7E: - ldr r0, =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 - .pool - thumb_func_end LaunchBallFadeMonTask - - thumb_func_start sub_8172AB0 -sub_8172AB0: @ 8172AB0 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, =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 _08172B08 - 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, =gUnknown_085E5310 - 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 _08172B30 - .pool -_08172B08: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08172B30 - ldrh r0, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - lsls r1, 16 - orrs r0, r1 - ldr r1, =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - adds r0, r5, 0 - bl DestroyTask -_08172B30: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8172AB0 - - thumb_func_start sub_8172B40 -sub_8172B40: @ 8172B40 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08172B78 - ldr r0, =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, =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, =sub_8172B90 - str r0, [r4] -_08172B78: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8172B40 - - thumb_func_start sub_8172B90 -sub_8172B90: @ 8172B90 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, =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 _08172BE4 - 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, =gUnknown_085E5310 - 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 _08172BEA - .pool -_08172BE4: - adds r0, r2, 0 - bl DestroyTask -_08172BEA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8172B90 - - thumb_func_start sub_8172BF0 -sub_8172BF0: @ 8172BF0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0 - mov r8, r0 - ldr r0, =gBattlerSpriteIds - ldr r3, =gBattleAnimAttacker - ldrb r2, [r3] - adds r0, r2, r0 - ldrb r6, [r0] - ldr r1, =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 _08172CC8 - cmp r0, 0x1 - bgt _08172C30 - cmp r0, 0 - beq _08172C36 - b _08172D8A - .pool -_08172C30: - cmp r0, 0x2 - beq _08172CDA - b _08172D8A -_08172C36: - ldr r0, =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 _08172C78 - ldr r2, =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 _08172C90 - .pool -_08172C78: - ldr r3, =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 -_08172C90: - ldr r1, =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 _08172D8A - ldrh r0, [r3, 0x1C] - adds r0, 0x1 - strh r0, [r3, 0x1C] - b _08172D8A - .pool -_08172CC8: - 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 _08172D8A -_08172CDA: - 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 _08172D10 - ldr r0, =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 _08172D28 - .pool -_08172D10: - ldr r0, =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 -_08172D28: - ldr r1, =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0, 0x8] - strh r1, [r0, 0x8] - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _08172D68 - ldr r0, =gSprites - adds r1, r4, r6 - lsls r1, 2 - adds r1, r0 - movs r4, 0x24 - ldrsh r0, [r1, r4] - cmp r0, 0 - bgt _08172D7E - movs r0, 0 - strh r0, [r1, 0x24] - b _08172D84 - .pool -_08172D68: - ldr r0, =gSprites - adds r1, r4, r6 - lsls r1, 2 - adds r1, r0 - movs r3, 0x24 - ldrsh r0, [r1, r3] - cmp r0, 0 - blt _08172D7E - strh r2, [r1, 0x24] - movs r4, 0x1 - mov r8, r4 -_08172D7E: - mov r0, r8 - cmp r0, 0 - beq _08172D8A -_08172D84: - adds r0, r7, 0 - bl DestroyAnimVisualTask -_08172D8A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8172BF0 - - thumb_func_start sub_8172D98 -sub_8172D98: @ 8172D98 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =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 _08172E14 - cmp r0, 0x1 - bgt _08172DC0 - cmp r0, 0 - beq _08172DC6 - b _08172E84 - .pool -_08172DC0: - cmp r0, 0x2 - beq _08172E4E - b _08172E84 -_08172DC6: - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80A8364 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08172DE8 - ldr r1, =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - b _08172DF0 - .pool -_08172DE8: - ldr r1, =0x00003f44 - movs r0, 0x50 - bl SetGpuReg -_08172DF0: - movs r0, 0x52 - movs r1, 0x10 - bl SetGpuReg - ldr r0, =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 _08172E84 - .pool -_08172E14: - ldrh r0, [r4, 0xA] - adds r1, r0, 0x1 - strh r1, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _08172E84 - 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 _08172E84 - ldrh r0, [r4, 0x26] - adds r0, 0x1 - strh r0, [r4, 0x26] - b _08172E84 -_08172E4E: - ldr r1, =gBattlerSpriteIds - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - adds r0, r1 - ldrb r1, [r0] - ldr r2, =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, =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 -_08172E84: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8172D98 - - thumb_func_start sub_8172E9C -sub_8172E9C: @ 8172E9C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, =gBattleAnimArgs - ldr r1, =gBattleSpritesDataPtr - ldr r2, [r1] - ldr r1, =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 - .pool - thumb_func_end sub_8172E9C - - thumb_func_start sub_8172ED0 -sub_8172ED0: @ 8172ED0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gBattleAnimTarget - ldr r1, =gEffectBattler - ldrb r1, [r1] - strb r1, [r2] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .pool - thumb_func_end sub_8172ED0 - - thumb_func_start sub_8172EF0 -sub_8172EF0: @ 8172EF0 - 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, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - adds r5, r0, 0 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r4, r0, 0 - adds r0, r6, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08172FC8 - lsrs r0, r5, 16 - ldr r7, =0x0000ffff - ands r5, r7 - eors r0, r5 - lsrs r1, r4, 16 - eors r0, r1 - ands r4, r7 - eors r0, r4 - cmp r0, 0x7 - bhi _08172F4E - movs r0, 0x1 - mov r8, r0 -_08172F4E: - mov r0, r8 - cmp r0, 0 - beq _08172FC8 - ldr r0, =0x000027f9 - bl GetSpriteTileStartByTag - lsls r0, 16 - lsrs r0, 16 - cmp r0, r7 - bne _08172F6E - ldr r0, =gBattleAnimPicTable + 0x748 - bl LoadCompressedObjectPicUsingHeap - ldr r0, =gBattleAnimPaletteTable + 0x748 - bl LoadCompressedObjectPaletteUsingHeap -_08172F6E: - ldr r5, =sub_8172FEC - 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, =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 _08172FDE - .pool -_08172FC8: - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x1] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0, 0x1] -_08172FDE: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8172EF0 - - thumb_func_start sub_8172FEC -sub_8172FEC: @ 8172FEC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, =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 _08173018 - adds r0, r1, 0x1 - strh r0, [r4, 0x22] - b _08173190 - .pool -_08173018: - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r0, [r0, 0xA] - cmp r0, 0 - beq _08173026 - b _08173190 -_08173026: - 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 _0817303A - b _08173190 -_0817303A: - ldrb r0, [r4, 0x8] - mov r8, r0 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r8 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r2, r0, 24 - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08173074 - ldr r0, =gUnknown_085CE388 - adds r1, r5, 0 - movs r3, 0x5 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - b _081730D6 - .pool -_08173074: - cmp r0, 0 - blt _081730A8 - cmp r0, 0x3 - bgt _081730A8 - ldr r0, =gUnknown_085CE3A0 - adds r1, r5, 0 - movs r3, 0x5 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =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 _081730C8 - .pool -_081730A8: - ldr r0, =gUnknown_085CE3A0 - adds r1, r5, 0 - movs r3, 0x5 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =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 -_081730C8: - ldr r4, =0x000003ff - adds r0, r4, 0 - ands r1, r0 - ldr r0, =0xfffffc00 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, 0x4] -_081730D6: - ldr r2, =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 _08173118 - ldr r1, =gSprites - lsls r2, r5, 4 - adds r0, r2, r5 - lsls r0, 2 - adds r1, 0x1C - adds r0, r1 - ldr r1, =sub_81731FC - str r1, [r0] - adds r4, r2, 0 - b _08173160 - .pool -_08173118: - ldr r3, =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, =sub_8173250 - str r2, [r0] - adds r1, r3 - ldr r0, =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 _08173160 - mov r0, r8 - bl GetBattlerSide - lsls r0, 24 - movs r1, 0x3F - cmp r0, 0 - bne _08173156 - movs r1, 0xC0 -_08173156: - lsls r1, 24 - asrs r1, 24 - movs r0, 0x66 - bl PlaySE12WithPanning -_08173160: - ldr r1, =gSprites - adds r0, r4, r5 - lsls r0, 2 - adds r0, r1 - strh r7, [r0, 0x2E] - ldr r1, =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 _08173184 - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] -_08173184: - movs r4, 0x1E - ldrsh r0, [r1, r4] - cmp r0, 0x5 - bne _08173190 - ldr r0, =sub_81731B0 - str r0, [r1] -_08173190: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8172FEC - - thumb_func_start sub_81731B0 -sub_81731B0: @ 81731B0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - adds r3, r0, 0 - ldr r1, =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 _081731F0 - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0x1 - bne _081731EA - ldrb r1, [r1, 0x8] - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x1] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0, 0x1] -_081731EA: - adds r0, r3, 0 - bl DestroyTask -_081731F0: - pop {r0} - bx r0 - .pool - thumb_func_end sub_81731B0 - - thumb_func_start sub_81731FC -sub_81731FC: @ 81731FC - 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 _08173246 - ldr r2, =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 -_08173246: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81731FC - - thumb_func_start sub_8173250 -sub_8173250: @ 8173250 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0x3 - bgt _08173264 - adds r0, r1, 0x1 - strh r0, [r4, 0x30] - b _081732A6 -_08173264: - 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 _081732A6 - ldr r2, =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 -_081732A6: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8173250 - - thumb_func_start sub_81732B0 -sub_81732B0: @ 81732B0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =gBattleAnimPicTable + 0x868 - bl LoadCompressedObjectPicUsingHeap - ldr r0, =gBattleAnimPaletteTable + 0x868 - bl LoadCompressedObjectPaletteUsingHeap - ldr r0, =0x0000281d - bl IndexOfSpritePaletteTag - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81732B0 - - thumb_func_start sub_81732E4 -sub_81732E4: @ 81732E4 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, =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 - .pool - thumb_func_end sub_81732E4 - - thumb_func_start sub_817330C -sub_817330C: @ 817330C - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0 - bl InitAnimSpritePos - movs r0, 0x1E - strh r0, [r4, 0x2E] - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r5, =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r5, 0x4] - adds r0, r1 - strh r0, [r4, 0x32] - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x6] - adds r0, r5 - strh r0, [r4, 0x36] - ldr r0, =0x0000ffe0 - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl InitAnimArcTranslation - ldr r2, =gSprites - ldr r1, =gBattlerSpriteIds - ldr r0, =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, =sub_8039E84 - str r1, [r0] - ldr r0, =sub_817339C - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_817330C - - thumb_func_start sub_817339C -sub_817339C: @ 817339C - push {lr} - adds r3, r0, 0 - ldr r2, =gSprites - ldr r1, =gBattlerSpriteIds - ldr r0, =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 _081733C0 - ldr r0, =sub_81733D4 - str r0, [r3, 0x1C] -_081733C0: - pop {r0} - bx r0 - .pool - thumb_func_end sub_817339C - - thumb_func_start sub_81733D4 -sub_81733D4: @ 81733D4 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - beq _081733F6 - 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, =sub_8173400 - str r0, [r4, 0x1C] -_081733F6: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81733D4 - - thumb_func_start sub_8173400 -sub_8173400: @ 8173400 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, =gSprites - ldr r3, =gBattlerSpriteIds - ldr r2, =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 _08173448 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - ble _08173448 - 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 -_08173448: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8173400 - - thumb_func_start sub_817345C -sub_817345C: @ 817345C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _08173478 - cmp r0, 0x1 - beq _0817348C - b _081734A0 - .pool -_08173478: - movs r0, 0 - bl GetBattlerAtPosition - ldr r1, =gBattleAnimAttacker - strb r0, [r1] - movs r0, 0x1 - b _08173498 - .pool -_0817348C: - movs r0, 0x1 - bl GetBattlerAtPosition - ldr r1, =gBattleAnimAttacker - strb r0, [r1] - movs r0, 0 -_08173498: - bl GetBattlerAtPosition - ldr r1, =gBattleAnimTarget - strb r0, [r1] -_081734A0: - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_817345C - - thumb_func_start AnimTask_GetTrappedMoveAnimId -AnimTask_GetTrappedMoveAnimId: @ 81734B4 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrh r1, [r0] - cmp r1, 0x53 - bne _081734D4 - ldr r1, =gBattleAnimArgs - movs r0, 0x1 - b _0817350C - .pool -_081734D4: - cmp r1, 0xFA - bne _081734E4 - ldr r1, =gBattleAnimArgs - movs r0, 0x2 - b _0817350C - .pool -_081734E4: - cmp r1, 0x80 - bne _081734F4 - ldr r1, =gBattleAnimArgs - movs r0, 0x3 - b _0817350C - .pool -_081734F4: - movs r0, 0xA4 - lsls r0, 1 - cmp r1, r0 - bne _08173508 - ldr r1, =gBattleAnimArgs - movs r0, 0x4 - b _0817350C - .pool -_08173508: - ldr r1, =gBattleAnimArgs - movs r0, 0 -_0817350C: - strh r0, [r1] - adds r0, r2, 0 - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .pool - thumb_func_end AnimTask_GetTrappedMoveAnimId - - thumb_func_start sub_817351C -sub_817351C: @ 817351C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, =gBattleAnimAttacker - ldr r1, =gBattleSpritesDataPtr - ldr r2, [r1] - ldr r1, [r2, 0x8] - ldrh r1, [r1] - strb r1, [r3] - ldr r3, =gBattleAnimTarget - ldr r1, [r2, 0x8] - ldrh r1, [r1] - lsrs r1, 8 - strb r1, [r3] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .pool - thumb_func_end sub_817351C - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_effects_1.s b/asm/battle_anim_effects_1.s deleted file mode 100644 index 910b09b8c..000000000 --- a/asm/battle_anim_effects_1.s +++ /dev/null @@ -1,9550 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80FE840 -sub_80FE840: @ 80FE840 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, =gBattleAnimArgs - ldrh r0, [r5] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x30] - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080FE87C - ldrh r0, [r5, 0x8] - negs r0, r0 - b _080FE87E - .pool -_080FE87C: - ldrh r0, [r5, 0x8] -_080FE87E: - strh r0, [r4, 0x34] - ldr r0, =gBattleAnimArgs - ldrh r0, [r0, 0xA] - strh r0, [r4, 0x36] - ldr r0, =sub_80FE898 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FE840 - - thumb_func_start sub_80FE898 -sub_80FE898: @ 80FE898 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080FE8D4 - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x32] - lsls r0, r1, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r1, r0 - strh r1, [r4, 0x32] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r2, 0x34 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x38] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080FE8DA -_080FE8D4: - adds r0, r4, 0 - bl DestroyAnimSprite -_080FE8DA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FE898 - - thumb_func_start sub_80FE8E0 -sub_80FE8E0: @ 80FE8E0 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitAnimSpritePos - ldr r0, =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x2E] - ldr r5, =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, =StartAnimLinearTranslation - str r0, [r4, 0x1C] - ldr r1, =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FE8E0 - - thumb_func_start sub_80FE930 -sub_80FE930: @ 80FE930 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitAnimSpritePos - ldr r5, =gBattleAnimArgs - ldrb r1, [r5, 0x6] - adds r0, r4, 0 - bl StartSpriteAnim - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - ldr r5, =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, =StartAnimLinearTranslation - str r0, [r4, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FE930 - - thumb_func_start sub_80FE988 -sub_80FE988: @ 80FE988 - push {r4-r6,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitAnimSpritePos - ldr r6, =gBattleAnimArgs - ldrh r0, [r6, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldr r5, =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl InitAnimLinearTranslation - ldrh r0, [r6, 0x6] - strh r0, [r4, 0x38] - ldr r1, =sub_80FE9E4 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FE988 - - thumb_func_start sub_80FE9E4 -sub_80FE9E4: @ 80FE9E4 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimLinear - lsls r0, 24 - cmp r0, 0 - beq _080FE9FA - adds r0, r4, 0 - bl DestroySprite - b _080FEA4E -_080FE9FA: - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x7F - ble _080FEA14 - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl sub_80A82E4 - adds r0, 0x1 - b _080FEA1E - .pool -_080FEA14: - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl sub_80A82E4 - adds r0, 0x6 -_080FEA1E: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x5 - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xE - bl Cos - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0xF - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] -_080FEA4E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FE9E4 - - thumb_func_start sub_80FEA58 -sub_80FEA58: @ 80FEA58 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - subs r0, 0x1 - movs r2, 0 - strh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080FEAB2 - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - movs r0, 0x6 - strh r0, [r5, 0x8] - ldr r1, =gBattleAnimArgs - movs r0, 0xF - strh r0, [r1] - strh r2, [r1, 0x2] - movs r0, 0x50 - strh r0, [r1, 0x4] - strh r2, [r1, 0x6] - ldr r4, =gUnknown_08592210 - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl sub_80A82E4 - adds r3, r0, 0 - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - bl CreateSpriteAndAnimate -_080FEAB2: - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0xF - bne _080FEAC0 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080FEAC0: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FEA58 - - thumb_func_start sub_80FEAD8 -sub_80FEAD8: @ 80FEAD8 - push {r4-r6,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80A6980 - ldr r6, =gBattleAnimArgs - ldrh r0, [r6, 0x6] - strh r0, [r4, 0x2E] - ldr r5, =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldrh r0, [r6, 0x4] - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl InitAnimArcTranslation - ldr r0, =sub_80FEB28 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FEAD8 - - thumb_func_start sub_80FEB28 -sub_80FEB28: @ 80FEB28 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - beq _080FEB3C - adds r0, r4, 0 - bl DestroyAnimSprite -_080FEB3C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FEB28 - - thumb_func_start sub_80FEB44 -sub_80FEB44: @ 80FEB44 - push {r4,r5,lr} - adds r5, r0, 0 - bl Random2 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x7 - ands r1, r0 - adds r0, r5, 0 - bl StartSpriteAnim - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080FEB90 - ldrh r0, [r5, 0x20] - subs r0, 0x14 - b _080FEB94 - .pool -_080FEB90: - ldrh r0, [r5, 0x20] - adds r0, 0x14 -_080FEB94: - strh r0, [r5, 0x20] - bl Random2 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1F - ands r0, r1 - adds r0, 0x40 - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl sub_80A7160 - bl Random2 - movs r1, 0xFF - ands r1, r0 - strh r1, [r5, 0x38] - adds r0, r5, 0 - adds r0, 0x43 - ldrb r0, [r0] - strh r0, [r5, 0x3A] - ldr r1, =sub_80FEBFC - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FEB44 - - thumb_func_start sub_80FEBFC -sub_80FEBFC: @ 80FEBFC - push {r4,lr} - adds r4, r0, 0 - bl sub_80A70E8 - lsls r0, 24 - cmp r0, 0 - beq _080FEC12 - adds r0, r4, 0 - bl DestroyAnimSprite - b _080FEC42 -_080FEC12: - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xC - bl Cos - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x7E - bgt _080FEC2E - ldrh r0, [r4, 0x3A] - b _080FEC32 -_080FEC2E: - ldrh r0, [r4, 0x3A] - adds r0, 0x1 -_080FEC32: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrh r0, [r4, 0x38] - adds r0, 0x18 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] -_080FEC42: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FEBFC - - thumb_func_start sub_80FEC48 -sub_80FEC48: @ 80FEC48 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x1 - bl InitAnimSpritePos - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080FEC68 - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080FEC68: - ldr r4, =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x2E] - ldr r5, =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r6, 0x32] - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - 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 InitAnimArcTranslation - ldr r0, =sub_80FECB8 - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FEC48 - - thumb_func_start sub_80FECB8 -sub_80FECB8: @ 80FECB8 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - beq _080FECE2 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r0, 0xA - strh r0, [r4, 0x2E] - ldr r0, =WaitAnimForDuration - str r0, [r4, 0x1C] - ldr r1, =sub_80FECF0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 -_080FECE2: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FECB8 - - thumb_func_start sub_80FECF0 -sub_80FECF0: @ 80FECF0 - push {r4,lr} - adds r4, r0, 0 - 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 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0x3C - strh r0, [r4, 0x2E] - ldr r0, =WaitAnimForDuration - str r0, [r4, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FECF0 - - thumb_func_start sub_80FED28 -sub_80FED28: @ 80FED28 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80A6980 - ldr r5, =gBattleAnimArgs - ldrb r1, [r5, 0x8] - adds r0, r4, 0 - bl StartSpriteAnim - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _080FED52 - ldrb r0, [r4, 0x1] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4, 0x1] -_080FED52: - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x30] - ldr r1, =sub_80FED74 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FED28 - - thumb_func_start sub_80FED74 -sub_80FED74: @ 80FED74 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x20 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x3 - negs r1, r1 - bl Cos - ldrh r1, [r4, 0x32] - adds r1, 0x18 - strh r1, [r4, 0x32] - lsls r1, 16 - asrs r1, 24 - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7F - bhi _080FEDC8 - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl sub_80A8328 - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - b _080FEDEC - .pool -_080FEDC8: - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl sub_80A8328 - adds r0, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _080FEDDC - movs r2, 0x3 -_080FEDDC: - movs r0, 0x3 - ands r2, r0 - lsls r2, 2 - ldrb r1, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - orrs r0, r2 -_080FEDEC: - strb r0, [r4, 0x5] - ldrh r0, [r4, 0x30] - adds r0, 0x2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080FEE10 - adds r0, r4, 0 - bl DestroyAnimSprite -_080FEE10: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FED74 - - thumb_func_start sub_80FEE1C -sub_80FEE1C: @ 80FEE1C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080FEE36 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _080FEE3E -_080FEE36: - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080FEE70 -_080FEE3E: - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl sub_80A8364 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FEE60 - movs r0, 0x2 - movs r1, 0x4 - movs r2, 0x3 - bl SetAnimBgAttribute - b _080FEE6A - .pool -_080FEE60: - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute -_080FEE6A: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080FEE70: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FEE1C - - thumb_func_start sub_80FEE78 -sub_80FEE78: @ 80FEE78 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0 - bl InitAnimSpritePos - ldr r5, =gBattleAnimArgs - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x4] - adds r0, r5 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl InitAnimLinearTranslation - movs r0, 0x40 - strh r0, [r4, 0x38] - ldr r1, =sub_80FEECC - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FEE78 - - thumb_func_start sub_80FEECC -sub_80FEECC: @ 80FEECC - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimLinear - lsls r0, 24 - cmp r0, 0 - bne _080FEF38 - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x20 - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x5 - negs r1, r1 - bl Cos - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7F - bhi _080FEF18 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80A82E4 - subs r0, 0x1 - b _080FEF22 - .pool -_080FEF18: - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80A82E4 - adds r0, 0x1 -_080FEF22: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrh r0, [r4, 0x38] - adds r0, 0x5 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080FEF3E - .pool -_080FEF38: - adds r0, r4, 0 - bl DestroyAnimSprite -_080FEF3E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FEECC - - thumb_func_start sub_80FEF44 -sub_80FEF44: @ 80FEF44 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitAnimSpritePos - ldr r5, =gBattleAnimArgs - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x4] - adds r0, r5 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl InitAnimLinearTranslation - movs r0, 0x40 - strh r0, [r4, 0x38] - ldr r1, =sub_80FEF98 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FEF44 - - thumb_func_start sub_80FEF98 -sub_80FEF98: @ 80FEF98 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimLinear - lsls r0, 24 - cmp r0, 0 - bne _080FEFF0 - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - ldrh r1, [r4, 0x38] - adds r0, r1, 0 - subs r0, 0x3B - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x4 - bls _080FEFD0 - adds r0, r1, 0 - subs r0, 0xBB - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x4 - bhi _080FEFE4 -_080FEFD0: - ldrb r2, [r4, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x8 - eors r1, r0 - lsls r1, 1 - subs r0, 0x47 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x3] -_080FEFE4: - ldrh r0, [r4, 0x38] - adds r0, 0x5 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080FEFF6 -_080FEFF0: - adds r0, r4, 0 - bl DestroyAnimSprite -_080FEFF6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FEF98 - - thumb_func_start sub_80FEFFC -sub_80FEFFC: @ 80FEFFC - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r1, =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x32] - ldr r0, =sub_80FF044 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FEFFC - - thumb_func_start sub_80FF044 -sub_80FF044: @ 80FF044 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x32] - movs r2, 0x32 - ldrsh r3, [r1, r2] - cmp r3, 0 - bne _080FF078 - ldrh r0, [r1, 0x30] - movs r2, 0x1 - ands r2, r0 - cmp r2, 0 - beq _080FF066 - movs r0, 0x80 - strh r0, [r1, 0x2E] - strh r3, [r1, 0x30] - strh r3, [r1, 0x32] - b _080FF06C -_080FF066: - strh r2, [r1, 0x2E] - strh r2, [r1, 0x30] - strh r2, [r1, 0x32] -_080FF06C: - ldr r0, =sub_80FF090 - str r0, [r1, 0x1C] - b _080FF08C - .pool -_080FF078: - subs r0, 0x1 - strh r0, [r1, 0x32] - ldrh r0, [r1, 0x2E] - ldrh r2, [r1, 0x20] - adds r0, r2 - strh r0, [r1, 0x20] - ldrh r0, [r1, 0x30] - ldrh r2, [r1, 0x22] - adds r0, r2 - strh r0, [r1, 0x22] -_080FF08C: - pop {r0} - bx r0 - thumb_func_end sub_80FF044 - - thumb_func_start sub_80FF090 -sub_80FF090: @ 80FF090 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080FF0B4 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x19 - bl Sin - negs r0, r0 - b _080FF0BE - .pool -_080FF0B4: - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x19 - bl Sin -_080FF0BE: - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x2E] - adds r0, 0x2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080FF0DE - ldrh r0, [r4, 0x26] - adds r0, 0x1 - strh r0, [r4, 0x26] -_080FF0DE: - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x50 - ble _080FF0EC - adds r0, r4, 0 - bl DestroyAnimSprite -_080FF0EC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FF090 - - thumb_func_start sub_80FF0F4 -sub_80FF0F4: @ 80FF0F4 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0x1 - bl InitAnimSpritePos - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080FF114 - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080FF114: - ldr r6, =gBattleAnimArgs - ldrh r0, [r6, 0x8] - strh r0, [r5, 0x2E] - movs r1, 0xC - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080FF154 - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x4] - adds r0, r1 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x6] - adds r0, r6 - b _080FF174 - .pool -_080FF154: - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - adds r2, r5, 0 - adds r2, 0x32 - adds r3, r5, 0 - adds r3, 0x36 - movs r1, 0x1 - bl SetAverageBattlerPositions - ldrh r0, [r6, 0x4] - ldrh r1, [r5, 0x32] - adds r0, r1 - strh r0, [r5, 0x32] - ldrh r0, [r6, 0x6] - ldrh r1, [r5, 0x36] - adds r0, r1 -_080FF174: - strh r0, [r5, 0x36] - ldr r0, =gBattleAnimArgs - ldrh r0, [r0, 0xA] - strh r0, [r5, 0x38] - adds r0, r5, 0 - bl InitAnimArcTranslation - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - adds r4, r0, 0 - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _080FF1AC - movs r0, 0x1 - b _080FF1AE - .pool -_080FF1AC: - movs r0, 0 -_080FF1AE: - strh r0, [r5, 0x2E] - ldr r0, =sub_80FF1C0 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FF0F4 - - thumb_func_start sub_80FF1C0 -sub_80FF1C0: @ 80FF1C0 - push {r4-r7,lr} - adds r6, r0, 0 - movs r7, 0 - ldrh r5, [r6, 0x2E] - ldrh r4, [r6, 0x3C] - movs r0, 0x1 - strh r0, [r6, 0x2E] - adds r0, r6, 0 - bl TranslateAnimArc - ldrh r0, [r6, 0x3C] - strh r5, [r6, 0x2E] - lsls r4, 16 - asrs r4, 16 - cmp r4, 0xC8 - ble _080FF1F2 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x37 - bgt _080FF1F2 - ldrh r0, [r6, 0x6] - cmp r0, 0 - bne _080FF1F8 - adds r0, 0x1 - strh r0, [r6, 0x6] -_080FF1F2: - ldrh r0, [r6, 0x6] - cmp r0, 0 - beq _080FF22A -_080FF1F8: - movs r1, 0x2E - ldrsh r0, [r6, r1] - cmp r0, 0 - beq _080FF22A - adds r3, r6, 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] - ldrh r0, [r6, 0x6] - adds r0, 0x1 - strh r0, [r6, 0x6] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1E - bne _080FF22A - movs r7, 0x1 -_080FF22A: - movs r2, 0x20 - ldrsh r0, [r6, r2] - movs r2, 0x24 - ldrsh r1, [r6, r2] - adds r0, r1 - adds r0, 0x10 - movs r1, 0x88 - lsls r1, 1 - cmp r0, r1 - bhi _080FF254 - movs r0, 0x22 - ldrsh r1, [r6, r0] - movs r2, 0x26 - ldrsh r0, [r6, r2] - adds r1, r0 - cmp r1, 0xA0 - bgt _080FF254 - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - bge _080FF256 -_080FF254: - movs r7, 0x1 -_080FF256: - cmp r7, 0 - beq _080FF260 - adds r0, r6, 0 - bl DestroyAnimSprite -_080FF260: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80FF1C0 - - thumb_func_start AnimMoveTwisterParticle -AnimMoveTwisterParticle: @ 80FF268 - push {r4,lr} - adds r4, r0, 0 - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FF28A - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - movs r1, 0x1 - bl SetAverageBattlerPositions -_080FF28A: - ldrh r0, [r4, 0x22] - adds r0, 0x20 - strh r0, [r4, 0x22] - ldr r1, =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x32] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x34] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x36] - ldr r0, =sub_80FF2BC - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end AnimMoveTwisterParticle - - thumb_func_start sub_80FF2BC -sub_80FF2BC: @ 80FF2BC - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0xFF - bne _080FF2D2 - ldrh r0, [r4, 0x22] - subs r0, 0x2 - strh r0, [r4, 0x22] - b _080FF2E0 -_080FF2D2: - cmp r0, 0 - ble _080FF2E0 - ldrh r0, [r4, 0x22] - subs r0, 0x2 - strh r0, [r4, 0x22] - subs r0, r1, 0x2 - strh r0, [r4, 0x30] -_080FF2E0: - ldrh r3, [r4, 0x32] - ldrh r5, [r4, 0x38] - adds r2, r3, r5 - strh r2, [r4, 0x38] - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r5, 0x36 - ldrsh r0, [r4, r5] - cmp r1, r0 - bge _080FF2F8 - adds r0, r2, r3 - strh r0, [r4, 0x38] -_080FF2F8: - ldrh r1, [r4, 0x38] - movs r0, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r2, 0x34 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - movs r5, 0x38 - ldrsh r0, [r4, r5] - movs r1, 0x5 - bl Sin - strh r0, [r4, 0x26] - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x7F - bgt _080FF338 - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl sub_80A8328 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - b _080FF346 - .pool -_080FF338: - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl sub_80A8328 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 -_080FF346: - movs r1, 0x3 - ands r0, r1 - lsls r0, 2 - ldrb r2, [r4, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x5] - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _080FF36A - adds r0, r4, 0 - bl DestroyAnimSprite -_080FF36A: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FF2BC - - thumb_func_start sub_80FF374 -sub_80FF374: @ 80FF374 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0 - bl sub_80A6980 - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r4, =gBattleAnimArgs - ldrb r1, [r4, 0x4] - adds r0, r5, 0 - bl StartSpriteAffineAnim - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x3A] - ldrh r0, [r4, 0x6] - strh r0, [r5, 0x3C] - ldr r0, =sub_80FF3B0 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FF374 - - thumb_func_start sub_80FF3B0 -sub_80FF3B0: @ 80FF3B0 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, =0x0000ffff - cmp r1, r0 - bne _080FF3DA - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - movs r0, 0x1 - bl GetAnimBattlerSpriteId - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0x2E] - ldr r0, =sub_80FF3EC - str r0, [r4, 0x1C] -_080FF3DA: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FF3B0 - - thumb_func_start sub_80FF3EC -sub_80FF3EC: @ 80FF3EC - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080FF404 - ldrh r0, [r4, 0x2E] - adds r0, 0xB - b _080FF408 -_080FF404: - ldrh r0, [r4, 0x2E] - subs r0, 0xB -_080FF408: - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _080FF424 - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x32] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x32] -_080FF424: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080FF452 - ldrh r0, [r4, 0x3C] - subs r0, 0x1 - strh r0, [r4, 0x3C] - lsls r0, 16 - cmp r0, 0 - ble _080FF44C - ldrh r1, [r4, 0x3A] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAffineAnim - b _080FF452 -_080FF44C: - adds r0, r4, 0 - bl DestroyAnimSprite -_080FF452: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FF3EC - - thumb_func_start sub_80FF458 -sub_80FF458: @ 80FF458 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, =gSprites - mov r10, r0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - mov r2, r10 - adds r7, r0, r2 - adds r0, r7, 0 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _080FF498 - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080FF51C - .pool -_080FF498: - adds r0, r1, 0 - movs r1, 0x1 - bl sub_80A7270 - ldr r0, =gTasks - lsls r6, r4, 2 - adds r6, r4 - lsls r6, 3 - adds r6, r0 - ldrb r0, [r7, 0x5] - lsls r0, 28 - lsrs r0, 30 - strh r0, [r6, 0x24] - ldr r0, =gBattleAnimTarget - mov r9, r0 - ldrb r0, [r0] - bl sub_80A8328 - movs r1, 0x3 - mov r8, r1 - mov r1, r8 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r7, 0x5] - movs r5, 0xD - negs r5, r5 - adds r0, r5, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r7, 0x5] - movs r0, 0x3 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r1, r0, 24 - lsls r4, r1, 4 - adds r4, r1 - lsls r4, 2 - add r4, r10 - ldrb r0, [r4, 0x5] - lsls r0, 28 - lsrs r0, 30 - strh r0, [r6, 0x26] - mov r2, r9 - ldrb r1, [r2] - movs r0, 0x2 - eors r0, r1 - bl sub_80A8328 - mov r1, r8 - ands r1, r0 - lsls r1, 2 - ldrb r0, [r4, 0x5] - ands r5, r0 - orrs r5, r1 - strb r5, [r4, 0x5] - ldr r1, =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r6, 0x8] - ldrh r0, [r1, 0x2] - strh r0, [r6, 0xA] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r6, 0x1E] - ldr r0, =sub_80FF53C - str r0, [r6] -_080FF51C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FF458 - - thumb_func_start sub_80FF53C -sub_80FF53C: @ 80FF53C - push {r4-r6,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r1 - ldrh r1, [r4, 0x8] - ldrh r0, [r4, 0x1C] - adds r1, r0 - strh r1, [r4, 0x1C] - ldr r2, =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r5, r0, r2 - lsls r1, 16 - asrs r1, 24 - strh r1, [r5, 0x24] - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080FF586 - ldrh r0, [r5, 0x24] - negs r0, r0 - strh r0, [r5, 0x24] -_080FF586: - ldrh r0, [r4, 0x1E] - adds r0, 0x10 - strh r0, [r4, 0x1E] - movs r0, 0x1E - ldrsh r2, [r4, r0] - adds r0, r6, 0 - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - adds r0, r6, 0 - bl sub_80A7E6C - ldrh r0, [r4, 0xA] - subs r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bne _080FF5B4 - strh r0, [r4, 0x8] - ldr r0, =sub_80FF5CC - str r0, [r4] -_080FF5B4: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FF53C - - thumb_func_start sub_80FF5CC -sub_80FF5CC: @ 80FF5CC - push {r4-r7,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, =0x0000ffff - cmp r1, r0 - bne _080FF660 - ldr r0, =gTasks - lsls r2, r3, 2 - adds r1, r2, r3 - lsls r1, 3 - adds r7, r1, r0 - movs r1, 0x8 - ldrsh r5, [r7, r1] - adds r4, r0, 0 - cmp r5, 0 - bne _080FF674 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_80A7344 - ldr r6, =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r6 - strh r5, [r1, 0x24] - strh r5, [r1, 0x26] - movs r5, 0x3 - ldrh r2, [r7, 0x24] - ands r2, r5 - lsls r2, 2 - ldrb r3, [r1, 0x5] - movs r4, 0xD - negs r4, r4 - adds r0, r4, 0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x5] - movs r0, 0x3 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrh r0, [r7, 0x26] - ands r0, r5 - lsls r0, 2 - ldrb r2, [r1, 0x5] - ands r4, r2 - orrs r4, r0 - strb r4, [r1, 0x5] - ldrh r0, [r7, 0x8] - adds r0, 0x1 - strh r0, [r7, 0x8] - b _080FF68E - .pool -_080FF660: - ldr r1, =gTasks - lsls r2, r3, 2 - adds r0, r2, r3 - lsls r0, 3 - adds r0, r1 - movs r4, 0x8 - ldrsh r0, [r0, r4] - adds r4, r1, 0 - cmp r0, 0 - beq _080FF68E -_080FF674: - adds r1, r2, r3 - lsls r1, 3 - adds r1, r4 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080FF68E - adds r0, r3, 0 - bl DestroyAnimVisualTask -_080FF68E: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FF5CC - - thumb_func_start sub_80FF698 -sub_80FF698: @ 80FF698 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080FF6AA - cmp r0, 0x1 - beq _080FF704 - b _080FF756 -_080FF6AA: - ldr r6, =gBattleAnimTarget - ldrb r0, [r6] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080FF6C2 - ldr r1, =gBattleAnimArgs - movs r2, 0 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1] -_080FF6C2: - ldrb r0, [r6] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r6] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x2] - adds r0, r4 - strh r0, [r5, 0x22] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _080FF756 - .pool -_080FF704: - adds r2, r5, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080FF756 - adds r0, r5, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnim - movs r0, 0x19 - strh r0, [r5, 0x2E] - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - ldr r0, =sub_80A70C0 - str r0, [r5, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 -_080FF756: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FF698 - - thumb_func_start sub_80FF768 -sub_80FF768: @ 80FF768 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080FF7D4 - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r4, =gBattleAnimArgs - ldrh r0, [r4] - strh r0, [r5, 0x24] - ldrh r0, [r4, 0x2] - strh r0, [r5, 0x26] - ldrb r0, [r4, 0x4] - adds r0, 0x1E - adds r1, r5, 0 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r4, 0x6] - adds r0, r5, 0 - bl StartSpriteAnim - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - movs r2, 0x22 - ldrsh r0, [r5, r2] - movs r2, 0x26 - ldrsh r1, [r5, r2] - adds r0, r1 - cmp r0, 0x78 - ble _080FF7D4 - ldrh r0, [r5, 0x22] - adds r1, r0, 0 - subs r1, 0x78 - ldrh r2, [r5, 0x26] - adds r0, r2 - adds r1, r0 - strh r1, [r5, 0x22] -_080FF7D4: - ldr r0, =sub_80FF8DC - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FF768 - - thumb_func_start sub_80FF7EC -sub_80FF7EC: @ 80FF7EC - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x4 - mov r9, r0 - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - mov r8, r0 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r6, =gBattleAnimTarget - ldrb r0, [r6] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r6] - movs r1, 0x3 - bl GetBattlerSpriteCoord - adds r2, r0, 0 - lsls r2, 24 - subs r4, r5 - lsls r4, 16 - lsrs r2, 24 - mov r1, r8 - subs r2, r1 - lsls r2, 16 - lsrs r2, 16 - lsrs r3, r4, 16 - mov r10, r3 - asrs r4, 16 - ldr r6, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - muls r0, r4 - movs r1, 0x64 - str r2, [sp] - bl __divsi3 - adds r5, r0 - mov r3, r9 - strh r5, [r3, 0x20] - ldr r2, [sp] - lsls r0, r2, 16 - asrs r0, 16 - movs r3, 0 - ldrsh r1, [r6, r3] - muls r0, r1 - movs r1, 0x64 - bl __divsi3 - add r8, r0 - mov r1, r8 - mov r0, r9 - strh r1, [r0, 0x22] - ldrh r0, [r6, 0x2] - mov r3, r9 - strh r0, [r3, 0x24] - ldrh r0, [r6, 0x4] - strh r0, [r3, 0x26] - ldrb r0, [r6, 0x6] - adds r0, 0x1E - mov r1, r9 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r6, 0x8] - mov r0, r9 - bl StartSpriteAnim - ldrh r0, [r6, 0xA] - mov r1, r9 - strh r0, [r1, 0x32] - ldr r0, =sub_80FF8DC - str r0, [r1, 0x1C] - ldr r1, =gUnknown_0203A0F8 - mov r3, r9 - ldrh r0, [r3, 0x20] - strh r0, [r1] - ldrh r0, [r3, 0x22] - strh r0, [r1, 0x2] - mov r0, r10 - strh r0, [r1, 0x4] - ldr r2, [sp] - strh r2, [r1, 0x6] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FF7EC - - thumb_func_start sub_80FF8DC -sub_80FF8DC: @ 80FF8DC - push {lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x2E] - adds r1, 0x1 - strh r1, [r3, 0x2E] - lsls r1, 16 - asrs r1, 16 - movs r2, 0x32 - ldrsh r0, [r3, r2] - subs r0, 0xA - cmp r1, r0 - ble _080FF91C - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - movs r2, 0x3E - adds r2, r3 - mov r12, r2 - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] -_080FF91C: - movs r2, 0x2E - ldrsh r1, [r3, r2] - movs r2, 0x32 - ldrsh r0, [r3, r2] - cmp r1, r0 - ble _080FF92E - adds r0, r3, 0 - bl DestroyAnimSprite -_080FF92E: - pop {r0} - bx r0 - thumb_func_end sub_80FF8DC - - thumb_func_start sub_80FF934 -sub_80FF934: @ 80FF934 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x2E - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080FF974 - ldr r5, =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, =gBattleAnimArgs - lsrs r0, 24 - ldrh r2, [r4] - adds r0, r2 - strh r0, [r6, 0x20] - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x22] - ldrh r0, [r4, 0x4] - strh r0, [r6, 0x30] - ldrh r0, [r4, 0x6] - strh r0, [r6, 0x32] - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x34] -_080FF974: - ldrh r0, [r6, 0x2E] - adds r0, 0x1 - strh r0, [r6, 0x2E] - ldrh r1, [r6, 0x30] - muls r0, r1 - strh r0, [r6, 0x24] - movs r2, 0x2E - ldrsh r1, [r6, r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - movs r1, 0xFF - ands r0, r1 - movs r2, 0x32 - ldrsh r1, [r6, r2] - bl Sin - strh r0, [r6, 0x26] - movs r0, 0x2E - ldrsh r1, [r6, r0] - movs r2, 0x34 - ldrsh r0, [r6, r2] - cmp r1, r0 - ble _080FF9AA - adds r0, r6, 0 - bl DestroyAnimSprite -_080FF9AA: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FF934 - - thumb_func_start sub_80FF9B8 -sub_80FF9B8: @ 80FF9B8 - push {r4,r5,lr} - movs r2, 0x20 - ldrsh r4, [r0, r2] - lsls r4, 8 - movs r3, 0x22 - ldrsh r2, [r0, r3] - orrs r4, r2 - movs r5, 0x3A - ldrsh r2, [r0, r5] - lsls r2, 8 - movs r5, 0x3C - ldrsh r3, [r0, r5] - orrs r2, r3 - lsls r1, 8 - strh r4, [r0, 0x38] - strh r2, [r0, 0x3A] - strh r1, [r0, 0x3C] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80FF9B8 - - thumb_func_start sub_80FF9E0 -sub_80FF9E0: @ 80FF9E0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r8, r0 - ldrh r0, [r0, 0x38] - lsrs r1, r0, 8 - mov r10, r1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - mov r1, r8 - ldrh r0, [r1, 0x3A] - lsrs r2, r0, 8 - lsls r0, 24 - lsrs r4, r0, 24 - ldrh r1, [r1, 0x3C] - lsls r0, r1, 16 - asrs r0, 24 - lsls r0, 16 - lsrs r6, r0, 16 - movs r3, 0xFF - ands r3, r1 - cmp r2, 0 - bne _080FFA1A - movs r2, 0x20 - negs r2, r2 - b _080FFA22 -_080FFA1A: - cmp r2, 0xFF - bne _080FFA22 - movs r2, 0x88 - lsls r2, 1 -_080FFA22: - mov r0, r9 - subs r4, r0 - lsls r4, 16 - lsrs r4, 16 - mov r1, r10 - subs r0, r2, r1 - lsls r5, r3, 16 - asrs r5, 16 - muls r0, r5 - lsls r1, r6, 16 - asrs r7, r1, 16 - adds r1, r7, 0 - bl __divsi3 - adds r6, r0, 0 - lsls r4, 16 - asrs r4, 16 - adds r0, r4, 0 - muls r0, r5 - adds r1, r7, 0 - bl __divsi3 - add r6, r10 - mov r1, r8 - strh r6, [r1, 0x20] - add r0, r9 - strh r0, [r1, 0x22] - adds r5, 0x1 - lsls r5, 16 - lsrs r3, r5, 16 - asrs r5, 16 - cmp r5, r7 - beq _080FFA74 - lsls r1, r7, 8 - lsls r0, r3, 16 - asrs r0, 16 - orrs r0, r1 - mov r1, r8 - strh r0, [r1, 0x3C] - movs r0, 0 - b _080FFA76 -_080FFA74: - movs r0, 0x1 -_080FFA76: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80FF9E0 - - thumb_func_start sub_80FFA84 -sub_80FFA84: @ 80FFA84 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0xA - bne _080FFA98 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080FFA98: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x32 - ble _080FFAAC - adds r0, r4, 0 - bl DestroyAnimSprite -_080FFAAC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FFA84 - - thumb_func_start sub_80FFAB4 -sub_80FFAB4: @ 80FFAB4 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - lsls r0, 7 - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __divsi3 - ldrh r1, [r4, 0x2E] - adds r1, r0 - movs r5, 0 - strh r1, [r4, 0x2E] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - ble _080FFADE - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - strh r5, [r4, 0x2E] -_080FFADE: - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - lsls r0, 16 - asrs r0, 16 - movs r1, 0x30 - ldrsh r2, [r4, r1] - lsls r2, 3 - movs r1, 0x1E - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Sin - strh r0, [r4, 0x26] - adds r0, r4, 0 - bl sub_80FF9E0 - lsls r0, 24 - cmp r0, 0 - beq _080FFB0E - strh r5, [r4, 0x26] - strh r5, [r4, 0x2E] - ldr r0, =sub_80FFA84 - str r0, [r4, 0x1C] -_080FFB0E: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FFAB4 - - thumb_func_start sub_80FFB18 -sub_80FFB18: @ 80FFB18 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0 - bl InitAnimSpritePos - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gBattleAnimAttacker - ldrb r1, [r0] - movs r0, 0x2 - eors r0, r1 - ldrb r4, [r4] - cmp r0, r4 - bne _080FFB68 - strh r6, [r5, 0x3A] - adds r0, r2, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x3C - bl sub_80FF9B8 - movs r0, 0x1 - b _080FFB7A - .pool -_080FFB68: - strh r6, [r5, 0x3A] - adds r0, r2, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x3C - bl sub_80FF9B8 - movs r0, 0x3 -_080FFB7A: - strh r0, [r5, 0x34] - movs r0, 0x3C - strh r0, [r5, 0x36] - ldr r0, =sub_80FFAB4 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FFB18 - - thumb_func_start sub_80FFB90 -sub_80FFB90: @ 80FFB90 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - lsls r0, 7 - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __divsi3 - ldrh r1, [r4, 0x2E] - adds r1, r0 - movs r5, 0 - strh r1, [r4, 0x2E] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - ble _080FFBBA - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - strh r5, [r4, 0x2E] -_080FFBBA: - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - lsls r0, 16 - asrs r0, 16 - movs r1, 0x30 - ldrsh r2, [r4, r1] - lsls r2, 3 - movs r1, 0x1E - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Sin - strh r0, [r4, 0x26] - adds r0, r4, 0 - bl sub_80FF9E0 - lsls r0, 24 - cmp r0, 0 - beq _080FFBEC - strh r5, [r4, 0x26] - strh r5, [r4, 0x2E] - adds r0, r4, 0 - bl DestroyAnimSprite -_080FFBEC: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80FFB90 - - thumb_func_start sub_80FFBF4 -sub_80FFBF4: @ 80FFBF4 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080FFC38 - strh r0, [r5, 0x3A] - adds r0, r6, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x28 - bl sub_80FF9B8 - movs r0, 0x3 - strh r0, [r5, 0x34] - movs r0, 0x3C - strh r0, [r5, 0x36] - ldr r0, =sub_80FFAB4 - b _080FFC62 - .pool -_080FFC38: - movs r0, 0xFF - strh r0, [r5, 0x3A] - adds r0, r6, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080FFC50 - movs r0, 0 - strh r0, [r5, 0x3A] -_080FFC50: - adds r0, r5, 0 - movs r1, 0x28 - bl sub_80FF9B8 - movs r0, 0x3 - strh r0, [r5, 0x34] - movs r0, 0x3C - strh r0, [r5, 0x36] - ldr r0, =sub_80FFB90 -_080FFC62: - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FFBF4 - - thumb_func_start sub_80FFC70 -sub_80FFC70: @ 80FFC70 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080FFC8A - adds r0, r4, 0 - movs r1, 0 - bl sub_80A6980 - ldr r0, =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x30] -_080FFC8A: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x30] - muls r0, r1 - strh r0, [r4, 0x26] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080FFCAA - adds r0, r4, 0 - bl DestroyAnimSprite -_080FFCAA: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FFC70 - - thumb_func_start sub_80FFCB4 -sub_80FFCB4: @ 80FFCB4 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0 - bl sub_80A6980 - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gBattleAnimTarget - ldrb r1, [r0] - movs r0, 0x2 - eors r0, r1 - ldrb r4, [r4] - cmp r0, r4 - bne _080FFD04 - strh r6, [r5, 0x3A] - adds r0, r2, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x3C - bl sub_80FF9B8 - movs r0, 0x1 - b _080FFD16 - .pool -_080FFD04: - strh r6, [r5, 0x3A] - adds r0, r2, 0 - adds r0, 0xA - strh r0, [r5, 0x3C] - adds r0, r5, 0 - movs r1, 0x3C - bl sub_80FF9B8 - movs r0, 0x3 -_080FFD16: - strh r0, [r5, 0x34] - movs r0, 0x3C - strh r0, [r5, 0x36] - ldr r0, =sub_80FFD2C - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FFCB4 - - thumb_func_start sub_80FFD2C -sub_80FFD2C: @ 80FFD2C - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - lsls r0, 7 - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __divsi3 - ldrh r1, [r4, 0x2E] - adds r1, r0 - movs r5, 0 - strh r1, [r4, 0x2E] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - ble _080FFD56 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - strh r5, [r4, 0x2E] -_080FFD56: - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - lsls r0, 16 - asrs r0, 16 - movs r1, 0x30 - ldrsh r2, [r4, r1] - lsls r2, 3 - movs r1, 0x1E - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Sin - strh r0, [r4, 0x26] - lsls r0, 16 - cmp r0, 0 - bne _080FFD8A - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x7D - bl PlaySE12WithPanning -_080FFD8A: - adds r0, r4, 0 - bl sub_80FF9E0 - lsls r0, 24 - cmp r0, 0 - beq _080FFDB2 - strh r5, [r4, 0x26] - strh r5, [r4, 0x2E] - ldr r0, =sub_80FFA84 - str r0, [r4, 0x1C] - movs r0, 0x40 - negs r0, r0 - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x7D - bl PlaySE12WithPanning -_080FFDB2: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FFD2C - - thumb_func_start sub_80FFDBC -sub_80FFDBC: @ 80FFDBC - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080FFE50 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080FFDE4 - ldr r0, =gBattleAnimArgs - ldrh r1, [r0, 0x2] - strh r1, [r4, 0x30] - movs r1, 0x78 - strh r1, [r4, 0x20] - adds r5, r0, 0 - b _080FFE06 - .pool -_080FFDE4: - ldr r0, =gBattleAnimArgs - movs r1, 0x2 - ldrsh r3, [r0, r1] - adds r1, r3, 0 - subs r1, 0x20 - adds r2, r1, 0 - adds r5, r0, 0 - cmp r1, 0 - bge _080FFDFA - adds r2, r3, 0 - adds r2, 0xDF -_080FFDFA: - asrs r0, r2, 8 - lsls r0, 8 - subs r0, r1, r0 - strh r0, [r4, 0x30] - movs r0, 0x46 - strh r0, [r4, 0x20] -_080FFE06: - ldrh r0, [r5] - strh r0, [r4, 0x22] - strh r0, [r4, 0x32] - movs r0, 0x14 - strh r0, [r4, 0x36] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x3C - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x14 - bl Sin - strh r0, [r4, 0x26] - ldr r0, =sub_80FFE58 - str r0, [r4, 0x1C] - ldrh r0, [r4, 0x30] - subs r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xBE - bhi _080FFE48 - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1F - b _080FFE4E - .pool -_080FFE48: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1D -_080FFE4E: - strb r0, [r1] -_080FFE50: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80FFDBC - - thumb_func_start sub_80FFE58 -sub_80FFE58: @ 80FFE58 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080FFE6A - cmp r0, 0x1 - beq _080FFE9A - b _080FFEBA -_080FFE6A: - ldrh r5, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0x4E - ble _080FFE82 - movs r0, 0x1 - strh r0, [r4, 0x34] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _080FFEBA -_080FFE82: - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl __divsi3 - adds r0, r5, r0 - strh r0, [r4, 0x32] - ldrh r1, [r4, 0x36] - adds r1, 0x3 - strh r1, [r4, 0x36] - strh r0, [r4, 0x22] - b _080FFEBA -_080FFE9A: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080FFEBA - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080FFEBA - movs r0, 0 - strh r0, [r4, 0x2E] - strh r0, [r4, 0x32] - ldr r0, =sub_80FFEC4 - str r0, [r4, 0x1C] -_080FFEBA: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FFE58 - - thumb_func_start sub_80FFEC4 -sub_80FFEC4: @ 80FFEC4 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r5, =gUnknown_08592700 - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 1 - adds r3, r0, r1 - adds r0, r5, 0x1 - adds r0, r3, r0 - ldrh r2, [r4, 0x32] - movs r6, 0x32 - ldrsh r1, [r4, r6] - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r1, r0 - bne _080FFF10 - adds r0, r5, 0x2 - adds r0, r3, r0 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x7F - bne _080FFEFC - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, =sub_80FFF7C - str r0, [r4, 0x1C] -_080FFEFC: - movs r0, 0 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080FFF76 - .pool -_080FFF10: - adds r0, r2, 0x1 - strh r0, [r4, 0x32] - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 1 - adds r0, r1 - adds r1, r0, r5 - movs r2, 0 - ldrsb r2, [r1, r2] - adds r1, r5, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - muls r0, r2 - ldrh r1, [r4, 0x30] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080FFF5E - ldrh r0, [r4, 0x30] - subs r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xBE - bhi _080FFF56 - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1F - b _080FFF5C -_080FFF56: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1D -_080FFF5C: - strb r0, [r1] -_080FFF5E: - movs r6, 0x30 - ldrsh r0, [r4, r6] - movs r1, 0x3C - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x14 - bl Sin - strh r0, [r4, 0x26] -_080FFF76: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80FFEC4 - - thumb_func_start sub_80FFF7C -sub_80FFF7C: @ 80FFF7C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x14 - ble _080FFF8E - adds r0, r4, 0 - bl DestroyAnimSprite -_080FFF8E: - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FFF7C - - thumb_func_start sub_80FFFC0 -sub_80FFFC0: @ 80FFFC0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, =gTasks - adds r5, r0, r1 - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - bl sub_80A82E4 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - strh r0, [r5, 0x10] - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x14] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x16] - ldrb r0, [r4] - movs r1, 0x1 - bl sub_80A861C - strh r0, [r5, 0x1C] - ldrb r0, [r4] - movs r1, 0 - bl sub_80A861C - strh r0, [r5, 0x1E] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x1 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0x1 - bne _08100028 - movs r1, 0x1 -_08100028: - strh r1, [r5, 0x12] - movs r3, 0x12 - ldrsh r0, [r5, r3] - lsls r0, 6 - movs r1, 0x38 - subs r1, r0 - strh r1, [r5, 0x1A] - ldrh r0, [r5, 0x16] - subs r0, r1 - ldrh r1, [r5, 0x14] - adds r0, r1 - strh r0, [r5, 0x18] - ldr r0, =gUnknown_08592778 - movs r2, 0x18 - ldrsh r1, [r5, r2] - movs r3, 0x1A - ldrsh r2, [r5, r3] - ldrb r3, [r5, 0x10] - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0xC] - cmp r0, 0x40 - bne _08100060 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_08100060: - ldr r4, =gSprites - movs r0, 0xC - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xA - strh r1, [r0, 0x2E] - movs r2, 0xC - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r5, 0x18] - strh r1, [r0, 0x30] - movs r3, 0xC - ldrsh r0, [r5, r3] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r4 - movs r1, 0x1C - ldrsh r0, [r5, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r5, r3] - muls r1, r0 - ldrh r0, [r5, 0x14] - subs r0, r1 - strh r0, [r2, 0x32] - movs r0, 0xC - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r5, 0x1A] - strh r1, [r0, 0x34] - movs r1, 0xC - ldrsh r0, [r5, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - movs r2, 0x1E - ldrsh r0, [r5, r2] - lsrs r2, r0, 31 - adds r0, r2 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r2, [r5, r3] - muls r0, r2 - ldrh r2, [r5, 0x16] - adds r0, r2 - strh r0, [r1, 0x36] - movs r3, 0xC - ldrsh r1, [r5, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl sub_8100504 - movs r1, 0xC - ldrsh r2, [r5, r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - strh r0, [r1, 0x38] - movs r2, 0xC - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl InitAnimArcTranslation - ldr r0, =sub_8100128 - str r0, [r5] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80FFFC0 - - thumb_func_start sub_8100128 -sub_8100128: @ 8100128 - push {r4-r6,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks - adds r6, r0, r1 - movs r0, 0xC - ldrsh r1, [r6, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, =gSprites - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r5, [r6, r1] - cmp r5, 0x7 - bne _08100150 - b _08100380 -_08100150: - cmp r5, 0x7 - bgt _0810019E - cmp r5, 0x3 - bne _0810015A - b _08100272 -_0810015A: - cmp r5, 0x3 - bgt _08100174 - cmp r5, 0x1 - beq _08100204 - cmp r5, 0x1 - bgt _08100254 - cmp r5, 0 - beq _081001E6 - b _081004FC - .pool -_08100174: - cmp r5, 0x5 - bne _0810017A - b _081002E8 -_0810017A: - cmp r5, 0x5 - ble _08100180 - b _08100362 -_08100180: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_8100524 - adds r0, r4, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - bne _08100196 - b _081004FC -_08100196: - movs r0, 0x5 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _081004FA -_0810019E: - cmp r5, 0xB - bne _081001A4 - b _08100464 -_081001A4: - cmp r5, 0xB - bgt _081001D2 - cmp r5, 0x9 - bne _081001AE - b _081003D2 -_081001AE: - cmp r5, 0x9 - ble _081001B4 - b _08100448 -_081001B4: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_8100524 - adds r0, r4, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - bne _081001CA - b _081004FC -_081001CA: - movs r0, 0x9 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _081004FA -_081001D2: - cmp r5, 0xD - bne _081001D8 - b _081004D6 -_081001D8: - cmp r5, 0xD - bge _081001DE - b _081004B6 -_081001DE: - cmp r5, 0xFF - bne _081001E4 - b _081004E6 -_081001E4: - b _081004FC -_081001E6: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_8100524 - adds r0, r4, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - bne _081001FC - b _081004FC -_081001FC: - movs r0, 0x1 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _081004FA -_08100204: - ldrh r2, [r4, 0x24] - ldrh r3, [r4, 0x20] - adds r2, r3 - movs r0, 0 - strh r2, [r4, 0x20] - ldrh r1, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r1, r3 - strh r1, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r2, [r4, 0x30] - ldrh r0, [r6, 0x14] - strh r0, [r4, 0x32] - strh r1, [r4, 0x34] - ldrh r0, [r6, 0x16] - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_8100504 - strh r0, [r4, 0x38] - ldrh r0, [r6, 0x10] - adds r0, 0x2 - strh r0, [r6, 0x10] - strh r5, [r6, 0xE] - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl InitAnimArcTranslation - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _081004FA -_08100254: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_8100524 - adds r0, r4, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - bne _0810026A - b _081004FC -_0810026A: - movs r0, 0x3 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _081004FA -_08100272: - 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, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - movs r1, 0x1C - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r6, r3] - muls r1, r0 - ldrh r0, [r6, 0x14] - subs r0, r1 - strh r0, [r4, 0x32] - strh r2, [r4, 0x34] - movs r1, 0x1E - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r2, 0x12 - ldrsh r1, [r6, r2] - muls r1, r0 - ldrh r0, [r6, 0x16] - subs r0, r1 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_8100504 - strh r0, [r4, 0x38] - movs r0, 0x2 - strh r0, [r6, 0xE] - ldrh r0, [r6, 0x10] - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl InitAnimArcTranslation - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _081004FA -_081002E8: - ldrh r1, [r4, 0x24] - ldrh r3, [r4, 0x20] - adds r1, r3 - 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, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - movs r1, 0x1C - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r6, r3] - muls r0, r1 - ldrh r1, [r6, 0x14] - adds r0, r1 - strh r0, [r4, 0x32] - strh r2, [r4, 0x34] - movs r2, 0x1E - ldrsh r0, [r6, r2] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r6, r3] - muls r0, r1 - ldrh r1, [r6, 0x16] - adds r0, r1 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_8100504 - strh r0, [r4, 0x38] - ldrh r1, [r6, 0x10] - subs r1, 0x2 - strh r1, [r6, 0x10] - movs r0, 0x3 - strh r0, [r6, 0xE] - adds r0, r4, 0 - adds r0, 0x43 - strb r1, [r0] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl InitAnimArcTranslation - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _081004FA -_08100362: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_8100524 - adds r0, r4, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - bne _08100378 - b _081004FC -_08100378: - movs r0, 0x7 - strh r0, [r6, 0x26] - movs r0, 0xFF - b _081004FA -_08100380: - ldrh r2, [r4, 0x24] - ldrh r3, [r4, 0x20] - adds r2, r3 - movs r0, 0 - strh r2, [r4, 0x20] - ldrh r1, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r1, r3 - strh r1, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r2, [r4, 0x30] - ldrh r0, [r6, 0x14] - strh r0, [r4, 0x32] - strh r1, [r4, 0x34] - ldrh r0, [r6, 0x16] - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_8100504 - strh r0, [r4, 0x38] - ldrh r1, [r6, 0x10] - adds r1, 0x2 - strh r1, [r6, 0x10] - movs r0, 0x4 - strh r0, [r6, 0xE] - adds r0, r4, 0 - adds r0, 0x43 - strb r1, [r0] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl InitAnimArcTranslation - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _081004FA -_081003D2: - 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, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - movs r1, 0x1C - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r3, 0x12 - ldrsh r1, [r6, r3] - muls r1, r0 - ldrh r0, [r6, 0x14] - subs r0, r1 - strh r0, [r4, 0x32] - strh r2, [r4, 0x34] - movs r1, 0x1E - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0xA - movs r2, 0x12 - ldrsh r1, [r6, r2] - muls r0, r1 - ldrh r3, [r6, 0x16] - adds r0, r3 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_8100504 - strh r0, [r4, 0x38] - movs r0, 0x5 - strh r0, [r6, 0xE] - ldrh r0, [r6, 0x10] - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl InitAnimArcTranslation - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _081004FA -_08100448: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_8100524 - adds r0, r4, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - beq _081004FC - movs r0, 0xB - strh r0, [r6, 0x26] - movs r0, 0xFF - b _081004FA -_08100464: - ldrh r2, [r4, 0x24] - ldrh r0, [r4, 0x20] - adds r2, r0 - movs r0, 0 - strh r2, [r4, 0x20] - ldrh r1, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r1, r3 - strh r1, [r4, 0x22] - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0xA - strh r0, [r4, 0x2E] - strh r2, [r4, 0x30] - ldrh r0, [r6, 0x18] - strh r0, [r4, 0x32] - strh r1, [r4, 0x34] - ldrh r0, [r6, 0x1A] - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_8100504 - strh r0, [r4, 0x38] - ldrh r1, [r6, 0x10] - subs r1, 0x2 - strh r1, [r6, 0x10] - movs r0, 0x6 - strh r0, [r6, 0xE] - adds r0, r4, 0 - adds r0, 0x43 - strb r1, [r0] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - bl InitAnimArcTranslation - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _081004FA -_081004B6: - adds r0, r6, 0 - adds r1, r2, 0 - bl sub_8100524 - adds r0, r4, 0 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - beq _081004FC - adds r0, r4, 0 - bl DestroySprite - ldrh r0, [r6, 0x8] - adds r0, 0x1 - b _081004FA -_081004D6: - movs r1, 0x20 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _081004FC - adds r0, r2, 0 - bl DestroyAnimVisualTask - b _081004FC -_081004E6: - ldrh r0, [r6, 0xA] - adds r0, 0x1 - strh r0, [r6, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _081004FC - movs r0, 0 - strh r0, [r6, 0xA] - ldrh r0, [r6, 0x26] -_081004FA: - strh r0, [r6, 0x8] -_081004FC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8100128 - - thumb_func_start sub_8100504 -sub_8100504: @ 8100504 - push {lr} - movs r2, 0x8 - movs r3, 0x36 - ldrsh r1, [r0, r3] - movs r3, 0x22 - ldrsh r0, [r0, r3] - cmp r1, r0 - bge _0810051A - negs r0, r2 - lsls r0, 16 - lsrs r2, r0, 16 -_0810051A: - lsls r0, r2, 16 - asrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_8100504 - - thumb_func_start sub_8100524 -sub_8100524: @ 8100524 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - lsls r1, 24 - lsrs r7, r1, 24 - ldrh r0, [r6, 0x24] - adds r0, 0x1 - strh r0, [r6, 0x24] - lsls r0, 16 - cmp r0, 0 - ble _081005BA - movs r0, 0 - strh r0, [r6, 0x24] - ldr r0, =gSprites - mov r8, r0 - movs r2, 0xC - ldrsh r1, [r6, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - ldrh r1, [r0, 0x24] - ldrh r2, [r0, 0x20] - adds r1, r2 - ldrh r2, [r0, 0x26] - ldrh r0, [r0, 0x22] - adds r2, r0 - ldr r0, =gUnknown_08592778 - lsls r1, 16 - asrs r1, 16 - lsls r2, 16 - asrs r2, 16 - ldrb r3, [r6, 0x10] - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _081005BA - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - mov r0, r8 - adds r4, r5, r0 - strh r7, [r4, 0x3A] - movs r0, 0xC - strh r0, [r4, 0x3C] - ldr r0, =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - ldrh r2, [r6, 0x22] - movs r0, 0x1 - ands r0, r2 - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x22] - adds r0, 0x1 - strh r0, [r1, 0x22] - ldrb r1, [r6, 0xE] - adds r0, r4, 0 - bl StartSpriteAnim - ldrh r0, [r6, 0x10] - adds r4, 0x43 - strb r0, [r4] - mov r0, r8 - adds r0, 0x1C - adds r5, r0 - ldr r0, =sub_81005D4 - str r0, [r5] -_081005BA: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8100524 - - thumb_func_start sub_81005D4 -sub_81005D4: @ 81005D4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _08100636 - movs r0, 0 - strh r0, [r4, 0x2E] - 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] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _08100636 - ldr r3, =gTasks - movs r0, 0x3C - ldrsh r1, [r4, r0] - 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 DestroySprite -_08100636: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81005D4 - - thumb_func_start sub_8100640 -sub_8100640: @ 8100640 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0xC - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0810065C - ldr r0, =gBattleAnimAttacker - b _0810065E - .pool -_0810065C: - ldr r0, =gBattleAnimTarget -_0810065E: - ldrb r6, [r0] - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08100688 - movs r0, 0 - strh r0, [r4, 0x36] - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x32] - ldr r0, =0x0000fff0 - b _08100698 - .pool -_08100688: - movs r0, 0x1 - strh r0, [r4, 0x36] - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x6] - negs r0, r0 - strh r0, [r4, 0x32] - movs r0, 0x80 - lsls r0, 1 -_08100698: - strh r0, [r4, 0x20] - adds r7, r1, 0 - adds r5, r7, 0 - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x30] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x34] - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _081006CE - cmp r0, 0x1 - bgt _081006C0 - cmp r0, 0 - beq _081006CA - b _08100738 - .pool -_081006C0: - cmp r0, 0x2 - beq _081006D4 - cmp r0, 0x3 - beq _08100700 - b _08100738 -_081006CA: - ldrh r0, [r5] - b _081006E4 -_081006CE: - ldrh r0, [r5] - strh r0, [r4, 0x22] - b _0810071A -_081006D4: - adds r0, r6, 0 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5] - adds r0, r5 -_081006E4: - strh r0, [r4, 0x22] - adds r0, r6, 0 - bl sub_80A8328 - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x5] - b _08100738 -_08100700: - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r7, [r7] - adds r0, r7 - strh r0, [r4, 0x22] - movs r0, 0x1 - bl GetAnimBattlerSpriteId -_0810071A: - adds r0, r6, 0 - bl sub_80A8328 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - lsls r0, 2 - ldrb r2, [r4, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x5] -_08100738: - ldr r0, =sub_810074C - str r0, [r4, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8100640 - - thumb_func_start sub_810074C -sub_810074C: @ 810074C - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x3C - ldrsh r3, [r4, r0] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - movs r1, 0x30 - ldrsh r2, [r4, r1] - ldr r1, =gSineTable - movs r5, 0x2E - ldrsh r0, [r4, r5] - lsls r0, 1 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - muls r0, r2 - asrs r0, 8 - strh r0, [r4, 0x26] - movs r2, 0x32 - ldrsh r0, [r4, r2] - muls r0, r3 - strh r0, [r4, 0x24] - movs r5, 0x34 - ldrsh r0, [r4, r5] - muls r0, r3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _081007A4 - movs r2, 0x24 - ldrsh r0, [r4, r2] - movs r5, 0x20 - ldrsh r1, [r4, r5] - adds r0, r1 - cmp r0, 0xF7 - ble _081007BC - b _081007B6 - .pool -_081007A4: - movs r1, 0x24 - ldrsh r0, [r4, r1] - movs r2, 0x20 - ldrsh r1, [r4, r2] - adds r0, r1 - movs r1, 0x10 - negs r1, r1 - cmp r0, r1 - bgt _081007BC -_081007B6: - adds r0, r4, 0 - bl move_anim_8074EE0 -_081007BC: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_810074C - - thumb_func_start sub_81007C4 -sub_81007C4: @ 81007C4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _081007E8 - cmp r0, 0x1 - beq _0810081C - b _08100876 - .pool -_081007E8: - ldr r0, =0x0000274f - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - movs r2, 0x80 - lsls r2, 1 - adds r4, r2, 0 - adds r0, r4 - strh r0, [r5, 0x18] - ldr r0, =0x000027b0 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - adds r0, r4 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _08100876 - .pool -_0810081C: - ldrh r0, [r5, 0x1A] - adds r0, 0x1 - movs r7, 0 - strh r0, [r5, 0x1A] - lsls r0, 16 - cmp r0, 0 - blt _08100876 - strh r7, [r5, 0x1A] - ldrh r0, [r5, 0x18] - ldrb r2, [r5, 0x1C] - ldr r4, =gUnknown_08592878 - movs r3, 0x1E - ldrsh r1, [r5, r3] - lsls r1, 1 - adds r1, r4 - ldrh r3, [r1] - movs r1, 0x10 - bl BlendPalette - ldrh r0, [r5, 0x20] - ldrb r2, [r5, 0x1C] - movs r3, 0x1E - ldrsh r1, [r5, r3] - lsls r1, 1 - adds r1, r4 - ldrh r3, [r1] - movs r1, 0x10 - bl BlendPalette - ldrh r0, [r5, 0x1C] - adds r0, 0x1 - strh r0, [r5, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x11 - bne _08100876 - strh r7, [r5, 0x1C] - ldrh r0, [r5, 0x1E] - adds r0, 0x1 - strh r0, [r5, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - bne _08100876 - strh r7, [r5, 0x1E] -_08100876: - ldr r0, =gBattleAnimArgs - movs r2, 0xE - ldrsh r1, [r0, r2] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0810088A - adds r0, r6, 0 - bl DestroyAnimVisualTask -_0810088A: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81007C4 - - thumb_func_start sub_8100898 -sub_8100898: @ 8100898 - push {r4-r7,lr} - sub sp, 0x4 - adds r6, r0, 0 - ldr r1, =gBattleAnimArgs - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _081008B4 - adds r0, r6, 0 - bl DestroyAnimSprite - b _0810098E - .pool -_081008B4: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _081008C4 - ldr r4, =gBattleAnimAttacker - b _081008C6 - .pool -_081008C4: - ldr r4, =gBattleAnimTarget -_081008C6: - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gBattleAnimArgs - ldrh r1, [r0, 0x8] - strh r1, [r6, 0x2E] - movs r3, 0x2 - ldrsh r1, [r0, r3] - adds r7, r0, 0 - cmp r1, 0 - bne _08100908 - ldrh r0, [r7, 0x4] - adds r0, r5 - strh r0, [r6, 0x20] - ldrh r0, [r7, 0x6] - adds r0, r2 - strh r0, [r6, 0x22] - strh r5, [r6, 0x38] - strh r2, [r6, 0x3A] - b _08100918 - .pool -_08100908: - strh r5, [r6, 0x20] - strh r2, [r6, 0x22] - ldrh r0, [r7, 0x4] - adds r0, r5 - strh r0, [r6, 0x38] - ldrh r0, [r7, 0x6] - adds r0, r2 - strh r0, [r6, 0x3A] -_08100918: - ldrh r4, [r6, 0x20] - lsls r0, r4, 4 - strh r0, [r6, 0x30] - ldrh r5, [r6, 0x22] - lsls r0, r5, 4 - strh r0, [r6, 0x32] - movs r1, 0x38 - ldrsh r0, [r6, r1] - movs r2, 0x20 - ldrsh r1, [r6, r2] - subs r0, r1 - lsls r0, 4 - movs r3, 0x8 - ldrsh r1, [r7, r3] - bl __divsi3 - strh r0, [r6, 0x34] - movs r1, 0x3A - ldrsh r0, [r6, r1] - movs r2, 0x22 - ldrsh r1, [r6, r2] - subs r0, r1 - lsls r0, 4 - movs r3, 0x8 - ldrsh r1, [r7, r3] - bl __divsi3 - strh r0, [r6, 0x36] - ldrh r0, [r6, 0x38] - subs r0, r4 - lsls r0, 16 - asrs r0, 16 - ldrh r1, [r6, 0x3A] - subs r1, r5 - lsls r1, 16 - asrs r1, 16 - bl ArcTan2Neg - lsls r0, 16 - lsrs r4, r0, 16 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _0810097A - ldr r1, =0xffff8000 - adds r0, r4, r1 - lsls r0, 16 - lsrs r4, r0, 16 -_0810097A: - movs r3, 0x80 - lsls r3, 1 - str r4, [sp] - adds r0, r6, 0 - movs r1, 0 - adds r2, r3, 0 - bl sub_80A73E0 - ldr r0, =sub_81009A0 - str r0, [r6, 0x1C] -_0810098E: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8100898 - - thumb_func_start sub_81009A0 -sub_81009A0: @ 81009A0 - push {r4,lr} - adds r2, r0, 0 - ldrh r3, [r2, 0x2E] - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - beq _081009D0 - ldrh r0, [r2, 0x34] - ldrh r4, [r2, 0x30] - adds r0, r4 - strh r0, [r2, 0x30] - ldrh r1, [r2, 0x36] - ldrh r4, [r2, 0x32] - adds r1, r4 - strh r1, [r2, 0x32] - lsls r0, 16 - asrs r0, 20 - strh r0, [r2, 0x20] - lsls r1, 16 - asrs r1, 20 - strh r1, [r2, 0x22] - subs r0, r3, 0x1 - strh r0, [r2, 0x2E] - b _081009D6 -_081009D0: - adds r0, r2, 0 - bl move_anim_8074EE0 -_081009D6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81009A0 - - thumb_func_start sub_81009DC -sub_81009DC: @ 81009DC - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _081009F2 - adds r0, r2, 0 - bl DestroyAnimSprite -_081009F2: - pop {r0} - bx r0 - thumb_func_end sub_81009DC - - thumb_func_start sub_81009F8 -sub_81009F8: @ 81009F8 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08100A20 - ldr r2, =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - b _08100A2C - .pool -_08100A20: - ldr r0, =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r4, 0x20] - adds r1, r2 - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] -_08100A2C: - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, =sub_80A67D8 - str r0, [r4, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81009F8 - - thumb_func_start sub_8100A50 -sub_8100A50: @ 8100A50 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08100A6A - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim -_08100A6A: - ldr r0, =sub_81009DC - str r0, [r5, 0x1C] - ldr r4, =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r4, r0] - adds r0, r5, 0 - bl sub_80A6864 - ldrh r0, [r4, 0x2] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8100A50 - - thumb_func_start sub_8100A94 -sub_8100A94: @ 8100A94 - push {r4,lr} - adds r4, r0, 0 - ldr r1, =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - 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 StartSpriteAffineAnim - ldr r1, =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A66DC - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8100A94 - - thumb_func_start sub_8100AE0 -sub_8100AE0: @ 8100AE0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08100B14 - ldrh r0, [r5, 0x22] - adds r0, 0x8 - strh r0, [r5, 0x22] -_08100B14: - ldr r0, =sub_8100CCC - str r0, [r5, 0x1C] - ldr r0, =gBattleAnimArgs - movs r2, 0x4 - ldrsh r1, [r0, r2] - adds r3, r0, 0 - cmp r1, 0 - bne _08100B3C - ldrh r0, [r3] - ldrh r1, [r5, 0x20] - adds r0, r1 - strh r0, [r5, 0x20] - b _08100B50 - .pool -_08100B3C: - ldrh r0, [r5, 0x20] - ldrh r1, [r3] - subs r0, r1 - strh r0, [r5, 0x20] - adds r2, r5, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_08100B50: - ldrh r0, [r3, 0x2] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - ldr r1, =0xfffffc00 - adds r0, r1, 0 - ldrh r2, [r5, 0x30] - adds r1, r0, r2 - strh r1, [r5, 0x30] - movs r2, 0x80 - lsls r2, 3 - adds r0, r2, 0 - ldrh r2, [r5, 0x32] - adds r0, r2 - strh r0, [r5, 0x32] - ldrh r0, [r3, 0x4] - strh r0, [r5, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _08100B7E - negs r0, r1 - strh r0, [r5, 0x30] -_08100B7E: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8100AE0 - - thumb_func_start sub_8100B88 -sub_8100B88: @ 8100B88 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0x6 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - beq _08100BA8 - cmp r0, 0x1 - ble _08100C24 - cmp r0, 0x2 - beq _08100BC8 - b _08100C24 - .pool -_08100BA8: - ldr r5, =gBattleAnimTarget - ldrb r0, [r5] - movs r4, 0x2 - eors r0, r4 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r7, r0, 24 - ldrb r0, [r5] - eors r4, r0 - adds r0, r4, 0 - b _08100C34 - .pool -_08100BC8: - ldr r5, =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r7, r0, 24 - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r5] - movs r2, 0x2 - mov r8, r2 - mov r1, r8 - eors r0, r1 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08100C3E - ldrb r0, [r5] - mov r2, r8 - eors r0, r2 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r7 - lsrs r7, r0, 1 - ldrb r0, [r5] - mov r1, r8 - eors r0, r1 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - lsrs r4, r0, 1 - b _08100C3E - .pool -_08100C24: - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r7, r0, 24 - ldrb r0, [r4] -_08100C34: - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r4, r0, 24 -_08100C3E: - strh r7, [r6, 0x20] - strh r4, [r6, 0x22] - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08100C56 - ldrh r0, [r6, 0x22] - adds r0, 0x8 - strh r0, [r6, 0x22] -_08100C56: - ldr r0, =sub_8100CCC - str r0, [r6, 0x1C] - ldr r0, =gBattleAnimArgs - movs r2, 0x4 - ldrsh r1, [r0, r2] - adds r3, r0, 0 - cmp r1, 0 - bne _08100C7C - ldrh r0, [r3] - ldrh r1, [r6, 0x20] - adds r0, r1 - strh r0, [r6, 0x20] - b _08100C90 - .pool -_08100C7C: - ldrh r0, [r6, 0x20] - ldrh r1, [r3] - subs r0, r1 - strh r0, [r6, 0x20] - adds r2, r6, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_08100C90: - ldrh r0, [r3, 0x2] - ldrh r2, [r6, 0x22] - adds r0, r2 - strh r0, [r6, 0x22] - ldr r1, =0xfffffc00 - adds r0, r1, 0 - ldrh r2, [r6, 0x30] - adds r1, r0, r2 - strh r1, [r6, 0x30] - movs r2, 0x80 - lsls r2, 3 - adds r0, r2, 0 - ldrh r2, [r6, 0x32] - adds r0, r2 - strh r0, [r6, 0x32] - ldrh r0, [r3, 0x4] - strh r0, [r6, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _08100CBE - negs r0, r1 - strh r0, [r6, 0x30] -_08100CBE: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8100B88 - - thumb_func_start sub_8100CCC -sub_8100CCC: @ 8100CCC - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x30] - ldrh r2, [r4, 0x34] - adds r0, r1, r2 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - movs r2, 0x38 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _08100CEE - adds r0, r1, 0 - adds r0, 0x18 - b _08100CF2 -_08100CEE: - adds r0, r1, 0 - subs r0, 0x18 -_08100CF2: - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x32] - subs r0, 0x18 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - bne _08100D28 - ldr r1, =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - movs r0, 0x3 - strh r0, [r4, 0x2E] - ldr r0, =WaitAnimForDuration - str r0, [r4, 0x1C] -_08100D28: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8100CCC - - thumb_func_start sub_8100D38 -sub_8100D38: @ 8100D38 - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r1, [r5, 0x32] - movs r2, 0x32 - ldrsh r0, [r5, r2] - cmp r0, 0x1 - ble _08100DDC - ldrh r1, [r5, 0x34] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08100D94 - adds r3, r5, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r2, 0x5 - negs r2, r2 - adds r0, r2, 0 - ands r0, r1 - strb r0, [r3] - ldr r4, =gSprites - movs r0, 0x2E - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r3, [r0] - adds r1, r2, 0 - ands r1, r3 - strb r1, [r0] - movs r0, 0x30 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - ands r2, r1 - strb r2, [r0] - b _08100DCA - .pool -_08100D94: - adds r1, r5, 0 - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - ldr r3, =gSprites - movs r0, 0x2E - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] - movs r0, 0x30 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] -_08100DCA: - movs r0, 0 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - b _08100DE0 - .pool -_08100DDC: - adds r0, r1, 0x1 - strh r0, [r5, 0x32] -_08100DE0: - movs r1, 0x34 - ldrsh r0, [r5, r1] - cmp r0, 0xA - bne _08100E10 - movs r2, 0x2E - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, =gSprites - adds r0, r4 - bl DestroySprite - movs r0, 0x30 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - adds r0, r5, 0 - bl DestroyAnimSprite -_08100E10: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8100D38 - - thumb_func_start sub_8100E1C -sub_8100E1C: @ 8100E1C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, =gBattleAnimArgs - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x2E] - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08100E44 - ldrh r0, [r5, 0x20] - ldrh r1, [r4] - subs r0, r1 - b _08100E4A - .pool -_08100E44: - ldrh r0, [r4] - ldrh r1, [r5, 0x20] - adds r0, r1 -_08100E4A: - strh r0, [r5, 0x20] - ldr r4, =gBattleAnimArgs - ldrb r1, [r4, 0xA] - adds r0, r5, 0 - bl StartSpriteAnim - ldrh r0, [r4, 0x6] - negs r0, r0 - strh r0, [r5, 0x30] - ldrh r0, [r4, 0x2] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x34] - ldr r1, =sub_8100E80 - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8100E1C - - thumb_func_start sub_8100E80 -sub_8100E80: @ 8100E80 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x64 - bl Cos - strh r0, [r4, 0x24] - movs r2, 0x2E - ldrsh r0, [r4, r2] - movs r1, 0x14 - bl Sin - strh r0, [r4, 0x26] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x7F - bgt _08100EAC - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0 - b _08100EB2 -_08100EAC: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0xE -_08100EB2: - strb r0, [r1] - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x2E] - adds r0, r2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x38] - adds r0, 0x82 - 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 - movs r2, 0x34 - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _08100EE8 - adds r0, r4, 0 - bl DestroyAnimSprite -_08100EE8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8100E80 - - thumb_func_start sub_8100EF0 -sub_8100EF0: @ 8100EF0 - push {r4-r6,lr} - adds r5, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _08100F06 - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x2] - adds r0, 0x8 - strh r0, [r1, 0x2] -_08100F06: - ldr r6, =gBattleAnimAttacker - ldrb r0, [r6] - movs r1, 0 - bl GetBattlerSpriteCoord2 - lsls r0, 24 - ldr r4, =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r6] - movs r1, 0x1 - bl GetBattlerSpriteCoord2 - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x2] - adds r0, r4 - strh r0, [r5, 0x22] - ldrb r0, [r6] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08100F44 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _08100F6C -_08100F44: - ldrb r0, [r6] - bl sub_80A8328 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - lsls r0, 2 - ldrb r2, [r5, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x5] - b _08100F84 - .pool -_08100F6C: - ldrb r0, [r6] - bl sub_80A8328 - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r5, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] -_08100F84: - ldr r0, =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r5, 0x2E] - ldr r0, =0x00002828 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - strh r0, [r5, 0x32] - movs r4, 0x10 - movs r0, 0x10 - strh r0, [r5, 0x3C] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - ldrh r0, [r5, 0x3C] - lsls r1, r0, 8 - subs r4, r0 - orrs r1, r4 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - ldr r0, =sub_8100FD4 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8100EF0 - - thumb_func_start sub_8100FD4 -sub_8100FD4: @ 8100FD4 - push {r4-r6,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x38] - adds r0, 0x60 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _08101032 - movs r0, 0 - strh r0, [r4, 0x30] - ldr r1, =gPlttBufferFaded - movs r2, 0x32 - ldrsh r0, [r4, r2] - adds r0, 0x1 - lsls r0, 1 - adds r0, r1 - ldrh r5, [r0] - movs r2, 0 - adds r6, r1, 0 - adds r3, r6, 0 -_0810100C: - movs r1, 0x32 - ldrsh r0, [r4, r1] - adds r2, 0x1 - adds r0, r2 - lsls r1, r0, 1 - adds r1, r3 - adds r0, 0x1 - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strh r0, [r1] - cmp r2, 0x5 - ble _0810100C - movs r2, 0x32 - ldrsh r0, [r4, r2] - adds r0, 0x7 - lsls r0, 1 - adds r0, r6 - strh r5, [r0] -_08101032: - ldrh r2, [r4, 0x3C] - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0x6 - ble _0810106C - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - ble _08101080 - ldrh r0, [r4, 0x3A] - adds r0, 0x1 - strh r0, [r4, 0x3A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _0810106C - movs r0, 0 - strh r0, [r4, 0x3A] - subs r2, 0x1 - strh r2, [r4, 0x3C] - lsls r1, r2, 8 - movs r0, 0x10 - subs r0, r2 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg -_0810106C: - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _08101080 - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - b _081010C2 - .pool -_08101080: - ldrh r0, [r4, 0x3A] - adds r0, 0x1 - strh r0, [r4, 0x3A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _081010C2 - movs r0, 0 - strh r0, [r4, 0x3A] - ldrh r2, [r4, 0x3C] - adds r2, 0x1 - strh r2, [r4, 0x3C] - 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, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _081010C2 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, =sub_80A67F4 - str r0, [r4, 0x1C] -_081010C2: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8100FD4 - - thumb_func_start sub_81010CC -sub_81010CC: @ 81010CC - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, =gBattleAnimTarget - ldrb r0, [r6] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r4, 0x20] - ldrb r0, [r6] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldr r1, =0x0000ffe8 - adds r0, r1 - strh r0, [r4, 0x22] - strh r5, [r4, 0x2E] - strh r5, [r4, 0x30] - strh r5, [r4, 0x32] - strh r5, [r4, 0x34] - strh r5, [r4, 0x36] - strh r5, [r4, 0x3A] - movs r0, 0x10 - strh r0, [r4, 0x3C] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - 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 - ldr r0, =sub_8101138 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81010CC - - thumb_func_start sub_8101138 -sub_8101138: @ 8101138 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _08101146 - b _08101290 -_08101146: - lsls r0, 2 - ldr r1, =_08101154 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08101154: - .4byte _08101168 - .4byte _081011CC - .4byte _081011E8 - .4byte _08101266 - .4byte _0810127A -_08101168: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - cmp r0, 0 - bgt _08101176 - b _08101290 -_08101176: - movs r0, 0 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08101198 - ldrh r1, [r4, 0x3A] - movs r2, 0x3A - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _081011A6 - adds r0, r1, 0x1 - strh r0, [r4, 0x3A] - b _081011A6 -_08101198: - ldrh r1, [r4, 0x3C] - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _081011A6 - subs r0, r1, 0x1 - strh r0, [r4, 0x3C] -_081011A6: - 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, 0x3A - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _08101290 - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _08101290 - strh r0, [r4, 0x30] - b _08101272 -_081011CC: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _08101290 - movs r0, 0 - strh r0, [r4, 0x30] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _08101272 -_081011E8: - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0x4 - bl sub_8101298 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _0810120A - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - adds r0, 0x1 - strh r0, [r4, 0x22] -_0810120A: - ldrh r0, [r4, 0x32] - adds r1, r0, 0x1 - strh r1, [r4, 0x32] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x1D - ble _08101290 - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _08101230 - ldrh r1, [r4, 0x3A] - movs r2, 0x3A - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _0810123E - subs r0, r1, 0x1 - strh r0, [r4, 0x3A] - b _0810123E -_08101230: - ldrh r1, [r4, 0x3C] - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _0810123E - adds r0, r1, 0x1 - strh r0, [r4, 0x3C] -_0810123E: - 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 r0, 0x3A - ldrsh r1, [r4, r0] - cmp r1, 0 - bne _08101290 - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0x10 - bne _08101290 - strh r1, [r4, 0x30] - strh r1, [r4, 0x32] - b _08101272 -_08101266: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_08101272: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _08101290 -_0810127A: - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimSprite -_08101290: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8101138 - - thumb_func_start sub_8101298 -sub_8101298: @ 8101298 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0xB - bgt _081012AA - ldrh r0, [r4, 0x36] - adds r0, 0x2 - strh r0, [r4, 0x36] -_081012AA: - ldrh r5, [r4, 0x34] - adds r0, r5, 0 - subs r0, 0x12 - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - cmp r0, 0x17 - bhi _081012C0 - ldrh r0, [r4, 0x36] - subs r0, 0x2 - strh r0, [r4, 0x36] -_081012C0: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x2F - ble _081012CE - ldrh r0, [r4, 0x36] - adds r0, 0x2 - strh r0, [r4, 0x36] -_081012CE: - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r1, 0x9 - bl __divsi3 - strh r0, [r4, 0x24] - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r1, 0xE - bl __divsi3 - strh r0, [r4, 0x26] - lsls r0, 16 - cmp r0, 0 - bge _081012F4 - movs r1, 0x26 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0x26] -_081012F4: - adds r0, r5, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3B - ble _08101304 - movs r0, 0 - strh r0, [r4, 0x34] -_08101304: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8101298 - - thumb_func_start sub_810130C -sub_810130C: @ 810130C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _08101320 - adds r0, r4, 0 - bl sub_80A6838 -_08101320: - movs r0, 0 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl sub_80A6864 - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrh r0, [r5, 0xA] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x30] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x32] - ldr r1, =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A656C - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810130C - - thumb_func_start sub_810135C -sub_810135C: @ 810135C - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08101378 - ldr r0, =gBattleAnimAttacker - b _0810137A - .pool -_08101378: - ldr r0, =gBattleAnimTarget -_0810137A: - ldrb r6, [r0] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _081013C4 - movs r1, 0x2 - adds r0, r6, 0 - eors r0, r1 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _081013C4 - ldr r4, =gBattleAnimArgs - ldrb r1, [r4, 0xC] - adds r2, r5, 0 - adds r2, 0x20 - adds r3, r5, 0 - adds r3, 0x22 - adds r0, r6, 0 - bl SetAverageBattlerPositions - movs r2, 0 - ldrsh r1, [r4, r2] - adds r0, r5, 0 - bl sub_80A6864 - ldrh r0, [r4, 0x2] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - b _08101414 - .pool -_081013C4: - ldr r4, =gBattleAnimArgs - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _081013E8 - adds r0, r6, 0 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - adds r0, r6, 0 - movs r1, 0x1 - b _081013FA - .pool -_081013E8: - adds r0, r6, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - adds r0, r6, 0 - movs r1, 0x3 -_081013FA: - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x2] - adds r0, r4 - strh r0, [r5, 0x22] - ldr r0, =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r5, 0 - bl sub_80A6864 -_08101414: - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0xA] - strh r0, [r5, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r5, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r5, 0x32] - ldr r1, =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A656C - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810135C - - thumb_func_start sub_8101440 -sub_8101440: @ 8101440 - push {r4,lr} - adds r4, r0, 0 - bl sub_80A6838 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08101474 - ldr r0, =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r4, 0x20] - adds r1, r2 - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - b _0810148E - .pool -_08101474: - ldr r2, =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim -_0810148E: - ldr r0, =sub_81014A0 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8101440 - - thumb_func_start sub_81014A0 -sub_81014A0: @ 81014A0 - 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, 0x1E - ble _081014D8 - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r0, 0x1E - subs r0, r1 - movs r1, 0x3 - bl __divsi3 - strh r0, [r4, 0x26] - movs r1, 0x30 - ldrsh r0, [r4, r1] - lsls r0, 18 - asrs r0, 16 - movs r1, 0x3 - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_081014D8: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _081014EC - adds r0, r4, 0 - bl DestroyAnimSprite -_081014EC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81014A0 - - thumb_func_start sub_81014F4 -sub_81014F4: @ 81014F4 - push {r4,lr} - adds r4, r0, 0 - bl sub_80A6838 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0810152C - ldr r1, =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] - movs r0, 0x1 - strh r0, [r4, 0x34] - b _0810154A - .pool -_0810152C: - ldr r2, =gBattleAnimArgs - ldrh r0, [r4, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - ldr r0, =0x0000ffff - strh r0, [r4, 0x34] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_0810154A: - ldr r0, =sub_8101560 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81014F4 - - thumb_func_start sub_8101560 -sub_8101560: @ 8101560 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x28 - bl __divsi3 - negs r0, r0 - strh r0, [r4, 0x26] - movs r2, 0x36 - ldrsh r0, [r4, r2] - movs r1, 0xA - bl __divsi3 - strh r0, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - lsls r0, 1 - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x2E] - adds r1, r0, r2 - strh r1, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _081015A4 - adds r0, r4, 0 - bl move_anim_8074EE0 -_081015A4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8101560 - - thumb_func_start sub_81015AC -sub_81015AC: @ 81015AC - push {lr} - ldrh r1, [r0, 0x20] - subs r1, 0x20 - strh r1, [r0, 0x20] - ldrh r1, [r0, 0x22] - subs r1, 0x20 - strh r1, [r0, 0x22] - movs r1, 0x14 - strh r1, [r0, 0x2E] - ldr r1, =WaitAnimForDuration - str r1, [r0, 0x1C] - ldr r1, =sub_81015D4 - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .pool - thumb_func_end sub_81015AC - - thumb_func_start sub_81015D4 -sub_81015D4: @ 81015D4 - push {r4-r6,lr} - adds r5, r0, 0 - ldrh r6, [r5, 0x38] - movs r1, 0x1 - adds r0, r1, 0 - ands r0, r6 - cmp r0, 0 - beq _081015EA - cmp r0, 0x1 - beq _08101604 - b _0810166A -_081015EA: - strh r1, [r5, 0x2E] - ldr r0, =WaitAnimForDuration - str r0, [r5, 0x1C] - ldr r1, =sub_81015D4 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - b _0810166A - .pool -_08101604: - ldrh r3, [r5, 0x24] - ldrh r0, [r5, 0x20] - adds r3, r0 - movs r0, 0 - strh r3, [r5, 0x20] - ldrh r4, [r5, 0x26] - ldrh r1, [r5, 0x22] - adds r4, r1 - strh r4, [r5, 0x22] - strh r0, [r5, 0x26] - strh r0, [r5, 0x24] - movs r0, 0x8 - strh r0, [r5, 0x2E] - ldr r2, =gUnknown_08592CD0 - lsls r0, r6, 16 - asrs r0, 24 - lsls r0, 1 - adds r1, r0, r2 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - adds r3, r1 - strh r3, [r5, 0x32] - adds r2, 0x1 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r4, r0 - strh r4, [r5, 0x36] - ldr r0, =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, =sub_8101684 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1, 0 - ldrh r1, [r5, 0x38] - adds r0, r1 - strh r0, [r5, 0x38] - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xD2 - bl PlaySE12WithPanning -_0810166A: - ldrh r0, [r5, 0x38] - movs r1, 0x1 - eors r0, r1 - strh r0, [r5, 0x38] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81015D4 - - thumb_func_start sub_8101684 -sub_8101684: @ 8101684 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x38] - lsls r0, 16 - asrs r0, 24 - cmp r0, 0x4 - bne _081016AC - movs r0, 0xA - strh r0, [r2, 0x2E] - ldr r0, =WaitAnimForDuration - str r0, [r2, 0x1C] - ldr r1, =sub_81016B8 - adds r0, r2, 0 - bl StoreSpriteCallbackInData6 - b _081016B0 - .pool -_081016AC: - ldr r0, =sub_81015D4 - str r0, [r2, 0x1C] -_081016B0: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8101684 - - thumb_func_start sub_81016B8 -sub_81016B8: @ 81016B8 - push {r4-r7,lr} - adds r5, r0, 0 - ldrh r1, [r5, 0x6] - cmp r1, 0 - bne _081016E0 - movs r0, 0x3 - strh r0, [r5, 0x2E] - strh r1, [r5, 0x30] - strh r1, [r5, 0x32] - ldr r0, =WaitAnimForDuration - str r0, [r5, 0x1C] - ldr r1, =sub_8101774 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - b _08101760 - .pool -_081016E0: - ldrh r0, [r5, 0x6] - cmp r0, 0x2 - beq _08101700 - cmp r0, 0x2 - bgt _081016F0 - cmp r0, 0x1 - beq _081016F6 - b _08101714 -_081016F0: - cmp r0, 0x3 - beq _08101708 - b _08101714 -_081016F6: - ldr r6, =0x0000fff8 - adds r7, r6, 0 - b _08101718 - .pool -_08101700: - ldr r7, =0x0000fff8 - b _08101716 - .pool -_08101708: - movs r7, 0x8 - ldr r6, =0x0000fff8 - b _08101718 - .pool -_08101714: - movs r7, 0x8 -_08101716: - movs r6, 0x8 -_08101718: - ldrh r0, [r5, 0x24] - ldrh r1, [r5, 0x20] - adds r0, r1 - 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, 0x26] - strh r1, [r5, 0x24] - movs r0, 0x6 - strh r0, [r5, 0x2E] - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r7 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x36] - ldr r0, =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, =sub_8101820 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 -_08101760: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81016B8 - - thumb_func_start sub_8101774 -sub_8101774: @ 8101774 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08101794 - ldrh r0, [r4, 0x30] - adds r0, 0x3 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _081017A4 - movs r0, 0x10 - b _081017A2 -_08101794: - ldrh r0, [r4, 0x30] - subs r0, 0x3 - strh r0, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - bge _081017A4 - movs r0, 0 -_081017A2: - strh r0, [r4, 0x30] -_081017A4: - movs r0, 0x1 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x1 - movs r3, 0x1 - bl sub_80A75AC - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - ldr r2, =0x00007fff - bl BlendPalettes - movs r3, 0x30 - ldrsh r0, [r4, r3] - cmp r0, 0x10 - bne _0810180C - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - ldrb r1, [r4, 0x5] - lsrs r1, 4 - lsls r0, r1, 5 - ldr r2, =gPlttBufferUnfaded + 0x210 - adds r0, r2 - lsls r1, 4 - ldr r3, =0x00000101 - adds r2, r3, 0 - orrs r1, r2 - movs r2, 0x4 - bl LoadPalette - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xC0 - bl PlaySE12WithPanning - b _08101814 - .pool -_0810180C: - cmp r0, 0 - bne _08101814 - ldr r0, =sub_8101820 - str r0, [r4, 0x1C] -_08101814: - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8101774 - - thumb_func_start sub_8101820 -sub_8101820: @ 8101820 - push {lr} - adds r2, r0, 0 - ldr r0, =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, =0x0000ffff - cmp r1, r0 - bne _08101838 - movs r0, 0 - strh r0, [r2, 0x30] - strh r0, [r2, 0x2E] - ldr r0, =sub_8101848 - str r0, [r2, 0x1C] -_08101838: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8101820 - - thumb_func_start sub_8101848 -sub_8101848: @ 8101848 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x3 - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _0810187C - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - 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] -_0810187C: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x8 - bne _08101890 - adds r0, r4, 0 - bl DestroyAnimSprite -_08101890: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8101848 - - thumb_func_start sub_8101898 -sub_8101898: @ 8101898 - push {r4,lr} - adds r3, r0, 0 - ldr r0, =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r3, 0x6] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _081018BC - ldrh r0, [r3, 0x20] - subs r0, 0x18 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x22] - subs r0, 0x18 - strh r0, [r3, 0x22] - b _0810190E - .pool -_081018BC: - cmp r0, 0x2 - bne _081018D8 - ldrh r0, [r3, 0x20] - subs r0, 0x18 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x22] - adds r0, 0x18 - strh r0, [r3, 0x22] - ldrb r1, [r3, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x20 - b _0810190A -_081018D8: - cmp r0, 0x3 - bne _081018F4 - ldrh r0, [r3, 0x20] - adds r0, 0x18 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x22] - subs r0, 0x18 - strh r0, [r3, 0x22] - ldrb r1, [r3, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - b _0810190A -_081018F4: - ldrh r0, [r3, 0x20] - adds r0, 0x18 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x22] - adds r0, 0x18 - strh r0, [r3, 0x22] - ldrb r1, [r3, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x30 -_0810190A: - orrs r0, r1 - strb r0, [r3, 0x3] -_0810190E: - ldrh r2, [r3, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x10 - ldr r4, =0x000003ff - adds r0, r4, 0 - ands r1, r0 - ldr r0, =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x4] - ldr r1, =sub_81015AC - str r1, [r3, 0x1C] - adds r0, r3, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8101898 - - thumb_func_start sub_8101940 -sub_8101940: @ 8101940 - push {lr} - adds r3, r0, 0 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r0, 0 - strh r0, [r3, 0x2E] - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - beq _0810197C - cmp r0, 0x1 - bgt _0810196C - cmp r0, 0 - beq _08101972 - b _0810198C - .pool -_0810196C: - cmp r0, 0x2 - beq _08101984 - b _0810198C -_08101972: - ldr r0, =sub_8101998 - b _0810198E - .pool -_0810197C: - ldr r0, =sub_8101A74 - b _0810198E - .pool -_08101984: - ldr r0, =sub_8101AC4 - b _0810198E - .pool -_0810198C: - ldr r0, =sub_8101B84 -_0810198E: - str r0, [r3, 0x1C] - pop {r0} - bx r0 - .pool - thumb_func_end sub_8101940 - - thumb_func_start sub_8101998 -sub_8101998: @ 8101998 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x6 - strh r0, [r4, 0x2E] - ldr r5, =gBattleAnimAttacker - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - movs r2, 0x2 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - beq _081019B6 - movs r1, 0x2 -_081019B6: - strh r1, [r4, 0x30] - movs r0, 0 - strh r0, [r4, 0x32] - ldr r1, =gBattlerSpriteIds - ldrb r0, [r5] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r4, 0x34] - ldr r1, =sub_81019E8 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A6630 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8101998 - - thumb_func_start sub_81019E8 -sub_81019E8: @ 81019E8 - push {r4-r6,lr} - adds r5, r0, 0 - movs r0, 0x2E - ldrsh r6, [r5, r0] - cmp r6, 0 - bne _08101A24 - ldr r1, =gBattlerSpriteIds - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r5, 0x34] - movs r1, 0 - bl sub_80A7270 - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x3A] - ldr r2, =0xfffffd00 - adds r1, r2, 0 - cmp r0, 0 - beq _08101A20 - movs r0, 0xC0 - lsls r0, 2 - adds r1, r0, 0 -_08101A20: - strh r1, [r5, 0x36] - strh r6, [r5, 0x38] -_08101A24: - ldrh r0, [r5, 0x36] - ldrh r1, [r5, 0x38] - adds r0, r1 - strh r0, [r5, 0x38] - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r5, 0x38] - adds r1, r2, 0 - bl obj_id_set_rotscale - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - bl sub_80A73A0 - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _08101A5E - movs r0, 0 - strh r0, [r5, 0x2E] - ldr r0, =sub_8101B84 - str r0, [r5, 0x1C] -_08101A5E: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81019E8 - - thumb_func_start sub_8101A74 -sub_8101A74: @ 8101A74 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x4 - strh r0, [r4, 0x2E] - ldr r5, =gBattleAnimAttacker - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - movs r1, 0x3 - cmp r0, 0 - beq _08101A92 - movs r0, 0x3 - negs r0, r0 - adds r1, r0, 0 -_08101A92: - strh r1, [r4, 0x30] - movs r0, 0 - strh r0, [r4, 0x32] - ldr r1, =gBattlerSpriteIds - ldrb r0, [r5] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r4, 0x34] - ldr r1, =sub_8101B84 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A6630 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8101A74 - - thumb_func_start sub_8101AC4 -sub_8101AC4: @ 8101AC4 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _08101ADE - movs r0, 0 - strh r0, [r1, 0x2E] - ldr r0, =sub_8101AE8 - str r0, [r1, 0x1C] -_08101ADE: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8101AC4 - - thumb_func_start sub_8101AE8 -sub_8101AE8: @ 8101AE8 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _08101B38 - ldr r1, =gBattlerSpriteIds - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r5, 0x34] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x3A] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08101B2C - movs r0, 0xFC - lsls r0, 8 - strh r0, [r5, 0x36] - movs r0, 0xC0 - lsls r0, 4 - b _08101B36 - .pool -_08101B2C: - movs r0, 0x80 - lsls r0, 3 - strh r0, [r5, 0x36] - movs r0, 0xF4 - lsls r0, 8 -_08101B36: - strh r0, [r5, 0x38] -_08101B38: - ldrh r0, [r5, 0x36] - ldrh r1, [r5, 0x38] - adds r0, r1 - strh r0, [r5, 0x38] - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r5, 0x38] - adds r1, r2, 0 - bl obj_id_set_rotscale - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - bl sub_80A73A0 - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _08101B78 - ldrh r0, [r5, 0x34] - lsls r0, 24 - lsrs r0, 24 - bl sub_80A7344 - ldr r0, =sub_8101B84 - str r0, [r5, 0x1C] -_08101B78: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8101AE8 - - thumb_func_start sub_8101B84 -sub_8101B84: @ 8101B84 - push {lr} - bl DestroyAnimSprite - pop {r0} - bx r0 - thumb_func_end sub_8101B84 - - thumb_func_start sub_8101B90 -sub_8101B90: @ 8101B90 - movs r1, 0 - strh r1, [r0, 0x2E] - ldr r1, =sub_8101BA0 - str r1, [r0, 0x1C] - bx lr - .pool - thumb_func_end sub_8101B90 - - thumb_func_start sub_8101BA0 -sub_8101BA0: @ 8101BA0 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _08101BFA - cmp r5, 0x1 - bgt _08101BB6 - cmp r5, 0 - beq _08101BBC - b _08101C8E -_08101BB6: - cmp r5, 0x2 - beq _08101C4C - b _08101C8E -_08101BBC: - strh r5, [r4, 0x30] - ldr r1, =gBattlerSpriteIds - ldr r2, =gBattleAnimAttacker - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r4, 0x32] - ldrb r0, [r2] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x34] - ldr r2, =0xfffffe00 - adds r1, r2, 0 - cmp r0, 0 - beq _08101BE4 - movs r0, 0x80 - lsls r0, 2 - adds r1, r0, 0 -_08101BE4: - strh r1, [r4, 0x36] - strh r5, [r4, 0x38] - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_80A7270 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] -_08101BFA: - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x38] - adds r0, r1 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0x38] - adds r1, r2, 0 - bl obj_id_set_rotscale - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - bl sub_80A73A0 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _08101C8E - movs r0, 0 - strh r0, [r4, 0x30] - movs r2, 0x36 - ldrsh r0, [r4, r2] - negs r0, r0 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _08101C8E - .pool -_08101C4C: - ldrh r0, [r4, 0x36] - ldrh r1, [r4, 0x38] - adds r0, r1 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0x38] - adds r1, r2, 0 - bl obj_id_set_rotscale - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - bl sub_80A73A0 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _08101C8E - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - bl sub_80A7344 - adds r0, r4, 0 - bl DestroyAnimSprite -_08101C8E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8101BA0 - - thumb_func_start sub_8101C94 -sub_8101C94: @ 8101C94 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldr r1, =gBattlerSpriteIds - ldr r2, =gBattleAnimAttacker - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - movs r4, 0 - strh r0, [r5, 0x8] - ldrb r0, [r2] - bl GetBattlerSide - lsls r0, 24 - lsrs r2, r0, 24 - strh r2, [r5, 0xA] - strh r4, [r5, 0xC] - ldr r0, =gBattleAnimArgs - movs r3, 0 - ldrsh r1, [r0, r3] - cmp r1, 0 - beq _08101CE8 - cmp r1, 0x1 - beq _08101D04 - adds r0, r6, 0 - bl DestroyAnimVisualTask - b _08101D22 - .pool -_08101CE8: - strh r1, [r5, 0xC] - movs r0, 0x8 - strh r0, [r5, 0xE] - strh r1, [r5, 0x10] - movs r0, 0x3 - strh r0, [r5, 0x12] - cmp r2, 0 - bne _08101CFC - negs r0, r0 - strh r0, [r5, 0x12] -_08101CFC: - ldr r0, =sub_8101D2C - b _08101D20 - .pool -_08101D04: - movs r0, 0x8 - strh r0, [r5, 0xE] - movs r0, 0xC0 - lsls r0, 3 - strh r0, [r5, 0x10] - movs r1, 0xC0 - strh r1, [r5, 0x12] - cmp r2, 0 - bne _08101D1E - negs r0, r0 - strh r0, [r5, 0x10] - negs r0, r1 - strh r0, [r5, 0x12] -_08101D1E: - ldr r0, =sub_8101EEC -_08101D20: - str r0, [r5] -_08101D22: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8101C94 - - thumb_func_start sub_8101D2C -sub_8101D2C: @ 8101D2C - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks - adds r4, r0, r1 - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _08101D46 - b _08101EE6 -_08101D46: - lsls r0, 2 - ldr r1, =_08101D58 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08101D58: - .4byte _08101D6C - .4byte _08101D9E - .4byte _08101DF8 - .4byte _08101E70 - .4byte _08101EB4 -_08101D6C: - movs r2, 0xE - ldrsh r1, [r4, r2] - cmp r1, 0 - beq _08101D7C - ldrh r2, [r4, 0x12] - ldrh r3, [r4, 0x10] - adds r2, r3 - b _08101EC2 -_08101D7C: - movs r0, 0x8 - strh r0, [r4, 0xE] - strh r1, [r4, 0x10] - movs r1, 0xA - ldrsh r0, [r4, r1] - movs r1, 0xC0 - cmp r0, 0 - bne _08101D92 - movs r2, 0xC0 - negs r2, r2 - adds r1, r2, 0 -_08101D92: - strh r1, [r4, 0x12] - ldrb r0, [r4, 0x8] - movs r1, 0 - bl sub_80A7270 - b _08101EA8 -_08101D9E: - movs r3, 0xE - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _08101DC4 - ldrh r0, [r4, 0x12] - ldrh r1, [r4, 0x10] - adds r0, r1 - strh r0, [r4, 0x10] - ldrb r0, [r4, 0x8] - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0x10] - adds r1, r2, 0 - bl obj_id_set_rotscale - ldrb r0, [r4, 0x8] - bl sub_80A73A0 - b _08101ED4 -_08101DC4: - movs r0, 0x8 - strh r0, [r4, 0xE] - ldr r2, =gSprites - movs r3, 0x8 - ldrsh r1, [r4, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x24] - strh r0, [r4, 0x10] - movs r1, 0xA - ldrsh r0, [r4, r1] - movs r2, 0x2 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - bne _08101DEA - movs r1, 0x2 -_08101DEA: - strh r1, [r4, 0x12] - movs r0, 0x1 - strh r0, [r4, 0x14] - b _08101EA8 - .pool -_08101DF8: - ldrh r2, [r4, 0xE] - movs r3, 0xE - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _08101E54 - ldrh r1, [r4, 0x14] - movs r3, 0x14 - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _08101E12 - subs r0, r1, 0x1 - strh r0, [r4, 0x14] - b _08101EE6 -_08101E12: - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _08101E34 - ldr r2, =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 r2, [r4, 0x10] - adds r1, r2 - b _08101E48 - .pool -_08101E34: - ldr r2, =gSprites - movs r3, 0x8 - ldrsh r1, [r4, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x10] - ldrh r2, [r4, 0x12] - subs r1, r2 -_08101E48: - strh r1, [r0, 0x24] - movs r0, 0x1 - strh r0, [r4, 0x14] - b _08101ED4 - .pool -_08101E54: - ldr r2, =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x10] - strh r1, [r0, 0x24] - movs r0, 0xC - strh r0, [r4, 0xE] - b _08101EA8 - .pool -_08101E70: - ldrh r1, [r4, 0xE] - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08101E80 - subs r0, r1, 0x1 - strh r0, [r4, 0xE] - b _08101EE6 -_08101E80: - movs r0, 0x3 - strh r0, [r4, 0xE] - ldr r2, =gSprites - movs r3, 0x8 - ldrsh r1, [r4, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x24] - strh r0, [r4, 0x10] - movs r1, 0xA - ldrsh r0, [r4, r1] - movs r2, 0x8 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - bne _08101EA6 - movs r1, 0x8 -_08101EA6: - strh r1, [r4, 0x12] -_08101EA8: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - b _08101EE6 - .pool -_08101EB4: - movs r3, 0xE - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _08101EE0 - ldrh r2, [r4, 0x12] - ldrh r0, [r4, 0x10] - adds r2, r0 -_08101EC2: - strh r2, [r4, 0x10] - ldr r3, =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x24] -_08101ED4: - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - b _08101EE6 - .pool -_08101EE0: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_08101EE6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8101D2C - - thumb_func_start sub_8101EEC -sub_8101EEC: @ 8101EEC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks - adds r4, r0, r1 - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08101F2C - ldrh r0, [r4, 0x10] - ldrh r1, [r4, 0x12] - subs r0, r1 - strh r0, [r4, 0x10] - ldrb r0, [r4, 0x8] - movs r2, 0x80 - lsls r2, 1 - ldrh r3, [r4, 0x10] - adds r1, r2, 0 - bl obj_id_set_rotscale - ldrb r0, [r4, 0x8] - bl sub_80A73A0 - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - b _08101F38 - .pool -_08101F2C: - ldrb r0, [r4, 0x8] - bl sub_80A7344 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_08101F38: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8101EEC - - thumb_func_start sub_8101F40 -sub_8101F40: @ 8101F40 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _08101F5C - ldr r4, =gBattleAnimAttacker - b _08101F5E - .pool -_08101F5C: - ldr r4, =gBattleAnimTarget -_08101F5E: - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x2] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x4] - adds r0, r6 - strh r0, [r5, 0x22] - movs r0, 0 - strh r0, [r5, 0x2E] - strh r0, [r5, 0x30] - ldr r1, =sub_810208C - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A67D8 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8101F40 - - thumb_func_start sub_8101FA8 -sub_8101FA8: @ 8101FA8 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldr r1, =0x0000ffd0 - adds r0, r1 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r1, =sub_8102044 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A67D8 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8101FA8 - - thumb_func_start sub_8101FF0 -sub_8101FF0: @ 8101FF0 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r5, =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleAnimArgs - ldr r2, =0x0000ffd0 - adds r0, r2 - ldrh r1, [r1] - adds r0, r1 - movs r6, 0 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - strh r6, [r4, 0x2E] - strh r6, [r4, 0x30] - ldr r0, =sub_810208C - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8101FF0 - - thumb_func_start sub_8102044 -sub_8102044: @ 8102044 - 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, 0x8 - ble _0810206E - movs r0, 0xC - strh r0, [r4, 0x2E] - movs r0, 0x8 - strh r0, [r4, 0x30] - movs r0, 0 - strh r0, [r4, 0x32] - ldr r1, =sub_810207C - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A653C - str r0, [r4, 0x1C] -_0810206E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8102044 - - thumb_func_start sub_810207C -sub_810207C: @ 810207C - movs r1, 0 - strh r1, [r0, 0x2E] - strh r1, [r0, 0x30] - ldr r1, =sub_810208C - str r1, [r0, 0x1C] - bx lr - .pool - thumb_func_end sub_810207C - - thumb_func_start sub_810208C -sub_810208C: @ 810208C - 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, 0x1 - ble _081020D4 - movs r0, 0 - strh r0, [r3, 0x2E] - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - 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 - mov r1, r12 - strb r0, [r1] - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _081020D4 - adds r0, r3, 0 - bl DestroyAnimSprite -_081020D4: - pop {r0} - bx r0 - thumb_func_end sub_810208C - - thumb_func_start sub_81020D8 -sub_81020D8: @ 81020D8 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _081020F4 - ldr r4, =gBattleAnimAttacker - b _081020F6 - .pool -_081020F4: - ldr r4, =gBattleAnimTarget -_081020F6: - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x2] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x4] - adds r0, r6 - strh r0, [r5, 0x22] - movs r0, 0 - strh r0, [r5, 0x2E] - ldr r0, =gBattleAnimArgs - ldrh r0, [r0, 0x6] - strh r0, [r5, 0x30] - ldr r0, =sub_810213C - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81020D8 - - thumb_func_start sub_810213C -sub_810213C: @ 810213C - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x30 - ldrsh r1, [r2, r3] - cmp r0, r1 - ble _0810215C - movs r0, 0 - strh r0, [r2, 0x2E] - ldrh r0, [r2, 0x22] - subs r0, 0x1 - strh r0, [r2, 0x22] -_0810215C: - ldrh r0, [r2, 0x22] - ldrh r1, [r2, 0x2E] - subs r0, r1 - strh r0, [r2, 0x22] - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08102178 - adds r0, r2, 0 - bl DestroyAnimSprite -_08102178: - pop {r0} - bx r0 - thumb_func_end sub_810213C - - thumb_func_start sub_810217C -sub_810217C: @ 810217C - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, =gBattleAnimAttacker - ldrb r0, [r6] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r4, 0x20] - ldrb r0, [r6] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - subs r0, 0xC - strh r0, [r4, 0x22] - strh r5, [r4, 0x2E] - movs r0, 0x2 - strh r0, [r4, 0x30] - strh r5, [r4, 0x32] - strh r5, [r4, 0x34] - strh r5, [r4, 0x36] - subs r0, 0x42 - bl BattleAnimAdjustPanning - lsls r0, 24 - asrs r0, 24 - strh r0, [r4, 0x38] - ldr r0, =sub_81021CC - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810217C - - thumb_func_start sub_81021CC -sub_81021CC: @ 81021CC - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x30 - ldrsh r1, [r4, r2] - cmp r0, r1 - blt _08102238 - 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] - movs r1, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0810221E - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0810221E - ldrh r1, [r4, 0x38] - lsls r1, 24 - asrs r1, 24 - movs r0, 0xC2 - bl PlaySE12WithPanning -_0810221E: - movs r1, 0 - strh r1, [r4, 0x2E] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _08102238 - strh r1, [r4, 0x32] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_08102238: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08102262 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x10 - ble _08102262 - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08102262 - adds r0, r4, 0 - bl DestroyAnimSprite -_08102262: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81021CC - - thumb_func_start sub_8102268 -sub_8102268: @ 8102268 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x2E - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _081022B2 - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r5, =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r5] - adds r0, r1 - strh r0, [r6, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r5, [r5, 0x2] - adds r0, r5 - strh r0, [r6, 0x22] - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _081022AC - ldrh r0, [r6, 0x22] - adds r0, 0xA - strh r0, [r6, 0x22] -_081022AC: - ldrh r0, [r6, 0x2E] - adds r0, 0x1 - strh r0, [r6, 0x2E] -_081022B2: - ldr r0, =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, =0x0000ffff - cmp r1, r0 - bne _081022C2 - adds r0, r6, 0 - bl DestroyAnimSprite -_081022C2: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8102268 - - thumb_func_start sub_81022D4 -sub_81022D4: @ 81022D4 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _08102300 - ldr r1, =gBattleAnimArgs - ldr r0, =0x0000ffff - strh r0, [r1, 0xE] - b _0810233E - .pool -_08102300: - cmp r0, 0x2 - bne _0810230C - adds r0, r2, 0 - bl DestroyAnimVisualTask - b _08102344 -_0810230C: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _08102344 - movs r0, 0 - strh r0, [r4, 0x8] - ldrh r2, [r4, 0xA] - adds r2, 0x1 - strh r2, [r4, 0xA] - 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, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _08102344 -_0810233E: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] -_08102344: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81022D4 - - thumb_func_start sub_810234C -sub_810234C: @ 810234C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_80A6980 - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - ldr r0, =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x2E] - ldr r0, =sub_810237C - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810234C - - thumb_func_start sub_810237C -sub_810237C: @ 810237C - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r1, [r5, 0x2E] - movs r2, 0x2E - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _08102390 - subs r0, r1, 0x1 - strh r0, [r5, 0x2E] - b _081023CC -_08102390: - adds r2, r5, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - movs r0, 0x1E - strh r0, [r5, 0x2E] - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - ldr r0, =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 -_081023CC: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810237C - - thumb_func_start sub_81023E0 -sub_81023E0: @ 81023E0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _08102428 - movs r0, 0 - strh r0, [r4, 0x8] - 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, 0x10 - bne _08102428 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_08102428: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81023E0 - - thumb_func_start sub_8102434 -sub_8102434: @ 8102434 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - movs r4, 0 - ldr r0, =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - bcs _08102490 - ldr r6, =gBattleAnimArgs - ldr r5, =gHealthboxSpriteIds -_08102448: - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - bne _08102464 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08102464 - adds r0, r4, r5 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible -_08102464: - movs r1, 0x2 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - bne _08102482 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08102482 - adds r0, r4, r5 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible -_08102482: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - bcc _08102448 -_08102490: - adds r0, r7, 0 - bl DestroyAnimVisualTask - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8102434 - - thumb_func_start sub_81024A8 -sub_81024A8: @ 81024A8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - b _081024C2 -_081024B2: - ldr r0, =gHealthboxSpriteIds - adds r0, r4, r0 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_081024C2: - ldr r0, =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - bcc _081024B2 - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81024A8 - - thumb_func_start sub_81024E0 -sub_81024E0: @ 81024E0 - push {r4,lr} - adds r4, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _081024F6 - movs r0, 0x30 - strh r0, [r4, 0x20] - movs r0, 0x28 - b _081024FE -_081024F6: - ldr r0, =gBattleAnimArgs - ldrh r1, [r0] - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] -_081024FE: - strh r0, [r4, 0x22] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x3] - movs r1, 0xC0 - orrs r0, r1 - strb r0, [r4, 0x3] - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, =sub_8102528 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81024E0 - - thumb_func_start sub_8102528 -sub_8102528: @ 8102528 - push {lr} - adds r1, r0, 0 - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _0810253A - adds r0, r1, 0 - bl DestroyAnimSprite -_0810253A: - pop {r0} - bx r0 - thumb_func_end sub_8102528 - - thumb_func_start sub_8102540 -sub_8102540: @ 8102540 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r2, =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r2] - adds r0, r1 - movs r1, 0 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x2] - strh r0, [r4, 0x22] - strh r1, [r4, 0x2E] - strh r1, [r4, 0x30] - strh r1, [r4, 0x32] - strh r1, [r4, 0x34] - movs r0, 0x1 - strh r0, [r4, 0x36] - ldr r0, =sub_8102584 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8102540 - - thumb_func_start sub_8102584 -sub_8102584: @ 8102584 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _081025AE - movs r0, 0 - strh r0, [r1, 0x30] - ldrh r2, [r1, 0x32] - movs r3, 0x32 - ldrsh r0, [r1, r3] - cmp r0, 0x77 - bgt _081025AE - ldrh r0, [r1, 0x22] - adds r0, 0x1 - strh r0, [r1, 0x22] - adds r0, r2, 0x1 - strh r0, [r1, 0x32] -_081025AE: - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _081025BC - adds r0, r1, 0 - bl DestroyAnimSprite -_081025BC: - pop {r0} - bx r0 - thumb_func_end sub_8102584 - - thumb_func_start sub_81025C0 -sub_81025C0: @ 81025C0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r7, r0, 24 - movs r4, 0 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_80A75AC - mov r8, r0 - ldr r0, =0x0000ffff - mov r1, r8 - ands r1, r0 - mov r8, r1 - ldr r0, =gTasks - mov r9, r0 - lsls r5, r7, 2 - adds r5, r7 - lsls r5, 3 - adds r6, r5, r0 - strh r4, [r6, 0x8] - strh r4, [r6, 0xA] - strh r4, [r6, 0xC] - strh r1, [r6, 0xE] - strh r4, [r6, 0x10] - strh r4, [r6, 0x12] - strh r4, [r6, 0x14] - movs r0, 0xD - strh r0, [r6, 0x16] - movs r0, 0xE - strh r0, [r6, 0x18] - movs r0, 0xF - strh r0, [r6, 0x1A] - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x1 - movs r3, 0x1 - bl sub_80A76C4 - mov r10, r0 - mov r1, r8 - orrs r1, r0 - mov r8, r1 - movs r0, 0x8 - add r9, r0 - add r5, r9 - adds r0, r5, 0 - adds r0, 0x1C - adds r5, 0x1E - adds r1, r5, 0 - mov r2, r8 - bl sub_80A8048 - ldr r0, =0x000027d2 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - movs r4, 0x80 - lsls r4, 9 - adds r1, r4, 0 - lsls r1, r0 - mov r0, r10 - orrs r0, r1 - mov r10, r0 - ldr r0, =0x000027d3 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0 - mov r1, r10 - orrs r4, r1 - ldr r0, =0x00007fbb - str r0, [sp] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, =sub_81026A8 - str r1, [r6] - adds r0, r7, 0 - bl _call_via_r1 - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81025C0 - - thumb_func_start sub_81026A8 -sub_81026A8: @ 81026A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _08102794 - cmp r1, 0x1 - bgt _081026D4 - cmp r1, 0 - beq _081026E2 - b _08102832 - .pool -_081026D4: - cmp r1, 0x2 - bne _081026DA - b _081027EC -_081026DA: - cmp r1, 0x3 - bne _081026E0 - b _08102820 -_081026E0: - b _08102832 -_081026E2: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - cmp r0, 0 - bgt _081026F0 - b _08102832 -_081026F0: - strh r1, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - bgt _0810273C - ldrh r0, [r4, 0x16] - ldrh r1, [r4, 0x10] - adds r0, r1 - strh r0, [r4, 0x10] - ldrh r2, [r4, 0x18] - ldrh r3, [r4, 0x12] - adds r2, r3 - strh r2, [r4, 0x12] - ldrh r1, [r4, 0x1A] - ldrh r5, [r4, 0x14] - adds r1, r5 - strh r1, [r4, 0x14] - lsls r0, 16 - asrs r0, 19 - lsls r0, 16 - lsrs r0, 16 - lsls r2, 16 - asrs r2, 19 - lsls r2, 16 - lsls r1, 16 - asrs r1, 19 - lsls r1, 16 - lsrs r2, 11 - orrs r0, r2 - lsrs r1, 6 - orrs r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r12, r0 - b _08102746 -_0810273C: - ldr r7, =0x00007fbb - mov r12, r7 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_08102746: - movs r2, 0x1 - movs r3, 0 - movs r1, 0 -_0810274C: - movs r5, 0xE - ldrsh r0, [r4, r5] - ands r0, r2 - lsls r5, r2, 17 - adds r6, r3, 0 - adds r6, 0x10 - adds r1, 0x1 - mov r8, r1 - cmp r0, 0 - beq _08102778 - movs r1, 0x1 - ldr r2, =gPlttBufferFaded -_08102764: - adds r0, r3, r1 - lsls r0, 1 - adds r0, r2 - mov r7, r12 - strh r7, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0xF - bls _08102764 -_08102778: - lsrs r2, r5, 16 - lsls r0, r6, 16 - lsrs r3, r0, 16 - mov r1, r8 - lsls r0, r1, 16 - lsrs r1, r0, 16 - cmp r1, 0xF - bls _0810274C - b _08102832 - .pool -_08102794: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08102832 - movs r2, 0 - ldr r3, =gSprites - movs r5, 0x14 - adds r5, r3 - mov r12, r5 - ldr r7, =gUnknown_08592EBC - mov r8, r7 - ldr r6, =gBattleAnimSpriteTemplate_8592EEC - movs r5, 0x1 -_081027B2: - lsls r0, r2, 4 - adds r0, r2 - lsls r1, r0, 2 - mov r7, r12 - adds r0, r1, r7 - ldr r0, [r0] - cmp r0, r8 - beq _081027C6 - cmp r0, r6 - bne _081027CA -_081027C6: - adds r0, r1, r3 - strh r5, [r0, 0x2E] -_081027CA: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3F - bls _081027B2 - movs r0, 0 - strh r0, [r4, 0xA] - b _08102814 - .pool -_081027EC: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - ble _08102832 - movs r1, 0x24 - ldrsh r0, [r4, r1] - movs r2, 0x26 - ldrsh r1, [r4, r2] - bl sub_80A8050 - ldr r1, =0x00007fbb - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_08102814: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _08102832 - .pool -_08102820: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08102832 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_08102832: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81026A8 - - thumb_func_start sub_8102844 -sub_8102844: @ 8102844 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - bgt _08102856 - movs r0, 0x2 - strh r0, [r6, 0x4] -_08102856: - movs r1, 0x4 - ldrsh r0, [r6, r1] - cmp r0, 0x7F - ble _08102862 - movs r0, 0x7F - strh r0, [r6, 0x4] -_08102862: - movs r0, 0 - strh r0, [r5, 0x2E] - ldrh r0, [r6, 0x4] - strh r0, [r5, 0x30] - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x2] - adds r0, r6 - strh r0, [r5, 0x22] - ldrh r1, [r5, 0x20] - strh r1, [r5, 0x3A] - strh r0, [r5, 0x3C] - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _081028D4 - ldrb r1, [r5, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r5, 0x3] - ldrh r0, [r5, 0x20] - adds r0, 0x28 - strh r0, [r5, 0x20] - ldrh r4, [r5, 0x22] - adds r4, 0x14 - strh r4, [r5, 0x22] - lsls r0, 7 - strh r0, [r5, 0x32] - movs r0, 0x30 - ldrsh r1, [r5, r0] - ldr r0, =0xffffec00 - b _081028FA - .pool -_081028D4: - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0810291C - ldrh r0, [r5, 0x20] - subs r0, 0x28 - strh r0, [r5, 0x20] - ldrh r4, [r5, 0x22] - adds r4, 0x14 - strh r4, [r5, 0x22] - lsls r0, 7 - strh r0, [r5, 0x32] - movs r0, 0x30 - ldrsh r1, [r5, r0] - movs r0, 0xA0 - lsls r0, 5 -_081028FA: - bl __divsi3 - strh r0, [r5, 0x34] - lsls r4, 7 - strh r4, [r5, 0x36] - movs r0, 0x30 - ldrsh r1, [r5, r0] - ldr r0, =0xfffff600 - bl __divsi3 - strh r0, [r5, 0x38] - b _08102958 - .pool -_0810291C: - ldrh r0, [r5, 0x20] - adds r0, 0x28 - strh r0, [r5, 0x20] - ldrh r4, [r5, 0x22] - subs r4, 0x14 - strh r4, [r5, 0x22] - lsls r0, 7 - strh r0, [r5, 0x32] - movs r0, 0x30 - ldrsh r1, [r5, r0] - ldr r0, =0xffffec00 - bl __divsi3 - strh r0, [r5, 0x34] - lsls r4, 7 - strh r4, [r5, 0x36] - movs r0, 0x30 - ldrsh r1, [r5, r0] - movs r0, 0xA0 - lsls r0, 4 - bl __divsi3 - strh r0, [r5, 0x38] - ldrb r1, [r5, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x30 - orrs r0, r1 - strb r0, [r5, 0x3] -_08102958: - ldr r0, =sub_810296C - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8102844 - - thumb_func_start sub_810296C -sub_810296C: @ 810296C - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x34] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - ldrh r1, [r2, 0x38] - ldrh r3, [r2, 0x36] - adds r1, r3 - strh r1, [r2, 0x36] - lsls r0, 16 - asrs r0, 23 - strh r0, [r2, 0x20] - lsls r1, 16 - asrs r1, 23 - strh r1, [r2, 0x22] - ldrh r0, [r2, 0x30] - subs r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _081029A2 - ldrh r0, [r2, 0x3A] - strh r0, [r2, 0x20] - ldrh r0, [r2, 0x3C] - strh r0, [r2, 0x22] -_081029A2: - movs r1, 0x30 - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _081029B0 - adds r0, r2, 0 - bl DestroyAnimSprite -_081029B0: - pop {r0} - bx r0 - thumb_func_end sub_810296C - - thumb_func_start sub_81029B4 -sub_81029B4: @ 81029B4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r0, 2 - add r0, r8 - lsls r0, 3 - ldr r1, =gTasks - adds r6, r0, r1 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x8] - ldr r0, =0x00002771 - bl AllocSpritePalette - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0xA] - movs r1, 0xA - ldrsh r0, [r6, r1] - lsls r0, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r3, r0, 16 - ldr r2, =gSprites - movs r0, 0x8 - ldrsh r1, [r6, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - lsls r4, r0, 4 - movs r5, 0x1 - ldr r2, =gPlttBufferUnfaded -_08102A0C: - adds r1, r3, r5 - lsls r1, 1 - adds r1, r2 - adds r0, r4, r5 - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0xF - bls _08102A0C - adds r0, r3, 0 - movs r1, 0x10 - movs r2, 0xB - movs r3, 0 - bl BlendPalette - movs r0, 0 - strh r0, [r6, 0xE] - movs r5, 0 - ldr r7, =gSprites - movs r1, 0x1C - adds r1, r7 - mov r9, r1 - b _08102A88 - .pool -_08102A54: - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r4, r2, r7 - ldrb r1, [r6, 0xA] - lsls r1, 4 - ldrb r3, [r4, 0x5] - movs r0, 0xF - ands r0, r3 - orrs r0, r1 - strb r0, [r4, 0x5] - movs r0, 0 - strh r0, [r4, 0x2E] - lsls r0, r5, 7 - strh r0, [r4, 0x30] - mov r0, r8 - strh r0, [r4, 0x32] - add r2, r9 - ldr r0, =sub_8102B3C - str r0, [r2] - ldrh r0, [r6, 0xE] - adds r0, 0x1 - strh r0, [r6, 0xE] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 -_08102A88: - cmp r5, 0x1 - bhi _08102A9A - movs r0, 0 - bl duplicate_obj_of_side_rel2move_in_transparent_mode - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _08102A54 -_08102A9A: - ldr r0, =sub_8102AE0 - str r0, [r6] - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80A8364 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08102AC8 - movs r1, 0x80 - lsls r1, 2 - movs r0, 0 - bl ClearGpuRegBits - b _08102AD2 - .pool -_08102AC8: - movs r1, 0x80 - lsls r1, 3 - movs r0, 0 - bl ClearGpuRegBits -_08102AD2: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81029B4 - - thumb_func_start sub_8102AE0 -sub_8102AE0: @ 8102AE0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, =gTasks - adds r0, r1 - movs r1, 0xE - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08102B32 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80A8364 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08102B1C - movs r1, 0x80 - lsls r1, 2 - movs r0, 0 - bl SetGpuRegBits - b _08102B26 - .pool -_08102B1C: - movs r1, 0x80 - lsls r1, 3 - movs r0, 0 - bl SetGpuRegBits -_08102B26: - ldr r0, =0x00002771 - bl FreeSpritePaletteByTag - adds r0, r4, 0 - bl DestroyAnimVisualTask -_08102B32: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8102AE0 - - thumb_func_start sub_8102B3C -sub_8102B3C: @ 8102B3C - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _08102B58 - movs r0, 0 - strh r0, [r5, 0x34] - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] -_08102B58: - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x40 - ble _08102B80 - ldr r2, =gTasks - movs r0, 0x32 - ldrsh r1, [r5, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0xE] - subs r1, 0x1 - strh r1, [r0, 0xE] - adds r0, r5, 0 - bl obj_delete_but_dont_free_vram - b _08102BC2 - .pool -_08102B80: - ldr r4, =gSineTable - movs r1, 0x2E - ldrsh r0, [r5, r1] - lsls r0, 1 - adds r0, r4 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0x6 - bl __divsi3 - strh r0, [r5, 0x36] - movs r1, 0x2E - ldrsh r0, [r5, r1] - lsls r0, 1 - adds r0, r4 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0xD - bl __divsi3 - strh r0, [r5, 0x38] - ldrh r1, [r5, 0x30] - adds r1, r0 - movs r0, 0xFF - ands r1, r0 - strh r1, [r5, 0x30] - movs r1, 0x30 - ldrsh r0, [r5, r1] - movs r2, 0x36 - ldrsh r1, [r5, r2] - bl Sin - strh r0, [r5, 0x24] -_08102BC2: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8102B3C - - thumb_func_start sub_8102BCC -sub_8102BCC: @ 8102BCC - push {r4,lr} - adds r4, r0, 0 - ldr r1, =DestroyAnimSprite - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A67D8 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8102BCC - - thumb_func_start sub_8102BE8 -sub_8102BE8: @ 8102BE8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r4, =gUnknown_08593020 - ldrh r0, [r4] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xFF - beq _08102C2C - lsls r0, r3, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r3, r0, 16 - movs r2, 0x1 - ldr r5, =gPlttBufferFaded -_08102C14: - adds r1, r3, r2 - lsls r1, 1 - adds r1, r5 - lsls r0, r2, 1 - adds r0, r4 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x5 - bls _08102C14 -_08102C2C: - movs r4, 0x1 - ldr r0, =gUnknown_08593020 - mov r8, r0 -_08102C32: - lsls r0, r4, 1 - adds r0, r4 - lsls r5, r0, 2 - mov r1, r8 - adds r0, r5, r1 - ldrh r0, [r0] - bl AllocSpritePalette - lsls r0, 24 - lsrs r3, r0, 24 - adds r4, 0x1 - mov r12, r4 - cmp r3, 0xFF - beq _08102C7A - lsls r0, r3, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r3, r0, 16 - movs r2, 0x1 - ldr r7, =gPlttBufferFaded - ldr r6, =gUnknown_08593020 - adds r4, r5, 0 -_08102C60: - adds r1, r3, r2 - lsls r1, 1 - adds r1, r7 - lsls r0, r2, 1 - adds r0, r4 - adds r0, r6 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x5 - bls _08102C60 -_08102C7A: - mov r1, r12 - lsls r0, r1, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _08102C32 - mov r0, r9 - bl DestroyAnimVisualTask - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8102BE8 - - thumb_func_start sub_8102CA0 -sub_8102CA0: @ 8102CA0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0x1 - ldr r6, =gUnknown_08593020 -_08102CAA: - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r6 - ldrh r0, [r0] - bl FreeSpritePaletteByTag - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _08102CAA - adds r0, r5, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8102CA0 - - thumb_func_start sub_8102CD4 -sub_8102CD4: @ 8102CD4 - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - bl sub_80A6838 - ldr r4, =gBattleAnimArgs - ldrb r1, [r4] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r2, =gUnknown_08593020 - movs r0, 0x2 - ldrsh r1, [r4, r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _08102D10 - lsls r2, r0, 4 - ldrb r1, [r5, 0x5] - movs r0, 0xF - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x5] -_08102D10: - ldrh r0, [r4, 0x2] - movs r1, 0 - strh r0, [r5, 0x30] - strh r1, [r5, 0x32] - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x34] - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _08102D34 - movs r6, 0x30 - movs r3, 0x28 - b _08102D4E - .pool -_08102D34: - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r3, r0, 24 -_08102D4E: - ldrh r0, [r5, 0x20] - lsls r1, r0, 4 - strh r1, [r5, 0x36] - ldrh r1, [r5, 0x22] - lsls r2, r1, 4 - strh r2, [r5, 0x38] - subs r0, r6, r0 - lsls r0, 16 - asrs r0, 16 - subs r1, r3, r1 - lsls r1, 16 - asrs r1, 16 - adds r2, r5, 0 - adds r2, 0x3A - adds r3, r5, 0 - adds r3, 0x3C - movs r4, 0x28 - str r4, [sp] - bl sub_8102D8C - ldr r0, =sub_8102DE4 - str r0, [r5, 0x1C] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8102CD4 - - thumb_func_start sub_8102D8C -sub_8102D8C: @ 8102D8C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r2, 0 - mov r8, r3 - ldr r2, [sp, 0x18] - lsls r1, 16 - lsrs r6, r1, 16 - lsls r2, 24 - lsrs r1, r2, 24 - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0 - bge _08102DAE - lsls r0, r1, 24 - negs r0, r0 - lsrs r1, r0, 24 -_08102DAE: - lsls r5, r2, 8 - lsls r1, 24 - asrs r1, 24 - adds r0, r5, 0 - bl __divsi3 - adds r4, r0, 0 - cmp r4, 0 - bne _08102DC2 - movs r4, 0x1 -_08102DC2: - adds r0, r5, 0 - adds r1, r4, 0 - bl __divsi3 - strh r0, [r7] - lsls r0, r6, 16 - asrs r0, 8 - adds r1, r4, 0 - bl __divsi3 - mov r1, r8 - strh r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8102D8C - - thumb_func_start sub_8102DE4 -sub_8102DE4: @ 8102DE4 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0x2E] - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r1, r0, r1 - adds r0, r1, 0 - cmp r1, 0 - bge _08102E00 - adds r0, 0xFF -_08102E00: - asrs r0, 8 - lsls r0, 8 - subs r0, r1, r0 - ldrh r1, [r4, 0x3A] - ldrh r2, [r4, 0x36] - adds r1, r2 - strh r1, [r4, 0x36] - ldrh r2, [r4, 0x3C] - ldrh r3, [r4, 0x38] - adds r2, r3 - strh r2, [r4, 0x38] - lsls r1, 16 - asrs r1, 20 - strh r1, [r4, 0x20] - lsls r2, 16 - asrs r2, 20 - strh r2, [r4, 0x22] - lsls r0, 16 - asrs r0, 16 - movs r1, 0xF - bl Sin - strh r0, [r4, 0x26] - ldrh r2, [r4, 0x22] - ldrh r0, [r4, 0x20] - adds r0, 0x10 - lsls r0, 16 - movs r1, 0x88 - lsls r1, 17 - cmp r0, r1 - bhi _08102E4E - lsls r0, r2, 16 - asrs r1, r0, 16 - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - blt _08102E4E - cmp r1, 0x80 - ble _08102E56 -_08102E4E: - adds r0, r4, 0 - bl move_anim_8074EE0 - b _08102EA6 -_08102E56: - movs r0, 0x34 - ldrsh r1, [r4, r0] - cmp r1, 0 - beq _08102EA6 - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, r1 - ble _08102EA6 - strh r5, [r4, 0x32] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _08102E7E - strh r5, [r4, 0x30] -_08102E7E: - ldr r2, =gUnknown_08593020 - movs r3, 0x30 - ldrsh r1, [r4, r3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _08102EA6 - lsls r2, r0, 4 - ldrb r1, [r4, 0x5] - movs r0, 0xF - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x5] -_08102EA6: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8102DE4 - - thumb_func_start sub_8102EB0 -sub_8102EB0: @ 8102EB0 - push {r4-r7,lr} - adds r6, r0, 0 - ldr r7, =gBattleAnimAttacker - ldrb r0, [r7] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08102ECE - ldr r1, =gBattleAnimArgs - movs r2, 0x2 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x2] -_08102ECE: - ldrb r0, [r7] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - movs r5, 0 - strh r0, [r6, 0x20] - ldrb r0, [r7] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r4, 0x4] - adds r0, r2 - strh r0, [r6, 0x22] - ldrb r1, [r4] - adds r0, r6, 0 - bl StartSpriteAnim - strh r5, [r6, 0x32] - strh r5, [r6, 0x34] - ldrh r0, [r6, 0x20] - lsls r0, 4 - strh r0, [r6, 0x36] - ldrh r0, [r6, 0x22] - lsls r0, 4 - strh r0, [r6, 0x38] - movs r1, 0x2 - ldrsh r0, [r4, r1] - lsls r0, 4 - movs r1, 0x5 - bl __divsi3 - strh r0, [r6, 0x3A] - movs r2, 0x4 - ldrsh r0, [r4, r2] - lsls r0, 7 - movs r1, 0x5 - bl __divsi3 - strh r0, [r6, 0x3C] - ldr r0, =sub_8102F40 - str r0, [r6, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8102EB0 - - thumb_func_start sub_8102F40 -sub_8102F40: @ 8102F40 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x36] - adds r0, r1 - strh r0, [r4, 0x36] - ldrh r1, [r4, 0x3C] - ldrh r2, [r4, 0x38] - adds r1, r2 - strh r1, [r4, 0x38] - lsls r0, 16 - asrs r0, 20 - strh r0, [r4, 0x20] - lsls r1, 16 - asrs r1, 20 - strh r1, [r4, 0x22] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x5 - ble _08102F9E - movs r2, 0x34 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _08102F9E - ldrh r0, [r4, 0x32] - adds r0, 0x10 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r1, 0x12 - bl Cos - strh r0, [r4, 0x24] - movs r2, 0x32 - ldrsh r0, [r4, r2] - movs r1, 0x12 - bl Sin - strh r0, [r4, 0x26] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08102F9E - movs r0, 0x1 - strh r0, [r4, 0x34] -_08102F9E: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x30 - bne _08102FB2 - adds r0, r4, 0 - bl move_anim_8074EE0 -_08102FB2: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8102F40 - - thumb_func_start sub_8102FB8 -sub_8102FB8: @ 8102FB8 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - bne _08102FDC - ldrb r0, [r5, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x10 - orrs r1, r0 - strb r1, [r5, 0x3] - movs r6, 0x10 - b _08102FDE - .pool -_08102FDC: - ldr r6, =0x0000fff0 -_08102FDE: - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x8 - strh r0, [r5, 0x22] - movs r0, 0x8 - strh r0, [r5, 0x2E] - ldr r0, =WaitAnimForDuration - str r0, [r5, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8102FB8 - - thumb_func_start sub_8103028 -sub_8103028: @ 8103028 - push {r4,r5,lr} - adds r4, r0, 0 - bl sub_80A6838 - ldrh r0, [r4, 0x22] - adds r0, 0x8 - strh r0, [r4, 0x22] - ldr r5, =gBattleAnimArgs - ldrb r1, [r5, 0x2] - adds r0, r4, 0 - bl StartSpriteAnim - ldr r2, =gUnknown_08593020 - movs r0, 0x4 - ldrsh r1, [r5, r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _08103068 - lsls r2, r0, 4 - ldrb r1, [r4, 0x5] - movs r0, 0xF - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x5] -_08103068: - movs r1, 0 - ldrsh r0, [r5, r1] - movs r2, 0x20 - cmp r0, 0 - bne _08103074 - ldr r2, =0x0000ffe0 -_08103074: - movs r0, 0x28 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x20] - strh r1, [r4, 0x30] - lsls r0, r2, 16 - asrs r0, 16 - adds r0, r1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - subs r0, 0x28 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl InitAnimLinearTranslation - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x38] - ldr r0, =sub_81030B0 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8103028 - - thumb_func_start sub_81030B0 -sub_81030B0: @ 81030B0 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimLinear - lsls r0, 24 - cmp r0, 0 - bne _08103100 - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Sin - lsls r0, 16 - lsrs r1, r0, 16 - ldrh r2, [r4, 0x24] - movs r3, 0x24 - ldrsh r0, [r4, r3] - cmp r0, 0 - bge _081030DC - lsls r0, r1, 16 - negs r0, r0 - lsrs r1, r0, 16 -_081030DC: - lsls r0, r1, 16 - asrs r0, 16 - adds r0, r2 - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Sin - ldrh r3, [r4, 0x26] - adds r0, r3 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0x8 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _08103106 -_08103100: - adds r0, r4, 0 - bl DestroyAnimSprite -_08103106: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81030B0 - - thumb_func_start sub_810310C -sub_810310C: @ 810310C - push {r4-r6,lr} - adds r6, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0810312C - adds r0, r5, 0 - movs r1, 0x5 - bl sub_80A861C - adds r0, 0x8 - b _08103136 -_0810312C: - adds r0, r5, 0 - movs r1, 0x4 - bl sub_80A861C - subs r0, 0x8 -_08103136: - strh r0, [r6, 0x20] - adds r0, r5, 0 - movs r1, 0x3 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - adds r0, r5, 0 - movs r1, 0 - bl sub_80A861C - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _08103158 - adds r0, 0x3 -_08103158: - asrs r0, 2 - subs r0, r4, r0 - strh r0, [r6, 0x22] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_810310C - - thumb_func_start sub_8103164 -sub_8103164: @ 8103164 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08103180 - ldr r0, =gBattleAnimAttacker - b _08103182 - .pool -_08103180: - ldr r0, =gBattleAnimTarget -_08103182: - ldrb r4, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_810310C - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - negs r1, r0 - orrs r1, r0 - lsrs r1, 31 - ldr r0, =gBattleAnimArgs - ldrh r0, [r0, 0x2] - strh r0, [r5, 0x2E] - adds r0, r1, 0x2 - strh r0, [r5, 0x30] - adds r0, r5, 0 - bl StartSpriteAnim - ldr r1, =sub_81031D0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A67D8 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8103164 - - thumb_func_start sub_81031D0 -sub_81031D0: @ 81031D0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _081031F8 - ldr r1, =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldrh r1, [r4, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - ldr r0, =sub_80A67D8 - str r0, [r4, 0x1C] -_081031F8: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81031D0 - - thumb_func_start sub_8103208 -sub_8103208: @ 8103208 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08103224 - ldr r0, =gBattleAnimAttacker - b _08103226 - .pool -_08103224: - ldr r0, =gBattleAnimTarget -_08103226: - ldrb r0, [r0] - adds r1, r4, 0 - bl sub_810310C - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r1, =sub_8103250 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A67BC - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8103208 - - thumb_func_start sub_8103250 -sub_8103250: @ 8103250 - 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, 0x10 - ble _08103276 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r1, =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A67BC - str r0, [r4, 0x1C] -_08103276: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8103250 - - thumb_func_start sub_8103284 -sub_8103284: @ 8103284 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _081032A0 - ldr r0, =gBattleAnimAttacker - b _081032A2 - .pool -_081032A0: - ldr r0, =gBattleAnimTarget -_081032A2: - ldrb r5, [r0] - adds r0, r5, 0 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - movs r6, 0 - strh r0, [r4, 0x20] - adds r0, r5, 0 - movs r1, 0x2 - bl sub_80A861C - strh r0, [r4, 0x22] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bgt _081032CA - movs r0, 0xA - strh r0, [r4, 0x22] -_081032CA: - movs r0, 0x1 - strh r0, [r4, 0x2E] - strh r6, [r4, 0x30] - adds r1, r4, 0 - adds r1, 0x43 - ldrb r0, [r1] - strh r0, [r4, 0x32] - ldrb r0, [r1] - adds r0, 0x4 - strh r0, [r4, 0x34] - strh r6, [r4, 0x36] - ldr r1, =sub_8103300 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A67BC - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8103284 - - thumb_func_start sub_8103300 -sub_8103300: @ 8103300 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x36] - adds r0, 0x1 - strh r0, [r1, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - ble _08103316 - ldr r0, =sub_8103320 - str r0, [r1, 0x1C] -_08103316: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8103300 - - thumb_func_start sub_8103320 -sub_8103320: @ 8103320 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x30] - adds r1, r0, 0x4 - strh r1, [r2, 0x30] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFE - ble _08103352 - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bne _0810334C - strh r0, [r2, 0x24] - ldr r0, =sub_8103250 - str r0, [r2, 0x1C] - b _08103388 - .pool -_0810334C: - movs r0, 0xFF - ands r1, r0 - strh r1, [r2, 0x30] -_08103352: - movs r1, 0x30 - ldrsh r0, [r2, r1] - cmp r0, 0x4F - ble _08103362 - ldrh r0, [r2, 0x34] - adds r1, r2, 0 - adds r1, 0x43 - strb r0, [r1] -_08103362: - movs r3, 0x30 - ldrsh r0, [r2, r3] - cmp r0, 0x9F - ble _08103372 - ldrh r0, [r2, 0x32] - adds r1, r2, 0 - adds r1, 0x43 - strb r0, [r1] -_08103372: - ldr r1, =gSineTable - movs r3, 0x30 - ldrsh r0, [r2, r3] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 19 - asrs r1, r0, 1 - adds r0, r1 - strh r0, [r2, 0x24] -_08103388: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8103320 - - thumb_func_start sub_8103390 -sub_8103390: @ 8103390 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _081033AC - ldr r0, =gBattleAnimAttacker - b _081033AE - .pool -_081033AC: - ldr r0, =gBattleAnimTarget -_081033AE: - ldrb r4, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_810310C - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _081033D4 - adds r0, r5, 0 - movs r1, 0 - bl StartSpriteAnim - movs r0, 0x2 - b _081033DE - .pool -_081033D4: - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0x3 -_081033DE: - strh r0, [r5, 0x2E] - ldr r0, =sub_81033F0 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8103390 - - thumb_func_start sub_81033F0 -sub_81033F0: @ 81033F0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - ble _0810341E - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x2E] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - ldr r1, =sub_810342C - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A67D8 - str r0, [r4, 0x1C] -_0810341E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81033F0 - - thumb_func_start sub_810342C -sub_810342C: @ 810342C - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _08103444 - adds r0, r1, 0 - bl DestroyAnimSprite -_08103444: - pop {r0} - bx r0 - thumb_func_end sub_810342C - - .align 2, 0 diff --git a/asm/battle_anim_effects_2.s b/asm/battle_anim_effects_2.s deleted file mode 100644 index c8cd53398..000000000 --- a/asm/battle_anim_effects_2.s +++ /dev/null @@ -1,7544 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8103448 -sub_8103448: @ 8103448 - push {r4,r5,lr} - adds r4, r0, 0 - bl sub_80A6838 - ldr r5, =gBattleAnimArgs - movs r0, 0 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl sub_80A6864 - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x30] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x32] - ldrh r0, [r5, 0xA] - strh r0, [r4, 0x34] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x36] - ldr r1, =move_anim_8074EE0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r1, =sub_80A6450 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8103448 - - thumb_func_start sub_8103498 -sub_8103498: @ 8103498 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _081034B4 - ldr r0, =gBattleAnimAttacker - b _081034B6 - .pool -_081034B4: - ldr r0, =gBattleAnimTarget -_081034B6: - ldrb r0, [r0] - adds r1, r4, 0 - bl sub_810310C - movs r0, 0 - strh r0, [r4, 0x2E] - strh r0, [r4, 0x30] - ldr r0, =sub_81034D8 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8103498 - - thumb_func_start sub_81034D8 -sub_81034D8: @ 81034D8 - push {lr} - adds r1, r0, 0 - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0x1 - beq _0810350A - cmp r0, 0x1 - bgt _081034EE - cmp r0, 0 - beq _081034F4 - b _08103538 -_081034EE: - cmp r0, 0x2 - beq _08103524 - b _08103538 -_081034F4: - ldrh r0, [r1, 0x26] - subs r0, 0x3 - strh r0, [r1, 0x26] - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _08103538 - b _0810351C -_0810350A: - ldrh r0, [r1, 0x26] - adds r0, 0x3 - strh r0, [r1, 0x26] - ldrh r0, [r1, 0x30] - subs r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - cmp r0, 0 - bne _08103538 -_0810351C: - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - b _08103538 -_08103524: - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x40 - bne _08103538 - adds r0, r1, 0 - bl DestroyAnimSprite -_08103538: - pop {r0} - bx r0 - thumb_func_end sub_81034D8 - - thumb_func_start sub_810353C -sub_810353C: @ 810353C - push {r4,lr} - adds r4, r0, 0 - ldr r3, =gSprites - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r4, 0x30] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0x30] - movs r0, 0x2E - ldrsh r2, [r4, r0] - cmp r2, 0 - bne _0810357A - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x24] - adds r0, r4, 0 - bl move_anim_8074EE0 -_0810357A: - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810353C - - thumb_func_start sub_810358C -sub_810358C: @ 810358C - push {r4-r6,lr} - adds r5, r0, 0 - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r1, =gBattlerSpriteIds - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r6, [r0] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _081035E4 - ldr r0, =gBattleAnimArgs - ldrh r1, [r5, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r5, 0x20] - adds r1, r0, 0 - b _081035EE - .pool -_081035E4: - ldr r1, =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r5, 0x20] - adds r0, r2 - strh r0, [r5, 0x20] -_081035EE: - ldrh r0, [r1, 0x2] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r5, 0x30] - strh r6, [r5, 0x32] - ldr r0, =sub_810353C - str r0, [r5, 0x1C] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810358C - - thumb_func_start sub_8103620 -sub_8103620: @ 8103620 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitAnimSpritePos - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x38] - ldr r0, =WaitAnimForDuration - str r0, [r4, 0x1C] - ldr r1, =sub_8103658 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8103620 - - thumb_func_start sub_8103658 -sub_8103658: @ 8103658 - push {lr} - ldrh r1, [r0, 0x30] - strh r1, [r0, 0x2E] - ldrh r1, [r0, 0x20] - strh r1, [r0, 0x32] - ldrh r1, [r0, 0x22] - adds r1, 0xF - strh r1, [r0, 0x36] - ldr r1, =StartAnimLinearTranslation - str r1, [r0, 0x1C] - ldr r1, =sub_8103680 - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .pool - thumb_func_end sub_8103658 - - thumb_func_start sub_8103680 -sub_8103680: @ 8103680 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1, 0x38] - movs r3, 0x38 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _08103696 - adds r0, r1, 0 - bl DestroyAnimSprite - b _0810369A -_08103696: - subs r0, r2, 0x1 - strh r0, [r1, 0x38] -_0810369A: - pop {r0} - bx r0 - thumb_func_end sub_8103680 - - thumb_func_start sub_81036A0 -sub_81036A0: @ 81036A0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, =gBattlerSpriteIds - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl sub_80A7270 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_81036DC - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81036A0 - - thumb_func_start sub_81036DC -sub_81036DC: @ 81036DC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =gBattlerSpriteIds - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - adds r1, r0, r1 - ldrb r4, [r1] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08103718 - ldr r1, =gTasks - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x8] - negs r0, r0 - lsls r0, 16 - lsrs r3, r0, 16 - adds r6, r2, 0 - b _08103726 - .pool -_08103718: - ldr r2, =gTasks - lsls r1, r5, 2 - adds r0, r1, r5 - lsls r0, 3 - adds r0, r2 - ldrh r3, [r0, 0x8] - adds r6, r1, 0 -_08103726: - movs r2, 0x80 - lsls r2, 1 - adds r0, r4, 0 - adds r1, r2, 0 - bl obj_id_set_rotscale - ldr r1, =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r1, r0, r1 - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _08103760 - ldrh r0, [r1, 0x8] - adds r0, 0xB0 - strh r0, [r1, 0x8] - ldr r1, =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x26] - adds r1, 0x1 - b _0810378A - .pool -_08103760: - cmp r0, 0x1 - bne _08103776 - ldrh r0, [r1, 0xE] - adds r0, 0x1 - strh r0, [r1, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - bne _081037D0 - movs r0, 0x2 - b _081037CE -_08103776: - ldrh r0, [r1, 0x8] - subs r0, 0xB0 - strh r0, [r1, 0x8] - ldr r1, =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x26] - subs r1, 0x1 -_0810378A: - strh r1, [r0, 0x26] - adds r0, r4, 0 - bl sub_80A73A0 - ldr r0, =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - movs r3, 0x8 - ldrsh r2, [r1, r3] - movs r0, 0xF2 - lsls r0, 4 - cmp r2, r0 - beq _081037AA - cmp r2, 0 - bne _081037D0 -_081037AA: - ldrh r2, [r1, 0xA] - movs r3, 0xA - ldrsh r0, [r1, r3] - cmp r0, 0x2 - bne _081037CC - adds r0, r4, 0 - bl sub_80A7344 - adds r0, r5, 0 - bl DestroyAnimVisualTask - b _081037D0 - .pool -_081037CC: - adds r0, r2, 0x1 -_081037CE: - strh r0, [r1, 0xA] -_081037D0: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_81036DC - - thumb_func_start sub_81037D8 -sub_81037D8: @ 81037D8 - push {r4,r5,lr} - adds r4, r0, 0 - bl sub_80A6838 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08103804 - ldr r0, =gBattleAnimArgs - ldrh r1, [r4, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r4, 0x20] - adds r5, r0, 0 - b _08103810 - .pool -_08103804: - ldr r1, =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - adds r5, r1, 0 -_08103810: - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0810384C - adds r3, r4, 0 - adds r3, 0x3F - ldrb r0, [r3] - movs r1, 0x1 - adds r2, r0, 0 - orrs r2, r1 - strb r2, [r3] - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _08103860 - movs r0, 0x2 - orrs r2, r0 - strb r2, [r3] - b _08103860 - .pool -_0810384C: - movs r2, 0x4 - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _08103860 - adds r2, r4, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] -_08103860: - ldr r0, =sub_80A67D8 - str r0, [r4, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81037D8 - - thumb_func_start sub_810387C -sub_810387C: @ 810387C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl InitAnimSpritePos - ldr r0, =sub_80A67BC - str r0, [r4, 0x1C] - ldr r1, =sub_81038A0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810387C - - thumb_func_start sub_81038A0 -sub_81038A0: @ 81038A0 - push {lr} - movs r1, 0x6 - strh r1, [r0, 0x2E] - ldrh r1, [r0, 0x20] - strh r1, [r0, 0x32] - ldrh r1, [r0, 0x22] - subs r1, 0x20 - strh r1, [r0, 0x36] - ldr r1, =StartAnimLinearTranslation - str r1, [r0, 0x1C] - ldr r1, =DestroyAnimSprite - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .pool - thumb_func_end sub_81038A0 - - thumb_func_start sub_81038C8 -sub_81038C8: @ 81038C8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r5, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _081038EC - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - b _0810390E - .pool -_081038EC: - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0810390E - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] - ldrh r0, [r1, 0x6] - negs r0, r0 - strh r0, [r1, 0x6] -_0810390E: - adds r0, r5, 0 - movs r1, 0x1 - bl InitAnimSpritePos - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r6, =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r6, 0x4] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r2, [r6, 0x6] - adds r0, r2 - lsls r0, 16 - lsrs r0, 16 - adds r7, r0, 0 - ldrh r1, [r5, 0x20] - mov r2, r8 - lsls r0, r2, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r5, 0x22] - lsls r1, r7, 16 - asrs r1, 16 - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl ArcTan2Neg - lsls r0, 16 - movs r1, 0xF0 - lsls r1, 24 - adds r0, r1 - lsrs r4, r0, 16 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _08103980 - ldr r2, =0xffffa000 - adds r0, r4, r2 - lsls r0, 16 - lsrs r4, r0, 16 -_08103980: - movs r3, 0x80 - lsls r3, 1 - str r4, [sp] - adds r0, r5, 0 - movs r1, 0 - adds r2, r3, 0 - bl sub_80A73E0 - ldrh r0, [r6, 0x8] - strh r0, [r5, 0x2E] - mov r0, r8 - strh r0, [r5, 0x32] - strh r7, [r5, 0x36] - ldr r0, =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81038C8 - - thumb_func_start sub_81039CC -sub_81039CC: @ 81039CC - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - subs r1, r0, 0x1 - strh r1, [r3, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _081039F6 - ldr r2, =gTasks - movs r0, 0x3C - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0xA] - subs r1, 0x1 - strh r1, [r0, 0xA] - adds r0, r3, 0 - bl DestroySprite -_081039F6: - pop {r0} - bx r0 - .pool - thumb_func_end sub_81039CC - - thumb_func_start sub_8103A00 -sub_8103A00: @ 8103A00 - push {r4,lr} - adds r2, r0, 0 - movs r0, 0x3C - ldrsh r1, [r2, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, =gTasks - adds r4, r0, r1 - movs r3, 0x2E - ldrsh r1, [r2, r3] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - ble _08103A34 - ldrh r0, [r2, 0x34] - ldrh r1, [r2, 0x38] - adds r0, r1 - strh r0, [r2, 0x38] - ldrh r0, [r2, 0x36] - ldrh r3, [r2, 0x3A] - adds r0, r3 - b _08103A42 - .pool -_08103A34: - ldrh r0, [r2, 0x38] - ldrh r1, [r2, 0x34] - subs r0, r1 - strh r0, [r2, 0x38] - ldrh r0, [r2, 0x3A] - ldrh r1, [r2, 0x36] - subs r0, r1 -_08103A42: - strh r0, [r2, 0x3A] - ldrh r0, [r2, 0x38] - ldrh r1, [r2, 0x30] - adds r3, r0, r1 - strh r3, [r2, 0x30] - ldrh r0, [r2, 0x3A] - ldrh r1, [r2, 0x32] - adds r0, r1 - strh r0, [r2, 0x32] - ldrh r1, [r4, 0x16] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08103A66 - lsls r0, r3, 16 - lsrs r0, 24 - negs r0, r0 - b _08103A6A -_08103A66: - lsls r0, r3, 16 - lsrs r0, 24 -_08103A6A: - strh r0, [r2, 0x24] - ldrh r1, [r4, 0x18] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08103A7E - ldrh r0, [r2, 0x32] - lsrs r0, 8 - negs r0, r0 - b _08103A82 -_08103A7E: - ldrh r0, [r2, 0x32] - lsrs r0, 8 -_08103A82: - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x2E] - subs r1, r0, 0x1 - strh r1, [r2, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _08103A98 - movs r0, 0x1E - strh r0, [r2, 0x2E] - ldr r0, =sub_81039CC - str r0, [r2, 0x1C] -_08103A98: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8103A00 - - thumb_func_start sub_8103AA4 -sub_8103AA4: @ 8103AA4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - movs r0, 0x3C - ldrsh r1, [r7, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, =gTasks - adds r6, r0, r1 - ldrh r2, [r6, 0x16] - movs r1, 0x2 - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - ldrh r3, [r7, 0x30] - adds r2, r0, r3 - strh r2, [r7, 0x30] - ldrh r0, [r6, 0x18] - ands r1, r0 - ldrh r0, [r7, 0x32] - adds r1, r0 - strh r1, [r7, 0x32] - ldrh r1, [r6, 0x16] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08103AEC - lsls r0, r2, 16 - lsrs r0, 24 - negs r0, r0 - b _08103AF0 - .pool -_08103AEC: - lsls r0, r2, 16 - lsrs r0, 24 -_08103AF0: - strh r0, [r7, 0x24] - ldrh r1, [r6, 0x18] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08103B04 - ldrh r0, [r7, 0x32] - lsrs r0, 8 - negs r0, r0 - b _08103B08 -_08103B04: - ldrh r0, [r7, 0x32] - lsrs r0, 8 -_08103B08: - strh r0, [r7, 0x26] - ldrh r0, [r7, 0x2E] - subs r1, r0, 0x1 - strh r1, [r7, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _08103BD4 - movs r4, 0 - movs r0, 0x8 - strh r0, [r7, 0x2E] - movs r0, 0x4 - strh r0, [r6, 0x12] - movs r0, 0x80 - lsls r0, 5 - bl sub_8151624 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r7, 0x24] - ldrh r1, [r7, 0x20] - adds r2, r0, r1 - strh r2, [r7, 0x20] - ldrh r0, [r7, 0x26] - ldrh r3, [r7, 0x22] - adds r0, r3 - strh r0, [r7, 0x22] - strh r4, [r7, 0x26] - strh r4, [r7, 0x24] - ldrh r3, [r6, 0x1E] - movs r0, 0x1E - ldrsh r1, [r6, r0] - lsls r0, r2, 16 - asrs r0, 16 - cmp r1, r0 - blt _08103B52 - subs r0, r3, r2 - b _08103B54 -_08103B52: - subs r0, r2, r3 -_08103B54: - lsls r0, 24 - lsrs r4, r0, 16 - ldrh r3, [r6, 0x20] - movs r0, 0x20 - ldrsh r1, [r6, r0] - ldrh r2, [r7, 0x22] - movs r6, 0x22 - ldrsh r0, [r7, r6] - cmp r1, r0 - blt _08103B6C - subs r0, r3, r2 - b _08103B6E -_08103B6C: - subs r0, r2, r3 -_08103B6E: - lsls r0, 24 - lsrs r0, 16 - mov r8, r0 - movs r0, 0 - strh r0, [r7, 0x32] - strh r0, [r7, 0x30] - strh r0, [r7, 0x3A] - strh r0, [r7, 0x38] - lsls r0, r4, 16 - asrs r0, 16 - lsls r5, 16 - asrs r5, 16 - adds r1, r5, 0 - bl sub_8151534 - adds r4, r0, 0 - lsls r4, 16 - asrs r4, 16 - movs r6, 0xE0 - lsls r6, 1 - adds r0, r6, 0 - bl sub_8151624 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_8151534 - strh r0, [r7, 0x34] - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - adds r1, r5, 0 - bl sub_8151534 - adds r4, r0, 0 - lsls r4, 16 - asrs r4, 16 - adds r0, r6, 0 - bl sub_8151624 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_8151534 - strh r0, [r7, 0x36] - ldr r0, =sub_8103A00 - str r0, [r7, 0x1C] -_08103BD4: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8103AA4 - - thumb_func_start sub_8103BE4 -sub_8103BE4: @ 8103BE4 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0xA - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08103C02 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_08103C02: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8103BE4 - - thumb_func_start sub_8103C0C -sub_8103C0C: @ 8103C0C - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - subs r1, r0, 0x1 - strh r1, [r5, 0x8] - lsls r0, 16 - cmp r0, 0 - bgt _08103CE0 - ldr r0, =gUnknown_085933B0 - movs r2, 0x1A - ldrsh r1, [r5, r2] - movs r3, 0x1C - ldrsh r2, [r5, r3] - ldrb r3, [r5, 0xC] - ldrb r4, [r5, 0xA] - subs r3, r4 - lsls r3, 24 - lsrs r3, 24 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - lsls r0, 4 - add r0, r12 - lsls r0, 2 - ldr r1, =gSprites - adds r6, r0, r1 - movs r1, 0x10 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _08103C6C - cmp r0, 0x2 - beq _08103C82 - b _08103C90 - .pool -_08103C6C: - ldrb r2, [r6, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x18 - orrs r1, r0 - lsls r1, 1 - subs r0, 0x57 - ands r0, r2 - orrs r0, r1 - strb r0, [r6, 0x3] - b _08103C90 -_08103C82: - ldrb r0, [r6, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x10 - orrs r1, r0 - strb r1, [r6, 0x3] -_08103C90: - ldr r3, =gTasks - lsls r2, r7, 2 - adds r2, r7 - lsls r2, 3 - adds r4, r2, r3 - ldrh r0, [r4, 0x12] - ldrh r1, [r4, 0x14] - subs r0, r1 - strh r0, [r6, 0x2E] - strh r7, [r6, 0x3C] - movs r1, 0xA - ldrsh r0, [r4, r1] - adds r0, 0xD - lsls r0, 1 - adds r0, r2 - adds r3, 0x8 - adds r0, r3 - mov r2, r12 - strh r2, [r0] - ldrh r0, [r4, 0xE] - strh r0, [r4, 0x8] - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - movs r0, 0x3F - negs r0, r0 - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x9A - bl PlaySE12WithPanning - movs r3, 0xA - ldrsh r0, [r4, r3] - cmp r0, 0x2 - ble _08103CE0 - ldr r0, =sub_8103BE4 - str r0, [r4] -_08103CE0: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8103C0C - - thumb_func_start sub_8103CF0 -sub_8103CF0: @ 8103CF0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0 - mov r9, r0 - movs r5, 0 - mov r0, sp - mov r1, r9 - strh r1, [r0] - mov r4, sp - adds r4, 0x2 - strh r1, [r4] - bl IsContest - lsls r0, 24 - mov r10, r4 - cmp r0, 0 - beq _08103D5C - ldr r1, =gTasks - lsls r2, r7, 2 - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0x2 - strh r1, [r0, 0x10] - ldr r3, =gBattleAnimArgs - ldrh r0, [r3] - negs r0, r0 - strh r0, [r3] - ldrh r1, [r3, 0x4] - movs r0, 0x1 - ands r0, r1 - mov r8, r2 - cmp r0, 0 - beq _08103D54 - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strh r0, [r3, 0x4] - b _08103DB6 - .pool -_08103D54: - movs r0, 0x1 - orrs r0, r1 - strh r0, [r3, 0x4] - b _08103DB6 -_08103D5C: - ldr r1, =gBattlerPositions - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - lsls r2, r7, 2 - mov r8, r2 - cmp r0, 0 - bne _08103DB6 - ldr r1, =gTasks - adds r0, r2, r7 - lsls r0, 3 - adds r0, r1 - strh r3, [r0, 0x10] - ldr r2, =gBattleAnimArgs - ldrh r0, [r2] - negs r0, r0 - strh r0, [r2] - ldrh r0, [r2, 0x2] - negs r0, r0 - strh r0, [r2, 0x2] - ldrh r1, [r2, 0x4] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08103DB0 - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - b _08103DB4 - .pool -_08103DB0: - movs r0, 0x1 - orrs r0, r1 -_08103DB4: - strh r0, [r2, 0x4] -_08103DB6: - ldr r5, =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - ldr r1, =gTasks - mov r3, r8 - adds r4, r3, r7 - lsls r4, 3 - adds r4, r1 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1A] - adds r6, r0, 0 - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x1C] - mov r9, r0 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08103E20 - ldr r4, =gBattleAnimTarget - ldrb r1, [r4] - movs r0, 0x2 - eors r0, r1 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _08103E20 - ldrb r0, [r4] - movs r1, 0 - mov r2, sp - mov r3, r10 - bl SetAverageBattlerPositions - b _08103E42 - .pool -_08103E20: - mov r5, sp - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - mov r1, r10 - strh r0, [r1] -_08103E42: - mov r4, sp - ldr r0, =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - mov r2, sp - ldr r3, =gBattleAnimArgs - ldrh r0, [r3] - ldrh r2, [r2] - adds r0, r2 - strh r0, [r1, 0x1E] - strh r0, [r4] - ldrh r0, [r3, 0x2] - mov r3, r10 - ldrh r3, [r3] - adds r0, r3 - strh r0, [r1, 0x20] - mov r1, r10 - strh r0, [r1] - mov r0, sp - ldrh r2, [r0] - movs r3, 0 - ldrsh r0, [r0, r3] - adds r1, r6, 0 - cmp r0, r1 - blt _08103E88 - subs r0, r2, r1 - b _08103E8A - .pool -_08103E88: - subs r0, r1, r2 -_08103E8A: - lsls r0, 16 - lsrs r0, 16 - lsls r4, r0, 16 - asrs r4, 16 - ldr r5, =gBattleAnimArgs - ldrh r1, [r5, 0x4] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - lsls r0, 16 - asrs r0, 16 - bl sub_8151624 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_8151534 - ldr r2, =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r6, r1, r2 - strh r0, [r6, 0x12] - movs r1, 0x12 - ldrsh r0, [r6, r1] - movs r1, 0x80 - bl sub_8151534 - strh r0, [r6, 0x14] - ldrh r0, [r5, 0x4] - strh r0, [r6, 0x16] - mov r2, r10 - ldrh r1, [r2] - movs r3, 0 - ldrsh r0, [r2, r3] - mov r4, r9 - cmp r0, r4 - blt _08103F08 - subs r4, r1, r4 - lsls r4, 16 - asrs r4, 16 - movs r1, 0x12 - ldrsh r0, [r6, r1] - bl sub_8151624 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_8151534 - movs r1, 0x2 - negs r1, r1 - ands r1, r0 - strh r1, [r6, 0x18] - b _08103F28 - .pool -_08103F08: - subs r4, r1 - lsls r4, 16 - asrs r4, 16 - movs r2, 0x12 - ldrsh r0, [r6, r2] - bl sub_8151624 - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl sub_8151534 - movs r1, 0x1 - orrs r0, r1 - strh r0, [r6, 0x18] -_08103F28: - ldr r1, =gTasks - mov r3, r8 - adds r0, r3, r7 - lsls r0, 3 - adds r5, r0, r1 - ldr r4, =gBattleAnimArgs - ldrh r0, [r4, 0x6] - strh r0, [r5, 0xE] - ldrh r1, [r4, 0x8] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08103F78 - movs r0, 0x80 - eors r0, r1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3F - ble _08103FA0 - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl sub_80A82E4 - lsls r0, 24 - lsrs r0, 24 - ldr r2, =0x0000ffc0 - adds r1, r2, 0 - ldrh r4, [r4, 0x8] - adds r1, r4 - adds r0, r1 - b _08103FB0 - .pool -_08103F78: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x3F - ble _08103FA0 - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl sub_80A82E4 - lsls r0, 24 - lsrs r0, 24 - ldr r3, =0x0000ffc0 - adds r1, r3, 0 - ldrh r4, [r4, 0x8] - adds r1, r4 - adds r0, r1 - b _08103FB0 - .pool -_08103FA0: - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl sub_80A82E4 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x8] - subs r0, r1 -_08103FB0: - strh r0, [r5, 0xC] - ldr r0, =gTasks - mov r2, r8 - adds r1, r2, r7 - lsls r1, 3 - adds r1, r0 - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0x2 - bgt _08103FC8 - movs r0, 0x3 - strh r0, [r1, 0xC] -_08103FC8: - ldr r0, =sub_8103C0C - str r0, [r1] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8103CF0 - - thumb_func_start sub_8103FE8 -sub_8103FE8: @ 8103FE8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl InitAnimSpritePos - ldr r0, =gUnknown_085934A0 - ldrh r0, [r0, 0x2] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - strh r0, [r4, 0x2E] - ldr r0, =sub_8104018 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8103FE8 - - thumb_func_start sub_8104018 -sub_8104018: @ 8104018 - push {r4-r7,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _0810407C - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r5, [r4, 0x2E] - ldr r1, =gPlttBufferFaded - adds r0, r5, 0 - adds r0, 0x8 - lsls r0, 1 - adds r0, r1 - ldrh r7, [r0] - adds r6, r1, 0 - adds r1, r5, 0 - adds r1, 0x9 - lsls r0, r5, 1 - adds r0, r6 - adds r2, r0, 0 - adds r2, 0x10 - movs r3, 0x7 - lsls r1, 1 - adds r1, r6 -_08104050: - ldrh r0, [r1] - strh r0, [r2] - adds r1, 0x2 - adds r2, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _08104050 - adds r0, r5, 0 - adds r0, 0xF - lsls r0, 1 - adds r0, r6 - strh r7, [r0] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x18 - bne _0810407C - adds r0, r4, 0 - bl DestroyAnimSprite -_0810407C: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104018 - - thumb_func_start sub_8104088 -sub_8104088: @ 8104088 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r1, 0x1 - bl InitAnimSpritePos - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x6] - adds r0, r1 - lsls r0, 16 - lsrs r7, r0, 16 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _081040CC - ldrh r0, [r4, 0x4] - negs r0, r0 - strh r0, [r4, 0x4] -_081040CC: - lsls r0, r6, 16 - asrs r0, 16 - ldrh r1, [r4, 0x4] - adds r0, r1 - lsls r0, 16 - ldrh r1, [r5, 0x20] - lsrs r6, r0, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r5, 0x22] - lsls r1, r7, 16 - asrs r1, 16 - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl ArcTan2Neg - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 24 - adds r0, r1 - lsrs r0, 16 - movs r3, 0x80 - lsls r3, 1 - str r0, [sp] - adds r0, r5, 0 - movs r1, 0 - adds r2, r3, 0 - bl sub_80A73E0 - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x2E] - strh r6, [r5, 0x32] - strh r7, [r5, 0x36] - ldr r0, =sub_80A7000 - str r0, [r5, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104088 - - thumb_func_start sub_810413C -sub_810413C: @ 810413C - ldr r1, =0x0000fff0 - strh r1, [r0, 0x32] - ldrh r1, [r0, 0x22] - adds r1, 0x8 - strh r1, [r0, 0x22] - ldr r1, =sub_8104154 - str r1, [r0, 0x1C] - bx lr - .pool - thumb_func_end sub_810413C - - thumb_func_start sub_8104154 -sub_8104154: @ 8104154 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x80 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08104178 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] -_08104178: - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x5 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7E - ble _081041B8 - movs r0, 0 - strh r0, [r4, 0x30] - movs r1, 0x32 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _081041B8 - adds r0, r4, 0 - bl DestroyAnimSprite -_081041B8: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104154 - - thumb_func_start sub_81041C4 -sub_81041C4: @ 81041C4 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitAnimSpritePos - movs r0, 0x14 - strh r0, [r4, 0x2E] - ldr r5, =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, =StartAnimLinearTranslation - str r0, [r4, 0x1C] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, =sub_810421C - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81041C4 - - thumb_func_start sub_810421C -sub_810421C: @ 810421C - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xA6 - bl PlaySE12WithPanning - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - movs r1, 0 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - strh r1, [r4, 0x26] - strh r1, [r4, 0x24] - movs r2, 0 - movs r1, 0x7 - adds r0, r4, 0 - adds r0, 0x3C -_08104250: - strh r2, [r0] - subs r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _08104250 - bl Random2 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x7 - ands r0, r1 - ldr r2, =0x0000fff4 - adds r1, r2, 0 - subs r1, r0 - strh r1, [r4, 0x3A] - bl Random2 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA0 - bl __umodsi3 - adds r0, 0xA0 - strh r0, [r4, 0x3C] - ldr r0, =sub_81042A0 - str r0, [r4, 0x1C] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810421C - - thumb_func_start sub_81042A0 -sub_81042A0: @ 81042A0 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x3C] - ldrh r2, [r4, 0x2E] - adds r0, r1, r2 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r2, r0, 24 - strh r2, [r4, 0x24] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _081042BE - negs r0, r2 - strh r0, [r4, 0x24] -_081042BE: - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r2, 0x3A - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x8 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7E - ble _081042FE - movs r0, 0 - strh r0, [r4, 0x30] - movs r1, 0x32 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _081042FE - adds r0, r4, 0 - bl DestroyAnimSprite -_081042FE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81042A0 - - thumb_func_start sub_8104304 -sub_8104304: @ 8104304 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl InitAnimSpritePos - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08104322 - ldrh r0, [r4, 0x22] - adds r0, 0x10 - strh r0, [r4, 0x22] -_08104322: - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x32] - ldrh r0, [r1, 0xC] - strh r0, [r4, 0x34] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x36] - ldr r0, =sub_80A62EC - str r0, [r4, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104304 - - thumb_func_start sub_8104364 -sub_8104364: @ 8104364 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - movs r7, 0x20 - ldr r4, =0x0000ffe0 - movs r0, 0x10 - mov r8, r0 - ldr r6, =0x0000fff0 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _08104390 - adds r7, r4, 0 - movs r4, 0x20 - mov r8, r6 - movs r6, 0x10 - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim -_08104390: - lsls r0, r7, 16 - asrs r0, 16 - ldrh r1, [r5, 0x20] - adds r0, r1 - strh r0, [r5, 0x20] - lsls r0, r4, 16 - asrs r0, 16 - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - movs r0, 0x6 - strh r0, [r5, 0x2E] - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - add r0, r8 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x36] - ldr r0, =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, =sub_81043F8 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104364 - - thumb_func_start sub_81043F8 -sub_81043F8: @ 81043F8 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0810440E - adds r0, r2, 0 - bl DestroyAnimSprite -_0810440E: - pop {r0} - bx r0 - thumb_func_end sub_81043F8 - - thumb_func_start sub_8104414 -sub_8104414: @ 8104414 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - movs r0, 0x20 - mov r8, r0 - ldr r4, =0x0000ffe0 - movs r2, 0x10 - mov r9, r2 - ldr r6, =0x0000fff0 - ldr r7, =gBattleAnimArgs - ldrh r1, [r7] - movs r2, 0 - ldrsh r0, [r7, r2] - cmp r0, 0 - beq _08104448 - mov r8, r4 - movs r4, 0x20 - mov r9, r6 - movs r6, 0x10 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim -_08104448: - mov r0, r8 - lsls r1, r0, 16 - asrs r1, 16 - ldrh r2, [r5, 0x20] - adds r1, r2 - strh r1, [r5, 0x20] - lsls r0, r4, 16 - asrs r0, 16 - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - movs r0, 0x6 - strh r0, [r5, 0x2E] - strh r1, [r5, 0x30] - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - add r0, r9 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl InitAnimLinearTranslation - ldrh r0, [r7] - strh r0, [r5, 0x38] - ldrh r0, [r5, 0x2E] - strh r0, [r5, 0x3A] - ldr r0, =sub_81044BC - str r0, [r5, 0x1C] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104414 - - thumb_func_start sub_81044BC -sub_81044BC: @ 81044BC - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimLinear - lsls r0, 24 - cmp r0, 0 - beq _08104520 - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08104520 - adds r0, r4, 0 - movs r1, 0 - bl SeekSpriteAnim - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - movs r2, 0 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - movs r0, 0x2 - strh r0, [r4, 0x24] - ldr r0, =0x0000fffe - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x32] - eors r0, r1 - strh r0, [r4, 0x32] - strh r2, [r4, 0x36] - strh r2, [r4, 0x34] - ldr r0, =sub_8104530 - str r0, [r4, 0x1C] -_08104520: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81044BC - - thumb_func_start sub_8104530 -sub_8104530: @ 8104530 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08104548 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x26] - negs r0, r0 - strh r0, [r4, 0x26] -_08104548: - ldrh r0, [r4, 0x34] - movs r1, 0x1 - eors r0, r1 - movs r1, 0 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x33 - bne _0810458A - strh r1, [r4, 0x26] - strh r1, [r4, 0x24] - strh r1, [r4, 0x36] - strh r1, [r4, 0x34] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x38] - movs r1, 0x1 - eors r1, r0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - ldr r0, =sub_8104594 - str r0, [r4, 0x1C] -_0810458A: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104530 - - thumb_func_start sub_8104594 -sub_8104594: @ 8104594 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimLinear - lsls r0, 24 - cmp r0, 0 - beq _081045A8 - adds r0, r4, 0 - bl DestroyAnimSprite -_081045A8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8104594 - - thumb_func_start sub_81045B0 -sub_81045B0: @ 81045B0 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80A7270 - adds r0, r4, 0 - movs r1, 0xD0 - movs r2, 0xD0 - movs r3, 0 - bl obj_id_set_rotscale - ldr r1, =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - movs r1, 0 - bl sub_80A750C - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0x50 - strh r1, [r0, 0x8] - ldr r1, =sub_8104614 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81045B0 - - thumb_func_start sub_8104614 -sub_8104614: @ 8104614 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x8] - subs r1, 0x1 - strh r1, [r0, 0x8] - lsls r1, 16 - asrs r1, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _08104664 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_80A7344 - ldr r1, =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x5] - lsrs r0, 4 - adds r0, 0x10 - movs r1, 0x1 - bl sub_80A750C - adds r0, r5, 0 - bl DestroyAnimVisualTask -_08104664: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104614 - - thumb_func_start sub_8104674 -sub_8104674: @ 8104674 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r4, 0x8] - movs r1, 0 - bl sub_80A7270 - strh r5, [r4, 0xA] - strh r5, [r4, 0xC] - strh r5, [r4, 0xE] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0x10] - strh r5, [r4, 0x12] - strh r5, [r4, 0x14] - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl sub_80A82E4 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x16] - ldr r0, =sub_81046CC - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104674 - - thumb_func_start sub_81046CC -sub_81046CC: @ 81046CC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks - adds r4, r0, r1 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x5 - bls _081046E6 - b _081047F6 -_081046E6: - lsls r0, 2 - ldr r1, =_081046F8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081046F8: - .4byte _08104710 - .4byte _08104758 - .4byte _0810478E - .4byte _08104794 - .4byte _081047A4 - .4byte _081047D8 -_08104710: - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08104720 - cmp r0, 0x3 - beq _08104720 - cmp r0, 0x6 - bne _08104728 -_08104720: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8104800 -_08104728: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x10] - adds r0, 0x28 - strh r0, [r4, 0x10] - ldrb r0, [r4, 0x8] - movs r1, 0x10 - ldrsh r2, [r4, r1] - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrb r0, [r4, 0x8] - bl sub_80A7E6C - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0x20 - bne _081047F6 - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - b _081047D0 -_08104758: - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _081047F6 - movs r2, 0x12 - ldrsh r1, [r4, r2] - cmp r1, 0x3 - bne _0810476E - strh r0, [r4, 0xC] - strh r1, [r4, 0xA] - b _081047F6 -_0810476E: - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r2, 0x80 - lsls r2, 1 - strh r2, [r4, 0x10] - ldrb r0, [r4, 0x8] - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrb r0, [r4, 0x8] - bl sub_80A7E6C - movs r0, 0x2 - strh r0, [r4, 0xA] - b _081047F6 -_0810478E: - movs r0, 0 - strh r0, [r4, 0xA] - b _081047F6 -_08104794: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x20 - ble _081047F6 - b _081047CC -_081047A4: - ldrh r0, [r4, 0xC] - adds r0, 0x2 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x10] - subs r0, 0x50 - strh r0, [r4, 0x10] - ldrb r0, [r4, 0x8] - movs r1, 0x10 - ldrsh r2, [r4, r1] - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrb r0, [r4, 0x8] - bl sub_80A7E6C - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0x20 - bne _081047F6 -_081047CC: - movs r0, 0 - strh r0, [r4, 0xC] -_081047D0: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - b _081047F6 -_081047D8: - ldrb r0, [r4, 0x8] - bl sub_80A7344 - ldr r2, =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x26] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_081047F6: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81046CC - - thumb_func_start sub_8104800 -sub_8104800: @ 8104800 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - movs r0, 0 - bl duplicate_obj_of_side_rel2move_in_transparent_mode - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r0, 16 - asrs r4, r0, 16 - cmp r4, 0 - blt _081048DA - bl AllocOamMatrix - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xFF - bne _08104844 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, =gSprites - adds r0, r1 - bl obj_delete_but_dont_free_vram - b _081048DA - .pool -_08104844: - ldr r5, =gSprites - lsls r3, r4, 4 - adds r3, r4 - lsls r3, 2 - adds r4, r3, r5 - ldrb r1, [r4, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4, 0x1] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1F - ands r6, r0 - lsls r2, r6, 1 - ldrb r1, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x3] - ldrb r0, [r7, 0x16] - ldrb r1, [r7, 0xE] - subs r0, r1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - ldrh r0, [r7, 0xE] - adds r0, 0x1 - strh r0, [r7, 0xE] - ldrh r0, [r7, 0x14] - adds r0, 0x1 - strh r0, [r7, 0x14] - movs r0, 0x10 - strh r0, [r4, 0x2E] - mov r0, r9 - strh r0, [r4, 0x30] - movs r0, 0x6 - strh r0, [r4, 0x32] - adds r5, 0x1C - adds r3, r5 - ldr r0, =sub_81048F0 - str r0, [r3] - mov r1, r8 - lsls r0, r1, 24 - lsrs r0, 24 - movs r1, 0x10 - ldrsh r2, [r7, r1] - adds r1, r2, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrb r0, [r4, 0x1] - movs r3, 0x4 - negs r3, r3 - ands r3, r0 - movs r0, 0x1 - orrs r3, r0 - strb r3, [r4, 0x1] - lsrs r1, r3, 6 - ldrb r2, [r4, 0x3] - lsrs r2, 6 - lsls r3, 30 - lsrs r3, 30 - adds r0, r4, 0 - bl CalcCenterToCornerVec -_081048DA: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104800 - - thumb_func_start sub_81048F0 -sub_81048F0: @ 81048F0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _0810492E - ldr r3, =gTasks - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x30 - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - adds r0, r4, 0 - bl obj_delete_but_dont_free_vram -_0810492E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81048F0 - - thumb_func_start sub_8104938 -sub_8104938: @ 8104938 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks - adds r4, r0, r1 - ldr r5, =gBattleAnimArgs - movs r1, 0x2 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _08104964 - adds r0, r2, 0 - bl DestroyAnimVisualTask - b _0810498A - .pool -_08104964: - ldrb r0, [r5] - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0 - strh r1, [r4, 0x8] - strh r2, [r4, 0xA] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0xC] - strh r2, [r4, 0xE] - strh r2, [r4, 0x10] - ldr r2, =gUnknown_085935E8 - adds r0, r4, 0 - bl sub_80A7CFC - ldr r0, =sub_8104998 - str r0, [r4] -_0810498A: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104938 - - thumb_func_start sub_8104998 -sub_8104998: @ 8104998 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, =gTasks - adds r4, r0, r1 - movs r0, 0xA - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _08104A00 - cmp r5, 0x1 - bgt _081049C0 - cmp r5, 0 - beq _081049CA - b _08104AA8 - .pool -_081049C0: - cmp r5, 0x2 - beq _08104A34 - cmp r5, 0x3 - beq _08104A64 - b _08104AA8 -_081049CA: - adds r0, r4, 0 - bl sub_80A7D34 - ldrh r2, [r4, 0x10] - adds r2, 0x3 - strh r2, [r4, 0x10] - ldr r3, =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x26] - adds r1, r2 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _08104AA8 - strh r5, [r4, 0xE] - b _08104A5C - .pool -_08104A00: - adds r0, r4, 0 - bl sub_80A7D34 - ldr r2, =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r4, 0x10] - ldrh r2, [r0, 0x26] - adds r1, r2 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _08104AA8 - movs r0, 0 - strh r0, [r4, 0xE] - b _08104A5C - .pool -_08104A34: - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08104A5C - ldr r2, =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - subs r1, 0x2 - strh r1, [r0, 0x26] - ldrh r0, [r4, 0x10] - subs r0, 0x2 - strh r0, [r4, 0x10] - b _08104AA8 - .pool -_08104A5C: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - b _08104AA8 -_08104A64: - adds r0, r4, 0 - bl sub_80A7D34 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _08104AA8 - ldrh r0, [r4, 0xC] - subs r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - cmp r0, 0 - bne _08104A9C - ldr r2, =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r5, [r0, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask - b _08104AA8 - .pool -_08104A9C: - ldrb r1, [r4, 0x8] - ldr r2, =gUnknown_085935E8 - adds r0, r4, 0 - bl sub_80A7CFC - strh r5, [r4, 0xA] -_08104AA8: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104998 - - thumb_func_start sub_8104AB4 -sub_8104AB4: @ 8104AB4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, =gUnknown_08593608 - adds r0, r4, 0 - bl sub_80A7CFC - ldr r0, =sub_8104AF0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104AB4 - - thumb_func_start sub_8104AF0 -sub_8104AF0: @ 8104AF0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, =gTasks - adds r0, r1 - bl sub_80A7D34 - lsls r0, 24 - cmp r0, 0 - bne _08104B10 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_08104B10: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104AF0 - - thumb_func_start sub_8104B1C -sub_8104B1C: @ 8104B1C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, =gBattleAnimAttacker - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08104B50 - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - strh r0, [r4, 0x20] - movs r0, 0x40 - b _08104B6A - .pool -_08104B50: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x20 - strh r0, [r4, 0x20] - ldr r0, =0x0000ffc0 -_08104B6A: - strh r0, [r4, 0x30] - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - strh r0, [r4, 0x22] - movs r0, 0x34 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x32] - strh r1, [r4, 0x34] - strh r1, [r4, 0x36] - ldr r1, =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A656C - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104B1C - - thumb_func_start sub_8104BAC -sub_8104BAC: @ 8104BAC - push {r4-r6,lr} - adds r6, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08104BC8 - ldr r0, =gBattleAnimAttacker - b _08104BCA - .pool -_08104BC8: - ldr r0, =gBattleAnimTarget -_08104BCA: - ldrb r5, [r0] - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08104BE4 - ldr r1, =gBattleAnimArgs - movs r2, 0x2 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x2] -_08104BE4: - adds r0, r5, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x20] - adds r0, r5, 0 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x4] - adds r0, r4 - strh r0, [r6, 0x22] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - bgt _08104C16 - movs r0, 0x8 - strh r0, [r6, 0x22] -_08104C16: - ldr r1, =move_anim_8074EE0 - adds r0, r6, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A67BC - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104BAC - - thumb_func_start sub_8104C38 -sub_8104C38: @ 8104C38 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - strh r1, [r4, 0x8] - strh r0, [r4, 0xA] - ldr r2, =gUnknown_085936A4 - adds r0, r4, 0 - bl sub_80A7CFC - ldr r0, =sub_8104C78 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104C38 - - thumb_func_start sub_8104C78 -sub_8104C78: @ 8104C78 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, =gTasks - adds r0, r1 - bl sub_80A7D34 - lsls r0, 24 - cmp r0, 0 - bne _08104C98 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_08104C98: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104C78 - - thumb_func_start sub_8104CA4 -sub_8104CA4: @ 8104CA4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, =gTasks - adds r4, r1, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - movs r2, 0 - strh r0, [r4, 0x8] - strh r2, [r4, 0xA] - movs r0, 0x4 - strh r0, [r4, 0xC] - movs r0, 0x7 - strh r0, [r4, 0xE] - movs r0, 0x3 - strh r0, [r4, 0x10] - ldr r3, =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x20] - strh r0, [r4, 0x12] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x22] - strh r0, [r4, 0x14] - strh r2, [r4, 0x16] - strh r2, [r4, 0x18] - movs r0, 0x2 - strh r0, [r4, 0x1A] - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08104D0E - movs r1, 0xC - ldrsh r0, [r4, r1] - negs r0, r0 - strh r0, [r4, 0xC] -_08104D0E: - ldr r0, =sub_8104D28 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104CA4 - - thumb_func_start sub_8104D28 -sub_8104D28: @ 8104D28 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, =gTasks - adds r3, r0, r1 - ldrh r0, [r3, 0x16] - adds r0, 0x1 - strh r0, [r3, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _08104D8E - movs r0, 0 - strh r0, [r3, 0x16] - ldrh r0, [r3, 0x18] - adds r0, 0x1 - strh r0, [r3, 0x18] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08104D78 - ldr r2, =gSprites - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x1A] - ldrh r2, [r0, 0x22] - adds r1, r2 - b _08104D8C - .pool -_08104D78: - ldr r2, =gSprites - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - ldrh r2, [r3, 0x1A] - subs r1, r2 -_08104D8C: - strh r1, [r0, 0x22] -_08104D8E: - movs r1, 0xA - ldrsh r0, [r3, r1] - cmp r0, 0x1 - beq _08104DDC - cmp r0, 0x1 - bgt _08104DA4 - cmp r0, 0 - beq _08104DAA - b _08104E6C - .pool -_08104DA4: - cmp r0, 0x2 - beq _08104E0C - b _08104E6C -_08104DAA: - ldr r2, =gSprites - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0xC] - ldrh r2, [r0, 0x20] - adds r1, r2 - strh r1, [r0, 0x20] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _08104E6C - movs r0, 0xE - strh r0, [r3, 0xE] - movs r0, 0x1 - strh r0, [r3, 0xA] - b _08104E6C - .pool -_08104DDC: - ldr r2, =gSprites - movs r5, 0x8 - ldrsh r1, [r3, r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x20] - ldrh r2, [r3, 0xC] - subs r1, r2 - strh r1, [r0, 0x20] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _08104E6C - movs r0, 0x7 - strh r0, [r3, 0xE] - movs r0, 0x2 - strh r0, [r3, 0xA] - b _08104E6C - .pool -_08104E0C: - ldr r2, =gSprites - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0xC] - ldrh r5, [r0, 0x20] - adds r1, r5 - strh r1, [r0, 0x20] - ldrh r0, [r3, 0xE] - subs r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - bne _08104E6C - ldrh r0, [r3, 0x10] - subs r0, 0x1 - strh r0, [r3, 0x10] - lsls r0, 16 - cmp r0, 0 - beq _08104E48 - movs r0, 0x7 - strh r0, [r3, 0xE] - strh r1, [r3, 0xA] - b _08104E6C - .pool -_08104E48: - ldrh r1, [r3, 0x18] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08104E66 - movs r0, 0x8 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - ldrh r2, [r3, 0x1A] - subs r1, r2 - strh r1, [r0, 0x22] -_08104E66: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_08104E6C: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8104D28 - - thumb_func_start sub_8104E74 -sub_8104E74: @ 8104E74 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, =gTasks - adds r5, r1, r0 - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - bl GetBattlerYCoordWithElevation - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - movs r1, 0 - strh r0, [r5, 0x8] - movs r0, 0x4 - strh r0, [r5, 0xA] - strh r1, [r5, 0xC] - strh r1, [r5, 0xE] - strh r1, [r5, 0x10] - strh r1, [r5, 0x12] - ldrb r0, [r4] - bl sub_80A861C - strh r0, [r5, 0x26] - ldrb r0, [r4] - bl sub_80A8364 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08104ED4 - ldr r0, =gBattle_BG1_X - ldrh r0, [r0] - strh r0, [r5, 0x14] - ldr r0, =0x04000014 - b _08104EDC - .pool -_08104ED4: - ldr r0, =gBattle_BG2_X - ldrh r0, [r0] - strh r0, [r5, 0x14] - ldr r0, =0x04000018 -_08104EDC: - str r0, [sp] - ldrh r0, [r5, 0x8] - adds r1, r0, 0 - subs r1, 0x40 - lsls r2, r1, 16 - lsls r0, 16 - cmp r2, r0 - bgt _08104F1A - ldr r4, =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r6, r4, r0 -_08104EF4: - asrs r3, r2, 16 - cmp r3, 0 - blt _08104F0C - lsls r1, r3, 1 - adds r2, r1, r4 - ldrh r0, [r5, 0x14] - adds r0, 0xF0 - strh r0, [r2] - adds r1, r6 - ldrh r0, [r5, 0x14] - adds r0, 0xF0 - strh r0, [r1] -_08104F0C: - adds r0, r3, 0x1 - lsls r2, r0, 16 - asrs r1, r2, 16 - movs r3, 0x8 - ldrsh r0, [r5, r3] - cmp r1, r0 - ble _08104EF4 -_08104F1A: - ldr r0, =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, =sub_8104F54 - str r0, [r5] - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104E74 - - thumb_func_start sub_8104F54 -sub_8104F54: @ 8104F54 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, =gTasks - adds r3, r0, r1 - movs r1, 0x10 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _08104F78 - cmp r0, 0x1 - beq _08104F8E - b _0810500E - .pool -_08104F78: - ldrh r0, [r3, 0x12] - adds r0, 0x1 - strh r0, [r3, 0x12] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _0810500E - ldrh r0, [r3, 0x10] - adds r0, 0x1 - strh r0, [r3, 0x10] - b _0810500E -_08104F8E: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _0810500E - movs r0, 0 - strh r0, [r3, 0xA] - ldrh r1, [r3, 0xE] - movs r0, 0x3 - ands r0, r1 - strh r0, [r3, 0xC] - ldrh r0, [r3, 0x8] - subs r0, r1 - strh r0, [r3, 0x12] - movs r2, 0xC - ldrsh r1, [r3, r2] - cmp r1, 0x1 - beq _08104FC4 - cmp r1, 0x1 - ble _08104FCC - cmp r1, 0x2 - beq _08104FC8 - cmp r1, 0x3 - beq _08104FC8 - b _08104FCC -_08104FC4: - subs r0, 0x2 - b _08104FCA -_08104FC8: - adds r0, 0x1 -_08104FCA: - strh r0, [r3, 0x12] -_08104FCC: - movs r1, 0x12 - ldrsh r0, [r3, r1] - cmp r0, 0 - blt _08104FF0 - ldr r2, =gScanlineEffectRegBuffers - lsls r0, 1 - adds r0, r2 - ldrh r1, [r3, 0x14] - strh r1, [r0] - movs r1, 0x12 - ldrsh r0, [r3, r1] - lsls r0, 1 - movs r1, 0xF0 - lsls r1, 3 - adds r2, r1 - adds r0, r2 - ldrh r1, [r3, 0x14] - strh r1, [r0] -_08104FF0: - ldrh r0, [r3, 0xE] - adds r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x26 - ldrsh r1, [r3, r2] - cmp r0, r1 - blt _0810500E - ldr r1, =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] - adds r0, r4, 0 - bl DestroyAnimVisualTask -_0810500E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8104F54 - - thumb_func_start sub_810501C -sub_810501C: @ 810501C - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, =gBattleAnimTarget - ldrb r0, [r6] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x10 - movs r5, 0 - strh r0, [r4, 0x20] - ldrb r0, [r6] - bl GetBattlerYCoordWithElevation - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x10 - strh r0, [r4, 0x22] - strh r5, [r4, 0x2E] - strh r5, [r4, 0x30] - strh r5, [r4, 0x32] - movs r0, 0x10 - strh r0, [r4, 0x34] - strh r5, [r4, 0x36] - ldrb r0, [r6] - movs r1, 0 - bl sub_80A861C - adds r0, 0x2 - strh r0, [r4, 0x38] - movs r0, 0x3F - bl BattleAnimAdjustPanning - lsls r0, 24 - asrs r0, 24 - strh r0, [r4, 0x3A] - ldr r0, =sub_8105078 - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810501C - - thumb_func_start sub_8105078 -sub_8105078: @ 8105078 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _081050DC - cmp r1, 0x1 - bgt _0810508E - cmp r1, 0 - beq _08105094 - b _081051BC -_0810508E: - cmp r1, 0x2 - beq _0810516E - b _081051BC -_08105094: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _081050BE - strh r1, [r4, 0x32] - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_081050BE: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _081051BC - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r2] - b _08105166 -_081050DC: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _08105122 - ldrh r2, [r4, 0x32] - movs r3, 0x32 - ldrsh r1, [r4, r3] - movs r3, 0x38 - ldrsh r0, [r4, r3] - cmp r1, r0 - bge _08105122 - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - subs r0, 0x1 - strh r0, [r4, 0x22] - adds r0, r2, 0x1 - strh r0, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _08105122 - ldrh r1, [r4, 0x3A] - lsls r1, 24 - asrs r1, 24 - movs r0, 0xCD - bl PlaySE12WithPanning -_08105122: - ldrh r0, [r4, 0x34] - ldrh r2, [r4, 0x36] - adds r1, r0, r2 - strh r1, [r4, 0x36] - lsls r0, r1, 16 - asrs r2, r0, 16 - cmp r2, 0x1F - ble _08105136 - movs r0, 0x40 - b _08105144 -_08105136: - movs r0, 0x20 - negs r0, r0 - cmp r2, r0 - bgt _08105150 - movs r2, 0x40 - negs r2, r2 - adds r0, r2, 0 -_08105144: - subs r0, r1 - strh r0, [r4, 0x36] - movs r3, 0x34 - ldrsh r0, [r4, r3] - negs r0, r0 - strh r0, [r4, 0x34] -_08105150: - ldrh r0, [r4, 0x36] - movs r2, 0 - strh r0, [r4, 0x24] - movs r0, 0x38 - ldrsh r1, [r4, r0] - movs r3, 0x32 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _081051BC - strh r2, [r4, 0x30] - strh r2, [r4, 0x32] -_08105166: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _081051BC -_0810516E: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _0810519A - movs r0, 0 - strh r0, [r4, 0x32] - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_0810519A: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _081051BC - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r0, r4, 0 - bl DestroyAnimSprite -_081051BC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8105078 - - thumb_func_start sub_81051C4 -sub_81051C4: @ 81051C4 - push {r4-r7,lr} - sub sp, 0x4 - adds r6, r0, 0 - movs r5, 0 - mov r0, sp - strh r5, [r0] - mov r1, sp - adds r1, 0x2 - strh r5, [r1] - ldr r0, =gBattleAnimArgs - movs r3, 0x4 - ldrsh r2, [r0, r3] - adds r7, r1, 0 - adds r1, r0, 0 - cmp r2, 0 - bne _081051F0 - ldr r0, =gBattleAnimAttacker - b _081051F2 - .pool -_081051F0: - ldr r0, =gBattleAnimTarget -_081051F2: - ldrb r5, [r0] - ldrb r1, [r1, 0x6] - movs r0, 0x1 - adds r4, r0, 0 - eors r4, r1 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0810526A - movs r1, 0x2 - adds r0, r5, 0 - eors r0, r1 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _0810526A - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, sp - adds r3, r7, 0 - bl SetAverageBattlerPositions - cmp r4, 0 - bne _08105230 - adds r0, r5, 0 - movs r1, 0 - b _08105234 - .pool -_08105230: - adds r0, r5, 0 - movs r1, 0x2 -_08105234: - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08105260 - ldr r2, =gBattleAnimArgs - mov r0, sp - ldrh r1, [r0] - subs r1, r4 - ldrh r0, [r2] - subs r1, r0 - subs r0, r1 - strh r0, [r2] - b _0810526A - .pool -_08105260: - ldr r1, =gBattleAnimArgs - mov r0, sp - ldrh r0, [r0] - subs r0, r4 - strh r0, [r1] -_0810526A: - ldr r1, =sub_80A77C8 - str r1, [r6, 0x1C] - adds r0, r6, 0 - bl _call_via_r1 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81051C4 - - thumb_func_start sub_8105284 -sub_8105284: @ 8105284 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimLinear - lsls r0, 24 - cmp r0, 0 - beq _0810529E - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroyAnimSprite -_0810529E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8105284 - - thumb_func_start sub_81052A4 -sub_81052A4: @ 81052A4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r5, r0, 0 - movs r6, 0 - mov r0, sp - strh r6, [r0] - mov r1, sp - adds r1, 0x2 - strh r6, [r1] - ldr r0, =gBattleAnimArgs - movs r2, 0xA - ldrsh r0, [r0, r2] - cmp r0, 0 - bne _081052DC - ldr r0, =gBattleAnimAttacker - ldrb r7, [r0] - ldr r0, =gBattleAnimTarget - b _081052E2 - .pool -_081052DC: - ldr r0, =gBattleAnimTarget - ldrb r7, [r0] - ldr r0, =gBattleAnimAttacker -_081052E2: - ldrb r0, [r0] - mov r8, r0 - ldr r0, =gBattleAnimArgs - movs r3, 0xC - ldrsh r0, [r0, r3] - cmp r0, 0 - bne _08105308 - movs r0, 0 - mov r10, r0 - movs r1, 0x1 - str r1, [sp, 0x4] - b _08105310 - .pool -_08105308: - movs r2, 0x2 - mov r10, r2 - movs r3, 0x3 - str r3, [sp, 0x4] -_08105310: - adds r0, r7, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0810536C - adds r0, r7, 0 - mov r1, r10 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r1, =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - movs r0, 0x2 - mov r4, r8 - eors r4, r0 - adds r0, r4, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _0810535C - ldr r2, =gSprites - ldr r0, =gBattlerSpriteIds - adds r0, r4, r0 - b _081053EA - .pool -_0810535C: - ldr r2, =gSprites - ldr r0, =gBattlerSpriteIds - add r0, r8 - b _081053EA - .pool -_0810536C: - adds r0, r7, 0 - mov r1, r10 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gBattleAnimArgs - ldrh r1, [r1] - subs r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _081053E4 - movs r0, 0x2 - adds r4, r7, 0 - eors r4, r0 - adds r0, r4, 0 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _081053E4 - ldr r3, =gSprites - ldr r2, =gBattlerSpriteIds - adds r0, r7, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r6, r0, r3 - adds r2, r4, r2 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r3 - movs r0, 0x20 - ldrsh r1, [r6, r0] - movs r3, 0x20 - ldrsh r0, [r2, r3] - cmp r1, r0 - bge _081053E0 - adds r0, r2, 0 - adds r0, 0x43 - ldrb r0, [r0] - adds r0, 0x1 - b _081053FA - .pool -_081053E0: - adds r0, r6, 0 - b _081053F4 -_081053E4: - ldr r2, =gSprites - ldr r0, =gBattlerSpriteIds - adds r0, r7, r0 -_081053EA: - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 -_081053F4: - adds r0, 0x43 - ldrb r0, [r0] - subs r0, 0x1 -_081053FA: - adds r1, r5, 0 - adds r1, 0x43 - strb r0, [r1] - adds r0, r7, 0 - ldr r1, [sp, 0x4] - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - lsls r0, 16 - lsrs r6, r0, 16 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _0810544C - movs r1, 0x2 - mov r0, r8 - eors r0, r1 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _0810544C - ldrb r1, [r4, 0xC] - mov r0, r8 - mov r2, sp - mov r3, sp - adds r3, 0x2 - bl SetAverageBattlerPositions - b _0810546C - .pool -_0810544C: - mov r4, sp - mov r0, r8 - mov r1, r10 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - mov r0, r8 - ldr r1, [sp, 0x4] - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - mov r2, sp - strh r0, [r2, 0x2] -_0810546C: - mov r0, r8 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08105490 - mov r3, sp - mov r2, sp - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x6] - ldrh r2, [r2] - adds r0, r2 - strh r0, [r3] - adds r2, r1, 0 - b _0810549E - .pool -_08105490: - mov r3, sp - mov r0, sp - ldr r2, =gBattleAnimArgs - ldrh r0, [r0] - ldrh r1, [r2, 0x6] - subs r0, r1 - strh r0, [r3] -_0810549E: - ldrh r1, [r2, 0x8] - mov r3, sp - ldrh r3, [r3, 0x2] - adds r1, r3 - mov r0, sp - strh r1, [r0, 0x2] - mov r3, r9 - strh r3, [r5, 0x30] - strh r3, [r5, 0x20] - strh r6, [r5, 0x34] - strh r6, [r5, 0x22] - ldrh r0, [r0] - strh r0, [r5, 0x32] - strh r1, [r5, 0x36] - ldrh r0, [r2] - strh r0, [r5, 0x2E] - adds r0, r5, 0 - bl InitAnimLinearTranslation - ldr r1, =sub_8105284 - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81052A4 - - thumb_func_start sub_81054E8 -sub_81054E8: @ 81054E8 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =0x000027db - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _0810550E - lsls r0, 20 - ldr r1, =0x01010000 - adds r0, r1 - lsrs r0, 16 - ldr r1, =gBattleAnimArgs - ldrb r2, [r1, 0xA] - ldrh r3, [r1, 0x8] - movs r1, 0xF - bl BlendPalette -_0810550E: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r1, =sub_80A77C8 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81054E8 - - thumb_func_start sub_8105538 -sub_8105538: @ 8105538 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - bl InitAnimSpritePos - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - movs r1, 0xA0 - cmp r0, 0 - beq _08105554 - ldr r1, =0x0000ff60 -_08105554: - movs r0, 0xE0 - lsls r0, 2 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - ldr r0, =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x3C] - ldr r0, =sub_810557C - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8105538 - - thumb_func_start sub_810557C -sub_810557C: @ 810557C - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x2E] - lsls r0, r2, 16 - asrs r0, 24 - ldrh r1, [r4, 0x26] - subs r1, r0 - movs r5, 0 - strh r1, [r4, 0x26] - ldrh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - subs r2, 0x20 - strh r2, [r4, 0x2E] - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - movs r1, 0xA0 - cmp r0, 0 - beq _081055AC - ldr r1, =0x0000ff60 -_081055AC: - lsls r0, r1, 16 - asrs r0, 16 - ldrh r1, [r4, 0x30] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x26] - movs r2, 0x26 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _081055E0 - ldrh r2, [r4, 0x22] - adds r0, r1, r2 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - strh r5, [r4, 0x26] - strh r5, [r4, 0x24] - strh r5, [r4, 0x2E] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r0, =sub_81055F4 - str r0, [r4, 0x1C] -_081055E0: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810557C - - thumb_func_start sub_81055F4 -sub_81055F4: @ 81055F4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r1, r0, 0x1 - strh r1, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _08105612 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldr r0, =sub_810561C - str r0, [r4, 0x1C] -_08105612: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81055F4 - - thumb_func_start sub_810561C -sub_810561C: @ 810561C - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08105682 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - movs r0, 0 - strh r0, [r4, 0x2E] - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08105668 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x10 - ldr r3, =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - ldr r0, =sub_8105694 - b _08105680 - .pool -_08105668: - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x20 - ldr r3, =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - ldr r0, =sub_810571C -_08105680: - str r0, [r4, 0x1C] -_08105682: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810561C - - thumb_func_start sub_8105694 -sub_8105694: @ 8105694 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x26] - subs r0, 0x2 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bne _081056CA - movs r0, 0x10 - strh r0, [r4, 0x2E] - movs r0, 0 - strh r0, [r4, 0x30] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - ldrh r1, [r4, 0x2E] - movs r0, 0x52 - bl SetGpuReg - ldr r0, =sub_81056D4 - str r0, [r4, 0x1C] -_081056CA: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8105694 - - thumb_func_start sub_81056D4 -sub_81056D4: @ 81056D4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r1, r0, 0x1 - strh r1, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x3 - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _08105712 - ldrh r1, [r4, 0x2E] - subs r1, 0x1 - strh r1, [r4, 0x2E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08105712 - ldr r0, =sub_810571C - str r0, [r4, 0x1C] -_08105712: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81056D4 - - thumb_func_start sub_810571C -sub_810571C: @ 810571C - push {lr} - adds r3, r0, 0 - ldr r0, =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, =0x0000ffff - cmp r1, r0 - bne _08105754 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r1, 0x3C - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _08105750 - ldr r0, =sub_810575C - b _08105752 - .pool -_08105750: - ldr r0, =DestroyAnimSprite -_08105752: - str r0, [r3, 0x1C] -_08105754: - pop {r0} - bx r0 - .pool - thumb_func_end sub_810571C - - thumb_func_start sub_810575C -sub_810575C: @ 810575C - 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_810575C - - thumb_func_start sub_810577C -sub_810577C: @ 810577C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, =gTasks - adds r4, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r4, 0x8] - ldr r2, =gUnknown_085938B0 - adds r0, r4, 0 - bl sub_80A7CFC - ldr r0, =sub_81057B8 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810577C - - thumb_func_start sub_81057B8 -sub_81057B8: @ 81057B8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks - adds r4, r0, r1 - adds r0, r4, 0 - bl sub_80A7D34 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _08105802 - ldr r2, =gSprites - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r3, [r0, 0x26] - movs r0, 0x8 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_08105802: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81057B8 - - thumb_func_start sub_8105810 -sub_8105810: @ 8105810 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, =gTasks - adds r4, r1, r0 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r0, 0x3 - strh r0, [r4, 0x20] - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08105850 - ldr r0, =0x0000ffff - strh r0, [r4, 0x22] - movs r0, 0x8 - b _08105856 - .pool -_08105850: - movs r0, 0x1 - strh r0, [r4, 0x22] - ldr r0, =0x0000fff8 -_08105856: - strh r0, [r4, 0x24] - movs r0, 0x1 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, =sub_8105878 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8105810 - - thumb_func_start sub_8105878 -sub_8105878: @ 8105878 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks - adds r3, r0, r1 - movs r0, 0x8 - ldrsh r4, [r3, r0] - cmp r4, 0x1 - beq _081058CC - cmp r4, 0x1 - bgt _081058A0 - cmp r4, 0 - beq _081058AA - b _08105992 - .pool -_081058A0: - cmp r4, 0x2 - beq _08105948 - cmp r4, 0x3 - beq _08105962 - b _08105992 -_081058AA: - ldr r2, =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x24] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - strh r4, [r3, 0xA] - strh r4, [r3, 0xC] - strh r4, [r3, 0xE] - b _0810595A - .pool -_081058CC: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _08105992 - movs r0, 0 - strh r0, [r3, 0xA] - ldrh r0, [r3, 0xC] - adds r0, 0x1 - strh r0, [r3, 0xC] - ands r0, r4 - lsls r0, 16 - cmp r0, 0 - beq _08105904 - ldr r2, =gSprites - movs r4, 0x26 - ldrsh r1, [r3, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - adds r1, 0x6 - b _08105916 - .pool -_08105904: - ldr r2, =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - subs r1, 0x6 -_08105916: - strh r1, [r0, 0x24] - ldrh r0, [r3, 0xE] - adds r0, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _08105992 - ldrh r1, [r3, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0810595A - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x24] - subs r0, 0x6 - strh r0, [r1, 0x24] - b _0810595A - .pool -_08105948: - ldrh r0, [r3, 0x20] - subs r0, 0x1 - strh r0, [r3, 0x20] - lsls r0, 16 - cmp r0, 0 - beq _0810595A - movs r0, 0 - strh r0, [r3, 0x8] - b _08105992 -_0810595A: - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - b _08105992 -_08105962: - ldr r2, =gSprites - movs r4, 0x26 - ldrsh r1, [r3, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x22] - ldrh r4, [r0, 0x24] - adds r1, r4 - strh r1, [r0, 0x24] - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x24 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08105992 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_08105992: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8105878 - - thumb_func_start sub_810599C -sub_810599C: @ 810599C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - movs r0, 0x1 - strh r0, [r4, 0x10] - movs r0, 0xE - strh r0, [r4, 0x22] - movs r0, 0x2 - strh r0, [r4, 0x24] - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, =sub_81059E0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810599C - - thumb_func_start sub_81059E0 -sub_81059E0: @ 81059E0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r2, [r4, r0] - cmp r2, 0 - bne _08105AA6 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x10 - ldrsh r1, [r4, r3] - cmp r0, r1 - ble _08105AA6 - strh r2, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08105A3C - ldr r3, =gSprites - movs r6, 0x26 - ldrsh r1, [r4, r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - b _08105A52 - .pool -_08105A3C: - ldr r3, =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 -_08105A52: - strb r1, [r0] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - movs r2, 0 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r6, 0x22 - ldrsh r1, [r4, r6] - cmp r0, r1 - blt _08105AA6 - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - movs r6, 0x24 - ldrsh r1, [r4, r6] - cmp r0, r1 - bge _08105A88 - strh r2, [r4, 0xA] - strh r2, [r4, 0xC] - strh r2, [r4, 0xE] - b _08105AA6 - .pool -_08105A88: - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_08105AA6: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_81059E0 - - thumb_func_start sub_8105AAC -sub_8105AAC: @ 8105AAC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - movs r1, 0x4 - strh r1, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - strh r0, [r4, 0x10] - strh r0, [r4, 0x12] - strh r0, [r4, 0x14] - strh r0, [r4, 0x16] - strh r0, [r4, 0x18] - strh r0, [r4, 0x22] - ldr r5, =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x24] - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, =sub_8105B08 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8105AAC - - thumb_func_start sub_8105B08 -sub_8105B08: @ 8105B08 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, =gTasks - adds r4, r0, r1 - movs r0, 0x18 - ldrsh r2, [r4, r0] - cmp r2, 0x1 - beq _08105B74 - cmp r2, 0x1 - bgt _08105B30 - cmp r2, 0 - beq _08105B36 - b _08105B90 - .pool -_08105B30: - cmp r2, 0x2 - beq _08105B8C - b _08105B90 -_08105B36: - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _08105B90 - strh r2, [r4, 0x10] - ldrh r0, [r4, 0x12] - adds r0, 0x1 - movs r1, 0x1 - ands r0, r1 - strh r0, [r4, 0x12] - ldrh r0, [r4, 0x14] - adds r0, 0x1 - strh r0, [r4, 0x14] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _08105B90 - movs r1, 0x16 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08105B6E - strh r2, [r4, 0x14] - movs r0, 0x1 - strh r0, [r4, 0x18] - b _08105B90 -_08105B6E: - movs r0, 0x2 - strh r0, [r4, 0x18] - b _08105B90 -_08105B74: - movs r1, 0 - strh r1, [r4, 0x12] - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _08105B90 - strh r2, [r4, 0x16] - strh r1, [r4, 0x18] - b _08105B90 -_08105B8C: - movs r0, 0x1 - strh r0, [r4, 0x12] -_08105B90: - movs r2, 0x8 - ldrsh r5, [r4, r2] - cmp r5, 0 - beq _08105B9E - cmp r5, 0x1 - beq _08105C34 - b _08105C42 -_08105B9E: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _08105C42 - strh r5, [r4, 0xA] - ldr r0, =gUnknown_085938DC - movs r3, 0x24 - ldrsh r1, [r4, r3] - movs r3, 0x26 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _08105C42 - ldr r0, =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - strh r6, [r1, 0x2E] - movs r0, 0xD - strh r0, [r1, 0x30] - ldr r2, =gUnknown_085938F4 - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - strh r0, [r1, 0x24] - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r2, 0x1 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - strh r0, [r1, 0x26] - ldrh r0, [r4, 0x22] - adds r0, 0x1 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _08105C42 - strh r5, [r4, 0xC] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _08105C42 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _08105C42 - .pool -_08105C34: - movs r1, 0x22 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08105C42 - adds r0, r6, 0 - bl DestroyAnimVisualTask -_08105C42: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8105B08 - - thumb_func_start sub_8105C48 -sub_8105C48: @ 8105C48 - push {r4,lr} - adds r3, r0, 0 - ldr r4, =gTasks - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - movs r1, 0x3E - adds r1, r3 - mov r12, r1 - movs r2, 0x1 - ldrb r1, [r0, 0x12] - ands r1, r2 - lsls r1, 2 - mov r0, r12 - ldrb r2, [r0] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - adds r0, r3, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08105CAA - movs r0, 0x30 - ldrsh r1, [r3, r0] - lsls r1, 1 - movs r0, 0x2E - ldrsh r2, [r3, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r0, r4, 0 - adds r0, 0x8 - adds r1, r0 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r3, 0 - bl DestroySprite -_08105CAA: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8105C48 - - thumb_func_start sub_8105CB4 -sub_8105CB4: @ 8105CB4 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, =0x000027de - bl IndexOfSpritePaletteTag - mov r1, sp - strb r0, [r1] - movs r4, 0x1 - ldr r0, =0x00002710 - adds r5, r0, 0 -_08105CCC: - subs r0, r5, r4 - lsls r0, 16 - lsrs r0, 16 - bl AllocSpritePalette - mov r2, sp - adds r1, r2, r4 - strb r0, [r1] - adds r4, 0x1 - cmp r4, 0x2 - ble _08105CCC - movs r0, 0x80 - lsls r0, 6 - bl AllocZeroed - adds r1, r0, 0 - ldr r0, =gMonSpritesGfxPtr - ldr r0, [r0] - movs r2, 0xBE - lsls r2, 1 - adds r0, r2 - str r1, [r0] - ldr r0, =gBattleAnimSpritePalette_206 - bl LZDecompressWram - movs r4, 0 -_08105D00: - ldr r5, =gMonSpritesGfxPtr - ldr r0, [r5] - movs r1, 0xBE - lsls r1, 1 - adds r0, r1 - lsls r1, r4, 6 - ldr r0, [r0] - adds r0, r1 - mov r2, sp - adds r1, r2, r4 - ldrb r1, [r1] - lsls r1, 20 - movs r2, 0x80 - lsls r2, 17 - adds r1, r2 - lsrs r1, 16 - movs r2, 0x20 - bl LoadPalette - adds r4, 0x1 - cmp r4, 0x2 - ble _08105D00 - ldr r0, [r5] - movs r4, 0xBE - lsls r4, 1 - adds r0, r4 - ldr r0, [r0] - bl Free - ldr r0, [r5] - adds r0, r4 - movs r1, 0 - str r1, [r0] - adds r0, r6, 0 - bl DestroyAnimVisualTask - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8105CB4 - - thumb_func_start sub_8105D60 -sub_8105D60: @ 8105D60 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, =gUnknown_08593950 - movs r4, 0x2 -_08105D6A: - ldrh r0, [r5] - bl FreeSpritePaletteByTag - adds r5, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08105D6A - adds r0, r6, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8105D60 - - thumb_func_start sub_8105D88 -sub_8105D88: @ 8105D88 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - lsls r2, 24 - lsrs r3, r2, 24 - movs r0, 0x1 - ands r3, r0 - negs r0, r3 - orrs r0, r3 - asrs r0, 31 - movs r3, 0x20 - ands r0, r3 - ldrh r4, [r5, 0x4] - lsls r3, r4, 22 - lsrs r3, 22 - lsrs r1, 22 - adds r0, r1 - adds r3, r0 - ldr r1, =0x000003ff - adds r0, r1, 0 - ands r3, r0 - ldr r0, =0xfffffc00 - ands r0, r4 - orrs r0, r3 - strh r0, [r5, 0x4] - ldr r0, =gUnknown_08593950 - lsrs r2, 25 - lsls r2, 1 - adds r2, r0 - ldrh r0, [r2] - bl IndexOfSpritePaletteTag - lsls r0, 4 - ldrb r2, [r5, 0x5] - movs r1, 0xF - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x5] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8105D88 - - thumb_func_start sub_8105DE8 -sub_8105DE8: @ 8105DE8 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0 - bl InitAnimSpritePos - ldr r6, =gBattleAnimAttacker - ldrb r0, [r6] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08105E08 - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_08105E08: - ldr r4, =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x2E] - ldrb r0, [r6] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r5, 0x32] - ldrb r0, [r6] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x6] - adds r0, r1 - strh r0, [r5, 0x36] - ldr r0, =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldrb r1, [r4, 0xA] - ldrb r2, [r4, 0xC] - adds r0, r5, 0 - bl sub_8105D88 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8105DE8 - - thumb_func_start sub_8105E60 -sub_8105E60: @ 8105E60 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _08105E7A - adds r0, r4, 0 - movs r1, 0 - bl InitAnimSpritePos -_08105E7A: - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Sin - strh r0, [r4, 0x24] - ldrh r2, [r4, 0x32] - lsls r0, r2, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x7 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - subs r2, 0x80 - strh r2, [r4, 0x32] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x3C - bne _08105EAA - adds r0, r4, 0 - bl DestroyAnimSprite -_08105EAA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8105E60 - - thumb_func_start sub_8105EB0 -sub_8105EB0: @ 8105EB0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - bl IsContest - lsls r0, 24 - movs r6, 0xF0 - cmp r0, 0 - beq _08105EC4 - movs r6, 0x98 -_08105EC4: - movs r5, 0 - ldr r1, =gBattle_WIN0H - strh r6, [r1] - ldr r4, =gBattle_WIN0V - movs r0, 0xA0 - strh r0, [r4] - ldrh r1, [r1] - movs r0, 0x40 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x44 - bl SetGpuReg - ldr r1, =0x00003f1f - movs r0, 0x48 - bl SetGpuReg - ldr r1, =0x00003f3f - movs r0, 0x4A - bl SetGpuReg - movs r0, 0x50 - movs r1, 0xC8 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0x10 - bl SetGpuReg - ldr r1, =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0x8] - strh r6, [r0, 0xA] - ldr r1, =sub_8105F30 - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8105EB0 - - thumb_func_start sub_8105F30 -sub_8105F30: @ 8105F30 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r3, r1, r2 - ldrh r0, [r3, 0x8] - adds r4, r0, 0 - adds r4, 0xD - strh r4, [r3, 0x8] - ldrh r0, [r3, 0xA] - adds r2, r0, 0 - subs r2, 0xD - strh r2, [r3, 0xA] - lsls r1, r4, 16 - lsls r0, r2, 16 - cmp r1, r0 - blt _08105F70 - ldr r0, =gBattle_WIN0H - movs r1, 0 - strh r1, [r0] - ldr r0, =sub_8105F84 - str r0, [r3] - b _08105F78 - .pool -_08105F70: - ldr r1, =gBattle_WIN0H - lsls r0, r4, 8 - orrs r2, r0 - strh r2, [r1] -_08105F78: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8105F30 - - thumb_func_start sub_8105F84 -sub_8105F84: @ 8105F84 - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r1, r0, r1 - ldrh r0, [r1, 0x1C] - adds r0, 0x1 - movs r4, 0 - strh r0, [r1, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _08105FD8 - movs r0, 0x88 - strh r0, [r1, 0x1E] - movs r0, 0x50 - movs r1, 0x88 - bl SetGpuReg - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_80A75AC - ldr r2, =0x00007fff - movs r1, 0x10 - bl BlendPalettes - b _0810600C - .pool -_08105FD8: - cmp r0, 0x4 - ble _0810600C - ldr r0, =gBattle_WIN0H - strh r4, [r0] - ldr r0, =gBattle_WIN0V - strh r4, [r0] - ldr r4, =0x00003f3f - movs r0, 0x48 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x4A - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - adds r0, r5, 0 - bl DestroyAnimVisualTask -_0810600C: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8105F84 - - thumb_func_start sub_8106020 -sub_8106020: @ 8106020 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - movs r0, 0x1 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _0810607C - movs r0, 0x1 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, =gUnknown_08593988 - adds r0, r5, 0 - bl sub_80A7CFC - ldr r1, =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - movs r1, 0x4 - strh r1, [r0, 0x24] - b _081060A4 - .pool -_0810607C: - ldr r1, =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r4, r0, r1 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] - adds r0, r5, 0 - bl sub_80A7D34 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _081060A4 - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_081060A4: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8106020 - - thumb_func_start sub_81060B0 -sub_81060B0: @ 81060B0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _0810610C - movs r0, 0 - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, =gUnknown_08593988 - adds r0, r5, 0 - bl sub_80A7CFC - ldr r1, =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - movs r1, 0x4 - strh r1, [r0, 0x24] - b _08106134 - .pool -_0810610C: - ldr r1, =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r4, r0, r1 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] - adds r0, r5, 0 - bl sub_80A7D34 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08106134 - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_08106134: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81060B0 - - thumb_func_start sub_8106140 -sub_8106140: @ 8106140 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitAnimSpritePos - movs r0, 0x5F - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldr r5, =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl InitAnimLinearTranslation - ldr r0, =sub_810618C - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8106140 - - thumb_func_start sub_810618C -sub_810618C: @ 810618C - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimLinear - lsls r0, 24 - cmp r0, 0 - bne _081061B6 - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xE - bl Sin - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0x4 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _081061BC -_081061B6: - adds r0, r4, 0 - bl DestroyAnimSprite -_081061BC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_810618C - - thumb_func_start sub_81061C4 -sub_81061C4: @ 81061C4 - push {r4,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _081061E8 - ldr r1, =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x32] - adds r0, r2, 0x1 - strh r0, [r4, 0x2E] - b _08106244 - .pool -_081061E8: - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - cmp r0, 0x64 - ble _08106236 - movs r0, 0x34 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_08106236: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x78 - ble _08106244 - adds r0, r4, 0 - bl DestroyAnimSprite -_08106244: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81061C4 - - thumb_func_start sub_810624C -sub_810624C: @ 810624C - push {lr} - ldr r2, =gBattleAnimArgs - ldrh r1, [r2] - strh r1, [r0, 0x20] - movs r1, 0xA0 - strh r1, [r0, 0x22] - ldrh r1, [r2, 0x4] - strh r1, [r0, 0x2E] - ldrh r1, [r2, 0x2] - strh r1, [r0, 0x30] - ldr r1, =WaitAnimForDuration - str r1, [r0, 0x1C] - ldr r1, =sub_810627C - bl StoreSpriteCallbackInData6 - pop {r0} - bx r0 - .pool - thumb_func_end sub_810624C - - thumb_func_start sub_810627C -sub_810627C: @ 810627C - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - lsls r0, 16 - lsrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x26] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - lsls r0, 16 - asrs r5, r0, 16 - cmp r5, 0x48 - bgt _081062E2 - movs r0, 0x34 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - cmp r5, 0x40 - bgt _081062E2 - adds r0, r4, 0 - bl DestroyAnimSprite -_081062E2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_810627C - - thumb_func_start sub_81062E8 -sub_81062E8: @ 81062E8 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x3 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _0810632A - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl SetAnimBgAttribute -_0810632A: - ldr r0, =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r4, =gBattle_BG1_Y - strh r1, [r4] - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x16 - bl SetGpuReg - mov r0, sp - bl sub_80A6B30 - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, =gUnknown_08C232E0 - mov r2, sp - ldrh r2, [r2, 0xA] - bl sub_80A6CC0 - ldr r1, =gUnknown_08C23D78 - mov r0, sp - movs r2, 0 - bl sub_80A6D60 - ldr r0, =gUnknown_08C23D50 - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_81063A8 - str r1, [r0] - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81062E8 - - thumb_func_start sub_81063A8 -sub_81063A8: @ 81063A8 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x20 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bls _081063C6 - b _081064F0 -_081063C6: - lsls r0, 2 - ldr r1, =_081063D8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081063D8: - .4byte _081063EC - .4byte _08106430 - .4byte _08106452 - .4byte _08106496 - .4byte _081064BC -_081063EC: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _081064F0 - strh r5, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - adds r1, 0x1 - strh r1, [r4, 0x1E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _081064F0 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r5, [r4, 0x1E] - b _081064F0 -_08106430: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r2 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - strh r0, [r1, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8D - bne _081064F0 - movs r0, 0x10 - strh r0, [r1, 0x1E] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - b _081064F0 -_08106452: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _081064F0 - movs r0, 0 - strh r0, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - subs r1, 0x1 - strh r1, [r4, 0x1E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r2, 0x1E - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _081064F0 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r1, [r4, 0x1E] - b _081064F0 -_08106496: - mov r0, sp - bl sub_80A6B30 - mov r0, sp - ldrb r0, [r0, 0x9] - bl sub_80A6C68 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x20] - adds r1, 0x1 - strh r1, [r0, 0x20] - b _081064F0 - .pool -_081064BC: - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _081064D0 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_081064D0: - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - adds r0, r4, 0 - bl DestroyAnimVisualTask -_081064F0: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_81063A8 - - thumb_func_start sub_81064F8 -sub_81064F8: @ 81064F8 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =0x00003f42 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 5 - movs r0, 0x52 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl SetAnimBgAttribute - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _0810653A - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl SetAnimBgAttribute -_0810653A: - ldr r0, =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r4, =gBattle_BG1_Y - strh r1, [r4] - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - ldrh r1, [r4] - movs r0, 0x16 - bl SetGpuReg - mov r0, sp - bl sub_80A6B30 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _08106578 - ldr r1, =gBattleAnimBackgroundTilemap_ScaryFaceContest - b _0810658A - .pool -_08106578: - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0810659C - ldr r1, =gBattleAnimBackgroundTilemap_ScaryFacePlayer -_0810658A: - mov r0, sp - movs r2, 0 - bl sub_80A6D60 - b _081065A6 - .pool -_0810659C: - ldr r1, =gBattleAnimBackgroundTilemap_ScaryFaceOpponent - mov r0, sp - movs r2, 0 - bl sub_80A6D60 -_081065A6: - mov r0, sp - ldrb r0, [r0, 0x9] - ldr r1, =gUnknown_08C249F8 - mov r2, sp - ldrh r2, [r2, 0xA] - bl sub_80A6CC0 - ldr r0, =gUnknown_08C249D0 - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_81065EC - str r1, [r0] - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81064F8 - - thumb_func_start sub_81065EC -sub_81065EC: @ 81065EC - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x20 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bls _0810660A - b _08106730 -_0810660A: - lsls r0, 2 - ldr r1, =_0810661C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0810661C: - .4byte _08106630 - .4byte _08106674 - .4byte _08106696 - .4byte _081066DA - .4byte _081066FC -_08106630: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _08106730 - strh r5, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - adds r1, 0x1 - strh r1, [r4, 0x1E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0xE - bne _08106730 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r5, [r4, 0x1E] - b _08106730 -_08106674: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r2 - ldrh r0, [r1, 0x1E] - adds r0, 0x1 - strh r0, [r1, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _08106730 - movs r0, 0xE - strh r0, [r1, 0x1E] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - b _08106730 -_08106696: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _08106730 - movs r0, 0 - strh r0, [r4, 0x1C] - ldrh r1, [r4, 0x1E] - subs r1, 0x1 - strh r1, [r4, 0x1E] - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - movs r2, 0x1E - ldrsh r1, [r4, r2] - cmp r1, 0 - bne _08106730 - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - strh r1, [r4, 0x1E] - b _08106730 -_081066DA: - mov r0, sp - bl sub_80A6B30 - movs r0, 0x1 - bl sub_80A6C68 - movs r0, 0x2 - bl sub_80A6C68 - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] -_081066FC: - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _08106710 - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl SetAnimBgAttribute -_08106710: - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x4 - movs r2, 0x1 - bl SetAnimBgAttribute - adds r0, r4, 0 - bl DestroyAnimVisualTask -_08106730: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81065EC - - thumb_func_start sub_810673C -sub_810673C: @ 810673C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x2E] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x30] - ldrb r0, [r5] - bl sub_80A82E4 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x3C] - ldr r1, =sub_810679C - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810673C - - thumb_func_start sub_810679C -sub_810679C: @ 810679C - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7F - bhi _081067B2 - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - b _081067B6 -_081067B2: - ldrh r0, [r4, 0x3C] - subs r0, 0x1 -_081067B6: - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - movs r1, 0x30 - ldrsh r0, [r4, r1] - ldrh r1, [r4, 0x32] - lsls r1, 16 - asrs r1, 24 - bl Sin - strh r0, [r4, 0x24] - movs r2, 0x30 - ldrsh r0, [r4, r2] - ldrh r1, [r4, 0x34] - lsls r1, 16 - asrs r1, 24 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x9 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - movs r3, 0x38 - ldrsh r2, [r4, r3] - cmp r2, 0 - beq _08106828 - cmp r2, 0x1 - bne _08106858 - ldr r1, =0xfffffc00 - adds r0, r1, 0 - ldrh r2, [r4, 0x32] - adds r0, r2 - strh r0, [r4, 0x32] - ldr r3, =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 _08106858 - movs r0, 0x2 - strh r0, [r4, 0x38] - b _08106868 - .pool -_08106828: - movs r3, 0x80 - lsls r3, 3 - adds r0, r3, 0 - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - movs r3, 0x80 - lsls r3, 1 - adds r0, r3, 0 - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x2E - ldrsh r1, [r4, r3] - cmp r0, r1 - bne _08106858 - strh r2, [r4, 0x36] - movs r0, 0x1 - strh r0, [r4, 0x38] -_08106858: - ldr r0, =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, =0x0000ffff - cmp r1, r0 - bne _08106868 - adds r0, r4, 0 - bl DestroyAnimSprite -_08106868: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810679C - - thumb_func_start sub_8106878 -sub_8106878: @ 8106878 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r4, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl Sin - strh r0, [r5, 0x2E] - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0x7 - bl Cos - strh r0, [r5, 0x30] - ldr r0, =sub_81068CC - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8106878 - - thumb_func_start sub_81068CC -sub_81068CC: @ 81068CC - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x30] - ldrh r3, [r2, 0x26] - adds r0, r3 - strh r0, [r2, 0x26] - movs r1, 0x20 - ldrsh r0, [r2, r1] - movs r3, 0x24 - ldrsh r1, [r2, r3] - adds r0, r1 - adds r0, 0x10 - movs r1, 0x88 - lsls r1, 1 - cmp r0, r1 - bhi _0810690A - movs r0, 0x22 - ldrsh r1, [r2, r0] - movs r3, 0x26 - ldrsh r0, [r2, r3] - adds r1, r0 - cmp r1, 0xA0 - bgt _0810690A - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - bge _08106910 -_0810690A: - adds r0, r2, 0 - bl DestroyAnimSprite -_08106910: - pop {r0} - bx r0 - thumb_func_end sub_81068CC - - thumb_func_start sub_8106914 -sub_8106914: @ 8106914 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x30] - ldrh r3, [r2, 0x26] - adds r0, r3 - strh r0, [r2, 0x26] - ldrh r0, [r2, 0x34] - adds r1, r0, 0x1 - strh r1, [r2, 0x34] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x32 - ldrsh r1, [r2, r3] - cmp r0, r1 - blt _08106940 - adds r0, r2, 0 - bl DestroyAnimSprite -_08106940: - pop {r0} - bx r0 - thumb_func_end sub_8106914 - - thumb_func_start sub_8106944 -sub_8106944: @ 8106944 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r4, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl Sin - strh r0, [r5, 0x2E] - movs r1, 0 - ldrsh r0, [r4, r1] - movs r1, 0x7 - bl Cos - strh r0, [r5, 0x30] - ldrh r0, [r4, 0x2] - strh r0, [r5, 0x32] - ldr r0, =sub_8106914 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8106944 - - thumb_func_start sub_810699C -sub_810699C: @ 810699C - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _081069B2 - adds r0, r2, 0 - bl DestroyAnimSprite -_081069B2: - pop {r0} - bx r0 - thumb_func_end sub_810699C - - thumb_func_start sub_81069B8 -sub_81069B8: @ 81069B8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitAnimSpritePos - ldr r0, =sub_810699C - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81069B8 - - thumb_func_start sub_81069D0 -sub_81069D0: @ 81069D0 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _081069EE - ldr r0, =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r4, 0x20] - adds r1, r2 - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] -_081069EE: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r2, 0x2E - ldrsh r1, [r4, r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r5, r0, 1 - movs r0, 0xFF - ands r5, r0 - adds r0, r5, 0 - movs r1, 0x50 - bl Sin - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x4F - bgt _08106A32 - adds r0, r5, 0 - movs r1, 0x50 - bl Cos - movs r2, 0x2E - ldrsh r1, [r4, r2] - lsrs r2, r1, 31 - adds r1, r2 - asrs r1, 1 - lsls r0, 16 - asrs r0, 24 - adds r1, r0 - strh r1, [r4, 0x26] -_08106A32: - movs r0, 0x2E - ldrsh r2, [r4, r0] - cmp r2, 0x5A - ble _08106A50 - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - ldrh r0, [r4, 0x24] - subs r0, r1 - strh r0, [r4, 0x24] -_08106A50: - cmp r2, 0x64 - ble _08106A5A - adds r0, r4, 0 - bl DestroyAnimSprite -_08106A5A: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81069D0 - - thumb_func_start sub_8106A64 -sub_8106A64: @ 8106A64 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r1, 0x5 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x14 - ble _08106ABA - adds r1, r0, 0 - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_08106ABA: - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x1E - ble _08106AC8 - adds r0, r4, 0 - bl DestroyAnimSprite -_08106AC8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8106A64 - - thumb_func_start sub_8106AD0 -sub_8106AD0: @ 8106AD0 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08106AF4 - ldr r1, =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x32] - adds r0, r2, 0x1 - strh r0, [r4, 0x2E] - b _08106B48 - .pool -_08106AF4: - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x36] - adds r0, r2 - movs r5, 0 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - adds r2, r0, 0 - strh r2, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - cmp r0, 0x46 - ble _08106B48 - ldr r0, =sub_8106A64 - str r0, [r4, 0x1C] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r1, [r4, 0x22] - adds r0, r2, r1 - strh r0, [r4, 0x22] - strh r5, [r4, 0x24] - strh r5, [r4, 0x26] - bl Random2 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xB4 - bl __umodsi3 - strh r0, [r4, 0x34] -_08106B48: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8106AD0 - - thumb_func_start sub_8106B54 -sub_8106B54: @ 8106B54 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08106B8E - ldr r1, =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl sub_80A82E4 - subs r0, 0x1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - movs r0, 0x1 - strh r0, [r4, 0x32] -_08106B8E: - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x2E] - adds r0, r2 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r1, r0, 2 - adds r0, r1, 0 - cmp r1, 0 - bge _08106BA4 - adds r0, 0xFF -_08106BA4: - asrs r0, 8 - lsls r0, 8 - subs r0, r1, r0 - strh r0, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - bge _08106BB6 - movs r0, 0 - strh r0, [r4, 0x30] -_08106BB6: - movs r0, 0x30 - ldrsh r2, [r4, r0] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _08106BC4 - adds r0, 0x3 -_08106BC4: - asrs r0, 2 - movs r1, 0x1E - subs r1, r0 - adds r0, r2, 0 - bl Cos - strh r0, [r4, 0x24] - movs r0, 0x30 - ldrsh r2, [r4, r0] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _08106BE0 - adds r0, 0x7 -_08106BE0: - asrs r0, 3 - movs r1, 0xA - subs r1, r0 - adds r0, r2, 0 - bl Sin - strh r0, [r4, 0x26] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0x80 - ble _08106C04 - ldrh r1, [r4, 0x32] - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _08106C04 - ldr r0, =0x0000ffff - strh r0, [r4, 0x32] -_08106C04: - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08106C18 - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0 - bge _08106C18 - movs r0, 0x1 - strh r0, [r4, 0x32] -_08106C18: - ldrh r0, [r4, 0x34] - adds r1, r0, 0x1 - strh r1, [r4, 0x34] - subs r0, 0x9 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x46 - bls _08106C5C - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - b _08106C6A - .pool -_08106C5C: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_08106C6A: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x5A - ble _08106C78 - adds r0, r4, 0 - bl DestroyAnimSprite -_08106C78: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8106B54 - - thumb_func_start sub_8106C80 -sub_8106C80: @ 8106C80 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08106CB4 - ldr r1, =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - ldrb r1, [r1, 0x4] - adds r0, r4, 0 - bl StartSpriteAnim - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _08106CC8 - .pool -_08106CB4: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08106CC8 - adds r0, r4, 0 - bl DestroyAnimSprite -_08106CC8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8106C80 - - thumb_func_start sub_8106CD0 -sub_8106CD0: @ 8106CD0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r1, =gBattleAnimArgs - movs r2, 0x4 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _08106CEC - adds r0, r5, 0 - bl DestroyAnimSprite - b _08106D50 - .pool -_08106CEC: - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _08106CFC - ldr r4, =gBattleAnimAttacker - b _08106CFE - .pool -_08106CFC: - ldr r4, =gBattleAnimTarget -_08106CFE: - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r0, =gBattleAnimArgs - movs r2, 0x2 - ldrsh r1, [r0, r2] - adds r2, r0, 0 - cmp r1, 0 - bne _08106D34 - ldrh r0, [r5, 0x20] - adds r0, 0x20 - b _08106D38 - .pool -_08106D34: - ldrh r0, [r5, 0x20] - subs r0, 0x20 -_08106D38: - strh r0, [r5, 0x20] - ldrh r0, [r2, 0x4] - strh r0, [r5, 0x2E] - ldrh r1, [r2, 0x2] - strh r1, [r5, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, =sub_8106D5C - str r0, [r5, 0x1C] -_08106D50: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8106CD0 - - thumb_func_start sub_8106D5C -sub_8106D5C: @ 8106D5C - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08106D8C - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - cmp r0, 0 - beq _08106D86 - ldrh r1, [r2, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r2, 0 - bl StartSpriteAnim - b _08106D8C -_08106D86: - adds r0, r2, 0 - bl DestroyAnimSprite -_08106D8C: - pop {r0} - bx r0 - thumb_func_end sub_8106D5C - - thumb_func_start sub_8106D90 -sub_8106D90: @ 8106D90 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, =gTasks - adds r4, r0 - ldr r2, =gUnknown_08593B98 - adds r0, r4, 0 - bl sub_80A7CFC - ldr r0, =sub_8106DD4 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8106D90 - - thumb_func_start sub_8106DD4 -sub_8106DD4: @ 8106DD4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, =gTasks - adds r0, r1 - bl sub_80A7D34 - lsls r0, 24 - cmp r0, 0 - bne _08106DF4 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_08106DF4: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8106DD4 - - thumb_func_start sub_8106E00 -sub_8106E00: @ 8106E00 - push {r4-r7,lr} - adds r5, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08106E1C - ldr r0, =gBattleAnimAttacker - b _08106E1E - .pool -_08106E1C: - ldr r0, =gBattleAnimTarget -_08106E1E: - ldrb r6, [r0] - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08106E38 - ldr r1, =gBattleAnimArgs - movs r2, 0x2 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1, 0x2] -_08106E38: - adds r0, r6, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r7, =gBattleAnimArgs - lsrs r0, 24 - ldrh r3, [r7, 0x2] - adds r0, r3 - movs r4, 0 - strh r0, [r5, 0x20] - adds r0, r6, 0 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r7, 0x4] - adds r0, r1 - strh r0, [r5, 0x22] - strh r4, [r5, 0x2E] - ldrh r1, [r5, 0x20] - lsls r1, 3 - strh r1, [r5, 0x30] - lsls r0, 3 - strh r0, [r5, 0x32] - movs r2, 0x2 - ldrsh r0, [r7, r2] - lsls r0, 3 - cmp r0, 0 - bge _08106E78 - adds r0, 0x7 -_08106E78: - asrs r0, 3 - strh r0, [r5, 0x34] - movs r3, 0x4 - ldrsh r0, [r7, r3] - lsls r0, 3 - cmp r0, 0 - bge _08106E88 - adds r0, 0x7 -_08106E88: - asrs r0, 3 - strh r0, [r5, 0x36] - ldrh r2, [r5, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - movs r3, 0x6 - ldrsh r0, [r7, r3] - lsls r0, 4 - adds r1, r0 - ldr r3, =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - ldr r0, =sub_8106EC8 - str r0, [r5, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8106E00 - - thumb_func_start sub_8106EC8 -sub_8106EC8: @ 8106EC8 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x34] - ldrh r1, [r2, 0x30] - adds r0, r1 - strh r0, [r2, 0x30] - ldrh r1, [r2, 0x36] - ldrh r3, [r2, 0x32] - adds r1, r3 - strh r1, [r2, 0x32] - lsls r0, 16 - asrs r0, 19 - strh r0, [r2, 0x20] - lsls r1, 16 - asrs r1, 19 - strh r1, [r2, 0x22] - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _08106EFC - adds r0, r2, 0 - bl DestroyAnimSprite -_08106EFC: - pop {r0} - bx r0 - thumb_func_end sub_8106EC8 - - thumb_func_start sub_8106F00 -sub_8106F00: @ 8106F00 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08106F22 - ldr r0, =gBattleAnimArgs - ldrh r1, [r0] - movs r0, 0x78 - subs r0, r1 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_08106F22: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x30 - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _08106F40 - ldrb r0, [r4, 0x5] - lsrs r0, 4 - adds r0, 0x10 - movs r1, 0 - bl sub_80A750C -_08106F40: - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r2, 0x30 - ldrsh r0, [r4, r2] - adds r0, 0x50 - cmp r1, r0 - bne _08106F54 - adds r0, r4, 0 - bl DestroyAnimSprite -_08106F54: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8106F00 - - thumb_func_start sub_8106F60 -sub_8106F60: @ 8106F60 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x2E - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _08106F8E - movs r5, 0x78 - strh r5, [r6, 0x20] - ldr r4, =gBattleAnimArgs - movs r2, 0 - ldrsh r0, [r4, r2] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - subs r0, 0xF - strh r0, [r6, 0x22] - ldrb r1, [r4, 0x2] - adds r0, r6, 0 - bl StartSpriteAnim - strh r5, [r6, 0x38] - ldrh r0, [r4, 0x4] - strh r0, [r6, 0x34] -_08106F8E: - ldrh r0, [r6, 0x2E] - adds r0, 0x1 - movs r5, 0 - strh r0, [r6, 0x2E] - movs r1, 0x2E - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r6, 0x30] - movs r2, 0x2E - ldrsh r0, [r6, r2] - lsls r4, r0, 1 - adds r4, r0 - ldrh r0, [r6, 0x34] - adds r4, r0 - movs r2, 0xFF - ldrh r0, [r6, 0x3A] - adds r0, 0xA - movs r1, 0xFF - ands r0, r1 - strh r0, [r6, 0x3A] - ands r4, r2 - adds r0, r4, 0 - movs r1, 0x64 - bl Cos - strh r0, [r6, 0x24] - adds r0, r4, 0 - movs r1, 0xA - bl Sin - adds r4, r0, 0 - movs r1, 0x3A - ldrsh r0, [r6, r1] - movs r1, 0x4 - bl Cos - ldrh r2, [r6, 0x30] - adds r4, r2 - adds r0, r4 - strh r0, [r6, 0x26] - movs r0, 0x2E - ldrsh r1, [r6, r0] - movs r2, 0x38 - ldrsh r0, [r6, r2] - cmp r1, r0 - ble _0810700A - ldr r0, =sub_8107018 - str r0, [r6, 0x1C] - strh r5, [r6, 0x2E] - adds r0, r6, 0 - bl oamt_add_pos2_onto_pos1 - movs r0, 0x5 - strh r0, [r6, 0x32] - strh r5, [r6, 0x36] - strh r5, [r6, 0x34] - adds r0, r6, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_0810700A: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8106F60 - - thumb_func_start sub_8107018 -sub_8107018: @ 8107018 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - ble _08107032 - movs r0, 0 - strh r0, [r1, 0x2E] - ldr r0, =sub_810703C - str r0, [r1, 0x1C] -_08107032: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8107018 - - thumb_func_start sub_810703C -sub_810703C: @ 810703C - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x34] - adds r0, r1, r2 - strh r0, [r4, 0x34] - strh r0, [r4, 0x26] - adds r1, 0x1 - strh r1, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x30 - ble _08107066 - lsls r0, r1, 16 - cmp r0, 0 - ble _08107066 - ldrh r0, [r4, 0x36] - subs r1, r0, 0x5 - strh r1, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x36] -_08107066: - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0x3 - ble _08107098 - movs r2, 0x32 - ldrsh r1, [r4, r2] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - adds r0, r4, 0 - bl DestroyAnimSprite -_08107098: - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bne _081070A6 - adds r0, r4, 0 - bl DestroyAnimSprite -_081070A6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_810703C - - thumb_func_start sub_81070AC -sub_81070AC: @ 81070AC - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _081070F8 - ldr r4, =gBattleAnimAttacker - ldrb r1, [r4] - movs r0, 0x2 - eors r0, r1 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _081070F8 - ldrb r0, [r4] - adds r2, r5, 0 - adds r2, 0x20 - adds r3, r5, 0 - adds r3, 0x22 - movs r1, 0 - bl SetAverageBattlerPositions - ldrh r0, [r5, 0x22] - adds r0, 0x28 - strh r0, [r5, 0x22] - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _08107118 - .pool -_081070F8: - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x28 - strh r0, [r5, 0x22] -_08107118: - movs r0, 0xD - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - subs r0, 0x48 - strh r0, [r5, 0x36] - ldr r0, =StartAnimLinearTranslation - str r0, [r5, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81070AC - - thumb_func_start AnimTask_IsFuryCutterHitRight -AnimTask_IsFuryCutterHitRight: @ 8107144 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, =gBattleAnimArgs - ldr r1, =gAnimDisableStructPtr - ldr r1, [r1] - ldrb r2, [r1, 0x10] - movs r1, 0x1 - ands r1, r2 - strh r1, [r3, 0xE] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .pool - thumb_func_end AnimTask_IsFuryCutterHitRight - - thumb_func_start AnimTask_GetFuryCutterHitCount -AnimTask_GetFuryCutterHitCount: @ 8107168 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gBattleAnimArgs - ldr r1, =gAnimDisableStructPtr - ldr r1, [r1] - ldrb r1, [r1, 0x10] - strh r1, [r2, 0xE] - bl DestroyAnimVisualTask - pop {r0} - bx r0 - .pool - thumb_func_end AnimTask_GetFuryCutterHitCount - - .align 2, 0 diff --git a/asm/battle_intro.s b/asm/battle_intro.s deleted file mode 100644 index 04a0301ce..000000000 --- a/asm/battle_intro.s +++ /dev/null @@ -1,2035 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start SetAnimBgAttribute -SetAnimBgAttribute: @ 811802C - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r4, r2, 24 - cmp r6, 0x3 - bls _08118040 - b _08118132 -_08118040: - ldr r0, =gUnknown_0859741A - adds r0, r6, r0 - ldrb r0, [r0] - bl GetGpuReg - ldr r1, =gUnknown_0203A114 - strh r0, [r1] - cmp r5, 0x6 - bhi _08118124 - lsls r0, r5, 2 - ldr r1, =_08118068 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08118068: - .4byte _08118084 - .4byte _08118098 - .4byte _081180B0 - .4byte _081180C8 - .4byte _081180E0 - .4byte _081180FC - .4byte _08118110 -_08118084: - ldr r2, =gUnknown_0203A114 - lsls r3, r4, 6 - ldrb r1, [r2, 0x1] - movs r0, 0x3F - ands r0, r1 - orrs r0, r3 - strb r0, [r2, 0x1] - b _08118124 - .pool -_08118098: - ldr r3, =gUnknown_0203A114 - movs r0, 0x1 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 5 - ldrb r2, [r3, 0x1] - movs r0, 0x21 - negs r0, r0 - b _0811811E - .pool -_081180B0: - ldr r3, =gUnknown_0203A114 - movs r0, 0x1 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 6 - ldrb r2, [r3] - movs r0, 0x41 - negs r0, r0 - b _081180EE - .pool -_081180C8: - ldr r3, =gUnknown_0203A114 - movs r0, 0x3 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0xD - negs r0, r0 - b _081180EE - .pool -_081180E0: - ldr r3, =gUnknown_0203A114 - movs r0, 0x3 - adds r1, r4, 0 - ands r1, r0 - ldrb r2, [r3] - movs r0, 0x4 - negs r0, r0 -_081180EE: - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - b _08118124 - .pool -_081180FC: - ldr r2, =gUnknown_0203A114 - lsls r3, r4, 7 - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - orrs r0, r3 - strb r0, [r2] - b _08118124 - .pool -_08118110: - ldr r3, =gUnknown_0203A114 - movs r0, 0x1F - adds r1, r4, 0 - ands r1, r0 - ldrb r2, [r3, 0x1] - movs r0, 0x20 - negs r0, r0 -_0811811E: - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x1] -_08118124: - ldr r0, =gUnknown_0859741A - adds r0, r6, r0 - ldrb r0, [r0] - ldr r1, =gUnknown_0203A114 - ldrh r1, [r1] - bl SetGpuReg -_08118132: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end SetAnimBgAttribute - - thumb_func_start GetAnimBgAttribute -GetAnimBgAttribute: @ 8118140 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r2, 0x3 - bhi _081181C8 - ldr r0, =gUnknown_0859741E - adds r0, r2, r0 - ldrb r0, [r0] - bl GetGpuReg - mov r1, sp - strh r0, [r1] - cmp r4, 0x6 - bhi _081181C8 - lsls r0, r4, 2 - ldr r1, =_08118174 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08118174: - .4byte _08118190 - .4byte _08118198 - .4byte _081181A0 - .4byte _081181A8 - .4byte _081181B0 - .4byte _081181B8 - .4byte _081181C0 -_08118190: - ldr r0, [sp] - lsls r0, 16 - lsrs r0, 30 - b _081181CA -_08118198: - ldr r0, [sp] - lsls r0, 18 - lsrs r0, 31 - b _081181CA -_081181A0: - ldr r0, [sp] - lsls r0, 25 - lsrs r0, 31 - b _081181CA -_081181A8: - ldr r0, [sp] - lsls r0, 28 - lsrs r0, 30 - b _081181CA -_081181B0: - ldr r0, [sp] - lsls r0, 30 - lsrs r0, 30 - b _081181CA -_081181B8: - ldr r0, [sp] - lsls r0, 24 - lsrs r0, 31 - b _081181CA -_081181C0: - ldr r0, [sp] - lsls r0, 19 - lsrs r0, 27 - b _081181CA -_081181C8: - movs r0, 0 -_081181CA: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetAnimBgAttribute - - thumb_func_start HandleIntroSlide -HandleIntroSlide: @ 81181D4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r2, =gBattleTypeFlags - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 15 - ands r0, r1 - cmp r0, 0 - beq _08118208 - ldr r0, =gPartnerTrainerId - ldrh r1, [r0] - ldr r0, =0x00000c03 - cmp r1, r0 - beq _08118208 - ldr r0, =sub_8118D68 - b _08118258 - .pool -_08118208: - ldr r2, [r2] - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _0811821C - ldr r0, =task00_battle_intro_wireless - b _08118258 - .pool -_0811821C: - ldr r0, =0x003f0100 - ands r0, r2 - cmp r0, 0 - beq _08118230 - ldr r0, =task_battle_intro_anim - b _08118258 - .pool -_08118230: - movs r0, 0x80 - lsls r0, 5 - ands r2, r0 - cmp r2, 0 - beq _08118250 - ldr r0, =gGameVersion - ldrb r0, [r0] - cmp r0, 0x2 - beq _08118250 - movs r4, 0x3 - ldr r0, =task00_battle_intro_80BC6C8 - b _08118258 - .pool -_08118250: - ldr r1, =gUnknown_08597424 - lsls r0, r4, 2 - adds r0, r1 - ldr r0, [r0] -_08118258: - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - movs r0, 0 - strh r0, [r1, 0x8] - strh r4, [r1, 0xA] - strh r0, [r1, 0xC] - strh r0, [r1, 0xE] - strh r0, [r1, 0x10] - strh r0, [r1, 0x12] - strh r0, [r1, 0x14] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end HandleIntroSlide - - thumb_func_start sub_811828C -sub_811828C: @ 811828C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - ldr r0, =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r0, =gBattle_BG1_Y - strh r1, [r0] - ldr r0, =gBattle_BG2_X - strh r1, [r0] - ldr r0, =gBattle_BG2_Y - strh r1, [r0] - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - ldr r4, =0x00003f3f - movs r0, 0x48 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x4A - adds r1, r4, 0 - bl SetGpuReg - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_811828C - - thumb_func_start task_battle_intro_80BC47C -task_battle_intro_80BC47C: @ 81182EC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, =gBattle_BG1_X - ldrh r0, [r1] - adds r0, 0x6 - strh r0, [r1] - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - mov r8, r1 - cmp r0, 0x4 - bls _08118318 - b _0811852A -_08118318: - lsls r0, 2 - ldr r1, =_08118330 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08118330: - .4byte _08118344 - .4byte _08118374 - .4byte _0811839C - .4byte _081183E4 - .4byte _08118524 -_08118344: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08118360 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - add r0, r8 - movs r1, 0x10 - b _0811836A - .pool -_08118360: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - add r0, r8 - movs r1, 0x1 -_0811836A: - strh r1, [r0, 0xC] - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - b _0811852A -_08118374: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - mov r3, r8 - adds r1, r0, r3 - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - cmp r0, 0 - beq _0811838C - b _0811852A -_0811838C: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0x48 - movs r1, 0x3F - bl SetGpuReg - b _0811852A -_0811839C: - ldr r1, =gBattle_WIN0V - ldrh r0, [r1] - subs r0, 0xFF - strh r0, [r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0xC0 - lsls r1, 6 - cmp r0, r1 - beq _081183B4 - b _0811852A -_081183B4: - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - add r1, r8 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0xF0 - strh r0, [r1, 0xC] - movs r0, 0x20 - strh r0, [r1, 0xE] - ldr r2, =gIntroSlideFlags - ldrh r1, [r2] - ldr r0, =0x0000fffe - ands r0, r1 - strh r0, [r2] - b _0811852A - .pool -_081183E4: - lsls r0, r4, 2 - adds r1, r0, r4 - lsls r1, 3 - mov r5, r8 - adds r2, r1, r5 - ldrh r3, [r2, 0xE] - movs r5, 0xE - ldrsh r1, [r2, r5] - mov r12, r0 - cmp r1, 0 - beq _08118400 - subs r0, r3, 0x1 - strh r0, [r2, 0xE] - b _0811842E -_08118400: - movs r1, 0xA - ldrsh r0, [r2, r1] - cmp r0, 0x1 - bne _08118420 - ldr r2, =gBattle_BG1_Y - ldrh r1, [r2] - ldr r0, =0x0000ffb0 - cmp r1, r0 - beq _0811842E - subs r0, r1, 0x2 - b _0811842C - .pool -_08118420: - ldr r2, =gBattle_BG1_Y - ldrh r1, [r2] - ldr r0, =0x0000ffc8 - cmp r1, r0 - beq _0811842E - subs r0, r1, 0x1 -_0811842C: - strh r0, [r2] -_0811842E: - ldr r2, =gBattle_WIN0V - ldrh r1, [r2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _08118442 - ldr r3, =0xfffffc04 - adds r0, r1, r3 - strh r0, [r2] -_08118442: - mov r5, r12 - adds r0, r5, r4 - lsls r0, 3 - mov r2, r8 - adds r1, r0, r2 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _0811845A - subs r0, r2, 0x2 - strh r0, [r1, 0xC] -_0811845A: - movs r3, 0 - ldr r5, =gScanlineEffect - mov r9, r5 - ldr r7, =gScanlineEffectRegBuffers - mov r6, r9 - adds r5, r1, 0 -_08118466: - lsls r2, r3, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r7 - ldrh r0, [r5, 0xC] - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x4F - ble _08118466 - cmp r3, 0x9F - bgt _081184AA - ldr r7, =gScanlineEffectRegBuffers - ldr r6, =gScanlineEffect - ldr r1, =gTasks - mov r2, r12 - adds r0, r2, r4 - lsls r0, 3 - adds r5, r0, r1 -_08118490: - lsls r2, r3, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r7 - ldrh r0, [r5, 0xC] - negs r0, r0 - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x9F - ble _08118490 -_081184AA: - mov r3, r12 - adds r0, r3, r4 - lsls r0, 3 - mov r5, r8 - adds r1, r0, r5 - movs r0, 0xC - ldrsh r2, [r1, r0] - cmp r2, 0 - bne _0811852A - movs r0, 0x3 - mov r3, r9 - strb r0, [r3, 0x15] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - str r2, [sp] - ldr r1, =0x0600e000 - ldr r2, =0x05000200 - mov r0, sp - bl CpuSet - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r1, 0x9C - lsls r1, 8 - movs r0, 0xA - bl SetGpuReg - movs r1, 0xBC - lsls r1, 7 - movs r0, 0xC - bl SetGpuReg - b _0811852A - .pool -_08118524: - adds r0, r4, 0 - bl sub_811828C -_0811852A: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end task_battle_intro_80BC47C - - thumb_func_start task00_battle_intro_80BC6C8 -task00_battle_intro_80BC6C8: @ 8118538 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0xA - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x3 - beq _08118578 - cmp r0, 0x3 - bgt _08118568 - cmp r0, 0x2 - beq _0811856C - b _08118580 - .pool -_08118568: - cmp r0, 0x4 - bne _08118580 -_0811856C: - ldr r1, =gBattle_BG1_X - ldrh r0, [r1] - adds r0, 0x8 - b _0811857E - .pool -_08118578: - ldr r1, =gBattle_BG1_X - ldrh r0, [r1] - adds r0, 0x6 -_0811857E: - strh r0, [r1] -_08118580: - lsls r0, r5, 2 - adds r1, r0, r5 - lsls r1, 3 - adds r4, r1, r2 - movs r3, 0xA - ldrsh r1, [r4, r3] - adds r6, r0, 0 - cmp r1, 0x4 - bne _081185E4 - ldr r7, =gBattle_BG1_Y - ldrh r0, [r4, 0x14] - bl Cos2 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _081185A6 - ldr r1, =0x000001ff - adds r0, r1 -_081185A6: - asrs r0, 9 - subs r0, 0x8 - strh r0, [r7] - ldrh r1, [r4, 0x14] - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0xB3 - bgt _081185C8 - adds r0, r1, 0x4 - b _081185CA - .pool -_081185C8: - adds r0, r1, 0x6 -_081185CA: - strh r0, [r4, 0x14] - ldr r2, =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r3, r0, r2 - movs r0, 0x14 - ldrsh r1, [r3, r0] - movs r0, 0xB4 - lsls r0, 1 - cmp r1, r0 - bne _081185E4 - movs r0, 0 - strh r0, [r3, 0x14] -_081185E4: - adds r0, r6, r5 - lsls r0, 3 - adds r0, r2 - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0x4 - bls _081185F4 - b _0811881A -_081185F4: - lsls r0, 2 - ldr r1, =_08118608 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08118608: - .4byte _0811861C - .4byte _0811864C - .4byte _08118678 - .4byte _081186C8 - .4byte _08118814 -_0811861C: - ldr r1, =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r2, r0, r1 - movs r3, 0x10 - strh r3, [r2, 0x10] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08118640 - strh r3, [r2, 0xC] - b _08118644 - .pool -_08118640: - movs r0, 0x1 - strh r0, [r2, 0xC] -_08118644: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - b _0811881A -_0811864C: - ldr r0, =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - cmp r0, 0 - beq _08118662 - b _0811881A -_08118662: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0x48 - movs r1, 0x3F - bl SetGpuReg - b _0811881A - .pool -_08118678: - ldr r1, =gBattle_WIN0V - ldrh r0, [r1] - subs r0, 0xFF - strh r0, [r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0xC0 - lsls r1, 6 - cmp r0, r1 - beq _08118690 - b _0811881A -_08118690: - ldr r0, =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0xF0 - strh r0, [r1, 0xC] - movs r0, 0x20 - strh r0, [r1, 0xE] - movs r0, 0x1 - strh r0, [r1, 0x12] - ldr r2, =gIntroSlideFlags - ldrh r1, [r2] - ldr r0, =0x0000fffe - ands r0, r1 - strh r0, [r2] - b _0811881A - .pool -_081186C8: - ldr r0, =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldrh r2, [r1, 0xE] - movs r3, 0xE - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _08118708 - subs r0, r2, 0x1 - strh r0, [r1, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _08118728 - ldr r1, =0x00001842 - movs r0, 0x50 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0xF - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - b _08118728 - .pool -_08118708: - ldrh r2, [r1, 0x10] - movs r0, 0x1F - ands r0, r2 - cmp r0, 0 - beq _08118728 - ldrh r0, [r1, 0x12] - subs r0, 0x1 - strh r0, [r1, 0x12] - lsls r0, 16 - cmp r0, 0 - bne _08118728 - adds r0, r2, 0 - adds r0, 0xFF - strh r0, [r1, 0x10] - movs r0, 0x4 - strh r0, [r1, 0x12] -_08118728: - ldr r2, =gBattle_WIN0V - ldrh r1, [r2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _0811873C - ldr r3, =0xfffffc04 - adds r0, r1, r3 - strh r0, [r2] -_0811873C: - ldr r0, =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _08118752 - subs r0, r2, 0x2 - strh r0, [r1, 0xC] -_08118752: - movs r3, 0 - ldr r0, =gScanlineEffect - mov r8, r0 - ldr r2, =gScanlineEffectRegBuffers - mov r12, r2 - mov r7, r8 - adds r4, r1, 0 -_08118760: - lsls r2, r3, 1 - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r12 - ldrh r0, [r4, 0xC] - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x4F - ble _08118760 - cmp r3, 0x9F - bgt _081187A4 - ldr r0, =gScanlineEffectRegBuffers - mov r12, r0 - ldr r7, =gScanlineEffect - ldr r1, =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r4, r0, r1 -_0811878A: - lsls r2, r3, 1 - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r12 - ldrh r0, [r4, 0xC] - negs r0, r0 - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x9F - ble _0811878A -_081187A4: - ldr r1, =gTasks - adds r0, r6, r5 - lsls r0, 3 - adds r1, r0, r1 - movs r3, 0xC - ldrsh r2, [r1, r3] - cmp r2, 0 - bne _0811881A - movs r0, 0x3 - mov r3, r8 - strb r0, [r3, 0x15] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - str r2, [sp] - ldr r1, =0x0600e000 - ldr r2, =0x05000200 - mov r0, sp - bl CpuSet - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r1, 0x9C - lsls r1, 8 - movs r0, 0xA - bl SetGpuReg - movs r1, 0xBC - lsls r1, 7 - movs r0, 0xC - bl SetGpuReg - b _0811881A - .pool -_08118814: - adds r0, r5, 0 - bl sub_811828C -_0811881A: - ldr r0, =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0x4 - beq _08118832 - ldrh r1, [r1, 0x10] - movs r0, 0x52 - bl SetGpuReg -_08118832: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end task00_battle_intro_80BC6C8 - - thumb_func_start task_battle_intro_anim -task_battle_intro_anim: @ 8118844 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =gBattle_BG1_X - ldrh r0, [r1] - adds r0, 0x8 - strh r0, [r1] - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r4, r1, 0 - cmp r0, 0x4 - bls _0811886E - b _08118A96 -_0811886E: - lsls r0, 2 - ldr r1, =_08118884 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08118884: - .4byte _08118898 - .4byte _081188F0 - .4byte _0811891C - .4byte _0811896C - .4byte _08118A90 -_08118898: - ldr r1, =0x00001842 - movs r0, 0x50 - bl SetGpuReg - ldr r4, =0x00000808 - movs r0, 0x52 - adds r1, r4, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r2, r0, r1 - strh r4, [r2, 0x10] - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - ldr r1, =0x02000002 - ands r0, r1 - cmp r0, 0 - beq _081188E4 - movs r0, 0x10 - b _081188E6 - .pool -_081188E4: - movs r0, 0x1 -_081188E6: - strh r0, [r2, 0xC] - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - b _08118A96 -_081188F0: - ldr r0, =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - cmp r0, 0 - beq _08118908 - b _08118A96 -_08118908: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0x48 - movs r1, 0x3F - bl SetGpuReg - b _08118A96 - .pool -_0811891C: - ldr r1, =gBattle_WIN0V - ldrh r0, [r1] - subs r0, 0xFF - strh r0, [r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0xC0 - lsls r1, 6 - cmp r0, r1 - beq _08118934 - b _08118A96 -_08118934: - ldr r0, =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0xF0 - strh r0, [r1, 0xC] - movs r0, 0x20 - strh r0, [r1, 0xE] - movs r0, 0x1 - strh r0, [r1, 0x12] - ldr r2, =gIntroSlideFlags - ldrh r1, [r2] - ldr r0, =0x0000fffe - ands r0, r1 - strh r0, [r2] - b _08118A96 - .pool -_0811896C: - lsls r0, r5, 2 - adds r1, r0, r5 - lsls r1, 3 - adds r2, r1, r4 - ldrh r3, [r2, 0xE] - movs r6, 0xE - ldrsh r1, [r2, r6] - mov r12, r0 - cmp r1, 0 - beq _08118986 - subs r0, r3, 0x1 - strh r0, [r2, 0xE] - b _081189A6 -_08118986: - ldrh r1, [r2, 0x10] - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - beq _081189A6 - ldrh r0, [r2, 0x12] - subs r0, 0x1 - strh r0, [r2, 0x12] - lsls r0, 16 - cmp r0, 0 - bne _081189A6 - adds r0, r1, 0 - adds r0, 0xFF - strh r0, [r2, 0x10] - movs r0, 0x6 - strh r0, [r2, 0x12] -_081189A6: - ldr r2, =gBattle_WIN0V - ldrh r1, [r2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _081189BA - ldr r3, =0xfffffc04 - adds r0, r1, r3 - strh r0, [r2] -_081189BA: - mov r6, r12 - adds r0, r6, r5 - lsls r0, 3 - adds r1, r0, r4 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _081189D0 - subs r0, r2, 0x2 - strh r0, [r1, 0xC] -_081189D0: - movs r3, 0 - ldr r6, =gScanlineEffect - mov r8, r6 - ldr r7, =gScanlineEffectRegBuffers - adds r4, r1, 0 -_081189DA: - lsls r2, r3, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r7 - ldrh r0, [r4, 0xC] - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x4F - ble _081189DA - cmp r3, 0x9F - bgt _08118A1E - ldr r7, =gScanlineEffectRegBuffers - ldr r6, =gScanlineEffect - ldr r1, =gTasks - mov r2, r12 - adds r0, r2, r5 - lsls r0, 3 - adds r4, r0, r1 -_08118A04: - lsls r2, r3, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r7 - ldrh r0, [r4, 0xC] - negs r0, r0 - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x9F - ble _08118A04 -_08118A1E: - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r1, r0, r1 - movs r3, 0xC - ldrsh r2, [r1, r3] - cmp r2, 0 - bne _08118A96 - movs r0, 0x3 - mov r6, r8 - strb r0, [r6, 0x15] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - str r2, [sp] - ldr r1, =0x0600e000 - ldr r2, =0x05000200 - mov r0, sp - bl CpuSet - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r1, 0x9C - lsls r1, 8 - movs r0, 0xA - bl SetGpuReg - movs r1, 0xBC - lsls r1, 7 - movs r0, 0xC - bl SetGpuReg - b _08118A96 - .pool -_08118A90: - adds r0, r5, 0 - bl sub_811828C -_08118A96: - ldr r0, =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0x4 - beq _08118AB0 - ldrh r1, [r1, 0x10] - movs r0, 0x52 - bl SetGpuReg -_08118AB0: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end task_battle_intro_anim - - thumb_func_start task00_battle_intro_wireless -task00_battle_intro_wireless: @ 8118AC0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r7, r0, r1 - movs r1, 0x8 - ldrsh r0, [r7, r1] - cmp r0, 0x1 - ble _08118B36 - movs r2, 0x10 - ldrsh r0, [r7, r2] - cmp r0, 0 - bne _08118B36 - ldr r2, =gBattle_BG1_X - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _08118AFE - cmp r1, 0x4F - bhi _08118B18 -_08118AFE: - adds r0, r1, 0x3 - strh r0, [r2] - ldr r1, =gBattle_BG2_X - ldrh r0, [r1] - subs r0, 0x3 - strh r0, [r1] - b _08118B36 - .pool -_08118B18: - str r5, [sp] - ldr r1, =0x0600e000 - ldr r4, =0x05000200 - mov r0, sp - adds r2, r4, 0 - bl CpuSet - str r5, [sp, 0x4] - add r0, sp, 0x4 - ldr r1, =0x0600f000 - adds r2, r4, 0 - bl CpuSet - movs r0, 0x1 - strh r0, [r7, 0x10] -_08118B36: - ldr r0, =gTasks - lsls r2, r6, 2 - adds r1, r2, r6 - lsls r1, 3 - adds r1, r0 - movs r3, 0x8 - ldrsh r1, [r1, r3] - mov r9, r0 - adds r5, r2, 0 - cmp r1, 0x4 - bls _08118B4E - b _08118D5A -_08118B4E: - lsls r0, r1, 2 - ldr r1, =_08118B6C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08118B6C: - .4byte _08118B80 - .4byte _08118B92 - .4byte _08118C38 - .4byte _08118C7C - .4byte _08118D54 -_08118B80: - adds r0, r5, r6 - lsls r0, 3 - add r0, r9 - movs r1, 0x20 - strh r1, [r0, 0xC] - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - b _08118D5A -_08118B92: - adds r0, r5, r6 - lsls r0, 3 - mov r2, r9 - adds r1, r0, r2 - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - cmp r0, 0 - beq _08118BA8 - b _08118D5A -_08118BA8: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - ldr r4, =gSprites - ldr r5, =gBattleStruct - ldr r0, [r5] - adds r0, 0x7D - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r3, [r1, 0x1] - movs r2, 0xD - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - movs r3, 0x8 - mov r9, r3 - mov r3, r9 - orrs r0, r3 - strb r0, [r1, 0x1] - ldr r3, [r5] - adds r0, r3, 0 - adds r0, 0x7D - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - movs r1, 0x1C - adds r1, r4 - mov r8, r1 - add r0, r8 - ldr r6, =sub_8038B74 - str r6, [r0] - adds r3, 0x7E - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x1] - ands r2, r1 - mov r3, r9 - orrs r2, r3 - strb r2, [r0, 0x1] - ldr r0, [r5] - adds r0, 0x7E - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - str r6, [r0] - movs r0, 0x48 - movs r1, 0x3F - bl SetGpuReg - ldr r1, =0x00003f06 - movs r0, 0x4A - bl SetGpuReg - b _08118D5A - .pool -_08118C38: - ldr r1, =gBattle_WIN0V - ldrh r0, [r1] - subs r0, 0xFF - strh r0, [r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - movs r1, 0xC0 - lsls r1, 6 - cmp r0, r1 - beq _08118C50 - b _08118D5A -_08118C50: - adds r1, r5, r6 - lsls r1, 3 - add r1, r9 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0xF0 - strh r0, [r1, 0xC] - movs r0, 0x20 - strh r0, [r1, 0xE] - ldr r2, =gIntroSlideFlags - ldrh r1, [r2] - ldr r0, =0x0000fffe - ands r0, r1 - strh r0, [r2] - b _08118D5A - .pool -_08118C7C: - ldr r2, =gBattle_WIN0V - ldrh r1, [r2] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _08118C90 - ldr r3, =0xfffffc04 - adds r0, r1, r3 - strh r0, [r2] -_08118C90: - adds r0, r5, r6 - lsls r0, 3 - mov r2, r9 - adds r1, r0, r2 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _08118CA6 - subs r0, r2, 0x2 - strh r0, [r1, 0xC] -_08118CA6: - movs r3, 0 - ldr r0, =gScanlineEffect - mov r12, r0 - ldr r2, =gScanlineEffectRegBuffers - mov r8, r2 - mov r7, r12 - adds r4, r1, 0 -_08118CB4: - lsls r2, r3, 1 - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r8 - ldrh r0, [r4, 0xC] - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x4F - ble _08118CB4 - cmp r3, 0x9F - bgt _08118CF8 - ldr r0, =gScanlineEffectRegBuffers - mov r8, r0 - ldr r7, =gScanlineEffect - ldr r1, =gTasks - adds r0, r5, r6 - lsls r0, 3 - adds r4, r0, r1 -_08118CDE: - lsls r2, r3, 1 - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r8 - ldrh r0, [r4, 0xC] - negs r0, r0 - strh r0, [r2] - adds r3, 0x1 - cmp r3, 0x9F - ble _08118CDE -_08118CF8: - adds r0, r5, r6 - lsls r0, 3 - mov r2, r9 - adds r1, r0, r2 - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _08118D5A - movs r0, 0x3 - mov r2, r12 - strb r0, [r2, 0x15] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r1, 0x9C - lsls r1, 8 - movs r0, 0xA - bl SetGpuReg - movs r1, 0xBC - lsls r1, 7 - movs r0, 0xC - bl SetGpuReg - b _08118D5A - .pool -_08118D54: - adds r0, r6, 0 - bl sub_811828C -_08118D5A: - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end task00_battle_intro_wireless - - thumb_func_start sub_8118D68 -sub_8118D68: @ 8118D68 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r6, r1, 0 - cmp r0, 0x5 - bls _08118D86 - b _08118FB2 -_08118D86: - lsls r0, 2 - ldr r1, =_08118D98 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08118D98: - .4byte _08118DB0 - .4byte _08118DBE - .4byte _08118E4C - .4byte _08118EA8 - .4byte _08118F00 - .4byte _08118FAC -_08118DB0: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r6 - movs r1, 0x1 - strh r1, [r0, 0xC] - b _08118F84 -_08118DBE: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r6 - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] - lsls r0, 16 - cmp r0, 0 - beq _08118DD4 - b _08118FB2 -_08118DD4: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - ldr r1, =0x00005c0a - movs r0, 0xA - bl SetGpuReg - ldr r1, =0x00005e0a - movs r0, 0xC - bl SetGpuReg - movs r0, 0 - bl GetGpuReg - adds r1, r0, 0 - ldr r2, =0x0000f040 - adds r0, r2, 0 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0 - bl SetGpuReg - movs r1, 0xF8 - lsls r1, 6 - movs r0, 0x48 - bl SetGpuReg - ldr r1, =0x00003f3f - movs r0, 0x4A - bl SetGpuReg - ldr r1, =gBattle_BG0_Y - ldr r2, =0x0000ffd0 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, =gBattle_BG1_X - movs r0, 0xF0 - strh r0, [r1] - ldr r1, =gBattle_BG2_X - subs r2, 0xC0 - adds r0, r2, 0 - strh r0, [r1] - b _08118FB2 - .pool -_08118E4C: - ldr r2, =gBattle_WIN0V - ldrh r3, [r2] - movs r1, 0x80 - lsls r1, 1 - adds r0, r1, 0 - adds r1, r3, r0 - strh r1, [r2] - movs r5, 0xFF - lsls r5, 8 - ands r1, r5 - lsls r0, 16 - lsrs r0, 16 - cmp r1, r0 - beq _08118E6E - adds r0, r3, 0 - adds r0, 0xFF - strh r0, [r2] -_08118E6E: - ldrh r0, [r2] - adds r1, r5, 0 - ands r1, r0 - movs r0, 0x80 - lsls r0, 6 - cmp r1, r0 - beq _08118E7E - b _08118FB2 -_08118E7E: - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r6 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - movs r0, 0xF0 - strh r0, [r1, 0xC] - ldr r2, =gIntroSlideFlags - ldrh r1, [r2] - ldr r0, =0x0000fffe - ands r0, r1 - strh r0, [r2] - b _08118FB2 - .pool -_08118EA8: - ldr r3, =gBattle_WIN0V - ldrh r2, [r3] - movs r0, 0xFF - lsls r0, 8 - ands r0, r2 - movs r1, 0x98 - lsls r1, 7 - cmp r0, r1 - beq _08118EC2 - movs r1, 0xFF - lsls r1, 2 - adds r0, r2, r1 - strh r0, [r3] -_08118EC2: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r3, r0, r6 - ldrh r1, [r3, 0xC] - movs r2, 0xC - ldrsh r0, [r3, r2] - cmp r0, 0 - beq _08118ED8 - subs r0, r1, 0x2 - strh r0, [r3, 0xC] -_08118ED8: - ldr r1, =gBattle_BG1_X - ldrh r0, [r3, 0xC] - strh r0, [r1] - ldr r2, =gBattle_BG2_X - negs r1, r0 - strh r1, [r2] - lsls r0, 16 - cmp r0, 0 - bne _08118FB2 - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - b _08118FB2 - .pool -_08118F00: - ldr r1, =gBattle_BG0_Y - ldrh r0, [r1] - adds r3, r0, 0x2 - strh r3, [r1] - ldr r1, =gBattle_BG2_Y - ldrh r0, [r1] - adds r0, 0x2 - strh r0, [r1] - ldr r5, =gBattle_WIN0V - ldrh r2, [r5] - movs r0, 0xFF - lsls r0, 8 - ands r0, r2 - movs r1, 0xA0 - lsls r1, 7 - cmp r0, r1 - beq _08118F28 - adds r0, r2, 0 - adds r0, 0xFF - strh r0, [r5] -_08118F28: - lsls r0, r3, 16 - lsrs r0, 16 - cmp r0, 0 - bne _08118FB2 - str r0, [sp] - ldr r1, =0x0600e000 - ldr r2, =0x05000800 - mov r0, sp - bl CpuSet - movs r0, 0 - bl GetGpuReg - ldr r1, =0x0000bfff - ands r1, r0 - movs r0, 0 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - bl SetBgAttribute - movs r1, 0x9C - lsls r1, 8 - movs r0, 0xA - bl SetGpuReg - movs r1, 0xBC - lsls r1, 7 - movs r0, 0xC - bl SetGpuReg - ldr r1, =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 -_08118F84: - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - b _08118FB2 - .pool -_08118FAC: - adds r0, r4, 0 - bl sub_811828C -_08118FB2: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8118D68 - - thumb_func_start sub_8118FBC -sub_8118FBC: @ 8118FBC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - str r0, [sp] - adds r6, r2, 0 - adds r4, r3, 0 - ldr r0, [sp, 0x24] - ldr r7, [sp, 0x28] - ldr r2, [sp, 0x2C] - mov r9, r2 - ldr r5, [sp, 0x30] - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r6, 24 - lsrs r6, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gMonSpritesGfxPtr - ldr r2, [r1] - lsls r4, 2 - adds r2, 0x4 - adds r2, r4 - ldr r1, =gBattleMonForms - adds r0, r1 - ldrb r1, [r0] - lsls r1, 11 - ldr r0, [r2] - adds r0, r1 - movs r2, 0x80 - lsls r2, 3 - adds r1, r7, 0 - bl CpuSet - ldr r1, [sp] - lsls r0, r1, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 5 - adds r1, r7, 0 - adds r3, r5, 0 - bl LoadBgTiles - adds r0, r6, 0 - adds r0, 0x8 - cmp r6, r0 - bge _08119068 - mov r12, r0 - mov r2, r8 - lsls r7, r2, 1 -_0811903A: - mov r1, r8 - adds r2, r1, 0 - adds r2, 0x8 - adds r4, r6, 0x1 - cmp r1, r2 - bge _08119062 - mov r0, r10 - lsls r3, r0, 12 - lsls r0, r6, 6 - add r0, r9 - adds r6, r7, r0 - subs r1, r2, r1 -_08119052: - adds r0, r5, 0 - orrs r0, r3 - strh r0, [r6] - adds r5, 0x1 - adds r6, 0x2 - subs r1, 0x1 - cmp r1, 0 - bne _08119052 -_08119062: - adds r6, r4, 0 - cmp r6, r12 - blt _0811903A -_08119068: - ldr r1, [sp] - lsls r0, r1, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 4 - mov r1, r9 - movs r3, 0 - bl LoadBgTilemap - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8118FBC - - thumb_func_start sub_8119094 -sub_8119094: @ 8119094 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r4, [sp, 0x24] - ldr r5, [sp, 0x28] - mov r8, r5 - ldr r5, [sp, 0x2C] - ldr r6, [sp, 0x30] - mov r9, r6 - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - lsls r1, 24 - lsls r2, 24 - lsls r3, 24 - lsls r4, 24 - lsrs r4, 24 - mov r10, r4 - mov r7, r8 - lsls r7, 16 - lsrs r6, r7, 16 - lsls r5, 24 - lsrs r5, 24 - mov r0, r9 - lsls r0, 24 - mov r9, r0 - ldr r4, =0x040000d4 - ldr r0, =gMonSpritesGfxPtr - ldr r0, [r0] - lsrs r2, 22 - adds r0, 0x4 - adds r0, r2 - lsrs r3, 13 - ldr r0, [r0] - adds r0, r3 - str r0, [r4] - movs r0, 0xC0 - lsls r0, 19 - adds r6, r0 - str r6, [r4, 0x4] - ldr r0, =0x80000400 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - adds r2, r7, 0 - lsrs r2, 21 - mov r6, r9 - lsrs r6, 15 - subs r4, r2, r6 - lsrs r0, r1, 24 - adds r1, r0, 0 - adds r1, 0x8 - cmp r0, r1 - bge _08119148 - mov r9, r1 - mov r7, r12 - lsls r7, 1 - mov r8, r7 - lsls r5, 11 - str r5, [sp] -_08119110: - mov r2, r12 - adds r3, r2, 0 - adds r3, 0x8 - adds r5, r0, 0x1 - cmp r2, r3 - bge _08119142 - mov r1, r10 - lsls r6, r1, 12 - lsls r0, 6 - movs r7, 0xC0 - lsls r7, 19 - adds r0, r7 - ldr r1, [sp] - adds r0, r1, r0 - mov r7, r8 - adds r1, r7, r0 - subs r2, r3, r2 -_08119132: - adds r0, r4, 0 - orrs r0, r6 - strh r0, [r1] - adds r4, 0x1 - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bne _08119132 -_08119142: - adds r0, r5, 0 - cmp r0, r9 - blt _08119110 -_08119148: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8119094 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/contest_painting.s b/asm/contest_painting.s deleted file mode 100644 index f7c146e3e..000000000 --- a/asm/contest_painting.s +++ /dev/null @@ -1,1197 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_812FDA8 -sub_812FDA8: @ 812FDA8 - push {r4-r7,lr} - ldr r3, =gUnknown_02039F5D - ldr r4, =gUnknown_02039F5C - ldr r1, =gSaveBlock1Ptr - ldr r2, [r1] - subs r0, 0x1 - lsls r1, r0, 5 - adds r2, r1 - ldr r1, =gUnknown_02039F3C - ldr r5, =0x00002e90 - adds r2, r5 - ldm r2!, {r5-r7} - stm r1!, {r5-r7} - ldm r2!, {r5-r7} - stm r1!, {r5-r7} - ldm r2!, {r6,r7} - stm r1!, {r6,r7} - strb r0, [r3] - movs r0, 0 - strb r0, [r4] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_812FDA8 - - thumb_func_start sub_812FDEC -sub_812FDEC: @ 812FDEC - push {lr} - bl sub_812FE58 - pop {r0} - bx r0 - thumb_func_end sub_812FDEC - - thumb_func_start sub_812FDF8 -sub_812FDF8: @ 812FDF8 - push {lr} - bl sub_812FFC8 - bl RunTextPrinters - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_812FDF8 - - thumb_func_start sub_812FE0C -sub_812FE0C: @ 812FE0C - push {r4,r5,lr} - ldr r0, =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 - ldr r4, =gUnknown_030061C4 - ldr r0, [r4] - bl Free - movs r5, 0 - str r5, [r4] - ldr r4, =gUnknown_03006190 - ldr r0, [r4] - bl Free - str r5, [r4] - ldr r0, =gUnknown_030011F7 - ldrb r0, [r0] - bl RemoveWindow - movs r0, 0x1 - bl GetBgTilemapBuffer - bl Free - bl FreeMonSpritesGfx - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_812FE0C - - thumb_func_start sub_812FE58 -sub_812FE58: @ 812FE58 - push {r4-r7,lr} - sub sp, 0x4 - ldr r1, =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r1, r2 - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0x4 - bls _0812FE6E - b _0812FFA0 -_0812FE6E: - lsls r0, 2 - ldr r1, =_0812FE80 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0812FE80: - .4byte _0812FE94 - .4byte _0812FEC8 - .4byte _0812FF14 - .4byte _0812FF2A - .4byte _0812FF54 -_0812FE94: - bl ScanlineEffect_Stop - movs r0, 0 - bl SetVBlankCallback - bl AllocateMonSpritesGfx - ldr r1, =gUnknown_030061C0 - ldr r0, =gUnknown_02039F3C - str r0, [r1] - movs r0, 0x1 - bl sub_8130238 - bl sub_81301EC - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _0812FF3E - .pool -_0812FEC8: - bl ResetPaletteFade - movs r2, 0xC0 - lsls r2, 19 - movs r3, 0xC0 - lsls r3, 9 - movs r5, 0 - ldr r1, =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - ldr r6, =0x85000400 - movs r7, 0x85 - lsls r7, 24 -_0812FEE2: - str r5, [sp] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r4 - subs r3, r4 - cmp r3, r4 - bhi _0812FEE2 - str r5, [sp] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 2 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - bl ResetSpriteData - b _0812FF36 - .pool -_0812FF14: - ldrh r0, [r4, 0x20] - bl SeedRng - bl InitKeys - bl sub_8130098 - movs r0, 0x87 - lsls r0, 3 - adds r1, r4, r0 - b _0812FF3E -_0812FF2A: - ldr r0, =gUnknown_02039F5D - ldrb r0, [r0] - ldr r1, =gUnknown_02039F5C - ldrb r1, [r1] - bl sub_8130884 -_0812FF36: - ldr r1, =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 -_0812FF3E: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0812FFA0 - .pool -_0812FF54: - ldr r0, =gUnknown_02039F5D - ldrb r0, [r0] - ldr r1, =gUnknown_02039F5C - ldrb r1, [r1] - bl sub_813010C - ldr r0, =gUnknown_085B0838 - movs r1, 0 - movs r2, 0x2 - bl LoadPalette - movs r1, 0xA0 - lsls r1, 19 - movs r4, 0 - str r4, [sp] - ldr r0, =0x040000d4 - mov r2, sp - str r2, [r0] - str r1, [r0, 0x4] - ldr r1, =0x85000100 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - movs r0, 0x2 - bl BeginFastPaletteFade - ldr r0, =sub_81302D0 - bl SetVBlankCallback - ldr r0, =gUnknown_030011F0 - strb r4, [r0] - movs r1, 0x9A - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r0, =sub_812FDF8 - bl SetMainCallback2 -_0812FFA0: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_812FE58 - - thumb_func_start sub_812FFC8 -sub_812FFC8: @ 812FFC8 - push {lr} - sub sp, 0x4 - ldr r3, =gUnknown_030011F0 - ldrb r1, [r3] - cmp r1, 0x1 - beq _0813001C - cmp r1, 0x1 - bgt _0812FFE4 - cmp r1, 0 - beq _0812FFEA - b _08130082 - .pool -_0812FFE4: - cmp r1, 0x2 - beq _0813005C - b _08130082 -_0812FFEA: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0812FFFA - movs r0, 0x1 - strb r0, [r3] -_0812FFFA: - ldr r0, =gUnknown_030011F6 - ldrb r0, [r0] - cmp r0, 0 - beq _08130082 - ldr r1, =gUnknown_030011F4 - ldrh r0, [r1] - cmp r0, 0 - beq _08130082 - subs r0, 0x1 - b _08130080 - .pool -_0813001C: - ldr r0, =gMain - ldrh r2, [r0, 0x2E] - ands r1, r2 - cmp r1, 0 - bne _0813002E - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _08130040 -_0813002E: - movs r0, 0x2 - strb r0, [r3] - subs r0, 0x3 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_08130040: - ldr r0, =gUnknown_030011F6 - ldrb r0, [r0] - cmp r0, 0 - beq _08130082 - ldr r1, =gUnknown_030011F4 - movs r0, 0 - b _08130080 - .pool -_0813005C: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0813006E - ldr r0, =sub_812FE0C - bl SetMainCallback2 -_0813006E: - ldr r0, =gUnknown_030011F6 - ldrb r0, [r0] - cmp r0, 0 - beq _08130082 - ldr r1, =gUnknown_030011F4 - ldrh r0, [r1] - cmp r0, 0x1D - bhi _08130082 - adds r0, 0x1 -_08130080: - strh r0, [r1] -_08130082: - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end sub_812FFC8 - - thumb_func_start sub_8130098 -sub_8130098: @ 8130098 - push {r4,lr} - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, =gUnknown_085B07E8 - movs r0, 0 - movs r2, 0x1 - bl InitBgsFromTemplates - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x80 - lsls r0, 4 - bl AllocZeroed - adds r1, r0, 0 - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r4, =gUnknown_030011F7 - ldr r0, =gUnknown_085B07EC - bl AddWindow - strb r0, [r4] - bl DeactivateAllTextPrinters - ldrb r0, [r4] - movs r1, 0 - bl FillWindowPixelBuffer - ldrb r0, [r4] - bl PutWindowTilemap - ldrb r0, [r4] - movs r1, 0x3 - bl CopyWindowToVram - movs r0, 0x1 - bl ShowBg - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8130098 - - thumb_func_start sub_813010C -sub_813010C: @ 813010C - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x1 - beq _081301D4 - ldr r6, =gUnknown_030061C0 - ldr r1, [r6] - ldrb r5, [r1, 0xA] - cmp r0, 0x7 - bhi _08130190 - ldr r4, =gStringVar1 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_818E868 - ldr r1, =gText_Space - adds r0, r4, 0 - bl StringAppend - ldr r1, =gContestRankTextPointers - ldr r0, [r6] - ldrb r0, [r0, 0x1E] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - bl StringAppend - ldr r4, =gStringVar2 - ldr r1, [r6] - adds r1, 0x16 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - bl sub_81DB5AC - ldr r0, =gStringVar3 - ldr r1, [r6] - adds r1, 0xB - bl StringCopy - ldr r0, =gStringVar4 - ldr r1, =gUnknown_0827EA0C - bl StringExpandPlaceholders - b _081301A6 - .pool -_08130190: - ldr r0, =gStringVar1 - adds r1, 0xB - bl StringCopy - ldr r0, =gStringVar4 - ldr r2, =gContestPaintingDescriptionPointers - lsls r1, r5, 2 - adds r1, r2 - ldr r1, [r1] - bl StringExpandPlaceholders -_081301A6: - ldr r4, =gStringVar4 - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0xD0 - bl GetStringCenterAlignXOffset - adds r3, r0, 0 - ldr r0, =gUnknown_030011F7 - ldrb r0, [r0] - lsls r3, 24 - lsrs r3, 24 - movs r1, 0x1 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x1 - adds r2, r4, 0 - bl AddTextPrinterParameterized - movs r0, 0x1 - bl CopyBgTilemapBufferToVram -_081301D4: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813010C - - thumb_func_start sub_81301EC -sub_81301EC: @ 81301EC - push {lr} - movs r0, 0 - movs r1, 0 - bl SetGpuReg - ldr r2, =0x04000200 - ldrh r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r2] - ldr r1, =0x00000c42 - movs r0, 0x8 - bl SetGpuReg - ldr r1, =0x00000a45 - movs r0, 0xA - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - pop {r0} - bx r0 - .pool - thumb_func_end sub_81301EC - - thumb_func_start sub_8130238 -sub_8130238: @ 8130238 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0813025C - ldr r0, =gUnknown_030011F6 - strb r1, [r0] - ldr r0, =gUnknown_030011F2 - strh r1, [r0] - ldr r0, =gUnknown_030011F4 - strh r1, [r0] - b _0813026E - .pool -_0813025C: - ldr r1, =gUnknown_030011F6 - movs r0, 0x1 - strb r0, [r1] - ldr r1, =gUnknown_030011F2 - movs r0, 0xF - strh r0, [r1] - ldr r1, =gUnknown_030011F4 - movs r0, 0x1E - strh r0, [r1] -_0813026E: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8130238 - - thumb_func_start sub_8130280 -sub_8130280: @ 8130280 - push {lr} - ldr r0, =gUnknown_030011F6 - ldrb r0, [r0] - cmp r0, 0 - bne _08130298 - movs r0, 0x4C - movs r1, 0 - bl SetGpuReg - b _081302C0 - .pool -_08130298: - ldr r1, =0x00000a45 - movs r0, 0xA - bl SetGpuReg - ldr r1, =gUnknown_030011F2 - ldr r0, =gUnknown_030011F4 - ldrh r0, [r0] - lsrs r0, 1 - strh r0, [r1] - lsls r1, r0, 12 - lsls r2, r0, 8 - orrs r1, r2 - lsls r2, r0, 4 - orrs r1, r2 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x4C - bl SetGpuReg -_081302C0: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8130280 - - thumb_func_start sub_81302D0 -sub_81302D0: @ 81302D0 - push {lr} - bl sub_8130280 - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_81302D0 - - thumb_func_start sub_81302E8 -sub_81302E8: @ 81302E8 - push {r4-r7,lr} - adds r4, r1, 0 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r4, 24 - lsrs r4, 24 - ldr r6, =gUnknown_030061C0 - ldr r0, [r6] - ldr r1, [r0, 0x4] - ldr r2, [r0] - adds r0, r5, 0 - bl GetFrontSpritePalFromSpeciesAndPersonality - ldr r7, =gUnknown_030061C4 - ldr r1, [r7] - bl LZDecompressVram - cmp r4, 0 - bne _08130348 - lsls r0, r5, 3 - ldr r1, =gMonFrontPicTable - adds r0, r1 - ldr r4, =gMonSpritesGfxPtr - ldr r1, [r4] - ldr r1, [r1, 0x8] - ldr r2, [r6] - ldr r3, [r2] - adds r2, r5, 0 - bl HandleLoadSpecialPokePic_DontHandleDeoxys - ldr r0, [r4] - ldr r0, [r0, 0x8] - ldr r1, [r7] - ldr r2, =gUnknown_03006190 - ldr r2, [r2] - bl sub_8130380 - b _0813036C - .pool -_08130348: - lsls r0, r5, 3 - ldr r1, =gMonBackPicTable - adds r0, r1 - ldr r4, =gMonSpritesGfxPtr - ldr r1, [r4] - ldr r1, [r1, 0x4] - ldr r2, [r6] - ldr r3, [r2] - adds r2, r5, 0 - bl HandleLoadSpecialPokePic_DontHandleDeoxys - ldr r0, [r4] - ldr r0, [r0, 0x4] - ldr r1, [r7] - ldr r2, =gUnknown_03006190 - ldr r2, [r2] - bl sub_8130380 -_0813036C: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81302E8 - - thumb_func_start sub_8130380 -sub_8130380: @ 8130380 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - mov r10, r0 - mov r9, r1 - str r2, [sp] - movs r0, 0 -_08130394: - movs r3, 0 - adds r1, r0, 0x1 - str r1, [sp, 0x4] - lsls r0, 3 - str r0, [sp, 0x8] -_0813039E: - movs r1, 0 - adds r2, r3, 0x1 - mov r8, r2 - ldr r7, [sp, 0x8] - adds r0, r7, r3 - lsls r0, 5 - mov r12, r0 - lsls r4, r3, 3 -_081303AE: - movs r3, 0 - lsls r0, r1, 2 - adds r6, r1, 0x1 - mov r2, r12 - adds r5, r2, r0 - ldr r7, [sp, 0x8] - adds r0, r7, r1 - lsls r0, 7 - ldr r1, [sp] - adds r2, r0, r1 -_081303C2: - lsrs r0, r3, 1 - adds r0, r5, r0 - add r0, r10 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r3 - cmp r0, 0 - beq _081303D6 - lsrs r1, 4 - b _081303DA -_081303D6: - movs r0, 0xF - ands r1, r0 -_081303DA: - cmp r1, 0 - bne _081303EC - adds r0, r4, r3 - lsls r0, 1 - adds r0, r2 - movs r7, 0x80 - lsls r7, 8 - adds r1, r7, 0 - b _081303F8 -_081303EC: - adds r0, r4, r3 - lsls r0, 1 - adds r0, r2 - lsls r1, 1 - add r1, r9 - ldrh r1, [r1] -_081303F8: - strh r1, [r0] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x7 - bls _081303C2 - lsls r0, r6, 16 - lsrs r1, r0, 16 - cmp r1, 0x7 - bls _081303AE - mov r1, r8 - lsls r0, r1, 16 - lsrs r3, r0, 16 - cmp r3, 0x7 - bls _0813039E - ldr r2, [sp, 0x4] - lsls r0, r2, 16 - lsrs r0, 16 - cmp r0, 0x7 - bls _08130394 - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8130380 - - thumb_func_start sub_8130430 -sub_8130430: @ 8130430 - push {r4-r7,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =gUnknown_085A989C - movs r2, 0x80 - lsls r2, 1 - movs r1, 0 - bl LoadPalette - cmp r4, 0x1 - beq _0813044E - b _081305A4 -_0813044E: - ldr r0, =gUnknown_030061C0 - ldr r0, [r0] - ldrb r0, [r0, 0xA] - movs r1, 0x3 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _0813050C - lsls r0, 2 - ldr r1, =_08130478 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_08130478: - .4byte _0813048C - .4byte _081304A4 - .4byte _081304BC - .4byte _081304D4 - .4byte _081304F8 -_0813048C: - ldr r0, =gUnknown_085A9A9C - movs r1, 0xC0 - lsls r1, 19 - bl RLUnCompVram - ldr r0, =gUnknown_085AE974 - b _081304E0 - .pool -_081304A4: - ldr r0, =gUnknown_085AAB20 - movs r1, 0xC0 - lsls r1, 19 - bl RLUnCompVram - ldr r0, =gUnknown_085AEE80 - b _081304E0 - .pool -_081304BC: - ldr r0, =gUnknown_085AB750 - movs r1, 0xC0 - lsls r1, 19 - bl RLUnCompVram - ldr r0, =gUnknown_085AF38C - b _081304E0 - .pool -_081304D4: - ldr r0, =gUnknown_085AC288 - movs r1, 0xC0 - lsls r1, 19 - bl RLUnCompVram - ldr r0, =gUnknown_085AF898 -_081304E0: - ldr r1, =gUnknown_03006190 - ldr r1, [r1] - bl RLUnCompWram - b _0813050C - .pool -_081304F8: - ldr r0, =gUnknown_085AD240 - movs r1, 0xC0 - lsls r1, 19 - bl RLUnCompVram - ldr r0, =gUnknown_085AFDA4 - ldr r1, =gUnknown_03006190 - ldr r1, [r1] - bl RLUnCompWram -_0813050C: - movs r1, 0 - ldr r5, =0x06006000 - ldr r0, =0x00001015 - adds r4, r0, 0 -_08130514: - movs r3, 0 - lsls r2, r1, 5 -_08130518: - adds r0, r2, r3 - lsls r0, 1 - adds r0, r5 - strh r4, [r0] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x1F - bls _08130518 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x13 - bls _08130514 - movs r1, 0 - ldr r0, =0x0600608c - mov r12, r0 - ldr r7, =gUnknown_03006190 -_0813053C: - movs r3, 0 - adds r6, r1, 0x1 - lsls r5, r1, 5 - lsls r4, r1, 6 -_08130544: - adds r2, r5, r3 - lsls r2, 1 - add r2, r12 - ldr r0, [r7] - adds r0, r4, r0 - lsls r1, r3, 1 - adds r0, r1 - adds r0, 0x8C - ldrh r0, [r0] - strh r0, [r2] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x11 - bls _08130544 - lsls r0, r6, 24 - lsrs r1, r0, 24 - cmp r1, 0x9 - bls _0813053C - movs r3, 0 - ldr r4, =0x0600608e - ldr r2, =gUnknown_03006190 -_08130570: - lsls r1, r3, 1 - adds r1, r4 - ldr r0, [r2] - adds r0, 0x8E - ldrh r0, [r0] - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xF - bls _08130570 - b _08130676 - .pool -_081305A4: - cmp r5, 0x7 - bhi _081305C0 - ldr r0, =gUnknown_085AE370 - movs r1, 0xC0 - lsls r1, 19 - bl RLUnCompVram - ldr r0, =gUnknown_085B02B0 - b _08130650 - .pool -_081305C0: - ldr r0, =gUnknown_030061C0 - ldr r0, [r0] - ldrb r0, [r0, 0xA] - movs r1, 0x3 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _08130676 - lsls r0, 2 - ldr r1, =_081305E8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081305E8: - .4byte _081305FC - .4byte _08130614 - .4byte _0813062C - .4byte _08130644 - .4byte _08130664 -_081305FC: - ldr r0, =gUnknown_085A9A9C - movs r1, 0xC0 - lsls r1, 19 - bl RLUnCompVram - ldr r0, =gUnknown_085AE974 - b _08130650 - .pool -_08130614: - ldr r0, =gUnknown_085AAB20 - movs r1, 0xC0 - lsls r1, 19 - bl RLUnCompVram - ldr r0, =gUnknown_085AEE80 - b _08130650 - .pool -_0813062C: - ldr r0, =gUnknown_085AB750 - movs r1, 0xC0 - lsls r1, 19 - bl RLUnCompVram - ldr r0, =gUnknown_085AF38C - b _08130650 - .pool -_08130644: - ldr r0, =gUnknown_085AC288 - movs r1, 0xC0 - lsls r1, 19 - bl RLUnCompVram - ldr r0, =gUnknown_085AF898 -_08130650: - ldr r1, =0x06006000 - bl RLUnCompVram - b _08130676 - .pool -_08130664: - ldr r0, =gUnknown_085AD240 - movs r1, 0xC0 - lsls r1, 19 - bl RLUnCompVram - ldr r0, =gUnknown_085AFDA4 - ldr r1, =0x06006000 - bl RLUnCompVram -_08130676: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8130430 - - thumb_func_start sub_8130688 -sub_8130688: @ 8130688 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, =gMain - ldr r1, =gUnknown_085B0830 - ldr r2, [r1, 0x4] - ldr r1, [r1] - str r1, [r3, 0x38] - str r2, [r3, 0x3C] - ldrh r2, [r3, 0x3C] - ldr r1, =0xfffffc00 - ands r1, r2 - strh r1, [r3, 0x3C] - ldrh r1, [r3, 0x3A] - ldr r0, =0xfffffe00 - ands r0, r1 - movs r1, 0x58 - orrs r0, r1 - strh r0, [r3, 0x3A] - adds r1, r3, 0 - adds r1, 0x38 - movs r0, 0x18 - strb r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end sub_8130688 - - thumb_func_start sub_81306CC -sub_81306CC: @ 81306CC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x7 - bhi _081306E4 - ldr r0, =gUnknown_030061C0 - ldr r0, [r0] - ldrb r0, [r0, 0xA] - b _081306F4 - .pool -_081306E4: - ldr r0, =gUnknown_030061C0 - ldr r0, [r0] - ldrb r0, [r0, 0xA] - movs r1, 0x3 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 -_081306F4: - cmp r0, 0x4 - bhi _08130732 - lsls r0, 2 - ldr r1, =_0813070C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0813070C: - .4byte _08130720 - .4byte _08130724 - .4byte _08130728 - .4byte _0813072C - .4byte _08130730 -_08130720: - movs r0, 0x9 - b _08130732 -_08130724: - movs r0, 0xD - b _08130732 -_08130728: - movs r0, 0x2 - b _08130732 -_0813072C: - movs r0, 0x24 - b _08130732 -_08130730: - movs r0, 0x6 -_08130732: - pop {r1} - bx r1 - thumb_func_end sub_81306CC - - thumb_func_start sub_8130738 -sub_8130738: @ 8130738 - push {r4,lr} - ldr r4, =gUnknown_030061C4 - movs r0, 0x80 - lsls r0, 2 - bl AllocZeroed - str r0, [r4] - ldr r4, =gUnknown_03006190 - movs r0, 0x80 - lsls r0, 6 - bl AllocZeroed - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8130738 - - thumb_func_start sub_8130760 -sub_8130760: @ 8130760 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, =gUnknown_030061A0 - ldr r0, =gUnknown_03006190 - ldr r0, [r0] - str r0, [r1, 0x4] - ldr r0, =gUnknown_030061C4 - ldr r0, [r0] - str r0, [r1, 0x8] - movs r2, 0 - strb r2, [r1, 0x18] - ldr r0, =gUnknown_030061C0 - ldr r0, [r0] - ldrb r0, [r0] - strb r0, [r1, 0x1F] - strb r2, [r1, 0x19] - strb r2, [r1, 0x1A] - movs r0, 0x40 - strb r0, [r1, 0x1B] - strb r0, [r1, 0x1C] - strb r0, [r1, 0x1D] - strb r0, [r1, 0x1E] - subs r0, r3, 0x2 - adds r4, r1, 0 - cmp r0, 0x22 - bhi _08130844 - lsls r0, 2 - ldr r1, =_081307B4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081307B4: - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130840 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130844 - .4byte _08130840 -_08130840: - movs r0, 0x3 - b _08130846 -_08130844: - movs r0, 0x1 -_08130846: - strh r0, [r4, 0x14] - movs r0, 0x2 - strh r0, [r4, 0x16] - strb r3, [r4] - ldr r0, =0x06010000 - str r0, [r4, 0x10] - adds r0, r4, 0 - bl sub_8124F2C - adds r0, r4, 0 - bl sub_81261A4 - adds r0, r4, 0 - bl sub_8126058 - ldr r0, =gUnknown_030061C4 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 1 - movs r2, 0x80 - lsls r2, 2 - bl LoadPalette - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8130760 - - thumb_func_start sub_8130884 -sub_8130884: @ 8130884 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - bl sub_8130738 - ldr r0, =gUnknown_030061C0 - ldr r0, [r0] - ldrh r0, [r0, 0x8] - movs r1, 0 - bl sub_81302E8 - adds r0, r4, 0 - bl sub_81306CC - lsls r0, 24 - lsrs r0, 24 - bl sub_8130760 - adds r0, r4, 0 - bl sub_8130688 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8130430 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8130884 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/cute_sketch.s b/asm/contest_painting_effects.s index 36ef184b9..36ef184b9 100644 --- a/asm/cute_sketch.s +++ b/asm/contest_painting_effects.s diff --git a/asm/dark.s b/asm/dark.s index e4373723d..d3f44db0b 100644 --- a/asm/dark.s +++ b/asm/dark.s @@ -447,7 +447,7 @@ sub_8113A58: @ 8113A58 cmp r0, 0 bne _08113A8A adds r0, r3, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _08113A8A: pop {r0} bx r0 @@ -581,7 +581,7 @@ sub_8113B90: @ 8113B90 cmp r0, 0 beq _08113BA4 adds r0, r4, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _08113BA4: pop {r4} pop {r0} @@ -1684,7 +1684,7 @@ sub_81144BC: @ 81144BC ldrb r1, [r1, 0x4] adds r0, r4, 0 bl StartSpriteAnim - ldr r0, =sub_80A67D8 + ldr r0, =RunStoredCallbackWhenAnimEnds str r0, [r4, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r4, 0 @@ -1895,7 +1895,7 @@ _0811465C: bne _08114708 adds r0, r1, 0 movs r1, 0 - bl sub_80A750C + bl SetGreyscaleOrOriginalPalette b _08114714 .pool _08114708: @@ -1984,7 +1984,7 @@ _08114776: bne _081147B8 adds r0, r1, 0 movs r1, 0x1 - bl sub_80A750C + bl SetGreyscaleOrOriginalPalette _081147B8: movs r0, 0x8 ldrsh r1, [r4, r0] @@ -2159,7 +2159,7 @@ _0811492E: adds r0, 0x10 ldr r1, =gBattleAnimArgs ldrb r1, [r1, 0x2] - bl sub_80A750C + bl SetGreyscaleOrOriginalPalette _0811494A: adds r0, r5, 0 bl DestroyAnimVisualTask diff --git a/asm/electric.s b/asm/electric.s deleted file mode 100644 index b1fa8b9ae..000000000 --- a/asm/electric.s +++ /dev/null @@ -1,2547 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_810A1A8 -sub_810A1A8: @ 810A1A8 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0810A1D0 - ldr r0, =gBattleAnimArgs - ldrh r1, [r4, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r4, 0x20] - b _0810A1DC - .pool -_0810A1D0: - ldr r1, =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - adds r0, r1, 0 -_0810A1DC: - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, =sub_810A1F8 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810A1A8 - - thumb_func_start sub_810A1F8 -sub_810A1F8: @ 810A1F8 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0810A20E - adds r0, r2, 0 - bl DestroyAnimSprite -_0810A20E: - pop {r0} - bx r0 - thumb_func_end sub_810A1F8 - - thumb_func_start sub_810A214 -sub_810A214: @ 810A214 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0810A23C - ldr r0, =gBattleAnimArgs - ldrh r1, [r4, 0x20] - ldrh r0, [r0] - subs r1, r0 - strh r1, [r4, 0x20] - b _0810A246 - .pool -_0810A23C: - ldr r0, =gBattleAnimArgs - ldrh r0, [r0] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] -_0810A246: - ldr r0, =sub_810A258 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810A214 - - thumb_func_start sub_810A258 -sub_810A258: @ 810A258 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0810A26E - adds r0, r2, 0 - bl move_anim_8074EE0 -_0810A26E: - pop {r0} - bx r0 - thumb_func_end sub_810A258 - - thumb_func_start sub_810A274 -sub_810A274: @ 810A274 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0810A2C4 - ldr r2, =gBattleAnimArgs - ldrh r0, [r5, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x22] - ldrh r1, [r2, 0x2] - subs r0, r1 - strh r0, [r5, 0x22] - b _0810A2D8 - .pool -_0810A2C4: - ldr r0, =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r5, 0x20] - adds r1, r2 - strh r1, [r5, 0x20] - ldrh r1, [r0, 0x2] - ldrh r2, [r5, 0x22] - adds r1, r2 - strh r1, [r5, 0x22] - adds r2, r0, 0 -_0810A2D8: - movs r0, 0 - strh r0, [r5, 0x2E] - ldrh r0, [r2, 0x4] - strh r0, [r5, 0x30] - ldrh r0, [r2, 0x6] - strh r0, [r5, 0x32] - ldrh r0, [r2, 0x8] - strh r0, [r5, 0x34] - ldr r1, =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A62EC - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810A274 - - thumb_func_start sub_810A308 -sub_810A308: @ 810A308 - push {r4-r7,lr} - adds r5, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - beq _0810A380 - cmp r0, 0x1 - bgt _0810A324 - cmp r0, 0 - beq _0810A32E - b _0810A380 - .pool -_0810A324: - cmp r0, 0x2 - beq _0810A338 - cmp r0, 0x3 - beq _0810A35C - b _0810A380 -_0810A32E: - ldr r0, =gBattleAnimAttacker - b _0810A382 - .pool -_0810A338: - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r6, 0x2 - eors r0, r6 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - bne _0810A354 - ldrb r4, [r4] - b _0810A384 - .pool -_0810A354: - ldrb r0, [r4] - adds r4, r6, 0 - eors r4, r0 - b _0810A384 -_0810A35C: - ldr r0, =gBattleAnimAttacker - ldrb r0, [r0] - movs r4, 0x2 - eors r0, r4 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _0810A380 - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - eors r4, r0 - b _0810A384 - .pool -_0810A380: - ldr r0, =gBattleAnimTarget -_0810A382: - ldrb r4, [r0] -_0810A384: - ldr r0, =gBattleAnimArgs - movs r2, 0xA - ldrsh r0, [r0, r2] - cmp r0, 0 - bne _0810A3AC - adds r0, r4, 0 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - adds r0, r4, 0 - movs r1, 0x1 - b _0810A3BE - .pool -_0810A3AC: - adds r0, r4, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - adds r0, r4, 0 - movs r1, 0x3 -_0810A3BE: - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r7, =gSineTable - ldr r6, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r6, r1] - lsls r0, 1 - adds r0, r7 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r2, 0x2 - ldrsh r0, [r6, r2] - muls r0, r1 - asrs r0, 8 - strh r0, [r5, 0x24] - movs r1, 0 - ldrsh r0, [r6, r1] - adds r0, 0x40 - lsls r0, 1 - adds r0, r7 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r2, 0x2 - ldrsh r0, [r6, r2] - muls r0, r1 - asrs r0, 8 - strh r0, [r5, 0x26] - ldrh r1, [r6, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0810A422 - adds r0, r4, 0 - bl sub_80A8328 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - lsls r0, 2 - ldrb r2, [r5, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x5] -_0810A422: - ldrb r2, [r5, 0x3] - lsls r2, 26 - lsrs r2, 27 - movs r0, 0x4 - ldrsh r1, [r6, r0] - lsls r0, r1, 1 - adds r0, r7 - ldrh r0, [r0] - ldr r3, =gOamMatrices - lsls r2, 3 - adds r2, r3 - adds r1, 0x40 - lsls r1, 1 - adds r1, r7 - ldrh r1, [r1] - strh r1, [r2, 0x6] - strh r1, [r2] - strh r0, [r2, 0x2] - lsls r0, 16 - asrs r0, 16 - negs r0, r0 - strh r0, [r2, 0x4] - ldrh r0, [r6, 0x6] - strh r0, [r5, 0x2E] - ldr r0, =sub_810E2C8 - str r0, [r5, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810A308 - - thumb_func_start sub_810A46C -sub_810A46C: @ 810A46C - push {r4-r6,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl InitAnimSpritePos - ldr r5, =gBattleAnimArgs - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldr r6, =gBattleAnimTarget - ldrb r0, [r6] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldrb r0, [r6] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl InitAnimLinearTranslation - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x38] - ldrh r0, [r5, 0xA] - strh r0, [r4, 0x3A] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x3C] - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - movs r3, 0xC - ldrsh r0, [r5, r3] - lsls r0, 2 - adds r1, r0 - ldr r3, =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - ldr r1, =sub_810A4F4 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810A46C - - thumb_func_start sub_810A4F4 -sub_810A4F4: @ 810A4F4 - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimLinear - lsls r0, 24 - cmp r0, 0 - bne _0810A55E - movs r1, 0x3C - ldrsh r0, [r4, r1] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - movs r2, 0x3C - ldrsh r0, [r4, r2] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Cos - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - ldrh r2, [r4, 0x3C] - adds r0, r2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x3C] - movs r1, 0x3C - ldrsh r0, [r4, r1] - movs r1, 0x3 - bl __modsi3 - lsls r0, 16 - cmp r0, 0 - bne _0810A564 - 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 _0810A564 -_0810A55E: - adds r0, r4, 0 - bl DestroyAnimSprite -_0810A564: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_810A4F4 - - thumb_func_start sub_810A56C -sub_810A56C: @ 810A56C - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x38] - subs r0, 0x1 - strh r0, [r3, 0x38] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _0810A5A4 - 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, 0x36] - strh r0, [r3, 0x38] -_0810A5A4: - ldrh r0, [r3, 0x34] - subs r1, r0, 0x1 - strh r1, [r3, 0x34] - lsls r0, 16 - cmp r0, 0 - bgt _0810A5B6 - adds r0, r3, 0 - bl DestroyAnimSprite -_0810A5B6: - pop {r0} - bx r0 - thumb_func_end sub_810A56C - - thumb_func_start sub_810A5BC -sub_810A5BC: @ 810A5BC - push {r4-r6,lr} - adds r6, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _0810A5D8 - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0810A5E0 -_0810A5D8: - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] -_0810A5E0: - ldr r5, =gBattleAnimTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r6, 0x22] - ldrh r0, [r4] - strh r0, [r6, 0x34] - ldrh r0, [r4, 0x6] - strh r0, [r6, 0x36] - strh r0, [r6, 0x38] - ldr r0, =sub_810A56C - str r0, [r6, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810A5BC - - thumb_func_start sub_810A628 -sub_810A628: @ 810A628 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x6] - strh r0, [r5, 0x2E] - movs r2, 0xE - ldrsh r0, [r1, r2] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _0810A64C - ldr r0, =gBattleAnimTarget - b _0810A64E - .pool -_0810A64C: - ldr r0, =gBattleAnimAttacker -_0810A64E: - ldrb r6, [r0] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _0810A666 - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0810A66E -_0810A666: - ldr r1, =gBattleAnimArgs - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] -_0810A66E: - adds r0, r6, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, =gBattleAnimArgs - lsrs r0, 24 - ldrh r3, [r4] - adds r0, r3 - strh r0, [r5, 0x20] - adds r0, r6, 0 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r5, 0x22] - ldrh r1, [r4, 0xE] - ldr r0, =0x00007fff - ands r0, r1 - strh r0, [r5, 0x36] - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x38] - ldrh r0, [r4, 0xA] - strh r0, [r5, 0x3A] - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x3C] - ldrh r2, [r5, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 2 - adds r1, r0 - ldr r3, =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - ldr r1, =sub_810A6EC - str r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810A628 - - thumb_func_start sub_810A6EC -sub_810A6EC: @ 810A6EC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x3C - ldrsh r0, [r4, r1] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x3C - ldrsh r0, [r4, r1] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x3C] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x3C] - movs r2, 0x3C - ldrsh r0, [r4, r2] - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __modsi3 - cmp r0, 0 - bne _0810A742 - 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] -_0810A742: - ldrh r0, [r4, 0x2E] - subs r1, r0, 0x1 - strh r1, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bgt _0810A754 - adds r0, r4, 0 - bl DestroyAnimSprite -_0810A754: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_810A6EC - - thumb_func_start sub_810A75C -sub_810A75C: @ 810A75C - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0 - bl sub_80A6980 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - ldr r3, =gBattleAnimArgs - movs r5, 0x6 - ldrsh r0, [r3, r5] - lsls r0, 2 - adds r1, r0 - ldr r5, =0x000003ff - adds r0, r5, 0 - ands r1, r0 - ldr r0, =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - movs r1, 0x6 - ldrsh r0, [r3, r1] - cmp r0, 0x1 - bne _0810A7A4 - ldrb r0, [r4, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x10 - b _0810A7B2 - .pool -_0810A7A4: - cmp r0, 0x2 - bne _0810A7B6 - ldrb r0, [r4, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x20 -_0810A7B2: - orrs r1, r0 - strb r1, [r4, 0x3] -_0810A7B6: - ldr r0, =gBattleAnimArgs - ldrh r0, [r0, 0x4] - strh r0, [r4, 0x2E] - ldr r0, =WaitAnimForDuration - str r0, [r4, 0x1C] - ldr r1, =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810A75C - - thumb_func_start sub_810A7DC -sub_810A7DC: @ 810A7DC - push {r4-r6,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r6, =gBattleAnimTarget - ldrb r0, [r6] - movs r1, 0 - bl GetBattlerSpriteCoord - ldr r1, =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r1 - lsls r0, 24 - ldr r5, =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r5] - adds r0, r1 - strh r0, [r4, 0x8] - ldrb r0, [r6] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r5, 0x2] - adds r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0xC] - ldr r0, =sub_810A834 - str r0, [r4] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810A7DC - - thumb_func_start sub_810A834 -sub_810A834: @ 810A834 - 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 r9, r0 - movs r5, 0 - movs r7, 0 - ldr r1, =gTasks - lsls r0, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - ldrb r2, [r0, 0xC] - str r2, [sp] - ldrh r4, [r0, 0x8] - ldrh r6, [r0, 0xA] - movs r3, 0xC - ldrsh r0, [r0, r3] - mov r10, r1 - cmp r0, 0 - bne _0810A878 - movs r0, 0 - mov r8, r0 - movs r2, 0x1 - movs r1, 0x10 - mov r12, r1 - b _0810A882 - .pool -_0810A878: - movs r2, 0x10 - mov r12, r2 - movs r3, 0x8 - mov r8, r3 - movs r2, 0x4 -_0810A882: - mov r0, r9 - lsls r1, r0, 2 - adds r0, r1, r0 - lsls r0, 3 - add r0, r10 - movs r3, 0x1C - ldrsh r0, [r0, r3] - mov r10, r1 - cmp r0, 0xA - bhi _0810A978 - lsls r0, 2 - ldr r1, =_0810A8A4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0810A8A4: - .4byte _0810A8D0 - .4byte _0810A978 - .4byte _0810A8E4 - .4byte _0810A978 - .4byte _0810A904 - .4byte _0810A978 - .4byte _0810A91A - .4byte _0810A978 - .4byte _0810A93C - .4byte _0810A978 - .4byte _0810A970 -_0810A8D0: - ldr r0, =gUnknown_08595828 - lsls r1, r4, 16 - asrs r1, 16 - lsls r2, r6, 16 - asrs r2, 16 - mov r4, r12 - lsls r3, r4, 16 - b _0810A952 - .pool -_0810A8E4: - mov r0, r12 - lsls r3, r0, 17 - mov r1, r8 - adds r0, r1, r2 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, =gUnknown_08595828 - lsls r1, r4, 16 - asrs r1, 16 - lsls r2, r6, 16 - asrs r2, 16 - b _0810A952 - .pool -_0810A904: - mov r3, r12 - lsls r0, r3, 16 - asrs r0, 16 - lsls r3, r0, 1 - adds r3, r0 - lsls r0, r2, 1 - add r0, r8 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - b _0810A946 -_0810A91A: - mov r0, r12 - lsls r3, r0, 18 - lsls r0, r2, 1 - adds r0, r2 - add r0, r8 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, =gUnknown_08595828 - lsls r1, r4, 16 - asrs r1, 16 - lsls r2, r6, 16 - asrs r2, 16 - b _0810A952 - .pool -_0810A93C: - mov r1, r12 - lsls r0, r1, 16 - asrs r0, 16 - lsls r3, r0, 2 - adds r3, r0 -_0810A946: - ldr r0, =gUnknown_08595828 - lsls r1, r4, 16 - asrs r1, 16 - lsls r2, r6, 16 - asrs r2, 16 - lsls r3, 16 -_0810A952: - asrs r3, 16 - adds r2, r3 - lsls r2, 16 - asrs r2, 16 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - b _0810A978 - .pool -_0810A970: - mov r0, r9 - bl DestroyAnimVisualTask - b _0810A9BC -_0810A978: - cmp r7, 0 - beq _0810A9AC - ldr r4, =gSprites - lsls r3, r5, 4 - adds r3, r5 - lsls r3, 2 - adds r0, r3, r4 - ldrh r5, [r0, 0x4] - lsls r2, r5, 22 - lsrs r2, 22 - add r2, r8 - ldr r6, =0x000003ff - adds r1, r6, 0 - ands r2, r1 - ldr r1, =0xfffffc00 - ands r1, r5 - orrs r1, r2 - strh r1, [r0, 0x4] - mov r1, sp - ldrh r1, [r1] - strh r1, [r0, 0x2E] - adds r4, 0x1C - adds r3, r4 - ldr r1, [r3] - bl _call_via_r1 -_0810A9AC: - ldr r0, =gTasks - mov r1, r10 - add r1, r9 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x1C] - adds r0, 0x1 - strh r0, [r1, 0x1C] -_0810A9BC: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810A834 - - thumb_func_start sub_810A9DC -sub_810A9DC: @ 810A9DC - push {lr} - adds r3, r0, 0 - movs r1, 0x2E - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _0810A9FE - ldrb r1, [r3, 0x1] - movs r2, 0x3F - adds r0, r2, 0 - ands r0, r1 - movs r1, 0x80 - orrs r0, r1 - strb r0, [r3, 0x1] - ldrb r0, [r3, 0x3] - ands r2, r0 - strb r2, [r3, 0x3] - b _0810AA12 -_0810A9FE: - ldrb r2, [r3, 0x1] - movs r1, 0x3F - adds r0, r1, 0 - ands r0, r2 - strb r0, [r3, 0x1] - ldrb r0, [r3, 0x3] - ands r1, r0 - movs r0, 0x40 - orrs r1, r0 - strb r1, [r3, 0x3] -_0810AA12: - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - bne _0810AA26 - adds r0, r3, 0 - bl DestroySprite -_0810AA26: - pop {r0} - bx r0 - thumb_func_end sub_810A9DC - - thumb_func_start sub_810AA2C -sub_810AA2C: @ 810AA2C - push {r4-r7,lr} - adds r4, r0, 0 - ldr r0, =gBattleAnimArgs - ldrh r1, [r0] - ldrh r2, [r4, 0x20] - adds r1, r2 - strh r1, [r4, 0x20] - ldrh r0, [r0, 0x2] - ldrh r3, [r4, 0x22] - adds r0, r3 - strh r0, [r4, 0x22] - ldr r0, =gUnknown_08595840 - adds r1, 0x20 - lsls r1, 16 - asrs r1, 16 - movs r7, 0x22 - ldrsh r2, [r4, r7] - adds r3, r4, 0 - adds r3, 0x43 - ldrb r3, [r3] - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r3, =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r6, r2, r3 - ldrh r5, [r6, 0x4] - lsls r1, r5, 22 - lsrs r1, 22 - adds r1, 0x8 - ldr r7, =0x000003ff - adds r0, r7, 0 - ands r1, r0 - ldr r0, =0xfffffc00 - ands r0, r5 - orrs r0, r1 - strh r0, [r6, 0x4] - ldr r1, =gAnimVisualTaskCount - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - adds r3, 0x1C - adds r2, r3 - ldr r0, =sub_810AAB0 - str r0, [r2] - str r0, [r4, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810AA2C - - thumb_func_start sub_810AAB0 -sub_810AAB0: @ 810AAB0 - 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, 0x3 - bne _0810AAE4 - movs r0, 0 - strh r0, [r3, 0x2E] - 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] -_0810AAE4: - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x33 - bne _0810AAF8 - adds r0, r3, 0 - bl DestroyAnimSprite -_0810AAF8: - pop {r0} - bx r0 - thumb_func_end sub_810AAB0 - - thumb_func_start sub_810AAFC -sub_810AAFC: @ 810AAFC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, =gTasks - adds r5, r1, r0 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0810AB28 - ldr r4, =gBattleAnimAttacker - b _0810AB2A - .pool -_0810AB28: - ldr r4, =gBattleAnimTarget -_0810AB2A: - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x24] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x26] - ldr r2, =gBattleAnimArgs - ldrh r0, [r2, 0x2] - movs r1, 0 - strh r0, [r5, 0x14] - strh r1, [r5, 0x16] - strh r1, [r5, 0x18] - strh r1, [r5, 0x1A] - strh r1, [r5, 0x1C] - ldrh r0, [r2, 0x6] - strh r0, [r5, 0x1E] - strh r1, [r5, 0x20] - ldrh r0, [r2, 0x4] - strh r0, [r5, 0x22] - ldr r0, =sub_810AB78 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810AAFC - - thumb_func_start sub_810AB78 -sub_810AB78: @ 810AB78 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - adds r2, r6, 0 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, =gTasks - adds r5, r0, r1 - movs r1, 0x14 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _0810AC78 - ldrh r0, [r5, 0x20] - adds r0, 0x1 - movs r7, 0 - strh r0, [r5, 0x20] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x22 - ldrsh r1, [r5, r2] - cmp r0, r1 - ble _0810AC86 - strh r7, [r5, 0x20] - ldr r0, =gUnknown_085958A8 - movs r3, 0x24 - ldrsh r1, [r5, r3] - movs r3, 0x26 - ldrsh r2, [r5, r3] - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _0810AC86 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, =gSprites - adds r4, r0 - ldr r1, =gUnknown_08595858 - movs r2, 0x1A - ldrsh r0, [r5, r2] - lsls r0, 1 - adds r0, r1 - movs r3, 0 - ldrsb r3, [r0, r3] - ldrh r0, [r4, 0x20] - adds r3, r0 - strh r3, [r4, 0x20] - movs r2, 0x1A - ldrsh r0, [r5, r2] - lsls r0, 1 - adds r1, 0x1 - adds r0, r1 - movs r2, 0 - ldrsb r2, [r0, r2] - ldrh r0, [r4, 0x22] - adds r2, r0 - strh r2, [r4, 0x22] - movs r1, 0x18 - ldrsh r0, [r5, r1] - lsls r1, r0, 2 - adds r1, r0 - movs r0, 0x28 - subs r0, r1 - strh r0, [r4, 0x2E] - strh r3, [r4, 0x30] - ldrh r0, [r5, 0x24] - strh r0, [r4, 0x32] - strh r2, [r4, 0x34] - ldrh r0, [r5, 0x26] - strh r0, [r4, 0x36] - strh r6, [r4, 0x38] - adds r0, r4, 0 - bl InitAnimLinearTranslation - ldr r1, =sub_810ACC0 - adds r0, r4, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A67D8 - str r0, [r4, 0x1C] - ldrh r0, [r5, 0x1A] - adds r0, 0x1 - strh r0, [r5, 0x1A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - ble _0810AC30 - strh r7, [r5, 0x1A] -_0810AC30: - ldrh r0, [r5, 0x1C] - adds r0, 0x1 - strh r0, [r5, 0x1C] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x1E - ldrsh r1, [r5, r2] - cmp r0, r1 - blt _0810AC52 - strh r7, [r5, 0x1C] - ldrh r1, [r5, 0x18] - movs r3, 0x18 - ldrsh r0, [r5, r3] - cmp r0, 0x5 - bgt _0810AC52 - adds r0, r1, 0x1 - strh r0, [r5, 0x18] -_0810AC52: - ldrh r0, [r5, 0x16] - adds r0, 0x1 - strh r0, [r5, 0x16] - ldrh r0, [r5, 0x14] - subs r0, 0x1 - strh r0, [r5, 0x14] - b _0810AC86 - .pool -_0810AC78: - movs r1, 0x16 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0810AC86 - adds r0, r2, 0 - bl DestroyAnimVisualTask -_0810AC86: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_810AB78 - - thumb_func_start sub_810AC8C -sub_810AC8C: @ 810AC8C - push {r4,lr} - adds r4, r0, 0 - bl TranslateAnimLinear - lsls r0, 24 - cmp r0, 0 - beq _0810ACB4 - ldr r2, =gTasks - movs r0, 0x38 - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0x16] - subs r1, 0x1 - strh r1, [r0, 0x16] - adds r0, r4, 0 - bl DestroySprite -_0810ACB4: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810AC8C - - thumb_func_start sub_810ACC0 -sub_810ACC0: @ 810ACC0 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, =sub_810AC8C - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810ACC0 - - thumb_func_start sub_810ACD8 -sub_810ACD8: @ 810ACD8 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0810ACF4 - ldr r4, =gBattleAnimAttacker - b _0810ACF6 - .pool -_0810ACF4: - ldr r4, =gBattleAnimTarget -_0810ACF6: - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r1, =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A67BC - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810ACD8 - - thumb_func_start sub_810AD30 -sub_810AD30: @ 810AD30 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0810AD4C - ldr r4, =gBattleAnimAttacker - b _0810AD4E - .pool -_0810AD4C: - ldr r4, =gBattleAnimTarget -_0810AD4E: - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r1, =gBattleAnimArgs - ldrh r0, [r1, 0x2] - strh r0, [r5, 0x24] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x26] - ldr r1, =DestroyAnimSprite - adds r0, r5, 0 - bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A67D8 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810AD30 - - thumb_func_start sub_810AD98 -sub_810AD98: @ 810AD98 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x3A] - movs r0, 0x10 - strh r0, [r5, 0x3C] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0810ADE6 - movs r1, 0x3C - ldrsh r0, [r5, r1] - negs r0, r0 - strh r0, [r5, 0x3C] -_0810ADE6: - ldr r0, =sub_810ADF8 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810AD98 - - thumb_func_start sub_810ADF8 -sub_810ADF8: @ 810ADF8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0810AE0A - cmp r0, 0x1 - beq _0810AE20 - b _0810AE50 -_0810AE0A: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x28 - ble _0810AE50 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _0810AE50 -_0810AE20: - ldrh r2, [r4, 0x3C] - ldrh r1, [r4, 0x20] - adds r0, r2, r1 - strh r0, [r4, 0x20] - ldr r3, =gSprites - movs r0, 0x3A - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x24] - adds r2, r1 - strh r2, [r0, 0x24] - ldrh r0, [r4, 0x20] - adds r0, 0x50 - lsls r0, 16 - movs r1, 0xC8 - lsls r1, 17 - cmp r0, r1 - bls _0810AE50 - adds r0, r4, 0 - bl move_anim_8074EE0 -_0810AE50: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810ADF8 - - thumb_func_start sub_810AE5C -sub_810AE5C: @ 810AE5C - push {r4-r6,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - ldr r1, =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _0810AEF0 - cmp r0, 0x1 - bgt _0810AE84 - cmp r0, 0 - beq _0810AE90 - b _0810AFC0 - .pool -_0810AE84: - cmp r0, 0x2 - beq _0810AF4C - cmp r0, 0x3 - bne _0810AE8E - b _0810AFA0 -_0810AE8E: - b _0810AFC0 -_0810AE90: - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - movs r6, 0 - strh r0, [r5, 0x26] - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x24] - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0810AECC - ldr r0, =0x0000ffe0 - strh r0, [r5, 0x24] - movs r0, 0x2 - b _0810AED2 - .pool -_0810AECC: - movs r0, 0x20 - strh r0, [r5, 0x24] - ldr r0, =0x0000fffe -_0810AED2: - strh r0, [r5, 0x22] - ldr r2, =gSprites - movs r0, 0x26 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r5, 0x24] - strh r1, [r0, 0x24] - b _0810AF92 - .pool -_0810AEF0: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _0810AFC0 - movs r0, 0 - strh r0, [r5, 0xA] - ldr r4, =gSprites - movs r1, 0x26 - ldrsh r0, [r5, r1] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r4 - adds r2, 0x3E - ldrb r3, [r2] - lsls r0, r3, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldrh r1, [r5, 0x24] - movs r2, 0x24 - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _0810AF92 - ldrh r2, [r5, 0x22] - adds r2, r1, r2 - strh r2, [r5, 0x24] - movs r0, 0x26 - ldrsh r1, [r5, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r2, [r0, 0x24] - b _0810AFC0 - .pool -_0810AF4C: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _0810AFC0 - movs r0, 0 - strh r0, [r5, 0xA] - ldr r1, =gSprites - movs r2, 0x26 - ldrsh r0, [r5, r2] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - adds r2, 0x3E - ldrb r3, [r2] - lsls r0, r3, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r5, 0xC] - adds r0, 0x1 - strh r0, [r5, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - bne _0810AFC0 -_0810AF92: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _0810AFC0 - .pool -_0810AFA0: - ldr r2, =gSprites - movs r0, 0x26 - ldrsh r1, [r5, 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] - adds r0, r3, 0 - bl DestroyAnimVisualTask -_0810AFC0: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810AE5C - - thumb_func_start sub_810AFCC -sub_810AFCC: @ 810AFCC - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _0810AFE6 - b _0810B10C -_0810AFE6: - cmp r0, 0x1 - bgt _0810AFF4 - cmp r0, 0 - beq _0810AFFC - b _0810B14E - .pool -_0810AFF4: - cmp r0, 0x2 - bne _0810AFFA - b _0810B140 -_0810AFFA: - b _0810B14E -_0810AFFC: - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - movs r2, 0x1 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - bne _0810B012 - movs r1, 0x1 -_0810B012: - movs r6, 0 - strh r1, [r5, 0xA] - ldr r0, =gBattleAnimArgs - movs r1, 0 - ldrsh r2, [r0, r1] - adds r3, r0, 0 - cmp r2, 0 - beq _0810B048 - cmp r2, 0x4 - beq _0810B070 - ldrh r1, [r3] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0810B0A8 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r5, 0xE] - ldr r0, =0x0000fff0 - b _0810B0B0 - .pool -_0810B048: - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0xE] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x12] - movs r2, 0xA - ldrsh r0, [r5, r2] - lsls r0, 7 - adds r0, 0x78 - strh r0, [r5, 0x10] - b _0810B0E6 -_0810B070: - movs r0, 0xA - ldrsh r1, [r5, r0] - lsls r1, 7 - movs r0, 0x78 - subs r0, r1 - strh r0, [r5, 0xE] - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x12] - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - movs r2, 0xA - ldrsh r1, [r5, r2] - lsls r1, 5 - subs r0, r1 - strh r0, [r5, 0x10] - b _0810B0E6 - .pool -_0810B0A8: - ldr r0, =0x0000fff0 - strh r0, [r5, 0xE] - movs r0, 0x80 - lsls r0, 1 -_0810B0B0: - strh r0, [r5, 0x10] - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _0810B0D0 - movs r2, 0 - ldrsh r0, [r3, r2] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 1 - movs r0, 0x50 - subs r0, r1 - strh r0, [r5, 0x12] - b _0810B0E6 - .pool -_0810B0D0: - movs r0, 0 - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - adds r0, 0x28 - strh r0, [r5, 0x12] - ldrh r1, [r5, 0xE] - ldrh r0, [r5, 0x10] - strh r0, [r5, 0xE] - strh r1, [r5, 0x10] -_0810B0E6: - movs r2, 0xE - ldrsh r1, [r5, r2] - movs r2, 0x10 - ldrsh r0, [r5, r2] - cmp r1, r0 - bge _0810B0FC - movs r1, 0 - movs r0, 0x1 - strh r0, [r5, 0xA] - strh r1, [r5, 0x14] - b _0810B138 -_0810B0FC: - ldr r0, =0x0000ffff - strh r0, [r5, 0xA] - movs r0, 0x3 - strh r0, [r5, 0x14] - b _0810B138 - .pool -_0810B10C: - ldrh r0, [r5, 0xC] - adds r0, 0x1 - strh r0, [r5, 0xC] - lsls r0, 16 - cmp r0, 0 - ble _0810B14E - movs r0, 0 - strh r0, [r5, 0xC] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_810B154 - lsls r0, 24 - cmp r0, 0 - bne _0810B138 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_810B154 - lsls r0, 24 - cmp r0, 0 - beq _0810B14E -_0810B138: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _0810B14E -_0810B140: - movs r1, 0x16 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0810B14E - adds r0, r4, 0 - bl DestroyAnimVisualTask -_0810B14E: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_810AFCC - - thumb_func_start sub_810B154 -sub_810B154: @ 810B154 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, =gUnknown_08595A00 - movs r2, 0xE - ldrsh r1, [r4, r2] - movs r3, 0x12 - ldrsh r2, [r4, r3] - movs r3, 0x23 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _0810B18A - ldr r1, =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - strh r5, [r0, 0x3A] - movs r1, 0x7 - strh r1, [r0, 0x3C] - ldrh r0, [r4, 0x16] - adds r0, 0x1 - strh r0, [r4, 0x16] -_0810B18A: - ldrh r1, [r4, 0xA] - ldrh r5, [r4, 0x14] - adds r0, r1, r5 - strh r0, [r4, 0x14] - lsls r0, 16 - cmp r0, 0 - bge _0810B19C - movs r0, 0x3 - strh r0, [r4, 0x14] -_0810B19C: - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0x3 - ble _0810B1A8 - movs r0, 0 - strh r0, [r4, 0x14] -_0810B1A8: - movs r3, 0xA - ldrsh r0, [r4, r3] - lsls r0, 4 - ldrh r5, [r4, 0xE] - adds r2, r0, r5 - strh r2, [r4, 0xE] - lsls r0, r1, 16 - asrs r3, r0, 16 - cmp r3, 0x1 - bne _0810B1C8 - lsls r0, r2, 16 - asrs r0, 16 - movs r5, 0x10 - ldrsh r1, [r4, r5] - cmp r0, r1 - bge _0810B1DC -_0810B1C8: - movs r0, 0x1 - negs r0, r0 - cmp r3, r0 - bne _0810B1E8 - lsls r0, r2, 16 - asrs r0, 16 - movs r2, 0x10 - ldrsh r1, [r4, r2] - cmp r0, r1 - bgt _0810B1E8 -_0810B1DC: - movs r0, 0x1 - b _0810B1EA - .pool -_0810B1E8: - movs r0, 0 -_0810B1EA: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_810B154 - - thumb_func_start sub_810B1F0 -sub_810B1F0: @ 810B1F0 - 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, 0xC - ble _0810B230 - ldr r3, =gTasks - movs r0, 0x3C - ldrsh r1, [r4, r0] - 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] - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - adds r0, r4, 0 - bl DestroySprite -_0810B230: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810B1F0 - - thumb_func_start sub_810B23C -sub_810B23C: @ 810B23C - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _0810B24E - cmp r0, 0x1 - beq _0810B280 - b _0810B294 -_0810B24E: - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - adds r0, r5, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - b _0810B294 - .pool -_0810B280: - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0810B294 - adds r0, r5, 0 - bl move_anim_8074EE0 -_0810B294: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_810B23C - - thumb_func_start sub_810B29C -sub_810B29C: @ 810B29C - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x4 - bls _0810B2B6 - b _0810B428 -_0810B2B6: - lsls r0, 2 - ldr r1, =_0810B2C8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0810B2C8: - .4byte _0810B2DC - .4byte _0810B36C - .4byte _0810B3A8 - .4byte _0810B404 - .4byte _0810B414 -_0810B2DC: - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x14] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x16] - movs r0, 0x4 - strh r0, [r5, 0x18] - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x1C] - movs r2, 0x1C - ldrsh r0, [r5, r2] - movs r2, 0x14 - ldrsh r1, [r5, r2] - subs r0, r1 - movs r1, 0x5 - bl __divsi3 - strh r0, [r5, 0x1A] - movs r0, 0x7 - strh r0, [r5, 0x10] - ldr r0, =0x0000ffff - strh r0, [r5, 0x12] - movs r0, 0xC - strh r0, [r5, 0x1E] - subs r0, 0x4C - bl BattleAnimAdjustPanning - lsls r0, 24 - asrs r0, 24 - strh r0, [r5, 0x20] - movs r0, 0x3F - bl BattleAnimAdjustPanning - lsls r0, 24 - asrs r0, 24 - strh r0, [r5, 0x22] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x24] - movs r1, 0x22 - ldrsh r0, [r5, r1] - movs r2, 0x20 - ldrsh r1, [r5, r2] - subs r0, r1 - movs r1, 0x3 - bl __divsi3 - strh r0, [r5, 0x26] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - b _0810B426 - .pool -_0810B36C: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - cmp r0, 0 - ble _0810B39C - movs r0, 0 - strh r0, [r5, 0xA] - adds r0, r5, 0 - adds r1, r2, 0 - bl sub_810B430 - lsls r0, 24 - cmp r0, 0 - beq _0810B39C - movs r1, 0xC - ldrsh r0, [r5, r1] - cmp r0, 0x5 - bne _0810B396 - movs r0, 0x3 - b _0810B39A -_0810B396: - ldrh r0, [r5, 0x8] - adds r0, 0x1 -_0810B39A: - strh r0, [r5, 0x8] -_0810B39C: - ldrh r1, [r5, 0x1E] - movs r2, 0x1E - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _0810B428 - b _0810B41E -_0810B3A8: - ldrh r1, [r5, 0x1E] - movs r2, 0x1E - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _0810B3B6 - subs r0, r1, 0x1 - strh r0, [r5, 0x1E] -_0810B3B6: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - movs r3, 0 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _0810B428 - strh r3, [r5, 0xA] - ldrh r1, [r5, 0xC] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0810B3E2 - movs r0, 0x4 - strh r0, [r5, 0x16] - movs r0, 0x44 - strh r0, [r5, 0x18] - strh r3, [r5, 0x10] - strh r2, [r5, 0x12] - b _0810B3F2 -_0810B3E2: - movs r0, 0x44 - strh r0, [r5, 0x16] - movs r0, 0x4 - strh r0, [r5, 0x18] - movs r0, 0x7 - strh r0, [r5, 0x10] - ldr r0, =0x0000ffff - strh r0, [r5, 0x12] -_0810B3F2: - movs r1, 0x1E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _0810B424 - movs r0, 0x4 - b _0810B426 - .pool -_0810B404: - movs r1, 0xE - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0810B428 - adds r0, r2, 0 - bl DestroyAnimVisualTask - b _0810B428 -_0810B414: - ldrh r1, [r5, 0x1E] - movs r2, 0x1E - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _0810B424 -_0810B41E: - subs r0, r1, 0x1 - strh r0, [r5, 0x1E] - b _0810B428 -_0810B424: - movs r0, 0x1 -_0810B426: - strh r0, [r5, 0x8] -_0810B428: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_810B29C - - thumb_func_start sub_810B430 -sub_810B430: @ 810B430 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, =gUnknown_08595A30 - movs r2, 0x14 - ldrsh r1, [r4, r2] - movs r3, 0x16 - ldrsh r2, [r4, r3] - movs r3, 0x23 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _0810B49C - ldr r1, =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r1 - ldrh r2, [r3, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - ldrh r6, [r4, 0x10] - adds r1, r6 - ldr r6, =0x000003ff - adds r0, r6, 0 - ands r1, r0 - ldr r0, =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x4] - ldrh r0, [r4, 0x12] - ldrh r1, [r4, 0x10] - adds r0, r1 - strh r0, [r4, 0x10] - lsls r0, 16 - cmp r0, 0 - bge _0810B484 - movs r0, 0x7 - strh r0, [r4, 0x10] -_0810B484: - movs r2, 0x10 - ldrsh r0, [r4, r2] - cmp r0, 0x7 - ble _0810B490 - movs r0, 0 - strh r0, [r4, 0x10] -_0810B490: - strh r5, [r3, 0x3A] - movs r0, 0x3 - strh r0, [r3, 0x3C] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] -_0810B49C: - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r0, 0 - bne _0810B4BE - movs r5, 0x12 - ldrsh r0, [r4, r5] - cmp r0, 0 - ble _0810B4BE - ldrh r1, [r4, 0x26] - ldrh r6, [r4, 0x24] - adds r1, r6 - strh r1, [r4, 0x24] - lsls r1, 24 - asrs r1, 24 - movs r0, 0x76 - bl PlaySE12WithPanning -_0810B4BE: - movs r0, 0x12 - ldrsh r3, [r4, r0] - ldrh r2, [r4, 0x16] - cmp r3, 0 - bge _0810B4D4 - lsls r0, r2, 16 - asrs r0, 16 - movs r5, 0x18 - ldrsh r1, [r4, r5] - cmp r0, r1 - ble _0810B4E4 -_0810B4D4: - cmp r3, 0 - ble _0810B508 - lsls r0, r2, 16 - asrs r0, 16 - movs r6, 0x18 - ldrsh r1, [r4, r6] - cmp r0, r1 - blt _0810B508 -_0810B4E4: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0x1A] - ldrh r1, [r4, 0x14] - adds r0, r1 - strh r0, [r4, 0x14] - movs r0, 0x1 - b _0810B514 - .pool -_0810B508: - movs r3, 0x12 - ldrsh r0, [r4, r3] - lsls r0, 3 - adds r0, r2, r0 - strh r0, [r4, 0x16] - movs r0, 0 -_0810B514: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_810B430 - - thumb_func_start sub_810B51C -sub_810B51C: @ 810B51C - 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, 0xC - ble _0810B552 - ldr r3, =gTasks - movs r0, 0x3C - ldrsh r1, [r4, r0] - 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 DestroySprite -_0810B552: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_810B51C - - thumb_func_start sub_810B55C -sub_810B55C: @ 810B55C - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _0810B5D8 - cmp r0, 0x1 - bgt _0810B584 - cmp r0, 0 - beq _0810B58A - b _0810B60E - .pool -_0810B584: - cmp r0, 0x2 - beq _0810B600 - b _0810B60E -_0810B58A: - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x20 - strh r0, [r5, 0x26] - strh r0, [r5, 0x24] - cmp r0, 0x10 - ble _0810B5B4 - adds r2, r0, 0 -_0810B5A4: - adds r1, r2, 0 - subs r1, 0x20 - adds r2, r1, 0 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x10 - bgt _0810B5A4 - strh r1, [r5, 0x24] -_0810B5B4: - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldrb r0, [r4] - bl sub_80A82E4 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x2 - strh r0, [r5, 0x20] - b _0810B5F8 - .pool -_0810B5D8: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _0810B60E - movs r0, 0 - strh r0, [r5, 0xA] - adds r0, r5, 0 - adds r1, r2, 0 - bl sub_810B614 - lsls r0, 24 - cmp r0, 0 - beq _0810B60E -_0810B5F8: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _0810B60E -_0810B600: - movs r1, 0x1C - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0810B60E - adds r0, r2, 0 - bl DestroyAnimVisualTask -_0810B60E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_810B55C - - .align 2, 0 diff --git a/asm/flying.s b/asm/flying.s index b981b4306..dd6ca32ae 100644 --- a/asm/flying.s +++ b/asm/flying.s @@ -201,7 +201,7 @@ _0810DFC8: strh r0, [r6, 0x36] adds r0, r6, 0 bl InitAnimLinearTranslation - ldr r0, =sub_80A67BC + ldr r0, =RunStoredCallbackWhenAffineAnimEnds str r0, [r6, 0x1C] ldr r1, =sub_810E028 adds r0, r6, 0 @@ -2056,7 +2056,7 @@ _0810EE42: str r0, [sp] adds r0, r5, 0 movs r1, 0 - bl sub_80A73E0 + bl TrySetSpriteRotScale ldrh r0, [r5, 0x2E] adds r0, 0x1 strh r0, [r5, 0x2E] @@ -2085,7 +2085,7 @@ _0810EE92: ldrsh r3, [r5, r0] str r1, [sp] adds r0, r5, 0 - bl sub_80A73E0 + bl TrySetSpriteRotScale ldrb r1, [r5, 0x3] lsls r1, 26 lsrs r1, 27 @@ -2409,7 +2409,7 @@ sub_810F084: @ 810F084 mov r0, r8 movs r1, 0x1 adds r2, r3, 0 - bl sub_80A73E0 + bl TrySetSpriteRotScale ldr r0, =sub_810F140 mov r2, r8 str r0, [r2, 0x1C] @@ -2456,7 +2456,7 @@ sub_810F140: @ 810F140 bge _0810F180 _0810F17A: adds r0, r2, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _0810F180: pop {r0} bx r0 @@ -355,7 +355,7 @@ sub_810B8AC: @ 810B8AC ldr r1, =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r1, =sub_80A634C + ldr r1, =TranslateSpriteInGrowingCircleOverDuration str r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 @@ -466,7 +466,7 @@ _0810B9C6: ldr r1, =sub_810B9E8 adds r0, r4, 0 bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A67BC + ldr r0, =RunStoredCallbackWhenAffineAnimEnds str r0, [r4, 0x1C] pop {r4,r5} pop {r0} @@ -501,7 +501,7 @@ sub_810B9E8: @ 810B9E8 cmp r0, 0x14 bne _0810BA1E adds r0, r3, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _0810BA1E: pop {r0} bx r0 @@ -2816,7 +2816,7 @@ sub_810CD1C: @ 810CD1C adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAnim - ldr r0, =sub_80A67D8 + ldr r0, =RunStoredCallbackWhenAnimEnds str r0, [r4, 0x1C] ldr r1, =DestroyAnimSprite adds r0, r4, 0 diff --git a/asm/psychic.s b/asm/psychic.s index ef1915241..0a39ea856 100644 --- a/asm/psychic.s +++ b/asm/psychic.s @@ -535,7 +535,7 @@ _0810F618: cmp r0, 0 beq _0810F62C adds r0, r4, 0 - bl move_anim_8074EE0 + bl DestroySpriteAndMatrix _0810F62C: pop {r4-r6} pop {r0} @@ -589,7 +589,7 @@ _0810F692: ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A67D8 + ldr r0, =RunStoredCallbackWhenAnimEnds str r0, [r5, 0x1C] pop {r4,r5} pop {r0} @@ -656,7 +656,7 @@ _0810F722: ldr r1, =sub_810F740 adds r0, r5, 0 bl StoreSpriteCallbackInData6 - ldr r0, =sub_80A67D8 + ldr r0, =RunStoredCallbackWhenAnimEnds str r0, [r5, 0x1C] pop {r4-r7} pop {r0} @@ -760,7 +760,7 @@ sub_810F7D4: @ 810F7D4 strh r1, [r4, 0x8] ldr r2, =gUnknown_0859675C adds r0, r4, 0 - bl sub_80A7CFC + bl PrepareAffineAnimInTaskData ldr r0, =sub_810F810 str r0, [r4] pop {r4} @@ -779,7 +779,7 @@ sub_810F810: @ 810F810 lsls r0, 3 ldr r1, =gTasks adds r0, r1 - bl sub_80A7D34 + bl RunAffineAnimFromTaskData lsls r0, 24 cmp r0, 0 bne _0810F830 @@ -823,7 +823,7 @@ _0810F870: ldrb r1, [r4, 0x8] ldr r2, =gUnknown_0859677C adds r0, r4, 0 - bl sub_80A7CFC + bl PrepareAffineAnimInTaskData ldr r0, =sub_810F898 str r0, [r4] pop {r4} @@ -852,7 +852,7 @@ sub_810F898: @ 810F898 .pool _0810F8BC: adds r0, r4, 0 - bl sub_80A7D34 + bl RunAffineAnimFromTaskData ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] @@ -907,7 +907,7 @@ _0810F900: lsls r1, 1 strh r1, [r0, 0x20] ldrb r0, [r4, 0x8] - bl sub_80A7344 + bl ResetSpriteRotScale adds r0, r5, 0 bl DestroyAnimVisualTask _0810F936: @@ -1805,7 +1805,7 @@ sub_8110034: @ 8110034 _0811006C: ldr r1, =gBattleAnimArgs ldrb r0, [r1] - bl duplicate_obj_of_side_rel2move_in_transparent_mode + bl CloneBattlerSpriteWithBlend lsls r0, 16 lsrs r1, r0, 16 mov r9, r1 @@ -1860,7 +1860,7 @@ _08110094: lsls r2, 1 adds r1, r2, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrb r3, [r4, 0x1] lsrs r1, r3, 6 ldrb r2, [r4, 0x3] @@ -1942,14 +1942,14 @@ _08110166: ldrsh r2, [r4, r1] adds r1, r2, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x22] lsls r1, 24 lsrs r1, 24 - bl sub_80A7EC0 + bl SetBattlerSpriteYOffsetFromOtherYScale movs r2, 0xA ldrsh r0, [r4, r2] cmp r0, 0x30 @@ -1980,14 +1980,14 @@ _081101B8: ldrsh r2, [r4, r1] adds r1, r2, 0 movs r3, 0 - bl obj_id_set_rotscale + bl SetSpriteRotScale ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x22] lsls r1, 24 lsrs r1, 24 - bl sub_80A7EC0 + bl SetBattlerSpriteYOffsetFromOtherYScale movs r2, 0xA ldrsh r0, [r4, r2] cmp r0, 0 diff --git a/asm/water.s b/asm/water.s index 6965d6371..693aceddd 100644 --- a/asm/water.s +++ b/asm/water.s @@ -315,7 +315,7 @@ sub_8107408: @ 8107408 negs r1, r1 ands r1, r2 strb r1, [r3] - ldr r1, =sub_80A67D8 + ldr r1, =RunStoredCallbackWhenAnimEnds str r1, [r0, 0x1C] ldr r1, =sub_8107430 bl StoreSpriteCallbackInData6 @@ -331,7 +331,7 @@ sub_8107430: @ 8107430 strh r1, [r0, 0x2E] ldr r1, =WaitAnimForDuration str r1, [r0, 0x1C] - ldr r1, =move_anim_8074EE0 + ldr r1, =DestroySpriteAndMatrix bl StoreSpriteCallbackInData6 pop {r0} bx r0 @@ -711,7 +711,7 @@ sub_8107730: @ 8107730 ldr r6, =0x0000fff6 strh r6, [r4, 0x26] ldrb r0, [r7] - bl sub_80A82E4 + bl GetBattlerSpriteSubpriority lsls r0, 24 lsrs r5, r0, 24 bl IsContest @@ -1906,7 +1906,7 @@ sub_81080E4: @ 81080E4 lsls r0, 24 lsrs r0, 24 movs r1, 0 - bl sub_80A7270 + bl PrepareBattlerSpriteForRotScale ldr r0, =sub_8108140 str r0, [r4] pop {r4} @@ -2026,7 +2026,7 @@ _08108222: ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_80A7E6C + bl SetBattlerSpriteYOffsetFromYScale ldr r2, =gSprites movs r0, 0x26 ldrsh r1, [r4, r0] @@ -2166,7 +2166,7 @@ _08108320: ldrh r0, [r4, 0x26] lsls r0, 24 lsrs r0, 24 - bl sub_80A7344 + bl ResetSpriteRotScale movs r0, 0x26 ldrsh r1, [r4, r0] lsls r0, r1, 4 @@ -2286,7 +2286,7 @@ sub_8108408: @ 8108408 lsrs r6, r0, 24 movs r5, 0xAC ldrb r0, [r4] - bl sub_80A82E4 + bl GetBattlerSpriteSubpriority subs r0, 0x1 lsls r0, 24 lsrs r0, 24 @@ -3517,7 +3517,7 @@ _08108DE2: strh r0, [r4, 0x30] ldr r0, =gBattleAnimAttacker ldrb r0, [r0] - bl sub_80A82E4 + bl GetBattlerSpriteSubpriority subs r0, 0x1 adds r1, r4, 0 adds r1, 0x43 @@ -3572,7 +3572,7 @@ _08108E58: strh r0, [r4, 0x30] ldr r0, =gBattleAnimAttacker ldrb r0, [r0] - bl sub_80A82E4 + bl GetBattlerSpriteSubpriority subs r0, 0x1 adds r1, r4, 0 adds r1, 0x43 diff --git a/common_syms/battle_anim_8170478.txt b/common_syms/battle_anim_8170478.txt new file mode 100755 index 000000000..2fc194df7 --- /dev/null +++ b/common_syms/battle_anim_8170478.txt @@ -0,0 +1,3 @@ +gUnknown_030062DC +gUnknown_030062E0 +gUnknown_030062E4 diff --git a/data/battle_anim_8170478.s b/data/battle_anim_8170478.s deleted file mode 100644 index 74bdce846..000000000 --- a/data/battle_anim_8170478.s +++ /dev/null @@ -1,157 +0,0 @@ -#include "constants/battle_anim.h" - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_085E5088:: @ 85E5088 - .byte 0x0a, 0x02, 0xfd, 0x00, 0x0f, 0x00, 0xfc, 0x00 - .byte 0xf6, 0x02, 0xfc, 0x00 - - .align 2 -gUnknown_085E5094:: @ 85E5094 - obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6ec - obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6ed - obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6ee - obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6ef - obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f0 - obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f1 - obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f2 - obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f3 - obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f4 - obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f5 - obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f6 - obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f7 - - .align 2 -gUnknown_085E50F4:: @ 85E50F4 - obj_pal gBattleAnimSpritePalette_136, 0xd6ec - obj_pal gBattleAnimSpritePalette_136, 0xd6ed - obj_pal gBattleAnimSpritePalette_136, 0xd6ee - obj_pal gBattleAnimSpritePalette_136, 0xd6ef - obj_pal gBattleAnimSpritePalette_136, 0xd6f0 - obj_pal gBattleAnimSpritePalette_136, 0xd6f1 - obj_pal gBattleAnimSpritePalette_136, 0xd6f2 - obj_pal gBattleAnimSpritePalette_136, 0xd6f3 - obj_pal gBattleAnimSpritePalette_136, 0xd6f4 - obj_pal gBattleAnimSpritePalette_136, 0xd6f5 - obj_pal gBattleAnimSpritePalette_136, 0xd6f6 - obj_pal gBattleAnimSpritePalette_136, 0xd6f7 - - .align 2 -gUnknown_085E5154:: @ 85E5154 - .2byte 0x0000, 0x0001, 0x0001, 0x0001 - .2byte 0x0002, 0x0001, 0x0000, 0x0041 - .2byte 0x0002, 0x0001, 0x0001, 0x0001 - .2byte 0xfffe, 0x0000 - - .align 2 -gUnknown_085E5170:: @ 85E5170 - .2byte 0x0003, 0x0001, 0xffff, 0x0000 - - .align 2 -gUnknown_085E5178:: @ 85E5178 - .2byte 0x0004, 0x0001, 0xffff, 0x0000 - - .align 2 -gUnknown_085E5180:: @ 85E5180 - .2byte 0x0005, 0x0001, 0xffff, 0x0000 - - .align 2 -gUnknown_085E5188:: @ 85E5188 - .2byte 0x0006, 0x0004, 0x0007, 0x0004 - .2byte 0xfffe, 0x0000 - - .align 2 -gUnknown_085E5194:: @ 85E5194 - .2byte 0x0007, 0x0004, 0xffff, 0x0000 - - .align 2 -gUnknown_085E519C:: @ 85E519C - .4byte gUnknown_085E5154 - .4byte gUnknown_085E5170 - .4byte gUnknown_085E5178 - .4byte gUnknown_085E5180 - .4byte gUnknown_085E5188 - .4byte gUnknown_085E5194 - - .align 2 -gUnknown_085E51B4:: @ 85E51B4 - .byte 0x00, 0x00, 0x00, 0x05, 0x01, 0x02, 0x02, 0x03 - .byte 0x05, 0x05, 0x04, 0x04 - - .align 2 -gUnknown_085E51C0:: @ 85E51C0 - .4byte sub_8171E50 - .4byte sub_81723D4 - .4byte sub_81721CC - .4byte sub_81722CC - .4byte sub_81726BC - .4byte sub_81721CC - .4byte sub_81720C8 - .4byte sub_81722CC - .4byte sub_8172560 - .4byte sub_8171FC4 - .4byte sub_81723D4 - .4byte sub_81727E8 - - .align 2 -gUnknown_085E51F0:: @ 85E51F0 - spr_template 0xd6ec, 0xd6ec, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 - spr_template 0xd6ed, 0xd6ed, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 - spr_template 0xd6ee, 0xd6ee, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 - spr_template 0xd6ef, 0xd6ef, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gUnknown_085E5250:: @ 85E5250 - spr_template 0xd6f0, 0xd6f0, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 - spr_template 0xd6f1, 0xd6f1, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 - spr_template 0xd6f2, 0xd6f2, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 - spr_template 0xd6f3, 0xd6f3, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 - spr_template 0xd6f4, 0xd6f4, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 - spr_template 0xd6f5, 0xd6f5, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 - spr_template 0xd6f6, 0xd6f6, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 - spr_template 0xd6f7, 0xd6f7, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gUnknown_085E5310:: @ 85E5310 - .2byte 0x7adf, 0x7af0, 0x53d7, 0x3fff, 0x7297, 0x67f5, 0x7b2c, 0x2b7e - .2byte 0x431f, 0x7bdd, 0x2a3f, 0x293f, 0x0000, 0x0201, 0x0403, 0x0101 - .2byte 0x0100, 0x0503, 0x0506, 0x0004 - - .align 2 -gBattleAnimSpriteTemplate_85E5338:: @ 85E5338 - spr_template ANIM_TAG_UNUSED_RED_BRICK, ANIM_TAG_UNUSED_RED_BRICK, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_817330C - - .align 2 -gUnknown_085E5350:: @ 8535350 - .2byte 0x0040, 0x0001, 0xffff, 0x0000 - - .align 2 -gUnknown_085E5358:: @ 8535358 - .4byte gUnknown_085E5350 - - .align 2 - spr_template ANIM_TAG_ROCKS, ANIM_TAG_ROCKS, gUnknown_08524914, gUnknown_085E5358, NULL, gDummySpriteAffineAnimTable, sub_817330C - diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index ca338ac9b..014aa2048 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1326,7 +1326,7 @@ Move_SWORDS_DANCE: setalpha 12, 8 playsewithpan SE_W014, SOUND_PAN_ATTACKER createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 16, 6, 1, 4 - createsprite gBattleAnimSpriteTemplate_8593380, ANIM_ATTACKER, 2, 0, 0 + createsprite gSwordsDanceBladeSpriteTemplate, ANIM_ATTACKER, 2, 0, 0 delay 22 createvisualtask sub_8115D94, 2, ANIM_TAG_SWORD, 2, 2, RGB(18, 31, 31), 16, 0, 0 waitforvisualfinish @@ -1712,10 +1712,10 @@ Frustration_Strongest: waitforvisualfinish delay 20 playsewithpan SE_W207B, SOUND_PAN_ATTACKER - createsprite gUnknown_0859368C, ANIM_ATTACKER, 2, 0, 20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 waitforvisualfinish playsewithpan SE_W207B, SOUND_PAN_ATTACKER - createsprite gUnknown_0859368C, ANIM_ATTACKER, 2, 0, 20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 waitforvisualfinish delay 10 createvisualtask AnimTask_SwayMon, 5, 0, 16, 6144, 8, ANIM_ATTACKER @@ -1748,7 +1748,7 @@ Frustration_Strong: waitforvisualfinish delay 20 playsewithpan SE_W207B, SOUND_PAN_ATTACKER - createsprite gUnknown_0859368C, ANIM_ATTACKER, 2, 0, 20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 waitforvisualfinish delay 5 createvisualtask sub_815C3A8, 5 @@ -1769,7 +1769,7 @@ Frustration_Strong: goto Frustration_Continue Frustration_Medium: playsewithpan SE_W207B, SOUND_PAN_ATTACKER - createsprite gUnknown_0859368C, ANIM_ATTACKER, 2, 0, 20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 waitforvisualfinish delay 5 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 @@ -1843,8 +1843,8 @@ Move_VICE_GRIP: monbg ANIM_DEF_PARTNER setalpha 12, 8 playsewithpan SE_W011, SOUND_PAN_TARGET - createsprite gUnknown_08593590, ANIM_ATTACKER, 2, 0 - createsprite gUnknown_08593590, ANIM_ATTACKER, 2, 1 + createsprite gViceGripSpriteTemplate, ANIM_ATTACKER, 2, 0 + createsprite gViceGripSpriteTemplate, ANIM_ATTACKER, 2, 1 delay 9 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 1, 2 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 5, 1 @@ -1861,8 +1861,8 @@ Move_GUILLOTINE: fadetobgfromset BG_GUILLOTINE_OPPONENT, BG_GUILLOTINE_PLAYER, BG_GUILLOTINE_CONTESTS waitbgfadein playsewithpan SE_W011, SOUND_PAN_TARGET - createsprite gUnknown_085935D0, ANIM_ATTACKER, 2, 0 - createsprite gUnknown_085935D0, ANIM_ATTACKER, 2, 1 + createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 0 + createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 1 createvisualtask sub_8116620, 10, 4, 2, 0, 16, RGB_BLACK delay 9 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 23, 1 @@ -2750,10 +2750,10 @@ Move_RAGE: monbg ANIM_TARGET setalpha 12, 8 createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_ATTACKER, RGB_RED, 10, 0, 2 - createsprite gUnknown_0859368C, ANIM_ATTACKER, 2, 0, -20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, -20, -28 playsewithpan SE_W207B, SOUND_PAN_ATTACKER delay 20 - createsprite gUnknown_0859368C, ANIM_ATTACKER, 2, 0, 20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 playsewithpan SE_W207B, SOUND_PAN_ATTACKER waitforvisualfinish createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 @@ -2803,7 +2803,7 @@ Move_DOUBLE_TEAM: Move_MINIMIZE: setalpha 10, 8 - createvisualtask sub_8104674, 2 + createvisualtask AnimTask_Minimize, 2 loopsewithpan SE_W107, SOUND_PAN_ATTACKER, 34, 3 waitforvisualfinish blendoff @@ -2872,8 +2872,8 @@ Move_KINESIS: playsewithpan SE_W060, SOUND_PAN_ATTACKER call SetPsychicBackground createsprite gUnknown_085966DC, ANIM_ATTACKER, 20 - createsprite gUnknown_08593344, ANIM_ATTACKER, 19, 32, -8, 0 - createsprite gUnknown_08593344, ANIM_ATTACKER, 19, 32, 16, 1 + createsprite gKinesisZapEnergySpriteTemplate, ANIM_ATTACKER, 19, 32, -8, 0 + createsprite gKinesisZapEnergySpriteTemplate, ANIM_ATTACKER, 19, 32, 16, 1 loopsewithpan SE_W109, SOUND_PAN_ATTACKER, 21, 2 delay 60 playsewithpan SE_W146, SOUND_PAN_ATTACKER @@ -2987,7 +2987,7 @@ Move_FLASH: end Move_SPLASH: - createvisualtask sub_8104938, 2, 0, 3 + createvisualtask AnimTask_Splash, 2, 0, 3 delay 8 loopsewithpan SE_W039, SOUND_PAN_ATTACKER, 38, 3 waitforvisualfinish @@ -3066,7 +3066,7 @@ Move_SKETCH: createsprite gUnknown_085936D4, ANIM_TARGET, 2 waitforvisualfinish clearmonbg ANIM_TARGET - createvisualtask sub_8104938, 2, 0, 2 + createvisualtask AnimTask_Splash, 2, 0, 2 loopsewithpan SE_W039, SOUND_PAN_ATTACKER, 38, 2 end @@ -3278,17 +3278,17 @@ Move_FALSE_SWIPE: Move_SWAGGER: loadspritegfx ANIM_TAG_BREATH loadspritegfx ANIM_TAG_ANGER - createvisualtask sub_8104AB4, 2 + createvisualtask AnimTask_GrowAndShrink, 2 playsewithpan SE_W207, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gUnknown_08593658, ANIM_ATTACKER, 2 + createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2 loopsewithpan SE_W207, SOUND_PAN_ATTACKER, 4, 2 waitforvisualfinish delay 24 - createsprite gUnknown_0859368C, ANIM_TARGET, 2, 1, -20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -28 playsewithpan SE_W207B, SOUND_PAN_TARGET delay 12 - createsprite gUnknown_0859368C, ANIM_TARGET, 2, 1, 20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -28 playsewithpan SE_W207B, SOUND_PAN_TARGET waitforvisualfinish end @@ -3496,10 +3496,10 @@ Move_TORMENT: createvisualtask sub_815AFF0, 2 waitforvisualfinish createvisualtask AnimTask_BlendMonInAndOut, 2, ANIM_TARGET, RGB_RED, 10, 1, 1 - createsprite gUnknown_0859368C, ANIM_TARGET, 2, 1, -20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -28 playsewithpan SE_W207B, SOUND_PAN_TARGET delay 20 - createsprite gUnknown_0859368C, ANIM_TARGET, 2, 1, 20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -28 playsewithpan SE_W207B, SOUND_PAN_TARGET end @@ -3606,11 +3606,11 @@ Move_TAUNT: loopsewithpan SE_W039, SOUND_PAN_ATTACKER, 16, 2 waitforvisualfinish delay 8 - createsprite gUnknown_0859368C, ANIM_TARGET, 2, 1, -20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -28 playsewithpan SE_W207B, SOUND_PAN_TARGET waitforvisualfinish delay 12 - createsprite gUnknown_0859368C, ANIM_TARGET, 2, 1, 20, -28 + createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -28 playsewithpan SE_W207B, SOUND_PAN_TARGET end @@ -4008,7 +4008,7 @@ Move_TEETER_DANCE: Move_MUD_SPORT: loadspritegfx ANIM_TAG_MUD_SAND - createvisualtask sub_8104938, 2, 0, 6 + createvisualtask AnimTask_Splash, 2, 0, 6 delay 24 createsprite gUnknown_085971E4, ANIM_TARGET, 2, 0, -4, -16 createsprite gUnknown_085971E4, ANIM_TARGET, 2, 0, 4, -12 @@ -4381,10 +4381,10 @@ Move_HOWL: Move_BULK_UP: loadspritegfx ANIM_TAG_BREATH - createvisualtask sub_8104AB4, 2 + createvisualtask AnimTask_GrowAndShrink, 2 playsewithpan SE_W207, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gUnknown_08593658, ANIM_ATTACKER, 2 + createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2 loopsewithpan SE_W207, SOUND_PAN_ATTACKER, 4, 2 waitforvisualfinish end @@ -5386,7 +5386,7 @@ IceBeam1: Move_WITHDRAW: playsewithpan SE_W029, SOUND_PAN_ATTACKER - createvisualtask sub_81036A0, 5 + createvisualtask AnimTask_Withdraw, 5 waitforvisualfinish end @@ -7509,9 +7509,9 @@ RazorWindContinue: RazorWindSetUp: loadspritegfx ANIM_TAG_GUST playsewithpan SE_W016, SOUND_PAN_ATTACKER - createsprite gUnknown_08593550, ANIM_ATTACKER, 2, 32, 0, 16, 16, 0, 7, 40 - createsprite gUnknown_08593550, ANIM_ATTACKER, 2, 32, 0, 16, 16, 85, 7, 40 - createsprite gUnknown_08593550, ANIM_ATTACKER, 2, 32, 0, 16, 16, 170, 7, 40 + createsprite gRazorWindTornadoSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 16, 16, 0, 7, 40 + createsprite gRazorWindTornadoSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 16, 16, 85, 7, 40 + createsprite gRazorWindTornadoSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 16, 16, 170, 7, 40 waitforvisualfinish playsewithpan SE_W016B, SOUND_PAN_ATTACKER goto RazorWindContinue @@ -7546,7 +7546,7 @@ Move_DISABLE: playsewithpan SE_W197, SOUND_PAN_ATTACKER createsprite gUnknown_0853EE84, ANIM_ATTACKER, 13, 24, -16 waitforvisualfinish - createvisualtask sub_81045B0, 5 + createvisualtask AnimTask_GrowAndGreyscale, 5 loopsewithpan SE_W020, SOUND_PAN_TARGET, 15, 4 waitforvisualfinish delay 1 diff --git a/data/contest_painting.s b/data/contest_painting.s deleted file mode 100644 index 42d76f9bc..000000000 --- a/data/contest_painting.s +++ /dev/null @@ -1,106 +0,0 @@ -@ the third big chunk of data - - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_085A989C:: @ 85A989C - .incbin "graphics/picture_frame/bg.gbapal" - - .align 2 -gUnknown_085A9A9C:: @ 85A9A9C - .incbin "graphics/picture_frame/frame0.4bpp.rl" - - .align 2 -gUnknown_085AAB20:: @ 85AAB20 - .incbin "graphics/picture_frame/frame1.4bpp.rl" - - .align 2 -gUnknown_085AB750:: @ 85AB750 - .incbin "graphics/picture_frame/frame2.4bpp.rl" - - .align 2 -gUnknown_085AC288:: @ 85AC288 - .incbin "graphics/picture_frame/frame3.4bpp.rl" - - .align 2 -gUnknown_085AD240:: @ 85AD240 - .incbin "graphics/picture_frame/frame4.4bpp.rl" - - .align 2 -gUnknown_085AE370:: @ 85AE370 - .incbin "graphics/picture_frame/frame5.4bpp.rl" - - .align 2 -gUnknown_085AE974:: @ 85AE974 - .incbin "graphics/picture_frame/frame0_map.bin.rl" - - .align 2 -gUnknown_085AEE80:: @ 85AEE80 - .incbin "graphics/picture_frame/frame1_map.bin.rl" - - .align 2 -gUnknown_085AF38C:: @ 85AF38C - .incbin "graphics/picture_frame/frame2_map.bin.rl" - - .align 2 -gUnknown_085AF898:: @ 85AF898 - .incbin "graphics/picture_frame/frame3_map.bin.rl" - - .align 2 -gUnknown_085AFDA4:: @ 85AFDA4 - .incbin "graphics/picture_frame/frame4_map.bin.rl" - - .align 2 -gUnknown_085B02B0:: @ 85B02B0 - .incbin "graphics/picture_frame/frame5_map.bin.rl" - - .align 2 -gUnknown_085B07C0:: @ 85B07C0 - .4byte gContestCoolness - .4byte gContestBeauty - .4byte gContestCuteness - .4byte gContestSmartness - .4byte gContestToughness - - .align 2 -gContestRankTextPointers:: @ 85B07D4 - .4byte gContestRankNormal - .4byte gContestRankSuper - .4byte gContestRankHyper - .4byte gContestRankMaster - .4byte gContestLink - - .align 2 -gUnknown_085B07E8:: @ 85B07E8 - .4byte 0x000010a5 - - .align 2 -gUnknown_085B07EC:: @ 85B07EC - window_template 0x01, 0x02, 0x0e, 0x1a, 0x04, 0x0f, 0x0001 - - .align 2 -gContestPaintingDescriptionPointers:: @ 85B07F4 - .4byte gContestPaintingCool1 - .4byte gContestPaintingCool2 - .4byte gContestPaintingCool3 - .4byte gContestPaintingBeauty1 - .4byte gContestPaintingBeauty2 - .4byte gContestPaintingBeauty3 - .4byte gContestPaintingCute1 - .4byte gContestPaintingCute2 - .4byte gContestPaintingCute3 - .4byte gContestPaintingSmart1 - .4byte gContestPaintingSmart2 - .4byte gContestPaintingSmart3 - .4byte gContestPaintingTough1 - .4byte gContestPaintingTough2 - .4byte gContestPaintingTough3 - -gUnknown_085B0830:: @ 85B0830 - .4byte 0xc0003000, 0x00000000 - -gUnknown_085B0838:: @ 85B0838 - .2byte 0x0000, 0x0000 diff --git a/data/cute_sketch.s b/data/contest_painting_effects.s index d14b51a51..d14b51a51 100644 --- a/data/cute_sketch.s +++ b/data/contest_painting_effects.s diff --git a/data/data2c.s b/data/data2c.s index 1946f5bdb..5bfea56ae 100644 --- a/data/data2c.s +++ b/data/data2c.s @@ -9,10 +9,13 @@ .section .rodata .align 2 -gUnknown_0831AC70:: @ 831AC70 +gBattleIntroSlideScanlineEffectParams:: @ 831AC70 .4byte REG_BG3HOFS .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1 .4byte 1 + + .align 2 +gUnknown_0831AC7C:: @ 831AC7C .4byte REG_BG3HOFS .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_32BIT | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1 .4byte 1 diff --git a/data/event_scripts.s b/data/event_scripts.s index d90dbf584..5bd8825ad 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -4651,35 +4651,35 @@ gOtherText_DontYouAgree:: @ 8294301 .string "\n" .string "Don't you agree?$" -gUnknown_08294313:: @ 8294313 +gMauvilleManText_ISoWantToGoOnAVacation:: @ 8294313 .string "I so want to go on a vacation.\n" .string "Would you happen to know a nice place?$" -gUnknown_08294359:: @ 8294359 +gMauvilleManText_IBoughtCrayonsWith120Colors:: @ 8294359 .string "I bought crayons with 120 colors!\n" .string "Don't you think that's nice?$" -gUnknown_08294398:: @ 8294398 +gMauvilleManText_WouldntItBeNiceIfWeCouldFloat:: @ 8294398 .string "Wouldn't it be nice if we could float\n" .string "away on a cloud of bubbles?$" -gUnknown_082943DA:: @ 82943DA +gMauvilleManText_WhenYouWriteOnASandyBeach:: @ 82943DA .string "When you write on a sandy beach,\n" .string "they wash away. It makes me sad.$" -gUnknown_0829441C:: @ 829441C +gMauvilleManText_WhatsTheBottomOfTheSeaLike:: @ 829441C .string "What's the bottom of the sea like?\n" .string "Just once I would so love to go!$" -gUnknown_08294460:: @ 8294460 +gMauvilleManText_WhenYouSeeTheSettingSunDoesIt:: @ 8294460 .string "When you see the setting sun, does it\n" .string "make you want to go home?$" -gUnknown_082944A0:: @ 82944A0 +gMauvilleManText_LyingBackInTheGreenGrass:: @ 82944A0 .string "Lying back in the green grass…\n" .string "Oh, it's so, so nice!$" -gUnknown_082944D5:: @ 82944D5 +gMauvilleManText_SecretBasesAreSoWonderful:: @ 82944D5 .string "SECRET BASES are so wonderful!\n" .string "Can't you feel the excitement?$" diff --git a/include/battle.h b/include/battle.h index 9e67e8ec5..52c4ee8ae 100644 --- a/include/battle.h +++ b/include/battle.h @@ -599,8 +599,7 @@ struct BattleAnimationInfo u8 field_9_x80:1; u8 field_A; u8 field_B; - u8 field_C; - u8 field_D; + s16 field_C; u8 field_E; u8 field_F; }; @@ -624,7 +623,7 @@ struct BattleHealthboxInfo u8 battlerBounceSpriteId; u8 animationState; u8 field_5; - u8 field_6; + u8 matrixNum; u8 shadowSpriteId; u8 field_8; u8 field_9; diff --git a/include/battle_anim.h b/include/battle_anim.h index fa4058c1b..cdeb60e69 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -9,11 +9,11 @@ enum { BG_ANIM_SCREEN_SIZE, BG_ANIM_AREA_OVERFLOW_MODE, - BG_ANIM2, + BG_ANIM_MOSAIC, BG_ANIM_CHAR_BASE_BLOCK, BG_ANIM_PRIORITY, - BG_ANIM_5, - BG_ANIM_6 + BG_ANIM_PALETTES_MODE, + BG_ANIM_SCREEN_BASE_BLOCK, }; struct UnknownAnimStruct2 @@ -67,17 +67,17 @@ s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan); void sub_80A4720(u16 a, u16 *b, u32 c, u8 d); void sub_80A477C(bool8); -// battle_anim_80FE840.s +// battle_intro.s void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); -void sub_8118FBC(u8 arg0, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, void *arg5, u16 *arg6, u16 arg7); +void sub_8118FBC(int bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 arg7); void HandleIntroSlide(u8 terrainId); -u32 GetAnimBgAttribute(u8 bgId, u8 attributeId); +int GetAnimBgAttribute(u8 bgId, u8 attributeId); // battle_anim_80A5C6C.s void sub_80A6450(struct Sprite *sprite); void SetAverageBattlerPositions(u8 battlerId, bool8 a2, s16 *x, s16 *y); -void move_anim_8074EE0(struct Sprite *sprite); -void sub_80A656C(struct Sprite *sprite); +void DestroySpriteAndMatrix(struct Sprite *sprite); +void TranslateAnimLinearSimple(struct Sprite *sprite); void InitAnimSpritePos(struct Sprite *sprite, u8 a2); void sub_80A6980(struct Sprite *sprite, bool8 a2); void StartAnimLinearTranslation(struct Sprite *sprite); @@ -88,11 +88,11 @@ void sub_80A8EE4(struct Sprite *sprite); u8 GetBattlerSpriteCoord2(u8 battlerId, u8 attributeId); void sub_80A6FD4(struct Sprite *sprite); u16 ArcTan2Neg(s16 a, s16 b); -void sub_80A73E0(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation); -void sub_80A67BC(struct Sprite *sprite); +void TrySetSpriteRotScale(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation); +void RunStoredCallbackWhenAffineAnimEnds(struct Sprite *sprite); void sub_80A66DC(struct Sprite *sprite); -void sub_80A6838(struct Sprite *sprite); -void sub_80A67D8(struct Sprite *sprite); +void SetSpriteCoordsToAnimAttackerCoords(struct Sprite *sprite); +void RunStoredCallbackWhenAnimEnds(struct Sprite *sprite); void sub_80A6864(struct Sprite *sprite, s16 a2); s16 sub_80A861C(u8 battlerId, u8 a2); u8 GetBattlerYCoordWithElevation(u8 battlerId); @@ -101,44 +101,57 @@ void sub_80A7938(struct Sprite *sprite); void InitAnimLinearTranslation(struct Sprite *sprite); void sub_80A6F98(struct Sprite *sprite); u8 sub_80A8328(u8 battlerId); -void *sub_80A8050(s16 bottom, s16 top); -void sub_80A8048(s16 *bottom, s16 *top, const void *ptr); +void *LoadPointerFromVars(s16 bottom, s16 top); +void StorePointerInVars(s16 *bottom, s16 *top, const void *ptr); void sub_80A8278(void); void sub_80A6B30(struct UnknownAnimStruct2*); void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1); -u8 sub_80A82E4(u8 battlerId); +u8 GetBattlerSpriteSubpriority(u8 battlerId); bool8 TranslateAnimArc(struct Sprite *sprite); void sub_80A6630(struct Sprite *sprite); void sub_80A6680(struct Sprite *sprite); -void sub_80A7344(u8 spriteId); -void obj_id_set_rotscale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); +void ResetSpriteRotScale(u8 spriteId); +void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); void InitSpriteDataForLinearTranslation(struct Sprite *sprite); -void sub_80A7270(u8 spriteId, u8 objMode); -void sub_80A73A0(u8 spriteId); +void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode); +void SetBattlerSpriteYOffsetFromRotation(u8 spriteId); u32 sub_80A75AC(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7); u32 sub_80A76C4(u8 a1, u8 a2, u8 a3, u8 a4); u8 sub_80A77AC(u8 a1); -s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8); +s16 CloneBattlerSpriteWithBlend(u8); void obj_delete_but_dont_free_vram(struct Sprite*); u8 sub_80A89C8(int, u8, int); void sub_80A6D60(struct UnknownAnimStruct2*, const void*, u32); void sub_80A6CC0(u32, const void*, u32); void sub_80A6DAC(bool8); -void sub_80A634C(struct Sprite *); +void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *); void sub_80A653C(struct Sprite *); -void sub_80A7E6C(u8 spriteId); +void SetBattlerSpriteYOffsetFromYScale(u8 spriteId); void sub_80A805C(struct Task *task, u8 a2, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7); u8 sub_80A80C8(struct Task *task); void sub_80A8EE4(struct Sprite *); void sub_80A67F4(struct Sprite *); +void sub_80A6D48(u32 bgId, const void *src); +void sub_80A7160(struct Sprite *sprite); +bool8 sub_80A70E8(struct Sprite *sprite); +void sub_80A70C0(struct Sprite *sprite); +void TranslateMonBGUntil(struct Sprite *sprite); +void TranslateSpriteOverDuration(struct Sprite *sprite); +void sub_80A77C8(struct Sprite *sprite); +void sub_80A7000(struct Sprite *sprite); +void TranslateSpriteInCircleOverDuration(struct Sprite *sprite); +void SetGreyscaleOrOriginalPalette(u16 a1, bool8 a2); +void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds); +bool8 RunAffineAnimFromTaskData(struct Task *task); +void sub_80A78AC(struct Sprite *sprite); enum { BATTLER_COORD_X, BATTLER_COORD_Y, BATTLER_COORD_X_2, - BATTLER_COORD_3, - BATTLER_COORD_4, + BATTLER_COORD_Y_PIC_OFFSET, + BATTLER_COORD_Y_PIC_OFFSET_DEFAULT, }; u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId); @@ -152,7 +165,6 @@ u8 sub_80A8364(u8 battlerId); void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*)); void oamt_add_pos2_onto_pos1(struct Sprite *sprite); u8 GetBattlerSpriteDefault_Y(u8 battlerId); -u8 sub_80A82E4(u8 battlerId); u8 GetSubstituteSpriteDefault_Y(u8 battlerId); // battle_anim_80A9C70.s @@ -168,8 +180,8 @@ void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId); // battle_anim_8170478.s u8 ItemIdToBallId(u16 itemId); -u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId); -u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId); +u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId); +u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 selectedPalettes, u8 ballId); // battle_anim_utility_funcs.s void sub_8116EB4(u8); @@ -223,4 +235,7 @@ extern const struct OamData gUnknown_0852493C; extern const struct OamData gUnknown_08524A5C; extern const struct OamData gUnknown_08524A74; +extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; +extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; + #endif // GUARD_BATTLE_ANIM_H diff --git a/include/battle_interface.h b/include/battle_interface.h index 66a7f9828..3145939d0 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -1,6 +1,8 @@ #ifndef GUARD_BATTLE_INTERFACE_H #define GUARD_BATTLE_INTERFACE_H +#include "battle_controllers.h" + enum { HP_CURRENT, diff --git a/include/battle_tower.h b/include/battle_tower.h index e361b9742..bd8e80fc1 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -9,7 +9,7 @@ struct RSBattleTowerRecord /*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1]; /*0x0C*/ u8 trainerId[4]; /*0x10*/ u16 greeting[6]; - /*0x1C*/ struct UnknownPokemonStruct party[3]; + /*0x1C*/ struct BattleTowerPokemon party[3]; /*0xA0*/ u32 checksum; }; diff --git a/include/contest.h b/include/contest.h index 8790d7371..6ce563b46 100644 --- a/include/contest.h +++ b/include/contest.h @@ -231,6 +231,7 @@ extern u8 gContestPlayerMonIndex; extern s16 gUnknown_02039F08[4]; extern s16 gContestMonConditions[4]; extern u8 gIsLinkContest; +extern struct ContestWinner gUnknown_02039F3C; struct Shared18000 { @@ -415,7 +416,6 @@ extern struct ContestResources *gContestResources; #define eContestAI (gContestResources->field_C) #define shared19328 (*gContestResources->field_10) #define shared19338 (*gContestResources->field_14) -#define shared19348 (*gContestResources->field_18) #define shared15800 (gHeap + 0x18000) #define shared18000 (*(struct Shared18000 *)(gHeap + 0x1a000)) diff --git a/include/contest_painting.h b/include/contest_painting.h index 67a845d62..c633c50cc 100644 --- a/include/contest_painting.h +++ b/include/contest_painting.h @@ -1,7 +1,16 @@ #ifndef GUARD_CONTESTPAINTING_H #define GUARD_CONTESTPAINTING_H -void sub_812FDA8(u32); -void sub_812FDEC(void); +enum +{ + CONTESTRESULT_COOL = 9, + CONTESTRESULT_BEAUTY = 13, + CONTESTRESULT_CUTE = 2, + CONTESTRESULT_SMART = 36, + CONTESTRESULT_TOUGH = 6, +}; + +void sub_812FDA8(int); +void CB2_ContestPainting(void); #endif diff --git a/include/contest_painting_effects.h b/include/contest_painting_effects.h new file mode 100755 index 000000000..3b6964666 --- /dev/null +++ b/include/contest_painting_effects.h @@ -0,0 +1,28 @@ +#ifndef GUARD_CONTEST_PAINTING_EFFECTS_H +#define GUARD_CONTEST_PAINTING_EFFECTS_H + +struct Unk030061A0 +{ + u8 var_0; + u8 pad1[3]; + u16 (*var_4)[][32]; + u16 *var_8; + u8 pad0C[4]; + u32 var_10; + u16 var_14; + u16 var_16; + u8 var_18; + u8 var_19; + u8 var_1A; + u8 var_1B; + u8 var_1C; + u8 var_1D; + u8 var_1E; + u8 var_1F; +}; + +void sub_8124F2C(struct Unk030061A0 *); +void sub_81261A4(struct Unk030061A0 *); +void sub_8126058(struct Unk030061A0 *); + +#endif diff --git a/include/event_scripts.h b/include/event_scripts.h index 7f69ef3ae..2661494d3 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -405,14 +405,14 @@ extern const u8 gText_SoDesirable[]; extern const u8 gText_SoExciting[]; extern const u8 gText_SoAmusing[]; extern const u8 gText_SoMagical[]; -extern const u8 gUnknown_08294313[]; -extern const u8 gUnknown_08294359[]; -extern const u8 gUnknown_08294398[]; -extern const u8 gUnknown_082943DA[]; -extern const u8 gUnknown_0829441C[]; -extern const u8 gUnknown_08294460[]; -extern const u8 gUnknown_082944A0[]; -extern const u8 gUnknown_082944D5[]; +extern const u8 gMauvilleManText_ISoWantToGoOnAVacation[]; +extern const u8 gMauvilleManText_IBoughtCrayonsWith120Colors[]; +extern const u8 gMauvilleManText_WouldntItBeNiceIfWeCouldFloat[]; +extern const u8 gMauvilleManText_WhenYouWriteOnASandyBeach[]; +extern const u8 gMauvilleManText_WhatsTheBottomOfTheSeaLike[]; +extern const u8 gMauvilleManText_WhenYouSeeTheSettingSunDoesIt[]; +extern const u8 gMauvilleManText_LyingBackInTheGreenGrass[]; +extern const u8 gMauvilleManText_SecretBasesAreSoWonderful[]; extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E930[]; diff --git a/include/gba/types.h b/include/gba/types.h index a7dbf3e03..fff48d437 100644 --- a/include/gba/types.h +++ b/include/gba/types.h @@ -32,7 +32,9 @@ struct BgCnt { u16 priority:2; u16 charBaseBlock:2; - u16 dummy:4; + u16 dummy:2; + u16 mosaic:1; + u16 palettes:1; u16 screenBaseBlock:5; u16 areaOverflowMode:1; u16 screenSize:2; diff --git a/include/global.h b/include/global.h index 8395d5943..e3792ac56 100644 --- a/include/global.h +++ b/include/global.h @@ -61,6 +61,12 @@ #define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) >= (b) ? (a) : (b)) +// Extracts the upper 16 bits of a 32-bit number +#define HIHALF(n) (((n) & 0xFFFF0000) >> 16) + +// Extracts the lower 16 bits of a 32-bit number +#define LOHALF(n) ((n) & 0xFFFF) + // There are many quirks in the source code which have overarching behavioral differences from // a number of other files. For example, diploma.c seems to declare rodata before each use while // other files declare out of order and must be at the beginning. There are also a number of @@ -301,7 +307,7 @@ struct Apprentice u32 checksum; }; -struct UnknownPokemonStruct +struct BattleTowerPokemon { u16 species; u16 heldItem; @@ -338,7 +344,7 @@ struct EmeraldBattleTowerRecord /*0x10*/ u16 greeting[6]; /*0x1C*/ u16 speechWon[6]; /*0x28*/ u16 speechLost[6]; - /*0x34*/ struct UnknownPokemonStruct party[4]; + /*0x34*/ struct BattleTowerPokemon party[4]; /*0xE4*/ u8 language; /*0xE8*/ u32 checksum; }; @@ -353,7 +359,7 @@ struct BattleTowerEReaderTrainer /*0x10*/ u16 greeting[6]; /*0x1C*/ u16 farewellPlayerLost[6]; /*0x28*/ u16 farewellPlayerWon[6]; - /*0x34*/ struct UnknownPokemonStruct party[3]; + /*0x34*/ struct BattleTowerPokemon party[3]; /*0xB8*/ u32 checksum; }; diff --git a/include/graphics.h b/include/graphics.h index e2889ed86..a7ee286b8 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4233,6 +4233,7 @@ extern const u32 gBattleAnimSpriteSheet_132[]; extern const u32 gBattleAnimSpriteSheet_133[]; extern const u32 gBattleAnimSpriteSheet_134[]; extern const u32 gBattleAnimSpriteSheet_135[]; +extern const u32 gBattleAnimSpriteSheet_Particles[]; extern const u32 gBattleAnimSpriteSheet_136[]; extern const u32 gBattleAnimSpriteSheet_137[]; extern const u32 gBattleAnimSpriteSheet_138[]; @@ -4371,6 +4372,9 @@ extern const u32 gBattleAnimSpriteSheet_280[]; extern const u32 gBattleAnimSpriteSheet_281[]; extern const u32 gBattleAnimSpriteSheet_282[]; extern const u32 gBattleAnimSpriteSheet_283[]; +extern const u32 gBattleAnimBackgroundTilemap_ScaryFacePlayer[]; +extern const u32 gBattleAnimBackgroundTilemap_ScaryFaceOpponent[]; +extern const u32 gBattleAnimBackgroundTilemap_ScaryFaceContest[]; extern const u32 gBattleAnimSpriteSheet_284[]; extern const u32 gBattleAnimSpriteSheet_285[]; @@ -4583,10 +4587,15 @@ extern const u32 gBattleAnimSpritePalette_209[]; extern const u32 gBattleAnimSpritePalette_210[]; extern const u32 gBattleAnimSpritePalette_211[]; extern const u32 gBattleAnimSpritePalette_215[]; +extern const u32 gUnknown_08C249D0[]; +extern const u32 gUnknown_08C249F8[]; extern const u32 gBattleAnimSpritePalette_216[]; extern const u32 gBattleAnimSpritePalette_217[]; extern const u32 gBattleAnimSpritePalette_218[]; extern const u32 gBattleAnimSpritePalette_219[]; +extern const u32 gUnknown_08C232E0; +extern const u32 gUnknown_08C23D50; +extern const u32 gUnknown_08C23D78; extern const u32 gBattleAnimSpritePalette_220[]; extern const u32 gBattleAnimSpritePalette_221[]; extern const u32 gBattleAnimSpritePalette_222[]; @@ -4748,4 +4757,9 @@ extern const u32 gCableCarDoor_Gfx[]; extern const u32 gCableCarCord_Gfx[]; extern const u16 gCableCar_Pal[]; +// Battle Anim +extern const u32 gUnknown_08C2DDA4[]; +extern const u32 gUnknown_08C2EA50[]; +extern const u32 gUnknown_08C2EA9C[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/item_menu.h b/include/item_menu.h index 4631382cb..ce439e282 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -32,10 +32,10 @@ extern struct BagStruct gUnknown_0203CE58; struct UnkBagStruct { - void (*unk0)(void); - u8 unk4[0x800]; - u8 unk804[12]; - u8 unk810[7]; + void (*mainCallback2)(void); + u8 tilemapBuffer[0x800]; + u8 spriteId[12]; + u8 windowPointers[7]; u8 unk817; u8 unk818; u8 unk819; @@ -43,7 +43,7 @@ struct UnkBagStruct u8 unk81B:4; u8 unk81B_1:2; u8 unk81B_3:1; - u8 unk81B_2:1; + u8 hideCloseBagText:1; u8 filler3[2]; u8 unk81E; u8 unk81F; @@ -52,11 +52,11 @@ struct UnkBagStruct u8 unk825; u8 filler[2]; u8 unk828; - u8 unk829[POCKETS_COUNT]; - u8 unk82E[6]; + u8 numItemStacks[POCKETS_COUNT]; + u8 numShownItems[6]; s16 unk834; u8 filler4[0xE]; - u8 unk844[32][32]; + u8 pocketNameBuffer[32][32]; u8 filler2[4]; }; @@ -71,9 +71,10 @@ void sub_81AAC14(void); void sub_81AAC50(void); void sub_81AAC70(void); void sub_81AAC28(void); +void SetInitialScrollAndCursorPositions(u8 pocketId); void bag_menu_mail_related(void); void CB2_BagMenuFromStartMenu(void); -u8 sub_81ABB2C(u8 pocketId); +u8 GetItemListPosition(u8 pocketId); bool8 UseRegisteredKeyItemOnField(void); void CB2_GoToSellMenu(void); diff --git a/include/math_util.h b/include/math_util.h new file mode 100755 index 000000000..6b0d42460 --- /dev/null +++ b/include/math_util.h @@ -0,0 +1,14 @@ +#ifndef GUARD_MATH_UTIL_H +#define GUARD_MATH_UTIL_H + +s16 sub_8151534(s16 x, s16 y); +s16 sub_8151550(u8 s, s16 x, s16 y); +s32 sub_8151574(s32 x, s32 y); +s16 sub_81515B0(s16 x, s16 y); +s16 sub_81515D4(u8 s, s16 x, s16 y); +s32 sub_81515FC(s32 x, s32 y); +s16 sub_8151624(s16 y); +s16 sub_815163C(u8 s, s16 y); +s32 sub_815165C(s32 y); + +#endif // GUARD_MATH_UTIL_H diff --git a/include/pokemon.h b/include/pokemon.h index 9b8f1d03f..94dae089f 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -460,11 +460,11 @@ void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level); void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality); void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u32 otId); void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread); -void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src); -void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lvl50); +void sub_806819C(struct Pokemon *mon, struct BattleTowerPokemon *src); +void sub_8068338(struct Pokemon *mon, struct BattleTowerPokemon *src, bool8 lvl50); void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 monId); void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId); -void sub_80686FC(struct Pokemon *mon, struct UnknownPokemonStruct *dest); +void sub_80686FC(struct Pokemon *mon, struct BattleTowerPokemon *dest); void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId); bool8 sub_80688F8(u8 caseId, u8 battlerId); void SetDeoxysStats(void); diff --git a/include/strings.h b/include/strings.h index f0df4bdec..c780a80b4 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1226,6 +1226,7 @@ extern const u8 gText_SpaceAndSpace[]; extern const u8 gText_CommaSpace[]; extern const u8 gText_NewLine[]; extern const u8 gText_ScrollTextUp[]; +extern const u8 gText_Space[]; extern const u8 gText_Space2[]; extern const u8 gText_Are[]; extern const u8 gText_Are2[]; diff --git a/ld_script.txt b/ld_script.txt index 0dbff7996..4fcd17bce 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -157,11 +157,11 @@ SECTIONS { src/safari_zone.o(.text); asm/contest_link_80FC4F4.o(.text); src/item_use.o(.text); - asm/battle_anim_effects_1.o(.text); - asm/battle_anim_effects_2.o(.text); + src/battle_anim_effects_1.o(.text); + src/battle_anim_effects_2.o(.text); asm/water.o(.text); src/fire.o(.text); - asm/electric.o(.text); + src/electric.o(.text); asm/ice.o(.text); src/fight.o(.text); src/poison.o(.text); @@ -175,7 +175,7 @@ SECTIONS { src/ground.o(.text); src/normal.o(.text); src/battle_anim_utility_funcs.o(.text); - asm/battle_intro.o(.text); + src/battle_intro.o(.text); src/bike.o(.text); src/easy_chat.o(.text); asm/easy_chat.o(.text); @@ -186,11 +186,10 @@ SECTIONS { src/dewford_trend.o(.text); src/heal_location.o(.text); src/region_map.o(.text); - asm/cute_sketch.o(.text); + asm/contest_painting_effects.o(.text); src/decoration.o(.text); src/slot_machine.o(.text); src/contest_painting.o(.text); - asm/contest_painting.o(.text); src/battle_ai_script_commands.o(.text); src/trader.o(.text); src/starter_choose.o(.text); @@ -238,7 +237,7 @@ SECTIONS { src/intro.o(.text); src/reset_save_heap.o(.text); src/field_region_map.o(.text); - asm/battle_anim_8170478.o(.text); + src/battle_anim_8170478.o(.text); src/hall_of_fame.o(.text); src/credits.o(.text); src/lottery_corner.o(.text); @@ -484,8 +483,8 @@ SECTIONS { src/field_special_scene.o(.rodata); src/rotating_gate.o(.rodata); src/item_use.o(.rodata); - src/effects_1.o(.rodata); - src/effects_2.o(.rodata); + src/battle_anim_effects_1.o(.rodata); + src/battle_anim_effects_2.o(.rodata); src/water.o(.rodata); src/fire.o(.rodata); src/electric.o(.rodata); @@ -511,11 +510,11 @@ SECTIONS { src/menu_helpers.o(.rodata); src/heal_location.o(.rodata); src/region_map.o(.rodata); - data/cute_sketch.o(.rodata); + data/contest_painting_effects.o(.rodata); src/decoration.o(.rodata); src/slot_machine.o(.rodata); data/slot_machine.o(.rodata); - data/contest_painting.o(.rodata); + src/contest_painting.o(.rodata); src/battle_ai_script_commands.o(.rodata); src/trader.o(.rodata); src/starter_choose.o(.rodata); @@ -549,7 +548,7 @@ SECTIONS { src/player_pc.o(.rodata); src/intro.o(.rodata); src/field_region_map.o(.rodata); - data/battle_anim_8170478.o(.rodata); + src/battle_anim_8170478.o(.rodata); src/hall_of_fame.o(.rodata); src/credits.o(.rodata); src/lottery_corner.o(.rodata); diff --git a/src/battle_anim.c b/src/battle_anim.c index 95c6f7b3c..88c548208 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -26,8 +26,6 @@ extern struct MusicPlayerInfo gMPlayInfo_SE2; extern const u16 gMovesWithQuietBGM[]; extern const u8 *const gBattleAnims_Moves[]; -extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; -extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; extern const struct BattleAnimBackground gBattleAnimBackgroundTable[]; // this file's functions @@ -1658,7 +1656,7 @@ static void ScriptCmd_createsprite(void) else argVar *= -1; - subpriority = sub_80A82E4(gBattleAnimTarget) + (s8)(argVar); + subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) + (s8)(argVar); } else { @@ -1667,7 +1665,7 @@ static void ScriptCmd_createsprite(void) else argVar *= -1; - subpriority = sub_80A82E4(gBattleAnimAttacker) + (s8)(argVar); + subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) + (s8)(argVar); } if (subpriority < 3) diff --git a/src/battle_anim_80A5C6C.c b/src/battle_anim_80A5C6C.c index 8ba1a8222..28196a345 100644 --- a/src/battle_anim_80A5C6C.c +++ b/src/battle_anim_80A5C6C.c @@ -35,24 +35,22 @@ extern const union AffineAnimCmd *gUnknown_082FF6C0[]; // This file's functions. void sub_80A64EC(struct Sprite *sprite); -void sub_80A653C(struct Sprite *sprite); void sub_80A6FB4(struct Sprite *sprite); void sub_80A7144(struct Sprite *sprite); void sub_80A791C(struct Sprite *sprite); void sub_80A8DFC(struct Sprite *sprite); void sub_80A8E88(struct Sprite *sprite); -void sub_80A7E6C(u8 spriteId); -u16 sub_80A7F18(u8 spriteId); +void SetBattlerSpriteYOffsetFromYScale(u8 spriteId); +u16 GetBattlerYDeltaFromSpriteId(u8 spriteId); void AnimTask_BlendMonInAndOutSetup(struct Task *task); void sub_80A7AFC(u8 taskId); void sub_80A8CAC(u8 taskId); void AnimTask_BlendMonInAndOutStep(u8 taskId); bool8 sub_80A7238(void); -u8 sub_80A82E4(u8 battlerId); void sub_80A8D78(struct Task *task, u8 taskId); // EWRAM vars -EWRAM_DATA static union AffineAnimCmd *gUnknown_02038444 = NULL; +EWRAM_DATA static union AffineAnimCmd *gAnimTaskAffineAnim = NULL; // Const rom data static const struct UCoords8 sBattlerCoords[][4] = @@ -125,8 +123,7 @@ static const struct SpriteSheet sUnknown_08525FC0[] = { gMiscBlank_Gfx, 0x800, 55126, }, }; -// code -u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId) +u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType) { u8 retVal; u16 species; @@ -134,11 +131,11 @@ u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId) if (IsContest()) { - if (attributeId == BATTLER_COORD_3 && battlerId == 3) - attributeId = BATTLER_COORD_Y; + if (coordType == BATTLER_COORD_Y_PIC_OFFSET && battlerId == 3) + coordType = BATTLER_COORD_Y; } - switch (attributeId) + switch (coordType) { case BATTLER_COORD_X: case BATTLER_COORD_X_2: @@ -147,15 +144,15 @@ u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId) case BATTLER_COORD_Y: retVal = sBattlerCoords[IS_DOUBLE_BATTLE()][GetBattlerPosition(battlerId)].y; break; - case BATTLER_COORD_3: - case BATTLER_COORD_4: + case BATTLER_COORD_Y_PIC_OFFSET: + case BATTLER_COORD_Y_PIC_OFFSET_DEFAULT: default: if (IsContest()) { - if (shared19348.unk4_0) - species = shared19348.unk2; + if (gContestResources->field_18->unk4_0) + species = gContestResources->field_18->unk2; else - species = shared19348.species; + species = gContestResources->field_18->species; } else { @@ -176,7 +173,7 @@ u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId) species = spriteInfo[battlerId].transformSpecies; } } - if (attributeId == BATTLER_COORD_3) + if (coordType == BATTLER_COORD_Y_PIC_OFFSET) retVal = GetBattlerSpriteFinal_Y(battlerId, species, TRUE); else retVal = GetBattlerSpriteFinal_Y(battlerId, species, FALSE); @@ -200,10 +197,10 @@ u8 GetBattlerYDelta(u8 battlerId, u16 species) { if (IsContest()) { - if (shared19348.unk4_0) - personality = shared19348.unk10; + if (gContestResources->field_18->unk4_0) + personality = gContestResources->field_18->unk10; else - personality = shared19348.unk8; + personality = gContestResources->field_18->unk8; } else { @@ -308,19 +305,19 @@ u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3) return y; } -u8 GetBattlerSpriteCoord2(u8 battlerId, u8 attributeId) +u8 GetBattlerSpriteCoord2(u8 battlerId, u8 coordType) { u16 species; struct BattleSpriteInfo *spriteInfo; - if (attributeId == BATTLER_COORD_3 || attributeId == BATTLER_COORD_4) + if (coordType == BATTLER_COORD_Y_PIC_OFFSET || coordType == BATTLER_COORD_Y_PIC_OFFSET_DEFAULT) { if (IsContest()) { - if (shared19348.unk4_0) - species = shared19348.unk2; + if (gContestResources->field_18->unk4_0) + species = gContestResources->field_18->unk2; else - species = shared19348.species; + species = gContestResources->field_18->species; } else { @@ -330,20 +327,20 @@ u8 GetBattlerSpriteCoord2(u8 battlerId, u8 attributeId) else species = spriteInfo[battlerId].transformSpecies; } - if (attributeId == BATTLER_COORD_3) + if (coordType == BATTLER_COORD_Y_PIC_OFFSET) return GetBattlerSpriteFinal_Y(battlerId, species, TRUE); else return GetBattlerSpriteFinal_Y(battlerId, species, FALSE); } else { - return GetBattlerSpriteCoord(battlerId, attributeId); + return GetBattlerSpriteCoord(battlerId, coordType); } } u8 GetBattlerSpriteDefault_Y(u8 battlerId) { - return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_4); + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET_DEFAULT); } u8 GetSubstituteSpriteDefault_Y(u8 battlerId) @@ -387,11 +384,11 @@ u8 GetBattlerYCoordWithElevation(u8 battlerId) return y; } -u8 GetAnimBattlerSpriteId(u8 which) +u8 GetAnimBattlerSpriteId(u8 animBattler) { u8 *sprites; - if (which == ANIM_ATTACKER) + if (animBattler == ANIM_ATTACKER) { if (IsBattlerSpritePresent(gBattleAnimAttacker)) { @@ -403,7 +400,7 @@ u8 GetAnimBattlerSpriteId(u8 which) return 0xff; } } - else if (which == ANIM_TARGET) + else if (animBattler == ANIM_TARGET) { if (IsBattlerSpritePresent(gBattleAnimTarget)) { @@ -415,7 +412,7 @@ u8 GetAnimBattlerSpriteId(u8 which) return 0xff; } } - else if (which == ANIM_ATK_PARTNER) + else if (animBattler == ANIM_ATK_PARTNER) { if (!IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) return 0xff; @@ -443,7 +440,7 @@ void SetCallbackToStoredInData6(struct Sprite *sprite) sprite->callback = (void (*)(struct Sprite *))callback; } -void sub_80A62EC(struct Sprite *sprite) +void TranslateSpriteInCircleOverDuration(struct Sprite *sprite) { if (sprite->data[3]) { @@ -462,7 +459,7 @@ void sub_80A62EC(struct Sprite *sprite) } } -void sub_80A634C(struct Sprite *sprite) +void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite) { if (sprite->data[3]) { @@ -539,7 +536,7 @@ void WaitAnimForDuration(struct Sprite *sprite) void sub_80A64D0(struct Sprite *sprite) { sub_80A64EC(sprite); - sprite->callback = sub_80A653C; + sprite->callback = TranslateSpriteOverDuration; sprite->callback(sprite); } @@ -557,7 +554,7 @@ void sub_80A64EC(struct Sprite *sprite) sprite->data[1] = old; } -void sub_80A653C(struct Sprite *sprite) +void TranslateSpriteOverDuration(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -571,7 +568,7 @@ void sub_80A653C(struct Sprite *sprite) } } -void sub_80A656C(struct Sprite *sprite) +void TranslateAnimLinearSimple(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -613,7 +610,7 @@ void sub_80A65EC(struct Sprite *sprite) sprite->callback = sub_80A64D0; } -void sub_80A6630(struct Sprite *sprite) +void TranslateMonBGUntil(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -627,7 +624,7 @@ void sub_80A6630(struct Sprite *sprite) } } -// Same as sub_80A6630, but it operates on sub-pixel values +// Same as TranslateMonBGUntil, but it operates on sub-pixel values // to handle slower translations. void sub_80A6680(struct Sprite *sprite) { @@ -666,7 +663,7 @@ void sub_80A66DC(struct Sprite *sprite) } } -void move_anim_8074EE0(struct Sprite *sprite) +void DestroySpriteAndMatrix(struct Sprite *sprite) { FreeSpriteOamMatrix(sprite); DestroyAnimSprite(sprite); @@ -684,16 +681,16 @@ void sub_80A6760(struct Sprite *sprite) void sub_80A67A4(struct Sprite *sprite) { ResetPaletteStructByUid(sprite->data[5]); - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } -void sub_80A67BC(struct Sprite *sprite) +void RunStoredCallbackWhenAffineAnimEnds(struct Sprite *sprite) { if (sprite->affineAnimEnded) SetCallbackToStoredInData6(sprite); } -void sub_80A67D8(struct Sprite *sprite) +void RunStoredCallbackWhenAnimEnds(struct Sprite *sprite) { if (sprite->animEnded) SetCallbackToStoredInData6(sprite); @@ -713,31 +710,31 @@ void sub_80A6814(u8 taskId) DestroyAnimVisualTask(taskId); } -void sub_80A6838(struct Sprite *sprite) +void SetSpriteCoordsToAnimAttackerCoords(struct Sprite *sprite) { - sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); } -void sub_80A6864(struct Sprite *sprite, s16 a2) +void sub_80A6864(struct Sprite *sprite, s16 xOffset) { - u16 v1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); - u16 v2 = GetBattlerSpriteCoord(gBattleAnimTarget, 0); + u16 attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + u16 targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); - if (v1 > v2) + if (attackerX > targetX) { - sprite->pos1.x -= a2; + sprite->pos1.x -= xOffset; } - else if (v1 < v2) + else if (attackerX < targetX) { - sprite->pos1.x += a2; + sprite->pos1.x += xOffset; } else { - if (GetBattlerSide(gBattleAnimAttacker) != 0) - sprite->pos1.x -= a2; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + sprite->pos1.x -= xOffset; else - sprite->pos1.x += a2; + sprite->pos1.x += xOffset; } } @@ -780,24 +777,24 @@ void sub_80A6980(struct Sprite *sprite, bool8 a2) { if (!a2) { - sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, 0); - sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, 1); + sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X); + sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y); } sub_80A6864(sprite, gBattleAnimArgs[0]); sprite->pos1.y += gBattleAnimArgs[1]; } -void InitAnimSpritePos(struct Sprite *sprite, u8 a2) +void InitAnimSpritePos(struct Sprite *sprite, u8 respectMonPicOffsets) { - if (!a2) + if (!respectMonPicOffsets) { - sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, 0); - sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, 1); + sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X); + sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y); } else { - sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, 2); - sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, 3); + sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); } sub_80A6864(sprite, gBattleAnimArgs[0]); sprite->pos1.y += gBattleAnimArgs[1]; @@ -1209,7 +1206,7 @@ void sub_80A718C(struct Sprite *sprite) sprite->callback(sprite); } -void obj_id_set_rotscale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation) +void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation) { int i; struct ObjAffineSrcData src; @@ -1243,7 +1240,7 @@ bool8 sub_80A7238(void) } } -void sub_80A7270(u8 spriteId, u8 objMode) +void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode) { u8 battlerId = gSprites[spriteId].data[0]; @@ -1252,32 +1249,34 @@ void sub_80A7270(u8 spriteId, u8 objMode) gSprites[spriteId].oam.objMode = objMode; gSprites[spriteId].affineAnimPaused = TRUE; if (!IsContest() && !gSprites[spriteId].oam.affineMode) - gSprites[spriteId].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[battlerId].field_6; - gSprites[spriteId].oam.affineMode = 3; + gSprites[spriteId].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[battlerId].matrixNum; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE; CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode); } -void sub_80A7344(u8 spriteId) +void ResetSpriteRotScale(u8 spriteId) { - obj_id_set_rotscale(spriteId, 0x100, 0x100, 0); - gSprites[spriteId].oam.affineMode = 1; + SetSpriteRotScale(spriteId, 0x100, 0x100, 0); + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; gSprites[spriteId].oam.objMode = 0; gSprites[spriteId].affineAnimPaused = FALSE; CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode); } -void sub_80A73A0(u8 spriteId) +// Sets the sprite's y offset equal to the y displacement caused by the +// matrix's rotation. +void SetBattlerSpriteYOffsetFromRotation(u8 spriteId) { - u16 matrix = gSprites[spriteId].oam.matrixNum; - s16 c = gOamMatrices[matrix].c; - + u16 matrixNum = gSprites[spriteId].oam.matrixNum; + // The "c" component of the battler sprite matrix contains the sine of the rotation angle divided by some scale amount. + s16 c = gOamMatrices[matrixNum].c; if (c < 0) c = -c; + gSprites[spriteId].pos2.y = c >> 3; } -// related to obj_id_set_rotscale -void sub_80A73E0(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation) +void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 xScale, s16 yScale, u16 rotation) { int i; struct ObjAffineSrcData src; @@ -1286,7 +1285,7 @@ void sub_80A73E0(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 ro if (sprite->oam.affineMode & 1) { sprite->affineAnimPaused = TRUE; - if (a2) + if (recalcCenterVector) CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); src.xScale = xScale; src.yScale = yScale; @@ -1304,7 +1303,7 @@ void sub_80A73E0(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 ro void sub_80A749C(struct Sprite *sprite) { - sub_80A73E0(sprite, TRUE, 0x100, 0x100, 0); + TrySetSpriteRotScale(sprite, TRUE, 0x100, 0x100, 0); sprite->affineAnimPaused = FALSE; CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); } @@ -1320,32 +1319,32 @@ u16 ArcTan2Neg(s16 a, s16 b) return -var; } -void sub_80A750C(u16 a1, bool8 a2) +void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor) { int i; - struct PlttData *c; - struct PlttData *c2; + struct PlttData *originalColor; + struct PlttData *destColor; u16 average; - a1 *= 0x10; + paletteNum *= 16; - if (!a2) + if (!restoreOriginalColor) { - for (i = 0; i < 0x10; i++) + for (i = 0; i < 16; i++) { - c = (struct PlttData *)&gPlttBufferUnfaded[a1 + i]; - average = c->r + c->g + c->b; + originalColor = (struct PlttData *)&gPlttBufferUnfaded[paletteNum + i]; + average = originalColor->r + originalColor->g + originalColor->b; average /= 3; - c2 = (struct PlttData *)&gPlttBufferFaded[a1 + i]; - c2->r = average; - c2->g = average; - c2->b = average; + destColor = (struct PlttData *)&gPlttBufferFaded[paletteNum + i]; + destColor->r = average; + destColor->g = average; + destColor->b = average; } } else { - CpuCopy32(&gPlttBufferUnfaded[a1], &gPlttBufferFaded[a1], 0x20); + CpuCopy32(&gPlttBufferUnfaded[paletteNum], &gPlttBufferFaded[paletteNum], 32); } } @@ -1480,7 +1479,7 @@ void sub_80A77C8(struct Sprite *sprite) } else if (sprite->animEnded || sprite->affineAnimEnded) { - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } } @@ -1495,7 +1494,7 @@ void sub_80A77C8(struct Sprite *sprite) void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite) { bool8 v1; - u8 attributeId; + u8 coordType; if (!(gBattleAnimArgs[5] & 0xff00)) v1 = TRUE; @@ -1503,9 +1502,9 @@ void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite) v1 = FALSE; if (!(gBattleAnimArgs[5] & 0xff)) - attributeId = BATTLER_COORD_3; + coordType = BATTLER_COORD_Y_PIC_OFFSET; else - attributeId = BATTLER_COORD_Y; + coordType = BATTLER_COORD_Y; InitAnimSpritePos(sprite, v1); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -1513,7 +1512,7 @@ void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, attributeId) + gBattleAnimArgs[3]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, coordType) + gBattleAnimArgs[3]; sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } @@ -1545,7 +1544,7 @@ void sub_80A7938(struct Sprite *sprite) if (!gBattleAnimArgs[6]) { r4 = TRUE; - attributeId = BATTLER_COORD_3; + attributeId = BATTLER_COORD_Y_PIC_OFFSET; } else { @@ -1572,19 +1571,19 @@ void sub_80A7938(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } -s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8 whichBattler) +s16 CloneBattlerSpriteWithBlend(u8 animBattler) { u16 i; - u8 spriteId = GetAnimBattlerSpriteId(whichBattler); + u8 spriteId = GetAnimBattlerSpriteId(animBattler); - if (spriteId != 0xff) + if (spriteId != 0xFF) { for (i = 0; i < MAX_SPRITES; i++) { if (!gSprites[i].inUse) { gSprites[i] = gSprites[spriteId]; - gSprites[i].oam.objMode = 1; + gSprites[i].oam.objMode = ST_OAM_OBJ_BLEND; gSprites[i].invisible = FALSE; return i; } @@ -1731,49 +1730,49 @@ void sub_80A7CB4(u8 task) AnimTask_BlendMonInAndOutSetup(&gTasks[task]); } -void sub_80A7CFC(struct Task *task, u8 a2, const void *a3) +void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds) { task->data[7] = 0; task->data[8] = 0; task->data[9] = 0; - task->data[15] = a2; + task->data[15] = spriteId; task->data[10] = 0x100; task->data[11] = 0x100; task->data[12] = 0; - sub_80A8048(&task->data[13], &task->data[14], a3); - sub_80A7270(a2, 0); + StorePointerInVars(&task->data[13], &task->data[14], affineAnimCmds); + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); } -bool8 sub_80A7D34(struct Task *task) +bool8 RunAffineAnimFromTaskData(struct Task *task) { - gUnknown_02038444 = sub_80A8050(task->data[13], task->data[14]) + (task->data[7] << 3); - switch (gUnknown_02038444->type) + gAnimTaskAffineAnim = LoadPointerFromVars(task->data[13], task->data[14]) + (task->data[7] << 3); + switch (gAnimTaskAffineAnim->type) { default: - if (!gUnknown_02038444->frame.duration) + if (!gAnimTaskAffineAnim->frame.duration) { - task->data[10] = gUnknown_02038444->frame.xScale; - task->data[11] = gUnknown_02038444->frame.yScale; - task->data[12] = gUnknown_02038444->frame.rotation; + task->data[10] = gAnimTaskAffineAnim->frame.xScale; + task->data[11] = gAnimTaskAffineAnim->frame.yScale; + task->data[12] = gAnimTaskAffineAnim->frame.rotation; task->data[7]++; - gUnknown_02038444++; + gAnimTaskAffineAnim++; } - task->data[10] += gUnknown_02038444->frame.xScale; - task->data[11] += gUnknown_02038444->frame.yScale; - task->data[12] += gUnknown_02038444->frame.rotation; - obj_id_set_rotscale(task->data[15], task->data[10], task->data[11], task->data[12]); - sub_80A7E6C(task->data[15]); - if (++task->data[8] >= gUnknown_02038444->frame.duration) + task->data[10] += gAnimTaskAffineAnim->frame.xScale; + task->data[11] += gAnimTaskAffineAnim->frame.yScale; + task->data[12] += gAnimTaskAffineAnim->frame.rotation; + SetSpriteRotScale(task->data[15], task->data[10], task->data[11], task->data[12]); + SetBattlerSpriteYOffsetFromYScale(task->data[15]); + if (++task->data[8] >= gAnimTaskAffineAnim->frame.duration) { task->data[8] = 0; task->data[7]++; } break; case AFFINEANIMCMDTYPE_JUMP: - task->data[7] = gUnknown_02038444->jump.target; + task->data[7] = gAnimTaskAffineAnim->jump.target; break; case AFFINEANIMCMDTYPE_LOOP: - if (gUnknown_02038444->loop.count) + if (gAnimTaskAffineAnim->loop.count) { if (task->data[9]) { @@ -1785,7 +1784,7 @@ bool8 sub_80A7D34(struct Task *task) } else { - task->data[9] = gUnknown_02038444->loop.count; + task->data[9] = gAnimTaskAffineAnim->loop.count; } if (!task->data[7]) { @@ -1794,8 +1793,8 @@ bool8 sub_80A7D34(struct Task *task) for (;;) { task->data[7]--; - gUnknown_02038444--; - if (gUnknown_02038444->type == AFFINEANIMCMDTYPE_LOOP) + gAnimTaskAffineAnim--; + if (gAnimTaskAffineAnim->type == AFFINEANIMCMDTYPE_LOOP) { task->data[7]++; return TRUE; @@ -1808,36 +1807,40 @@ bool8 sub_80A7D34(struct Task *task) break; case AFFINEANIMCMDTYPE_END: gSprites[task->data[15]].pos2.y = 0; - sub_80A7344(task->data[15]); + ResetSpriteRotScale(task->data[15]); return FALSE; } return TRUE; } -void sub_80A7E6C(u8 spriteId) +// Sets the sprite's y offset equal to the y displacement caused by the +// matrix's scale in the y dimension. +void SetBattlerSpriteYOffsetFromYScale(u8 spriteId) { - int var = 0x40 - sub_80A7F18(spriteId) * 2; + int var = 64 - GetBattlerYDeltaFromSpriteId(spriteId) * 2; u16 matrix = gSprites[spriteId].oam.matrixNum; int var2 = (var << 8) / gOamMatrices[matrix].d; - if (var2 > 0x80) - var2 = 0x80; + if (var2 > 128) + var2 = 128; gSprites[spriteId].pos2.y = (var - var2) / 2; } -void sub_80A7EC0(u8 spriteId, u8 spriteId2) +// Sets the sprite's y offset equal to the y displacement caused by another sprite +// matrix's scale in the y dimension. +void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId) { - int var = 0x40 - sub_80A7F18(spriteId2) * 2; + int var = 64 - GetBattlerYDeltaFromSpriteId(otherSpriteId) * 2; u16 matrix = gSprites[spriteId].oam.matrixNum; int var2 = (var << 8) / gOamMatrices[matrix].d; - if (var2 > 0x80) - var2 = 0x80; + if (var2 > 128) + var2 = 128; gSprites[spriteId].pos2.y = (var - var2) / 2; } -u16 sub_80A7F18(u8 spriteId) +u16 GetBattlerYDeltaFromSpriteId(u8 spriteId) { struct BattleSpriteInfo *spriteInfo; u8 battlerId = gSprites[spriteId].data[0]; @@ -1850,7 +1853,7 @@ u16 sub_80A7F18(u8 spriteId) { if (IsContest()) { - species = shared19348.species; + species = gContestResources->field_18->species; return gMonBackPicCoords[species].y_offset; } else @@ -1884,18 +1887,18 @@ u16 sub_80A7F18(u8 spriteId) } } } - return 0x40; + return 64; } -void sub_80A8048(s16 *bottom, s16 *top, const void *ptr) +void StorePointerInVars(s16 *lo, s16 *hi, const void *ptr) { - *bottom = ((intptr_t) ptr) & 0xffff; - *top = (((intptr_t) ptr) >> 16) & 0xffff; + *lo = ((intptr_t) ptr) & 0xffff; + *hi = (((intptr_t) ptr) >> 16) & 0xffff; } -void *sub_80A8050(s16 bottom, s16 top) +void *LoadPointerFromVars(s16 lo, s16 hi) { - return (void *)((u16)bottom | ((u16)top << 16)); + return (void *)((u16)lo | ((u16)hi << 16)); } void sub_80A805C(struct Task *task, u8 a2, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7) @@ -1925,9 +1928,9 @@ u8 sub_80A80C8(struct Task *task) task->data[9] = task->data[13]; task->data[10] = task->data[14]; } - obj_id_set_rotscale(task->data[15], task->data[9], task->data[10], 0); + SetSpriteRotScale(task->data[15], task->data[9], task->data[10], 0); if (task->data[8]) - sub_80A7E6C(task->data[15]); + SetBattlerSpriteYOffsetFromYScale(task->data[15]); else gSprites[task->data[15]].pos2.y = 0; return task->data[8]; @@ -1969,16 +1972,16 @@ void sub_80A8278(void) { if (IsBattlerSpriteVisible(i)) { - gSprites[gBattlerSpriteIds[i]].subpriority = sub_80A82E4(i); + gSprites[gBattlerSpriteIds[i]].subpriority = GetBattlerSpriteSubpriority(i); gSprites[gBattlerSpriteIds[i]].oam.priority = 2; } } } -u8 sub_80A82E4(u8 battlerId) +u8 GetBattlerSpriteSubpriority(u8 battlerId) { u8 position; - u8 ret; + u8 subpriority; if (IsContest()) { @@ -1991,15 +1994,16 @@ u8 sub_80A82E4(u8 battlerId) { position = GetBattlerPosition(battlerId); if (position == B_POSITION_PLAYER_LEFT) - ret = 30; + subpriority = 30; else if (position == B_POSITION_PLAYER_RIGHT) - ret = 20; + subpriority = 20; else if (position == B_POSITION_OPPONENT_LEFT) - ret = 40; + subpriority = 40; else - ret = 50; + subpriority = 50; } - return ret; + + return subpriority; } u8 sub_80A8328(u8 battlerId) @@ -2101,15 +2105,15 @@ s16 sub_80A861C(u8 battlerId, u8 a2) if (IsContest()) { - if (shared19348.unk4_0) + if (gContestResources->field_18->unk4_0) { - species = shared19348.unk2; - personality = shared19348.unk10; + species = gContestResources->field_18->unk2; + personality = gContestResources->field_18->unk10; } else { - species = shared19348.species; - personality = shared19348.unk8; + species = gContestResources->field_18->species; + personality = gContestResources->field_18->unk8; } if (species == SPECIES_UNOWN) { @@ -2271,7 +2275,7 @@ u8 sub_80A89C8(int battlerId, u8 spriteId, int species) void sub_80A8A6C(struct Sprite *sprite) { - sub_80A6838(sprite); + SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker)) { sprite->pos1.x -= gBattleAnimArgs[0]; @@ -2287,7 +2291,7 @@ void sub_80A8A6C(struct Sprite *sprite) sprite->data[1] = gBattleAnimArgs[3]; sprite->data[3] = gBattleAnimArgs[4]; sprite->data[5] = gBattleAnimArgs[5]; - StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); sprite->callback = sub_80A66DC; } @@ -2308,19 +2312,19 @@ void sub_80A8AEC(struct Sprite *sprite) sprite->data[3] = gBattleAnimArgs[4]; sprite->data[5] = gBattleAnimArgs[5]; StartSpriteAnim(sprite, gBattleAnimArgs[6]); - StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); sprite->callback = sub_80A66DC; } void sub_80A8B64(struct Sprite *sprite) { - sub_80A6838(sprite); + SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker)) sprite->pos1.x -= gBattleAnimArgs[0]; else sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; - sprite->callback = sub_80A67D8; + sprite->callback = RunStoredCallbackWhenAnimEnds; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } @@ -2340,7 +2344,7 @@ void sub_80A8BC4(u8 taskId) dest = (task->data[4] + 0x10) * 0x10; src = (gSprites[task->data[0]].oam.paletteNum + 0x10) * 0x10; - task->data[6] = sub_80A82E4(gBattleAnimAttacker); + task->data[6] = GetBattlerSpriteSubpriority(gBattleAnimAttacker); if (task->data[6] == 20 || task->data[6] == 40) task->data[6] = 2; else @@ -2385,7 +2389,7 @@ void sub_80A8CAC(u8 taskId) void sub_80A8D78(struct Task *task, u8 taskId) { - s16 spriteId = duplicate_obj_of_side_rel2move_in_transparent_mode(0); + s16 spriteId = CloneBattlerSpriteWithBlend(0); if (spriteId >= 0) { gSprites[spriteId].oam.priority = task->data[6]; @@ -2411,7 +2415,7 @@ void sub_80A8DFC(struct Sprite *sprite) void sub_80A8E30(struct Sprite *sprite) { sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); - sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_3); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); if (!GetBattlerSide(gBattleAnimAttacker)) sprite->data[0] = 5; else diff --git a/src/battle_anim_80A9C70.c b/src/battle_anim_80A9C70.c index f1245a032..2eea276a1 100644 --- a/src/battle_anim_80A9C70.c +++ b/src/battle_anim_80A9C70.c @@ -175,7 +175,7 @@ static void sub_80A9E78(struct Sprite *sprite) void sub_80A9EF4(u8 taskId) { s16 x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) - 32; - s16 y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_3) - 36; + s16 y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) - 36; u8 spriteId; if (IsContest()) diff --git a/src/battle_anim_80D51AC.c b/src/battle_anim_80D51AC.c index bfd0635f6..34eee7376 100644 --- a/src/battle_anim_80D51AC.c +++ b/src/battle_anim_80D51AC.c @@ -441,14 +441,14 @@ static void DoHorizontalLunge(struct Sprite *sprite) sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; sprite->data[4] = gBattleAnimArgs[0]; StoreSpriteCallbackInData6(sprite, ReverseHorizontalLungeDirection); - sprite->callback = sub_80A6630; + sprite->callback = TranslateMonBGUntil; } static void ReverseHorizontalLungeDirection(struct Sprite *sprite) { sprite->data[0] = sprite->data[4]; sprite->data[1] = -sprite->data[1]; - sprite->callback = sub_80A6630; + sprite->callback = TranslateMonBGUntil; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } @@ -468,14 +468,14 @@ static void DoVerticalDip(struct Sprite *sprite) sprite->data[3] = spriteId; sprite->data[4] = gBattleAnimArgs[0]; StoreSpriteCallbackInData6(sprite, ReverseVerticalDipDirection); - sprite->callback = sub_80A6630; + sprite->callback = TranslateMonBGUntil; } static void ReverseVerticalDipDirection(struct Sprite *sprite) { sprite->data[0] = sprite->data[4]; sprite->data[2] = -sprite->data[2]; - sprite->callback = sub_80A6630; + sprite->callback = TranslateMonBGUntil; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } @@ -834,7 +834,7 @@ void AnimTask_ScaleMonAndRestore(u8 taskId) { u8 spriteId; spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[3]); - sub_80A7270(spriteId, gBattleAnimArgs[4]); + PrepareBattlerSpriteForRotScale(spriteId, gBattleAnimArgs[4]); gTasks[taskId].data[0] = gBattleAnimArgs[0]; gTasks[taskId].data[1] = gBattleAnimArgs[1]; gTasks[taskId].data[2] = gBattleAnimArgs[2]; @@ -851,7 +851,7 @@ void AnimTask_ScaleMonAndRestoreStep(u8 taskId) gTasks[taskId].data[10] += gTasks[taskId].data[0]; gTasks[taskId].data[11] += gTasks[taskId].data[1]; spriteId = gTasks[taskId].data[4]; - obj_id_set_rotscale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[11], 0); + SetSpriteRotScale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[11], 0); if (--gTasks[taskId].data[2] == 0) { if (gTasks[taskId].data[3] > 0) @@ -863,7 +863,7 @@ void AnimTask_ScaleMonAndRestoreStep(u8 taskId) } else { - sub_80A7344(spriteId); + ResetSpriteRotScale(spriteId); DestroyAnimVisualTask(taskId); return; } @@ -874,7 +874,7 @@ void sub_80D6134(u8 taskId) { u8 spriteId; spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]); - sub_80A7270(spriteId, 0); + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); gTasks[taskId].data[1] = 0; gTasks[taskId].data[2] = gBattleAnimArgs[0]; if (gBattleAnimArgs[3] != 1) @@ -918,7 +918,7 @@ void sub_80D622C(u8 taskId) { u8 spriteId; spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]); - sub_80A7270(spriteId, 0); + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); gTasks[taskId].data[1] = 0; gTasks[taskId].data[2] = gBattleAnimArgs[0]; if (gBattleAnimArgs[2] == 0) @@ -955,17 +955,17 @@ void sub_80D622C(u8 taskId) void sub_80D6308(u8 taskId) { gTasks[taskId].data[3] += gTasks[taskId].data[4]; - obj_id_set_rotscale(gTasks[taskId].data[5], 0x100, 0x100, gTasks[taskId].data[3]); + SetSpriteRotScale(gTasks[taskId].data[5], 0x100, 0x100, gTasks[taskId].data[3]); if (gTasks[taskId].data[7]) { - sub_80A73A0(gTasks[taskId].data[5]); + SetBattlerSpriteYOffsetFromRotation(gTasks[taskId].data[5]); } if (++gTasks[taskId].data[1] >= gTasks[taskId].data[2]) { switch (gTasks[taskId].data[6]) { case 1: - sub_80A7344(gTasks[taskId].data[5]); + ResetSpriteRotScale(gTasks[taskId].data[5]); case 0: default: DestroyAnimVisualTask(taskId); diff --git a/src/battle_anim_8170478.c b/src/battle_anim_8170478.c new file mode 100755 index 000000000..34898899c --- /dev/null +++ b/src/battle_anim_8170478.c @@ -0,0 +1,2267 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_controllers.h" +#include "battle_interface.h" +#include "decompress.h" +#include "dma3.h" +#include "gpu_regs.h" +#include "graphics.h" +#include "m4a.h" +#include "main.h" +#include "palette.h" +#include "pokeball.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" +#include "trig.h" +#include "util.h" +#include "constants/rgb.h" +#include "constants/items.h" +#include "constants/songs.h" + +// iwram +int gUnknown_030062DC; +u16 gUnknown_030062E0; +u16 gUnknown_030062E4; + +static void sub_8170660(u8); +static void sub_8170A38(u8); +static void sub_8170EF0(u8); +static void sub_8171104(struct Sprite *); +static void sub_8171030(u8); +static void sub_81710A8(u8); +static void sub_8171134(struct Sprite *); +static void sub_8171CAC(struct Sprite *); +static void sub_81711E8(struct Sprite *); +static void sub_8171240(struct Sprite *); +static void sub_817138C(struct Sprite *); +static void sub_81713D0(struct Sprite *); +static void sub_81717B4(struct Sprite *); +static void sub_81714D4(struct Sprite *); +static void sub_8171520(struct Sprite *); +static void sub_81717D8(struct Sprite *); +static void sub_8171AE4(struct Sprite *); +static void sub_81717F8(struct Sprite *); +static void sub_81719EC(struct Sprite *); +static void sub_81718D8(struct Sprite *); +static void sub_81719C0(struct Sprite *); +static void sub_8171D60(u8); +static void sub_8171AAC(struct Sprite *); +static void sub_8171BAC(struct Sprite *); +static void sub_8171CE8(struct Sprite *); +static void PokeBallOpenParticleAnimation_Step1(struct Sprite *); +static void PokeBallOpenParticleAnimation_Step2(struct Sprite *); +static void DestroyBallOpenAnimationParticle(struct Sprite *); +static void FanOutBallOpenParticles_Step1(struct Sprite *); +static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *); +static void PremierBallOpenParticleAnimation_Step1(struct Sprite *); +static void sub_8172AB0(u8); +static void sub_8172B40(u8); +static void sub_8172B90(u8); +static void sub_8172FEC(u8); +static void sub_81731FC(struct Sprite *); +static void sub_8173250(struct Sprite *); +static void sub_81731B0(u8); +static void sub_817339C(struct Sprite *); +static void sub_81733D4(struct Sprite *); +static void sub_8173400(struct Sprite *); +static void PokeBallOpenParticleAnimation(u8); +static void GreatBallOpenParticleAnimation(u8); +static void SafariBallOpenParticleAnimation(u8); +static void UltraBallOpenParticleAnimation(u8); +static void MasterBallOpenParticleAnimation(u8); +static void DiveBallOpenParticleAnimation(u8); +static void RepeatBallOpenParticleAnimation(u8); +static void TimerBallOpenParticleAnimation(u8); +static void PremierBallOpenParticleAnimation(u8); +static void sub_817330C(struct Sprite *); + +struct BallCaptureSuccessStarData +{ + s8 xOffset; + s8 yOffset; + s8 unk2; +}; + +static const struct BallCaptureSuccessStarData sBallCaptureSuccessStarData[] = +{ + { + .xOffset = 10, + .yOffset = 2, + .unk2 = -3, + }, + { + .xOffset = 15, + .yOffset = 0, + .unk2 = -4, + }, + { + .xOffset = -10, + .yOffset = 2, + .unk2 = -4, + }, +}; + +const struct CompressedSpriteSheet gBallOpenParticleSpritesheets[] = +{ + {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6EC}, + {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6ED}, + {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6EE}, + {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6EF}, + {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F0}, + {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F1}, + {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F2}, + {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F3}, + {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F4}, + {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F5}, + {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F6}, + {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F7}, +}; + +const struct CompressedSpritePalette gBallOpenParticlePalettes[] = +{ + {gBattleAnimSpritePalette_136, 0xD6EC}, + {gBattleAnimSpritePalette_136, 0xD6ED}, + {gBattleAnimSpritePalette_136, 0xD6EE}, + {gBattleAnimSpritePalette_136, 0xD6EF}, + {gBattleAnimSpritePalette_136, 0xD6F0}, + {gBattleAnimSpritePalette_136, 0xD6F1}, + {gBattleAnimSpritePalette_136, 0xD6F2}, + {gBattleAnimSpritePalette_136, 0xD6F3}, + {gBattleAnimSpritePalette_136, 0xD6F4}, + {gBattleAnimSpritePalette_136, 0xD6F5}, + {gBattleAnimSpritePalette_136, 0xD6F6}, + {gBattleAnimSpritePalette_136, 0xD6F7}, +}; + +const union AnimCmd gUnknown_085E5154[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(0, 1, .hFlip = TRUE), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gUnknown_085E5170[] = +{ + ANIMCMD_FRAME(3, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_085E5178[] = +{ + ANIMCMD_FRAME(4, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_085E5180[] = +{ + ANIMCMD_FRAME(5, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_085E5188[] = +{ + ANIMCMD_FRAME(6, 4), + ANIMCMD_FRAME(7, 4), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gUnknown_085E5194[] = +{ + ANIMCMD_FRAME(7, 4), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_085E519C[] = +{ + gUnknown_085E5154, + gUnknown_085E5170, + gUnknown_085E5178, + gUnknown_085E5180, + gUnknown_085E5188, + gUnknown_085E5194, +}; + +const u8 gBallOpenParticleAnimNums[] = +{ + 0, + 0, + 0, + 5, + 1, + 2, + 2, + 3, + 5, + 5, + 4, + 4, +}; + +const TaskFunc gBallOpenParticleAnimationFuncs[] = +{ + PokeBallOpenParticleAnimation, + GreatBallOpenParticleAnimation, + SafariBallOpenParticleAnimation, + UltraBallOpenParticleAnimation, + MasterBallOpenParticleAnimation, + SafariBallOpenParticleAnimation, + DiveBallOpenParticleAnimation, + UltraBallOpenParticleAnimation, + RepeatBallOpenParticleAnimation, + TimerBallOpenParticleAnimation, + GreatBallOpenParticleAnimation, + PremierBallOpenParticleAnimation, +}; + +const struct SpriteTemplate gUnknown_085E51F0[] = +{ + { + .tileTag = 55020, + .paletteTag = 55020, + .oam = &gUnknown_08524904, + .anims = gUnknown_085E519C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = 55021, + .paletteTag = 55021, + .oam = &gUnknown_08524904, + .anims = gUnknown_085E519C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = 55022, + .paletteTag = 55022, + .oam = &gUnknown_08524904, + .anims = gUnknown_085E519C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = 55023, + .paletteTag = 55023, + .oam = &gUnknown_08524904, + .anims = gUnknown_085E519C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = 55024, + .paletteTag = 55024, + .oam = &gUnknown_08524904, + .anims = gUnknown_085E519C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = 55025, + .paletteTag = 55025, + .oam = &gUnknown_08524904, + .anims = gUnknown_085E519C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = 55026, + .paletteTag = 55026, + .oam = &gUnknown_08524904, + .anims = gUnknown_085E519C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = 55027, + .paletteTag = 55027, + .oam = &gUnknown_08524904, + .anims = gUnknown_085E519C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = 55028, + .paletteTag = 55028, + .oam = &gUnknown_08524904, + .anims = gUnknown_085E519C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = 55029, + .paletteTag = 55029, + .oam = &gUnknown_08524904, + .anims = gUnknown_085E519C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = 55030, + .paletteTag = 55030, + .oam = &gUnknown_08524904, + .anims = gUnknown_085E519C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = 55031, + .paletteTag = 55031, + .oam = &gUnknown_08524904, + .anims = gUnknown_085E519C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, +}; + +const u16 gUnknown_085E5310[] = +{ + RGB(31, 22, 30), + RGB(16, 23, 30), + RGB(23, 30, 20), + RGB(31, 31, 15), + RGB(23, 20, 28), + RGB(21, 31, 25), + RGB(12, 25, 30), + RGB(30, 27, 10), + RGB(31, 24, 16), + RGB(29, 30, 30), + RGB(31, 17, 10), + RGB(31, 9, 10), + RGB(0, 0, 0), + RGB(1, 16, 0), + RGB(3, 0, 1), + RGB(1, 8, 0), + RGB(0, 8, 0), + RGB(3, 8, 1), + RGB(6, 8, 1), + RGB(4, 0, 0), +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_85E5338 = +{ + .tileTag = ANIM_TAG_UNUSED_RED_BRICK, + .paletteTag = ANIM_TAG_UNUSED_RED_BRICK, + .oam = &gUnknown_0852490C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_817330C, +}; + +const union AnimCmd gUnknown_085E5350[] = +{ + ANIMCMD_FRAME(64, 1), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_085E5358[] = { + gUnknown_085E5350, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_085E535C = +{ + .tileTag = ANIM_TAG_ROCKS, + .paletteTag = ANIM_TAG_ROCKS, + .oam = &gUnknown_08524914, + .anims = gUnknown_085E5358, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_817330C, +}; + +extern const struct SpriteTemplate gUnknown_085CE388; +extern const struct SpriteTemplate gUnknown_085CE3A0; + +void unref_sub_8170478(u8 taskId) +{ + struct UnknownAnimStruct2 unknownStruct; + u8 healthBoxSpriteId; + u8 battler; + u8 spriteId1, spriteId2, spriteId3, spriteId4; + + battler = gBattleAnimAttacker; + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 0); + SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0); + SetAnimBgAttribute(1, BG_ANIM_AREA_OVERFLOW_MODE, 1); + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); + + healthBoxSpriteId = gHealthboxSpriteIds[battler]; + spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam; + spriteId2 = gSprites[healthBoxSpriteId].data[5]; + spriteId3 = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); + spriteId4 = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); + gSprites[healthBoxSpriteId].oam.priority = 1; + gSprites[spriteId1].oam.priority = 1; + gSprites[spriteId2].oam.priority = 1; + gSprites[spriteId3] = gSprites[healthBoxSpriteId]; + gSprites[spriteId4] = gSprites[spriteId1]; + gSprites[spriteId3].oam.objMode = ST_OAM_OBJ_WINDOW; + gSprites[spriteId4].oam.objMode = ST_OAM_OBJ_WINDOW; + gSprites[spriteId3].callback = SpriteCallbackDummy; + gSprites[spriteId4].callback = SpriteCallbackDummy; + + sub_80A6B30(&unknownStruct); + sub_80A6D48(unknownStruct.bgId, gUnknown_08C2EA9C); + sub_80A6CC0(unknownStruct.bgId, gUnknown_08C2EA50, unknownStruct.tilesOffset); + LoadCompressedPalette(gUnknown_08C2DDA4, unknownStruct.unk8 << 4, 32); + + gBattle_BG1_X = -gSprites[spriteId3].pos1.x + 32; + gBattle_BG1_Y = -gSprites[spriteId3].pos1.y - 32; + gTasks[taskId].data[1] = 640; + gTasks[taskId].data[0] = spriteId3; + gTasks[taskId].data[2] = spriteId4; + gTasks[taskId].func = sub_8170660; +} + +static void sub_8170660(u8 taskId) +{ + u8 spriteId1, spriteId2; + u8 battler; + + battler = gBattleAnimAttacker; + gTasks[taskId].data[13] += gTasks[taskId].data[1]; + gBattle_BG1_Y += (u16)gTasks[taskId].data[13] >> 8; + gTasks[taskId].data[13] &= 0xFF; + + switch (gTasks[taskId].data[15]) + { + case 0: + if (gTasks[taskId].data[11]++ > 1) + { + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[12]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12])); + if (gTasks[taskId].data[12] == 8) + gTasks[taskId].data[15]++; + } + break; + case 1: + if (++gTasks[taskId].data[10] == 30) + gTasks[taskId].data[15]++; + break; + case 2: + if (gTasks[taskId].data[11]++ > 1) + { + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[12]--; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12])); + if (gTasks[taskId].data[12] == 0) + { + sub_80A477C(0); + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0); + + SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0)); + DestroySprite(&gSprites[gTasks[taskId].data[0]]); + DestroySprite(&gSprites[gTasks[taskId].data[2]]); + SetAnimBgAttribute(1, BG_ANIM_AREA_OVERFLOW_MODE, 0); + spriteId1 = gSprites[gHealthboxSpriteIds[battler]].oam.affineParam; + spriteId2 = gSprites[gHealthboxSpriteIds[battler]].data[5]; + gSprites[gHealthboxSpriteIds[battler]].oam.priority = 1; + gSprites[spriteId1].oam.priority = 1; + gSprites[spriteId2].oam.priority = 1; + DestroyAnimVisualTask(taskId); + } + } + break; + } +} + +static void sub_8170834(u8 *paletteId1, u8 *paletteId2, u8 battler) +{ + u8 healthBoxSpriteId; + u8 spriteId1, spriteId2; + u16 offset1, offset2; + + healthBoxSpriteId = gHealthboxSpriteIds[battler]; + spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam; + spriteId2 = gSprites[healthBoxSpriteId].data[5]; + *paletteId1 = AllocSpritePalette(0xD709); + *paletteId2 = AllocSpritePalette(0xD70A); + + offset1 = (gSprites[healthBoxSpriteId].oam.paletteNum * 16) + 0x100; + offset2 = (gSprites[spriteId2].oam.paletteNum * 16) + 0x100; + LoadPalette(&gPlttBufferUnfaded[offset1], *paletteId1 * 16 + 0x100, 0x20); + LoadPalette(&gPlttBufferUnfaded[offset2], *paletteId2 * 16 + 0x100, 0x20); + + gSprites[healthBoxSpriteId].oam.paletteNum = *paletteId1; + gSprites[spriteId1].oam.paletteNum = *paletteId1; + gSprites[spriteId2].oam.paletteNum = *paletteId2; +} + +void sub_8170920(u8 taskId) +{ + u8 paletteId1, paletteId2; + sub_8170834(&paletteId1, &paletteId2, gBattleAnimAttacker); + DestroyAnimVisualTask(taskId); +} + +static void sub_817094C(u8 battler) +{ + u8 healthBoxSpriteId; + u8 spriteId1, spriteId2; + u8 paletteId1, paletteId2; + + healthBoxSpriteId = gHealthboxSpriteIds[battler]; + spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam; + spriteId2 = gSprites[healthBoxSpriteId].data[5]; + + FreeSpritePaletteByTag(0xD709); + FreeSpritePaletteByTag(0xD70A); + paletteId1 = IndexOfSpritePaletteTag(0xD6FF); + paletteId2 = IndexOfSpritePaletteTag(0xD704); + gSprites[healthBoxSpriteId].oam.paletteNum = paletteId1; + gSprites[spriteId1].oam.paletteNum = paletteId1; + gSprites[spriteId2].oam.paletteNum = paletteId2; +} + +void sub_81709EC(u8 taskId) +{ + sub_817094C(gBattleAnimAttacker); + DestroyAnimVisualTask(taskId); +} + +void sub_8170A0C(u8 taskId) +{ + gTasks[taskId].data[10] = gBattleAnimArgs[0]; + gTasks[taskId].data[11] = gBattleAnimArgs[1]; + gTasks[taskId].func = sub_8170A38; +} + +static void sub_8170A38(u8 taskId) +{ + u8 paletteNum; + int paletteOffset, colorOffset; + + gTasks[taskId].data[0]++; + if (gTasks[taskId].data[0]++ >= gTasks[taskId].data[11]) + { + gTasks[taskId].data[0] = 0; + paletteNum = IndexOfSpritePaletteTag(0xD709); + colorOffset = gTasks[taskId].data[10] == 0 ? 6 : 2; + switch (gTasks[taskId].data[1]) + { + case 0: + gTasks[taskId].data[2] += 2; + if (gTasks[taskId].data[2] > 16) + gTasks[taskId].data[2] = 16; + + paletteOffset = paletteNum * 16 + 0x100; + BlendPalette(paletteOffset + colorOffset, 1, gTasks[taskId].data[2], RGB(20, 27, 31)); + if (gTasks[taskId].data[2] == 16) + gTasks[taskId].data[1]++; + break; + case 1: + gTasks[taskId].data[2] -= 2; + if (gTasks[taskId].data[2] < 0) + gTasks[taskId].data[2] = 0; + + paletteOffset = paletteNum * 16 + 0x100; + BlendPalette(paletteOffset + colorOffset, 1, gTasks[taskId].data[2], RGB(20, 27, 31)); + if (gTasks[taskId].data[2] == 0) + DestroyAnimVisualTask(taskId); + break; + } + } +} + +void sub_8170B04(u8 taskId) +{ + u8 spriteId; + + spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + switch (gTasks[taskId].data[0]) + { + case 0: + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); + gTasks[taskId].data[10] = 0x100; + gTasks[taskId].data[0]++; + break; + case 1: + gTasks[taskId].data[10] += 0x30; + SetSpriteRotScale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[10], 0); + SetBattlerSpriteYOffsetFromYScale(spriteId); + if (gTasks[taskId].data[10] >= 0x2D0) + gTasks[taskId].data[0]++; + break; + case 2: + ResetSpriteRotScale(spriteId); + gSprites[spriteId].invisible = 1; + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_8170BB0(u8 taskId) +{ + u8 spriteId; + u16 ball; + u8 ballId; + u8 x, y; + u8 priority, subpriority; + u32 selectedPalettes; + + spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + ball = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_POKEBALL); + else + ball = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_POKEBALL); + + ballId = ItemIdToBallId(ball); + switch (gTasks[taskId].data[0]) + { + case 0: + x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); + y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1); + priority = gSprites[spriteId].oam.priority; + subpriority = gSprites[spriteId].subpriority; + gTasks[taskId].data[10] = AnimateBallOpenParticles(x, y + 32, priority, subpriority, ballId); + selectedPalettes = sub_80A75AC(1, 0, 0, 0, 0, 0, 0); + gTasks[taskId].data[11] = LaunchBallFadeMonTask(0, gBattleAnimAttacker, selectedPalettes, ballId); + gTasks[taskId].data[0]++; + break; + case 1: + if (!gTasks[gTasks[taskId].data[10]].isActive && !gTasks[gTasks[taskId].data[11]].isActive) + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_8170CFC(u8 taskId) +{ + u8 ballId = ItemIdToBallId(gLastUsedItem); + LoadBallGfx(ballId); + DestroyAnimVisualTask(taskId); +} + +void sub_8170D24(u8 taskId) +{ + u8 ballId = ItemIdToBallId(gLastUsedItem); + FreeBallGfx(ballId); + DestroyAnimVisualTask(taskId); +} + +void AnimTask_IsBallBlockedByTrainer(u8 taskId) +{ + if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_TRAINER_BLOCK) + gBattleAnimArgs[7] = -1; + else + gBattleAnimArgs[7] = 0; + + DestroyAnimVisualTask(taskId); +} + +u8 ItemIdToBallId(u16 ballItem) +{ + switch (ballItem) + { + case ITEM_MASTER_BALL: + return 4; + case ITEM_ULTRA_BALL: + return 3; + case ITEM_GREAT_BALL: + return 1; + case ITEM_SAFARI_BALL: + return 2; + case ITEM_NET_BALL: + return 5; + case ITEM_DIVE_BALL: + return 6; + case ITEM_NEST_BALL: + return 7; + case ITEM_REPEAT_BALL: + return 8; + case ITEM_TIMER_BALL: + return 9; + case ITEM_LUXURY_BALL: + return 10; + case ITEM_PREMIER_BALL: + return 11; + case ITEM_POKE_BALL: + default: + return 0; + } +} + +void sub_8170E04(u8 taskId) +{ + u8 ballId; + u8 spriteId; + + ballId = ItemIdToBallId(gLastUsedItem); + spriteId = CreateSprite(&gBallSpriteTemplates[ballId], 32, 80, 29); + gSprites[spriteId].data[0] = 34; + gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 0); + gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) - 16; + gSprites[spriteId].callback = sub_8171104; + gBattleSpritesDataPtr->animationData->field_9_x2 = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible; + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].func = sub_8170EF0; +} + +static void sub_8170EF0(u8 taskId) +{ + u8 spriteId = gTasks[taskId].data[0]; + if ((u16)gSprites[spriteId].data[0] == 0xFFFF) + DestroyAnimVisualTask(taskId); +} + +void sub_8170F2C(u8 taskId) +{ + int x, y; + u8 ballId; + u8 subpriority; + u8 spriteId; + + if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL) + { + x = 32; + y = 11; + } + else + { + x = 23; + y = 5; + } + + ballId = ItemIdToBallId(gLastUsedItem); + subpriority = GetBattlerSpriteSubpriority(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)) + 1; + spriteId = CreateSprite(&gBallSpriteTemplates[ballId], x + 32, y | 80, subpriority); + gSprites[spriteId].data[0] = 34; + gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 0); + gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) - 16; + gSprites[spriteId].callback = SpriteCallbackDummy; + gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].callback = sub_8039E84; + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].func = sub_8171030; +} + +static void sub_8171030(u8 taskId) +{ + if (gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animCmdIndex == 1) + { + PlaySE12WithPanning(SE_NAGERU, 0); + gSprites[gTasks[taskId].data[0]].callback = sub_8171104; + CreateTask(sub_81710A8, 10); + gTasks[taskId].func = sub_8170EF0; + } +} + +static void sub_81710A8(u8 taskId) +{ + if (gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animEnded) + { + StartSpriteAnim(&gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]], 0); + DestroyTask(taskId); + } +} + +static void sub_8171104(struct Sprite *sprite) +{ + u16 temp = sprite->data[1]; + u16 temp2 = sprite->data[2]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = temp; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = temp2; + sprite->data[5] = -40; + InitAnimArcTranslation(sprite); + sprite->callback = sub_8171134; +} + +static void sub_8171134(struct Sprite *sprite) +{ + int i; + u8 ballId; + int ballId2; // extra var needed to match + + if (TranslateAnimArc(sprite)) + { + if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_TRAINER_BLOCK) + { + sprite->callback = sub_8171CAC; + } + else + { + StartSpriteAnim(sprite, 1); + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + + for (i = 0; i < 8; i++) + sprite->data[i] = 0; + + sprite->data[5] = 0; + sprite->callback = sub_81711E8; + ballId = ItemIdToBallId(gLastUsedItem); + ballId2 = ballId; + if (ballId2 > 11) + return; + if (ballId2 < 0) + return; + + AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId); + LaunchBallFadeMonTask(0, gBattleAnimTarget, 14, ballId); + } + } +} + +static void sub_81711E8(struct Sprite *sprite) +{ + if (++sprite->data[5] == 10) + { + sprite->data[5] = CreateTask(TaskDummy, 50); + sprite->callback = sub_8171240; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0; + } +} + +static void sub_8171240(struct Sprite *sprite) +{ + u8 spriteId; + u8 taskId; + + spriteId = gBattlerSpriteIds[gBattleAnimTarget]; + taskId = sprite->data[5]; + + if (++gTasks[taskId].data[1] == 11) + PlaySE(SE_SUIKOMU); + + switch (gTasks[taskId].data[0]) + { + case 0: + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); + gTasks[taskId].data[10] = 256; + gUnknown_030062DC = 28; + gUnknown_030062E4 = (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) - (sprite->pos1.y + sprite->pos2.y); + gUnknown_030062E0 = (u32)(gUnknown_030062E4 * 256) / 28; + gTasks[taskId].data[2] = gUnknown_030062E0; + gTasks[taskId].data[0]++; + break; + case 1: + gTasks[taskId].data[10] += 0x20; + SetSpriteRotScale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[10], 0); + gTasks[taskId].data[3] += gTasks[taskId].data[2]; + gSprites[spriteId].pos2.y = -gTasks[taskId].data[3] >> 8; + if (gTasks[taskId].data[10] >= 0x480) + gTasks[taskId].data[0]++; + break; + case 2: + ResetSpriteRotScale(spriteId); + gSprites[spriteId].invisible = 1; + gTasks[taskId].data[0]++; + break; + default: + if (gTasks[taskId].data[1] > 10) + { + DestroyTask(taskId); + StartSpriteAnim(sprite, 2); + sprite->data[5] = 0; + sprite->callback = sub_817138C; + } + break; + } +} + +static void sub_817138C(struct Sprite *sprite) +{ + int angle; + + if (sprite->animEnded) + { + sprite->data[3] = 0; + sprite->data[4] = 40; + sprite->data[5] = 0; + angle = 0; + sprite->pos1.y += Cos(angle, 40); + sprite->pos2.y = -Cos(angle, sprite->data[4]); + sprite->callback = sub_81713D0; + } +} + +static void sub_81713D0(struct Sprite *sprite) +{ + bool8 lastBounce; + int bounceCount; + + lastBounce = 0; + + switch (sprite->data[3] & 0xFF) + { + case 0: + sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]); + sprite->data[5] += (sprite->data[3] >> 8) + 4; + if (sprite->data[5] >= 64) + { + sprite->data[4] -= 10; + sprite->data[3] += 257; + + bounceCount = sprite->data[3] >> 8; + if (bounceCount == 4) + lastBounce = 1; + + // Play a different sound effect for each pokeball bounce. + switch (bounceCount) + { + case 1: + PlaySE(SE_KON); + break; + case 2: + PlaySE(SE_KON2); + break; + case 3: + PlaySE(SE_KON3); + break; + default: + PlaySE(SE_KON4); + break; + } + } + break; + case 1: + sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]); + sprite->data[5] -= (sprite->data[3] >> 8) + 4; + if (sprite->data[5] <= 0) + { + sprite->data[5] = 0; + sprite->data[3] &= -0x100; + } + break; + } + + if (lastBounce) + { + sprite->data[3] = 0; + sprite->pos1.y += Cos(64, 40); + sprite->pos2.y = 0; + if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_NO_SHAKES) + { + sprite->data[5] = 0; + sprite->callback = sub_81717B4; + } + else + { + sprite->callback = sub_81714D4; + sprite->data[4] = 1; + sprite->data[5] = 0; + } + } +} + +static void sub_81714D4(struct Sprite *sprite) +{ + if (++sprite->data[3] == 31) + { + sprite->data[3] = 0; + sprite->affineAnimPaused = 1; + StartSpriteAffineAnim(sprite, 1); + gBattleSpritesDataPtr->animationData->field_C = 0; + sprite->callback = sub_8171520; + PlaySE(SE_BOWA); + } +} + +static void sub_8171520(struct Sprite *sprite) +{ + s8 state; + u16 var0; + + switch (sprite->data[3] & 0xFF) + { + case 0: + if (gBattleSpritesDataPtr->animationData->field_C > 0xFF) + { + sprite->pos2.x += sprite->data[4]; + gBattleSpritesDataPtr->animationData->field_C &= 0xFF; + } + else + { + gBattleSpritesDataPtr->animationData->field_C += 0xB0; + } + + sprite->data[5]++; + sprite->affineAnimPaused = 0; + var0 = sprite->data[5] + 7; + if (var0 > 14) + { + gBattleSpritesDataPtr->animationData->field_C = 0; + sprite->data[3]++; + sprite->data[5] = 0; + } + break; + case 1: + if (++sprite->data[5] == 1) + { + sprite->data[5] = 0; + sprite->data[4] = -sprite->data[4]; + sprite->data[3]++; + sprite->affineAnimPaused = 0; + if (sprite->data[4] < 0) + ChangeSpriteAffineAnim(sprite, 2); + else + ChangeSpriteAffineAnim(sprite, 1); + } + else + { + sprite->affineAnimPaused = 1; + } + break; + case 2: + if (gBattleSpritesDataPtr->animationData->field_C > 0xFF) + { + sprite->pos2.x += sprite->data[4]; + gBattleSpritesDataPtr->animationData->field_C &= 0xFF; + } + else + { + gBattleSpritesDataPtr->animationData->field_C += 0xB0; + } + + sprite->data[5]++; + sprite->affineAnimPaused = 0; + var0 = sprite->data[5] + 12; + if (var0 > 24) + { + gBattleSpritesDataPtr->animationData->field_C = 0; + sprite->data[3]++; + sprite->data[5] = 0; + } + break; + case 3: + if (sprite->data[5]++ < 0) + { + sprite->affineAnimPaused = 1; + break; + } + + sprite->data[5] = 0; + sprite->data[4] = -sprite->data[4]; + sprite->data[3]++; + sprite->affineAnimPaused = 0; + if (sprite->data[4] < 0) + ChangeSpriteAffineAnim(sprite, 2); + else + ChangeSpriteAffineAnim(sprite, 1); + // fall through + case 4: + if (gBattleSpritesDataPtr->animationData->field_C > 0xFF) + { + sprite->pos2.x += sprite->data[4]; + gBattleSpritesDataPtr->animationData->field_C &= 0xFF; + } + else + { + gBattleSpritesDataPtr->animationData->field_C += 0xB0; + } + + sprite->data[5]++; + sprite->affineAnimPaused = 0; + var0 = sprite->data[5] + 4; + if (var0 > 8) + { + gBattleSpritesDataPtr->animationData->field_C = 0; + sprite->data[3]++; + sprite->data[5] = 0; + sprite->data[4] = -sprite->data[4]; + } + break; + case 5: + sprite->data[3] += 0x100; + state = sprite->data[3] >> 8; + if (state == gBattleSpritesDataPtr->animationData->ballThrowCaseId) + { + sprite->affineAnimPaused = 1; + sprite->callback = sub_81717B4; + } + else + { + if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_3_SHAKES_SUCCESS && state == 3) + { + sprite->callback = sub_81717D8; + sprite->affineAnimPaused = 1; + } + else + { + sprite->data[3]++; + sprite->affineAnimPaused = 1; + } + } + break; + case 6: + default: + if (++sprite->data[5] == 31) + { + sprite->data[5] = 0; + sprite->data[3] &= -0x100; + StartSpriteAffineAnim(sprite, 3); + if (sprite->data[4] < 0) + StartSpriteAffineAnim(sprite, 2); + else + StartSpriteAffineAnim(sprite, 1); + + PlaySE(SE_BOWA); + } + break; + } +} + +static void sub_81717B4(struct Sprite *sprite) +{ + if (++sprite->data[5] == 31) + { + sprite->data[5] = 0; + sprite->callback = sub_8171AE4; + } +} + +static void sub_81717D8(struct Sprite *sprite) +{ + sprite->animPaused = 1; + sprite->callback = sub_81717F8; + sprite->data[3] = 0; + sprite->data[4] = 0; + sprite->data[5] = 0; +} + +static void sub_81717F8(struct Sprite *sprite) +{ + u8 *battler = &gBattleAnimTarget; + + sprite->data[4]++; + if (sprite->data[4] == 40) + { + PlaySE(SE_RG_GETTING); + BlendPalettes(0x10000 << sprite->oam.paletteNum, 6, RGB(0, 0, 0)); + sub_81719EC(sprite); + } + else if (sprite->data[4] == 60) + { + BeginNormalPaletteFade(0x10000 << sprite->oam.paletteNum, 2, 6, 0, RGB(0, 0, 0)); + } + else if (sprite->data[4] == 95) + { + gDoingBattleAnim = 0; + UpdateOamPriorityInAllHealthboxes(1); + m4aMPlayAllStop(); + PlaySE(MUS_RG_FAN6); + } + else if (sprite->data[4] == 315) + { + FreeOamMatrix(gSprites[gBattlerSpriteIds[*battler]].oam.matrixNum); + DestroySprite(&gSprites[gBattlerSpriteIds[*battler]]); + sprite->data[0] = 0; + sprite->callback = sub_81718D8; + } +} + +static void sub_81718D8(struct Sprite *sprite) +{ + u8 paletteIndex; + + switch (sprite->data[0]) + { + case 0: + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->oam.objMode = ST_OAM_OBJ_BLEND; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0)); + paletteIndex = IndexOfSpritePaletteTag(sprite->template->paletteTag); + BeginNormalPaletteFade(1 << (paletteIndex + 0x10), 0, 0, 16, RGB(31, 31, 31)); + sprite->data[0]++; + break; + case 1: + if (sprite->data[1]++ > 0) + { + sprite->data[1] = 0; + sprite->data[2]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - sprite->data[2], sprite->data[2])); + if (sprite->data[2] == 16) + sprite->data[0]++; + } + break; + case 2: + sprite->invisible = 1; + sprite->data[0]++; + break; + default: + if (!gPaletteFade.active) + { + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + sprite->data[0] = 0; + sprite->callback = sub_81719C0; + } + break; + } +} + +static void sub_81719C0(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + sprite->data[0] = -1; + } + else + { + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } +} + +static void sub_81719EC(struct Sprite *sprite) +{ + u32 i; + u8 subpriority; + + if (sprite->subpriority) + { + subpriority = sprite->subpriority - 1; + } + else + { + subpriority = 0; + sprite->subpriority = 1; + } + + sub_8171D60(4); + for (i = 0; i < 3; i++) + { + u8 spriteId = CreateSprite(&gUnknown_085E51F0[4], sprite->pos1.x, sprite->pos1.y, subpriority); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[0] = 24; + gSprites[spriteId].data[2] = sprite->pos1.x + sBallCaptureSuccessStarData[i].xOffset; + gSprites[spriteId].data[4] = sprite->pos1.y + sBallCaptureSuccessStarData[i].yOffset; + gSprites[spriteId].data[5] = sBallCaptureSuccessStarData[i].unk2; + InitAnimArcTranslation(&gSprites[spriteId]); + gSprites[spriteId].callback = sub_8171AAC; + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[4]); + } + } +} + +static void sub_8171AAC(struct Sprite *sprite) +{ + sprite->invisible = !sprite->invisible; + if (TranslateAnimArc(sprite)) + DestroySprite(sprite); +} + +// fakematching. I think the return type of ItemIdToBallId() +// is wrong because of the weird required casting. +static void sub_8171AE4(struct Sprite *sprite) +{ + u8 ballId; + int ballId2; // extra var needed to match + + StartSpriteAnim(sprite, 1); + StartSpriteAffineAnim(sprite, 0); + sprite->callback = sub_8171BAC; + + ballId = ItemIdToBallId(gLastUsedItem); + ballId2 = ballId; + if (ballId2 > 11) + goto LABEL; + if (ballId2 < 0) + goto LABEL; + + AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId); + LaunchBallFadeMonTask(1, gBattleAnimTarget, 14, ballId); + + LABEL: + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = 0; + StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 1); + AnimateSprite(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]]); + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0x1000; +} + +static void sub_8171BAC(struct Sprite *sprite) +{ + int next = FALSE; + + if (sprite->animEnded) + sprite->invisible = 1; + + if (gSprites[gBattlerSpriteIds[gBattleAnimTarget]].affineAnimEnded) + { + StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 0); + next = TRUE; + } + else + { + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] -= 288; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] >> 8; + } + + if (sprite->animEnded && next) + { + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = 0; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = gBattleSpritesDataPtr->animationData->field_9_x2; + sprite->data[0] = 0; + sprite->callback = sub_81719C0; + gDoingBattleAnim = 0; + UpdateOamPriorityInAllHealthboxes(1); + } +} + +static void sub_8171CAC(struct Sprite *sprite) +{ + int i; + + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + for (i = 0; i < 6; i++) + sprite->data[i] = 0; + + sprite->callback = sub_8171CE8; +} + +static void sub_8171CE8(struct Sprite *sprite) +{ + s16 var0 = sprite->data[0] + 0x800; + s16 var1 = sprite->data[1] + 0x680; + sprite->pos2.x -= var1 >> 8; + sprite->pos2.y += var0 >> 8; + sprite->data[0] = (sprite->data[0] + 0x800) & 0xFF; + sprite->data[1] = (sprite->data[1] + 0x680) & 0xFF; + + if (sprite->pos1.y + sprite->pos2.y > 160 + || sprite->pos1.x + sprite->pos2.x < -8) + { + sprite->data[0] = 0; + sprite->callback = sub_81719C0; + gDoingBattleAnim = 0; + UpdateOamPriorityInAllHealthboxes(1); + } +} + +static void sub_8171D60(u8 ballId) +{ + u8 taskId; + + if (GetSpriteTileStartByTag(gBallOpenParticleSpritesheets[ballId].tag) == 0xFFFF) + { + LoadCompressedObjectPicUsingHeap(&gBallOpenParticleSpritesheets[ballId]); + LoadCompressedObjectPaletteUsingHeap(&gBallOpenParticlePalettes[ballId]); + } +} + +u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId) +{ + u8 taskId; + + sub_8171D60(ballId); + taskId = CreateTask(gBallOpenParticleAnimationFuncs[ballId], 5); + gTasks[taskId].data[1] = x; + gTasks[taskId].data[2] = y; + gTasks[taskId].data[3] = priority; + gTasks[taskId].data[4] = subpriority; + gTasks[taskId].data[15] = ballId; + PlaySE(SE_BOWA2); + + return taskId; +} + +void sub_8171E20(void) +{ + if (gMain.inBattle) + gBattleSpritesDataPtr->animationData->field_A++; +} + +static void PokeBallOpenParticleAnimation(u8 taskId) +{ + u8 spriteId; + u8 x, y; + u8 priority, subpriority; + u8 ballId; + u8 var0; + + ballId = gTasks[taskId].data[15]; + if (gTasks[taskId].data[0] < 16) + { + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_8171E20(); + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]); + gSprites[spriteId].callback = PokeBallOpenParticleAnimation_Step1; + gSprites[spriteId].oam.priority = priority; + + var0 = (u8)gTasks[taskId].data[0]; + if (var0 >= 8) + var0 -= 8; + + gSprites[spriteId].data[0] = var0 * 32; + } + + if (gTasks[taskId].data[0] == 15) + { + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); + return; + } + } + + gTasks[taskId].data[0]++; +} + +static void PokeBallOpenParticleAnimation_Step1(struct Sprite *sprite) +{ + if (sprite->data[1] == 0) + sprite->callback = PokeBallOpenParticleAnimation_Step2; + else + sprite->data[1]--; +} + +static void PokeBallOpenParticleAnimation_Step2(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[0], sprite->data[1]); + sprite->data[1] += 2; + if (sprite->data[1] == 50) + DestroyBallOpenAnimationParticle(sprite); +} + +static void TimerBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 8; i++) + { + spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_8171E20(); + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 32; + gSprites[spriteId].data[4] = 10; + gSprites[spriteId].data[5] = 2; + gSprites[spriteId].data[6] = 1; + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +static void DiveBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 8; i++) + { + spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_8171E20(); + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 32; + gSprites[spriteId].data[4] = 10; + gSprites[spriteId].data[5] = 1; + gSprites[spriteId].data[6] = 2; + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +// Also used for Net Ball +static void SafariBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 8; i++) + { + spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_8171E20(); + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 32; + gSprites[spriteId].data[4] = 4; + gSprites[spriteId].data[5] = 1; + gSprites[spriteId].data[6] = 1; + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +// Also used for Nest Ball +static void UltraBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 10; i++) + { + spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_8171E20(); + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 25; + gSprites[spriteId].data[4] = 5; + gSprites[spriteId].data[5] = 1; + gSprites[spriteId].data[6] = 1; + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +// Also used for Luxury Ball +static void GreatBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + if (gTasks[taskId].data[7]) + { + gTasks[taskId].data[7]--; + } + else + { + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 8; i++) + { + spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_8171E20(); + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 32; + gSprites[spriteId].data[4] = 8; + gSprites[spriteId].data[5] = 2; + gSprites[spriteId].data[6] = 2; + } + } + + gTasks[taskId].data[7] = 8; + if (++gTasks[taskId].data[0] == 2) + { + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); + } + } +} + +static void FanOutBallOpenParticles_Step1(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[0], sprite->data[2]); + sprite->data[0] = (sprite->data[0] + sprite->data[4]) & 0xFF; + sprite->data[1] += sprite->data[5]; + sprite->data[2] += sprite->data[6]; + if (++sprite->data[3] == 51) + DestroyBallOpenAnimationParticle(sprite); +} + +static void RepeatBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 12; i++) + { + spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_8171E20(); + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]); + gSprites[spriteId].callback = RepeatBallOpenParticleAnimation_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 21; + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0], sprite->data[2])); + sprite->data[0] = (sprite->data[0] + 6) & 0xFF; + sprite->data[1]++; + sprite->data[2]++; + if (++sprite->data[3] == 51) + DestroyBallOpenAnimationParticle(sprite); +} + +static void MasterBallOpenParticleAnimation(u8 taskId) +{ + u8 i, j; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (j = 0; j < 2; j++) + { + for (i = 0; i < 8; i++) + { + spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_8171E20(); + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 32; + gSprites[spriteId].data[4] = 8; + + if (j == 0) + { + gSprites[spriteId].data[5] = 2; + gSprites[spriteId].data[6] = 1; + } + else + { + gSprites[spriteId].data[5] = 1; + gSprites[spriteId].data[6] = 2; + } + } + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +static void PremierBallOpenParticleAnimation(u8 taskId) +{ + u8 i; + u8 x, y, priority, subpriority, ballId; + u8 spriteId; + + ballId = gTasks[taskId].data[15]; + x = gTasks[taskId].data[1]; + y = gTasks[taskId].data[2]; + priority = gTasks[taskId].data[3]; + subpriority = gTasks[taskId].data[4]; + + for (i = 0; i < 8; i++) + { + spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority); + if (spriteId != MAX_SPRITES) + { + sub_8171E20(); + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]); + gSprites[spriteId].callback = PremierBallOpenParticleAnimation_Step1; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = i * 32; + } + } + + if (!gMain.inBattle) + gSprites[spriteId].data[7] = 1; + + DestroyTask(taskId); +} + +static void PremierBallOpenParticleAnimation_Step1(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0] & 0x3F, sprite->data[2])); + sprite->data[0] = (sprite->data[0] + 10) & 0xFF; + sprite->data[1]++; + sprite->data[2]++; + if (++sprite->data[3] == 51) + DestroyBallOpenAnimationParticle(sprite); +} + +static void DestroyBallOpenAnimationParticle(struct Sprite *sprite) +{ + int i, j; + int temp; + + if (!gMain.inBattle) + { + temp = sprite->data[7]; // temp var needed to match + if (temp == 1) + DestroySpriteAndFreeResources(sprite); + else + DestroySprite(sprite); + } + else + { + gBattleSpritesDataPtr->animationData->field_A--; + if (gBattleSpritesDataPtr->animationData->field_A == 0) + { + for (i = 0; i < 12; i++) + { + if (FuncIsActiveTask(gBallOpenParticleAnimationFuncs[i]) == TRUE) + break; + } + + if (i == 12) + { + for (j = 0; j < 12; j++) + { + FreeSpriteTilesByTag(gBallOpenParticleSpritesheets[j].tag); + FreeSpritePaletteByTag(gBallOpenParticlePalettes[j].tag); + } + } + + DestroySprite(sprite); + } + else + { + DestroySprite(sprite); + } + } +} + +u8 LaunchBallFadeMonTask(u8 unfadeLater, u8 battler, u32 selectedPalettes, u8 ballId) +{ + u8 taskId; + + taskId = CreateTask(sub_8172AB0, 5); + gTasks[taskId].data[15] = ballId; + gTasks[taskId].data[3] = battler; + gTasks[taskId].data[10] = selectedPalettes; + gTasks[taskId].data[11] = selectedPalettes >> 16; + + if (!unfadeLater) + { + BlendPalette(battler * 16 + 0x100, 16, 0, gUnknown_085E5310[ballId]); + gTasks[taskId].data[1] = 1; + } + else + { + BlendPalette(battler * 16 + 0x100, 16, 16, gUnknown_085E5310[ballId]); + gTasks[taskId].data[0] = 16; + gTasks[taskId].data[1] = -1; + gTasks[taskId].func = sub_8172B40; + } + + BeginNormalPaletteFade(selectedPalettes, 0, 0, 16, RGB(31, 31, 31)); + return taskId; +} + +static void sub_8172AB0(u8 taskId) +{ + u8 ballId = gTasks[taskId].data[15]; + + if (gTasks[taskId].data[2] <= 16) + { + BlendPalette(gTasks[taskId].data[3] * 16 + 0x100, 16, gTasks[taskId].data[0], gUnknown_085E5310[ballId]); + gTasks[taskId].data[0] += gTasks[taskId].data[1]; + gTasks[taskId].data[2]++; + } + else if (!gPaletteFade.active) + { + u32 selectedPalettes = (u16)gTasks[taskId].data[10] | ((u16)gTasks[taskId].data[11] << 16); + BeginNormalPaletteFade(selectedPalettes, 0, 16, 0, RGB(31, 31, 31)); + DestroyTask(taskId); + } +} + +static void sub_8172B40(u8 taskId) +{ + if (!gPaletteFade.active) + { + u32 selectedPalettes = (u16)gTasks[taskId].data[10] | ((u16)gTasks[taskId].data[11] << 16); + BeginNormalPaletteFade(selectedPalettes, 0, 16, 0, RGB(31, 31, 31)); + gTasks[taskId].func = sub_8172B90; + } +} + +static void sub_8172B90(u8 taskId) +{ + u8 ballId = gTasks[taskId].data[15]; + + if (gTasks[taskId].data[2] <= 16) + { + BlendPalette(gTasks[taskId].data[3] * 16 + 0x100, 16, gTasks[taskId].data[0], gUnknown_085E5310[ballId]); + gTasks[taskId].data[0] += gTasks[taskId].data[1]; + gTasks[taskId].data[2]++; + } + else + { + DestroyTask(taskId); + } +} + +void sub_8172BF0(u8 taskId) +{ + u8 spriteId; + u32 x; + u32 done; + + done = FALSE; + spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + switch (gTasks[taskId].data[10]) + { + case 0: + gTasks[taskId].data[11] = gBattleAnimArgs[0]; + gTasks[taskId].data[0] += 0x500; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gSprites[spriteId].pos2.x += gTasks[taskId].data[0] >> 8; + else + gSprites[spriteId].pos2.x -= gTasks[taskId].data[0] >> 8; + + gTasks[taskId].data[0] &= 0xFF; + x = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x + 32; + if (x > 304) + gTasks[taskId].data[10]++; + break; + case 1: + LoadBattleMonGfxAndAnimate(gBattleAnimAttacker, gTasks[taskId].data[11], spriteId); + gTasks[taskId].data[10]++; + break; + case 2: + gTasks[taskId].data[0] += 0x500; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gSprites[spriteId].pos2.x -= gTasks[taskId].data[0] >> 8; + else + gSprites[spriteId].pos2.x += gTasks[taskId].data[0] >> 8; + + gTasks[taskId].data[0] &= 0xFF; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + if (gSprites[spriteId].pos2.x <= 0) + { + gSprites[spriteId].pos2.x = 0; + // done = FALSE; // fakematching--can't get the tail merge correct + goto DONE; + } + } + else + { + if (gSprites[spriteId].pos2.x >= 0) + { + gSprites[spriteId].pos2.x = 0; + done = TRUE; + } + } + + if (done) + { + DONE: + DestroyAnimVisualTask(taskId); + } + break; + } +} + +void sub_8172D98(u8 taskId) +{ + u8 spriteId; + + switch (gTasks[taskId].data[15]) + { + case 0: + if (sub_80A8364(gBattleAnimAttacker) == B_POSITION_OPPONENT_LEFT) + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); + else + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0)); + gTasks[taskId].data[15]++; + break; + case 1: + if (gTasks[taskId].data[1]++ > 1) + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - gTasks[taskId].data[0], gTasks[taskId].data[0])); + if (gTasks[taskId].data[0] == 16) + gTasks[taskId].data[15]++; + } + break; + case 2: + spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + RequestDma3Fill(0, (void *)OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * TILE_SIZE_4BPP, 0x800, 1); + ClearBehindSubstituteBit(gBattleAnimAttacker); + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_8172E9C(u8 taskId) +{ + gBattleAnimArgs[7] = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].behindSubstitute; + DestroyAnimVisualTask(taskId); +} + +void sub_8172ED0(u8 taskId) +{ + gBattleAnimTarget = gEffectBattler; + DestroyAnimVisualTask(taskId); +} + +void sub_8172EF0(u8 battler, struct Pokemon *mon) +{ + int isShiny; + u32 otId, personality; + u32 shinyValue; + u8 taskId1, taskId2; + + isShiny = 0; + gBattleSpritesDataPtr->healthBoxesData[battler].flag_x80 = 1; + otId = GetMonData(mon, MON_DATA_OT_ID); + personality = GetMonData(mon, MON_DATA_PERSONALITY); + + if (IsBattlerSpriteVisible(battler)) + { + shinyValue = HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality); + if (shinyValue < 8) + isShiny = TRUE; + + if (isShiny) + { + if (GetSpriteTileStartByTag(0x27F9) == 0xFFFF) + { + LoadCompressedObjectPicUsingHeap(&gBattleAnimPicTable[233]); + LoadCompressedObjectPaletteUsingHeap(&gBattleAnimPaletteTable[233]); + } + + taskId1 = CreateTask(sub_8172FEC, 10); + taskId2 = CreateTask(sub_8172FEC, 10); + gTasks[taskId1].data[0] = battler; + gTasks[taskId2].data[0] = battler; + gTasks[taskId1].data[1] = 0; + gTasks[taskId2].data[1] = 1; + return; + } + } + + gBattleSpritesDataPtr->healthBoxesData[battler].field_1_x1 = 1; +} + +static void sub_8172FEC(u8 taskId) +{ + u8 battler; + u8 x, y; + u8 spriteId; + u16 counter; + s16 state; + u8 pan; + + if (gTasks[taskId].data[13] < 60) + { + gTasks[taskId].data[13]++; + return; + } + + if (gBattleSpritesDataPtr->animationData->field_A) + return; + + counter = gTasks[taskId].data[10]++; + if (counter & 3) + return; + + battler = gTasks[taskId].data[0]; + x = GetBattlerSpriteCoord(battler, 0); + y = GetBattlerSpriteCoord(battler, 1); + state = gTasks[taskId].data[11]; + if (state == 0) + { + spriteId = CreateSprite(&gUnknown_085CE388, x, y, 5); + } + else if (state >= 0 && gTasks[taskId].data[11] < 4) + { + spriteId = CreateSprite(&gUnknown_085CE3A0, x, y, 5); + gSprites[spriteId].oam.tileNum += 4; + } + else + { + spriteId = CreateSprite(&gUnknown_085CE3A0, x, y, 5); + gSprites[spriteId].oam.tileNum += 5; + } + + if (gTasks[taskId].data[1] == 0) + { + gSprites[spriteId].callback = sub_81731FC; + } + else + { + gSprites[spriteId].callback = sub_8173250; + gSprites[spriteId].pos2.x = -32; + gSprites[spriteId].pos2.y = 32; + gSprites[spriteId].invisible = 1; + if (gTasks[taskId].data[11] == 0) + { + if (GetBattlerSide(battler) == B_SIDE_PLAYER) + pan = 192; + else + pan = 63; + + PlaySE12WithPanning(SE_REAPOKE, pan); + } + } + + gSprites[spriteId].data[0] = taskId; + gTasks[taskId].data[11]++; + if (spriteId != MAX_SPRITES) + gTasks[taskId].data[12]++; + + if (gTasks[taskId].data[11] == 5) + gTasks[taskId].func = sub_81731B0; +} + +static void sub_81731B0(u8 taskId) +{ + u8 battler; + + if (gTasks[taskId].data[12] == 0) + { + if (gTasks[taskId].data[1] == 1) + { + battler = gTasks[taskId].data[0]; + gBattleSpritesDataPtr->healthBoxesData[battler].field_1_x1 = 1; + } + + DestroyTask(taskId); + } +} + +static void sub_81731FC(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[1], 24); + sprite->pos2.y = Cos(sprite->data[1], 24); + sprite->data[1] += 12; + if (sprite->data[1] > 0xFF) + { + gTasks[sprite->data[0]].data[12]--; + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } +} + +static void sub_8173250(struct Sprite *sprite) +{ + if (sprite->data[1] < 4) + { + sprite->data[1]++; + } + else + { + sprite->invisible = 0; + sprite->pos2.x += 5; + sprite->pos2.y -= 5; + if (sprite->pos2.x > 32) + { + gTasks[sprite->data[0]].data[12]--; + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } + } +} + +void sub_81732B0(u8 taskId) +{ + u8 paletteIndex; + + LoadCompressedObjectPicUsingHeap(&gBattleAnimPicTable[269]); + LoadCompressedObjectPaletteUsingHeap(&gBattleAnimPaletteTable[269]); + paletteIndex = IndexOfSpritePaletteTag(0x281D); // unused + DestroyAnimVisualTask(taskId); +} + +void sub_81732E4(u8 taskId) +{ + FreeSpriteTilesByTag(0x281D); + FreeSpritePaletteByTag(0x281D); + DestroyAnimVisualTask(taskId); +} + +static void sub_817330C(struct Sprite *sprite) +{ + InitAnimSpritePos(sprite, 0); + sprite->data[0] = 30; + sprite->data[2] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), 0) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), 1) + gBattleAnimArgs[3]; + sprite->data[5] = -32; + InitAnimArcTranslation(sprite); + gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].callback = sub_8039E84; + sprite->callback = sub_817339C; +} + +static void sub_817339C(struct Sprite *sprite) +{ + if (gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].animCmdIndex == 1) + sprite->callback = sub_81733D4; +} + +static void sub_81733D4(struct Sprite *sprite) +{ + if (TranslateAnimArc(sprite)) + { + sprite->data[0] = 0; + sprite->invisible = 1; + sprite->callback = sub_8173400; + } +} + +static void sub_8173400(struct Sprite *sprite) +{ + if (gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].animEnded) + { + if (++sprite->data[0] > 0) + { + StartSpriteAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], 0); + DestroyAnimSprite(sprite); + } + } +} + +void sub_817345C(u8 taskId) +{ + switch (gBattleAnimArgs[0]) + { + case 0: + gBattleAnimAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + gBattleAnimTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + break; + case 1: + gBattleAnimAttacker = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + gBattleAnimTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + break; + } + + DestroyAnimVisualTask(taskId); +} + +void AnimTask_GetTrappedMoveAnimId(u8 taskId) +{ + if (gBattleSpritesDataPtr->animationData->animArg == 83) + gBattleAnimArgs[0] = 1; + else if (gBattleSpritesDataPtr->animationData->animArg == 250) + gBattleAnimArgs[0] = 2; + else if (gBattleSpritesDataPtr->animationData->animArg == 128) + gBattleAnimArgs[0] = 3; + else if (gBattleSpritesDataPtr->animationData->animArg == 328) + gBattleAnimArgs[0] = 4; + else + gBattleAnimArgs[0] = 0; + + DestroyAnimVisualTask(taskId); +} + +void sub_817351C(u8 taskId) +{ + gBattleAnimAttacker = gBattleSpritesDataPtr->animationData->animArg; + gBattleAnimTarget = gBattleSpritesDataPtr->animationData->animArg >> 8; + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c new file mode 100644 index 000000000..3b1b49e34 --- /dev/null +++ b/src/battle_anim_effects_1.c @@ -0,0 +1,5522 @@ +#include "global.h" +#include "alloc.h" +#include "battle_anim.h" +#include "battle_interface.h" +#include "decompress.h" +#include "gpu_regs.h" +#include "graphics.h" +#include "main.h" +#include "math_util.h" +#include "palette.h" +#include "random.h" +#include "scanline_effect.h" +#include "sound.h" +#include "trig.h" +#include "util.h" +#include "constants/rgb.h" +#include "constants/songs.h" + +EWRAM_DATA s16 gUnknown_0203A0F8[4] = {0}; + +void AnimMovePowderParticle(struct Sprite *); +void sub_80FE8E0(struct Sprite *); +void sub_80FE930(struct Sprite *); +void sub_80FE988(struct Sprite *); +void sub_80FEAD8(struct Sprite *); +void sub_80FEB44(struct Sprite *); +void sub_80FED28(struct Sprite *); +void sub_80FEE78(struct Sprite *); +void sub_80FEF44(struct Sprite *); +void sub_80FEFFC(struct Sprite *); +void AnimLeechSeed(struct Sprite *); +void AnimTranslateLinearSingleSineWave(struct Sprite *); +void AnimMoveTwisterParticle(struct Sprite *); +void sub_80FF374(struct Sprite *); +void sub_80FF698(struct Sprite *); +void sub_80FF768(struct Sprite *); +void sub_80FF7EC(struct Sprite *); +void sub_80FF934(struct Sprite *); +void sub_80FFB18(struct Sprite *); +void sub_80FFBF4(struct Sprite *); +void sub_80FFC70(struct Sprite *); +void sub_80FFCB4(struct Sprite *); +void sub_80FFDBC(struct Sprite *); +void sub_8100640(struct Sprite *); +void sub_8100898(struct Sprite *); +void sub_81009F8(struct Sprite *); +void sub_8100A50(struct Sprite *); +void sub_8100A94(struct Sprite *); +void AnimCuttingSlice(struct Sprite *); +void sub_8100B88(struct Sprite *); +void sub_8100E1C(struct Sprite *); +void sub_8100EF0(struct Sprite *); +void sub_81010CC(struct Sprite *); +void sub_810130C(struct Sprite *); +void sub_810135C(struct Sprite *); +void sub_8101440(struct Sprite *); +void sub_81014F4(struct Sprite *); +void sub_81015AC(struct Sprite *); +void sub_8101898(struct Sprite *); +void sub_8101940(struct Sprite *); +void sub_8101B90(struct Sprite *); +void sub_8101F40(struct Sprite *); +void sub_8101FA8(struct Sprite *); +void sub_8101FF0(struct Sprite *); +void sub_81020D8(struct Sprite *); +void sub_810217C(struct Sprite *); +void sub_8102268(struct Sprite *); +void sub_810234C(struct Sprite *); +void sub_81024E0(struct Sprite *); +void sub_8102540(struct Sprite *); +void sub_8102844(struct Sprite *); +void sub_8102BCC(struct Sprite *); +void sub_8102CD4(struct Sprite *); +void sub_8102EB0(struct Sprite *); +void sub_8102FB8(struct Sprite *); +void sub_8103028(struct Sprite *); +void sub_8103164(struct Sprite *); +void sub_8103208(struct Sprite *); +void sub_8103284(struct Sprite *); +void sub_8103390(struct Sprite *); +static void AnimMovePowderParticleStep(struct Sprite *); +static void sub_80FE9E4(struct Sprite *); +static void sub_80FEB28(struct Sprite *); +static void sub_80FEBFC(struct Sprite *); +static void AnimLeechSeedStep(struct Sprite *); +static void AnimLeechSeedSprouts(struct Sprite *); +static void sub_80FED74(struct Sprite *); +static void sub_80FEECC(struct Sprite *); +static void sub_80FEF98(struct Sprite *); +static void sub_80FF044(struct Sprite *); +static void sub_80FF090(struct Sprite *); +static void AnimTranslateLinearSingleSineWaveStep(struct Sprite *); +static void AnimMoveTwisterParticleStep(struct Sprite *); +static void sub_80FF3B0(struct Sprite *); +static void sub_80FF3EC(struct Sprite *); +static void sub_80FF53C(u8); +static void sub_80FF5CC(u8); +static void sub_80FFD2C(struct Sprite *); +static void sub_80FF8DC(struct Sprite *); +static void sub_80FFE58(struct Sprite *); +static void sub_80FFEC4(struct Sprite *); +static void sub_80FFF7C(struct Sprite *); +static void sub_8100128(u8); +static s16 sub_8100504(struct Sprite *); +static void sub_8100524(struct Task *, u8); +static void sub_80CC408(struct Sprite *); +static void sub_810074C(struct Sprite *); +static void sub_81009A0(struct Sprite *); +static void AnimSliceStep(struct Sprite *); +static void sub_8100E80(struct Sprite *); +static void sub_8100FD4(struct Sprite *); +static void sub_8101138(struct Sprite *); +static void sub_8101298(struct Sprite *, int, int); +static void sub_81014A0(struct Sprite *); +static void sub_8101560(struct Sprite *); +static void sub_81015D4(struct Sprite *); +static void sub_8101684(struct Sprite *); +static void sub_81016B8(struct Sprite *); +static void sub_8101774(struct Sprite *); +static void sub_8101820(struct Sprite *); +static void sub_8101848(struct Sprite *); +static void sub_8101998(struct Sprite *); +static void sub_81019E8(struct Sprite *); +static void sub_8101A74(struct Sprite *); +static void sub_8101AC4(struct Sprite *); +static void sub_8101B84(struct Sprite *); +static void sub_8101AE8(struct Sprite *); +static void sub_8101BA0(struct Sprite *); +static void sub_8101D2C(u8); +static void sub_8101EEC(u8); +static void sub_8102044(struct Sprite *); +static void sub_810207C(struct Sprite *); +static void sub_810208C(struct Sprite *); +static void sub_810213C(struct Sprite *); +static void sub_81021CC(struct Sprite *); +static void sub_810237C(struct Sprite *); +static void sub_8102528(struct Sprite *); +static void sub_8102584(struct Sprite *); +static void sub_810296C(struct Sprite *); +static void sub_8102AE0(u8); +static void sub_8102B3C(struct Sprite *); +static void sub_8102D8C(s16, s16, s16 *, s16 *, s8); +static void sub_8102DE4(struct Sprite *); +static void sub_8102F40(struct Sprite *); +static void sub_81030B0(struct Sprite *); +static void sub_81031D0(struct Sprite *); +static void sub_8103250(struct Sprite *); +static void sub_8103300(struct Sprite *); +static void sub_8103320(struct Sprite *); +static void sub_81033F0(struct Sprite *); +static void sub_810342C(struct Sprite *); + +const union AnimCmd gUnknown_085920F0[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(2, 5), + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(6, 5), + ANIMCMD_FRAME(8, 5), + ANIMCMD_FRAME(10, 5), + ANIMCMD_FRAME(12, 5), + ANIMCMD_FRAME(14, 5), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gUnknown_08592114[] = +{ + gUnknown_085920F0, +}; + +const struct SpriteTemplate gSleepPowderParticleSpriteTemplate = +{ + .tileTag = ANIM_TAG_SLEEP_POWDER, + .paletteTag = ANIM_TAG_SLEEP_POWDER, + .oam = &gUnknown_08524944, + .anims = gUnknown_08592114, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMovePowderParticle, +}; + +const struct SpriteTemplate gStunSporeParticleSpriteTemplate = +{ + .tileTag = ANIM_TAG_STUN_SPORE, + .paletteTag = ANIM_TAG_STUN_SPORE, + .oam = &gUnknown_08524944, + .anims = gUnknown_08592114, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMovePowderParticle, +}; + +const struct SpriteTemplate gPoisonPowderParticleSpriteTemplate = +{ + .tileTag = ANIM_TAG_POISON_POWDER, + .paletteTag = ANIM_TAG_POISON_POWDER, + .oam = &gUnknown_08524944, + .anims = gUnknown_08592114, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMovePowderParticle, +}; + +const union AnimCmd gUnknown_08592160[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592168[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592170[] = +{ + ANIMCMD_FRAME(2, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592178[] = +{ + ANIMCMD_FRAME(3, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592180[] = +{ + ANIMCMD_FRAME(4, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592188[] = +{ + ANIMCMD_FRAME(5, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592190[] = +{ + ANIMCMD_FRAME(6, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592198[] = +{ + ANIMCMD_FRAME(7, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_085921A0[] = +{ + ANIMCMD_FRAME(8, 1), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_085921A8[] = +{ + gUnknown_08592160, + gUnknown_08592168, + gUnknown_08592170, + gUnknown_08592178, + gUnknown_08592180, + gUnknown_08592188, + gUnknown_08592190, +}; + +const union AnimCmd *const gUnknown_085921C4[] = +{ + gUnknown_08592198, +}; + +const union AnimCmd *const gUnknown_085921C8[] = +{ + gUnknown_085921A0, +}; + +const union AffineAnimCmd gUnknown_085921CC[] = { + AFFINEANIMCMD_FRAME(-5, -5, 0, 1), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd *const gUnknown_085921DC[] = { + gUnknown_085921CC, +}; + +const struct SpriteTemplate gUnknown_085921E0 = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gUnknown_08524A8C, + .anims = gUnknown_085921C8, + .images = NULL, + .affineAnims = gUnknown_085921DC, + .callback = sub_80FE8E0, +}; + +const struct SpriteTemplate gUnknown_085921F8 = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gUnknown_08524904, + .anims = gUnknown_085921A8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80FE930, +}; + +const struct SpriteTemplate gUnknown_08592210 = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gUnknown_08524904, + .anims = gUnknown_085921C4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80FE988, +}; + +const union AffineAnimCmd gUnknown_08592228[] = { + AFFINEANIMCMD_FRAME(320, 320, 0, 0), + AFFINEANIMCMD_FRAME(-14, -14, 0, 1), + AFFINEANIMCMD_JUMP(1), +}; + +const union AffineAnimCmd *const gUnknown_08592240[] = { + gUnknown_08592228, +}; + +const struct SpriteTemplate gUnknown_08592244 = +{ + .tileTag = ANIM_TAG_GRAY_ORB, + .paletteTag = ANIM_TAG_GRAY_ORB, + .oam = &gUnknown_085249C4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08592240, + .callback = sub_80FE8E0, +}; + +const union AffineAnimCmd gUnknown_0859225C[] = { + AFFINEANIMCMD_FRAME(-5, -5, 0, 1), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd *const gUnknown_0859226C[] = { + gUnknown_0859225C, +}; + +const struct SpriteTemplate gUnknown_08592270 = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gUnknown_08524A8C, + .anims = gUnknown_085921C8, + .images = NULL, + .affineAnims = gUnknown_0859226C, + .callback = sub_80FEAD8, +}; + +const struct SpriteTemplate gUnknown_08592288 = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gUnknown_08524904, + .anims = gUnknown_085921A8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80FEB44, +}; + +const union AnimCmd gUnknown_085922A0[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_085922A8[] = +{ + ANIMCMD_FRAME(4, 7), + ANIMCMD_FRAME(8, 7), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gUnknown_085922B4[] = +{ + gUnknown_085922A0, + gUnknown_085922A8, +}; + +const struct SpriteTemplate gLeechSeedSpriteTemplate = +{ + .tileTag = ANIM_TAG_SEED, + .paletteTag = ANIM_TAG_SEED, + .oam = &gUnknown_0852490C, + .anims = gUnknown_085922B4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimLeechSeed, +}; + +const union AnimCmd gUnknown_085922D4[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_085922DC[] = +{ + ANIMCMD_FRAME(4, 7), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_085922E4[] = +{ + gUnknown_085922D4, + gUnknown_085922DC, +}; + +const struct SpriteTemplate gUnknown_085922EC = +{ + .tileTag = ANIM_TAG_SPORE, + .paletteTag = ANIM_TAG_SPORE, + .oam = &gUnknown_0852490C, + .anims = gUnknown_085922E4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80FED28, +}; + +const union AnimCmd gUnknown_08592304[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_0859230C[] = +{ + ANIMCMD_FRAME(4, 1), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08592314[] = +{ + gUnknown_08592304, +}; + +const union AnimCmd *const gUnknown_08592318[] = +{ + gUnknown_0859230C, +}; + +const struct SpriteTemplate gUnknown_0859231C = +{ + .tileTag = ANIM_TAG_FLOWER, + .paletteTag = ANIM_TAG_FLOWER, + .oam = &gUnknown_0852490C, + .anims = gUnknown_08592314, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80FEE78, +}; + +const struct SpriteTemplate gUnknown_08592334 = +{ + .tileTag = ANIM_TAG_FLOWER, + .paletteTag = ANIM_TAG_FLOWER, + .oam = &gUnknown_08524904, + .anims = gUnknown_08592318, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80FEF44, +}; + +const union AnimCmd gUnknown_0859234C[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(8, 5), + ANIMCMD_FRAME(12, 5), + ANIMCMD_FRAME(16, 5), + ANIMCMD_FRAME(20, 5), + ANIMCMD_FRAME(16, 5), + ANIMCMD_FRAME(12, 5), + ANIMCMD_FRAME(8, 5), + ANIMCMD_FRAME(4, 5), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gUnknown_08592378[] = +{ + ANIMCMD_FRAME(24, 5), + ANIMCMD_FRAME(28, 5), + ANIMCMD_FRAME(32, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08592388[] = +{ + gUnknown_0859234C, + gUnknown_08592378, +}; + +const struct SpriteTemplate gUnknown_08592390 = +{ + .tileTag = ANIM_TAG_LEAF, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gUnknown_0852490C, + .anims = gUnknown_08592388, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80FEFFC, +}; + +const struct SpriteTemplate gUnknown_085923A8 = +{ + .tileTag = ANIM_TAG_LEAF, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gUnknown_0852490C, + .anims = gUnknown_08592388, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMoveTwisterParticle, +}; + +const union AnimCmd gUnknown_085923C0[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(0, 3, .hFlip = TRUE), + ANIMCMD_FRAME(0, 3, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(0, 3, .vFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gUnknown_085923D4[] = +{ + gUnknown_085923C0, +}; + +const struct SpriteTemplate gUnknown_085923D8 = +{ + .tileTag = ANIM_TAG_RAZOR_LEAF, + .paletteTag = ANIM_TAG_RAZOR_LEAF, + .oam = &gUnknown_08524934, + .anims = gUnknown_085923D4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimTranslateLinearSingleSineWave, +}; + +const union AffineAnimCmd gUnknown_085923F0[] = { + AFFINEANIMCMD_FRAME(0, 0, 0, 1), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd *const gUnknown_08592400[] = { + gUnknown_085923F0, +}; + +const struct SpriteTemplate gSwiftStarSpriteTemplate = +{ + .tileTag = ANIM_TAG_YELLOW_STAR, + .paletteTag = ANIM_TAG_YELLOW_STAR, + .oam = &gUnknown_08524974, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08592400, + .callback = AnimTranslateLinearSingleSineWave, +}; + +const union AnimCmd gUnknown_0859241C[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(64, 4), + ANIMCMD_FRAME(96, 4), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592430[] = +{ + ANIMCMD_FRAME(0, 4, .hFlip = TRUE), + ANIMCMD_FRAME(32, 4, .hFlip = TRUE), + ANIMCMD_FRAME(64, 4, .hFlip = TRUE), + ANIMCMD_FRAME(96, 4, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08592444[] = +{ + gUnknown_0859241C, + gUnknown_08592430, +}; + +const union AffineAnimCmd gUnknown_0859244C[] = { + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_FRAME(-11, 0, 0, 6), + AFFINEANIMCMD_FRAME(11, 0, 0, 6), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_0859246C[] = { + AFFINEANIMCMD_FRAME(-256, 256, 0, 0), + AFFINEANIMCMD_FRAME(11, 0, 0, 6), + AFFINEANIMCMD_FRAME(-11, 0, 0, 6), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gUnknown_0859248C[] = { + gUnknown_0859244C, + gUnknown_0859246C, +}; + +const struct SpriteTemplate gUnknown_08592494 = +{ + .tileTag = ANIM_TAG_TENDRILS, + .paletteTag = ANIM_TAG_TENDRILS, + .oam = &gUnknown_0852499C, + .anims = gUnknown_08592444, + .images = NULL, + .affineAnims = gUnknown_0859248C, + .callback = sub_80FF374, +}; + +const union AffineAnimCmd gUnknown_085924AC[] = { + AFFINEANIMCMD_FRAME(0, 0, 0, 0), + AFFINEANIMCMD_FRAME(48, 48, 0, 14), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_085924C4[] = { + AFFINEANIMCMD_FRAME(-16, -16, 0, 1), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd *const gUnknown_085924D4[] = { + gUnknown_085924AC, + gUnknown_085924C4, +}; + +const struct SpriteTemplate gUnknown_085924DC = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gUnknown_085249CC, + .anims = gUnknown_085921C8, + .images = NULL, + .affineAnims = gUnknown_085924D4, + .callback = sub_80FF698, +}; + +const union AnimCmd gUnknown_085924F4[] = +{ + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(16, 7), + ANIMCMD_FRAME(32, 7), + ANIMCMD_FRAME(48, 7), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592508[] = +{ + ANIMCMD_FRAME(0, 7, .hFlip = TRUE), + ANIMCMD_FRAME(16, 7, .hFlip = TRUE), + ANIMCMD_FRAME(32, 7, .hFlip = TRUE), + ANIMCMD_FRAME(48, 7, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_0859251C[] = +{ + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(16, 7), + ANIMCMD_FRAME(32, 7), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_0859252C[] = +{ + ANIMCMD_FRAME(0, 7, .hFlip = TRUE), + ANIMCMD_FRAME(16, 7, .hFlip = TRUE), + ANIMCMD_FRAME(32, 7, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_0859253C[] = +{ + gUnknown_085924F4, + gUnknown_08592508, + gUnknown_0859251C, + gUnknown_0859252C, +}; + +const struct SpriteTemplate gUnknown_0859254C = +{ + .tileTag = ANIM_TAG_ROOTS, + .paletteTag = ANIM_TAG_ROOTS, + .oam = &gUnknown_08524914, + .anims = gUnknown_0859253C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80FF768, +}; + +const struct SpriteTemplate gUnknown_08592564 = +{ + .tileTag = ANIM_TAG_ROOTS, + .paletteTag = ANIM_TAG_ROOTS, + .oam = &gUnknown_08524914, + .anims = gUnknown_0859253C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80FF7EC, +}; + +const union AnimCmd gUnknown_0859257C[] = +{ + ANIMCMD_FRAME(3, 3), + ANIMCMD_FRAME(0, 5), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gUnknown_08592588[] = +{ + gUnknown_0859257C, +}; + +const struct SpriteTemplate gUnknown_0859258C = +{ + .tileTag = ANIM_TAG_ORBS, + .paletteTag = ANIM_TAG_ORBS, + .oam = &gUnknown_08524904, + .anims = gUnknown_08592588, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80FF934, +}; + +const union AnimCmd gUnknown_085925A4[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_085925AC[] = +{ + gUnknown_085925A4, +}; + +const union AffineAnimCmd gUnknown_085925B0[] = { + AFFINEANIMCMD_FRAME(0, 0, -4, 10), + AFFINEANIMCMD_FRAME(0, 0, 4, 20), + AFFINEANIMCMD_FRAME(0, 0, -4, 10), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_085925D0[] = { + AFFINEANIMCMD_FRAME(0, 0, -1, 2), + AFFINEANIMCMD_FRAME(0, 0, 1, 4), + AFFINEANIMCMD_FRAME(0, 0, -1, 4), + AFFINEANIMCMD_FRAME(0, 0, 1, 4), + AFFINEANIMCMD_FRAME(0, 0, -1, 4), + AFFINEANIMCMD_FRAME(0, 0, 1, 2), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gUnknown_08592608[] = { + gUnknown_085925B0, + gUnknown_085925D0, +}; + +const struct SpriteTemplate gUnknown_08592610 = +{ + .tileTag = ANIM_TAG_ITEM_BAG, + .paletteTag = ANIM_TAG_ITEM_BAG, + .oam = &gUnknown_08524974, + .anims = gUnknown_085925AC, + .images = NULL, + .affineAnims = gUnknown_08592608, + .callback = sub_80FFB18, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_8592628 = +{ + .tileTag = ANIM_TAG_ITEM_BAG, + .paletteTag = ANIM_TAG_ITEM_BAG, + .oam = &gUnknown_08524974, + .anims = gUnknown_085925AC, + .images = NULL, + .affineAnims = gUnknown_08592608, + .callback = sub_80FFBF4, +}; + +const union AnimCmd gUnknown_08592640[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(8, 4), + ANIMCMD_FRAME(12, 4), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08592654[] = +{ + gUnknown_08592640, +}; + +const struct SpriteTemplate gUnknown_08592658 = +{ + .tileTag = ANIM_TAG_GREEN_SPARKLE, + .paletteTag = ANIM_TAG_GREEN_SPARKLE, + .oam = &gUnknown_0852490C, + .anims = gUnknown_08592654, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80FFC70, +}; + +const struct SpriteTemplate gUnknown_08592670 = +{ + .tileTag = ANIM_TAG_ITEM_BAG, + .paletteTag = ANIM_TAG_ITEM_BAG, + .oam = &gUnknown_08524974, + .anims = gUnknown_085925AC, + .images = NULL, + .affineAnims = gUnknown_08592608, + .callback = sub_80FFCB4, +}; + +const union AffineAnimCmd gUnknown_08592688[] = { + AFFINEANIMCMD_FRAME(0, 0, 0, 3), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_08592698[] = { + AFFINEANIMCMD_FRAME(0, -10, 0, 3), + AFFINEANIMCMD_FRAME(0, -6, 0, 3), + AFFINEANIMCMD_FRAME(0, -2, 0, 3), + AFFINEANIMCMD_FRAME(0, 0, 0, 3), + AFFINEANIMCMD_FRAME(0, 2, 0, 3), + AFFINEANIMCMD_FRAME(0, 6, 0, 3), + AFFINEANIMCMD_FRAME(0, 10, 0, 3), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gUnknown_085926D8[] = { + gUnknown_08592688, + gUnknown_08592698, + gUnknown_085925B0, + gUnknown_085925D0, +}; + +const struct SpriteTemplate gUnknown_085926E8 = +{ + .tileTag = ANIM_TAG_ITEM_BAG, + .paletteTag = ANIM_TAG_ITEM_BAG, + .oam = &gUnknown_08524974, + .anims = gUnknown_085925AC, + .images = NULL, + .affineAnims = gUnknown_085926D8, + .callback = sub_80FFDBC, +}; + +const s8 gUnknown_08592700[][3] = +{ + {5, 24, 1}, + {0, 4, 0}, + {8, 16, -1}, + {0, 2, 0}, + {8, 16, 1}, + {0, 2, 0}, + {8, 16, 1}, + {0, 2, 0}, + {8, 16, 1}, + {0, 16, 0}, + {0, 0, 127}, +}; + +const union AnimCmd gUnknown_08592724[] = +{ + ANIMCMD_FRAME(28, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_0859272C[] = +{ + ANIMCMD_FRAME(32, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592734[] = +{ + ANIMCMD_FRAME(20, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_0859273C[] = +{ + ANIMCMD_FRAME(28, 1, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592744[] = +{ + ANIMCMD_FRAME(16, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_0859274C[] = +{ + ANIMCMD_FRAME(16, 1, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592754[] = +{ + ANIMCMD_FRAME(28, 1), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_0859275C[] = +{ + gUnknown_08592724, + gUnknown_0859272C, + gUnknown_08592734, + gUnknown_0859273C, + gUnknown_08592744, + gUnknown_0859274C, + gUnknown_08592754, +}; + +const struct SpriteTemplate gUnknown_08592778 = +{ + .tileTag = ANIM_TAG_LEAF, + .paletteTag = ANIM_TAG_LEAF, + .oam = &gUnknown_0852490C, + .anims = gUnknown_0859275C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +const union AffineAnimCmd gUnknown_08592790[] = { + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_FRAME(0, 0, 4, 1), + AFFINEANIMCMD_JUMP(1), +}; + +const union AffineAnimCmd *const gUnknown_085927A8[] = { + gUnknown_08592790, +}; + +const struct SpriteTemplate gUnknown_085927AC = +{ + .tileTag = ANIM_TAG_FLOWER, + .paletteTag = ANIM_TAG_FLOWER, + .oam = &gUnknown_08524904, + .anims = gUnknown_08592318, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8100640, +}; + +const struct SpriteTemplate gUnknown_085927C4 = +{ + .tileTag = ANIM_TAG_FLOWER, + .paletteTag = ANIM_TAG_FLOWER, + .oam = &gUnknown_0852496C, + .anims = gUnknown_08592314, + .images = NULL, + .affineAnims = gUnknown_085927A8, + .callback = sub_8100640, +}; + +const union AffineAnimCmd gUnknown_085927DC[] = { + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_FRAME(0, 0, -10, 1), + AFFINEANIMCMD_JUMP(1), +}; + +const union AffineAnimCmd gUnknown_085927F4[] = { + AFFINEANIMCMD_FRAME(192, 192, 0, 0), + AFFINEANIMCMD_FRAME(0, 0, -12, 1), + AFFINEANIMCMD_JUMP(1), +}; + +const union AffineAnimCmd gUnknown_0859280C[] = { + AFFINEANIMCMD_FRAME(143, 143, 0, 0), + AFFINEANIMCMD_FRAME(0, 0, -15, 1), + AFFINEANIMCMD_JUMP(1), +}; + +const union AffineAnimCmd *const gUnknown_08592824[] = { + gUnknown_085927DC, +}; + +const union AffineAnimCmd *const gUnknown_08592828[] = { + gUnknown_085927F4, +}; + +const union AffineAnimCmd *const gUnknown_0859282C[] = { + gUnknown_0859280C, +}; + +const struct SpriteTemplate gUnknown_08592830 = +{ + .tileTag = ANIM_TAG_SPARKLE_6, + .paletteTag = ANIM_TAG_SPARKLE_6, + .oam = &gUnknown_0852496C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08592824, + .callback = sub_8100640, +}; + +const struct SpriteTemplate gUnknown_08592848 = +{ + .tileTag = ANIM_TAG_SPARKLE_6, + .paletteTag = ANIM_TAG_SPARKLE_6, + .oam = &gUnknown_0852496C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08592828, + .callback = sub_8100640, +}; + +const struct SpriteTemplate gUnknown_08592860 = +{ + .tileTag = ANIM_TAG_SPARKLE_6, + .paletteTag = ANIM_TAG_SPARKLE_6, + .oam = &gUnknown_0852496C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_0859282C, + .callback = sub_8100640, +}; + +const u16 gMagicalLeafBlendColors[] = +{ + RGB(31, 0, 0), + RGB(31, 19, 0), + RGB(31, 31, 0), + RGB(0, 31, 0), + RGB(5, 14, 31), + RGB(22, 10, 31), + RGB(22, 21, 31), +}; + +const struct SpriteTemplate gUnknown_08592888 = +{ + .tileTag = ANIM_TAG_GREEN_SPIKE, + .paletteTag = ANIM_TAG_GREEN_SPIKE, + .oam = &gUnknown_0852496C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8100898, +}; + +const union AnimCmd gUnknown_085928A0[] = +{ + ANIMCMD_FRAME(64, 3), + ANIMCMD_FRAME(80, 3), + ANIMCMD_FRAME(96, 3), + ANIMCMD_FRAME(112, 6), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_085928B4[] = +{ + ANIMCMD_FRAME(64, 3, .hFlip = TRUE), + ANIMCMD_FRAME(80, 3, .hFlip = TRUE), + ANIMCMD_FRAME(96, 3, .hFlip = TRUE), + ANIMCMD_FRAME(112, 6, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_085928C8[] = +{ + gUnknown_085928A0, + gUnknown_085928B4, +}; + +const struct SpriteTemplate gUnknown_085928D0 = +{ + .tileTag = ANIM_TAG_SLAM_HIT, + .paletteTag = ANIM_TAG_SLAM_HIT, + .oam = &gUnknown_08524914, + .anims = gUnknown_085928C8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8100A50, +}; + +const struct SpriteTemplate gUnknown_085928E8 = +{ + .tileTag = ANIM_TAG_WHIP_HIT, + .paletteTag = ANIM_TAG_WHIP_HIT, + .oam = &gUnknown_08524914, + .anims = gUnknown_085928C8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8100A50, +}; + +const union AnimCmd gUnknown_08592900[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(48, 4), + ANIMCMD_FRAME(64, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08592918[] = +{ + gUnknown_08592900, +}; + +const struct SpriteTemplate gUnknown_0859291C = +{ + .tileTag = ANIM_TAG_UNUSED_HIT, + .paletteTag = ANIM_TAG_UNUSED_HIT, + .oam = &gUnknown_08524914, + .anims = gUnknown_08592918, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_81009F8, +}; + +const struct SpriteTemplate gUnknown_08592934 = +{ + .tileTag = ANIM_TAG_UNUSED_HIT_2, + .paletteTag = ANIM_TAG_UNUSED_HIT_2, + .oam = &gUnknown_08524914, + .anims = gUnknown_08592918, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_81009F8, +}; + +const union AffineAnimCmd gUnknown_0859294C[] = { + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_0859295C[] = { + AFFINEANIMCMD_FRAME(256, 256, 32, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_0859296C[] = { + AFFINEANIMCMD_FRAME(256, 256, 64, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_0859297C[] = { + AFFINEANIMCMD_FRAME(256, 256, 96, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_0859298C[] = { + AFFINEANIMCMD_FRAME(256, 256, -128, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_0859299C[] = { + AFFINEANIMCMD_FRAME(256, 256, -96, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_085929AC[] = { + AFFINEANIMCMD_FRAME(256, 256, -64, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_085929BC[] = { + AFFINEANIMCMD_FRAME(256, 256, -32, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gUnknown_085929CC[] = { + gUnknown_0859294C, + gUnknown_0859295C, + gUnknown_0859296C, + gUnknown_0859297C, + gUnknown_0859298C, + gUnknown_0859299C, + gUnknown_085929AC, + gUnknown_085929BC, +}; + +const struct SpriteTemplate gUnknown_085929EC = +{ + .tileTag = ANIM_TAG_HANDS_AND_FEET, + .paletteTag = ANIM_TAG_HANDS_AND_FEET, + .oam = &gUnknown_08524974, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_085929CC, + .callback = sub_8100A94, +}; + +const union AnimCmd gUnknown_08592A04[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(16, 5), + ANIMCMD_FRAME(32, 5), + ANIMCMD_FRAME(48, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08592A18[] = +{ + gUnknown_08592A04, +}; + +const struct SpriteTemplate gCuttingSliceSpriteTemplate = +{ + .tileTag = ANIM_TAG_CUT, + .paletteTag = ANIM_TAG_CUT, + .oam = &gUnknown_08524A34, + .anims = gUnknown_08592A18, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimCuttingSlice, +}; + +const struct SpriteTemplate gUnknown_08592A34 = +{ + .tileTag = ANIM_TAG_CUT, + .paletteTag = ANIM_TAG_CUT, + .oam = &gUnknown_08524A34, + .anims = gUnknown_08592A18, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8100B88, +}; + +const union AnimCmd gUnknown_08592A4C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592A54[] = +{ + ANIMCMD_FRAME(4, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592A5C[] = +{ + ANIMCMD_FRAME(8, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592A64[] = +{ + ANIMCMD_FRAME(12, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592A6C[] = +{ + ANIMCMD_FRAME(16, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592A74[] = +{ + ANIMCMD_FRAME(20, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592A7C[] = +{ + ANIMCMD_FRAME(0, 1, .vFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592A84[] = +{ + ANIMCMD_FRAME(4, 1, .vFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592A8C[] = +{ + ANIMCMD_FRAME(8, 1, .vFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592A94[] = +{ + ANIMCMD_FRAME(12, 1, .vFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08592A9C[] = +{ + gUnknown_08592A4C, + gUnknown_08592A54, + gUnknown_08592A5C, + gUnknown_08592A64, + gUnknown_08592A6C, + gUnknown_08592A74, + gUnknown_08592A7C, + gUnknown_08592A84, + gUnknown_08592A8C, + gUnknown_08592A94, +}; + +const struct SpriteTemplate gUnknown_08592AC4 = +{ + .tileTag = ANIM_TAG_MUSIC_NOTES, + .paletteTag = ANIM_TAG_MUSIC_NOTES, + .oam = &gUnknown_0852490C, + .anims = gUnknown_08592A9C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8100E1C, +}; + +const struct SpriteTemplate gUnknown_08592ADC = +{ + .tileTag = ANIM_TAG_PROTECT, + .paletteTag = ANIM_TAG_PROTECT, + .oam = &gUnknown_08524A3C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8100EF0, +}; + +const union AffineAnimCmd gUnknown_08592AF4[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_08592B04[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 12), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6), + AFFINEANIMCMD_FRAME(0x0, 0x0, -2, 24), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6), + AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 12), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd *const gUnknown_08592B34[] = +{ + gUnknown_08592AF4, + gUnknown_08592B04, +}; + +const struct SpriteTemplate gUnknown_08592B3C = +{ + .tileTag = ANIM_TAG_MILK_BOTTLE, + .paletteTag = ANIM_TAG_MILK_BOTTLE, + .oam = &gUnknown_08524A94, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08592B34, + .callback = sub_81010CC, +}; + +const union AnimCmd gUnknown_08592B54[] = +{ + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(16, 7), + ANIMCMD_FRAME(32, 7), + ANIMCMD_FRAME(48, 7), + ANIMCMD_FRAME(64, 7), + ANIMCMD_FRAME(80, 7), + ANIMCMD_FRAME(96, 7), + ANIMCMD_FRAME(112, 7), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gUnknown_08592B78[] = +{ + gUnknown_08592B54, +}; + +const struct SpriteTemplate gUnknown_08592B7C = +{ + .tileTag = ANIM_TAG_SPARKLE_2, + .paletteTag = ANIM_TAG_SPARKLE_2, + .oam = &gUnknown_08524914, + .anims = gUnknown_08592B78, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_810130C, +}; + +const struct SpriteTemplate gUnknown_08592B94 = +{ + .tileTag = ANIM_TAG_SPARKLE_2, + .paletteTag = ANIM_TAG_SPARKLE_2, + .oam = &gUnknown_08524914, + .anims = gUnknown_08592B78, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_810135C, +}; + +const union AnimCmd gUnknown_08592BAC[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(4, 10), + ANIMCMD_FRAME(8, 10), + ANIMCMD_FRAME(12, 10), + ANIMCMD_FRAME(16, 26), + ANIMCMD_FRAME(16, 5), + ANIMCMD_FRAME(20, 5), + ANIMCMD_FRAME(24, 15), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592BD0[] = +{ + ANIMCMD_FRAME(0, 10, .hFlip = TRUE), + ANIMCMD_FRAME(4, 10, .hFlip = TRUE), + ANIMCMD_FRAME(8, 10, .hFlip = TRUE), + ANIMCMD_FRAME(12, 10, .hFlip = TRUE), + ANIMCMD_FRAME(16, 26, .hFlip = TRUE), + ANIMCMD_FRAME(16, 5, .hFlip = TRUE), + ANIMCMD_FRAME(20, 5, .hFlip = TRUE), + ANIMCMD_FRAME(24, 15, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08592BF4[] = +{ + gUnknown_08592BAC, + gUnknown_08592BD0, +}; + +const struct SpriteTemplate gUnknown_08592BFC = +{ + .tileTag = ANIM_TAG_UNUSED_BUBBLE_BURST, + .paletteTag = ANIM_TAG_UNUSED_BUBBLE_BURST, + .oam = &gUnknown_0852490C, + .anims = gUnknown_08592BF4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8101440, +}; + +const union AnimCmd gUnknown_08592C14[] = +{ + ANIMCMD_FRAME(0, 40), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08592C1C[] = +{ + gUnknown_08592C14, +}; + +const union AffineAnimCmd gUnknown_08592C20[] = +{ + AFFINEANIMCMD_FRAME(0x14, 0x14, -30, 0), + AFFINEANIMCMD_FRAME(0x8, 0x8, 1, 24), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_08592C20_2[] = +{ + AFFINEANIMCMD_LOOP(0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24), + AFFINEANIMCMD_LOOP(10), +}; + +const union AffineAnimCmd gUnknown_08592C50[] = +{ + AFFINEANIMCMD_FRAME(0x14, 0x14, 30, 0), + AFFINEANIMCMD_FRAME(0x8, 0x8, -1, 24), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_08592C50_2[] = +{ + AFFINEANIMCMD_LOOP(0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 24), + AFFINEANIMCMD_LOOP(10), +}; + +const union AffineAnimCmd *const gUnknown_08592C80[] = +{ + gUnknown_08592C20, + gUnknown_08592C50, +}; + +const struct SpriteTemplate gUnknown_08592C88 = +{ + .tileTag = ANIM_TAG_LETTER_Z, + .paletteTag = ANIM_TAG_LETTER_Z, + .oam = &gUnknown_08524974, + .anims = gUnknown_08592C1C, + .images = NULL, + .affineAnims = gUnknown_08592C80, + .callback = sub_81014F4, +}; + +const struct SpriteTemplate gUnknown_08592CA0 = +{ + .tileTag = ANIM_TAG_LOCK_ON, + .paletteTag = ANIM_TAG_LOCK_ON, + .oam = &gUnknown_08524914, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_81015AC, +}; + +const struct SpriteTemplate gUnknown_08592CB8 = +{ + .tileTag = ANIM_TAG_LOCK_ON, + .paletteTag = ANIM_TAG_LOCK_ON, + .oam = &gUnknown_0852490C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8101898, +}; + +const s8 gUnknown_08592CD0[][2] = +{ + { 64, 64}, + { 0, -64}, + {-64, 64}, + { 32, -32}, +}; + +const struct SpriteTemplate gUnknown_08592CD8 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8101940, +}; + +const struct SpriteTemplate gUnknown_08592CF0 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8101B90, +}; + +const union AnimCmd gUnknown_08592D08[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(48, 4), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592D1C[] = +{ + ANIMCMD_FRAME(48, 4), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08592D24[] = +{ + gUnknown_08592D08, + gUnknown_08592D1C, +}; + +const struct SpriteTemplate gUnknown_08592D2C = +{ + .tileTag = ANIM_TAG_SLASH, + .paletteTag = ANIM_TAG_SLASH, + .oam = &gUnknown_08524914, + .anims = gUnknown_08592D24, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8101F40, +}; + +const struct SpriteTemplate gUnknown_08592D44 = +{ + .tileTag = ANIM_TAG_SLASH_2, + .paletteTag = ANIM_TAG_SLASH_2, + .oam = &gUnknown_08524914, + .anims = gUnknown_08592D24, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8101FA8, +}; + +const struct SpriteTemplate gUnknown_08592D5C = +{ + .tileTag = ANIM_TAG_SLASH_2, + .paletteTag = ANIM_TAG_SLASH_2, + .oam = &gUnknown_08524914, + .anims = gUnknown_08592D24, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8101FF0, +}; + +const union AnimCmd gUnknown_08592D74[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(8, 12), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(24, 4), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08592D88[] = +{ + gUnknown_08592D74, +}; + +const struct SpriteTemplate gUnknown_08592D8C = +{ + .tileTag = ANIM_TAG_FOCUS_ENERGY, + .paletteTag = ANIM_TAG_FOCUS_ENERGY, + .oam = &gUnknown_08524954, + .anims = gUnknown_08592D88, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_81020D8, +}; + +const union AnimCmd gUnknown_08592DA4[] = +{ + ANIMCMD_FRAME(0, 18), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(16, 18), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(16, 6), + ANIMCMD_FRAME(32, 18), + ANIMCMD_FRAME(16, 6), + ANIMCMD_FRAME(32, 6), + ANIMCMD_FRAME(48, 18), + ANIMCMD_FRAME(32, 6), + ANIMCMD_FRAME(48, 6), + ANIMCMD_FRAME(64, 18), + ANIMCMD_FRAME(48, 6), + ANIMCMD_FRAME(64, 54), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08592DE0[] = +{ + gUnknown_08592DA4, +}; + +const struct SpriteTemplate gUnknown_08592DE4 = +{ + .tileTag = ANIM_TAG_SPHERE_TO_CUBE, + .paletteTag = ANIM_TAG_SPHERE_TO_CUBE, + .oam = &gUnknown_08524914, + .anims = gUnknown_08592DE0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_810217C, +}; + +const struct SpriteTemplate gUnknown_08592DFC = +{ + .tileTag = ANIM_TAG_BLACK_BALL, + .paletteTag = ANIM_TAG_BLACK_BALL, + .oam = &gUnknown_08524904, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = TranslateAnimSpriteToTargetMonLocation, +}; + +const union AnimCmd gUnknown_08592E14[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(48, 3), + ANIMCMD_FRAME(64, 3), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08592E2C[] = +{ + gUnknown_08592E14, +}; + +const struct SpriteTemplate gUnknown_08592E30 = +{ + .tileTag = ANIM_TAG_GRAY_SMOKE, + .paletteTag = ANIM_TAG_GRAY_SMOKE, + .oam = &gUnknown_08524914, + .anims = gUnknown_08592E2C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A77C8, +}; + +const union AnimCmd gUnknown_08592E48[] = +{ + ANIMCMD_FRAME(3, 5), + ANIMCMD_FRAME(2, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08592E5C[] = +{ + gUnknown_08592E48, +}; + +const union AffineAnimCmd gUnknown_08592E60[] = +{ + AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gUnknown_08592E70[] = +{ + gUnknown_08592E60, +}; + +const struct SpriteTemplate gUnknown_08592E74 = +{ + .tileTag = ANIM_TAG_CONVERSION, + .paletteTag = ANIM_TAG_CONVERSION, + .oam = &gUnknown_08524AE4, + .anims = gUnknown_08592E5C, + .images = NULL, + .affineAnims = gUnknown_08592E70, + .callback = sub_8102268, +}; + +const union AnimCmd gUnknown_08592E8C[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(2, 5), + ANIMCMD_FRAME(3, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08592EA0[] = +{ + gUnknown_08592E8C, +}; + +const struct SpriteTemplate gUnknown_08592EA4 = +{ + .tileTag = ANIM_TAG_CONVERSION, + .paletteTag = ANIM_TAG_CONVERSION, + .oam = &gUnknown_08524AE4, + .anims = gUnknown_08592EA0, + .images = NULL, + .affineAnims = gUnknown_08592E70, + .callback = sub_810234C, +}; + +const struct SpriteTemplate gUnknown_08592EBC = +{ + .tileTag = ANIM_TAG_MOON, + .paletteTag = ANIM_TAG_MOON, + .oam = &gUnknown_08524A3C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_81024E0, +}; + +const union AnimCmd gUnknown_08592ED4[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(8, 8), + ANIMCMD_FRAME(12, 8), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gUnknown_08592EE8[] = +{ + gUnknown_08592ED4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_8592EEC = +{ + .tileTag = ANIM_TAG_GREEN_SPARKLE, + .paletteTag = ANIM_TAG_GREEN_SPARKLE, + .oam = &gUnknown_0852490C, + .anims = gUnknown_08592EE8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8102540, +}; + +const union AnimCmd gUnknown_08592F04[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(16, 2), + ANIMCMD_FRAME(32, 2), + ANIMCMD_FRAME(48, 3), + ANIMCMD_FRAME(64, 5), + ANIMCMD_FRAME(80, 3), + ANIMCMD_FRAME(96, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08592F28[] = +{ + gUnknown_08592F04, +}; + +const struct SpriteTemplate gUnknown_08592F2C = +{ + .tileTag = ANIM_TAG_BLUE_STAR, + .paletteTag = ANIM_TAG_BLUE_STAR, + .oam = &gUnknown_08524914, + .anims = gUnknown_08592F28, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A77C8, +}; + +const struct SpriteTemplate gUnknown_08592F44 = +{ + .tileTag = ANIM_TAG_HORN_HIT, + .paletteTag = ANIM_TAG_HORN_HIT, + .oam = &gUnknown_08524914, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8102844, +}; + +const union AnimCmd gUnknown_08592F5C[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(16, 2), + ANIMCMD_FRAME(32, 2), + ANIMCMD_FRAME(48, 2), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08592F70[] = +{ + gUnknown_08592F5C, +}; + +const struct SpriteTemplate gUnknown_08592F74 = +{ + .tileTag = ANIM_TAG_FANG_ATTACK, + .paletteTag = ANIM_TAG_FANG_ATTACK, + .oam = &gUnknown_08524914, + .anims = gUnknown_08592F70, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8102BCC, +}; + +const union AnimCmd gUnknown_08592F8C[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592F94[] = +{ + ANIMCMD_FRAME(4, 10), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592F9C[] = +{ + ANIMCMD_FRAME(8, 41), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592FA4[] = +{ + ANIMCMD_FRAME(12, 10), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592FAC[] = +{ + ANIMCMD_FRAME(16, 10), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592FB4[] = +{ + ANIMCMD_FRAME(20, 10), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592FBC[] = +{ + ANIMCMD_FRAME(0, 10, .vFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08592FC4[] = +{ + ANIMCMD_FRAME(4, 10, .vFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08592FCC[] = +{ + gUnknown_08592F8C, + gUnknown_08592F94, + gUnknown_08592F9C, + gUnknown_08592FA4, + gUnknown_08592FAC, + gUnknown_08592FB4, + gUnknown_08592FBC, + gUnknown_08592FC4, +}; + +const union AffineAnimCmd gUnknown_08592FEC[] = +{ + AFFINEANIMCMD_FRAME(0xC, 0xC, 0, 16), + AFFINEANIMCMD_FRAME(0xFFF4, 0xFFF4, 0, 16), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd *const gUnknown_08593004[] = +{ + gUnknown_08592FEC, +}; + +const struct SpriteTemplate gUnknown_08593008 = +{ + .tileTag = ANIM_TAG_MUSIC_NOTES, + .paletteTag = ANIM_TAG_MUSIC_NOTES, + .oam = &gUnknown_085249CC, + .anims = gUnknown_08592FCC, + .images = NULL, + .affineAnims = gUnknown_08593004, + .callback = sub_8102CD4, +}; + +const u16 gUnknown_08593020[][6] = +{ + {ANIM_TAG_MUSIC_NOTES, RGB(31, 31, 31), RGB(31, 26, 28), RGB(31, 22, 26), RGB(31, 17, 24), RGB(31, 13, 22)}, + {ANIM_TAG_BENT_SPOON, RGB(31, 31, 31), RGB(25, 31, 26), RGB(20, 31, 21), RGB(15, 31, 16), RGB(10, 31, 12)}, + {ANIM_TAG_SPHERE_TO_CUBE, RGB(31, 31, 31), RGB(31, 31, 24), RGB(31, 31, 17), RGB(31, 31, 10), RGB(31, 31, 3)}, + {ANIM_TAG_LARGE_FRESH_EGG, RGB(31, 31, 31), RGB(26, 28, 31), RGB(21, 26, 31), RGB(16, 24, 31), RGB(12, 22, 31)}, +}; + +const struct SpriteTemplate gUnknown_08593050 = +{ + .tileTag = ANIM_TAG_MUSIC_NOTES, + .paletteTag = ANIM_TAG_MUSIC_NOTES, + .oam = &gUnknown_085249CC, + .anims = gUnknown_08592FCC, + .images = NULL, + .affineAnims = gUnknown_08593004, + .callback = sub_8102EB0, +}; + +const struct SpriteTemplate gUnknown_08593068 = +{ + .tileTag = ANIM_TAG_PURPLE_HAND_OUTLINE, + .paletteTag = ANIM_TAG_PURPLE_HAND_OUTLINE, + .oam = &gUnknown_08524914, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8102FB8, +}; + +const union AffineAnimCmd gUnknown_08593080[] = +{ + AFFINEANIMCMD_FRAME(0xA0, 0xA0, 0, 0), + AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 1), + AFFINEANIMCMD_JUMP(1), +}; + +const union AffineAnimCmd *const gUnknown_08593098[] = +{ + gUnknown_08593080, +}; + +const struct SpriteTemplate gUnknown_0859309C = +{ + .tileTag = ANIM_TAG_MUSIC_NOTES, + .paletteTag = ANIM_TAG_MUSIC_NOTES, + .oam = &gUnknown_085249CC, + .anims = gUnknown_08592FCC, + .images = NULL, + .affineAnims = gUnknown_08593098, + .callback = sub_8103028, +}; + +const union AnimCmd gUnknown_085930B4[] = +{ + ANIMCMD_FRAME(0, 2, .hFlip = TRUE), + ANIMCMD_FRAME(16, 2, .hFlip = TRUE), + ANIMCMD_FRAME(32, 2, .hFlip = TRUE), + ANIMCMD_FRAME(48, 2, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_085930C8[] = +{ + ANIMCMD_FRAME(48, 2, .hFlip = TRUE), + ANIMCMD_FRAME(32, 2, .hFlip = TRUE), + ANIMCMD_FRAME(16, 2, .hFlip = TRUE), + ANIMCMD_FRAME(0, 2, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_085930DC[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(16, 2), + ANIMCMD_FRAME(32, 2), + ANIMCMD_FRAME(48, 2), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_085930F0[] = +{ + ANIMCMD_FRAME(48, 2), + ANIMCMD_FRAME(32, 2), + ANIMCMD_FRAME(16, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08593104[] = +{ + gUnknown_085930B4, + gUnknown_085930DC, + gUnknown_085930C8, + gUnknown_085930F0, +}; + +const struct SpriteTemplate gUnknown_08593114 = +{ + .tileTag = ANIM_TAG_THOUGHT_BUBBLE, + .paletteTag = ANIM_TAG_THOUGHT_BUBBLE, + .oam = &gUnknown_08524914, + .anims = gUnknown_08593104, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8103164, +}; + +const union AffineAnimCmd gUnknown_0859312C[] = +{ + AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0), + AFFINEANIMCMD_FRAME(0x1E, 0x1E, 0, 8), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_08593144[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 11), + AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 11), + AFFINEANIMCMD_LOOP(2), + AFFINEANIMCMD_FRAME(0xFFE2, 0xFFE2, 0, 8), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_08593144_2[] = +{ + AFFINEANIMCMD_FRAME(16, 16, 0, 0), + AFFINEANIMCMD_FRAME(30, 30, 0, 8), + AFFINEANIMCMD_FRAME(0, 0, 0, 16), + AFFINEANIMCMD_LOOP(0), + AFFINEANIMCMD_FRAME(0, 0, 4, 11), + AFFINEANIMCMD_FRAME(0, 0, -4, 11), + AFFINEANIMCMD_LOOP(2), + AFFINEANIMCMD_FRAME(-30, -30, 0, 8), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gUnknown_085931B4[] = +{ + gUnknown_0859312C, + gUnknown_08593144, +}; + +const struct SpriteTemplate gUnknown_085931BC = +{ + .tileTag = ANIM_TAG_FINGER, + .paletteTag = ANIM_TAG_FINGER, + .oam = &gUnknown_085249D4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_085931B4, + .callback = sub_8103208, +}; + +const struct SpriteTemplate gUnknown_085931D4 = +{ + .tileTag = ANIM_TAG_FINGER, + .paletteTag = ANIM_TAG_FINGER, + .oam = &gUnknown_08524974, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_085931B4, + .callback = sub_8103284, +}; + +const union AnimCmd gUnknown_085931EC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_085931F4[] = +{ + ANIMCMD_FRAME(0, 1, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_085931FC[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_0859321C[] = +{ + ANIMCMD_FRAME(0, 4, .hFlip = TRUE), + ANIMCMD_FRAME(16, 4, .hFlip = TRUE), + ANIMCMD_FRAME(32, 4, .hFlip = TRUE), + ANIMCMD_FRAME(16, 4, .hFlip = TRUE), + ANIMCMD_FRAME(0, 4, .hFlip = TRUE), + ANIMCMD_FRAME(16, 4, .hFlip = TRUE), + ANIMCMD_FRAME(32, 4, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_0859323C[] = +{ + gUnknown_085931EC, + gUnknown_085931F4, + gUnknown_085931FC, + gUnknown_0859321C, +}; + +const struct SpriteTemplate gUnknown_0859324C = +{ + .tileTag = ANIM_TAG_FINGER_2, + .paletteTag = ANIM_TAG_FINGER_2, + .oam = &gUnknown_08524914, + .anims = gUnknown_0859323C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8103390, +}; + +// Animates the falling particles that horizontally wave back and forth. +// Used by Sleep Powder, Stun Spore, and Poison Powder. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: total duration in frames +// arg 3: vertical movement speed (sub-pixel value) +// arg 4: wave amplitude +// arg 5: wave speed +void AnimMovePowderParticle(struct Sprite* sprite) +{ + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + + if (GetBattlerSide(gBattleAnimAttacker)) + { + sprite->data[3] = -gBattleAnimArgs[4]; + } + else + { + sprite->data[3] = gBattleAnimArgs[4]; + } + + sprite->data[4] = gBattleAnimArgs[5]; + sprite->callback = AnimMovePowderParticleStep; +} + +static void AnimMovePowderParticleStep(struct Sprite* sprite) +{ + if (sprite->data[0] > 0) + { + sprite->data[0]--; + sprite->pos2.y = sprite->data[2] >> 8; + sprite->data[2] += sprite->data[1]; + sprite->pos2.x = Sin(sprite->data[5], sprite->data[3]); + sprite->data[5] = (sprite->data[5] + sprite->data[4]) & 0xFF; + } + else + { + DestroyAnimSprite(sprite); + } +} + +void sub_80FE8E0(struct Sprite* sprite) +{ + InitAnimSpritePos(sprite, 1); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); +} + +void sub_80FE930(struct Sprite* sprite) +{ + InitAnimSpritePos(sprite, 1); + StartSpriteAnim(sprite, gBattleAnimArgs[3]); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void sub_80FE988(struct Sprite* sprite) +{ + InitAnimSpritePos(sprite, 1); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + InitAnimLinearTranslation(sprite); + sprite->data[5] = gBattleAnimArgs[3]; + sprite->callback = sub_80FE9E4; + sprite->callback(sprite); +} + +static void sub_80FE9E4(struct Sprite* sprite) +{ + if (TranslateAnimLinear(sprite)) + { + DestroySprite(sprite); + } + else + { + if (sprite->data[5] > 0x7F) + sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) + 1; + else + sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) + 6; + + sprite->pos2.x += Sin(sprite->data[5], 5); + sprite->pos2.y += Cos(sprite->data[5], 14); + sprite->data[5] = (sprite->data[5] + 15) & 0xFF; + } +} + +void sub_80FEA58(u8 taskId) +{ + gTasks[taskId].data[0]--; + if (gTasks[taskId].data[0] == -1) + { + gTasks[taskId].data[1]++; + gTasks[taskId].data[0] = 6; + gBattleAnimArgs[0] = 15; + gBattleAnimArgs[1] = 0; + gBattleAnimArgs[2] = 80; + gBattleAnimArgs[3] = 0; + CreateSpriteAndAnimate(&gUnknown_08592210, 0, 0, GetBattlerSpriteSubpriority(gBattleAnimTarget) + 1); + } + + if (gTasks[taskId].data[1] == 15) + DestroyAnimVisualTask(taskId); +} + +void sub_80FEAD8(struct Sprite* sprite) +{ + sub_80A6980(sprite, TRUE); + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->data[5] = gBattleAnimArgs[2]; + InitAnimArcTranslation(sprite); + sprite->callback = sub_80FEB28; +} + +static void sub_80FEB28(struct Sprite* sprite) +{ + if (TranslateAnimArc(sprite)) + DestroyAnimSprite(sprite); +} + +void sub_80FEB44(struct Sprite* sprite) +{ + u16 a = Random2(); + u16 b; + + StartSpriteAnim(sprite, a & 7); + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + if (GetBattlerSide(gBattleAnimAttacker)) + { + sprite->pos1.x -= 20; + } + else + { + sprite->pos1.x += 20; + } + + b = Random2(); + sprite->data[0] = (b & 31) + 64; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sub_80A7160(sprite); + sprite->data[5] = Random2() & 0xFF; + sprite->data[6] = sprite->subpriority; + sprite->callback = sub_80FEBFC; + sprite->callback(sprite); +} + +static void sub_80FEBFC(struct Sprite* sprite) +{ + if (sub_80A70E8(sprite)) + { + DestroyAnimSprite(sprite); + } + else + { + sprite->pos2.y += Cos(sprite->data[5], 12); + if (sprite->data[5] < 0x7F) + sprite->subpriority = sprite->data[6]; + else + sprite->subpriority = sprite->data[6] + 1; + + sprite->data[5] = (sprite->data[5] + 24) & 0xFF; + } +} + +// seed (sprouts a sapling from a seed.) +// Used by Leech Seed. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: target x pixel offset +// arg 3: target y pixel offset +// arg 4: duration +// arg 5: wave amplitude +void AnimLeechSeed(struct Sprite* sprite) +{ + InitAnimSpritePos(sprite, 1); + if (GetBattlerSide(gBattleAnimAttacker)) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[3]; + sprite->data[5] = gBattleAnimArgs[5]; + InitAnimArcTranslation(sprite); + sprite->callback = AnimLeechSeedStep; +} + +static void AnimLeechSeedStep(struct Sprite* sprite) +{ + if (TranslateAnimArc(sprite)) + { + sprite->invisible = 1; + sprite->data[0] = 10; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, AnimLeechSeedSprouts); + } +} + +static void AnimLeechSeedSprouts(struct Sprite* sprite) +{ + sprite->invisible = 0; + StartSpriteAnim(sprite, 1); + sprite->data[0] = 60; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void sub_80FED28(struct Sprite* sprite) +{ + sub_80A6980(sprite, TRUE); + StartSpriteAnim(sprite, gBattleAnimArgs[4]); + if (gBattleAnimArgs[4] == 1) + sprite->oam.objMode = ST_OAM_OBJ_BLEND; + + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->callback = sub_80FED74; + sprite->callback(sprite); +} + +static void sub_80FED74(struct Sprite* sprite) +{ + sprite->pos2.x = Sin(sprite->data[1], 32); + sprite->pos2.y = Cos(sprite->data[1], -3) + ((sprite->data[2] += 24) >> 8); + if ((u16)(sprite->data[1] - 0x40) < 0x80) + { + sprite->oam.priority = (sub_80A8328(gBattleAnimTarget) & 3); + } + else + { + u8 priority = sub_80A8328(gBattleAnimTarget) + 1; + if (priority > 3) + priority = 3; + + sprite->oam.priority = priority; + } + + sprite->data[1] = (sprite->data[1] + 2) & 0xFF; + if (--sprite->data[0] == -1) + DestroyAnimSprite(sprite); +} + +void sub_80FEE1C(u8 taskId) +{ + if (IsContest() || !IsDoubleBattle()) + { + DestroyAnimVisualTask(taskId); + } + else + { + if (sub_80A8364(gBattleAnimTarget) == 1) + SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 3); + else + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + + DestroyAnimVisualTask(taskId); + } +} + +void sub_80FEE78(struct Sprite* sprite) +{ + InitAnimSpritePos(sprite, 0); + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sprite->pos1.x; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2]; + InitAnimLinearTranslation(sprite); + sprite->data[5] = 0x40; + sprite->callback = sub_80FEECC; + sprite->callback(sprite); +} + +static void sub_80FEECC(struct Sprite* sprite) +{ + if (!TranslateAnimLinear(sprite)) + { + sprite->pos2.x += Sin(sprite->data[5], 32); + sprite->pos2.y += Cos(sprite->data[5], -5); + if ((u16)(sprite->data[5] - 0x40) < 0x80) + sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1; + else + sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) + 1; + + sprite->data[5] = (sprite->data[5] + 5) & 0xFF; + } + else + { + DestroyAnimSprite(sprite); + } +} + +void sub_80FEF44(struct Sprite* sprite) +{ + InitAnimSpritePos(sprite, 1); + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sprite->pos1.x; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2]; + InitAnimLinearTranslation(sprite); + sprite->data[5] = 0x40; + sprite->callback = sub_80FEF98; + sprite->callback(sprite); +} + +static void sub_80FEF98(struct Sprite* sprite) +{ + if (!TranslateAnimLinear(sprite)) + { + sprite->pos2.x += Sin(sprite->data[5], 8); + if ((u16)(sprite->data[5] - 59) < 5 || (u16)(sprite->data[5] - 187) < 5) + sprite->oam.matrixNum ^= 0x8; + + sprite->data[5] = (sprite->data[5] + 5) & 0xFF; + } + else + { + DestroyAnimSprite(sprite); + } +} + +void sub_80FEFFC(struct Sprite* sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->data[0] = gBattleAnimArgs[0]; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[2] = gBattleAnimArgs[2]; + sprite->callback = sub_80FF044; +} + +static void sub_80FF044(struct Sprite* sprite) +{ + if (!sprite->data[2]) + { + if (sprite->data[1] & 1) + { + sprite->data[0] = 0x80; + sprite->data[1] = 0; + sprite->data[2] = 0; + } + else + { + sprite->data[0] = sprite->data[1] & 1; + sprite->data[1] = sprite->data[1] & 1; + sprite->data[2] = sprite->data[1] & 1; + } + sprite->callback = sub_80FF090; + } + else + { + sprite->data[2]--; + sprite->pos1.x += sprite->data[0]; + sprite->pos1.y += sprite->data[1]; + } +} + +static void sub_80FF090(struct Sprite* sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker)) + sprite->pos2.x = -Sin(sprite->data[0], 25); + else + sprite->pos2.x = Sin(sprite->data[0], 25); + + sprite->data[0] = (sprite->data[0] + 2) & 0xFF; + sprite->data[1]++; + if (!(sprite->data[1] & 1)) + sprite->pos2.y++; + + if (sprite->data[1] > 80) + DestroyAnimSprite(sprite); +} + +// Animates a sprite that moves linearly from one location to another, with a +// single-cycle sine wave added to the y position along the way. +// Used by Razor Leaf and Magical Leaf. +// arg 0: initial x offset +// arg 1: initial y offset +// arg 2: target x offset +// arg 3: target y offset +// arg 4: translation duration +// arg 5: wave amplitude +// arg 6: target between double battle opponents (boolean) +void AnimTranslateLinearSingleSineWave(struct Sprite* sprite) +{ + InitAnimSpritePos(sprite, 1); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + + sprite->data[0] = gBattleAnimArgs[4]; + if (!gBattleAnimArgs[6]) + { + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; + } + else + { + SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->data[2], &sprite->data[4]); + sprite->data[2] += gBattleAnimArgs[2]; + sprite->data[4] += gBattleAnimArgs[3]; + } + + sprite->data[5] = gBattleAnimArgs[5]; + InitAnimArcTranslation(sprite); + if (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) + sprite->data[0] = 1; + else + sprite->data[0] = 0; + + sprite->callback = AnimTranslateLinearSingleSineWaveStep; +} + +static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite) +{ + bool8 destroy = FALSE; + s16 a = sprite->data[0]; + s16 b = sprite->data[7]; + s16 r0; + + sprite->data[0] = 1; + TranslateAnimArc(sprite); + r0 = sprite->data[7]; + sprite->data[0] = a; + if (b > 200 && r0 < 56 && sprite->oam.affineParam == 0) + sprite->oam.affineParam++; + + if (sprite->oam.affineParam && sprite->data[0]) + { + sprite->invisible ^= 1; + sprite->oam.affineParam++; + if (sprite->oam.affineParam == 30) + destroy = TRUE; + } + + if (sprite->pos1.x + sprite->pos2.x > 256 + || sprite->pos1.x + sprite->pos2.x < -16 + || sprite->pos1.y + sprite->pos2.y > 160 + || sprite->pos1.y + sprite->pos2.y < -16) + destroy = TRUE; + + if (destroy) + DestroyAnimSprite(sprite); +} + +// Animates particles in the Twister move animation. +// arg 0: duration +// arg 1: total y delta (the particles rise upward) +// arg 2: wave period (higher means faster wave) +// arg 3: wave amplitude +// arg 4: speedup frame (particles move faster at the end of the animation) +void AnimMoveTwisterParticle(struct Sprite* sprite) +{ + if (IsDoubleBattle() == TRUE) + SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->pos1.x, &sprite->pos1.y); + + sprite->pos1.y += 32; + sprite->data[0] = gBattleAnimArgs[0]; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[2] = gBattleAnimArgs[2]; + sprite->data[3] = gBattleAnimArgs[3]; + sprite->data[4] = gBattleAnimArgs[4]; + sprite->callback = AnimMoveTwisterParticleStep; +} + +static void AnimMoveTwisterParticleStep(struct Sprite* sprite) +{ + if (sprite->data[1] == 0xFF) + { + sprite->pos1.y -= 2; + } + else if (sprite->data[1] > 0) + { + sprite->pos1.y -= 2; + sprite->data[1] -= 2; + } + + sprite->data[5] += sprite->data[2]; + if (sprite->data[0] < sprite->data[4]) + sprite->data[5] += sprite->data[2]; + + sprite->data[5] &= 0xFF; + sprite->pos2.x = Cos(sprite->data[5], sprite->data[3]); + sprite->pos2.y = Sin(sprite->data[5], 5); + if (sprite->data[5] < 0x80) + sprite->oam.priority = sub_80A8328(gBattleAnimTarget) - 1; + else + sprite->oam.priority = sub_80A8328(gBattleAnimTarget) + 1; + + if (--sprite->data[0] == 0) + DestroyAnimSprite(sprite); +} + +void sub_80FF374(struct Sprite* sprite) +{ + sub_80A6980(sprite, FALSE); + sprite->affineAnimPaused = 1; + StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]); + sprite->data[6] = gBattleAnimArgs[2]; + sprite->data[7] = gBattleAnimArgs[3]; + sprite->callback = sub_80FF3B0; +} + +static void sub_80FF3B0(struct Sprite* sprite) +{ + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + { + sprite->affineAnimPaused = 0; + GetAnimBattlerSpriteId(1); + sprite->data[0] = 0x100; + sprite->callback = sub_80FF3EC; + } +} + +static void sub_80FF3EC(struct Sprite* sprite) +{ + GetAnimBattlerSpriteId(1); + if (!sprite->data[2]) + sprite->data[0] += 11; + else + sprite->data[0] -= 11; + + if (++sprite->data[1] == 6) + { + sprite->data[1] = 0; + sprite->data[2] ^= 1; + } + + if (sprite->affineAnimEnded) + { + if (--sprite->data[7] > 0) + StartSpriteAffineAnim(sprite, sprite->data[6]); + else + DestroyAnimSprite(sprite); + } +} + +void sub_80FF458(u8 taskId) +{ + u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); + if (gSprites[spriteId].invisible) + { + DestroyAnimVisualTask(taskId); + } + else + { + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_BLEND); + gTasks[taskId].data[14] = gSprites[spriteId].oam.priority; + gSprites[spriteId].oam.priority = sub_80A8328(gBattleAnimTarget); + spriteId = GetAnimBattlerSpriteId(ANIM_DEF_PARTNER); + gTasks[taskId].data[15] = gSprites[spriteId].oam.priority; + gSprites[spriteId].oam.priority = sub_80A8328(BATTLE_PARTNER(gBattleAnimTarget)); + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gTasks[taskId].data[1] = gBattleAnimArgs[1]; + gTasks[taskId].data[11] = 256; + gTasks[taskId].func = sub_80FF53C; + } +} + +static void sub_80FF53C(u8 taskId) +{ + u8 spriteId = GetAnimBattlerSpriteId(1); + gTasks[taskId].data[10] += gTasks[taskId].data[0]; + gSprites[spriteId].pos2.x = gTasks[taskId].data[10] >> 8; + if (GetBattlerSide(gBattleAnimTarget)) + gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; + + gTasks[taskId].data[11] += 16; + SetSpriteRotScale(spriteId, gTasks[taskId].data[11], gTasks[taskId].data[11], 0); + SetBattlerSpriteYOffsetFromYScale(spriteId); + if (--gTasks[taskId].data[1] == 0) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80FF5CC; + } +} + +static void sub_80FF5CC(u8 taskId) +{ + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + { + if (gTasks[taskId].data[0] == 0) + { + u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); + ResetSpriteRotScale(spriteId); + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + gSprites[spriteId].oam.priority = gTasks[taskId].data[14]; + spriteId = GetAnimBattlerSpriteId(ANIM_DEF_PARTNER); + gSprites[spriteId].oam.priority = gTasks[taskId].data[15]; + gTasks[taskId].data[0]++; + return; + } + } + else + { + if (gTasks[taskId].data[0] == 0) + return; + } + + gTasks[taskId].data[0]++; + if (gTasks[taskId].data[0] == 3) + DestroyAnimVisualTask(taskId); +} + +void sub_80FF698(struct Sprite* sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + gBattleAnimArgs[0] *= -1; + + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[1]; + sprite->invisible = 1; + sprite->data[0]++; + break; + case 1: + sprite->invisible = 0; + if (sprite->affineAnimEnded) + { + ChangeSpriteAffineAnim(sprite, 1); + sprite->data[0] = 25; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->callback = sub_80A70C0; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + break; + } + } +} + +void sub_80FF768(struct Sprite* sprite) +{ + if (!sprite->data[0]) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1); + sprite->pos2.x = gBattleAnimArgs[0]; + sprite->pos2.y = gBattleAnimArgs[1]; + sprite->subpriority = gBattleAnimArgs[2] + 30; + StartSpriteAnim(sprite, gBattleAnimArgs[3]); + sprite->data[2] = gBattleAnimArgs[4]; + sprite->data[0]++; + if (sprite->pos1.y + sprite->pos2.y > 120) + sprite->pos1.y += sprite->pos2.y + sprite->pos1.y - 120; + } + sprite->callback = sub_80FF8DC; +} + +void sub_80FF7EC(struct Sprite *sprite) +{ + s16 p1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + s16 p2 = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + s16 e1 = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + s16 e2 = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + + e1 -= p1; + e2 -= p2; + sprite->pos1.x = p1 + e1 * gBattleAnimArgs[0] / 100; + sprite->pos1.y = p2 + e2 * gBattleAnimArgs[0] / 100; + sprite->pos2.x = gBattleAnimArgs[1]; + sprite->pos2.y = gBattleAnimArgs[2]; + sprite->subpriority = gBattleAnimArgs[3] + 30; + StartSpriteAnim(sprite, gBattleAnimArgs[4]); + sprite->data[2] = gBattleAnimArgs[5]; + sprite->callback = sub_80FF8DC; + gUnknown_0203A0F8[0] = sprite->pos1.x; + gUnknown_0203A0F8[1] = sprite->pos1.y; + gUnknown_0203A0F8[2] = e1; + gUnknown_0203A0F8[3] = e2; +} + +static void sub_80FF8DC(struct Sprite* sprite) +{ + if (++sprite->data[0] > (sprite->data[2] - 10)) + sprite->invisible = sprite->data[0] % 2; + + if (sprite->data[0] > sprite->data[2]) + DestroyAnimSprite(sprite); +} + +void sub_80FF934(struct Sprite* sprite) +{ + if (!sprite->data[0]) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[1]; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[3]; + sprite->data[3] = gBattleAnimArgs[4]; + } + + sprite->data[0]++; + sprite->pos2.x = sprite->data[1] * sprite->data[0]; + sprite->pos2.y = Sin((sprite->data[0] * 20) & 0xFF, sprite->data[2]); + if (sprite->data[0] > sprite->data[3]) + DestroyAnimSprite(sprite); +} + +void sub_80FF9B8(struct Sprite* sprite, s16 c) +{ + s32 a = (sprite->pos1.x * 256) | sprite->pos1.y; + s32 b = (sprite->data[6] * 256) | sprite->data[7]; + c *= 256; + sprite->data[5] = a; + sprite->data[6] = b; + sprite->data[7] = c; +} + +bool8 sub_80FF9E0(struct Sprite* sprite) +{ + u16 r10 = (u8)(sprite->data[5] >> 8); + u16 r9 = (u8)sprite->data[5]; + s32 r2 = (u8)(sprite->data[6] >> 8); + s32 r4 = (u8)sprite->data[6]; + s16 r6 = sprite->data[7] >> 8; + s16 r3 = sprite->data[7] & 0xFF; + s16 r4_2; + s16 r0; + s32 var1; + s32 var2; + + if (r2 == 0) + r2 = -32; + else if (r2 == 255) + r2 = 272; + + r4_2 = r4 - r9; + r0 = r2 - r10; + var1 = r0 * r3 / r6; + var2 = r4_2 * r3 / r6; + sprite->pos1.x = var1 + r10; + sprite->pos1.y = var2 + r9; + if (++r3 == r6) + return TRUE; + + sprite->data[7] = (r6 << 8) | r3; + return FALSE; +} + +void sub_80FFA84(struct Sprite* sprite) +{ + if (sprite->data[0] == 10) + StartSpriteAffineAnim(sprite, 1); + + sprite->data[0]++; + if (sprite->data[0] > 50) + DestroyAnimSprite(sprite); +} + +static void sub_80FFAB4(struct Sprite* sprite) +{ + sprite->data[0] += sprite->data[3] * 128 / sprite->data[4]; + if (sprite->data[0] >= 128) + { + sprite->data[1]++; + sprite->data[0] = 0; + } + + sprite->pos2.y = Sin(sprite->data[0] + 128, 30 - sprite->data[1] * 8); + if (sub_80FF9E0(sprite)) + { + sprite->pos2.y = 0; + sprite->data[0] = 0; + sprite->callback = sub_80FFA84; + } +} + +void sub_80FFB18(struct Sprite* sprite) +{ + s16 e1; + s16 e2; + InitAnimSpritePos(sprite, 0); + e1 = GetBattlerSpriteCoord(gBattleAnimTarget, 0); + e2 = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget) + { + sprite->data[6] = e1; + sprite->data[7] = e2 + 10; + sub_80FF9B8(sprite, 60); + sprite->data[3] = 1; + } + else + { + sprite->data[6] = e1; + sprite->data[7] = e2 + 10; + sub_80FF9B8(sprite, 60); + sprite->data[3] = 3; + } + + sprite->data[4] = 60; + sprite->callback = sub_80FFAB4; +} + +static void sub_80FFB90(struct Sprite* sprite) +{ + int zero; + sprite->data[0] += ((sprite->data[3] * 128) / sprite->data[4]); + zero = 0; + if (sprite->data[0] > 0x7F) + { + sprite->data[1]++; + sprite->data[0] = zero; + } + + sprite->pos2.y = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8); + if (sub_80FF9E0(sprite)) + { + sprite->pos2.y = zero; + sprite->data[0] = zero; + DestroyAnimSprite(sprite); + } +} + +void sub_80FFBF4(struct Sprite* sprite) +{ + s16 e = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + { + sprite->data[6] = 0; + sprite->data[7] = e + 10; + sub_80FF9B8(sprite, 40); + sprite->data[3] = 3; + sprite->data[4] = 0x3C; + sprite->callback = sub_80FFAB4; + } + else + { + sprite->data[6] = 255; + sprite->data[7] = e + 10; + if (IsContest()) + sprite->data[6] = 0; + + sub_80FF9B8(sprite, 40); + sprite->data[3] = 3; + sprite->data[4] = 0x3C; + sprite->callback = sub_80FFB90; + } +} + +void sub_80FFC70(struct Sprite* sprite) +{ + if (sprite->data[0] == 0) + { + sub_80A6980(sprite, FALSE); + sprite->data[1] = gBattleAnimArgs[2]; + } + + sprite->data[0]++; + sprite->pos2.y = sprite->data[1] * sprite->data[0]; + if (sprite->animEnded) + DestroyAnimSprite(sprite); +} + +void sub_80FFCB4(struct Sprite* sprite) +{ + s16 p1; + s16 p2; + sub_80A6980(sprite, FALSE); + p1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); + p2 = GetBattlerSpriteCoord(gBattleAnimAttacker, 1); + if (BATTLE_PARTNER(gBattleAnimTarget) == gBattleAnimAttacker) + { + sprite->data[6] = p1; + sprite->data[7] = p2 + 10; + sub_80FF9B8(sprite, 60); + sprite->data[3] = 1; + } + else + { + sprite->data[6] = p1; + sprite->data[7] = p2 + 10; + sub_80FF9B8(sprite, 60); + sprite->data[3] = 3; + } + + sprite->data[4] = 60; + sprite->callback = sub_80FFD2C; +} + +static void sub_80FFD2C(struct Sprite* sprite) +{ + int zero; + sprite->data[0] += ((sprite->data[3] * 128) / sprite->data[4]); + zero = 0; + if (sprite->data[0] > 127) + { + sprite->data[1]++; + sprite->data[0] = zero; + } + + sprite->pos2.y = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8); + if (sprite->pos2.y == 0) + PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(63)); + + if (sub_80FF9E0(sprite)) + { + sprite->pos2.y = 0; + sprite->data[0] = 0; + sprite->callback = sub_80FFA84; + PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(-64)); + } +} + +void sub_80FFDBC(struct Sprite* sprite) +{ + int a; + int b; + + if (!sprite->data[0]) + { + if (!IsContest()) + { + sprite->data[1] = gBattleAnimArgs[1]; + sprite->pos1.x = 120; + } + else + { + a = gBattleAnimArgs[1] - 32; + if (a < 0) + b = gBattleAnimArgs[1] + 0xDF; + else + b = a; + + sprite->data[1] = a - ((b >> 8) << 8); + sprite->pos1.x = 70; + } + + sprite->pos1.y = gBattleAnimArgs[0]; + sprite->data[2] = gBattleAnimArgs[0]; + sprite->data[4] = 20; + sprite->pos2.x = Cos(sprite->data[1], 60); + sprite->pos2.y = Sin(sprite->data[1], 20); + sprite->callback = sub_80FFE58; + if (sprite->data[1] > 0 && sprite->data[1] < 192) + sprite->subpriority = 31; + else + sprite->subpriority = 29; + } +} + +static void sub_80FFE58(struct Sprite* sprite) +{ + switch (sprite->data[3]) + { + case 0: + if (sprite->data[2] > 78) + { + sprite->data[3] = 1; + StartSpriteAffineAnim(sprite, 1); + break; + } + else + { + sprite->data[2] += sprite->data[4] / 10; + sprite->data[4] += 3; + sprite->pos1.y = sprite->data[2]; + break; + } + break; + case 1: + if (sprite->data[3] && sprite->affineAnimEnded) + { + sprite->data[0] = 0; + sprite->data[2] = 0; + sprite->callback = sub_80FFEC4; + } + break; + } +} + +static void sub_80FFEC4(struct Sprite* sprite) +{ + if (sprite->data[2] == gUnknown_08592700[sprite->data[0]][1]) + { + if (gUnknown_08592700[sprite->data[0]][2] == 127) + { + sprite->data[0] = 0; + sprite->callback = sub_80FFF7C; + } + + sprite->data[2] = 0; + sprite->data[0]++; + } + else + { + sprite->data[2]++; + sprite->data[1] = (gUnknown_08592700[sprite->data[0]][0] * gUnknown_08592700[sprite->data[0]][2] + sprite->data[1]) & 0xFF; + if (!IsContest()) + { + if ((u16)(sprite->data[1] - 1) < 191) + sprite->subpriority = 31; + else + sprite->subpriority = 29; + } + + sprite->pos2.x = Cos(sprite->data[1], 60); + sprite->pos2.y = Sin(sprite->data[1], 20); + } +} + +static void sub_80FFF7C(struct Sprite* sprite) +{ + if (sprite->data[0] > 20) + DestroyAnimSprite(sprite); + + sprite->invisible = sprite->data[0] % 2; + sprite->data[0]++; +} + +void sub_80FFFC0(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[4] = GetBattlerSpriteSubpriority(gBattleAnimTarget) - 1; + task->data[6] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + task->data[7] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + task->data[10] = sub_80A861C(gBattleAnimTarget, 1); + task->data[11] = sub_80A861C(gBattleAnimTarget, 0); + task->data[5] = (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) ? 1 : -1; + task->data[9] = 56 - (task->data[5] * 64); + task->data[8] = task->data[7] - task->data[9] + task->data[6]; + task->data[2] = CreateSprite(&gUnknown_08592778, task->data[8], task->data[9], task->data[4]); + if (task->data[2] == MAX_SPRITES) + DestroyAnimVisualTask(taskId); + + gSprites[task->data[2]].data[0] = 10; + gSprites[task->data[2]].data[1] = task->data[8]; + gSprites[task->data[2]].data[2] = task->data[6] - (task->data[10] / 2 + 10) * task->data[5]; + gSprites[task->data[2]].data[3] = task->data[9]; + gSprites[task->data[2]].data[4] = task->data[7] + (task->data[11] / 2 + 10) * task->data[5]; + gSprites[task->data[2]].data[5] = sub_8100504(&gSprites[task->data[2]]); + InitAnimArcTranslation(&gSprites[task->data[2]]); + task->func = sub_8100128; +} + +static void sub_8100128(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + struct Sprite* sprite = &gSprites[task->data[2]]; + int a = task->data[0]; + switch (a) + { + case 4: + sub_8100524(task, taskId); + if (TranslateAnimArc(sprite)) + { + task->data[15] = 5; + task->data[0] = 0xFF; + } + break; + case 8: + sub_8100524(task, taskId); + if (TranslateAnimArc(sprite)) + { + task->data[15] = 9; + task->data[0] = 0xFF; + } + break; + case 0: + sub_8100524(task, taskId); + if (TranslateAnimArc(sprite)) + { + task->data[15] = 1; + task->data[0] = 0xFF; + } + break; + case 1: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 10; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[6]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[7]; + sprite->data[5] = sub_8100504(sprite); + task->data[4] += 2; + task->data[3] = a; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + InitAnimArcTranslation(sprite); + task->data[0]++; + break; + case 2: + sub_8100524(task, taskId); + if (TranslateAnimArc(sprite)) + { + task->data[15] = 3; + task->data[0] = 0xFF; + } + break; + case 3: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 10; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[7] - ((task->data[11] / 2) + 10) * task->data[5]; + sprite->data[5] = sub_8100504(sprite); + task->data[3] = 2; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + InitAnimArcTranslation(sprite); + task->data[0]++; + break; + case 5: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 10; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[6] + ((task->data[10] / 2) + 10) * task->data[5]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5]; + sprite->data[5] = sub_8100504(sprite); + task->data[4] -= 2; + task->data[3] = 3; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + InitAnimArcTranslation(sprite); + task->data[0]++; + break; + case 6: + sub_8100524(task, taskId); + if (TranslateAnimArc(sprite)) + { + task->data[15] = 7; + task->data[0] = 0xFF; + } + break; + case 7: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 10; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[6]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[7]; + sprite->data[5] = sub_8100504(sprite); + task->data[4] += 2; + task->data[3] = 4; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + InitAnimArcTranslation(sprite); + task->data[0]++; + break; + case 9: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 10; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5]; + sprite->data[5] = sub_8100504(sprite); + task->data[3] = 5; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + InitAnimArcTranslation(sprite); + task->data[0]++; + break; + case 10: + sub_8100524(task, taskId); + if (TranslateAnimArc(sprite)) + { + task->data[15] = 11; + task->data[0] = 0xFF; + } + break; + case 11: + { + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[0] = 10; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[8]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[9]; + sprite->data[5] = sub_8100504(sprite); + task->data[4] -= 2; + task->data[3] = 6; + sprite->subpriority = task->data[4]; + StartSpriteAnim(sprite, task->data[3]); + InitAnimArcTranslation(sprite); + task->data[0]++; + break; + } + case 12: + sub_8100524(task, taskId); + if (TranslateAnimArc(sprite)) + { + DestroySprite(sprite); + task->data[0]++; + } + break; + case 13: + if (task->data[12] == 0) + DestroyAnimVisualTask(taskId); + break; + case 0xFF: + if (++task->data[1] > 5) + { + task->data[1] = 0; + task->data[0] = task->data[15]; + } + break; + } +} + +static s16 sub_8100504(struct Sprite* sprite) +{ + s16 var = 8; + if (sprite->data[4] < sprite->pos1.y) + var = -var; + + return var; +} + +static void sub_8100524(struct Task* task, u8 taskId) +{ + task->data[14]++; + if (task->data[14] > 0) + { + u8 spriteId; + s16 spriteX; + s16 spriteY; + task->data[14] = 0; + spriteX = gSprites[task->data[2]].pos1.x + gSprites[task->data[2]].pos2.x; + spriteY = gSprites[task->data[2]].pos1.y + gSprites[task->data[2]].pos2.y; + spriteId = CreateSprite(&gUnknown_08592778, spriteX, spriteY, task->data[4]); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[6] = taskId; + gSprites[spriteId].data[7] = 12; + gTasks[taskId].data[12]++; + gSprites[spriteId].data[0] = task->data[13] & 1; + gTasks[taskId].data[13]++; + StartSpriteAnim(&gSprites[spriteId], task->data[3]); + gSprites[spriteId].subpriority = task->data[4]; + gSprites[spriteId].callback = sub_80CC408; + } + } +} + +static void sub_80CC408(struct Sprite* sprite) +{ + sprite->data[0]++; + if (sprite->data[0] > 1) + { + sprite->data[0] = 0; + sprite->invisible ^= 1; + sprite->data[1]++; + if (sprite->data[1] > 8) + { + gTasks[sprite->data[6]].data[sprite->data[7]]--; + DestroySprite(sprite); + } + } +} + +void sub_8100640(struct Sprite* sprite) +{ + u8 battler; + if (!gBattleAnimArgs[6]) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + if (GetBattlerSide(battler) != 0) + { + sprite->data[4] = 0; + sprite->data[2] = gBattleAnimArgs[3]; + sprite->pos1.x = 0xFFF0; + } + else + { + sprite->data[4] = 1; + sprite->data[2] = -gBattleAnimArgs[3]; + sprite->pos1.x = 0x100; + } + + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[3] = gBattleAnimArgs[4]; + switch (gBattleAnimArgs[5]) + { + case 0: + sprite->pos1.y = gBattleAnimArgs[0]; + sprite->oam.priority = sub_80A8328(battler); + break; + case 1: + sprite->pos1.y = gBattleAnimArgs[0]; + sprite->oam.priority = sub_80A8328(battler) + 1; + break; + case 2: + sprite->pos1.y = GetBattlerSpriteCoord(battler, 3) + gBattleAnimArgs[0]; + sprite->oam.priority = sub_80A8328(battler); + break; + case 3: + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[0]; + GetAnimBattlerSpriteId(ANIM_TARGET); + sprite->oam.priority = sub_80A8328(battler) + 1; + break; + } + + sprite->callback = sub_810074C; +} + +static void sub_810074C(struct Sprite* sprite) +{ + int a = sprite->data[7]; + sprite->data[7]++; + sprite->pos2.y = (sprite->data[1] * gSineTable[sprite->data[0]]) >> 8; + sprite->pos2.x = sprite->data[2] * a; + sprite->data[0] = (sprite->data[3] * a) & 0xFF; + if (!sprite->data[4]) + { + if (sprite->pos2.x + sprite->pos1.x <= 0xF7) + return; + } + else + { + if (sprite->pos2.x + sprite->pos1.x > -16) + return; + } + + DestroySpriteAndMatrix(sprite); +} + +void sub_81007C4(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + task->data[8] = IndexOfSpritePaletteTag(ANIM_TAG_LEAF) * 16 + 256; + task->data[12] = IndexOfSpritePaletteTag(ANIM_TAG_RAZOR_LEAF) * 16 + 256; + task->data[0]++; + break; + case 1: + if (++task->data[9] >= 0) + { + task->data[9] = 0; + BlendPalette(task->data[8], 16, task->data[10], gMagicalLeafBlendColors[task->data[11]]); + BlendPalette(task->data[12], 16, task->data[10], gMagicalLeafBlendColors[task->data[11]]); + if (++task->data[10] == 17) + { + task->data[10] = 0; + if (++task->data[11] == 7) + task->data[11] = 0; + } + } + break; + } + + if (gBattleAnimArgs[7] == -1) + DestroyAnimVisualTask(taskId); +} + +void sub_8100898(struct Sprite* sprite) +{ + u8 a; + u8 b; + u16 c; + u16 x; + u16 y; + + if (gBattleAnimArgs[4] == 0) + { + DestroyAnimSprite(sprite); + } + else + { + if (gBattleAnimArgs[0] == 0) + { + a = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + b = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + } + else + { + a = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + b = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + } + + sprite->data[0] = gBattleAnimArgs[4]; + if (gBattleAnimArgs[1] == 0) + { + sprite->pos1.x = gBattleAnimArgs[2] + a; + sprite->pos1.y = gBattleAnimArgs[3] + b; + sprite->data[5] = a; + sprite->data[6] = b; + } + else + { + sprite->pos1.x = a; + sprite->pos1.y = b; + sprite->data[5] = gBattleAnimArgs[2] + a; + sprite->data[6] = gBattleAnimArgs[3] + b; + } + + x = sprite->pos1.x; + sprite->data[1] = x * 16; + y = sprite->pos1.y; + sprite->data[2] = y * 16; + sprite->data[3] = (sprite->data[5] - sprite->pos1.x) * 16 / gBattleAnimArgs[4]; + sprite->data[4] = (sprite->data[6] - sprite->pos1.y) * 16 / gBattleAnimArgs[4]; + c = ArcTan2Neg(sprite->data[5] - x, sprite->data[6] - y); + if (IsContest()) + c -= 0x8000; + + TrySetSpriteRotScale(sprite, 0, 0x100, 0x100, c); + sprite->callback = sub_81009A0; + } +} + +static void sub_81009A0(struct Sprite* sprite) +{ + if (sprite->data[0]) + { + sprite->data[1] += sprite->data[3]; + sprite->data[2] += sprite->data[4]; + sprite->pos1.x = sprite->data[1] >> 4 ; + sprite->pos1.y = sprite->data[2] >> 4 ; + sprite->data[0]--; + } + else + { + DestroySpriteAndMatrix(sprite); + } +} + +static void sub_81009DC(struct Sprite* sprite) +{ + if (sprite->animEnded) + DestroyAnimSprite(sprite); +} + +void sub_81009F8(struct Sprite* sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) != 0) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + else + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + + sprite->callback = RunStoredCallbackWhenAnimEnds; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void sub_8100A50(struct Sprite* sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) == 0) + StartSpriteAnim(sprite, 1); + + sprite->callback = sub_81009DC; + sub_80A6864(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; +} + +void sub_8100A94(struct Sprite* sprite) +{ + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[3] = gBattleAnimArgs[4]; + sprite->data[5] = gBattleAnimArgs[5]; + StartSpriteAffineAnim(sprite, gBattleAnimArgs[6]); + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = sub_80A66DC; +} + +// Moves the sprite in a diagonally slashing motion across the target mon. +// Used by moves such as MOVE_CUT and MOVE_AERIAL_ACE. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: slice direction; 0 = right-to-left, 1 = left-to-right +void AnimCuttingSlice(struct Sprite* sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + sprite->pos1.y += 8; + + sprite->callback = AnimSliceStep; + if (gBattleAnimArgs[2] == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + } + else + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->hFlip = 1; + } + + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[1] -= 0x400; + sprite->data[2] += 0x400; + sprite->data[5] = gBattleAnimArgs[2]; + if (sprite->data[5] == 1) + sprite->data[1] = -sprite->data[1]; +} + +void sub_8100B88(struct Sprite* sprite) +{ + u8 a; + u8 b; + switch (gBattleAnimArgs[3]) + { + case 1: + a = GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimTarget), 0); + b = GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimTarget), 1); + break; + case 2: + a = GetBattlerSpriteCoord(gBattleAnimTarget, 0); + b = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget))) + { + a = (GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimTarget), 0) + a) / 2; + b = (GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimTarget), 1) + b) / 2; + } + break; + case 0: + default: + a = GetBattlerSpriteCoord(gBattleAnimTarget, 0); + b = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + break; + } + + sprite->pos1.x = a; + sprite->pos1.y = b; + if (GetBattlerSide(gBattleAnimTarget) == 0) + sprite->pos1.y += 8; + + sprite->callback = AnimSliceStep; + if (gBattleAnimArgs[2] == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + } + else + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->hFlip = 1; + } + + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[1] -= 0x400; + sprite->data[2] += 0x400; + sprite->data[5] = gBattleAnimArgs[2]; + if (sprite->data[5] == 1) + sprite->data[1] = -sprite->data[1]; +} + +static void AnimSliceStep(struct Sprite* sprite) +{ + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + if (sprite->data[5] == 0) + sprite->data[1] += 0x18; + else + sprite->data[1] -= 0x18; + + sprite->data[2] -= 0x18; + sprite->pos2.x = sprite->data[3] >> 8; + sprite->pos2.y = sprite->data[4] >> 8; + sprite->data[0]++; + if (sprite->data[0] == 20) + { + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->data[0] = 3; + sprite->callback = WaitAnimForDuration; + } +} + +void unref_sub_8100D38(struct Sprite* sprite) +{ + if (sprite->data[2] > 1) + { + if (sprite->data[3] & 1) + { + sprite->invisible = 0; + gSprites[sprite->data[0]].invisible = 0; + gSprites[sprite->data[1]].invisible = 0; + } + else + { + sprite->invisible = 1; + gSprites[sprite->data[0]].invisible = 1; + gSprites[sprite->data[1]].invisible = 1; + } + + sprite->data[2] = 0; + sprite->data[3]++; + } + else + { + sprite->data[2]++; + } + + if (sprite->data[3] == 10) + { + DestroySprite(&gSprites[sprite->data[0]]); + DestroySprite(&gSprites[sprite->data[1]]); + DestroyAnimSprite(sprite); + } +} + +void sub_8100E1C(struct Sprite* sprite) +{ + sprite->data[0] = gBattleAnimArgs[2]; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + sprite->pos1.x -= gBattleAnimArgs[0]; + else + sprite->pos1.x += gBattleAnimArgs[0]; + + StartSpriteAnim(sprite, gBattleAnimArgs[5]); + sprite->data[1] = -gBattleAnimArgs[3]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[3] = gBattleAnimArgs[4]; + sprite->callback = sub_8100E80; + sprite->callback(sprite); +} + +static void sub_8100E80(struct Sprite* sprite) +{ + sprite->pos2.x = Cos(sprite->data[0], 100); + sprite->pos2.y = Sin(sprite->data[0], 20); + if (sprite->data[0] < 128) + sprite->subpriority = 0; + else + sprite->subpriority = 14; + + sprite->data[0] = (sprite->data[0] + sprite->data[1]) & 0xFF; + sprite->data[5] += 0x82; + sprite->pos2.y += sprite->data[5] >> 8; + sprite->data[2]++; + if (sprite->data[2] == sprite->data[3]) + DestroyAnimSprite(sprite); +} + +void sub_8100EF0(struct Sprite* sprite) +{ + if (IsContest()) + gBattleAnimArgs[1] += 8; + + sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, 0) + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, 1) + gBattleAnimArgs[1]; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER || IsContest()) + sprite->oam.priority = sub_80A8328(gBattleAnimAttacker) + 1; + else + sprite->oam.priority = sub_80A8328(gBattleAnimAttacker); + + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = (IndexOfSpritePaletteTag(ANIM_TAG_PROTECT) << 4) + 0x100; + sprite->data[7] = 16; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - sprite->data[7], sprite->data[7])); + sprite->callback = sub_8100FD4; +} + +static void sub_8100FD4(struct Sprite *sprite) +{ + int a; + int i; + sprite->data[5] += 96; + sprite->pos2.x = -(sprite->data[5] >> 8); + if (++sprite->data[1] > 1) + { + sprite->data[1] = 0; + a = gPlttBufferFaded[sprite->data[2] + 1]; + i = 0; + do + { + gPlttBufferFaded[sprite->data[2] + ++i] = gPlttBufferFaded[sprite->data[2] + i + 1]; + } while (i < 6); + + gPlttBufferFaded[sprite->data[2] + 7] = a; + } + + if (sprite->data[7] > 6 && sprite->data[0] >0 && ++sprite->data[6] > 1) + { + sprite->data[6] = 0; + sprite->data[7] -= 1; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - sprite->data[7], sprite->data[7])); + } + + if (sprite->data[0] > 0) + { + sprite->data[0] -= 1; + } + else if (++sprite->data[6] > 1) + { + sprite->data[6] = 0; + sprite->data[7]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - sprite->data[7], sprite->data[7])); + if (sprite->data[7] == 16) + { + sprite->invisible = 1; + sprite->callback = sub_80A67F4; + } + } +} + +void sub_81010CC(struct Sprite* sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 0xFFE8; + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = 0; + sprite->data[6] = 0; + sprite->data[7] = 16; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[6], sprite->data[7])); + sprite->callback = sub_8101138; +} + +static void sub_8101138(struct Sprite* sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (++sprite->data[2] > 0) + { + sprite->data[2] = 0; + if (((++sprite->data[1]) & 1) != 0) + { + if (sprite->data[6] <= 15) + sprite->data[6]++; + } + else if (sprite->data[7] > 0) + sprite->data[7]--; + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[6], sprite->data[7])); + if (sprite->data[6] == 16 && sprite->data[7] == 0) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + } + break; + case 1: + if (++sprite->data[1] > 8) + { + sprite->data[1] = 0; + StartSpriteAffineAnim(sprite, 1); + sprite->data[0]++; + } + break; + case 2: + sub_8101298(sprite, 16, 4); + if (++sprite->data[1] > 2) + { + sprite->data[1] = 0; + sprite->pos1.y++; + } + + if (++sprite->data[2] <= 29) + break; + + if (sprite->data[2] & 1) + { + if (sprite->data[6] > 0) + sprite->data[6]--; + } + else if (sprite->data[7] <= 15) + { + sprite->data[7]++; + } + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[6], sprite->data[7])); + if (sprite->data[6] == 0 && sprite->data[7] == 16) + { + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[0]++; + } + break; + case 3: + sprite->invisible = 1; + sprite->data[0]++; + break; + case 4: + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0)); + DestroyAnimSprite(sprite); + break; + } +} + +static void sub_8101298(struct Sprite* sprite, int unk1, int unk2) +{ + if (sprite->data[3] <= 11) + sprite->data[4] += 2; + + if ((u16)(sprite->data[3] - 0x12) <= 0x17) + sprite->data[4] -= 2; + + if ((sprite->data[3]) > 0x2F) + sprite->data[4] += 2; + + sprite->pos2.x = sprite->data[4] / 9; + sprite->pos2.y = sprite->data[4] / 14; + if (sprite->pos2.y < 0) + sprite->pos2.y *= -1; + + sprite->data[3]++; + if (sprite->data[3] > 0x3B) + sprite->data[3] = 0; +} + +void sub_810130C(struct Sprite* sprite) +{ + if (!gBattleAnimArgs[2]) + SetSpriteCoordsToAnimAttackerCoords(sprite); + + sub_80A6864(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[5]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[2] = gBattleAnimArgs[4]; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->callback = TranslateAnimLinearSimple; +} + +void sub_810135C(struct Sprite* sprite) +{ + u8 battler; + if (!gBattleAnimArgs[2]) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + if (IsDoubleBattle() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler))) + { + SetAverageBattlerPositions(battler, gBattleAnimArgs[6], &sprite->pos1.x, &sprite->pos1.y); + sub_80A6864(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + } + else + { + if (!gBattleAnimArgs[6]) + { + sprite->pos1.x = GetBattlerSpriteCoord(battler, 0); + sprite->pos1.y = GetBattlerSpriteCoord(battler, 1) + gBattleAnimArgs[1]; + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(battler, 2); + sprite->pos1.y = GetBattlerSpriteCoord(battler, 3) + gBattleAnimArgs[1]; + } + + sub_80A6864(sprite, gBattleAnimArgs[0]); + } + + sprite->data[0] = gBattleAnimArgs[5]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[2] = gBattleAnimArgs[4]; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->callback = TranslateAnimLinearSimple; +} + +void sub_8101440(struct Sprite* sprite) +{ + SetSpriteCoordsToAnimAttackerCoords(sprite); + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + else + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAnim(sprite, 1); + } + + sprite->callback = sub_81014A0; +} + +static void sub_81014A0(struct Sprite* sprite) +{ + if (++sprite->data[0] > 30) + { + sprite->pos2.y = (30 - sprite->data[0]) / 3; + sprite->pos2.x = Sin(sprite->data[1] * 4, 3); + sprite->data[1]++; + } + + if (sprite->animEnded) + DestroyAnimSprite(sprite); +} + +void sub_81014F4(struct Sprite* sprite) +{ + SetSpriteCoordsToAnimAttackerCoords(sprite); + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[3] = 1; + } + else + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[3] = 0xFFFF; + StartSpriteAffineAnim(sprite, 1); + } + + sprite->callback = sub_8101560; +} + +static void sub_8101560(struct Sprite* sprite) +{ + sprite->pos2.y = -(sprite->data[0] / 0x28); + sprite->pos2.x = sprite->data[4] / 10; + sprite->data[4] += sprite->data[3] * 2; + sprite->data[0] += sprite->data[1]; + if (++sprite->data[1] > 60) + DestroySpriteAndMatrix(sprite); +} + +void sub_81015AC(struct Sprite* sprite) +{ + sprite->pos1.x -= 32; + sprite->pos1.y -= 32; + sprite->data[0] = 20; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, sub_81015D4); +} + +static void sub_81015D4(struct Sprite* sprite) +{ + switch (sprite->data[5] & 1) + { + case 0: + sprite->data[0] = 1; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, sub_81015D4); + break; + case 1: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[0] = 8; + sprite->data[2] = sprite->pos1.x + gUnknown_08592CD0[sprite->data[5] >> 8][0]; + sprite->data[4] = sprite->pos1.y + gUnknown_08592CD0[sprite->data[5] >> 8][1]; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, sub_8101684); + sprite->data[5] += 0x100; + PlaySE12WithPanning(SE_W199, BattleAnimAdjustPanning(63)); + break; + } + + sprite->data[5] ^= 1; +} + +static void sub_8101684(struct Sprite* sprite) +{ + if ((sprite->data[5] >> 8) == 4) + { + sprite->data[0] = 10; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, sub_81016B8); + } + else + { + sprite->callback = sub_81015D4; + } +} + +static void sub_81016B8(struct Sprite* sprite) +{ + s16 a; + s16 b; + if (sprite->oam.affineParam == 0) + { + sprite->data[0] = 3; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, sub_8101774); + } + else + { + switch (sprite->oam.affineParam) + { + case 1: + a = -8; + b = -8; + break; + case 2: + a = -8; + b = 8; + break; + case 3: + a = 8; + b = -8; + break; + default: + a = 8; + b = 8; + break; + } + + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[0] = 6; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + a; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + b; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, sub_8101820); + } +} + +static void sub_8101774(struct Sprite* sprite) +{ + if (sprite->data[2] == 0) + { + if ((sprite->data[1] += 3) > 16) + sprite->data[1] = 16; + } + else if ((sprite->data[1] -= 3) < 0) + { + sprite->data[1] = 0; + } + + BlendPalettes(sub_80A75AC(1, 1, 1, 1, 1, 0, 0), sprite->data[1], RGB(31, 31, 31)); + if (sprite->data[1] == 16) + { + int pal; + sprite->data[2]++; + pal = sprite->oam.paletteNum; + LoadPalette(&gPlttBufferUnfaded[0x108 + pal * 16], pal * 16 | 0x101, 4); + PlaySE12WithPanning(SE_W043, BattleAnimAdjustPanning(63)); + } + else if (sprite->data[1] == 0) + { + sprite->callback = sub_8101820; + } +} + +static void sub_8101820(struct Sprite* sprite) +{ + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + { + sprite->data[1] = 0; + sprite->data[0] = 0; + sprite->callback = sub_8101848; + } +} + +static void sub_8101848(struct Sprite* sprite) +{ + if (sprite->data[0] % 3 == 0) + { + sprite->data[1]++; + sprite->invisible ^= 1; + } + + sprite->data[0]++; + if (sprite->data[1] == 8) + DestroyAnimSprite(sprite); +} + +void sub_8101898(struct Sprite* sprite) +{ + sprite->oam.affineParam = gBattleAnimArgs[0]; + if ((s16)sprite->oam.affineParam == 1) + { + sprite->pos1.x -= 0x18; + sprite->pos1.y -= 0x18; + } + else if ((s16)sprite->oam.affineParam == 2) + { + sprite->pos1.x -= 0x18; + sprite->pos1.y += 0x18; + sprite->oam.matrixNum = 16; + } + else if ((s16)sprite->oam.affineParam == 3) + { + sprite->pos1.x += 0x18; + sprite->pos1.y -= 0x18; + sprite->oam.matrixNum = 8; + } + else + { + sprite->pos1.x += 0x18; + sprite->pos1.y += 0x18; + sprite->oam.matrixNum = 24; + } + + sprite->oam.tileNum = (sprite->oam.tileNum + 16); + sprite->callback = sub_81015AC; + sprite->callback(sprite); +} + +void sub_8101940(struct Sprite* sprite) +{ + sprite->invisible = 1; + sprite->data[0] = 0; + switch (gBattleAnimArgs[0]) + { + case 0: + sprite->callback = sub_8101998; + break; + case 1: + sprite->callback = sub_8101A74; + break; + case 2: + sprite->callback = sub_8101AC4; + break; + default: + sprite->callback = sub_8101B84; + break; + } +} + +static void sub_8101998(struct Sprite* sprite) +{ + sprite->data[0] = 6; + sprite->data[1] = (GetBattlerSide(gBattleAnimAttacker)) ? 2 : -2; + sprite->data[2] = 0; + sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; + StoreSpriteCallbackInData6(sprite, sub_81019E8); + sprite->callback = TranslateMonBGUntil; +} + +static void sub_81019E8(struct Sprite* sprite) +{ + if (sprite->data[0] == 0) + { + sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; + PrepareBattlerSpriteForRotScale(sprite->data[3], ST_OAM_OBJ_NORMAL); + sprite->data[4] = (sprite->data[6] = GetBattlerSide(gBattleAnimAttacker)) ? 0x300 : 0xFFFFFD00; + sprite->data[5] = 0; + } + + sprite->data[5] += sprite->data[4]; + SetSpriteRotScale(sprite->data[3], 0x100, 0x100, sprite->data[5]); + SetBattlerSpriteYOffsetFromRotation(sprite->data[3]); + if (++sprite->data[0] > 3) + { + sprite->data[0] = 0; + sprite->callback = sub_8101B84; + } +} + +static void sub_8101A74(struct Sprite* sprite) +{ + sprite->data[0] = 4; + sprite->data[1] = (GetBattlerSide(gBattleAnimAttacker)) ? -3 : 3; + sprite->data[2] = 0; + sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; + StoreSpriteCallbackInData6(sprite, sub_8101B84); + sprite->callback = TranslateMonBGUntil; +} + +static void sub_8101AC4(struct Sprite* sprite) +{ + if (++sprite->data[0] > 8) + { + sprite->data[0] = 0; + sprite->callback = sub_8101AE8; + } +} + +static void sub_8101AE8(struct Sprite* sprite) +{ + if (sprite->data[0] == 0) + { + sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; + sprite->data[6] = GetBattlerSide(gBattleAnimAttacker); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + sprite->data[4] = 0xFC00; + sprite->data[5] = 0xC00; + } + else + { + sprite->data[4] = 0x400; + sprite->data[5] = 0xF400; + } + } + + sprite->data[5] += sprite->data[4]; + SetSpriteRotScale(sprite->data[3], 0x100, 0x100, sprite->data[5]); + SetBattlerSpriteYOffsetFromRotation(sprite->data[3]); + if (++sprite->data[0] > 2) + { + ResetSpriteRotScale(sprite->data[3]); + sprite->callback = sub_8101B84; + } +} + +static void sub_8101B84(struct Sprite* sprite) +{ + DestroyAnimSprite(sprite); +} + +void sub_8101B90(struct Sprite *sprite) +{ + sprite->data[0] = 0; + sprite->callback = sub_8101BA0; +} + +static void sub_8101BA0(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[1] = 0; + sprite->data[2] = gBattlerSpriteIds[gBattleAnimAttacker]; + sprite->data[3] = GetBattlerSide(gBattleAnimAttacker); + sprite->data[4] = (sprite->data[3] != B_SIDE_PLAYER) ? 0x200 : -0x200; + sprite->data[5] = 0; + PrepareBattlerSpriteForRotScale(sprite->data[2], ST_OAM_OBJ_NORMAL); + sprite->data[0]++; + // fall through + case 1: + sprite->data[5] += sprite->data[4]; + SetSpriteRotScale(sprite->data[2], 0x100, 0x100, sprite->data[5]); + SetBattlerSpriteYOffsetFromRotation(sprite->data[2]); + if (++sprite->data[1] > 3) + { + sprite->data[1] = 0; + sprite->data[4] *= -1; + sprite->data[0]++; + } + break; + case 2: + sprite->data[5] += sprite->data[4]; + SetSpriteRotScale(sprite->data[2], 0x100, 0x100, sprite->data[5]); + SetBattlerSpriteYOffsetFromRotation(sprite->data[2]); + if (++sprite->data[1] > 3) + { + ResetSpriteRotScale(sprite->data[2]); + DestroyAnimSprite(sprite); + } + break; + } +} + +void sub_8101C94(u8 taskId) +{ + u8 a; + + gTasks[taskId].data[0] = gBattlerSpriteIds[gBattleAnimAttacker]; + a = GetBattlerSide(gBattleAnimAttacker); + gTasks[taskId].data[1] = a; + gTasks[taskId].data[2] = 0; + switch (gBattleAnimArgs[0]) + { + default: + DestroyAnimVisualTask(taskId); + break; + case 0: + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 8; + gTasks[taskId].data[4] = 0; + gTasks[taskId].data[5] = 3; + if (a == 0) + gTasks[taskId].data[5] *= -1; + + gTasks[taskId].func = sub_8101D2C; + break; + case 1: + gTasks[taskId].data[3] = 8; + gTasks[taskId].data[4] = 0x600; + gTasks[taskId].data[5] = 0xC0; + if (a == 0) + { + gTasks[taskId].data[4] = -gTasks[taskId].data[4]; + gTasks[taskId].data[5] = -gTasks[taskId].data[5]; + } + + gTasks[taskId].func = sub_8101EEC; + break; + } +} + +static void sub_8101D2C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + switch (task->data[2]) + { + case 0: + if (task->data[3]) + { + task->data[4] += task->data[5]; + gSprites[task->data[0]].pos2.x = task->data[4]; + task->data[3]--; + } + else + { + task->data[3] = 8; + task->data[4] = 0; + task->data[5] = (task->data[1] == 0) ? -0xC0 : 0xC0; + PrepareBattlerSpriteForRotScale(task->data[0], ST_OAM_OBJ_NORMAL); + task->data[2]++; + } + break; + case 1: + if (task->data[3]) + { + task->data[4] += task->data[5]; + SetSpriteRotScale(task->data[0], 0x100, 0x100, task->data[4]); + SetBattlerSpriteYOffsetFromRotation(task->data[0]); + task->data[3]--; + } + else + { + task->data[3] = 8; + task->data[4] = gSprites[task->data[0]].pos2.x; + task->data[5] = (task->data[1] == 0) ? 0x2 : -0x2; + task->data[6] = 1; + task->data[2]++; + } + break; + case 2: + if (task->data[3]) + { + if (task->data[6]) + { + task->data[6]--; + } + else + { + if (task->data[3] & 1) + gSprites[task->data[0]].pos2.x = task->data[4] + task->data[5]; + else + gSprites[task->data[0]].pos2.x = task->data[4] - task->data[5]; + + task->data[6] = 1; + task->data[3]--; + } + } + else + { + gSprites[task->data[0]].pos2.x = task->data[4]; + task->data[3] = 12; + task->data[2]++; + } + break; + case 3: + if (task->data[3]) + { + task->data[3]--; + } + else + { + task->data[3] = 3; + task->data[4] = gSprites[task->data[0]].pos2.x; + task->data[5] = (task->data[1] == 0) ? 8 : -8; + task->data[2]++; + } + break; + case 4: + if (task->data[3]) + { + task->data[4] += task->data[5]; + gSprites[task->data[0]].pos2.x = task->data[4]; + task->data[3]--; + } + else + { + DestroyAnimVisualTask(taskId); + } + break; + } +} + +static void sub_8101EEC(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (task->data[3]) + { + task->data[4] -= task->data[5]; + SetSpriteRotScale(task->data[0], 0x100, 0x100, task->data[4]); + SetBattlerSpriteYOffsetFromRotation(task->data[0]); + task->data[3]--; + } + else + { + ResetSpriteRotScale(task->data[0]); + DestroyAnimVisualTask(taskId); + } +} + +void sub_8101F40(struct Sprite* sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2]; + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[2]; + } + + sprite->data[0] = 0; + sprite->data[1] = 0; + StoreSpriteCallbackInData6(sprite, sub_810208C); + sprite->callback = RunStoredCallbackWhenAnimEnds; +} + +void sub_8101FA8(struct Sprite* sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + 0xFFD0; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + StoreSpriteCallbackInData6(sprite, sub_8102044); + sprite->callback = RunStoredCallbackWhenAnimEnds; +} + +void sub_8101FF0(struct Sprite* sprite) +{ + sprite->pos1.x = sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + 0xFFD0 + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + StartSpriteAnim(sprite, 1); + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->callback = sub_810208C; +} + +static void sub_8102044(struct Sprite* sprite) +{ + if (++sprite->data[0] > 8) + { + sprite->data[0] = 12; + sprite->data[1] = 8; + sprite->data[2] = 0; + StoreSpriteCallbackInData6(sprite, sub_810207C); + sprite->callback = TranslateSpriteOverDuration; + } +} + +static void sub_810207C(struct Sprite* sprite) +{ + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->callback = sub_810208C; +} + +static void sub_810208C(struct Sprite* sprite) +{ + if (++sprite->data[0] > 1) + { + sprite->data[0] = 0; + sprite->invisible = !sprite->invisible; + if (++sprite->data[1] > 8) + DestroyAnimSprite(sprite); + } +} + +void sub_81020D8(struct Sprite* sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[2]; + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[2]; + } + + sprite->data[0] = 0; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->callback = sub_810213C; +} + +static void sub_810213C(struct Sprite* sprite) +{ + if (++sprite->data[0] > sprite->data[1]) + { + sprite->data[0] = 0; + sprite->pos1.y--; + } + + sprite->pos1.y -= sprite->data[0]; + if (sprite->animEnded) + DestroyAnimSprite(sprite); +} + +void sub_810217C(struct Sprite* sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) - 12; + sprite->data[0] = 0; + sprite->data[1] = 2; + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = 0; + sprite->data[5] = BattleAnimAdjustPanning(-64); + sprite->callback = sub_81021CC; +} + +static void sub_81021CC(struct Sprite* sprite) +{ + if (++sprite->data[0] >= sprite->data[1]) + { + sprite->invisible = !sprite->invisible; + if (!sprite->invisible) + { + sprite->data[4]++; + if (!(sprite->data[4] & 1)) + PlaySE12WithPanning(SE_W207B, sprite->data[5]); + } + + sprite->data[0] = 0; + if (++sprite->data[2] > 1) + { + sprite->data[2] = 0; + sprite->data[1]++; + } + } + + if (sprite->animEnded && sprite->data[1] > 16 && sprite->invisible) + DestroyAnimSprite(sprite); +} + +void sub_8102268(struct Sprite* sprite) +{ + if (sprite->data[0] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[1]; + if (IsContest()) + sprite->pos1.y += 10; + + sprite->data[0]++; + } + + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + DestroyAnimSprite(sprite); +} + +void sub_81022D4(u8 taskId) +{ + if (gTasks[taskId].data[2] == 1) + { + gBattleAnimArgs[7] = 0xFFFF; + gTasks[taskId].data[2]++; + } + else if (gTasks[taskId].data[2] == 2) + { + DestroyAnimVisualTask(taskId); + } + else + { + if (++gTasks[taskId].data[0] == 4) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - gTasks[taskId].data[1], gTasks[taskId].data[1])); + if (gTasks[taskId].data[1] == 16) + gTasks[taskId].data[2]++; + } + } +} + +void sub_810234C(struct Sprite* sprite) +{ + sub_80A6980(sprite, FALSE); + sprite->animPaused = 1; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->callback = sub_810237C; +} + +static void sub_810237C(struct Sprite* sprite) +{ + if (sprite->data[0]) + { + sprite->data[0]--; + } + else + { + sprite->animPaused = 0; + sprite->data[0] = 30; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + } +} + +void sub_81023E0(u8 taskId) +{ + if (++gTasks[taskId].data[0] == 4) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1])); + if (gTasks[taskId].data[1] == 16) + DestroyAnimVisualTask(taskId); + } +} + +void unref_sub_8102434(u8 taskId) +{ + u8 i; + for (i = 0; i < gBattlersCount; i++) + { + if (gBattleAnimArgs[0] == 1 && GetBattlerSide(i) == B_SIDE_PLAYER) + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[i]); + + if (gBattleAnimArgs[1] == 1 && GetBattlerSide(i) == B_SIDE_OPPONENT) + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[i]); + } + + DestroyAnimVisualTask(taskId); +} + +void unref_sub_81024A8(u8 taskId) +{ + u8 i; + for (i = 0; i < gBattlersCount; i++) + SetHealthboxSpriteVisible(gHealthboxSpriteIds[i]); + + DestroyAnimVisualTask(taskId); +} + +void sub_81024E0(struct Sprite* sprite) +{ + if (IsContest()) + { + sprite->pos1.x = 48; + sprite->pos1.y = 40; + } + else + { + sprite->pos1.x = gBattleAnimArgs[0]; + sprite->pos1.y = gBattleAnimArgs[1]; + } + + sprite->oam.shape = 0; + sprite->oam.size = 3; + sprite->data[0] = 0; + sprite->callback = sub_8102528; +} + +static void sub_8102528(struct Sprite* sprite) +{ + if (sprite->data[0]) + DestroyAnimSprite(sprite); +} + +void sub_8102540(struct Sprite* sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = gBattleAnimArgs[1]; + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = 1; + sprite->callback = sub_8102584; +} + +static void sub_8102584(struct Sprite* sprite) +{ + if (++sprite->data[1] > 1) + { + sprite->data[1] = 0; + if (sprite->data[2] < 120) + { + sprite->pos1.y++; + sprite->data[2]++; + } + } + + if (sprite->data[0]) + DestroyAnimSprite(sprite); +} + +void sub_81026A8(u8); + + +void sub_81025C0(u8 taskId) +{ + int a = sub_80A75AC(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; + int b; + int c; + int d; + + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = a; + gTasks[taskId].data[4] = 0; + gTasks[taskId].data[5] = 0; + gTasks[taskId].data[6] = 0; + gTasks[taskId].data[7] = 13; + gTasks[taskId].data[8] = 14; + gTasks[taskId].data[9] = 15; + b = sub_80A76C4(1, 1, 1, 1); + c = a | b; + StorePointerInVars(&gTasks[taskId].data[14], &gTasks[taskId].data[15], (void*)c); + b = b | (0x10000 << IndexOfSpritePaletteTag(ANIM_TAG_MOON)); + d = IndexOfSpritePaletteTag(ANIM_TAG_GREEN_SPARKLE); + BeginNormalPaletteFade((0x10000 << d) | b, 0, 0, 16, RGB(27, 29, 31)); + gTasks[taskId].func = sub_81026A8; + gTasks[taskId].func(taskId); +} + +void sub_81026A8(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 0) + { + u16 color; + u16 bitmask; + u16 r3; + u16 i; + u16 j; + task->data[1] = 0; + if (++task->data[2] <= 15) + { + u16 red; + u16 green; + u16 blue; + task->data[4] += task->data[7]; + task->data[5] += task->data[8]; + task->data[6] += task->data[9]; + red = task->data[4] >> 3; + green = task->data[5] >> 3; + blue = task->data[6] >> 3; + color = RGB(red, green, blue); + } + else + { + color = RGB(27, 29, 31); + task->data[0]++; + } + + bitmask = 1; + r3 = 0; + for (i = 0; i <= 15; i++) + { + if (task->data[3] & bitmask) + { + for (j = 1; j <= 15; j++) + { + gPlttBufferFaded[r3 + j] = color; + } + } + + bitmask <<= 1; + r3 += 16; + } + } + break; + case 1: + if (!gPaletteFade.active) + { + u8 spriteId; + for (spriteId = 0; spriteId < MAX_SPRITES; spriteId++) + { + if (gSprites[spriteId].template == &gUnknown_08592EBC || gSprites[spriteId].template == &gBattleAnimSpriteTemplate_8592EEC) + gSprites[spriteId].data[0] = 1; + } + + task->data[1] = 0; + task->data[0]++; + } + break; + case 2: + if (++task->data[1] > 30) + { + BeginNormalPaletteFade((u32)LoadPointerFromVars(task->data[14], task->data[15]), 0, 16, 0, RGB(27, 29, 31)); + task->data[0]++; + } + break; + case 3: + if (!gPaletteFade.active) + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_8102844(struct Sprite* sprite) +{ + if (gBattleAnimArgs[2] < 2) + gBattleAnimArgs[2] = 2; + + if (gBattleAnimArgs[2] > 0x7F) + gBattleAnimArgs[2] = 0x7F; + + sprite->data[0] = 0; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[1]; + sprite->data[6] = sprite->pos1.x; + sprite->data[7] = sprite->pos1.y; + if (IsContest()) + { + sprite->oam.matrixNum = 8; + sprite->pos1.x += 40; + sprite->pos1.y += 20; + sprite->data[2] = sprite->pos1.x << 7; + sprite->data[3] = -0x1400 / sprite->data[1]; + sprite->data[4] = sprite->pos1.y << 7; + sprite->data[5] = -0xA00 / sprite->data[1]; + } + else if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + sprite->pos1.x -= 40; + sprite->pos1.y += 20; + sprite->data[2] = sprite->pos1.x << 7; + sprite->data[3] = 0x1400 / sprite->data[1]; + sprite->data[4] = sprite->pos1.y << 7; + sprite->data[5] = -0xA00 / sprite->data[1]; + } + else + { + sprite->pos1.x += 40; + sprite->pos1.y -= 20; + sprite->data[2] = sprite->pos1.x << 7; + sprite->data[3] = -0x1400 / sprite->data[1]; + sprite->data[4] = sprite->pos1.y << 7; + sprite->data[5] = 0xA00 / sprite->data[1]; + sprite->oam.matrixNum = 24; + } + + sprite->callback = sub_810296C; +} + +static void sub_810296C(struct Sprite* sprite) +{ + sprite->data[2] += sprite->data[3]; + sprite->data[4] += sprite->data[5]; + sprite->pos1.x = sprite->data[2] >> 7; + sprite->pos1.y = sprite->data[4] >> 7; + if (--sprite->data[1] == 1) + { + sprite->pos1.x = sprite->data[6]; + sprite->pos1.y = sprite->data[7]; + } + + if (sprite->data[1] == 0) + DestroyAnimSprite(sprite); +} + +void sub_81029B4(u8 taskId) +{ + u16 i; + int obj; + u16 r3; + u16 r4; + struct Task* task = &gTasks[taskId]; + task->data[0] = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->data[1] = AllocSpritePalette(ANIM_TAG_BENT_SPOON); + r3 = (task->data[1] * 16) + 0x100; + r4 = (gSprites[task->data[0]].oam.paletteNum + 16) << 4; + for (i = 1; i < 16; i++) + gPlttBufferUnfaded[r3 + i] = gPlttBufferUnfaded[r4 + i]; + + BlendPalette(r3, 16, 11, RGB(0, 0, 0)); + task->data[3] = 0; + i = 0; + while (i < 2 && (obj = CloneBattlerSpriteWithBlend(0)) >= 0) + { + gSprites[obj].oam.paletteNum = task->data[1]; + gSprites[obj].data[0] = 0; + gSprites[obj].data[1] = i << 7; + gSprites[obj].data[2] = taskId; + gSprites[obj].callback = sub_8102B3C; + task->data[3]++; + i++; + } + + task->func = sub_8102AE0; + if (sub_80A8364(gBattleAnimAttacker) == 1) + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON); + else + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON); +} + +static void sub_8102AE0(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (!task->data[3]) + { + if (sub_80A8364(gBattleAnimAttacker) == 1) + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON); + else + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON); + + FreeSpritePaletteByTag(ANIM_TAG_BENT_SPOON); + DestroyAnimVisualTask(taskId); + } +} + +static void sub_8102B3C(struct Sprite* sprite) +{ + if (++sprite->data[3] > 1) + { + sprite->data[3] = 0; + sprite->data[0]++; + } + + if (sprite->data[0] > 64) + { + gTasks[sprite->data[2]].data[3]--; + obj_delete_but_dont_free_vram(sprite); + } + else + { + sprite->data[4] = gSineTable[sprite->data[0]] / 6; + sprite->data[5] = gSineTable[sprite->data[0]] / 13; + sprite->data[1] = (sprite->data[1] + sprite->data[5]) & 0xFF; + sprite->pos2.x = Sin(sprite->data[1], sprite->data[4]); + } +} + +void sub_8102BCC(struct Sprite* sprite) +{ + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->callback = RunStoredCallbackWhenAnimEnds; +} + +void sub_8102BE8(u8 taskId) +{ + u16 i; + u16 j; + u16 index; + + index = IndexOfSpritePaletteTag(gUnknown_08593020[0][0]); + if (index != 0xFF) + { + index = (index << 4) + 0x100; + for (i = 1; i < ARRAY_COUNT(gUnknown_08593020[0]); i++) + gPlttBufferFaded[index + i] = gUnknown_08593020[0][i]; + } + + for (j = 1; j < ARRAY_COUNT(gUnknown_08593020); j++) + { + index = AllocSpritePalette(gUnknown_08593020[j][0]); + if (index != 0xFF) + { + index = (index << 4) + 0x100; + for (i = 1; i < ARRAY_COUNT(gUnknown_08593020[0]); i++) + gPlttBufferFaded[index + i] = gUnknown_08593020[j][i]; + } + } + DestroyAnimVisualTask(taskId); +} + +// clears the rainbow effect for musical notes. +void sub_8102CA0(u8 taskId) +{ + u16 i; + for (i = 1; i < ARRAY_COUNT(gUnknown_08593020); i++) + FreeSpritePaletteByTag(gUnknown_08593020[i][0]); + + DestroyAnimVisualTask(taskId); +} + +void sub_8102CD4(struct Sprite* sprite) +{ + u8 index; + u8 a; + u8 b; + SetSpriteCoordsToAnimAttackerCoords(sprite); + StartSpriteAnim(sprite, gBattleAnimArgs[0]); + if ((index = IndexOfSpritePaletteTag(gUnknown_08593020[gBattleAnimArgs[1]][0])) != 0xFF) + sprite->oam.paletteNum = index; + + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[2] = 0; + sprite->data[3] = gBattleAnimArgs[2]; + if (IsContest()) + { + a = 48; + b = 40; + } + else + { + a = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + b = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + } + + sprite->data[4] = sprite->pos1.x << 4; + sprite->data[5] = sprite->pos1.y << 4; + sub_8102D8C(a - sprite->pos1.x, b - sprite->pos1.y, &sprite->data[6], &sprite->data[7], 40); + sprite->callback = sub_8102DE4; +} + +static void sub_8102D8C(s16 a, s16 b, s16* c, s16* d, s8 e) +{ + int f; + int g; + if (a < 0) + e = -e; + + f = a << 8; + g = f / e; + if (g == 0) + g = 1; + + *c = f / g; + *d = (b << 8) / g; +} + +static void sub_8102DE4(struct Sprite* sprite) +{ + int b; + s16 a; + int c; + u8 index; + sprite->data[0]++; + b = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8); + sprite->data[4] += sprite->data[6]; + sprite->data[5] += sprite->data[7]; + sprite->pos1.x = sprite->data[4] >> 4; + sprite->pos1.y = sprite->data[5] >> 4; + sprite->pos2.y = Sin(b, 15); + a = (u16)sprite->pos1.y; + c = (u16)sprite->pos1.x; + + if ((u32)((c + 16) << 16) > (0x110) << 16 || a < -16 || a > 0x80) + { + DestroySpriteAndMatrix(sprite); + } + else + { + if (sprite->data[3] && ++sprite->data[2] > sprite->data[3]) + { + sprite->data[2] = 0; + if (++sprite->data[1] > 3) + sprite->data[1] = 0; + + index = IndexOfSpritePaletteTag(gUnknown_08593020[sprite->data[1]][0]); + if (index != 0xFF) + sprite->oam.paletteNum = index; + } + } +} + +void sub_8102EB0(struct Sprite* sprite) +{ + int a; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + { + a = gBattleAnimArgs[1]; + (u16)gBattleAnimArgs[1] = -a; + } + + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2]; + StartSpriteAnim(sprite, gBattleAnimArgs[0]); + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = sprite->pos1.x << 4; + sprite->data[5] = sprite->pos1.y << 4; + sprite->data[6] = (gBattleAnimArgs[1] << 4) / 5; + sprite->data[7] = (gBattleAnimArgs[2] << 7) / 5; + sprite->callback = sub_8102F40; +} + +static void sub_8102F40(struct Sprite* sprite) +{ + sprite->data[4] += sprite->data[6]; + sprite->data[5] += sprite->data[7]; + sprite->pos1.x = sprite->data[4] >> 4; + sprite->pos1.y = sprite->data[5] >> 4; + if (sprite->data[0] > 5 && sprite->data[3] == 0) + { + sprite->data[2] = (sprite->data[2] + 16) & 0xFF; + sprite->pos2.x = Cos(sprite->data[2], 18); + sprite->pos2.y = Sin(sprite->data[2], 18); + if (sprite->data[2] == 0) + sprite->data[3] = 1; + } + + if (++sprite->data[0] == 48) + DestroySpriteAndMatrix(sprite); +} + +void sub_8102FB8(struct Sprite* sprite) +{ + s16 a; + if (gBattleAnimArgs[0] == 1) + { + sprite->oam.matrixNum = 8; + a = 16; + } + else + { + a = -16; + } + + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + a; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 8; + sprite->data[0] = 8; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void sub_8103028(struct Sprite* sprite) +{ + s16 xDiff; + u8 index; + SetSpriteCoordsToAnimAttackerCoords(sprite); + sprite->pos1.y += 8; + StartSpriteAnim(sprite, gBattleAnimArgs[1]); + index = IndexOfSpritePaletteTag(gUnknown_08593020[gBattleAnimArgs[2]][0]); + if (index != 0xFF) + sprite->oam.paletteNum = index; + + xDiff = (gBattleAnimArgs[0] == 0) ? -32 : 32; + sprite->data[0] = 40; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = xDiff + sprite->data[1]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sprite->data[3] - 40; + InitAnimLinearTranslation(sprite); + sprite->data[5] = gBattleAnimArgs[3]; + sprite->callback = sub_81030B0; +} + +static void sub_81030B0(struct Sprite* sprite) +{ + if (TranslateAnimLinear(sprite) == 0) + { + s16 xDiff; + xDiff = Sin(sprite->data[5], 8); + if (sprite->pos2.x < 0) + xDiff = -xDiff; + + sprite->pos2.x += xDiff; + sprite->pos2.y += Sin(sprite->data[5], 4); + sprite->data[5] = (sprite->data[5] + 8) & 0xFF; + } + else + { + DestroyAnimSprite(sprite); + } +} + +void sub_810310C(u8 battler, struct Sprite* sprite) +{ + if (GetBattlerSide(battler) == B_SIDE_PLAYER) + sprite->pos1.x = sub_80A861C(battler, 5) + 8; + else + sprite->pos1.x = sub_80A861C(battler, 4) - 8; + + sprite->pos1.y = GetBattlerSpriteCoord(battler, 3) - (s16)sub_80A861C(battler, 0) / 4; +} + +void sub_8103164(struct Sprite* sprite) +{ + u8 a; + u8 battler; + if (gBattleAnimArgs[0] == 0) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + sub_810310C(battler, sprite); + a = (GetBattlerSide(battler) == B_SIDE_PLAYER) ? 0 : 1; + sprite->data[0] = gBattleAnimArgs[1]; + sprite->data[1] = a + 2; + StartSpriteAnim(sprite, a); + StoreSpriteCallbackInData6(sprite, sub_81031D0); + sprite->callback = RunStoredCallbackWhenAnimEnds; +} + +static void sub_81031D0(struct Sprite* sprite) +{ + if (--sprite->data[0] == 0) + { + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + StartSpriteAnim(sprite, sprite->data[1]); + sprite->callback = RunStoredCallbackWhenAnimEnds; + } +} + +void sub_8103208(struct Sprite* sprite) +{ + u8 battler; + if (gBattleAnimArgs[0] == 0) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + sub_810310C(battler, sprite); + sprite->data[0] = 0; + StoreSpriteCallbackInData6(sprite, sub_8103250); + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; +} + +static void sub_8103250(struct Sprite* sprite) +{ + if (++sprite->data[0] > 16) + { + StartSpriteAffineAnim(sprite, 1); + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; + } +} + +void sub_8103284(struct Sprite* sprite) +{ + u8 battler; + if (gBattleAnimArgs[0] == 0) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + sprite->pos1.x = GetBattlerSpriteCoord(battler, 0); + sprite->pos1.y = sub_80A861C(battler, 2); + if (sprite->pos1.y <= 9) + sprite->pos1.y = 10; + + sprite->data[0] = 1; + sprite->data[1] = 0; + sprite->data[2] = sprite->subpriority; + sprite->data[3] = sprite->subpriority + 4; + sprite->data[4] = 0; + StoreSpriteCallbackInData6(sprite, sub_8103300); + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; +} + +static void sub_8103300(struct Sprite* sprite) +{ + if (++sprite->data[4] > 12) + sprite->callback = sub_8103320; +} + +static void sub_8103320(struct Sprite* sprite) +{ + s16 temp; + s16 temp2; + sprite->data[1] += 4; + if (sprite->data[1] > 254) + { + if (--sprite->data[0] == 0) + { + sprite->pos2.x = 0; + sprite->callback = sub_8103250; + return; + } + else + { + sprite->data[1] &= 0xFF; + } + } + + if (sprite->data[1] > 0x4F) + sprite->subpriority = sprite->data[3]; + + if (sprite->data[1] > 0x9F) + sprite->subpriority = sprite->data[2]; + + temp = gSineTable[sprite->data[1]]; + sprite->pos2.x = (temp2 = temp >> 3) + (temp2 >> 1); +} + +void sub_8103390(struct Sprite* sprite) +{ + u8 bank; + if (gBattleAnimArgs[0] == 0) + bank = gBattleAnimAttacker; + else + bank = gBattleAnimTarget; + + sub_810310C(bank, sprite); + if (GetBattlerSide(bank) == B_SIDE_PLAYER) + { + StartSpriteAnim(sprite, 0); + sprite->data[0] = 2; + } + else + { + StartSpriteAnim(sprite, 1); + sprite->data[0] = 3; + } + + sprite->callback = sub_81033F0; +} + +static void sub_81033F0(struct Sprite* sprite) +{ + if (++sprite->data[1] > 10) + { + sprite->data[1] = 0; + StartSpriteAnim(sprite, sprite->data[0]); + StoreSpriteCallbackInData6(sprite, sub_810342C); + sprite->callback = RunStoredCallbackWhenAnimEnds; + } +} + +static void sub_810342C(struct Sprite* sprite) +{ + if (++sprite->data[1] > 5) + DestroyAnimSprite(sprite); +} diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c new file mode 100755 index 000000000..244823d13 --- /dev/null +++ b/src/battle_anim_effects_2.c @@ -0,0 +1,3884 @@ +#include "global.h" +#include "alloc.h" +#include "battle_anim.h" +#include "battle_interface.h" +#include "decompress.h" +#include "gpu_regs.h" +#include "graphics.h" +#include "main.h" +#include "math_util.h" +#include "palette.h" +#include "random.h" +#include "scanline_effect.h" +#include "sound.h" +#include "trig.h" +#include "util.h" +#include "constants/rgb.h" +#include "constants/songs.h" + +extern void sub_8108C94(struct Sprite *); +extern void sub_810310C(u8, struct Sprite *); + +void sub_8103448(struct Sprite *); +void sub_8103498(struct Sprite *); +void sub_810358C(struct Sprite *); +void sub_8103620(struct Sprite *); +void Anim_KinesisZapEnergy(struct Sprite *); +void Anim_SwordsDanceBlade(struct Sprite *); +void AnimSonicBoomProjectile(struct Sprite *); +void sub_8103AA4(struct Sprite *); +void sub_8103FE8(struct Sprite *); +void sub_8104088(struct Sprite *); +void sub_810413C(struct Sprite *); +void sub_81041C4(struct Sprite *); +void Anim_RazorWindTornado(struct Sprite *); +void Anim_ViceGripPincer(struct Sprite *); +void Anim_GuillotinePincer(struct Sprite *); +void Anim_BreathPuff(struct Sprite *); +void Anim_AngerMark(struct Sprite *); +void sub_810501C(struct Sprite *); +void sub_81051C4(struct Sprite *); +void sub_81052A4(struct Sprite *); +void sub_81054E8(struct Sprite *); +void sub_8105538(struct Sprite *); +void sub_8105C48(struct Sprite *); +void sub_8105DE8(struct Sprite *); +void sub_8105E60(struct Sprite *); +void sub_8106140(struct Sprite *); +void sub_81061C4(struct Sprite *); +void sub_810624C(struct Sprite *); +void AnimOrbitFast(struct Sprite *); +void AnimOrbitScatter(struct Sprite *); +void sub_8106944(struct Sprite *); +void sub_81069B8(struct Sprite *); +void sub_81069D0(struct Sprite *); +void sub_8106AD0(struct Sprite *); +void sub_8106B54(struct Sprite *); +void sub_8106C80(struct Sprite *); +void sub_8106CD0(struct Sprite *); +void sub_8106E00(struct Sprite *); +void sub_8106F00(struct Sprite *); +void sub_8106F60(struct Sprite *); +void sub_81070AC(struct Sprite *); +static void sub_81034D8(struct Sprite *); +static void sub_8103658(struct Sprite *); +static void sub_8103680(struct Sprite *); +static void AnimTask_WithdrawStep(u8); +static void Anim_SwordsDanceBladeStep(struct Sprite *); +static void sub_8104018(struct Sprite *); +static void sub_8104154(struct Sprite *); +static void sub_810421C(struct Sprite *); +static void sub_81042A0(struct Sprite *); +static void Anim_ViceGripPincerStep(struct Sprite *); +static void Anim_GuillotinePincerStep1(struct Sprite *); +static void Anim_GuillotinePincerStep2(struct Sprite *); +static void Anim_GuillotinePincerStep3(struct Sprite *); +static void AnimTask_GrowAndGreyscaleStep(u8); +static void AnimTask_MinimizeStep1(u8); +static void CreateMinimizeSprite(struct Task *, u8); +static void ClonedMinizeSprite_Step(struct Sprite *); +static void AnimTask_SplashStep(u8); +static void AnimTask_GrowAndShrinkStep(u8); +static void sub_8104C78(u8); +static void sub_8104D28(u8); +static void sub_8104F54(u8); +static void sub_8105078(struct Sprite *); +static void sub_810557C(struct Sprite *); +static void sub_81055F4(struct Sprite *); +static void sub_810561C(struct Sprite *); +static void sub_8105694(struct Sprite *); +static void sub_81056D4(struct Sprite *); +static void sub_810571C(struct Sprite *); +static void sub_810575C(struct Sprite *); +static void sub_81057B8(u8); +static void sub_8105878(u8); +static void sub_81059E0(u8); +static void sub_8105B08(u8); +static void sub_8105F30(u8); +static void sub_8105F84(u8); +static void sub_810618C(struct Sprite *); +static void sub_810627C(struct Sprite *); +static void sub_81063A8(u8); +static void sub_81065EC(u8); +static void AnimOrbitFastStep(struct Sprite *); +static void AnimOrbitScatterStep(struct Sprite *); +static void sub_8106D5C(struct Sprite *); +static void sub_8106DD4(u8); +static void sub_8106EC8(struct Sprite *); +static void sub_8107018(struct Sprite *); +static void sub_810703C(struct Sprite *); + +const struct SpriteTemplate gUnknown_08593264 = +{ + .tileTag = ANIM_TAG_FINGER, + .paletteTag = ANIM_TAG_FINGER, + .oam = &gUnknown_08524914, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8103448, +}; + +const union AnimCmd gUnknown_0859327C[] = +{ + ANIMCMD_FRAME(4, 1), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08593284[] = +{ + gUnknown_0859327C, +}; + +const struct SpriteTemplate gUnknown_08593288 = +{ + .tileTag = ANIM_TAG_MUSIC_NOTES, + .paletteTag = ANIM_TAG_MUSIC_NOTES, + .oam = &gUnknown_0852490C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8103498, +}; + +const struct SpriteTemplate gUnknown_085932A0 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_810358C, +}; + +extern const union AffineAnimCmd *const gUnknown_08597060[]; +const struct SpriteTemplate gUnknown_085932B8 = +{ + .tileTag = ANIM_TAG_CLAMP, + .paletteTag = ANIM_TAG_CLAMP, + .oam = &gUnknown_08524A9C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08597060, + .callback = sub_8103620, +}; + +const union AnimCmd gUnknown_085932D0[] = +{ + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(48, 3), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_085932E4[] = +{ + gUnknown_085932D0, +}; + +const union AffineAnimCmd gUnknown_085932E8[] = +{ + AFFINEANIMCMD_FRAME(0x50, 0x50, 0, 0), + AFFINEANIMCMD_FRAME(0x9, 0x9, 0, 18), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gUnknown_08593300[] = +{ + gUnknown_085932E8, +}; + +const struct SpriteTemplate gUnknown_08593304 = +{ + .tileTag = ANIM_TAG_UNUSED_EXPLOSION, + .paletteTag = ANIM_TAG_UNUSED_EXPLOSION, + .oam = &gUnknown_08524974, + .anims = gUnknown_085932E4, + .images = NULL, + .affineAnims = gUnknown_08593300, + .callback = sub_80A77C8, +}; + +const union AnimCmd gUnknown_0859331C[] = +{ + ANIMCMD_FRAME(0, 3, .hFlip = TRUE), + ANIMCMD_FRAME(8, 3, .hFlip = TRUE), + ANIMCMD_FRAME(16, 3, .hFlip = TRUE), + ANIMCMD_FRAME(24, 3, .hFlip = TRUE), + ANIMCMD_FRAME(32, 3, .hFlip = TRUE), + ANIMCMD_FRAME(40, 3, .hFlip = TRUE), + ANIMCMD_FRAME(48, 3, .hFlip = TRUE), + ANIMCMD_LOOP(1), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08593340[] = +{ + gUnknown_0859331C, +}; + +const struct SpriteTemplate gKinesisZapEnergySpriteTemplate = +{ + .tileTag = ANIM_TAG_ALERT, + .paletteTag = ANIM_TAG_ALERT, + .oam = &gUnknown_08524934, + .anims = gUnknown_08593340, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = Anim_KinesisZapEnergy, +}; + +const union AffineAnimCmd gUnknown_0859335C[] = +{ + AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x14, 0x0, 0, 12), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 32), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gUnknown_0859337C[] = +{ + gUnknown_0859335C, +}; + +const struct SpriteTemplate gSwordsDanceBladeSpriteTemplate = +{ + .tileTag = ANIM_TAG_SWORD, + .paletteTag = ANIM_TAG_SWORD, + .oam = &gUnknown_08524ADC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_0859337C, + .callback = Anim_SwordsDanceBlade, +}; + +const struct SpriteTemplate gSonicBoomSpriteTemplate = +{ + .tileTag = ANIM_TAG_AIR_WAVE, + .paletteTag = ANIM_TAG_AIR_WAVE, + .oam = &gUnknown_08524B14, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSonicBoomProjectile, +}; + +const struct SpriteTemplate gUnknown_085933B0 = +{ + .tileTag = ANIM_TAG_AIR_WAVE, + .paletteTag = ANIM_TAG_AIR_WAVE, + .oam = &gUnknown_08524A54, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8103AA4, +}; + +const union AffineAnimCmd gUnknown_085933C8[] = +{ + AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0), + AFFINEANIMCMD_FRAME(0x7, 0x7, 0, -56), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_085933E0[] = +{ + AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 10), + AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10), + AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10), + AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10), + AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10), + AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10), + AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gUnknown_08593420[] = +{ + gUnknown_085933C8, +}; + +const union AffineAnimCmd *const gUnknown_08593424[] = +{ + gUnknown_085933E0, +}; + +const struct SpriteTemplate gSupersonicWaveSpriteTemplate = +{ + .tileTag = ANIM_TAG_GOLD_RING, + .paletteTag = ANIM_TAG_GOLD_RING, + .oam = &gUnknown_08524A14, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08593420, + .callback = TranslateAnimSpriteToTargetMonLocation, +}; + +const struct SpriteTemplate gScreechWaveSpriteTemplate = +{ + .tileTag = ANIM_TAG_PURPLE_RING, + .paletteTag = ANIM_TAG_PURPLE_RING, + .oam = &gUnknown_08524A14, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08593420, + .callback = TranslateAnimSpriteToTargetMonLocation, +}; + +const struct SpriteTemplate gUnknown_08593458 = +{ + .tileTag = ANIM_TAG_METAL_SOUND_WAVES, + .paletteTag = ANIM_TAG_METAL_SOUND_WAVES, + .oam = &gUnknown_08524A1C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08593420, + .callback = TranslateAnimSpriteToTargetMonLocation, +}; + +const struct SpriteTemplate gUnknown_08593470 = +{ + .tileTag = ANIM_TAG_BLUE_RING_2, + .paletteTag = ANIM_TAG_BLUE_RING_2, + .oam = &gUnknown_08524A14, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08593424, + .callback = sub_8108C94, +}; + +const struct SpriteTemplate gUnknown_08593488 = +{ + .tileTag = ANIM_TAG_LARGE_FRESH_EGG, + .paletteTag = ANIM_TAG_LARGE_FRESH_EGG, + .oam = &gUnknown_0852490C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A78AC, +}; + +const struct SpriteTemplate gUnknown_085934A0 = +{ + .tileTag = ANIM_TAG_UNUSED_VOID_LINES, + .paletteTag = ANIM_TAG_UNUSED_VOID_LINES, + .oam = &gUnknown_08524A3C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8103FE8, +}; + +const union AnimCmd gUnknown_085934B8[] = +{ + ANIMCMD_FRAME(8, 1), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_085934C0[] = +{ + gUnknown_085934B8, +}; + +const union AffineAnimCmd gUnknown_085934C4[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 10, 1), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd *const gUnknown_085934D4[] = +{ + gUnknown_085934C4, +}; + +const struct SpriteTemplate gUnknown_085934D8 = +{ + .tileTag = ANIM_TAG_COIN, + .paletteTag = ANIM_TAG_COIN, + .oam = &gUnknown_0852496C, + .anims = gUnknown_085934C0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8104088, +}; + +const struct SpriteTemplate gUnknown_085934F0 = +{ + .tileTag = ANIM_TAG_COIN, + .paletteTag = ANIM_TAG_COIN, + .oam = &gUnknown_0852496C, + .anims = gUnknown_085934C0, + .images = NULL, + .affineAnims = gUnknown_085934D4, + .callback = sub_810413C, +}; + +const union AffineAnimCmd gUnknown_08593508[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 20, 1), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd *const gUnknown_08593518[] = +{ + gUnknown_08593508, +}; + +const struct SpriteTemplate gUnknown_0859351C = +{ + .tileTag = ANIM_TAG_SEED, + .paletteTag = ANIM_TAG_SEED, + .oam = &gUnknown_0852496C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08593518, + .callback = sub_81041C4, +}; + +const union AffineAnimCmd gUnknown_08593534[] = +{ + AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x4, 0x0, 0, 40), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gUnknown_0859354C[] = +{ + gUnknown_08593534, +}; + +const struct SpriteTemplate gRazorWindTornadoSpriteTemplate = +{ + .tileTag = ANIM_TAG_GUST, + .paletteTag = ANIM_TAG_GUST, + .oam = &gUnknown_085249BC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_0859354C, + .callback = Anim_RazorWindTornado, +}; + +const union AnimCmd gUnknown_08593568[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 20), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08593578[] = +{ + ANIMCMD_FRAME(0, 3, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(16, 3, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(32, 20, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08593588[] = +{ + gUnknown_08593568, + gUnknown_08593578, +}; + +const struct SpriteTemplate gViceGripSpriteTemplate = +{ + .tileTag = ANIM_TAG_CUT, + .paletteTag = ANIM_TAG_CUT, + .oam = &gUnknown_08524A34, + .anims = gUnknown_08593588, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = Anim_ViceGripPincer, +}; + +const union AnimCmd gUnknown_085935A8[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(16, 2), + ANIMCMD_FRAME(32, 1), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_085935B8[] = +{ + ANIMCMD_FRAME(0, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(16, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(32, 1, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_085935C8[] = +{ + gUnknown_085935A8, + gUnknown_085935B8, +}; + +const struct SpriteTemplate gGuillotineSpriteTemplate = +{ + .tileTag = ANIM_TAG_CUT, + .paletteTag = ANIM_TAG_CUT, + .oam = &gUnknown_08524A34, + .anims = gUnknown_085935C8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = Anim_GuillotinePincer, +}; + +const union AffineAnimCmd gSplashEffectAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(-6, 4, 0, 8), + AFFINEANIMCMD_FRAME(10, -10, 0, 8), + AFFINEANIMCMD_FRAME(-4, 6, 0, 8), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gGrowAndShrinkAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(-4, -5, 0, 12), + AFFINEANIMCMD_FRAME(0, 0, 0, 24), + AFFINEANIMCMD_FRAME(4, 5, 0, 12), + AFFINEANIMCMD_END, +}; + +const union AnimCmd gUnknown_08593628[] = +{ + ANIMCMD_FRAME(0, 4, .hFlip = TRUE), + ANIMCMD_FRAME(4, 40, .hFlip = TRUE), + ANIMCMD_FRAME(8, 4, .hFlip = TRUE), + ANIMCMD_FRAME(12, 4, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_0859363C[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(4, 40), + ANIMCMD_FRAME(8, 4), + ANIMCMD_FRAME(12, 4), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08593650[] = +{ + gUnknown_08593628, + gUnknown_0859363C, +}; + +const struct SpriteTemplate gBreathPuffSpriteTemplate = +{ + .tileTag = ANIM_TAG_BREATH, + .paletteTag = ANIM_TAG_BREATH, + .oam = &gUnknown_0852490C, + .anims = gUnknown_08593650, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = Anim_BreathPuff, +}; + +const union AffineAnimCmd gUnknown_08593670[] = +{ + AFFINEANIMCMD_FRAME(0xB, 0xB, 0, 8), + AFFINEANIMCMD_FRAME(0xFFF5, 0xFFF5, 0, 8), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gUnknown_08593688[] = +{ + gUnknown_08593670, +}; + +const struct SpriteTemplate gAngerMarkSpriteTemplate = +{ + .tileTag = ANIM_TAG_ANGER, + .paletteTag = ANIM_TAG_ANGER, + .oam = &gUnknown_0852496C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08593688, + .callback = Anim_AngerMark, +}; + +const union AffineAnimCmd gUnknown_085936A4[] = +{ + AFFINEANIMCMD_FRAME(-10, 9, 0, 7), + AFFINEANIMCMD_FRAME(20, -20, 0, 7), + AFFINEANIMCMD_FRAME(-20, 20, 0, 7), + AFFINEANIMCMD_FRAME(10, -9, 0, 7), + AFFINEANIMCMD_LOOP(2), + AFFINEANIMCMD_END, +}; + +const struct SpriteTemplate gUnknown_085936D4 = +{ + .tileTag = ANIM_TAG_PENCIL, + .paletteTag = ANIM_TAG_PENCIL, + .oam = &gUnknown_08524914, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_810501C, +}; + +const struct SpriteTemplate gUnknown_085936EC = +{ + .tileTag = ANIM_TAG_SNORE_Z, + .paletteTag = ANIM_TAG_SNORE_Z, + .oam = &gUnknown_08524914, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A7938, +}; + +const union AnimCmd gUnknown_08593704[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(16, 5), + ANIMCMD_FRAME(32, 5), + ANIMCMD_FRAME(48, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08593718[] = +{ + gUnknown_08593704, +}; +//* +const struct SpriteTemplate gBattleAnimSpriteTemplate_859371C = +{ + .tileTag = ANIM_TAG_EXPLOSION, + .paletteTag = ANIM_TAG_EXPLOSION, + .oam = &gUnknown_08524914, + .anims = gUnknown_08593718, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A77C8, +}; + +const union AffineAnimCmd gUnknown_08593734[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 2), + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 4), + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 2), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd gUnknown_08593754[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_08593764[] = +{ + AFFINEANIMCMD_FRAME(0xFFF8, 0x4, 0, 8), + AFFINEANIMCMD_LOOP(0), + AFFINEANIMCMD_FRAME(0x10, 0xFFF8, 0, 8), + AFFINEANIMCMD_FRAME(0xFFF0, 0x8, 0, 8), + AFFINEANIMCMD_LOOP(1), + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 15), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gUnknown_085937A4[] = +{ + gUnknown_08593734, + gUnknown_08593754, + gUnknown_08593764, +}; +//* +const struct SpriteTemplate gUnknown_085937B0 = +{ + .tileTag = ANIM_TAG_BREAKING_EGG, + .paletteTag = ANIM_TAG_BREAKING_EGG, + .oam = &gUnknown_08524AF4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_085937A4, + .callback = sub_8105538, +}; + +const union AffineAnimCmd gUnknown_085937C8[] = +{ + AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0), + AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 30), + AFFINEANIMCMD_END_ALT(1), +}; + +const union AffineAnimCmd gUnknown_085937E0[] = +{ + AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0), + AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 15), + AFFINEANIMCMD_END_ALT(1), +}; + +const union AffineAnimCmd gUnknown_085937F8[] = +{ + AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0), + AFFINEANIMCMD_FRAME(0xB, 0xB, 0, 45), + AFFINEANIMCMD_END_ALT(1), +}; + +const union AffineAnimCmd *const gUnknown_08593810[] = +{ + gUnknown_085937C8, + gUnknown_085937E0, +}; + +const union AffineAnimCmd *const gUnknown_08593818[] = +{ + gUnknown_085937F8, +}; + +const struct SpriteTemplate gUnknown_0859381C = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_THIN_RING, + .oam = &gUnknown_085249DC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08593810, + .callback = sub_80A77C8, +}; +//* +const union AffineAnimCmd gUnknown_08593834[] = +{ + AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0), + AFFINEANIMCMD_FRAME(0xFFF0, 0xFFF0, 0, 30), + AFFINEANIMCMD_END_ALT(1), +}; + +const union AffineAnimCmd *const gUnknown_0859384C[] = +{ + gUnknown_08593834, +}; + +const struct SpriteTemplate gUnknown_08593850 = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_THIN_RING, + .oam = &gUnknown_08524AFC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_0859384C, + .callback = sub_80A77C8, +}; + +const struct SpriteTemplate gUnknown_08593868 = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_THIN_RING, + .oam = &gUnknown_08524AFC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08593810, + .callback = sub_81051C4, +}; + +const struct SpriteTemplate gUnknown_08593880 = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_THIN_RING, + .oam = &gUnknown_08524AFC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08593818, + .callback = sub_81052A4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_8593898 = +{ + .tileTag = ANIM_TAG_THIN_RING, + .paletteTag = ANIM_TAG_THIN_RING, + .oam = &gUnknown_08524AFC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08593810, + .callback = sub_81054E8, +}; + +const union AffineAnimCmd gUnknown_085938B0[] = +{ + AFFINEANIMCMD_FRAME(96, -13, 0, 8), + AFFINEANIMCMD_END, +}; + +const union AnimCmd gUnknown_085938C0[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(4, 3), + ANIMCMD_FRAME(8, 3), + ANIMCMD_FRAME(4, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_085938D8[] = +{ + gUnknown_085938C0, +}; + +const struct SpriteTemplate gUnknown_085938DC = +{ + .tileTag = ANIM_TAG_SPEED_DUST, + .paletteTag = ANIM_TAG_SPEED_DUST, + .oam = &gUnknown_0852490C, + .anims = gUnknown_085938D8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8105C48, +}; + +const s8 gUnknown_085938F4[][2] = +{ + {30, 28}, + {-20, 24}, + {16, 26}, + {-10, 28}, +}; + +const union AnimCmd gUnknown_085938FC[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(16, 6), + ANIMCMD_FRAME(32, 15), + ANIMCMD_FRAME(16, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(16, 6, .hFlip = TRUE), + ANIMCMD_FRAME(32, 15, .hFlip = TRUE), + ANIMCMD_FRAME(16, 6, .hFlip = TRUE), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(16, 6), + ANIMCMD_FRAME(32, 15), + ANIMCMD_FRAME(16, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08593934[] = +{ + gUnknown_085938FC, +}; + +const struct SpriteTemplate gUnknown_08593938 = +{ + .tileTag = ANIM_TAG_BELL, + .paletteTag = ANIM_TAG_BELL, + .oam = &gUnknown_08524914, + .anims = gUnknown_08593934, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A77C8, +}; + +const u16 gUnknown_08593950[] = +{ + ANIM_TAG_MUSIC_NOTES_2, + ANIM_SPRITES_START - 1, + ANIM_SPRITES_START - 2, +}; + +const struct SpriteTemplate gUnknown_08593958 = +{ + .tileTag = ANIM_TAG_MUSIC_NOTES_2, + .paletteTag = ANIM_TAG_MUSIC_NOTES_2, + .oam = &gUnknown_0852490C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8105DE8, +}; + +const struct SpriteTemplate gUnknown_08593970 = +{ + .tileTag = ANIM_TAG_MAGENTA_HEART, + .paletteTag = ANIM_TAG_MAGENTA_HEART, + .oam = &gUnknown_0852490C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8105E60, +}; + +const union AffineAnimCmd gUnknown_08593988[] = +{ + AFFINEANIMCMD_FRAME(0x000A, 0xFFF3, 0x00, 0x0A), + AFFINEANIMCMD_FRAME(0xFFF6, 0x000D, 0x00, 0x0A), + AFFINEANIMCMD_END, +}; + +const struct SpriteTemplate gUnknown_085939A0 = +{ + .tileTag = ANIM_TAG_RED_HEART, + .paletteTag = ANIM_TAG_RED_HEART, + .oam = &gUnknown_0852490C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8106140, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_85939B8 = +{ + .tileTag = ANIM_TAG_RED_HEART, + .paletteTag = ANIM_TAG_RED_HEART, + .oam = &gUnknown_0852490C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_81061C4, +}; + +const struct SpriteTemplate gUnknown_085939D0 = +{ + .tileTag = ANIM_TAG_RED_HEART, + .paletteTag = ANIM_TAG_RED_HEART, + .oam = &gUnknown_0852490C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_810624C, +}; + +const union AffineAnimCmd gUnknown_085939E8[] = +{ + AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0), + AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 1), + AFFINEANIMCMD_JUMP(1), +}; + +const union AffineAnimCmd *const gUnknown_08593A00[] = +{ + gUnknown_085939E8, +}; + +const struct SpriteTemplate gHiddenPowerOrbSpriteTemplate = +{ + .tileTag = ANIM_TAG_RED_ORB, + .paletteTag = ANIM_TAG_RED_ORB, + .oam = &gUnknown_0852496C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08593A00, + .callback = AnimOrbitFast, +}; + +const struct SpriteTemplate gHiddenPowerOrbScatterSpriteTemplate = +{ + .tileTag = ANIM_TAG_RED_ORB, + .paletteTag = ANIM_TAG_RED_ORB, + .oam = &gUnknown_085249CC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08593A00, + .callback = AnimOrbitScatter, +}; + +const union AffineAnimCmd gUnknown_08593A34[] = +{ + AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0), + AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 1), + AFFINEANIMCMD_JUMP(1), +}; + +const union AffineAnimCmd *const gUnknown_08593A4C[] = +{ + gUnknown_08593A34, +}; + +const struct SpriteTemplate gUnknown_08593A50 = +{ + .tileTag = ANIM_TAG_RED_ORB_2, + .paletteTag = ANIM_TAG_RED_ORB_2, + .oam = &gUnknown_085249C4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08593A4C, + .callback = sub_8106944, +}; + +const union AnimCmd gUnknown_08593A68[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(8, 4), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08593A80[] = +{ + gUnknown_08593A68, +}; + +const struct SpriteTemplate gUnknown_08593A84 = +{ + .tileTag = ANIM_TAG_EYE_SPARKLE, + .paletteTag = ANIM_TAG_EYE_SPARKLE, + .oam = &gUnknown_0852490C, + .anims = gUnknown_08593A80, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_81069B8, +}; + +const union AnimCmd gUnknown_08593A9C[] = +{ + ANIMCMD_FRAME(0, 24), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08593AA4[] = +{ + gUnknown_08593A9C, +}; + +const struct SpriteTemplate gUnknown_08593AA8 = +{ + .tileTag = ANIM_TAG_ANGEL, + .paletteTag = ANIM_TAG_ANGEL, + .oam = &gUnknown_08524914, + .anims = gUnknown_08593AA4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_81069D0, +}; + +const struct SpriteTemplate gUnknown_08593AC0 = +{ + .tileTag = ANIM_TAG_PINK_HEART, + .paletteTag = ANIM_TAG_PINK_HEART, + .oam = &gUnknown_0852490C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8106AD0, +}; + +const union AnimCmd gUnknown_08593AD8[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gUnknown_08593AE0[] = +{ + ANIMCMD_FRAME(16, 3), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gUnknown_08593AE8[] = +{ + gUnknown_08593AD8, + gUnknown_08593AE0, +}; + +const struct SpriteTemplate gUnknown_08593AF0 = +{ + .tileTag = ANIM_TAG_DEVIL, + .paletteTag = ANIM_TAG_DEVIL, + .oam = &gUnknown_08524914, + .anims = gUnknown_08593AE8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8106B54, +}; + +const union AnimCmd gUnknown_08593B08[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(48, 4), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08593B1C[] = +{ + ANIMCMD_FRAME(0, 4, .hFlip = TRUE), + ANIMCMD_FRAME(16, 4, .hFlip = TRUE), + ANIMCMD_FRAME(32, 4, .hFlip = TRUE), + ANIMCMD_FRAME(48, 4, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08593B30[] = +{ + gUnknown_08593B08, + gUnknown_08593B1C, +}; + +const struct SpriteTemplate gUnknown_08593B38 = +{ + .tileTag = ANIM_TAG_SWIPE, + .paletteTag = ANIM_TAG_SWIPE, + .oam = &gUnknown_08524914, + .anims = gUnknown_08593B30, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8106C80, +}; + +const union AnimCmd gUnknown_08593B50[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(16, 8), + ANIMCMD_FRAME(32, 8), + ANIMCMD_FRAME(16, 8), + ANIMCMD_END, +}; + +const union AnimCmd gUnknown_08593B64[] = +{ + ANIMCMD_FRAME(16, 8, .hFlip = TRUE), + ANIMCMD_FRAME(32, 8, .hFlip = TRUE), + ANIMCMD_FRAME(16, 8, .hFlip = TRUE), + ANIMCMD_FRAME(0, 8, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gUnknown_08593B78[] = +{ + gUnknown_08593B50, + gUnknown_08593B64, +}; + +const struct SpriteTemplate gUnknown_08593B80 = +{ + .tileTag = ANIM_TAG_MOVEMENT_WAVES, + .paletteTag = ANIM_TAG_MOVEMENT_WAVES, + .oam = &gUnknown_08524914, + .anims = gUnknown_08593B78, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8106CD0, +}; + +const union AffineAnimCmd gUnknown_08593B98[] = +{ + AFFINEANIMCMD_FRAME(-12, 8, 0, 4), + AFFINEANIMCMD_FRAME(20, -20, 0, 4), + AFFINEANIMCMD_FRAME(-8, 12, 0, 4), + AFFINEANIMCMD_END, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_8593BB8 = +{ + .tileTag = ANIM_TAG_JAGGED_MUSIC_NOTE, + .paletteTag = ANIM_TAG_JAGGED_MUSIC_NOTE, + .oam = &gUnknown_08524914, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8106E00, +}; + +const union AffineAnimCmd gUnknown_08593BD0[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 5), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_08593BE0[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 16), + AFFINEANIMCMD_END_ALT(1), +}; + +const union AffineAnimCmd gUnknown_08593BF0[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 16), + AFFINEANIMCMD_END_ALT(1), +}; + +const union AffineAnimCmd *const gUnknown_08593C00[] = +{ + gUnknown_08593BD0, + gUnknown_08593BE0, + gUnknown_08593BF0, +}; + +extern const union AnimCmd *const gUnknown_08592FCC[]; +const struct SpriteTemplate gUnknown_08593C0C = +{ + .tileTag = ANIM_TAG_MUSIC_NOTES_2, + .paletteTag = ANIM_TAG_MUSIC_NOTES_2, + .oam = &gUnknown_0852496C, + .anims = gUnknown_08592FCC, + .images = NULL, + .affineAnims = gUnknown_08593C00, + .callback = sub_8106F60, +}; + +const struct SpriteTemplate gUnknown_08593C24 = +{ + .tileTag = ANIM_TAG_MUSIC_NOTES_2, + .paletteTag = ANIM_TAG_MUSIC_NOTES_2, + .oam = &gUnknown_0852496C, + .anims = gUnknown_08592FCC, + .images = NULL, + .affineAnims = gUnknown_08593C00, + .callback = sub_8106F00, +}; + +const union AffineAnimCmd gUnknown_08593C3C[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gUnknown_08593C4C[] = +{ + AFFINEANIMCMD_FRAME(0x200, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gUnknown_08593C5C[] = +{ + gUnknown_08593C3C, + gUnknown_08593C4C, +}; + +const struct SpriteTemplate gUnknown_08593C64 = +{ + .tileTag = ANIM_TAG_GUARD_RING, + .paletteTag = ANIM_TAG_GUARD_RING, + .oam = &gUnknown_08524B1C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_08593C5C, + .callback = sub_81070AC, +}; + +void sub_8103448(struct Sprite *sprite) +{ + SetSpriteCoordsToAnimAttackerCoords(sprite); + sub_80A6864(sprite, gBattleAnimArgs[0]); + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[4]; + sprite->data[3] = gBattleAnimArgs[5]; + sprite->data[4] = gBattleAnimArgs[3]; + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = sub_80A6450; + sprite->callback(sprite); +} + +void sub_8103498(struct Sprite *sprite) +{ + u8 battler; + if (gBattleAnimArgs[0] == 0) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + sub_810310C(battler, sprite); + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->callback = sub_81034D8; +} + +static void sub_81034D8(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->pos2.y -= 3; + if (++sprite->data[1] == 6) + sprite->data[0]++; + break; + case 1: + sprite->pos2.y += 3; + if (--sprite->data[1] == 0) + sprite->data[0]++; + break; + case 2: + if (++sprite->data[1] == 64) + DestroyAnimSprite(sprite); + break; + } +} + +static void sub_810353C(struct Sprite *sprite) +{ + s16 temp; + gSprites[sprite->data[2]].pos2.x += sprite->data[1]; + temp = sprite->data[1]; + sprite->data[1] = -temp; + if (sprite->data[0] == 0) + { + gSprites[sprite->data[2]].pos2.x = 0; + DestroySpriteAndMatrix(sprite); + } + + sprite->data[0]--; +} + +void sub_810358C(struct Sprite *sprite) +{ + u8 spriteId; + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + spriteId = gBattlerSpriteIds[gBattleAnimTarget]; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + sprite->pos1.x -= gBattleAnimArgs[0]; + else + sprite->pos1.x += gBattleAnimArgs[0]; + + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[2] = spriteId; + sprite->callback = sub_810353C; + sprite->invisible = 1; +} + +void sub_8103620(struct Sprite *sprite) +{ + InitAnimSpritePos(sprite, TRUE); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[5] = gBattleAnimArgs[4]; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, sub_8103658); +} + +static void sub_8103658(struct Sprite *sprite) +{ + sprite->data[0] = sprite->data[1]; + sprite->data[2] = sprite->pos1.x; + sprite->data[4] = sprite->pos1.y + 15; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, sub_8103680); +} + +static void sub_8103680(struct Sprite *sprite) +{ + if (sprite->data[5] == 0) + DestroyAnimSprite(sprite); + else + sprite->data[5]--; +} + +// Rotates the attacking mon sprite downwards and then back upwards to its original position. +// No args. +void AnimTask_Withdraw(u8 taskId) +{ + PrepareBattlerSpriteForRotScale(gBattlerSpriteIds[gBattleAnimAttacker], ST_OAM_OBJ_NORMAL); + gTasks[taskId].func = AnimTask_WithdrawStep; +} + +static void AnimTask_WithdrawStep(u8 taskId) +{ + u8 spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + s16 rotation; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + rotation = -gTasks[taskId].data[0]; + else + rotation = gTasks[taskId].data[0]; + + SetSpriteRotScale(spriteId, 0x100, 0x100, rotation); + if (gTasks[taskId].data[1] == 0) + { + gTasks[taskId].data[0] += 0xB0; + // this y position update gets overwritten by SetBattlerSpriteYOffsetFromRotation() + gSprites[spriteId].pos2.y++; + } + else if (gTasks[taskId].data[1] == 1) + { + if (++gTasks[taskId].data[3] == 30) + gTasks[taskId].data[1] = 2; + + return; + } + else + { + gTasks[taskId].data[0] -= 0xB0; + // this y position update gets overwritten by SetBattlerSpriteYOffsetFromRotation() + gSprites[spriteId].pos2.y--; + } + + SetBattlerSpriteYOffsetFromRotation(spriteId); + if (gTasks[taskId].data[0] == 0xF20 || gTasks[taskId].data[0] == 0) + { + if (gTasks[taskId].data[1] == 2) + { + ResetSpriteRotScale(spriteId); + DestroyAnimVisualTask(taskId); + } + else + { + gTasks[taskId].data[1]++; + } + } +} + +// Animates a "zap of energy" used in KINESIS. +// arg 0: x pixel offset +// arg 1: y pixel offset +// arg 2: vertical flip +void Anim_KinesisZapEnergy(struct Sprite *sprite) +{ + SetSpriteCoordsToAnimAttackerCoords(sprite); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + sprite->pos1.x -= gBattleAnimArgs[0]; + else + sprite->pos1.x += gBattleAnimArgs[0]; + + sprite->pos1.y += gBattleAnimArgs[1]; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + sprite->hFlip = 1; + if (gBattleAnimArgs[2]) + sprite->vFlip = 1; + } + else + { + if (gBattleAnimArgs[2]) + sprite->vFlip = 1; + } + + sprite->callback = RunStoredCallbackWhenAnimEnds; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +// Animates a sword that rises into the air after a brief pause. +// arg 0: x pixel offset +// arg 1: y pixel offset +void Anim_SwordsDanceBlade(struct Sprite *sprite) +{ + InitAnimSpritePos(sprite, FALSE); + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; + StoreSpriteCallbackInData6(sprite, Anim_SwordsDanceBladeStep); +} + +static void Anim_SwordsDanceBladeStep(struct Sprite *sprite) +{ + sprite->data[0] = 6; + sprite->data[2] = sprite->pos1.x; + sprite->data[4] = sprite->pos1.y - 32; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +// Moves a projectile towards the target mon. The sprite is rotated to be pointing +// in the same direction it's moving. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: target x pixel offset +// arg 3: target y pixel offset +// arg 4: duration +void AnimSonicBoomProjectile(struct Sprite *sprite) +{ + s16 targetXPos; + s16 targetYPos; + u16 rotation; + + if (IsContest()) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + } + else if (GetBattlerSide(gBattleAnimAttacker) != 0) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + } + + InitAnimSpritePos(sprite, TRUE); + targetXPos = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2]; + targetYPos = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; + rotation = ArcTan2Neg(targetXPos - sprite->pos1.x, targetYPos - sprite->pos1.y); + rotation += 0xF000; + if (IsContest()) + rotation -= 0x6000; + + TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rotation); + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = targetXPos; + sprite->data[4] = targetYPos; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +static void sub_81039CC(struct Sprite *sprite) +{ + if (sprite->data[0]-- <= 0) + { + gTasks[sprite->data[7]].data[1]--; + DestroySprite(sprite); + } +} + +static void sub_8103A00(struct Sprite *sprite) +{ + struct Task* task = &gTasks[sprite->data[7]]; + if (sprite->data[0] > task->data[5]) + { + sprite->data[5] += sprite->data[3]; + sprite->data[6] += sprite->data[4]; + } + else + { + sprite->data[5] -= sprite->data[3]; + sprite->data[6] -= sprite->data[4]; + } + + sprite->data[1] += sprite->data[5]; + sprite->data[2] += sprite->data[6]; + if (1 & task->data[7]) + sprite->pos2.x = ((u16)sprite->data[1] >> 8) * -1; + else + sprite->pos2.x = (u16)sprite->data[1] >> 8; + + if (1 & task->data[8]) + sprite->pos2.y = ((u16)sprite->data[2] / 256u) * -1; + else + sprite->pos2.y = (u16)sprite->data[2] / 256u; + + if (sprite->data[0]-- <= 0) + { + sprite->data[0] = 30; + sprite->callback = sub_81039CC; + } +} + +void sub_8103AA4(struct Sprite *sprite) +{ + s16 a; + s16 b; + s16 c; + + struct Task* task = &gTasks[sprite->data[7]]; + sprite->data[1] += (-2 & task->data[7]); + sprite->data[2] += (-2 & task->data[8]); + if (1 & task->data[7]) + sprite->pos2.x = ((u16)sprite->data[1] >> 8) * -1; + else + sprite->pos2.x = (u16)sprite->data[1] >> 8; + + if (1 & task->data[8]) + sprite->pos2.y = ((u16)sprite->data[2] / 256u) * -1; + else + sprite->pos2.y = (u16)sprite->data[2] / 256u; + + if (sprite->data[0]-- <= 0) + { + sprite->data[0] = 8; + task->data[5] = 4; + a = sub_8151624(0x1000); + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + if (task->data[11] >= sprite->pos1.x) + b = (task->data[11] - sprite->pos1.x) << 8; + else + b = (sprite->pos1.x - task->data[11]) << 8; + + if (task->data[12] >= sprite->pos1.y) + c = (task->data[12] - sprite->pos1.y) << 8; + else + c = (sprite->pos1.y - task->data[12]) << 8; + + sprite->data[2] = 0; + sprite->data[1] = 0; + sprite->data[6] = 0; + sprite->data[5] = 0; + sprite->data[3] = sub_8151534(sub_8151534(b, a), sub_8151624(0x1C0)); + sprite->data[4] = sub_8151534(sub_8151534(c, a), sub_8151624(0x1C0)); + sprite->callback = sub_8103A00; + } +} + +static void sub_8103BE4(u8 taskId) +{ + if (gTasks[taskId].data[1] == 0) + DestroyAnimVisualTask(taskId); +} + +static void sub_8103C0C(u8 taskId) +{ + if (gTasks[taskId].data[0]-- <= 0) + { + u8 spriteId; + struct Sprite *sprite; + spriteId = CreateSprite(&gUnknown_085933B0, gTasks[taskId].data[9], gTasks[taskId].data[10], gTasks[taskId].data[2] - gTasks[taskId].data[1]); + sprite = &gSprites[spriteId]; + switch (gTasks[taskId].data[4]) + { + case 1: + sprite->oam.matrixNum |= 24; + break; + case 2: + sprite->oam.matrixNum = 8; + break; + } + + sprite->data[0] = gTasks[taskId].data[5] - gTasks[taskId].data[6]; + sprite->data[7] = taskId; + gTasks[taskId].data[gTasks[taskId].data[1] + 13] = spriteId; + gTasks[taskId].data[0] = gTasks[taskId].data[3]; + gTasks[taskId].data[1]++; + PlaySE12WithPanning(SE_W059B, BattleAnimAdjustPanning(-63)); + if (gTasks[taskId].data[1] > 2) + gTasks[taskId].func = sub_8103BE4; + } +} + +void sub_8103CF0(u8 taskId) +{ + s16 attackerY = 0; + s16 attackerX = 0; + s16 targetX = 0; + s16 targetY = 0; + s16 xDiff, yDiff; + + if (IsContest()) + { + gTasks[taskId].data[4] = 2; + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + if (gBattleAnimArgs[2] & 1) + gBattleAnimArgs[2] &= ~1; + else + gBattleAnimArgs[2] |= 1; + } + else + { + if ((gBattlerPositions[gBattleAnimTarget] & 1) == 0) + { + gTasks[taskId].data[4] = 1; + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + if (gBattleAnimArgs[2] & 1) + gBattleAnimArgs[2] &= ~1; + else + gBattleAnimArgs[2] |= 1; + } + } + + attackerX = gTasks[taskId].data[9] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + attackerY = gTasks[taskId].data[10] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + && IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget))) + { + SetAverageBattlerPositions(gBattleAnimTarget, 0, &targetX, &targetY); + } + else + { + targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + targetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); + } + + targetX = gTasks[taskId].data[11] = targetX + gBattleAnimArgs[0]; + targetY = gTasks[taskId].data[12] = targetY + gBattleAnimArgs[1]; + if (targetX >= attackerX) + xDiff = targetX - attackerX; + else + xDiff = attackerX - targetX; + + gTasks[taskId].data[5] = sub_8151534(xDiff, sub_8151624(gBattleAnimArgs[2] & ~1)); + gTasks[taskId].data[6] = sub_8151534(gTasks[taskId].data[5], 0x80); + gTasks[taskId].data[7] = gBattleAnimArgs[2]; + if (targetY >= attackerY) + { + yDiff = targetY - attackerY; + gTasks[taskId].data[8] = sub_8151534(yDiff, sub_8151624(gTasks[taskId].data[5])) & ~1; + } + else + { + yDiff = attackerY - targetY; + gTasks[taskId].data[8] = sub_8151534(yDiff, sub_8151624(gTasks[taskId].data[5])) | 1; + } + + gTasks[taskId].data[3] = gBattleAnimArgs[3]; + if (gBattleAnimArgs[4] & 0x80) + { + gBattleAnimArgs[4] ^= 0x80; + if (gBattleAnimArgs[4] >= 64) + { + u16 var = GetBattlerSpriteSubpriority(gBattleAnimTarget) + (gBattleAnimArgs[4] - 64); + gTasks[taskId].data[2] = var; + } + else + { + u16 var = GetBattlerSpriteSubpriority(gBattleAnimTarget) - gBattleAnimArgs[4]; + gTasks[taskId].data[2] = var; + } + } + else + { + if (gBattleAnimArgs[4] >= 64) + { + u16 var = GetBattlerSpriteSubpriority(gBattleAnimTarget) + (gBattleAnimArgs[4] - 64); + gTasks[taskId].data[2] = var; + } + else + { + u16 var = GetBattlerSpriteSubpriority(gBattleAnimTarget) - gBattleAnimArgs[4]; + gTasks[taskId].data[2] = var; + } + } + + if (gTasks[taskId].data[2] < 3) + gTasks[taskId].data[2] = 3; + + gTasks[taskId].func = sub_8103C0C; +} + +void sub_8103FE8(struct Sprite *sprite) +{ + InitAnimSpritePos(sprite, FALSE); + sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(gUnknown_085934A0.paletteTag) << 4); + sprite->callback = sub_8104018; +} + +#ifdef NONMATCHING +static void sub_8104018(struct Sprite *sprite) +{ + u16 r7; + u16 r5; + int i; + if (++sprite->data[1] == 2) + { + sprite->data[1] = 0; + r5 = sprite->data[0]; + r7 = gPlttBufferFaded[8 + r5]; + for (i = 0; i < 8; i++) + { + gPlttBufferFaded[i + r5 + 8] = gPlttBufferFaded[i + r5 + 9]; + } + gPlttBufferFaded[r5 + 15] = r7; + + if (++sprite->data[2] == 24) + DestroyAnimSprite(sprite); + } +} +#else +NAKED +static void sub_8104018(struct Sprite *sprite) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + adds r4, r0, 0\n\ + ldrh r0, [r4, 0x30]\n\ + adds r0, 0x1\n\ + strh r0, [r4, 0x30]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x2\n\ + bne _0810407C\n\ + movs r0, 0\n\ + strh r0, [r4, 0x30]\n\ + ldrh r5, [r4, 0x2E]\n\ + ldr r1, =gPlttBufferFaded\n\ + adds r0, r5, 0\n\ + adds r0, 0x8\n\ + lsls r0, 1\n\ + adds r0, r1 \n\ + ldrh r7, [r0]\n\ + adds r6, r1, 0\n\ + adds r1, r5, 0\n\ + adds r1, 0x9\n\ + lsls r0, r5, 1\n\ + adds r0, r6\n\ + adds r2, r0, 0\n\ + adds r2, 0x10\n\ + movs r3, 0x7\n\ + lsls r1, 1\n\ + adds r1, r6\n\ +_08104050:\n\ + ldrh r0, [r1]\n\ + strh r0, [r2]\n\ + adds r1, 0x2\n\ + adds r2, 0x2\n\ + subs r3, 0x1\n\ + cmp r3, 0\n\ + bge _08104050\n\ + adds r0, r5, 0\n\ + adds r0, 0xF\n\ + lsls r0, 1\n\ + adds r0, r6\n\ + strh r7, [r0]\n\ + ldrh r0, [r4, 0x32]\n\ + adds r0, 0x1\n\ + strh r0, [r4, 0x32]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x18\n\ + bne _0810407C\n\ + adds r0, r4, 0\n\ + bl DestroyAnimSprite\n\ +_0810407C:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .pool\n\ +.syntax divided\n"); +} +#endif + +void sub_8104088(struct Sprite *sprite) +{ + s16 r6; + s16 r7; + u16 var; + + InitAnimSpritePos(sprite, TRUE); + r6 = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + r7 = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + + r6 += gBattleAnimArgs[2]; + var = ArcTan2Neg(r6 - sprite->pos1.x, r7 - sprite->pos1.y); + var += 0xC000; + TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, var); + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = r6; + sprite->data[4] = r7; + sprite->callback = sub_80A7000; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void sub_810413C(struct Sprite *sprite) +{ + sprite->data[2] = -16; + sprite->pos1.y += 8; + sprite->callback = sub_8104154; +} + +static void sub_8104154(struct Sprite *sprite) +{ + sprite->data[0] += 0x80; + sprite->pos2.x = sprite->data[0] >> 8; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + sprite->pos2.x = -sprite->pos2.x; + + sprite->pos2.y = Sin(sprite->data[1], sprite->data[2]); + sprite->data[1] += 5; + if (sprite->data[1] > 126) + { + sprite->data[1] = 0; + sprite->data[2] /= 2; + if (++sprite->data[3] == 2) + DestroyAnimSprite(sprite); + } +} + +void sub_81041C4(struct Sprite *sprite) +{ + InitAnimSpritePos(sprite, TRUE); + sprite->data[0] = 20; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + sprite->callback = StartAnimLinearTranslation; + sprite->affineAnimPaused = 1; + StoreSpriteCallbackInData6(sprite, sub_810421C); +} + +static void sub_810421C(struct Sprite *sprite) +{ + int i; + u16 rand; + s16* ptr; + PlaySE12WithPanning(SE_W030, BattleAnimAdjustPanning(63)); + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + ptr = &sprite->data[7]; + for (i = 0; i < 8; i++) + ptr[i - 7] = 0; + + rand = Random2(); + sprite->data[6] = 0xFFF4 - (rand & 7); + rand = Random2(); + sprite->data[7] = (rand % 0xA0) + 0xA0; + sprite->callback = sub_81042A0; + sprite->affineAnimPaused = 0; +} + +static void sub_81042A0(struct Sprite *sprite) +{ + sprite->data[0] += sprite->data[7]; + sprite->pos2.x = sprite->data[0] >> 8; + if (sprite->data[7] & 1) + sprite->pos2.x = -sprite->pos2.x; + + sprite->pos2.y = Sin(sprite->data[1], sprite->data[6]); + sprite->data[1] += 8; + if (sprite->data[1] > 126) + { + sprite->data[1] = 0; + sprite->data[2] /= 2; + if (++sprite->data[3] == 1) + DestroyAnimSprite(sprite); + } +} + +// Moves a tornado in a circlular motion. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: wave amplitude +// arg 3: unused +// arg 4: initial wave offset +// arg 5: wave period (higher means faster wave) +// arg 6: duration +void Anim_RazorWindTornado(struct Sprite *sprite) +{ + InitAnimSpritePos(sprite, FALSE); + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + sprite->pos1.y += 16; + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[5]; + sprite->data[3] = gBattleAnimArgs[6]; + sprite->data[4] = gBattleAnimArgs[3]; + sprite->callback = TranslateSpriteInCircleOverDuration; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->callback(sprite); +} + +// Animates a single pincer line that extends towards the center of the target mon. +// arg 0: invert +void Anim_ViceGripPincer(struct Sprite *sprite) +{ + s16 startXOffset = 32; + s16 startYOffset = -32; + s16 endXOffset = 16; + s16 endYOffset = -16; + if (gBattleAnimArgs[0]) + { + startXOffset = -32; + startYOffset = 32; + endXOffset = -16; + endYOffset = 16; + StartSpriteAnim(sprite, 1); + } + + sprite->pos1.x += startXOffset; + sprite->pos1.y += startYOffset; + sprite->data[0] = 6; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + endXOffset; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + endYOffset; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, Anim_ViceGripPincerStep); +} + +static void Anim_ViceGripPincerStep(struct Sprite *sprite) +{ + if (sprite->animEnded) + DestroyAnimSprite(sprite); +} + +// Animates a single pincer line that extends towards the center of the target mon, and then back out. +// arg 0: animation id +void Anim_GuillotinePincer(struct Sprite *sprite) +{ + s16 startXOffset = 32; + s16 startYOffset = -32; + s16 endXOffset = 16; + s16 endYOffset = -16; + if (gBattleAnimArgs[0]) + { + startXOffset = -32; + startYOffset = 32; + endXOffset = -16; + endYOffset = 16; + StartSpriteAnim(sprite, gBattleAnimArgs[0]); + } + + sprite->pos1.x += startXOffset; + sprite->pos1.y += startYOffset; + sprite->data[0] = 6; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + endXOffset; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + endYOffset; + InitAnimLinearTranslation(sprite); + sprite->data[5] = gBattleAnimArgs[0]; + sprite->data[6] = sprite->data[0]; + sprite->callback = Anim_GuillotinePincerStep1; +} + +static void Anim_GuillotinePincerStep1(struct Sprite *sprite) +{ + if (TranslateAnimLinear(sprite) && sprite->animEnded) + { + SeekSpriteAnim(sprite, 0); + sprite->animPaused = 1; + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 2; + sprite->pos2.y = -2; + sprite->data[0] = sprite->data[6]; + sprite->data[1] ^= 1; + sprite->data[2] ^= 1; + sprite->data[4] = 0; + sprite->data[3] = 0; + sprite->callback = Anim_GuillotinePincerStep2; + } +} + +static void Anim_GuillotinePincerStep2(struct Sprite *sprite) +{ + if (sprite->data[3]) + { + sprite->pos2.x = -sprite->pos2.x; + sprite->pos2.y = -sprite->pos2.y; + } + + sprite->data[3] ^= 1; + if (++sprite->data[4] == 51) + { + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[4] = 0; + sprite->data[3] = 0; + sprite->animPaused = 0; + StartSpriteAnim(sprite, sprite->data[5] ^ 1); + sprite->callback = Anim_GuillotinePincerStep3; + } +} + +static void Anim_GuillotinePincerStep3(struct Sprite *sprite) +{ + if (TranslateAnimLinear(sprite)) + DestroyAnimSprite(sprite); +} + +// Scales up the target mon sprite, and sets the palette to greyscale. +// Used in MOVE_DISABLE. +// No args. +void AnimTask_GrowAndGreyscale(u8 taskId) +{ + u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_BLEND); + SetSpriteRotScale(spriteId, 0xD0, 0xD0, 0); + SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, FALSE); + gTasks[taskId].data[0] = 80; + gTasks[taskId].func = AnimTask_GrowAndGreyscaleStep; +} + +static void AnimTask_GrowAndGreyscaleStep(u8 taskId) +{ + if (--gTasks[taskId].data[0] == -1) + { + u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); + ResetSpriteRotScale(spriteId); + SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, TRUE); + DestroyAnimVisualTask(taskId); + } +} + +// Shrinks and grows the attacking mon several times. Also creates transparent versions of the +// mon's sprite while it is shrinking. +// No args. +void AnimTask_Minimize(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->data[0] = spriteId; + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 0x100; + task->data[5] = 0; + task->data[6] = 0; + task->data[7] = GetBattlerSpriteSubpriority(gBattleAnimAttacker); + task->func = AnimTask_MinimizeStep1; +} + +static void AnimTask_MinimizeStep1(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + switch (task->data[1]) + { + case 0: + if (task->data[2] == 0 || task->data[2] == 3 || task->data[2] == 6) + CreateMinimizeSprite(task, taskId); + task->data[2]++; + task->data[4] += 0x28; + SetSpriteRotScale(task->data[0], task->data[4], task->data[4], 0); + SetBattlerSpriteYOffsetFromYScale(task->data[0]); + if (task->data[2] == 32) + { + task->data[5]++; + task->data[1]++; + } + break; + case 1: + if (task->data[6] == 0) + { + if (task->data[5] == 3) + { + task->data[2] = 0; + task->data[1] = 3; + } + else + { + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 0x100; + SetSpriteRotScale(task->data[0], task->data[4], task->data[4], 0); + SetBattlerSpriteYOffsetFromYScale(task->data[0]); + task->data[1] = 2; + } + } + break; + case 2: + task->data[1] = 0; + break; + case 3: + if (++task->data[2] > 32) + { + task->data[2] = 0; + task->data[1]++; + } + break; + case 4: + task->data[2] += 2; + task->data[4] -= 0x50; + SetSpriteRotScale(task->data[0], task->data[4], task->data[4], 0); + SetBattlerSpriteYOffsetFromYScale(task->data[0]); + if (task->data[2] == 32) + { + task->data[2] = 0; + task->data[1]++; + } + break; + case 5: + ResetSpriteRotScale(task->data[0]); + gSprites[task->data[15]].pos2.y = 0; + DestroyAnimVisualTask(taskId); + break; + } +} + +static void CreateMinimizeSprite(struct Task* task, u8 taskId) +{ + u16 matrixNum; + s16 spriteId = CloneBattlerSpriteWithBlend(ANIM_ATTACKER); + if (spriteId >= 0) + { + if ((matrixNum = AllocOamMatrix()) == 0xFF) + { + obj_delete_but_dont_free_vram(&gSprites[spriteId]); + } + else + { + gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE; + gSprites[spriteId].affineAnimPaused = TRUE; + gSprites[spriteId].oam.matrixNum = matrixNum; + gSprites[spriteId].subpriority = task->data[7] - task->data[3]; + task->data[3]++; + task->data[6]++; + gSprites[spriteId].data[0] = 16; + gSprites[spriteId].data[1] = taskId; + gSprites[spriteId].data[2] = 6; + gSprites[spriteId].callback = ClonedMinizeSprite_Step; + SetSpriteRotScale(spriteId, task->data[4], task->data[4], 0); + gSprites[spriteId].oam.affineMode = 1; + CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode); + } + } +} + +static void ClonedMinizeSprite_Step(struct Sprite *sprite) +{ + if (--sprite->data[0] == 0) + { + gTasks[sprite->data[1]].data[sprite->data[2]]--; + FreeOamMatrix(sprite->oam.matrixNum); + obj_delete_but_dont_free_vram(sprite); + } +} + +// Task to facilitate expanding and hopping effect seen in Splash. +// arg 0: anim battler +// arg 1: num hops +void AnimTask_Splash(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (gBattleAnimArgs[1] == 0) + { + DestroyAnimVisualTask(taskId); + } + else + { + u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + task->data[0] = spriteId; + task->data[1] = 0; + task->data[2] = gBattleAnimArgs[1]; + task->data[3] = 0; + task->data[4] = 0; + PrepareAffineAnimInTaskData(task, spriteId, gSplashEffectAffineAnimCmds); + task->func = AnimTask_SplashStep; + } +} + +static void AnimTask_SplashStep(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + switch (task->data[1]) + { + case 0: + RunAffineAnimFromTaskData(task); + task->data[4] += 3; + gSprites[task->data[0]].pos2.y += task->data[4]; + if (++task->data[3] > 7) + { + task->data[3] = 0; + task->data[1]++; + } + break; + case 1: + RunAffineAnimFromTaskData(task); + gSprites[task->data[0]].pos2.y += task->data[4]; + if (++task->data[3] > 7) + { + task->data[3] = 0; + task->data[1]++; + } + break; + case 2: + if (task->data[4] != 0) + { + gSprites[task->data[0]].pos2.y -= 2; + task->data[4] -= 2; + } + else + task->data[1]++; + break; + case 3: + if (!RunAffineAnimFromTaskData(task)) + { + if (--task->data[2] == 0) + { + gSprites[task->data[0]].pos2.y = 0; + DestroyAnimVisualTask(taskId); + } + else + { + PrepareAffineAnimInTaskData(task, task->data[0], gSplashEffectAffineAnimCmds); + task->data[1] = 0; + } + } + break; + } +} + +// Grows, pauses, then shrinks the attacking mon. +// Used by MOVE_SWAGGER and MOVE_BULK_UP +// No args. +void AnimTask_GrowAndShrink(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + PrepareAffineAnimInTaskData(task, spriteId, gGrowAndShrinkAffineAnimCmds); + task->func = AnimTask_GrowAndShrinkStep; +} + +static void AnimTask_GrowAndShrinkStep(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (!RunAffineAnimFromTaskData(task)) + DestroyAnimVisualTask(taskId); +} + +// Animates a little puff of the mon's breath. +// Used by MOVE_SWAGGER and MOVE_BULK_UP +// No args. +void Anim_BreathPuff(struct Sprite *sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + StartSpriteAnim(sprite, 0); + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + 32; + sprite->data[1] = 64; + } + else + { + StartSpriteAnim(sprite, 1); + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - 32; + sprite->data[1] = -64; + } + + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + sprite->data[0] = 52; + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = 0; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->callback = TranslateAnimLinearSimple; +} + +// Animates an "angry" mark above a mon's head. +// arg 0: target mon (0 = attacker, 1 = target) +// arg 1: x pixel offset +// arg 2: y pixel offset +void Anim_AngerMark(struct Sprite *sprite) +{ + u8 battler; + if (!gBattleAnimArgs[0]) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + gBattleAnimArgs[1] *= -1; + + sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; + if (sprite->pos1.y < 8) + sprite->pos1.y = 8; + + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; +} + +// left/right movements +void sub_8104C38(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->data[0] = spriteId; + task->data[1] = 0; + PrepareAffineAnimInTaskData(task, spriteId, gUnknown_085936A4); + task->func = sub_8104C78; +} + +static void sub_8104C78(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (!RunAffineAnimFromTaskData(task)) + DestroyAnimVisualTask(taskId); +} + +// up/down movements +void sub_8104CA4(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + task->data[0] = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->data[1] = 0; + task->data[2] = 4; + task->data[3] = 7; + task->data[4] = 3; + task->data[5] = gSprites[task->data[0]].pos1.x; + task->data[6] = gSprites[task->data[0]].pos1.y; + task->data[7] = 0; + task->data[8] = 0; + task->data[9] = 2; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + task->data[2] *= -1; + + task->func = sub_8104D28; +} + +static void sub_8104D28(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (++task->data[7] > 2) + { + task->data[7] = 0; + task->data[8]++; + if (task->data[8] & 1) + gSprites[task->data[0]].pos1.y += task->data[9]; + else + gSprites[task->data[0]].pos1.y -= task->data[9]; + } + switch (task->data[1]) + { + case 0: + gSprites[task->data[0]].pos1.x += task->data[2]; + if (--task->data[3] == 0) + { + task->data[3] = 14; + task->data[1] = 1; + } + break; + case 1: + gSprites[task->data[0]].pos1.x -= task->data[2]; + if (--task->data[3] == 0) + { + task->data[3] = 7; + task->data[1] = 2; + } + break; + case 2: + gSprites[task->data[0]].pos1.x += task->data[2]; + if (--task->data[3] == 0) + { + if (--task->data[4] != 0) + { + task->data[3] = 7; + task->data[1] = 0; + } + else + { + if ((task->data[8] & 1) != 0) + gSprites[task->data[0]].pos1.y -= task->data[9]; + + DestroyAnimVisualTask(taskId); + } + } + break; + } +} + +void sub_8104E74(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + struct ScanlineEffectParams params; + + s16 i; + task->data[0] = GetBattlerYCoordWithElevation(gBattleAnimTarget) + 32; + task->data[1] = 4; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 0; + task->data[5] = 0; + task->data[15] = sub_80A861C(gBattleAnimTarget, 0); + + if (sub_80A8364(gBattleAnimTarget) == 1) + { + task->data[6] = gBattle_BG1_X; + params.dmaDest = (u16 *)REG_ADDR_BG1HOFS; + } + else + { + task->data[6] = gBattle_BG2_X; + params.dmaDest = (u16 *)REG_ADDR_BG2HOFS; + } + + for (i = task->data[0] - 0x40; i <= task->data[0]; i++) + { + if (i >= 0) + { + gScanlineEffectRegBuffers[0][i] = task->data[6] + 0xF0; + gScanlineEffectRegBuffers[1][i] = task->data[6] + 0xF0; + } + } + + params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; + params.initState = 1; + params.unused9 = 0; + ScanlineEffect_SetParams(params); + task->func = sub_8104F54; +} + +static void sub_8104F54(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + switch (task->data[4]) + { + case 0: + if (++task->data[5] > 20) + task->data[4]++; + break; + case 1: + if (++task->data[1] > 3) + { + task->data[1] = 0; + task->data[2] = task->data[3] & 3; + task->data[5] = task->data[0] - task->data[3]; + switch (task->data[2]) + { + case 0: + break; + case 1: + task->data[5] -= 2; + break; + case 2: + task->data[5] += 1; + break; + case 3: + task->data[5] += 1; + break; + } + + if (task->data[5] >= 0) + { + gScanlineEffectRegBuffers[0][task->data[5]] = task->data[6]; + gScanlineEffectRegBuffers[1][task->data[5]] = task->data[6]; + } + + if (++task->data[3] >= task->data[15]) + { + gScanlineEffect.state = 3; + DestroyAnimVisualTask(taskId); + } + } + break; + } +} + +void sub_810501C(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) - 16; + sprite->pos1.y = GetBattlerYCoordWithElevation(gBattleAnimTarget) + 16; + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[3] = 16; + sprite->data[4] = 0; + sprite->data[5] = sub_80A861C(gBattleAnimTarget, 0) + 2; + sprite->data[6] = BattleAnimAdjustPanning(63); + sprite->callback = sub_8105078; +} + +static void sub_8105078(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (++sprite->data[2] > 1) + { + sprite->data[2] = 0; + sprite->invisible = !sprite->invisible; + } + if (++sprite->data[1] > 16) + { + sprite->invisible = 0; + sprite->data[0]++; + } + break; + case 1: + if (++sprite->data[1] > 3 && sprite->data[2] < sprite->data[5]) + { + sprite->data[1] = 0; + sprite->pos1.y -= 1; + sprite->data[2]++; + if (sprite->data[2] % 10 == 0) + PlaySE12WithPanning(SE_W166, sprite->data[6]); + } + sprite->data[4] += sprite->data[3]; + if (sprite->data[4] > 31) + { + sprite->data[4] = 0x40 - sprite->data[4]; + sprite->data[3] *= -1; + } + else if (sprite->data[4] <= -32) + { + sprite->data[4] = -0x40 - sprite->data[4]; + sprite->data[3] *= -1; + } + sprite->pos2.x = sprite->data[4]; + if (sprite->data[5] == sprite->data[2]) + { + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[0]++; + } + break; + case 2: + if (++sprite->data[2] > 1) + { + sprite->data[2] = 0; + sprite->invisible = !sprite->invisible; + } + if (++sprite->data[1] > 16) + { + sprite->invisible = 0; + DestroyAnimSprite(sprite); + } + break; + } +} + +void sub_81051C4(struct Sprite *sprite) +{ + u8 battler = 0; + u16 sp0 = 0; + u16 sp1 = 0; + u8 r4; + + if (gBattleAnimArgs[2] == 0) + battler = gBattleAnimAttacker; + else + battler = gBattleAnimTarget; + + r4 = gBattleAnimArgs[3] ^ 1; + if (IsDoubleBattle() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler))) + { + SetAverageBattlerPositions(battler, r4, &sp0, &sp1); + if (r4 == 0) + r4 = GetBattlerSpriteCoord(battler, 0); + else + r4 = GetBattlerSpriteCoord(battler, 2); + + if (GetBattlerSide(battler) != B_SIDE_PLAYER) + gBattleAnimArgs[0] -= (sp0 - r4) - gBattleAnimArgs[0]; // This is weird. + else + gBattleAnimArgs[0] = sp0 - r4; + } + + sprite->callback = sub_80A77C8; + sprite->callback(sprite); +} + +void sub_8105284(struct Sprite *sprite) +{ + if (TranslateAnimLinear(sprite)) + { + FreeSpriteOamMatrix(sprite); + DestroyAnimSprite(sprite); + } +} + +void sub_81052A4(struct Sprite *sprite) +{ + u16 r9 = 0; + u16 r6 = 0; + s16 sp0 = 0; + s16 sp1 = 0; + u8 sp4; + u8 battler1; + u8 battler2; + u8 r10; + + if (gBattleAnimArgs[5] == 0) + { + battler1 = gBattleAnimAttacker; + battler2 = gBattleAnimTarget; + } + else + { + battler1 = gBattleAnimTarget; + battler2 = gBattleAnimAttacker; + } + + if (!gBattleAnimArgs[6]) + { + r10 = 0; + sp4 = 1; + } + else + { + r10 = 2; + sp4 = 3; + } + + if (GetBattlerSide(battler1) != B_SIDE_PLAYER) + { + r9 = GetBattlerSpriteCoord(battler1, r10) + gBattleAnimArgs[0]; + if (IsBattlerSpriteVisible(BATTLE_PARTNER(battler2))) + sprite->subpriority = gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler2)]].subpriority - 1; + else + sprite->subpriority = gSprites[gBattlerSpriteIds[battler2]].subpriority - 1; + } + else + { + r9 = GetBattlerSpriteCoord(battler1, r10) - gBattleAnimArgs[0]; + if (!IsContest() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler1))) + { + if (gSprites[gBattlerSpriteIds[battler1]].pos1.x < gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler1)]].pos1.x) + sprite->subpriority = gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler1)]].subpriority + 1; + else + sprite->subpriority = gSprites[gBattlerSpriteIds[battler1]].subpriority - 1; + } + else + { + sprite->subpriority = gSprites[gBattlerSpriteIds[battler1]].subpriority - 1; + } + + } + + r6 = GetBattlerSpriteCoord(battler1, sp4) + gBattleAnimArgs[1]; + if (!IsContest() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler2))) + { + SetAverageBattlerPositions(battler2, gBattleAnimArgs[6], &sp0, &sp1); + } + else + { + sp0 = GetBattlerSpriteCoord(battler2, r10); + sp1 = GetBattlerSpriteCoord(battler2, sp4); + } + + if (GetBattlerSide(battler2)) + sp0 += gBattleAnimArgs[3]; + else + sp0 -= gBattleAnimArgs[3]; + + sp1 += gBattleAnimArgs[4]; + sprite->pos1.x = sprite->data[1] = r9; + sprite->pos1.y = sprite->data[3] = r6; + sprite->data[2] = sp0; + sprite->data[4] = sp1; + sprite->data[0] = gBattleAnimArgs[0]; + InitAnimLinearTranslation(sprite); + sprite->callback = sub_8105284; + sprite->callback(sprite); +} + +void sub_81054E8(struct Sprite *sprite) +{ + u8 index = IndexOfSpritePaletteTag(ANIM_TAG_THIN_RING); + if (index != 0xFF) + { + BlendPalette(((index << 20) + 0x1010000) >> 16, 15, gBattleAnimArgs[5], gBattleAnimArgs[4]); + } + + StartSpriteAffineAnim(sprite, 1); + sprite->callback = sub_80A77C8; + sprite->callback(sprite); +} + +void sub_8105538(struct Sprite *sprite) +{ + s16 r1; + InitAnimSpritePos(sprite, FALSE); + r1 = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? -160 : 160; + sprite->data[0] = 0x380; + sprite->data[1] = r1; + sprite->data[7] = gBattleAnimArgs[2]; + sprite->callback = sub_810557C; +} + +static void sub_810557C(struct Sprite *sprite) +{ + s16 add; + sprite->pos2.y -= (sprite->data[0] >> 8); + sprite->pos2.x = sprite->data[1] >> 8; + sprite->data[0] -= 32; + add = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? -160 : 160; + sprite->data[1] += add; + if (sprite->pos2.y > 0) + { + sprite->pos1.y += sprite->pos2.y; + sprite->pos1.x += sprite->pos2.x; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[0] = 0; + StartSpriteAffineAnim(sprite, 1); + sprite->callback = sub_81055F4; + } +} + +static void sub_81055F4(struct Sprite *sprite) +{ + if (sprite->data[0]++ > 19) + { + StartSpriteAffineAnim(sprite, 2); + sprite->callback = sub_810561C; + } +} + +static void sub_810561C(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + { + StartSpriteAffineAnim(sprite, 1); + sprite->data[0] = 0; + if (sprite->data[7] == 0) + { + sprite->oam.tileNum += 16; + sprite->callback = sub_8105694; + } + else + { + sprite->oam.tileNum += 32; + sprite->callback = sub_810571C; + } + } +} + +static void sub_8105694(struct Sprite *sprite) +{ + sprite->pos2.y -= 2; + if (++sprite->data[0] == 9) + { + sprite->data[0] = 16; + sprite->data[1] = 0; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND((u16)sprite->data[0], 0)); + sprite->callback = sub_81056D4; + } +} + +static void sub_81056D4(struct Sprite *sprite) +{ + if (sprite->data[1]++ % 3 == 0) + { + sprite->data[0]--; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[0], 16 - sprite->data[0])); + if (sprite->data[0] == 0) + sprite->callback = sub_810571C; + } +} + +static void sub_810571C(struct Sprite *sprite) +{ + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + { + sprite->invisible = 1; + if (sprite->data[7] == 0) + sprite->callback = sub_810575C; + else + sprite->callback = DestroyAnimSprite; + } +} + +static void sub_810575C(struct Sprite *sprite) +{ + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroyAnimSprite(sprite); +} + +void sub_810577C(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->data[0] = spriteId; + PrepareAffineAnimInTaskData(task, spriteId, gUnknown_085938B0); + task->func = sub_81057B8; +} + +static void sub_81057B8(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (!RunAffineAnimFromTaskData(task)) + { + gSprites[task->data[0]].pos2.y = 0; + gSprites[task->data[0]].invisible = 1; + DestroyAnimVisualTask(taskId); + } +} + +void sub_8105810(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[12] = 3; + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + { + task->data[13] = 0xFFFF; + task->data[14] = 8; + } + else + { + task->data[13] = 1; + task->data[14] = -8; + } + + task->data[15] = GetAnimBattlerSpriteId(ANIM_TARGET); + task->func = sub_8105878; +} + +static void sub_8105878(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + gSprites[task->data[15]].pos2.x += task->data[14]; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[0]++; + break; + case 1: + if (++task->data[1] > 1) + { + task->data[1] = 0; + task->data[2]++; + if (task->data[2] & 1) + gSprites[task->data[15]].pos2.x += 6; + else + gSprites[task->data[15]].pos2.x -= 6; + + if (++task->data[3] > 4) + { + if (task->data[2] & 1) + gSprites[task->data[15]].pos2.x -= 6; + + task->data[0]++; + } + } + break; + case 2: + if (--task->data[12] != 0) + task->data[0] = 0; + else + task->data[0]++; + break; + case 3: + gSprites[task->data[15]].pos2.x += task->data[13]; + if (gSprites[task->data[15]].pos2.x == 0) + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_810599C(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 1; + task->data[13] = 14; + task->data[14] = 2; + task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->func = sub_81059E0; +} + +static void sub_81059E0(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (task->data[0] == 0 && ++task->data[1] > task->data[4]) + { + task->data[1] = 0; + if (++task->data[2] & 1) + gSprites[task->data[15]].invisible = 0; + else + gSprites[task->data[15]].invisible = 1; + + if (++task->data[3] >= task->data[13]) + { + if (++task->data[4] < task->data[14]) + { + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + } + else + { + gSprites[task->data[15]].invisible = 0; + DestroyAnimVisualTask(taskId); + } + } + } +} + +void sub_8105AAC(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + task->data[0] = 0; + task->data[1] = 4; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 0; + task->data[5] = 0; + task->data[6] = 0; + task->data[7] = 0; + task->data[8] = 0; + task->data[13] = 0; + task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, ANIM_ATTACKER); + task->data[15] = GetBattlerSpriteCoord(gBattleAnimAttacker, ANIM_TARGET); + task->func = sub_8105B08; +} + +static void sub_8105B08(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + switch (task->data[8]) + { + case 0: + if (++task->data[4] > 1) + { + task->data[4] = 0; + task->data[5] = (task->data[5] + 1) & 1; + if (++task->data[6] > 20) + { + if (task->data[7] == 0) + { + task->data[6] = 0; + task->data[8] = 1; + } + else + task->data[8] = 2; + } + } + break; + case 1: + task->data[5] = 0; + if (++task->data[4] > 20) + { + task->data[7] = 1; + task->data[8] = 0; + } + break; + case 2: + task->data[5] = 1; + break; + } + + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 4) + { + u8 spriteId; + task->data[1] = 0; + spriteId = CreateSprite(&gUnknown_085938DC, task->data[14], task->data[15], 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].data[1] = 13; + gSprites[spriteId].pos2.x = gUnknown_085938F4[task->data[2]][0]; + gSprites[spriteId].pos2.y = gUnknown_085938F4[task->data[2]][1]; + task->data[13]++; + if (++task->data[2] > 3) + { + task->data[2] = 0; + if (++task->data[3] > 5) + task->data[0]++; + } + } + } + break; + case 1: + if (task->data[13] == 0) + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_8105C48(struct Sprite *sprite) +{ + sprite->invisible = gTasks[sprite->data[0]].data[5]; + if (sprite->animEnded) + { + gTasks[sprite->data[0]].data[sprite->data[1]]--; + DestroySprite(sprite); + } +} + +void sub_8105CB4(u8 taskId) +{ + int i; + u8 paletteNums[3]; + + paletteNums[0] = IndexOfSpritePaletteTag(ANIM_TAG_MUSIC_NOTES_2); + for (i = 1; i < 3; i++) + paletteNums[i] = AllocSpritePalette(ANIM_SPRITES_START - i); + + gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000); + LZDecompressWram(gBattleAnimSpritePalette_206, gMonSpritesGfxPtr->field_17C); + for (i = 0; i < 3; i++) + LoadPalette(&gMonSpritesGfxPtr->field_17C[i * 32], (u16)((paletteNums[i] << 4) + 0x100), 32); + + FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C); + DestroyAnimVisualTask(taskId); +} + +void sub_8105D60(u8 taskId) +{ + int i; + for (i = 0; i < 3; i++) + FreeSpritePaletteByTag(gUnknown_08593950[i]); + + DestroyAnimVisualTask(taskId); +} + +static void sub_8105D88(struct Sprite *sprite, u8 a, u8 b) +{ + u8 tile; + tile = (b & 1); + tile = ((-tile | tile) >> 31) & 32; + sprite->oam.tileNum += tile + (a << 2); + sprite->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_08593950[b >> 1]); +} + +void sub_8105DE8(struct Sprite *sprite) +{ + InitAnimSpritePos(sprite, FALSE); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[3]; + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sub_8105D88(sprite, gBattleAnimArgs[5], gBattleAnimArgs[6]); +} + +void sub_8105E60(struct Sprite *sprite) +{ + if (++sprite->data[0] == 1) + InitAnimSpritePos(sprite, FALSE); + + sprite->pos2.x = Sin(sprite->data[1], 8); + sprite->pos2.y = sprite->data[2] >> 8; + sprite->data[1] = (sprite->data[1] + 7) & 0xFF; + sprite->data[2] -= 0x80; + if (sprite->data[0] == 60) + DestroyAnimSprite(sprite); +} + +void sub_8105EB0(u8 taskId) +{ + u16 win0h = IsContest() ? 0x98 : 0xF0; + u16 win0v = 0; + + gBattle_WIN0H = win0h; + gBattle_WIN0V = 0xA0; + SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H); + SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V); + SetGpuReg(REG_OFFSET_WININ, 0x3F1F); + SetGpuReg(REG_OFFSET_WINOUT, 0x3F3F); + SetGpuReg(REG_OFFSET_BLDCNT, 0xC8); + SetGpuReg(REG_OFFSET_BLDY, 0x10); + gTasks[taskId].data[0] = win0v; + gTasks[taskId].data[1] = win0h; + gTasks[taskId].func = sub_8105F30; +} + +static void sub_8105F30(u8 taskId) +{ + gTasks[taskId].data[0] += 13; + gTasks[taskId].data[1] -= 13; + if (gTasks[taskId].data[0] >= gTasks[taskId].data[1]) + { + gBattle_WIN0H = 0; + gTasks[taskId].func = sub_8105F84; + } + else + { + gBattle_WIN0H = gTasks[taskId].data[1] | (gTasks[taskId].data[0] << 8); + } +} + +static void sub_8105F84(u8 taskId) +{ + if (++gTasks[taskId].data[10] == 5) + { + gTasks[taskId].data[11] = 0x88; + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_LIGHTEN); + BlendPalettes(sub_80A75AC(1, 0, 0, 0, 0, 0, 0), 16, RGB(31, 31, 31)); + } + else if (gTasks[taskId].data[10] > 4) + { + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + DestroyAnimVisualTask(taskId); + } +} + +void sub_8106020(u8 taskId) +{ + u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); + if (++gTasks[taskId].data[0] == 1) + { + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(1), gUnknown_08593988); + gSprites[spriteId].pos2.x = 4; + } + else + { + gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; + if (!RunAffineAnimFromTaskData(&gTasks[taskId])) + { + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + DestroyAnimVisualTask(taskId); + } + } +} + +void sub_81060B0(u8 taskId) +{ + u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + if (++gTasks[taskId].data[0] == 1) + { + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), gUnknown_08593988); + gSprites[spriteId].pos2.x = 4; + } + else + { + gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; + if (!RunAffineAnimFromTaskData(&gTasks[taskId])) + { + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + DestroyAnimVisualTask(taskId); + } + } +} + +void sub_8106140(struct Sprite *sprite) +{ + InitAnimSpritePos(sprite, TRUE); + sprite->data[0] = 95; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + InitAnimLinearTranslation(sprite); + sprite->callback = sub_810618C; +} + +static void sub_810618C(struct Sprite *sprite) +{ + if (!TranslateAnimLinear(sprite)) + { + sprite->pos2.y += Sin(sprite->data[5], 14); + sprite->data[5] = (sprite->data[5] + 4) & 0xFF; + } + else + { + DestroyAnimSprite(sprite); + } +} + +void sub_81061C4(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + sprite->data[1] = gBattleAnimArgs[0]; + sprite->data[2] = gBattleAnimArgs[1]; + sprite->data[0]++; + } + else + { + sprite->data[4] += sprite->data[1]; + sprite->pos2.x = sprite->data[4] >> 8; + sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]); + sprite->data[3] = (sprite->data[3] + 3) & 0xFF; + if (sprite->data[3] > 100) + sprite->invisible = sprite->data[3] % 2; + + if (sprite->data[3] > 120) + DestroyAnimSprite(sprite); + } +} + +void sub_810624C(struct Sprite *sprite) +{ + sprite->pos1.x = gBattleAnimArgs[0]; + sprite->pos1.y = 160; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, sub_810627C); +} + +static void sub_810627C(struct Sprite *sprite) +{ + s16 y; + sprite->data[2] += sprite->data[1]; + sprite->pos2.y = -((u16)sprite->data[2] >> 8); + sprite->pos2.x = Sin(sprite->data[3], 4); + sprite->data[3] = (sprite->data[3] + 3) & 0xFF; + y = sprite->pos1.y + sprite->pos2.y; + if (y <= 72) + { + sprite->invisible = sprite->data[3] % 2; + if (y <= 64) + DestroyAnimSprite(sprite); + } +} + +void sub_81062E8(u8 taskId) +{ + struct UnknownAnimStruct2 unknownStruct; + + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 3); + SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0); + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); + + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); + SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); + sub_80A6B30(&unknownStruct); + sub_80A6CC0(unknownStruct.bgId, &gUnknown_08C232E0, unknownStruct.tilesOffset); + sub_80A6D60(&unknownStruct, &gUnknown_08C23D78, 0); + LoadCompressedPalette(&gUnknown_08C23D50, unknownStruct.unk8 << 4, 32); + gTasks[taskId].func = sub_81063A8; +} + +static void sub_81063A8(u8 taskId) +{ + struct UnknownAnimStruct2 unknownStruct; + + switch (gTasks[taskId].data[12]) + { + case 0: + if (++gTasks[taskId].data[10] == 4) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11])); + if (gTasks[taskId].data[11] == 16) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 1: + if (++gTasks[taskId].data[11] == 141) + { + gTasks[taskId].data[11] = 16; + gTasks[taskId].data[12]++; + } + break; + case 2: + if (++gTasks[taskId].data[10] == 4) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]--; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11])); + if (gTasks[taskId].data[11] == 0) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 3: + sub_80A6B30(&unknownStruct); + sub_80A6C68(unknownStruct.bgId); + gTasks[taskId].data[12]++; + break; + case 4: + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0); + + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_81064F8(u8 taskId) +{ + struct UnknownAnimStruct2 unknownStruct; + + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0); + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); + + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); + SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); + sub_80A6B30(&unknownStruct); + if (IsContest()) + sub_80A6D60(&unknownStruct, &gBattleAnimBackgroundTilemap_ScaryFaceContest, 0); + else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) + sub_80A6D60(&unknownStruct, &gBattleAnimBackgroundTilemap_ScaryFacePlayer, 0); + else + sub_80A6D60(&unknownStruct, &gBattleAnimBackgroundTilemap_ScaryFaceOpponent, 0); + + sub_80A6CC0(unknownStruct.bgId, &gUnknown_08C249F8, unknownStruct.tilesOffset); + LoadCompressedPalette(&gUnknown_08C249D0, unknownStruct.unk8 << 4, 32); + gTasks[taskId].func = sub_81065EC; +} + +static void sub_81065EC(u8 taskId) +{ + struct UnknownAnimStruct2 unknownStruct; + + switch (gTasks[taskId].data[12]) + { + case 0: + if (++gTasks[taskId].data[10] == 2) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]++; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11])); + if (gTasks[taskId].data[11] == 14) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 1: + if (++gTasks[taskId].data[11] == 21) + { + gTasks[taskId].data[11] = 14; + gTasks[taskId].data[12]++; + } + break; + case 2: + if (++gTasks[taskId].data[10] == 2) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]--; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11])); + if (gTasks[taskId].data[11] == 0) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 3: + sub_80A6B30(&unknownStruct); + sub_80A6C68(1); + sub_80A6C68(2); + gTasks[taskId].data[12]++; + // fall through + case 4: + if (!IsContest()) + SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0); + + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); + DestroyAnimVisualTask(taskId); + break; + } +} + +// Orbits a sphere in an ellipse around the mon. +// Used by MOVE_HIDDEN_POWER +// arg 0: duration +// arg 1: initial wave offset +void AnimOrbitFast(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->affineAnimPaused = 1; + sprite->data[0] = gBattleAnimArgs[0]; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[7] = GetBattlerSpriteSubpriority(gBattleAnimAttacker); + sprite->callback = AnimOrbitFastStep; + sprite->callback(sprite); +} + +static void AnimOrbitFastStep(struct Sprite *sprite) +{ + if ((u16)(sprite->data[1] - 64) < 128) + sprite->subpriority = sprite->data[7] + 1; + else + sprite->subpriority = sprite->data[7] - 1; + + sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8); + sprite->pos2.y = Cos(sprite->data[1], sprite->data[3] >> 8); + sprite->data[1] = (sprite->data[1] + 9) & 0xFF; + switch (sprite->data[5]) + { + case 1: + sprite->data[2] -= 0x400; + sprite->data[3] -= 0x100; + if (++sprite->data[4] == sprite->data[0]) + { + sprite->data[5] = 2; + return; + } + break; + case 0: + sprite->data[2] += 0x400; + sprite->data[3] += 0x100; + if (++sprite->data[4] == sprite->data[0]) + { + sprite->data[4] = 0; + sprite->data[5] = 1; + } + break; + } + + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + DestroyAnimSprite(sprite); +} + +// Moves orbs away from the mon, based on where they are in their orbit. +// Used in MOVE_HIDDEN_POWER. +// arg 0: initial wave offset +void AnimOrbitScatter(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->data[0] = Sin(gBattleAnimArgs[0], 10); + sprite->data[1] = Cos(gBattleAnimArgs[0], 7); + sprite->callback = AnimOrbitScatterStep; +} + +static void AnimOrbitScatterStep(struct Sprite *sprite) +{ + sprite->pos2.x += sprite->data[0]; + sprite->pos2.y += sprite->data[1]; + if (sprite->pos1.x + sprite->pos2.x + 16 > 272u || sprite->pos1.y + sprite->pos2.y > 160 || sprite->pos1.y + sprite->pos2.y < -16) + DestroyAnimSprite(sprite); +} + +static void sub_8106914(struct Sprite *sprite) +{ + sprite->pos2.x += sprite->data[0]; + sprite->pos2.y += sprite->data[1]; + if (sprite->data[3]++ >= sprite->data[2]) + DestroyAnimSprite(sprite); +} + +void sub_8106944(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->data[0] = Sin(gBattleAnimArgs[0], 10); + sprite->data[1] = Cos(gBattleAnimArgs[0], 7); + sprite->data[2] = gBattleAnimArgs[1]; + sprite->callback = sub_8106914; +} + +static void sub_810699C(struct Sprite *sprite) +{ + if (sprite->animEnded) + DestroyAnimSprite(sprite); +} + +void sub_81069B8(struct Sprite *sprite) +{ + InitAnimSpritePos(sprite, TRUE); + sprite->callback = sub_810699C; +} + +void sub_81069D0(struct Sprite *sprite) +{ + s16 var0; + if (!sprite->data[0]) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + + sprite->data[0]++; + var0 = (sprite->data[0] * 10) & 0xFF; + sprite->pos2.x = Sin(var0, 80) >> 8; + if (sprite->data[0] < 80) + sprite->pos2.y = (sprite->data[0] / 2) + (Cos(var0, 80) >> 8); + + if (sprite->data[0] > 90) + { + sprite->data[2]++; + sprite->pos2.x -= sprite->data[2] / 2; + } + + if (sprite->data[0] > 100) + DestroyAnimSprite(sprite); +} + +static void sub_8106A64(struct Sprite *sprite) +{ + sprite->data[5]++; + sprite->pos2.x = Sin(sprite->data[3], 5); + sprite->pos2.y = sprite->data[5] / 2; + sprite->data[3] = (sprite->data[3] + 3) & 0xFF; + if (sprite->data[5] > 20) + sprite->invisible = sprite->data[5] % 2; + + if (sprite->data[5] > 30) + DestroyAnimSprite(sprite); +} + +void sub_8106AD0(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + sprite->data[1] = gBattleAnimArgs[0]; + sprite->data[2] = gBattleAnimArgs[1]; + sprite->data[0]++; + } + else + { + sprite->data[4] += sprite->data[1]; + sprite->pos2.x = sprite->data[4] >> 8; + sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]); + sprite->data[3] = (sprite->data[3] + 3) & 0xFF; + if (sprite->data[3] > 70) + { + sprite->callback = sub_8106A64; + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[3] = Random2() % 180; + } + } +} + +void sub_8106B54(struct Sprite *sprite) +{ + if (sprite->data[3] == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAnim(sprite, 0); + sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) - 1; + sprite->data[2] = 1; + } + sprite->data[0] += sprite->data[2]; + sprite->data[1] = (sprite->data[0] * 4) % 256; + if (sprite->data[1] < 0) + sprite->data[1] = 0; + sprite->pos2.x = Cos(sprite->data[1], 30 - sprite->data[0] / 4); + sprite->pos2.y = Sin(sprite->data[1], 10 - sprite->data[0] / 8); + if (sprite->data[1] > 128 && sprite->data[2] > 0) + sprite->data[2] = -1; + if (sprite->data[1] == 0 && sprite->data[2] < 0) + sprite->data[2] = 1; + sprite->data[3]++; + if (sprite->data[3] < 10 || sprite->data[3] > 80) + sprite->invisible = sprite->data[0] % 2; + else + sprite->invisible = FALSE; + if (sprite->data[3] > 90) + DestroyAnimSprite(sprite); +} + +void sub_8106C80(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAnim(sprite, gBattleAnimArgs[2]); + sprite->data[0]++; + } + else if (sprite->animEnded) + { + DestroyAnimSprite(sprite); + } +} + +void sub_8106CD0(struct Sprite *sprite) +{ + if (!gBattleAnimArgs[2]) + { + DestroyAnimSprite(sprite); + } + else + { + if (!gBattleAnimArgs[0]) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + } + + if (!gBattleAnimArgs[1]) + sprite->pos1.x += 32; + else + sprite->pos1.x -= 32; + + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[1]; + StartSpriteAnim(sprite, sprite->data[1]); + sprite->callback = sub_8106D5C; + } +} + +static void sub_8106D5C(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + if (--sprite->data[0]) + StartSpriteAnim(sprite, sprite->data[1]); + else + DestroyAnimSprite(sprite); + } +} + +void sub_8106D90(u8 taskId) +{ + u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + + PrepareAffineAnimInTaskData(&gTasks[taskId], spriteId, gUnknown_08593B98); + gTasks[taskId].func = sub_8106DD4; +} + +static void sub_8106DD4(u8 taskId) +{ + if (!RunAffineAnimFromTaskData(&gTasks[taskId])) + DestroyAnimVisualTask(taskId); +} + +void sub_8106E00(struct Sprite *sprite) +{ + int var1; + u8 battler = !gBattleAnimArgs[0] ? gBattleAnimAttacker : gBattleAnimTarget; + + if (GetBattlerSide(battler) == B_SIDE_OPPONENT) + gBattleAnimArgs[1] *= -1; + + sprite->pos1.x = GetBattlerSpriteCoord(battler, 2) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(battler, 3) + gBattleAnimArgs[2]; + sprite->data[0] = 0; + sprite->data[1] = (u16)sprite->pos1.x << 3; + sprite->data[2] = (u16)sprite->pos1.y << 3; + + var1 = gBattleAnimArgs[1] << 3; + if (var1 < 0) + var1 += 7; + sprite->data[3] = var1 >> 3; + + var1 = gBattleAnimArgs[2] << 3; + if (var1 < 0) + var1 += 7; + sprite->data[4] = var1 >> 3; + + sprite->oam.tileNum += gBattleAnimArgs[3] * 16; + sprite->callback = sub_8106EC8; +} + +static void sub_8106EC8(struct Sprite *sprite) +{ + sprite->data[1] += sprite->data[3]; + sprite->data[2] += sprite->data[4]; + sprite->pos1.x = sprite->data[1] >> 3; + sprite->pos1.y = sprite->data[2] >> 3; + if (++sprite->data[0] > 16) + DestroyAnimSprite(sprite); +} + +void sub_8106F00(struct Sprite *sprite) +{ + if (!sprite->data[0]) + { + sprite->data[1] = 120 - gBattleAnimArgs[0]; + sprite->invisible = 1; + } + + if (++sprite->data[0] == sprite->data[1]) + SetGreyscaleOrOriginalPalette(sprite->oam.paletteNum + 16, 0); + + if (sprite->data[0] == sprite->data[1] + 80) + DestroyAnimSprite(sprite); +} + +void sub_8106F60(struct Sprite *sprite) +{ + int index; + int var2; + + if (!sprite->data[0]) + { + sprite->pos1.x = 120; + sprite->pos1.y = (gBattleAnimArgs[0] + (((u16)gBattleAnimArgs[0]) >> 31)) / 2 - 15; + + StartSpriteAnim(sprite, gBattleAnimArgs[1]); + + sprite->data[5] = 120; + sprite->data[3] = gBattleAnimArgs[2]; + } + + sprite->data[0]++; + + sprite->data[1] = (sprite->data[0] + ((u16)sprite->data[0] >> 31)) / 2; + index = ((sprite->data[0] * 3) + (u16)sprite->data[3]); + var2 = 0xFF; + sprite->data[6] = (sprite->data[6] + 10) & 0xFF; + + index &= var2; + sprite->pos2.x = Cos(index, 100); + + sprite->pos2.y = sprite->data[1] + Sin(index, 10) + Cos(sprite->data[6], 4); + + if (sprite->data[0] > sprite->data[5]) + { + sprite->callback = sub_8107018; + + sprite->data[0] = 0; + oamt_add_pos2_onto_pos1(sprite); + sprite->data[2] = 5; + sprite->data[4] = 0; + sprite->data[3] = 0; + + StartSpriteAffineAnim(sprite, 1); + } +} + +static void sub_8107018(struct Sprite *sprite) +{ + if (++sprite->data[0] > 10) + { + sprite->data[0] = 0; + sprite->callback = sub_810703C; + } +} + +static void sub_810703C(struct Sprite *sprite) +{ + sprite->data[3] += sprite->data[2]; + sprite->pos2.y = sprite->data[3]; + + sprite->data[2]++; + + if (sprite->data[3] > 48 && sprite->data[2] > 0) + { + sprite->data[2] = sprite->data[4] - 5; + sprite->data[4]++; + } + + if (sprite->data[4] > 3) + { + int var1 = sprite->data[2]; + sprite->invisible = var1 - (((s32)(var1 + ((u32)var1 >> 31)) >> 1) << 1); + DestroyAnimSprite(sprite); + } + + if (sprite->data[4] == 4) + { + DestroyAnimSprite(sprite); + } +} + +void sub_81070AC(struct Sprite *sprite) +{ + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) + { + SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->pos1.x, &sprite->pos1.y); + sprite->pos1.y += 40; + + StartSpriteAffineAnim(sprite, 1); + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 40; + } + + sprite->data[0] = 13; + sprite->data[2] = sprite->pos1.x; + sprite->data[4] = sprite->pos1.y - 72; + + sprite->callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void AnimTask_IsFuryCutterHitRight(u8 taskId) +{ + gBattleAnimArgs[7] = gAnimDisableStructPtr->furyCutterCounter & 1; + DestroyAnimVisualTask(taskId); +} + +void AnimTask_GetFuryCutterHitCount(u8 taskId) +{ + gBattleAnimArgs[7] = gAnimDisableStructPtr->furyCutterCounter; + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index c3d0fe90f..f99b1aeac 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -40,10 +40,10 @@ static void sub_8117FD0(u8); const u16 gUnknown_08597418 = RGB(31, 31, 31); -// no clue what these are... -// possibly some register offsets -const u8 gUnknown_0859741A[] = {0x08, 0x0a, 0x0c, 0x0e}; -const u8 gUnknown_0859741E[] = {0x08, 0x0a, 0x0c, 0x0e}; +// These belong in battle_intro.c, but there putting them there causes 2 bytes of alignment padding +// between the two .rodata segments. Perhaps battle_intro.c actually belongs in this file, too. +const u8 gUnknown_0859741A[] = {REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT}; +const u8 gUnknown_0859741E[] = {REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT}; void sub_8116620(u8 taskId) { @@ -236,7 +236,7 @@ static void sub_81169F8(u8 taskId) } else { - task->data[6] = duplicate_obj_of_side_rel2move_in_transparent_mode(task->data[0]); + task->data[6] = CloneBattlerSpriteWithBlend(task->data[0]); if (task->data[6] >= 0) { gSprites[task->data[6]].oam.priority = task->data[0] ? 1 : 2; diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index 8cbc62aab..e81035fc7 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -1136,7 +1136,7 @@ static void LinkOpponentHandleLoadMonSprite(void) gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(gActiveBattler, 2), GetBattlerSpriteDefault_Y(gActiveBattler), - sub_80A82E4(gActiveBattler)); + GetBattlerSpriteSubpriority(gActiveBattler)); gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240; gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler; @@ -1170,7 +1170,7 @@ static void sub_8066494(u8 battlerId, bool8 dontClearSubstituteBit) &gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battlerId, 2), GetBattlerSpriteDefault_Y(battlerId), - sub_80A82E4(battlerId)); + GetBattlerSpriteSubpriority(battlerId)); gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId]; gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId; @@ -1302,7 +1302,7 @@ static void LinkOpponentHandleDrawTrainerPic(void) gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40, - sub_80A82E4(gActiveBattler)); + GetBattlerSpriteSubpriority(gActiveBattler)); gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240; gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2; diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index 0cd15f39e..533ec39de 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -1024,7 +1024,7 @@ static void LinkPartnerHandleLoadMonSprite(void) gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(gActiveBattler, 2), GetBattlerSpriteDefault_Y(gActiveBattler), - sub_80A82E4(gActiveBattler)); + GetBattlerSpriteSubpriority(gActiveBattler)); gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240; gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler; gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; @@ -1055,7 +1055,7 @@ static void sub_814CC98(u8 battlerId, bool8 dontClearSubstituteBit) &gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battlerId, 2), GetBattlerSpriteDefault_Y(battlerId), - sub_80A82E4(battlerId)); + GetBattlerSpriteSubpriority(battlerId)); gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId]; gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId; @@ -1143,7 +1143,7 @@ static void LinkPartnerHandleDrawTrainerPic(void) DecompressTrainerBackPic(trainerPicId, gActiveBattler); SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler)); - gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80, sub_80A82E4(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80, GetBattlerSpriteSubpriority(gActiveBattler)); gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240; diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index c057e8575..30aa3217b 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -1128,7 +1128,7 @@ static void OpponentHandleLoadMonSprite(void) gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(gActiveBattler, 2), GetBattlerSpriteDefault_Y(gActiveBattler), - sub_80A82E4(gActiveBattler)); + GetBattlerSpriteSubpriority(gActiveBattler)); gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240; gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler; @@ -1163,7 +1163,7 @@ static void sub_80613DC(u8 battlerId, bool8 dontClearSubstituteBit) gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battlerId, 2), GetBattlerSpriteDefault_Y(battlerId), - sub_80A82E4(battlerId)); + GetBattlerSpriteSubpriority(battlerId)); gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId; gSprites[gBattlerSpriteIds[battlerId]].data[2] = species; @@ -1293,7 +1293,7 @@ static void OpponentHandleDrawTrainerPic(void) gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40, - sub_80A82E4(gActiveBattler)); + GetBattlerSpriteSubpriority(gActiveBattler)); gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240; gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2; diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 2bd5ef365..2d8fba63a 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -2200,7 +2200,7 @@ static void sub_805B258(u8 battlerId, bool8 dontClearSubstituteBit) &gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battlerId, 2), GetBattlerSpriteDefault_Y(battlerId), - sub_80A82E4(battlerId)); + GetBattlerSpriteSubpriority(battlerId)); gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId]; gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId; @@ -2314,7 +2314,7 @@ static void PlayerHandleDrawTrainerPic(void) trainerPicId = PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender); DecompressTrainerFrontPic(trainerPicId, gActiveBattler); SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(gActiveBattler)); - gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler)); gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag); gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240; @@ -2329,7 +2329,7 @@ static void PlayerHandleDrawTrainerPic(void) { DecompressTrainerBackPic(trainerPicId, gActiveBattler); SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler)); - gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler)); gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240; diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index 02dd1383b..22018add4 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -1211,7 +1211,7 @@ static void PlayerPartnerHandleLoadMonSprite(void) gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(gActiveBattler, 2), GetBattlerSpriteDefault_Y(gActiveBattler), - sub_80A82E4(gActiveBattler)); + GetBattlerSpriteSubpriority(gActiveBattler)); gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240; gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler; gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; @@ -1242,7 +1242,7 @@ static void sub_81BD0E4(u8 battlerId, bool8 dontClearSubstituteBit) &gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battlerId, 2), GetBattlerSpriteDefault_Y(battlerId), - sub_80A82E4(battlerId)); + GetBattlerSpriteSubpriority(battlerId)); gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId]; gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId; @@ -1322,7 +1322,7 @@ static void PlayerPartnerHandleDrawTrainerPic(void) { DecompressTrainerBackPic(trainerPicId, gActiveBattler); SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler)); - gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler)); gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240; @@ -1333,7 +1333,7 @@ static void PlayerPartnerHandleDrawTrainerPic(void) { DecompressTrainerFrontPic(trainerPicId, gActiveBattler); SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(gActiveBattler)); - gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler)); gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag); gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240; diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c index 0cf3634dc..1cf780264 100644 --- a/src/battle_controller_recorded_opponent.c +++ b/src/battle_controller_recorded_opponent.c @@ -1119,9 +1119,7 @@ static void RecordedOpponentHandleLoadMonSprite(void) gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(gActiveBattler, 2), GetBattlerSpriteDefault_Y(gActiveBattler), - sub_80A82E4(gActiveBattler)); - - + GetBattlerSpriteSubpriority(gActiveBattler)); gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240; gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler; @@ -1154,7 +1152,7 @@ static void sub_81885D8(u8 battlerId, bool8 dontClearSubstituteBit) gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battlerId, 2), GetBattlerSpriteDefault_Y(battlerId), - sub_80A82E4(battlerId)); + GetBattlerSpriteSubpriority(battlerId)); gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId]; gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId; @@ -1251,7 +1249,7 @@ static void RecordedOpponentHandleDrawTrainerPic(void) gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40, - sub_80A82E4(gActiveBattler)); + GetBattlerSpriteSubpriority(gActiveBattler)); gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240; gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2; diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c index 4d7fdc01e..a788d6be3 100644 --- a/src/battle_controller_recorded_player.c +++ b/src/battle_controller_recorded_player.c @@ -1105,7 +1105,7 @@ static void RecordedPlayerHandleLoadMonSprite(void) gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(gActiveBattler, 2), GetBattlerSpriteDefault_Y(gActiveBattler), - sub_80A82E4(gActiveBattler)); + GetBattlerSpriteSubpriority(gActiveBattler)); gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240; gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler; gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; @@ -1136,7 +1136,7 @@ static void sub_818BA6C(u8 battlerId, bool8 dontClearSubstituteBit) &gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battlerId, 2), GetBattlerSpriteDefault_Y(battlerId), - sub_80A82E4(battlerId)); + GetBattlerSpriteSubpriority(battlerId)); gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId]; gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId; @@ -1236,7 +1236,7 @@ static void RecordedPlayerHandleDrawTrainerPic(void) trainerPicId = PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender); DecompressTrainerFrontPic(trainerPicId, gActiveBattler); SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(gActiveBattler)); - gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler)); gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag); gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240; @@ -1250,7 +1250,7 @@ static void RecordedPlayerHandleDrawTrainerPic(void) { DecompressTrainerBackPic(trainerPicId, gActiveBattler); SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler)); - gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler)); gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240; diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c index 5d87c4f90..c0b496e47 100644 --- a/src/battle_controller_wally.c +++ b/src/battle_controller_wally.c @@ -1464,7 +1464,7 @@ static void sub_816AA80(u8 battlerId) gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battlerId, 2), GetBattlerSpriteDefault_Y(battlerId), - sub_80A82E4(battlerId)); + GetBattlerSpriteSubpriority(battlerId)); gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId]; gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId; diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 8d7ed2dce..f53a6281d 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -1097,14 +1097,14 @@ void sub_805EB9C(u8 affineMode) if (IsBattlerSpritePresent(i)) { gSprites[gBattlerSpriteIds[i]].oam.affineMode = affineMode; - if (affineMode == 0) + if (affineMode == ST_OAM_AFFINE_OFF) { - gBattleSpritesDataPtr->healthBoxesData[i].field_6 = gSprites[gBattlerSpriteIds[i]].oam.matrixNum; + gBattleSpritesDataPtr->healthBoxesData[i].matrixNum = gSprites[gBattlerSpriteIds[i]].oam.matrixNum; gSprites[gBattlerSpriteIds[i]].oam.matrixNum = 0; } else { - gSprites[gBattlerSpriteIds[i]].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[i].field_6; + gSprites[gBattlerSpriteIds[i]].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[i].matrixNum; } } } diff --git a/src/battle_intro.c b/src/battle_intro.c index 0ccc7e828..736e35a87 100644 --- a/src/battle_intro.c +++ b/src/battle_intro.c @@ -1,21 +1,728 @@ #include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_main.h" +#include "battle_setup.h" +#include "bg.h" +#include "gpu_regs.h" +#include "main.h" +#include "scanline_effect.h" #include "task.h" +#include "trig.h" +#include "constants/trainers.h" -extern void task_battle_intro_80BC47C(u8); -extern void task00_battle_intro_80BC6C8(u8); -extern void task_battle_intro_80BC47C(u8); -extern void task_battle_intro_anim(u8); - -const TaskFunc gUnknown_08597424[] = -{ - task_battle_intro_80BC47C, - task_battle_intro_80BC47C, - task00_battle_intro_80BC6C8, - task00_battle_intro_80BC6C8, - task00_battle_intro_80BC6C8, - task_battle_intro_80BC47C, - task_battle_intro_80BC47C, - task_battle_intro_80BC47C, - task_battle_intro_anim, - task_battle_intro_anim, +static EWRAM_DATA u16 sBgCnt = 0; + +extern const u8 gUnknown_0859741A[]; +extern const u8 gUnknown_0859741E[]; + +static void BattleIntroSlide1(u8); +static void BattleIntroSlide2(u8); +static void BattleIntroSlide3(u8); +static void BattleIntroSlideLink(u8); +static void BattleIntroSlidePartner(u8); + +static const TaskFunc sBattleIntroSlideFuncs[] = +{ + BattleIntroSlide1, // BATTLE_TERRAIN_GRASS + BattleIntroSlide1, // BATTLE_TERRAIN_LONG_GRASS + BattleIntroSlide2, // BATTLE_TERRAIN_SAND + BattleIntroSlide2, // BATTLE_TERRAIN_UNDERWATER + BattleIntroSlide2, // BATTLE_TERRAIN_WATER + BattleIntroSlide1, // BATTLE_TERRAIN_POND + BattleIntroSlide1, // BATTLE_TERRAIN_MOUNTAIN + BattleIntroSlide1, // BATTLE_TERRAIN_CAVE + BattleIntroSlide3, // BATTLE_TERRAIN_BUILDING + BattleIntroSlide3, // BATTLE_TERRAIN_PLAIN }; + +void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value) +{ + if (bgId < 4) + { + sBgCnt = GetGpuReg(gUnknown_0859741A[bgId]); + switch (attributeId) + { + case BG_ANIM_SCREEN_SIZE: + ((struct BgCnt *)&sBgCnt)->screenSize = value; + break; + case BG_ANIM_AREA_OVERFLOW_MODE: + ((struct BgCnt *)&sBgCnt)->areaOverflowMode = value; + break; + case BG_ANIM_MOSAIC: + ((struct BgCnt *)&sBgCnt)->mosaic = value; + break; + case BG_ANIM_CHAR_BASE_BLOCK: + ((struct BgCnt *)&sBgCnt)->charBaseBlock = value; + break; + case BG_ANIM_PRIORITY: + ((struct BgCnt *)&sBgCnt)->priority = value; + break; + case BG_ANIM_PALETTES_MODE: + ((struct BgCnt *)&sBgCnt)->palettes = value; + break; + case BG_ANIM_SCREEN_BASE_BLOCK: + ((struct BgCnt *)&sBgCnt)->screenBaseBlock = value; + break; + } + + SetGpuReg(gUnknown_0859741A[bgId], sBgCnt); + } +} + +int GetAnimBgAttribute(u8 bgId, u8 attributeId) +{ + u16 bgCnt; + + if (bgId < 4) + { + bgCnt = GetGpuReg(gUnknown_0859741E[bgId]); + switch (attributeId) + { + case BG_ANIM_SCREEN_SIZE: + return ((struct BgCnt *)&bgCnt)->screenSize; + case BG_ANIM_AREA_OVERFLOW_MODE: + return ((struct BgCnt *)&bgCnt)->areaOverflowMode; + case BG_ANIM_MOSAIC: + return ((struct BgCnt *)&bgCnt)->mosaic; + case BG_ANIM_CHAR_BASE_BLOCK: + return ((struct BgCnt *)&bgCnt)->charBaseBlock; + case BG_ANIM_PRIORITY: + return ((struct BgCnt *)&bgCnt)->priority; + case BG_ANIM_PALETTES_MODE: + return ((struct BgCnt *)&bgCnt)->palettes; + case BG_ANIM_SCREEN_BASE_BLOCK: + return ((struct BgCnt *)&bgCnt)->screenBaseBlock; + } + } + + return 0; +} + +void HandleIntroSlide(u8 terrain) +{ + u8 taskId; + + if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) && gPartnerTrainerId != TRAINER_STEVEN_PARTNER) + { + taskId = CreateTask(BattleIntroSlidePartner, 0); + } + else if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + taskId = CreateTask(BattleIntroSlideLink, 0); + } + else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) + { + taskId = CreateTask(BattleIntroSlide3, 0); + } + else if ((gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) && gGameVersion != VERSION_RUBY) + { + terrain = BATTLE_TERRAIN_UNDERWATER; + taskId = CreateTask(BattleIntroSlide2, 0); + } + else + { + taskId = CreateTask(sBattleIntroSlideFuncs[terrain], 0); + } + + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = terrain; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; + gTasks[taskId].data[5] = 0; + gTasks[taskId].data[6] = 0; +} + +void sub_811828C(u8 taskId) +{ + DestroyTask(taskId); + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); +} + +static void BattleIntroSlide1(u8 taskId) +{ + int i; + + gBattle_BG1_X += 6; + switch (gTasks[taskId].data[0]) + { + case 0: + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gTasks[taskId].data[2] = 16; + gTasks[taskId].data[0]++; + } + else + { + gTasks[taskId].data[2] = 1; + gTasks[taskId].data[0]++; + } + break; + case 1: + if (--gTasks[taskId].data[2] == 0) + { + gTasks[taskId].data[0]++; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR); + } + break; + case 2: + gBattle_WIN0V -= 0xFF; + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + gTasks[taskId].data[0]++; + gTasks[taskId].data[2] = 240; + gTasks[taskId].data[3] = 32; + gIntroSlideFlags &= ~1; + } + break; + case 3: + if (gTasks[taskId].data[3]) + { + gTasks[taskId].data[3]--; + } + else + { + if (gTasks[taskId].data[1] == 1) + { + if (gBattle_BG1_Y != 0xFFB0) + gBattle_BG1_Y -= 2; + } + else + { + if (gBattle_BG1_Y != 0xFFC8) + gBattle_BG1_Y -= 1; + } + } + + if (gBattle_WIN0V & 0xFF00) + gBattle_WIN0V -= 0x3FC; + + if (gTasks[taskId].data[2]) + gTasks[taskId].data[2] -= 2; + + // Scanline settings have already been set in CB2_InitBattleInternal() + for (i = 0; i < 80; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; + + for (; i < 160; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2]; + + if (!gTasks[taskId].data[2]) + { + gScanlineEffect.state = 3; + gTasks[taskId].data[0]++; + CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE); + SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0); + SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0); + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256); + } + break; + case 4: + sub_811828C(taskId); + break; + } +} + +static void BattleIntroSlide2(u8 taskId) +{ + int i; + + switch (gTasks[taskId].data[1]) + { + case 2: + case 4: + gBattle_BG1_X += 8; + break; + case 3: + gBattle_BG1_X += 6; + break; + } + + if (gTasks[taskId].data[1] == 4) + { + gBattle_BG1_Y = Cos2(gTasks[taskId].data[6]) / 512 - 8; + if (gTasks[taskId].data[6] < 180) + gTasks[taskId].data[6] += 4; + else + gTasks[taskId].data[6] += 6; + + if (gTasks[taskId].data[6] == 360) + gTasks[taskId].data[6] = 0; + } + + switch (gTasks[taskId].data[0]) + { + case 0: + gTasks[taskId].data[4] = 16; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gTasks[taskId].data[2] = 16; + gTasks[taskId].data[0]++; + } + else + { + gTasks[taskId].data[2] = 1; + gTasks[taskId].data[0]++; + } + break; + case 1: + if (--gTasks[taskId].data[2] == 0) + { + gTasks[taskId].data[0]++; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR); + } + break; + case 2: + gBattle_WIN0V -= 0xFF; + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + gTasks[taskId].data[0]++; + gTasks[taskId].data[2] = 240; + gTasks[taskId].data[3] = 32; + gTasks[taskId].data[5] = 1; + gIntroSlideFlags &= ~1; + } + break; + case 3: + if (gTasks[taskId].data[3]) + { + if (--gTasks[taskId].data[3] == 0) + { + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(15, 0)); + SetGpuReg(REG_OFFSET_BLDY, 0); + } + } + else + { + if ((gTasks[taskId].data[4] & 0x1F) && --gTasks[taskId].data[5] == 0) + { + gTasks[taskId].data[4] += 0xFF; + gTasks[taskId].data[5] = 4; + } + } + + if (gBattle_WIN0V & 0xFF00) + gBattle_WIN0V -= 0x3FC; + + if (gTasks[taskId].data[2]) + gTasks[taskId].data[2] -= 2; + + // Scanline settings have already been set in CB2_InitBattleInternal() + for (i = 0; i < 80; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; + + for (; i < 160; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2]; + + if (!gTasks[taskId].data[2]) + { + gScanlineEffect.state = 3; + gTasks[taskId].data[0]++; + CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE); + SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0); + SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0); + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256); + } + break; + case 4: + sub_811828C(taskId); + break; + } + + if (gTasks[taskId].data[0] != 4) + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[4], 0)); +} + +static void BattleIntroSlide3(u8 taskId) +{ + int i; + + gBattle_BG1_X += 8; + switch (gTasks[taskId].data[0]) + { + case 0: + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 8)); + SetGpuReg(REG_OFFSET_BLDY, 0); + gTasks[taskId].data[4] = BLDALPHA_BLEND(8, 8); + if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) + { + gTasks[taskId].data[2] = 16; + gTasks[taskId].data[0]++; + } + else + { + gTasks[taskId].data[2] = 1; + gTasks[taskId].data[0]++; + } + break; + case 1: + if (--gTasks[taskId].data[2] == 0) + { + gTasks[taskId].data[0]++; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR); + } + break; + case 2: + gBattle_WIN0V -= 0xFF; + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + gTasks[taskId].data[0]++; + gTasks[taskId].data[2] = 240; + gTasks[taskId].data[3] = 32; + gTasks[taskId].data[5] = 1; + gIntroSlideFlags &= ~1; + } + break; + case 3: + if (gTasks[taskId].data[3]) + { + gTasks[taskId].data[3]--; + } + else + { + if ((gTasks[taskId].data[4] & 0xF) && --gTasks[taskId].data[5] == 0) + { + gTasks[taskId].data[4] += 0xFF; + gTasks[taskId].data[5] = 6; + } + } + + if (gBattle_WIN0V & 0xFF00) + gBattle_WIN0V -= 0x3FC; + + if (gTasks[taskId].data[2]) + gTasks[taskId].data[2] -= 2; + + // Scanline settings have already been set in CB2_InitBattleInternal() + for (i = 0; i < 80; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; + + for (; i < 160; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2]; + + if (!gTasks[taskId].data[2]) + { + gScanlineEffect.state = 3; + gTasks[taskId].data[0]++; + CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE); + SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0); + SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0); + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256); + } + break; + case 4: + sub_811828C(taskId); + break; + } + + if (gTasks[taskId].data[0] != 4) + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[4], 0)); +} + +static void BattleIntroSlideLink(u8 taskId) +{ + int i; + + if (gTasks[taskId].data[0] > 1 && !gTasks[taskId].data[4]) + { + u16 var0 = gBattle_BG1_X & 0x8000; + if (var0 || gBattle_BG1_X < 80) + { + gBattle_BG1_X += 3; + gBattle_BG2_X -= 3; + } + else + { + CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE); + CpuFill32(0, (void *)BG_SCREEN_ADDR(30), BG_SCREEN_SIZE); + gTasks[taskId].data[4] = 1; + } + } + + switch (gTasks[taskId].data[0]) + { + case 0: + gTasks[taskId].data[2] = 32; + gTasks[taskId].data[0]++; + break; + case 1: + if (--gTasks[taskId].data[2] == 0) + { + gTasks[taskId].data[0]++; + gSprites[gBattleStruct->field_7D].oam.objMode = ST_OAM_OBJ_WINDOW; + gSprites[gBattleStruct->field_7D].callback = sub_8038B74; + gSprites[gBattleStruct->field_7E].oam.objMode = ST_OAM_OBJ_WINDOW; + gSprites[gBattleStruct->field_7E].callback = sub_8038B74; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2); + } + break; + case 2: + gBattle_WIN0V -= 0xFF; + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + gTasks[taskId].data[0]++; + gTasks[taskId].data[2] = 240; + gTasks[taskId].data[3] = 32; + gIntroSlideFlags &= ~1; + } + break; + case 3: + if (gBattle_WIN0V & 0xFF00) + gBattle_WIN0V -= 0x3FC; + + if (gTasks[taskId].data[2]) + gTasks[taskId].data[2] -= 2; + + // Scanline settings have already been set in CB2_InitBattleInternal() + for (i = 0; i < 80; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; + + for (; i < 160; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2]; + + if (!gTasks[taskId].data[2]) + { + gScanlineEffect.state = 3; + gTasks[taskId].data[0]++; + SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0); + SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0); + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256); + } + break; + case 4: + sub_811828C(taskId); + break; + } +} + +static void BattleIntroSlidePartner(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + gTasks[taskId].data[2] = 1; + gTasks[taskId].data[0]++; + break; + case 1: + if (--gTasks[taskId].data[2] == 0) + { + gTasks[taskId].data[0]++; + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT512x256); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256); + SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJWIN_ON); + SetGpuReg(REG_OFFSET_WININ, WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); + gBattle_BG0_Y = -48; + gBattle_BG1_X = 240; + gBattle_BG2_X = -240; + } + break; + case 2: + gBattle_WIN0V += 0x100; + if ((gBattle_WIN0V & 0xFF00) != 0x100) + gBattle_WIN0V--; + + if ((gBattle_WIN0V & 0xFF00) == 0x2000) + { + gTasks[taskId].data[0]++; + gTasks[taskId].data[2] = 240; + gIntroSlideFlags &= ~1; + } + break; + case 3: + if ((gBattle_WIN0V & 0xFF00) != 0x4C00) + gBattle_WIN0V += 0x3FC; + + if (gTasks[taskId].data[2]) + gTasks[taskId].data[2] -= 2; + + gBattle_BG1_X = gTasks[taskId].data[2]; + gBattle_BG2_X = -gTasks[taskId].data[2]; + if (!gTasks[taskId].data[2]) + gTasks[taskId].data[0]++; + break; + case 4: + gBattle_BG0_Y += 2; + gBattle_BG2_Y += 2; + if ((gBattle_WIN0V & 0xFF00) != 0x5000) + gBattle_WIN0V += 0xFF; + + if (!gBattle_BG0_Y) + { + CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE * 4); + SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) & ~DISPCNT_WIN1_ON); + SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0); + SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0); + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256); + gScanlineEffect.state = 3; + gTasks[taskId].data[0]++; + } + break; + case 5: + sub_811828C(taskId); + break; + } +} + +void sub_8118FBC(int bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 tilesOffset) +{ + int i, j; + u8 battler = GetBattlerAtPosition(battlerPosition); + int offset = tilesOffset; + CpuCopy16(gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], arg5, BG_SCREEN_SIZE); + LoadBgTiles(bgId, arg5, 0x1000, tilesOffset); + for (i = arg2; i < arg2 + 8; i++) + { + for (j = arg1; j < arg1 + 8; j++) + { + arg6[i * 32 + j] = offset | (arg4 << 12); + offset++; + } + } + + LoadBgTilemap(bgId, arg6, BG_SCREEN_SIZE, 0); +} + +#ifdef NONMATCHING +void unref_sub_8119094(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u16 arg5, u8 arg6, u8 arg7) +{ + int i, j; + int offset; + DmaCopy16(3, gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE); + offset = (arg5 >> 5) - (arg7 << 9); + for (i = arg1; i < arg1 + 8; i++) + { + for (j = arg0; j < arg0 + 8; j++) + { + ((u16 *)BG_VRAM)[i * 32 + j + (arg6 * 0x400) + arg0] = offset | (arg4 << 12); + offset++; + } + } +} +#else +NAKED +void unref_sub_8119094(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u16 arg5, u8 arg6, u8 arg7) +{ + asm_unified("\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + ldr r4, [sp, 0x24]\n\ + ldr r5, [sp, 0x28]\n\ + mov r8, r5\n\ + ldr r5, [sp, 0x2C]\n\ + ldr r6, [sp, 0x30]\n\ + mov r9, r6\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r12, r0\n\ + lsls r1, 24\n\ + lsls r2, 24\n\ + lsls r3, 24\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + mov r10, r4\n\ + mov r7, r8\n\ + lsls r7, 16\n\ + lsrs r6, r7, 16\n\ + lsls r5, 24\n\ + lsrs r5, 24\n\ + mov r0, r9\n\ + lsls r0, 24\n\ + mov r9, r0\n\ + ldr r4, =0x040000d4\n\ + ldr r0, =gMonSpritesGfxPtr\n\ + ldr r0, [r0]\n\ + lsrs r2, 22\n\ + adds r0, 0x4\n\ + adds r0, r2\n\ + lsrs r3, 13\n\ + ldr r0, [r0]\n\ + adds r0, r3\n\ + str r0, [r4]\n\ + movs r0, 0xC0\n\ + lsls r0, 19\n\ + adds r6, r0\n\ + str r6, [r4, 0x4]\n\ + ldr r0, =0x80000400\n\ + str r0, [r4, 0x8]\n\ + ldr r0, [r4, 0x8]\n\ + adds r2, r7, 0\n\ + lsrs r2, 21\n\ + mov r6, r9\n\ + lsrs r6, 15\n\ + subs r4, r2, r6\n\ + lsrs r0, r1, 24\n\ + adds r1, r0, 0\n\ + adds r1, 0x8\n\ + cmp r0, r1\n\ + bge _08119148\n\ + mov r9, r1\n\ + mov r7, r12\n\ + lsls r7, 1\n\ + mov r8, r7\n\ + lsls r5, 11\n\ + str r5, [sp]\n\ +_08119110:\n\ + mov r2, r12\n\ + adds r3, r2, 0\n\ + adds r3, 0x8\n\ + adds r5, r0, 0x1\n\ + cmp r2, r3\n\ + bge _08119142\n\ + mov r1, r10\n\ + lsls r6, r1, 12\n\ + lsls r0, 6\n\ + movs r7, 0xC0\n\ + lsls r7, 19\n\ + adds r0, r7\n\ + ldr r1, [sp]\n\ + adds r0, r1, r0\n\ + mov r7, r8\n\ + adds r1, r7, r0\n\ + subs r2, r3, r2\n\ +_08119132:\n\ + adds r0, r4, 0\n\ + orrs r0, r6\n\ + strh r0, [r1]\n\ + adds r4, 0x1\n\ + adds r1, 0x2\n\ + subs r2, 0x1\n\ + cmp r2, 0\n\ + bne _08119132\n\ +_08119142:\n\ + adds r0, r5, 0\n\ + cmp r0, r9\n\ + blt _08119110\n\ +_08119148:\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .pool"); +} +#endif diff --git a/src/battle_main.c b/src/battle_main.c index d9256d622..16025a455 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -81,7 +81,7 @@ extern const u8 *const gBattlescriptsForBallThrow[]; extern const u8 *const gBattlescriptsForRunningByItem[]; extern const u8 *const gBattlescriptsForUsingItem[]; extern const u8 *const gBattlescriptsForSafariActions[]; -extern const struct ScanlineEffectParams gUnknown_0831AC70; +extern const struct ScanlineEffectParams gBattleIntroSlideScanlineEffectParams; // strings extern const u8 gText_LinkStandby3[]; @@ -633,7 +633,7 @@ static void CB2_InitBattleInternal(void) gScanlineEffectRegBuffers[1][i] = 0xFF10; } - ScanlineEffect_SetParams(gUnknown_0831AC70); + ScanlineEffect_SetParams(gBattleIntroSlideScanlineEffectParams); } ResetPaletteFade(); diff --git a/src/battle_tower.c b/src/battle_tower.c index cb128b532..4a9e0dbc4 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -3245,7 +3245,7 @@ static void FillPartnerParty(u16 trainerId) for (i = 0; i < 2; i++) { struct EmeraldBattleTowerRecord *record = &gSaveBlock2Ptr->frontier.towerRecords[trainerId]; - struct UnknownPokemonStruct monData = record->party[gSaveBlock2Ptr->frontier.field_CB4[18 + i]]; + struct BattleTowerPokemon monData = record->party[gSaveBlock2Ptr->frontier.field_CB4[18 + i]]; StringCopy(trainerName, record->name); if (record->language == LANGUAGE_JAPANESE) { @@ -395,7 +395,7 @@ void AnimTranslateStinger(struct Sprite *sprite) lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; rot = ArcTan2Neg(lVarX - sprite->pos1.x, lVarY - sprite->pos1.y); rot += 0xC000; - sub_80A73E0(sprite, FALSE, 0x100, 0x100, rot); + TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rot); sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = lVarX; @@ -458,7 +458,7 @@ static void AnimMissileArcStep(struct Sprite *sprite) u16 rotation = ArcTan2Neg(sprite->pos1.x + sprite->pos2.x - x2, sprite->pos1.y + sprite->pos2.y - y2); rotation += 0xC000; - sub_80A73E0(sprite, FALSE, 0x100, 0x100, rotation); + TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rotation); for (i = 0; i < 8; i++) data[i] = tempData[i]; @@ -479,6 +479,6 @@ void sub_8110994(struct Sprite *sprite) sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18; } - StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); - sprite->callback = sub_80A67BC; + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; } diff --git a/src/contest.c b/src/contest.c index 0c4397f30..3d74109cb 100644 --- a/src/contest.c +++ b/src/contest.c @@ -2520,7 +2520,7 @@ u8 sub_80DB174(u16 species, u32 otId, u32 personality, u32 index) spriteId = CreateSprite(&gMultiuseSpriteTemplate, 0x70, GetBattlerSpriteFinal_Y(2, species, FALSE), 30); gSprites[spriteId].oam.paletteNum = 2; gSprites[spriteId].oam.priority = 2; - gSprites[spriteId].subpriority = sub_80A82E4(2); + gSprites[spriteId].subpriority = GetBattlerSpriteSubpriority(2); gSprites[spriteId].callback = SpriteCallbackDummy; gSprites[spriteId].data[0] = gSprites[spriteId].oam.paletteNum; gSprites[spriteId].data[2] = species; diff --git a/src/contest_painting.c b/src/contest_painting.c index 7950b7cac..9de3d733d 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -1,8 +1,709 @@ #include "global.h" +#include "alloc.h" +#include "battle.h" +#include "bg.h" +#include "contest.h" +#include "contest_painting.h" +#include "contest_painting_effects.h" +#include "battle_gfx_sfx_util.h" +#include "decompress.h" +#include "gpu_regs.h" +#include "international_string_util.h" +#include "main.h" +#include "lilycove_lady.h" +#include "palette.h" +#include "random.h" +#include "scanline_effect.h" +#include "string_util.h" +#include "strings.h" +#include "text.h" +#include "window.h" +#include "constants/rgb.h" + +extern u8 gUnknown_02039F5C; +extern u8 gUnknown_02039F5D; + +extern u16 (*gUnknown_03006190)[][32]; +extern struct ContestWinner *gUnknown_030061C0; +extern u16 *gContestPaintingMonPalette; +extern struct Unk030061A0 gUnknown_030061A0; // IWRAM bss -IWRAM_DATA u8 gUnknown_030011F0; -IWRAM_DATA u16 gUnknown_030011F2; -IWRAM_DATA u16 gUnknown_030011F4; -IWRAM_DATA u8 gUnknown_030011F6; -IWRAM_DATA u8 gUnknown_030011F7; +IWRAM_DATA u8 gContestPaintingState; +IWRAM_DATA u16 gContestPaintingMosaicVal; +IWRAM_DATA u16 gContestPaintingFadeCounter; +IWRAM_DATA bool8 gUnknown_030011F6; +IWRAM_DATA u8 gContestPaintingWindowId; + +static void ShowContestPainting(void); +static void HoldContestPainting(void); +static void InitContestPaintingWindow(void); +static void InitContestPaintingBg(void); +static void InitContestPaintingVars(bool8); +static void sub_8130884(u8, u8); +static void PrintContestPaintingCaption(u8, u8); +static void VBlankCB_ContestPainting(void); +static void sub_8130380(u8 *spritePixels, u16 *palette, u16 (*destColorBuffer)[64][64]); + +extern const u8 gUnknown_0827EA0C[]; +extern const struct CompressedSpriteSheet gMonFrontPicTable[]; +extern const struct CompressedSpriteSheet gMonBackPicTable[]; +extern const u8 gContestCoolness[]; +extern const u8 gContestBeauty[]; +extern const u8 gContestCuteness[]; +extern const u8 gContestSmartness[]; +extern const u8 gContestToughness[]; +extern const u8 gContestRankNormal[]; +extern const u8 gContestRankSuper[]; +extern const u8 gContestRankHyper[]; +extern const u8 gContestRankMaster[]; +extern const u8 gContestLink[]; +extern const u8 gContestPaintingCool1[]; +extern const u8 gContestPaintingCool2[]; +extern const u8 gContestPaintingCool3[]; +extern const u8 gContestPaintingBeauty1[]; +extern const u8 gContestPaintingBeauty2[]; +extern const u8 gContestPaintingBeauty3[]; +extern const u8 gContestPaintingCute1[]; +extern const u8 gContestPaintingCute2[]; +extern const u8 gContestPaintingCute3[]; +extern const u8 gContestPaintingSmart1[]; +extern const u8 gContestPaintingSmart2[]; +extern const u8 gContestPaintingSmart3[]; +extern const u8 gContestPaintingTough1[]; +extern const u8 gContestPaintingTough2[]; +extern const u8 gContestPaintingTough3[]; + +const u16 gPictureFramePalettes[] = INCBIN_U16("graphics/picture_frame/bg.gbapal"); +const u8 gPictureFrameTiles_0[] = INCBIN_U8("graphics/picture_frame/frame0.4bpp.rl"); +const u8 gPictureFrameTiles_1[] = INCBIN_U8("graphics/picture_frame/frame1.4bpp.rl"); +const u8 gPictureFrameTiles_2[] = INCBIN_U8("graphics/picture_frame/frame2.4bpp.rl"); +const u8 gPictureFrameTiles_3[] = INCBIN_U8("graphics/picture_frame/frame3.4bpp.rl"); +const u8 gPictureFrameTiles_4[] = INCBIN_U8("graphics/picture_frame/frame4.4bpp.rl"); +const u8 gPictureFrameTiles_5[] = INCBIN_U8("graphics/picture_frame/frame5.4bpp.rl"); +const u8 gPictureFrameTilemap_0[] = INCBIN_U8("graphics/picture_frame/frame0_map.bin.rl"); +const u8 gPictureFrameTilemap_1[] = INCBIN_U8("graphics/picture_frame/frame1_map.bin.rl"); +const u8 gPictureFrameTilemap_2[] = INCBIN_U8("graphics/picture_frame/frame2_map.bin.rl"); +const u8 gPictureFrameTilemap_3[] = INCBIN_U8("graphics/picture_frame/frame3_map.bin.rl"); +const u8 gPictureFrameTilemap_4[] = INCBIN_U8("graphics/picture_frame/frame4_map.bin.rl"); +const u8 gPictureFrameTilemap_5[] = INCBIN_U8("graphics/picture_frame/frame5_map.bin.rl"); + +const u8 *const gUnknown_085B07C0[] = +{ + gContestCoolness, + gContestBeauty, + gContestCuteness, + gContestSmartness, + gContestToughness, +}; + +const u8 *const gContestRankTextPointers[] = +{ + gContestRankNormal, + gContestRankSuper, + gContestRankHyper, + gContestRankMaster, + gContestLink, +}; + +const struct BgTemplate gUnknown_085B07E8[] = +{ + { + .bg = 1, + .charBaseIndex = 1, + .mapBaseIndex = 10, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0, + }, +}; + +const struct WindowTemplate gUnknown_085B07EC = +{ + .bg = 1, + .tilemapLeft = 2, + .tilemapTop = 14, + .width = 26, + .height = 4, + .paletteNum = 15, + .baseBlock = 1, +}; + +const u8 *const gContestPaintingDescriptionPointers[] = +{ + gContestPaintingCool1, + gContestPaintingCool2, + gContestPaintingCool3, + gContestPaintingBeauty1, + gContestPaintingBeauty2, + gContestPaintingBeauty3, + gContestPaintingCute1, + gContestPaintingCute2, + gContestPaintingCute3, + gContestPaintingSmart1, + gContestPaintingSmart2, + gContestPaintingSmart3, + gContestPaintingTough1, + gContestPaintingTough2, + gContestPaintingTough3, +}; + +const struct OamData gUnknown_085B0830 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = 1, + .bpp = ST_OAM_8BPP, + .shape = ST_OAM_SQUARE, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +const u16 gUnknown_085B0838[] = {RGB(0, 0, 0), RGB(0, 0, 0)}; + +void sub_812FDA8(int contestWinner) +{ + // probably fakematching + u8 *ptr1 = &gUnknown_02039F5D; + u8 *ptr2 = &gUnknown_02039F5C; + gUnknown_02039F3C = gSaveBlock1Ptr->contestWinners[contestWinner - 1]; + *ptr1 = contestWinner - 1; + *ptr2 = 0; +} + +void CB2_ContestPainting(void) +{ + ShowContestPainting(); +} + +static void CB2_HoldContestPainting(void) +{ + HoldContestPainting(); + RunTextPrinters(); + UpdatePaletteFade(); +} + +static void CB2_QuitContestPainting(void) +{ + SetMainCallback2(gMain.savedCallback); + FREE_AND_SET_NULL(gContestPaintingMonPalette); + FREE_AND_SET_NULL(gUnknown_03006190); + RemoveWindow(gContestPaintingWindowId); + Free(GetBgTilemapBuffer(1)); + FreeMonSpritesGfx(); +} + +static void ShowContestPainting(void) +{ + switch (gMain.state) + { + case 0: + ScanlineEffect_Stop(); + SetVBlankCallback(NULL); + AllocateMonSpritesGfx(); + gUnknown_030061C0 = &gUnknown_02039F3C; + InitContestPaintingVars(1); + InitContestPaintingBg(); + gMain.state++; + break; + case 1: + ResetPaletteFade(); + DmaFillLarge32(3, 0, (void *)BG_VRAM, 0x18000, 0x1000); + ResetSpriteData(); + gMain.state++; + break; + case 2: + SeedRng(gMain.vblankCounter1); + InitKeys(); + InitContestPaintingWindow(); + gMain.state++; + break; + case 3: + sub_8130884(gUnknown_02039F5D, gUnknown_02039F5C); + gMain.state++; + break; + case 4: + PrintContestPaintingCaption(gUnknown_02039F5D, gUnknown_02039F5C); + LoadPalette(gUnknown_085B0838, 0, 1 * 2); + DmaClear32(3, PLTT, PLTT_SIZE); + BeginFastPaletteFade(2); + SetVBlankCallback(VBlankCB_ContestPainting); + gContestPaintingState = 0; + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON); + SetMainCallback2(CB2_HoldContestPainting); + break; + } +} + +static void HoldContestPainting(void) +{ + switch (gContestPaintingState) + { + case 0: + if (!gPaletteFade.active) + gContestPaintingState = 1; + if (gUnknown_030011F6 && gContestPaintingFadeCounter) + gContestPaintingFadeCounter--; + break; + case 1: + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + u8 two = 2; //needed to make the asm match + gContestPaintingState = two; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); + } + + if (gUnknown_030011F6) + gContestPaintingFadeCounter = 0; + break; + case 2: + if (!gPaletteFade.active) + SetMainCallback2(CB2_QuitContestPainting); + if (gUnknown_030011F6 && gContestPaintingFadeCounter < 30) + gContestPaintingFadeCounter++; + break; + } +} + +static void InitContestPaintingWindow(void) +{ + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_085B07E8, ARRAY_COUNT(gUnknown_085B07E8)); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + SetBgTilemapBuffer(1, AllocZeroed(BG_SCREEN_SIZE)); + gContestPaintingWindowId = AddWindow(&gUnknown_085B07EC); + DeactivateAllTextPrinters(); + FillWindowPixelBuffer(gContestPaintingWindowId, 0); + PutWindowTilemap(gContestPaintingWindowId); + CopyWindowToVram(gContestPaintingWindowId, 3); + ShowBg(1); +} + +static void PrintContestPaintingCaption(u8 contestType, u8 arg1) +{ + int x; + u8 category; + + if (arg1 == TRUE) + return; + + category = gUnknown_030061C0->contestCategory; + if (contestType < 8) + { + sub_818E868(gStringVar1, category); + StringAppend(gStringVar1, gText_Space); + StringAppend(gStringVar1, gContestRankTextPointers[gUnknown_030061C0->contestRank]); + StringCopy(gStringVar2, gUnknown_030061C0->trainerName); + sub_81DB5AC(gStringVar2); + StringCopy(gStringVar3, gUnknown_030061C0->monName); + StringExpandPlaceholders(gStringVar4, gUnknown_0827EA0C); + } + else + { + StringCopy(gStringVar1, gUnknown_030061C0->monName); + StringExpandPlaceholders(gStringVar4, gContestPaintingDescriptionPointers[category]); + } + + x = GetStringCenterAlignXOffset(1, gStringVar4, 208); + AddTextPrinterParameterized(gContestPaintingWindowId, 1, gStringVar4, x, 1, 0, 0); + CopyBgTilemapBufferToVram(1); +} + +static void InitContestPaintingBg(void) +{ + SetGpuReg(REG_OFFSET_DISPCNT, 0); + REG_IE |= INTR_FLAG_VBLANK; + SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(12) | BGCNT_MOSAIC | BGCNT_16COLOR | BGCNT_TXT256x256); + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(10) | BGCNT_MOSAIC | BGCNT_16COLOR | BGCNT_TXT256x256); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); +} + +static void InitContestPaintingVars(bool8 arg0) +{ + if (arg0 == FALSE) + { + gUnknown_030011F6 = FALSE; + gContestPaintingMosaicVal = 0; + gContestPaintingFadeCounter = 0; + } + else + { + gUnknown_030011F6 = TRUE; + gContestPaintingMosaicVal = 15; + gContestPaintingFadeCounter = 30; + } +} + +static void UpdateContestPaintingMosaicEffect(void) +{ + if (!gUnknown_030011F6) + { + SetGpuReg(REG_OFFSET_MOSAIC, 0); + } + else + { + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(10) | BGCNT_MOSAIC | BGCNT_16COLOR | BGCNT_TXT256x256); + gContestPaintingMosaicVal = gContestPaintingFadeCounter / 2; + SetGpuReg(REG_OFFSET_MOSAIC, (gContestPaintingMosaicVal << 12) | (gContestPaintingMosaicVal << 8) | (gContestPaintingMosaicVal << 4) | (gContestPaintingMosaicVal << 0)); + } +} + +static void VBlankCB_ContestPainting(void) +{ + UpdateContestPaintingMosaicEffect(); + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_81302E8(u16 species, u8 arg1) +{ + const void *pal = GetFrontSpritePalFromSpeciesAndPersonality(species, gUnknown_030061C0->trainerId, gUnknown_030061C0->personality); + LZDecompressVram(pal, gContestPaintingMonPalette); + if (!arg1) + { + HandleLoadSpecialPokePic_DontHandleDeoxys( + &gMonFrontPicTable[species], + gMonSpritesGfxPtr->sprites[1], + species, + gUnknown_030061C0->personality); + sub_8130380(gMonSpritesGfxPtr->sprites[1], gContestPaintingMonPalette, (void *)gUnknown_03006190); + } + else + { + HandleLoadSpecialPokePic_DontHandleDeoxys( + &gMonBackPicTable[species], + gMonSpritesGfxPtr->sprites[0], + species, + gUnknown_030061C0->personality); + sub_8130380(gMonSpritesGfxPtr->sprites[0], gContestPaintingMonPalette, (void *)gUnknown_03006190); + } +} + +#ifdef NONMATCHING +// functionally equivalent. +static void sub_8130380(u8 *spritePixels, u16 *palette, u16 (*destColorBuffer)[64][64]) +{ + u16 tileY, tileX, pixelY, pixelX; + u8 colorIndex; + + for (tileY = 0; tileY < 8; tileY++) + { + for (tileX = 0; tileX < 8; tileX++) + { + for (pixelY = 0; pixelY < 8; pixelY++) + { + for (pixelX = 0; pixelX < 8; pixelX++) + { + int offset = 32 * (8 * tileY + tileX) + (pixelY * 4 + pixelX / 2); + colorIndex = spritePixels[offset]; + if (pixelX & 1) + colorIndex >>= 4; + else + colorIndex &= 0xF; + + if (colorIndex == 0) // transparent pixel + (*destColorBuffer)[8 * tileY + pixelY][tileX * 8 + pixelX] = 0x8000; + else + (*destColorBuffer)[8 * tileY + pixelY][tileX * 8 + pixelX] = palette[colorIndex]; + } + } + } + } +} +#else +NAKED +static void sub_8130380(u8 *spritePixels, u16 *palette, u16 (*destColorBuffer)[64][64]) +{ + asm_unified("\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0xC\n\ + mov r10, r0\n\ + mov r9, r1\n\ + str r2, [sp]\n\ + movs r0, 0\n\ +_08130394:\n\ + movs r3, 0\n\ + adds r1, r0, 0x1\n\ + str r1, [sp, 0x4]\n\ + lsls r0, 3\n\ + str r0, [sp, 0x8]\n\ +_0813039E:\n\ + movs r1, 0\n\ + adds r2, r3, 0x1\n\ + mov r8, r2\n\ + ldr r7, [sp, 0x8]\n\ + adds r0, r7, r3\n\ + lsls r0, 5\n\ + mov r12, r0\n\ + lsls r4, r3, 3\n\ +_081303AE:\n\ + movs r3, 0\n\ + lsls r0, r1, 2\n\ + adds r6, r1, 0x1\n\ + mov r2, r12\n\ + adds r5, r2, r0\n\ + ldr r7, [sp, 0x8]\n\ + adds r0, r7, r1\n\ + lsls r0, 7\n\ + ldr r1, [sp]\n\ + adds r2, r0, r1\n\ +_081303C2:\n\ + lsrs r0, r3, 1\n\ + adds r0, r5, r0\n\ + add r0, r10\n\ + ldrb r1, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r3\n\ + cmp r0, 0\n\ + beq _081303D6\n\ + lsrs r1, 4\n\ + b _081303DA\n\ +_081303D6:\n\ + movs r0, 0xF\n\ + ands r1, r0\n\ +_081303DA:\n\ + cmp r1, 0\n\ + bne _081303EC\n\ + adds r0, r4, r3\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + movs r7, 0x80\n\ + lsls r7, 8\n\ + adds r1, r7, 0\n\ + b _081303F8\n\ +_081303EC:\n\ + adds r0, r4, r3\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + lsls r1, 1\n\ + add r1, r9\n\ + ldrh r1, [r1]\n\ +_081303F8:\n\ + strh r1, [r0]\n\ + adds r0, r3, 0x1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + cmp r3, 0x7\n\ + bls _081303C2\n\ + lsls r0, r6, 16\n\ + lsrs r1, r0, 16\n\ + cmp r1, 0x7\n\ + bls _081303AE\n\ + mov r1, r8\n\ + lsls r0, r1, 16\n\ + lsrs r3, r0, 16\n\ + cmp r3, 0x7\n\ + bls _0813039E\n\ + ldr r2, [sp, 0x4]\n\ + lsls r0, r2, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x7\n\ + bls _08130394\n\ + add sp, 0xC\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0"); +} +#endif + +static void sub_8130430(u8 arg0, u8 arg1) +{ + u8 x, y; + + LoadPalette(gPictureFramePalettes, 0, 0x100); + if (arg1 == 1) + { + switch (gUnknown_030061C0->contestCategory / 3) + { + case CONTEST_CATEGORY_COOL: + RLUnCompVram(gPictureFrameTiles_0, (void *)VRAM); + RLUnCompWram(gPictureFrameTilemap_0, gUnknown_03006190); + break; + case CONTEST_CATEGORY_BEAUTY: + RLUnCompVram(gPictureFrameTiles_1, (void *)VRAM); + RLUnCompWram(gPictureFrameTilemap_1, gUnknown_03006190); + break; + case CONTEST_CATEGORY_CUTE: + RLUnCompVram(gPictureFrameTiles_2, (void *)VRAM); + RLUnCompWram(gPictureFrameTilemap_2, gUnknown_03006190); + break; + case CONTEST_CATEGORY_SMART: + RLUnCompVram(gPictureFrameTiles_3, (void *)VRAM); + RLUnCompWram(gPictureFrameTilemap_3, gUnknown_03006190); + break; + case CONTEST_CATEGORY_TOUGH: + RLUnCompVram(gPictureFrameTiles_4, (void *)VRAM); + RLUnCompWram(gPictureFrameTilemap_4, gUnknown_03006190); + break; + } + +#define VRAM_PICTURE_DATA(x, y) (((u16 *)(VRAM + 0x6000))[(y) * 32 + (x)]) + + // Set the background + for (y = 0; y < 20; y++) + { + for (x = 0; x < 32; x++) + VRAM_PICTURE_DATA(x, y) = 0x1015; + } + + // Copy the image frame + for (y = 0; y < 10; y++) + { + for (x = 0; x < 18; x++) + VRAM_PICTURE_DATA(x + 6, y + 2) = (*gUnknown_03006190)[y + 2][x + 6]; + } + + // Re-set the entire top row to the first top frame part + for (x = 0; x < 16; x++) + VRAM_PICTURE_DATA(x + 7, 2) = (*gUnknown_03006190)[2][7]; + +#undef VRAM_PICTURE_DATA + } + else if (arg0 < 8) + { + RLUnCompVram(gPictureFrameTiles_5, (void *)VRAM); + RLUnCompVram(gPictureFrameTilemap_5, (void *)(VRAM + 0x6000)); + } + else + { + switch (gUnknown_030061C0->contestCategory / 3) + { + case CONTEST_CATEGORY_COOL: + RLUnCompVram(gPictureFrameTiles_0, (void *)VRAM); + RLUnCompVram(gPictureFrameTilemap_0, (void *)(VRAM + 0x6000)); + break; + case CONTEST_CATEGORY_BEAUTY: + RLUnCompVram(gPictureFrameTiles_1, (void *)VRAM); + RLUnCompVram(gPictureFrameTilemap_1, (void *)(VRAM + 0x6000)); + break; + case CONTEST_CATEGORY_CUTE: + RLUnCompVram(gPictureFrameTiles_2, (void *)VRAM); + RLUnCompVram(gPictureFrameTilemap_2, (void *)(VRAM + 0x6000)); + break; + case CONTEST_CATEGORY_SMART: + RLUnCompVram(gPictureFrameTiles_3, (void *)VRAM); + RLUnCompVram(gPictureFrameTilemap_3, (void *)(VRAM + 0x6000)); + break; + case CONTEST_CATEGORY_TOUGH: + RLUnCompVram(gPictureFrameTiles_4, (void *)VRAM); + RLUnCompVram(gPictureFrameTilemap_4, (void *)(VRAM + 0x6000)); + break; + } + } +} + +static void sub_8130688(u8 arg0) +{ + //Some hacks just to get the asm to match +#ifndef NONMATCHING + asm(""::"r"(arg0)); +#endif + + gMain.oamBuffer[0] = gUnknown_085B0830; + gMain.oamBuffer[0].tileNum = 0; + +#ifndef NONMATCHING + if (arg0) arg0 = gMain.oamBuffer[0].tileNum; +#endif + + gMain.oamBuffer[0].x = 88; + gMain.oamBuffer[0].y = 24; +} + +static u8 sub_81306CC(u8 arg0) +{ + u8 contestCategory; + + if (arg0 < 8) + contestCategory = gUnknown_030061C0->contestCategory; + else + contestCategory = gUnknown_030061C0->contestCategory / 3; + + switch (contestCategory) + { + case CONTEST_CATEGORY_COOL: + return CONTESTRESULT_COOL; + case CONTEST_CATEGORY_BEAUTY: + return CONTESTRESULT_BEAUTY; + case CONTEST_CATEGORY_CUTE: + return CONTESTRESULT_CUTE; + case CONTEST_CATEGORY_SMART: + return CONTESTRESULT_SMART; + case CONTEST_CATEGORY_TOUGH: + return CONTESTRESULT_TOUGH; + } + + return contestCategory; +} + +static void sub_8130738(void) +{ + gContestPaintingMonPalette = AllocZeroed(0x200); + gUnknown_03006190 = AllocZeroed(0x2000); +} + +static void sub_8130760(u8 contestResult) +{ + gUnknown_030061A0.var_4 = gUnknown_03006190; + gUnknown_030061A0.var_8 = gContestPaintingMonPalette; + gUnknown_030061A0.var_18 = 0; + gUnknown_030061A0.var_1F = gUnknown_030061C0->personality % 256; + gUnknown_030061A0.var_19 = 0; + gUnknown_030061A0.var_1A = 0; + gUnknown_030061A0.var_1B = 64; + gUnknown_030061A0.var_1C = 64; + gUnknown_030061A0.var_1D = 64; + gUnknown_030061A0.var_1E = 64; + + switch (contestResult) + { + case CONTESTRESULT_SMART: + case CONTESTRESULT_TOUGH: + gUnknown_030061A0.var_14 = 3; + break; + case CONTESTRESULT_COOL: + case CONTESTRESULT_BEAUTY: + case CONTESTRESULT_CUTE: + default: + gUnknown_030061A0.var_14 = 1; + break; + } + + gUnknown_030061A0.var_16 = 2; + gUnknown_030061A0.var_0 = contestResult; + gUnknown_030061A0.var_10 = 0x6010000; + + sub_8124F2C(&gUnknown_030061A0); + sub_81261A4(&gUnknown_030061A0); + sub_8126058(&gUnknown_030061A0); + + LoadPalette(gContestPaintingMonPalette, 0x100, 0x200); +} + +static void sub_8130884(u8 arg0, u8 arg1) +{ + sub_8130738(); + sub_81302E8(gUnknown_030061C0->species, 0); + sub_8130760(sub_81306CC(arg0)); + sub_8130688(arg0); + sub_8130430(arg0, arg1); +} diff --git a/src/credits.c b/src/credits.c index c8a097e49..67ab97481 100644 --- a/src/credits.c +++ b/src/credits.c @@ -2254,12 +2254,12 @@ static void sub_8177050(struct Sprite *sprite) } } -static u8 sub_8177224(u16 species, s16 x, s16 y, u16 position) +static u8 sub_8177224(u16 nationalDexNum, s16 x, s16 y, u16 position) { u8 spriteId; u8 spriteId2; - spriteId = CreateMonSpriteFromNationalDexNumber(species, x, y, position); + spriteId = CreateMonSpriteFromNationalDexNumber(nationalDexNum, x, y, position); gSprites[spriteId].oam.priority = 1; gSprites[spriteId].data[1] = position + 1; gSprites[spriteId].invisible = TRUE; diff --git a/src/dragon.c b/src/dragon.c index 49f1b57c8..156d10ce1 100644 --- a/src/dragon.c +++ b/src/dragon.c @@ -208,13 +208,13 @@ void sub_8113064(struct Sprite *sprite) sprite->data[3] = gBattleAnimArgs[4]; sprite->data[5] = gBattleAnimArgs[5]; sprite->invisible = 1; - StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); sprite->callback = sub_80A66DC; } static void sub_8113100(struct Sprite *sprite) { - sub_80A6838(sprite); + SetSpriteCoordsToAnimAttackerCoords(sprite); sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -235,7 +235,7 @@ static void sub_8113100(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[4]; sprite->callback = StartAnimLinearTranslation; - StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); } void sub_81131B4(struct Sprite *sprite) @@ -253,8 +253,8 @@ void sub_81131B4(struct Sprite *sprite) sub_80A6864(sprite, gBattleAnimArgs[1]); sprite->pos1.y += gBattleAnimArgs[2]; - sprite->callback = sub_80A67D8; - StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); + sprite->callback = RunStoredCallbackWhenAnimEnds; + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); } void sub_8113224(struct Sprite *sprite) diff --git a/src/easy_chat.c b/src/easy_chat.c index 25ef069e4..c4bc02e42 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -51,6 +51,9 @@ EWRAM_DATA struct u16 ecWordBuffer[9]; } *gUnknown_0203A118 = NULL; +EWRAM_DATA void *gUnknown_0203A11C = 0; +EWRAM_DATA void *gUnknown_0203A120 = 0; + // Static ROM declarations static void sub_811A2C0(u8); diff --git a/src/effects_1.c b/src/effects_1.c deleted file mode 100644 index a8687bc38..000000000 --- a/src/effects_1.c +++ /dev/null @@ -1,2093 +0,0 @@ -#include "global.h" -#include "battle_anim.h" -#include "constants/rgb.h" - -extern void sub_80FE840(struct Sprite *); -extern void sub_80FE8E0(struct Sprite *); -extern void sub_80FE930(struct Sprite *); -extern void sub_80FE988(struct Sprite *); -extern void sub_80FEAD8(struct Sprite *); -extern void sub_80FEB44(struct Sprite *); -extern void sub_80FEC48(struct Sprite *); -extern void sub_80FED28(struct Sprite *); -extern void sub_80FEE78(struct Sprite *); -extern void sub_80FEF44(struct Sprite *); -extern void sub_80FEFFC(struct Sprite *); -extern void AnimMoveTwisterParticle(struct Sprite *); -extern void sub_80FF0F4(struct Sprite *); -extern void sub_80FF374(struct Sprite *); -extern void sub_80FF698(struct Sprite *); -extern void sub_80FF768(struct Sprite *); -extern void sub_80FF7EC(struct Sprite *); -extern void sub_80FF934(struct Sprite *); -extern void sub_80FFB18(struct Sprite *); -extern void sub_80FFBF4(struct Sprite *); -extern void sub_80FFC70(struct Sprite *); -extern void sub_80FFCB4(struct Sprite *); -extern void sub_80FFDBC(struct Sprite *); -extern void sub_8100640(struct Sprite *); -extern void sub_8100898(struct Sprite *); -extern void sub_8100A50(struct Sprite *); -extern void sub_81009F8(struct Sprite *); -extern void sub_8100A94(struct Sprite *); -extern void sub_8100AE0(struct Sprite *); -extern void sub_8100B88(struct Sprite *); -extern void sub_8100E1C(struct Sprite *); -extern void sub_8100EF0(struct Sprite *); -extern void sub_81010CC(struct Sprite *); -extern void sub_810130C(struct Sprite *); -extern void sub_810135C(struct Sprite *); -extern void sub_8101440(struct Sprite *); -extern void sub_81014F4(struct Sprite *); -extern void sub_81015AC(struct Sprite *); -extern void sub_8101898(struct Sprite *); -extern void sub_8101940(struct Sprite *); -extern void sub_8101B90(struct Sprite *); -extern void sub_8101F40(struct Sprite *); -extern void sub_8101FA8(struct Sprite *); -extern void sub_8101FF0(struct Sprite *); -extern void sub_81020D8(struct Sprite *); -extern void sub_810217C(struct Sprite *); -extern void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite); -extern void sub_80A77C8(struct Sprite *); -extern void sub_8102268(struct Sprite *); -extern void sub_810234C(struct Sprite *); -extern void sub_81024E0(struct Sprite *); -extern void sub_8102540(struct Sprite *); -extern void sub_80A77C8(struct Sprite *); -extern void sub_8102844(struct Sprite *); -extern void sub_8102BCC(struct Sprite *); -extern void sub_8102CD4(struct Sprite *); -extern void sub_8102EB0(struct Sprite *); -extern void sub_8102FB8(struct Sprite *); -extern void sub_8103028(struct Sprite *); -extern void sub_8103164(struct Sprite *); -extern void sub_8103208(struct Sprite *); -extern void sub_8103284(struct Sprite *); -extern void sub_8103390(struct Sprite *); - -const union AnimCmd gUnknown_085920F0[] = -{ - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(2, 5), - ANIMCMD_FRAME(4, 5), - ANIMCMD_FRAME(6, 5), - ANIMCMD_FRAME(8, 5), - ANIMCMD_FRAME(10, 5), - ANIMCMD_FRAME(12, 5), - ANIMCMD_FRAME(14, 5), - ANIMCMD_JUMP(0), -}; - -const union AnimCmd *const gUnknown_08592114[] = -{ - gUnknown_085920F0, -}; - -const struct SpriteTemplate gSleepPowderParticleSpriteTemplate = -{ - .tileTag = ANIM_TAG_SLEEP_POWDER, - .paletteTag = ANIM_TAG_SLEEP_POWDER, - .oam = &gUnknown_08524944, - .anims = gUnknown_08592114, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80FE840, -}; - -const struct SpriteTemplate gStunSporeParticleSpriteTemplate = -{ - .tileTag = ANIM_TAG_STUN_SPORE, - .paletteTag = ANIM_TAG_STUN_SPORE, - .oam = &gUnknown_08524944, - .anims = gUnknown_08592114, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80FE840, -}; - -const struct SpriteTemplate gPoisonPowderParticleSpriteTemplate = -{ - .tileTag = ANIM_TAG_POISON_POWDER, - .paletteTag = ANIM_TAG_POISON_POWDER, - .oam = &gUnknown_08524944, - .anims = gUnknown_08592114, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80FE840, -}; - -const union AnimCmd gUnknown_08592160[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592168[] = -{ - ANIMCMD_FRAME(1, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592170[] = -{ - ANIMCMD_FRAME(2, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592178[] = -{ - ANIMCMD_FRAME(3, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592180[] = -{ - ANIMCMD_FRAME(4, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592188[] = -{ - ANIMCMD_FRAME(5, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592190[] = -{ - ANIMCMD_FRAME(6, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592198[] = -{ - ANIMCMD_FRAME(7, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_085921A0[] = -{ - ANIMCMD_FRAME(8, 1), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_085921A8[] = -{ - gUnknown_08592160, - gUnknown_08592168, - gUnknown_08592170, - gUnknown_08592178, - gUnknown_08592180, - gUnknown_08592188, - gUnknown_08592190, -}; - -const union AnimCmd *const gUnknown_085921C4[] = -{ - gUnknown_08592198, -}; - -const union AnimCmd *const gUnknown_085921C8[] = -{ - gUnknown_085921A0, -}; - -const union AffineAnimCmd gUnknown_085921CC[] = { - AFFINEANIMCMD_FRAME(-5, -5, 0, 1), - AFFINEANIMCMD_JUMP(0), -}; - -const union AffineAnimCmd *const gUnknown_085921DC[] = { - gUnknown_085921CC, -}; - -const struct SpriteTemplate gUnknown_085921E0 = -{ - .tileTag = ANIM_TAG_ORBS, - .paletteTag = ANIM_TAG_ORBS, - .oam = &gUnknown_08524A8C, - .anims = gUnknown_085921C8, - .images = NULL, - .affineAnims = gUnknown_085921DC, - .callback = sub_80FE8E0, -}; - -const struct SpriteTemplate gUnknown_085921F8 = -{ - .tileTag = ANIM_TAG_ORBS, - .paletteTag = ANIM_TAG_ORBS, - .oam = &gUnknown_08524904, - .anims = gUnknown_085921A8, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80FE930, -}; - -const struct SpriteTemplate gUnknown_08592210 = -{ - .tileTag = ANIM_TAG_ORBS, - .paletteTag = ANIM_TAG_ORBS, - .oam = &gUnknown_08524904, - .anims = gUnknown_085921C4, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80FE988, -}; - -const union AffineAnimCmd gUnknown_08592228[] = { - AFFINEANIMCMD_FRAME(320, 320, 0, 0), - AFFINEANIMCMD_FRAME(-14, -14, 0, 1), - AFFINEANIMCMD_JUMP(1), -}; - -const union AffineAnimCmd *const gUnknown_08592240[] = { - gUnknown_08592228, -}; - -const struct SpriteTemplate gUnknown_08592244 = -{ - .tileTag = ANIM_TAG_GRAY_ORB, - .paletteTag = ANIM_TAG_GRAY_ORB, - .oam = &gUnknown_085249C4, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08592240, - .callback = sub_80FE8E0, -}; - -const union AffineAnimCmd gUnknown_0859225C[] = { - AFFINEANIMCMD_FRAME(-5, -5, 0, 1), - AFFINEANIMCMD_JUMP(0), -}; - -const union AffineAnimCmd *const gUnknown_0859226C[] = { - gUnknown_0859225C, -}; - -const struct SpriteTemplate gUnknown_08592270 = -{ - .tileTag = ANIM_TAG_ORBS, - .paletteTag = ANIM_TAG_ORBS, - .oam = &gUnknown_08524A8C, - .anims = gUnknown_085921C8, - .images = NULL, - .affineAnims = gUnknown_0859226C, - .callback = sub_80FEAD8, -}; - -const struct SpriteTemplate gUnknown_08592288 = -{ - .tileTag = ANIM_TAG_ORBS, - .paletteTag = ANIM_TAG_ORBS, - .oam = &gUnknown_08524904, - .anims = gUnknown_085921A8, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80FEB44, -}; - -const union AnimCmd gUnknown_085922A0[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_085922A8[] = -{ - ANIMCMD_FRAME(4, 7), - ANIMCMD_FRAME(8, 7), - ANIMCMD_JUMP(0), -}; - -const union AnimCmd *const gUnknown_085922B4[] = -{ - gUnknown_085922A0, - gUnknown_085922A8, -}; - -const struct SpriteTemplate gLeechSeedSpriteTemplate = -{ - .tileTag = ANIM_TAG_SEED, - .paletteTag = ANIM_TAG_SEED, - .oam = &gUnknown_0852490C, - .anims = gUnknown_085922B4, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80FEC48, -}; - -const union AnimCmd gUnknown_085922D4[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_085922DC[] = -{ - ANIMCMD_FRAME(4, 7), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_085922E4[] = -{ - gUnknown_085922D4, - gUnknown_085922DC, -}; - -const struct SpriteTemplate gUnknown_085922EC = -{ - .tileTag = ANIM_TAG_SPORE, - .paletteTag = ANIM_TAG_SPORE, - .oam = &gUnknown_0852490C, - .anims = gUnknown_085922E4, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80FED28, -}; - -const union AnimCmd gUnknown_08592304[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_0859230C[] = -{ - ANIMCMD_FRAME(4, 1), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08592314[] = -{ - gUnknown_08592304, -}; - -const union AnimCmd *const gUnknown_08592318[] = -{ - gUnknown_0859230C, -}; - -const struct SpriteTemplate gUnknown_0859231C = -{ - .tileTag = ANIM_TAG_FLOWER, - .paletteTag = ANIM_TAG_FLOWER, - .oam = &gUnknown_0852490C, - .anims = gUnknown_08592314, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80FEE78, -}; - -const struct SpriteTemplate gUnknown_08592334 = -{ - .tileTag = ANIM_TAG_FLOWER, - .paletteTag = ANIM_TAG_FLOWER, - .oam = &gUnknown_08524904, - .anims = gUnknown_08592318, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80FEF44, -}; - -const union AnimCmd gUnknown_0859234C[] = -{ - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(4, 5), - ANIMCMD_FRAME(8, 5), - ANIMCMD_FRAME(12, 5), - ANIMCMD_FRAME(16, 5), - ANIMCMD_FRAME(20, 5), - ANIMCMD_FRAME(16, 5), - ANIMCMD_FRAME(12, 5), - ANIMCMD_FRAME(8, 5), - ANIMCMD_FRAME(4, 5), - ANIMCMD_JUMP(0), -}; - -const union AnimCmd gUnknown_08592378[] = -{ - ANIMCMD_FRAME(24, 5), - ANIMCMD_FRAME(28, 5), - ANIMCMD_FRAME(32, 5), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08592388[] = -{ - gUnknown_0859234C, - gUnknown_08592378, -}; - -const struct SpriteTemplate gUnknown_08592390 = -{ - .tileTag = ANIM_TAG_LEAF, - .paletteTag = ANIM_TAG_LEAF, - .oam = &gUnknown_0852490C, - .anims = gUnknown_08592388, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80FEFFC, -}; - -const struct SpriteTemplate gUnknown_085923A8 = -{ - .tileTag = ANIM_TAG_LEAF, - .paletteTag = ANIM_TAG_LEAF, - .oam = &gUnknown_0852490C, - .anims = gUnknown_08592388, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimMoveTwisterParticle, -}; - -const union AnimCmd gUnknown_085923C0[] = -{ - ANIMCMD_FRAME(0, 3), - ANIMCMD_FRAME(0, 3, .hFlip = TRUE), - ANIMCMD_FRAME(0, 3, .vFlip = TRUE, .hFlip = TRUE), - ANIMCMD_FRAME(0, 3, .vFlip = TRUE), - ANIMCMD_JUMP(0), -}; - -const union AnimCmd *const gUnknown_085923D4[] = -{ - gUnknown_085923C0, -}; - -const struct SpriteTemplate gUnknown_085923D8 = -{ - .tileTag = ANIM_TAG_RAZOR_LEAF, - .paletteTag = ANIM_TAG_RAZOR_LEAF, - .oam = &gUnknown_08524934, - .anims = gUnknown_085923D4, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80FF0F4, -}; - -const union AffineAnimCmd gUnknown_085923F0[] = { - AFFINEANIMCMD_FRAME(0, 0, 0, 1), - AFFINEANIMCMD_JUMP(0), -}; - -const union AffineAnimCmd *const gUnknown_08592400[] = { - gUnknown_085923F0, -}; - -const struct SpriteTemplate gSwiftStarSpriteTemplate = -{ - .tileTag = ANIM_TAG_YELLOW_STAR, - .paletteTag = ANIM_TAG_YELLOW_STAR, - .oam = &gUnknown_08524974, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08592400, - .callback = sub_80FF0F4, -}; - -const union AnimCmd gUnknown_0859241C[] = -{ - ANIMCMD_FRAME(0, 4), - ANIMCMD_FRAME(32, 4), - ANIMCMD_FRAME(64, 4), - ANIMCMD_FRAME(96, 4), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592430[] = -{ - ANIMCMD_FRAME(0, 4, .hFlip = TRUE), - ANIMCMD_FRAME(32, 4, .hFlip = TRUE), - ANIMCMD_FRAME(64, 4, .hFlip = TRUE), - ANIMCMD_FRAME(96, 4, .hFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08592444[] = -{ - gUnknown_0859241C, - gUnknown_08592430, -}; - -const union AffineAnimCmd gUnknown_0859244C[] = { - AFFINEANIMCMD_FRAME(256, 256, 0, 0), - AFFINEANIMCMD_FRAME(-11, 0, 0, 6), - AFFINEANIMCMD_FRAME(11, 0, 0, 6), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_0859246C[] = { - AFFINEANIMCMD_FRAME(-256, 256, 0, 0), - AFFINEANIMCMD_FRAME(11, 0, 0, 6), - AFFINEANIMCMD_FRAME(-11, 0, 0, 6), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd *const gUnknown_0859248C[] = { - gUnknown_0859244C, - gUnknown_0859246C, -}; - -const struct SpriteTemplate gUnknown_08592494 = -{ - .tileTag = ANIM_TAG_TENDRILS, - .paletteTag = ANIM_TAG_TENDRILS, - .oam = &gUnknown_0852499C, - .anims = gUnknown_08592444, - .images = NULL, - .affineAnims = gUnknown_0859248C, - .callback = sub_80FF374, -}; - -const union AffineAnimCmd gUnknown_085924AC[] = { - AFFINEANIMCMD_FRAME(0, 0, 0, 0), - AFFINEANIMCMD_FRAME(48, 48, 0, 14), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_085924C4[] = { - AFFINEANIMCMD_FRAME(-16, -16, 0, 1), - AFFINEANIMCMD_JUMP(0), -}; - -const union AffineAnimCmd *const gUnknown_085924D4[] = { - gUnknown_085924AC, - gUnknown_085924C4, -}; - -const struct SpriteTemplate gUnknown_085924DC = -{ - .tileTag = ANIM_TAG_ORBS, - .paletteTag = ANIM_TAG_ORBS, - .oam = &gUnknown_085249CC, - .anims = gUnknown_085921C8, - .images = NULL, - .affineAnims = gUnknown_085924D4, - .callback = sub_80FF698, -}; - -const union AnimCmd gUnknown_085924F4[] = -{ - ANIMCMD_FRAME(0, 7), - ANIMCMD_FRAME(16, 7), - ANIMCMD_FRAME(32, 7), - ANIMCMD_FRAME(48, 7), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592508[] = -{ - ANIMCMD_FRAME(0, 7, .hFlip = TRUE), - ANIMCMD_FRAME(16, 7, .hFlip = TRUE), - ANIMCMD_FRAME(32, 7, .hFlip = TRUE), - ANIMCMD_FRAME(48, 7, .hFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_0859251C[] = -{ - ANIMCMD_FRAME(0, 7), - ANIMCMD_FRAME(16, 7), - ANIMCMD_FRAME(32, 7), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_0859252C[] = -{ - ANIMCMD_FRAME(0, 7, .hFlip = TRUE), - ANIMCMD_FRAME(16, 7, .hFlip = TRUE), - ANIMCMD_FRAME(32, 7, .hFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_0859253C[] = -{ - gUnknown_085924F4, - gUnknown_08592508, - gUnknown_0859251C, - gUnknown_0859252C, -}; - -const struct SpriteTemplate gUnknown_0859254C = -{ - .tileTag = ANIM_TAG_ROOTS, - .paletteTag = ANIM_TAG_ROOTS, - .oam = &gUnknown_08524914, - .anims = gUnknown_0859253C, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80FF768, -}; - -const struct SpriteTemplate gUnknown_08592564 = -{ - .tileTag = ANIM_TAG_ROOTS, - .paletteTag = ANIM_TAG_ROOTS, - .oam = &gUnknown_08524914, - .anims = gUnknown_0859253C, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80FF7EC, -}; - -const union AnimCmd gUnknown_0859257C[] = -{ - ANIMCMD_FRAME(3, 3), - ANIMCMD_FRAME(0, 5), - ANIMCMD_JUMP(0), -}; - -const union AnimCmd *const gUnknown_08592588[] = -{ - gUnknown_0859257C, -}; - -const struct SpriteTemplate gUnknown_0859258C = -{ - .tileTag = ANIM_TAG_ORBS, - .paletteTag = ANIM_TAG_ORBS, - .oam = &gUnknown_08524904, - .anims = gUnknown_08592588, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80FF934, -}; - -const union AnimCmd gUnknown_085925A4[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_085925AC[] = -{ - gUnknown_085925A4, -}; - -const union AffineAnimCmd gUnknown_085925B0[] = { - AFFINEANIMCMD_FRAME(0, 0, -4, 10), - AFFINEANIMCMD_FRAME(0, 0, 4, 20), - AFFINEANIMCMD_FRAME(0, 0, -4, 10), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_085925D0[] = { - AFFINEANIMCMD_FRAME(0, 0, -1, 2), - AFFINEANIMCMD_FRAME(0, 0, 1, 4), - AFFINEANIMCMD_FRAME(0, 0, -1, 4), - AFFINEANIMCMD_FRAME(0, 0, 1, 4), - AFFINEANIMCMD_FRAME(0, 0, -1, 4), - AFFINEANIMCMD_FRAME(0, 0, 1, 2), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd *const gUnknown_08592608[] = { - gUnknown_085925B0, - gUnknown_085925D0, -}; - -const struct SpriteTemplate gUnknown_08592610 = -{ - .tileTag = ANIM_TAG_ITEM_BAG, - .paletteTag = ANIM_TAG_ITEM_BAG, - .oam = &gUnknown_08524974, - .anims = gUnknown_085925AC, - .images = NULL, - .affineAnims = gUnknown_08592608, - .callback = sub_80FFB18, -}; - -const struct SpriteTemplate gBattleAnimSpriteTemplate_8592628 = -{ - .tileTag = ANIM_TAG_ITEM_BAG, - .paletteTag = ANIM_TAG_ITEM_BAG, - .oam = &gUnknown_08524974, - .anims = gUnknown_085925AC, - .images = NULL, - .affineAnims = gUnknown_08592608, - .callback = sub_80FFBF4, -}; - -const union AnimCmd gUnknown_08592640[] = -{ - ANIMCMD_FRAME(0, 4), - ANIMCMD_FRAME(4, 4), - ANIMCMD_FRAME(8, 4), - ANIMCMD_FRAME(12, 4), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08592654[] = -{ - gUnknown_08592640, -}; - -const struct SpriteTemplate gUnknown_08592658 = -{ - .tileTag = ANIM_TAG_GREEN_SPARKLE, - .paletteTag = ANIM_TAG_GREEN_SPARKLE, - .oam = &gUnknown_0852490C, - .anims = gUnknown_08592654, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80FFC70, -}; - -const struct SpriteTemplate gUnknown_08592670 = -{ - .tileTag = ANIM_TAG_ITEM_BAG, - .paletteTag = ANIM_TAG_ITEM_BAG, - .oam = &gUnknown_08524974, - .anims = gUnknown_085925AC, - .images = NULL, - .affineAnims = gUnknown_08592608, - .callback = sub_80FFCB4, -}; - -const union AffineAnimCmd gUnknown_08592688[] = { - AFFINEANIMCMD_FRAME(0, 0, 0, 3), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_08592698[] = { - AFFINEANIMCMD_FRAME(0, -10, 0, 3), - AFFINEANIMCMD_FRAME(0, -6, 0, 3), - AFFINEANIMCMD_FRAME(0, -2, 0, 3), - AFFINEANIMCMD_FRAME(0, 0, 0, 3), - AFFINEANIMCMD_FRAME(0, 2, 0, 3), - AFFINEANIMCMD_FRAME(0, 6, 0, 3), - AFFINEANIMCMD_FRAME(0, 10, 0, 3), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd *const gUnknown_085926D8[] = { - gUnknown_08592688, - gUnknown_08592698, - gUnknown_085925B0, - gUnknown_085925D0, -}; - -const struct SpriteTemplate gUnknown_085926E8 = -{ - .tileTag = ANIM_TAG_ITEM_BAG, - .paletteTag = ANIM_TAG_ITEM_BAG, - .oam = &gUnknown_08524974, - .anims = gUnknown_085925AC, - .images = NULL, - .affineAnims = gUnknown_085926D8, - .callback = sub_80FFDBC, -}; - -const s8 gUnknown_08592700[][3] = -{ - {5, 24, 1}, - {0, 4, 0}, - {8, 16, -1}, - {0, 2, 0}, - {8, 16, 1}, - {0, 2, 0}, - {8, 16, 1}, - {0, 2, 0}, - {8, 16, 1}, - {0, 16, 0}, - {0, 0, 127}, -}; - -const union AnimCmd gUnknown_08592724[] = -{ - ANIMCMD_FRAME(28, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_0859272C[] = -{ - ANIMCMD_FRAME(32, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592734[] = -{ - ANIMCMD_FRAME(20, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_0859273C[] = -{ - ANIMCMD_FRAME(28, 1, .hFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592744[] = -{ - ANIMCMD_FRAME(16, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_0859274C[] = -{ - ANIMCMD_FRAME(16, 1, .hFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592754[] = -{ - ANIMCMD_FRAME(28, 1), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_0859275C[] = -{ - gUnknown_08592724, - gUnknown_0859272C, - gUnknown_08592734, - gUnknown_0859273C, - gUnknown_08592744, - gUnknown_0859274C, - gUnknown_08592754, -}; - -const struct SpriteTemplate gUnknown_08592778 = -{ - .tileTag = ANIM_TAG_LEAF, - .paletteTag = ANIM_TAG_LEAF, - .oam = &gUnknown_0852490C, - .anims = gUnknown_0859275C, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCallbackDummy, -}; - -const union AffineAnimCmd gUnknown_08592790[] = { - AFFINEANIMCMD_FRAME(256, 256, 0, 0), - AFFINEANIMCMD_FRAME(0, 0, 4, 1), - AFFINEANIMCMD_JUMP(1), -}; - -const union AffineAnimCmd *const gUnknown_085927A8[] = { - gUnknown_08592790, -}; - -const struct SpriteTemplate gUnknown_085927AC = -{ - .tileTag = ANIM_TAG_FLOWER, - .paletteTag = ANIM_TAG_FLOWER, - .oam = &gUnknown_08524904, - .anims = gUnknown_08592318, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8100640, -}; - -const struct SpriteTemplate gUnknown_085927C4 = -{ - .tileTag = ANIM_TAG_FLOWER, - .paletteTag = ANIM_TAG_FLOWER, - .oam = &gUnknown_0852496C, - .anims = gUnknown_08592314, - .images = NULL, - .affineAnims = gUnknown_085927A8, - .callback = sub_8100640, -}; - -const union AffineAnimCmd gUnknown_085927DC[] = { - AFFINEANIMCMD_FRAME(256, 256, 0, 0), - AFFINEANIMCMD_FRAME(0, 0, -10, 1), - AFFINEANIMCMD_JUMP(1), -}; - -const union AffineAnimCmd gUnknown_085927F4[] = { - AFFINEANIMCMD_FRAME(192, 192, 0, 0), - AFFINEANIMCMD_FRAME(0, 0, -12, 1), - AFFINEANIMCMD_JUMP(1), -}; - -const union AffineAnimCmd gUnknown_0859280C[] = { - AFFINEANIMCMD_FRAME(143, 143, 0, 0), - AFFINEANIMCMD_FRAME(0, 0, -15, 1), - AFFINEANIMCMD_JUMP(1), -}; - -const union AffineAnimCmd *const gUnknown_08592824[] = { - gUnknown_085927DC, -}; - -const union AffineAnimCmd *const gUnknown_08592828[] = { - gUnknown_085927F4, -}; - -const union AffineAnimCmd *const gUnknown_0859282C[] = { - gUnknown_0859280C, -}; - -const struct SpriteTemplate gUnknown_08592830 = -{ - .tileTag = ANIM_TAG_SPARKLE_6, - .paletteTag = ANIM_TAG_SPARKLE_6, - .oam = &gUnknown_0852496C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08592824, - .callback = sub_8100640, -}; - -const struct SpriteTemplate gUnknown_08592848 = -{ - .tileTag = ANIM_TAG_SPARKLE_6, - .paletteTag = ANIM_TAG_SPARKLE_6, - .oam = &gUnknown_0852496C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08592828, - .callback = sub_8100640, -}; - -const struct SpriteTemplate gUnknown_08592860 = -{ - .tileTag = ANIM_TAG_SPARKLE_6, - .paletteTag = ANIM_TAG_SPARKLE_6, - .oam = &gUnknown_0852496C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_0859282C, - .callback = sub_8100640, -}; - -// sMagicalLeafBlendColors -const u16 gUnknown_08592878[] = -{ - RGB(31, 0, 0), - RGB(31, 19, 0), - RGB(31, 31, 0), - RGB(0, 31, 0), - RGB(5, 14, 31), - RGB(22, 10, 31), - RGB(22, 21, 31), -}; - -const struct SpriteTemplate gUnknown_08592888 = -{ - .tileTag = ANIM_TAG_GREEN_SPIKE, - .paletteTag = ANIM_TAG_GREEN_SPIKE, - .oam = &gUnknown_0852496C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8100898, -}; - -const union AnimCmd gUnknown_085928A0[] = -{ - ANIMCMD_FRAME(64, 3), - ANIMCMD_FRAME(80, 3), - ANIMCMD_FRAME(96, 3), - ANIMCMD_FRAME(112, 6), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_085928B4[] = -{ - ANIMCMD_FRAME(64, 3, .hFlip = TRUE), - ANIMCMD_FRAME(80, 3, .hFlip = TRUE), - ANIMCMD_FRAME(96, 3, .hFlip = TRUE), - ANIMCMD_FRAME(112, 6, .hFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_085928C8[] = -{ - gUnknown_085928A0, - gUnknown_085928B4, -}; - -const struct SpriteTemplate gUnknown_085928D0 = -{ - .tileTag = ANIM_TAG_SLAM_HIT, - .paletteTag = ANIM_TAG_SLAM_HIT, - .oam = &gUnknown_08524914, - .anims = gUnknown_085928C8, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8100A50, -}; - -const struct SpriteTemplate gUnknown_085928E8 = -{ - .tileTag = ANIM_TAG_WHIP_HIT, - .paletteTag = ANIM_TAG_WHIP_HIT, - .oam = &gUnknown_08524914, - .anims = gUnknown_085928C8, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8100A50, -}; - -const union AnimCmd gUnknown_08592900[] = -{ - ANIMCMD_FRAME(0, 4), - ANIMCMD_FRAME(16, 4), - ANIMCMD_FRAME(32, 4), - ANIMCMD_FRAME(48, 4), - ANIMCMD_FRAME(64, 5), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08592918[] = -{ - gUnknown_08592900, -}; - -const struct SpriteTemplate gUnknown_0859291C = -{ - .tileTag = ANIM_TAG_UNUSED_HIT, - .paletteTag = ANIM_TAG_UNUSED_HIT, - .oam = &gUnknown_08524914, - .anims = gUnknown_08592918, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_81009F8, -}; - -const struct SpriteTemplate gUnknown_08592934 = -{ - .tileTag = ANIM_TAG_UNUSED_HIT_2, - .paletteTag = ANIM_TAG_UNUSED_HIT_2, - .oam = &gUnknown_08524914, - .anims = gUnknown_08592918, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_81009F8, -}; - -const union AffineAnimCmd gUnknown_0859294C[] = { - AFFINEANIMCMD_FRAME(256, 256, 0, 0), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_0859295C[] = { - AFFINEANIMCMD_FRAME(256, 256, 32, 0), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_0859296C[] = { - AFFINEANIMCMD_FRAME(256, 256, 64, 0), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_0859297C[] = { - AFFINEANIMCMD_FRAME(256, 256, 96, 0), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_0859298C[] = { - AFFINEANIMCMD_FRAME(256, 256, -128, 0), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_0859299C[] = { - AFFINEANIMCMD_FRAME(256, 256, -96, 0), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_085929AC[] = { - AFFINEANIMCMD_FRAME(256, 256, -64, 0), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_085929BC[] = { - AFFINEANIMCMD_FRAME(256, 256, -32, 0), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd *const gUnknown_085929CC[] = { - gUnknown_0859294C, - gUnknown_0859295C, - gUnknown_0859296C, - gUnknown_0859297C, - gUnknown_0859298C, - gUnknown_0859299C, - gUnknown_085929AC, - gUnknown_085929BC, -}; - -const struct SpriteTemplate gUnknown_085929EC = -{ - .tileTag = ANIM_TAG_HANDS_AND_FEET, - .paletteTag = ANIM_TAG_HANDS_AND_FEET, - .oam = &gUnknown_08524974, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_085929CC, - .callback = sub_8100A94, -}; - -const union AnimCmd gUnknown_08592A04[] = -{ - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(16, 5), - ANIMCMD_FRAME(32, 5), - ANIMCMD_FRAME(48, 5), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08592A18[] = -{ - gUnknown_08592A04, -}; - -const struct SpriteTemplate gCuttingSliceSpriteTemplate = -{ - .tileTag = ANIM_TAG_CUT, - .paletteTag = ANIM_TAG_CUT, - .oam = &gUnknown_08524A34, - .anims = gUnknown_08592A18, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8100AE0, -}; - -const struct SpriteTemplate gUnknown_08592A34 = -{ - .tileTag = ANIM_TAG_CUT, - .paletteTag = ANIM_TAG_CUT, - .oam = &gUnknown_08524A34, - .anims = gUnknown_08592A18, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8100B88, -}; - -const union AnimCmd gUnknown_08592A4C[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592A54[] = -{ - ANIMCMD_FRAME(4, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592A5C[] = -{ - ANIMCMD_FRAME(8, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592A64[] = -{ - ANIMCMD_FRAME(12, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592A6C[] = -{ - ANIMCMD_FRAME(16, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592A74[] = -{ - ANIMCMD_FRAME(20, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592A7C[] = -{ - ANIMCMD_FRAME(0, 1, .vFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592A84[] = -{ - ANIMCMD_FRAME(4, 1, .vFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592A8C[] = -{ - ANIMCMD_FRAME(8, 1, .vFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592A94[] = -{ - ANIMCMD_FRAME(12, 1, .vFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08592A9C[] = -{ - gUnknown_08592A4C, - gUnknown_08592A54, - gUnknown_08592A5C, - gUnknown_08592A64, - gUnknown_08592A6C, - gUnknown_08592A74, - gUnknown_08592A7C, - gUnknown_08592A84, - gUnknown_08592A8C, - gUnknown_08592A94, -}; - -const struct SpriteTemplate gUnknown_08592AC4 = -{ - .tileTag = ANIM_TAG_MUSIC_NOTES, - .paletteTag = ANIM_TAG_MUSIC_NOTES, - .oam = &gUnknown_0852490C, - .anims = gUnknown_08592A9C, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8100E1C, -}; - -const struct SpriteTemplate gUnknown_08592ADC = -{ - .tileTag = ANIM_TAG_PROTECT, - .paletteTag = ANIM_TAG_PROTECT, - .oam = &gUnknown_08524A3C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8100EF0, -}; - -const union AffineAnimCmd gUnknown_08592AF4[] = -{ - AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_08592B04[] = -{ - AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 12), - AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6), - AFFINEANIMCMD_FRAME(0x0, 0x0, -2, 24), - AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6), - AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 12), - AFFINEANIMCMD_JUMP(0), -}; - -const union AffineAnimCmd *const gUnknown_08592B34[] = -{ - gUnknown_08592AF4, - gUnknown_08592B04, -}; - -const struct SpriteTemplate gUnknown_08592B3C = -{ - .tileTag = ANIM_TAG_MILK_BOTTLE, - .paletteTag = ANIM_TAG_MILK_BOTTLE, - .oam = &gUnknown_08524A94, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08592B34, - .callback = sub_81010CC, -}; - -const union AnimCmd gUnknown_08592B54[] = -{ - ANIMCMD_FRAME(0, 7), - ANIMCMD_FRAME(16, 7), - ANIMCMD_FRAME(32, 7), - ANIMCMD_FRAME(48, 7), - ANIMCMD_FRAME(64, 7), - ANIMCMD_FRAME(80, 7), - ANIMCMD_FRAME(96, 7), - ANIMCMD_FRAME(112, 7), - ANIMCMD_JUMP(0), -}; - -const union AnimCmd *const gUnknown_08592B78[] = -{ - gUnknown_08592B54, -}; - -const struct SpriteTemplate gUnknown_08592B7C = -{ - .tileTag = ANIM_TAG_SPARKLE_2, - .paletteTag = ANIM_TAG_SPARKLE_2, - .oam = &gUnknown_08524914, - .anims = gUnknown_08592B78, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_810130C, -}; - -const struct SpriteTemplate gUnknown_08592B94 = -{ - .tileTag = ANIM_TAG_SPARKLE_2, - .paletteTag = ANIM_TAG_SPARKLE_2, - .oam = &gUnknown_08524914, - .anims = gUnknown_08592B78, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_810135C, -}; - -const union AnimCmd gUnknown_08592BAC[] = -{ - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(4, 10), - ANIMCMD_FRAME(8, 10), - ANIMCMD_FRAME(12, 10), - ANIMCMD_FRAME(16, 26), - ANIMCMD_FRAME(16, 5), - ANIMCMD_FRAME(20, 5), - ANIMCMD_FRAME(24, 15), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592BD0[] = -{ - ANIMCMD_FRAME(0, 10, .hFlip = TRUE), - ANIMCMD_FRAME(4, 10, .hFlip = TRUE), - ANIMCMD_FRAME(8, 10, .hFlip = TRUE), - ANIMCMD_FRAME(12, 10, .hFlip = TRUE), - ANIMCMD_FRAME(16, 26, .hFlip = TRUE), - ANIMCMD_FRAME(16, 5, .hFlip = TRUE), - ANIMCMD_FRAME(20, 5, .hFlip = TRUE), - ANIMCMD_FRAME(24, 15, .hFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08592BF4[] = -{ - gUnknown_08592BAC, - gUnknown_08592BD0, -}; - -const struct SpriteTemplate gUnknown_08592BFC = -{ - .tileTag = ANIM_TAG_UNUSED_BUBBLE_BURST, - .paletteTag = ANIM_TAG_UNUSED_BUBBLE_BURST, - .oam = &gUnknown_0852490C, - .anims = gUnknown_08592BF4, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8101440, -}; - -const union AnimCmd gUnknown_08592C14[] = -{ - ANIMCMD_FRAME(0, 40), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08592C1C[] = -{ - gUnknown_08592C14, -}; - -const union AffineAnimCmd gUnknown_08592C20[] = -{ - AFFINEANIMCMD_FRAME(0x14, 0x14, -30, 0), - AFFINEANIMCMD_FRAME(0x8, 0x8, 1, 24), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_08592C20_2[] = -{ - AFFINEANIMCMD_LOOP(0), - AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24), - AFFINEANIMCMD_LOOP(10), -}; - -const union AffineAnimCmd gUnknown_08592C50[] = -{ - AFFINEANIMCMD_FRAME(0x14, 0x14, 30, 0), - AFFINEANIMCMD_FRAME(0x8, 0x8, -1, 24), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_08592C50_2[] = -{ - AFFINEANIMCMD_LOOP(0), - AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 24), - AFFINEANIMCMD_LOOP(10), -}; - -const union AffineAnimCmd *const gUnknown_08592C80[] = -{ - gUnknown_08592C20, - gUnknown_08592C50, -}; - -const struct SpriteTemplate gUnknown_08592C88 = -{ - .tileTag = ANIM_TAG_LETTER_Z, - .paletteTag = ANIM_TAG_LETTER_Z, - .oam = &gUnknown_08524974, - .anims = gUnknown_08592C1C, - .images = NULL, - .affineAnims = gUnknown_08592C80, - .callback = sub_81014F4, -}; - -const struct SpriteTemplate gUnknown_08592CA0 = -{ - .tileTag = ANIM_TAG_LOCK_ON, - .paletteTag = ANIM_TAG_LOCK_ON, - .oam = &gUnknown_08524914, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_81015AC, -}; - -const struct SpriteTemplate gUnknown_08592CB8 = -{ - .tileTag = ANIM_TAG_LOCK_ON, - .paletteTag = ANIM_TAG_LOCK_ON, - .oam = &gUnknown_0852490C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8101898, -}; - -const s8 gUnknown_08592CD0[][2] = -{ - { 64, 64}, - { 0, -64}, - {-64, 64}, - { 32, -32}, -}; - -const struct SpriteTemplate gUnknown_08592CD8 = -{ - .tileTag = 0, - .paletteTag = 0, - .oam = &gDummyOamData, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8101940, -}; - -const struct SpriteTemplate gUnknown_08592CF0 = -{ - .tileTag = 0, - .paletteTag = 0, - .oam = &gDummyOamData, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8101B90, -}; - -const union AnimCmd gUnknown_08592D08[] = -{ - ANIMCMD_FRAME(0, 4), - ANIMCMD_FRAME(16, 4), - ANIMCMD_FRAME(32, 4), - ANIMCMD_FRAME(48, 4), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592D1C[] = -{ - ANIMCMD_FRAME(48, 4), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08592D24[] = -{ - gUnknown_08592D08, - gUnknown_08592D1C, -}; - -const struct SpriteTemplate gUnknown_08592D2C = -{ - .tileTag = ANIM_TAG_SLASH, - .paletteTag = ANIM_TAG_SLASH, - .oam = &gUnknown_08524914, - .anims = gUnknown_08592D24, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8101F40, -}; - -const struct SpriteTemplate gUnknown_08592D44 = -{ - .tileTag = ANIM_TAG_SLASH_2, - .paletteTag = ANIM_TAG_SLASH_2, - .oam = &gUnknown_08524914, - .anims = gUnknown_08592D24, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8101FA8, -}; - -const struct SpriteTemplate gUnknown_08592D5C = -{ - .tileTag = ANIM_TAG_SLASH_2, - .paletteTag = ANIM_TAG_SLASH_2, - .oam = &gUnknown_08524914, - .anims = gUnknown_08592D24, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8101FF0, -}; - -const union AnimCmd gUnknown_08592D74[] = -{ - ANIMCMD_FRAME(0, 4), - ANIMCMD_FRAME(8, 12), - ANIMCMD_FRAME(16, 4), - ANIMCMD_FRAME(24, 4), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08592D88[] = -{ - gUnknown_08592D74, -}; - -const struct SpriteTemplate gUnknown_08592D8C = -{ - .tileTag = ANIM_TAG_FOCUS_ENERGY, - .paletteTag = ANIM_TAG_FOCUS_ENERGY, - .oam = &gUnknown_08524954, - .anims = gUnknown_08592D88, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_81020D8, -}; - -const union AnimCmd gUnknown_08592DA4[] = -{ - ANIMCMD_FRAME(0, 18), - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(16, 18), - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(16, 6), - ANIMCMD_FRAME(32, 18), - ANIMCMD_FRAME(16, 6), - ANIMCMD_FRAME(32, 6), - ANIMCMD_FRAME(48, 18), - ANIMCMD_FRAME(32, 6), - ANIMCMD_FRAME(48, 6), - ANIMCMD_FRAME(64, 18), - ANIMCMD_FRAME(48, 6), - ANIMCMD_FRAME(64, 54), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08592DE0[] = -{ - gUnknown_08592DA4, -}; - -const struct SpriteTemplate gUnknown_08592DE4 = -{ - .tileTag = ANIM_TAG_SPHERE_TO_CUBE, - .paletteTag = ANIM_TAG_SPHERE_TO_CUBE, - .oam = &gUnknown_08524914, - .anims = gUnknown_08592DE0, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_810217C, -}; - -const struct SpriteTemplate gUnknown_08592DFC = -{ - .tileTag = ANIM_TAG_BLACK_BALL, - .paletteTag = ANIM_TAG_BLACK_BALL, - .oam = &gUnknown_08524904, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = TranslateAnimSpriteToTargetMonLocation, -}; - -const union AnimCmd gUnknown_08592E14[] = -{ - ANIMCMD_FRAME(0, 3), - ANIMCMD_FRAME(16, 3), - ANIMCMD_FRAME(32, 3), - ANIMCMD_FRAME(48, 3), - ANIMCMD_FRAME(64, 3), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08592E2C[] = -{ - gUnknown_08592E14, -}; - -const struct SpriteTemplate gUnknown_08592E30 = -{ - .tileTag = ANIM_TAG_GRAY_SMOKE, - .paletteTag = ANIM_TAG_GRAY_SMOKE, - .oam = &gUnknown_08524914, - .anims = gUnknown_08592E2C, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80A77C8, -}; - -const union AnimCmd gUnknown_08592E48[] = -{ - ANIMCMD_FRAME(3, 5), - ANIMCMD_FRAME(2, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08592E5C[] = -{ - gUnknown_08592E48, -}; - -const union AffineAnimCmd gUnknown_08592E60[] = -{ - AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd *const gUnknown_08592E70[] = -{ - gUnknown_08592E60, -}; - -const struct SpriteTemplate gUnknown_08592E74 = -{ - .tileTag = ANIM_TAG_CONVERSION, - .paletteTag = ANIM_TAG_CONVERSION, - .oam = &gUnknown_08524AE4, - .anims = gUnknown_08592E5C, - .images = NULL, - .affineAnims = gUnknown_08592E70, - .callback = sub_8102268, -}; - -const union AnimCmd gUnknown_08592E8C[] = -{ - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(2, 5), - ANIMCMD_FRAME(3, 5), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08592EA0[] = -{ - gUnknown_08592E8C, -}; - -const struct SpriteTemplate gUnknown_08592EA4 = -{ - .tileTag = ANIM_TAG_CONVERSION, - .paletteTag = ANIM_TAG_CONVERSION, - .oam = &gUnknown_08524AE4, - .anims = gUnknown_08592EA0, - .images = NULL, - .affineAnims = gUnknown_08592E70, - .callback = sub_810234C, -}; - -const struct SpriteTemplate gUnknown_08592EBC = -{ - .tileTag = ANIM_TAG_MOON, - .paletteTag = ANIM_TAG_MOON, - .oam = &gUnknown_08524A3C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_81024E0, -}; - -const union AnimCmd gUnknown_08592ED4[] = -{ - ANIMCMD_FRAME(0, 8), - ANIMCMD_FRAME(4, 8), - ANIMCMD_FRAME(8, 8), - ANIMCMD_FRAME(12, 8), - ANIMCMD_JUMP(0), -}; - -const union AnimCmd *const gUnknown_08592EE8[] = -{ - gUnknown_08592ED4, -}; - -const struct SpriteTemplate gBattleAnimSpriteTemplate_8592EEC = -{ - .tileTag = ANIM_TAG_GREEN_SPARKLE, - .paletteTag = ANIM_TAG_GREEN_SPARKLE, - .oam = &gUnknown_0852490C, - .anims = gUnknown_08592EE8, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8102540, -}; - -const union AnimCmd gUnknown_08592F04[] = -{ - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(16, 2), - ANIMCMD_FRAME(32, 2), - ANIMCMD_FRAME(48, 3), - ANIMCMD_FRAME(64, 5), - ANIMCMD_FRAME(80, 3), - ANIMCMD_FRAME(96, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08592F28[] = -{ - gUnknown_08592F04, -}; - -const struct SpriteTemplate gUnknown_08592F2C = -{ - .tileTag = ANIM_TAG_BLUE_STAR, - .paletteTag = ANIM_TAG_BLUE_STAR, - .oam = &gUnknown_08524914, - .anims = gUnknown_08592F28, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80A77C8, -}; - -const struct SpriteTemplate gUnknown_08592F44 = -{ - .tileTag = ANIM_TAG_HORN_HIT, - .paletteTag = ANIM_TAG_HORN_HIT, - .oam = &gUnknown_08524914, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8102844, -}; - -const union AnimCmd gUnknown_08592F5C[] = -{ - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(16, 2), - ANIMCMD_FRAME(32, 2), - ANIMCMD_FRAME(48, 2), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08592F70[] = -{ - gUnknown_08592F5C, -}; - -const struct SpriteTemplate gUnknown_08592F74 = -{ - .tileTag = ANIM_TAG_FANG_ATTACK, - .paletteTag = ANIM_TAG_FANG_ATTACK, - .oam = &gUnknown_08524914, - .anims = gUnknown_08592F70, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8102BCC, -}; - -const union AnimCmd gUnknown_08592F8C[] = -{ - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592F94[] = -{ - ANIMCMD_FRAME(4, 10), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592F9C[] = -{ - ANIMCMD_FRAME(8, 41), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592FA4[] = -{ - ANIMCMD_FRAME(12, 10), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592FAC[] = -{ - ANIMCMD_FRAME(16, 10), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592FB4[] = -{ - ANIMCMD_FRAME(20, 10), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592FBC[] = -{ - ANIMCMD_FRAME(0, 10, .vFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08592FC4[] = -{ - ANIMCMD_FRAME(4, 10, .vFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08592FCC[] = -{ - gUnknown_08592F8C, - gUnknown_08592F94, - gUnknown_08592F9C, - gUnknown_08592FA4, - gUnknown_08592FAC, - gUnknown_08592FB4, - gUnknown_08592FBC, - gUnknown_08592FC4, -}; - -const union AffineAnimCmd gUnknown_08592FEC[] = -{ - AFFINEANIMCMD_FRAME(0xC, 0xC, 0, 16), - AFFINEANIMCMD_FRAME(0xFFF4, 0xFFF4, 0, 16), - AFFINEANIMCMD_JUMP(0), -}; - -const union AffineAnimCmd *const gUnknown_08593004[] = -{ - gUnknown_08592FEC, -}; - -const struct SpriteTemplate gUnknown_08593008 = -{ - .tileTag = ANIM_TAG_MUSIC_NOTES, - .paletteTag = ANIM_TAG_MUSIC_NOTES, - .oam = &gUnknown_085249CC, - .anims = gUnknown_08592FCC, - .images = NULL, - .affineAnims = gUnknown_08593004, - .callback = sub_8102CD4, -}; - -const u16 gUnknown_08593020[][6] = -{ - {10072, RGB(31, 31, 31), RGB(31, 26, 28), RGB(31, 22, 26), RGB(31, 17, 24), RGB(31, 13, 22)}, - {10097, RGB(31, 31, 31), RGB(25, 31, 26), RGB(20, 31, 21), RGB(15, 31, 16), RGB(10, 31, 12)}, - {10185, RGB(31, 31, 31), RGB(31, 31, 24), RGB(31, 31, 17), RGB(31, 31, 10), RGB(31, 31, 3)}, - {10175, RGB(31, 31, 31), RGB(26, 28, 31), RGB(21, 26, 31), RGB(16, 24, 31), RGB(12, 22, 31)}, -}; - -const struct SpriteTemplate gUnknown_08593050 = -{ - .tileTag = ANIM_TAG_MUSIC_NOTES, - .paletteTag = ANIM_TAG_MUSIC_NOTES, - .oam = &gUnknown_085249CC, - .anims = gUnknown_08592FCC, - .images = NULL, - .affineAnims = gUnknown_08593004, - .callback = sub_8102EB0, -}; - -const struct SpriteTemplate gUnknown_08593068 = -{ - .tileTag = ANIM_TAG_PURPLE_HAND_OUTLINE, - .paletteTag = ANIM_TAG_PURPLE_HAND_OUTLINE, - .oam = &gUnknown_08524914, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8102FB8, -}; - -const union AffineAnimCmd gUnknown_08593080[] = -{ - AFFINEANIMCMD_FRAME(0xA0, 0xA0, 0, 0), - AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 1), - AFFINEANIMCMD_JUMP(1), -}; - -const union AffineAnimCmd *const gUnknown_08593098[] = -{ - gUnknown_08593080, -}; - -const struct SpriteTemplate gUnknown_0859309C = -{ - .tileTag = ANIM_TAG_MUSIC_NOTES, - .paletteTag = ANIM_TAG_MUSIC_NOTES, - .oam = &gUnknown_085249CC, - .anims = gUnknown_08592FCC, - .images = NULL, - .affineAnims = gUnknown_08593098, - .callback = sub_8103028, -}; - -const union AnimCmd gUnknown_085930B4[] = -{ - ANIMCMD_FRAME(0, 2, .hFlip = TRUE), - ANIMCMD_FRAME(16, 2, .hFlip = TRUE), - ANIMCMD_FRAME(32, 2, .hFlip = TRUE), - ANIMCMD_FRAME(48, 2, .hFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_085930C8[] = -{ - ANIMCMD_FRAME(48, 2, .hFlip = TRUE), - ANIMCMD_FRAME(32, 2, .hFlip = TRUE), - ANIMCMD_FRAME(16, 2, .hFlip = TRUE), - ANIMCMD_FRAME(0, 2, .hFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_085930DC[] = -{ - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(16, 2), - ANIMCMD_FRAME(32, 2), - ANIMCMD_FRAME(48, 2), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_085930F0[] = -{ - ANIMCMD_FRAME(48, 2), - ANIMCMD_FRAME(32, 2), - ANIMCMD_FRAME(16, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08593104[] = -{ - gUnknown_085930B4, - gUnknown_085930DC, - gUnknown_085930C8, - gUnknown_085930F0, -}; - -const struct SpriteTemplate gUnknown_08593114 = -{ - .tileTag = ANIM_TAG_THOUGHT_BUBBLE, - .paletteTag = ANIM_TAG_THOUGHT_BUBBLE, - .oam = &gUnknown_08524914, - .anims = gUnknown_08593104, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8103164, -}; - -const union AffineAnimCmd gUnknown_0859312C[] = -{ - AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0), - AFFINEANIMCMD_FRAME(0x1E, 0x1E, 0, 8), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_08593144[] = -{ - AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 11), - AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 11), - AFFINEANIMCMD_LOOP(2), - AFFINEANIMCMD_FRAME(0xFFE2, 0xFFE2, 0, 8), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_08593144_2[] = -{ - AFFINEANIMCMD_FRAME(16, 16, 0, 0), - AFFINEANIMCMD_FRAME(30, 30, 0, 8), - AFFINEANIMCMD_FRAME(0, 0, 0, 16), - AFFINEANIMCMD_LOOP(0), - AFFINEANIMCMD_FRAME(0, 0, 4, 11), - AFFINEANIMCMD_FRAME(0, 0, -4, 11), - AFFINEANIMCMD_LOOP(2), - AFFINEANIMCMD_FRAME(-30, -30, 0, 8), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd *const gUnknown_085931B4[] = -{ - gUnknown_0859312C, - gUnknown_08593144, -}; - -const struct SpriteTemplate gUnknown_085931BC = -{ - .tileTag = ANIM_TAG_FINGER, - .paletteTag = ANIM_TAG_FINGER, - .oam = &gUnknown_085249D4, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_085931B4, - .callback = sub_8103208, -}; - -const struct SpriteTemplate gUnknown_085931D4 = -{ - .tileTag = ANIM_TAG_FINGER, - .paletteTag = ANIM_TAG_FINGER, - .oam = &gUnknown_08524974, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_085931B4, - .callback = sub_8103284, -}; - -const union AnimCmd gUnknown_085931EC[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_085931F4[] = -{ - ANIMCMD_FRAME(0, 1, .hFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_085931FC[] = -{ - ANIMCMD_FRAME(0, 4), - ANIMCMD_FRAME(16, 4), - ANIMCMD_FRAME(32, 4), - ANIMCMD_FRAME(16, 4), - ANIMCMD_FRAME(0, 4), - ANIMCMD_FRAME(16, 4), - ANIMCMD_FRAME(32, 4), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_0859321C[] = -{ - ANIMCMD_FRAME(0, 4, .hFlip = TRUE), - ANIMCMD_FRAME(16, 4, .hFlip = TRUE), - ANIMCMD_FRAME(32, 4, .hFlip = TRUE), - ANIMCMD_FRAME(16, 4, .hFlip = TRUE), - ANIMCMD_FRAME(0, 4, .hFlip = TRUE), - ANIMCMD_FRAME(16, 4, .hFlip = TRUE), - ANIMCMD_FRAME(32, 4, .hFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_0859323C[] = -{ - gUnknown_085931EC, - gUnknown_085931F4, - gUnknown_085931FC, - gUnknown_0859321C, -}; - -const struct SpriteTemplate gUnknown_0859324C = -{ - .tileTag = ANIM_TAG_FINGER_2, - .paletteTag = ANIM_TAG_FINGER_2, - .oam = &gUnknown_08524914, - .anims = gUnknown_0859323C, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8103390, -}; diff --git a/src/effects_2.c b/src/effects_2.c deleted file mode 100644 index 82336be5c..000000000 --- a/src/effects_2.c +++ /dev/null @@ -1,1197 +0,0 @@ -#include "global.h" -#include "battle_anim.h" -#include "constants/rgb.h" - -extern void sub_8103448(struct Sprite *); -extern void sub_8103498(struct Sprite *); -extern void sub_810358C(struct Sprite *); -extern void sub_8103620(struct Sprite *); -extern void sub_80A77C8(struct Sprite *); -extern void sub_81037D8(struct Sprite *); -extern void sub_810387C(struct Sprite *); -extern void sub_81038C8(struct Sprite *); -extern void sub_8103AA4(struct Sprite *); -extern void TranslateAnimSpriteToTargetMonLocation(struct Sprite *); -extern void sub_8108C94(struct Sprite *); -extern void sub_80A78AC(struct Sprite *); -extern void sub_8103FE8(struct Sprite *); -extern void sub_8104088(struct Sprite *); -extern void sub_810413C(struct Sprite *); -extern void sub_81041C4(struct Sprite *); -extern void sub_8104304(struct Sprite *); -extern void sub_8104364(struct Sprite *); -extern void sub_8104414(struct Sprite *); -extern void sub_8104B1C(struct Sprite *); -extern void sub_8104BAC(struct Sprite *); -extern void sub_810501C(struct Sprite *); -extern void sub_80A7938(struct Sprite *); -extern void sub_8105538(struct Sprite *); -extern void sub_81051C4(struct Sprite *); -extern void sub_81052A4(struct Sprite *); -extern void sub_81054E8(struct Sprite *); -extern void sub_8105C48(struct Sprite *); -extern void sub_8105DE8(struct Sprite *); -extern void sub_8105E60(struct Sprite *); -extern void sub_8106140(struct Sprite *); -extern void sub_81061C4(struct Sprite *); -extern void sub_810624C(struct Sprite *); -extern void sub_810673C(struct Sprite *); -extern void sub_8106878(struct Sprite *); -extern void sub_8106944(struct Sprite *); -extern void sub_81069B8(struct Sprite *); -extern void sub_81069D0(struct Sprite *); -extern void sub_8106AD0(struct Sprite *); -extern void sub_8106B54(struct Sprite *); -extern void sub_8106C80(struct Sprite *); -extern void sub_8106CD0(struct Sprite *); -extern void sub_8106E00(struct Sprite *); -extern void sub_8106F60(struct Sprite *); -extern void sub_8106F00(struct Sprite *); -extern void sub_81070AC(struct Sprite *); - -const struct SpriteTemplate gUnknown_08593264 = -{ - .tileTag = ANIM_TAG_FINGER, - .paletteTag = ANIM_TAG_FINGER, - .oam = &gUnknown_08524914, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8103448, -}; - -const union AnimCmd gUnknown_0859327C[] = -{ - ANIMCMD_FRAME(4, 1), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08593284[] = -{ - gUnknown_0859327C, -}; - -const struct SpriteTemplate gUnknown_08593288 = -{ - .tileTag = ANIM_TAG_MUSIC_NOTES, - .paletteTag = ANIM_TAG_MUSIC_NOTES, - .oam = &gUnknown_0852490C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8103498, -}; - -const struct SpriteTemplate gUnknown_085932A0 = -{ - .tileTag = 0, - .paletteTag = 0, - .oam = &gDummyOamData, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_810358C, -}; - -extern const union AffineAnimCmd *const gUnknown_08597060[]; -const struct SpriteTemplate gUnknown_085932B8 = -{ - .tileTag = ANIM_TAG_CLAMP, - .paletteTag = ANIM_TAG_CLAMP, - .oam = &gUnknown_08524A9C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08597060, - .callback = sub_8103620, -}; - -const union AnimCmd gUnknown_085932D0[] = -{ - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(16, 3), - ANIMCMD_FRAME(32, 3), - ANIMCMD_FRAME(48, 3), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_085932E4[] = -{ - gUnknown_085932D0, -}; - -const union AffineAnimCmd gUnknown_085932E8[] = -{ - AFFINEANIMCMD_FRAME(0x50, 0x50, 0, 0), - AFFINEANIMCMD_FRAME(0x9, 0x9, 0, 18), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd *const gUnknown_08593300[] = -{ - gUnknown_085932E8, -}; - -const struct SpriteTemplate gUnknown_08593304 = -{ - .tileTag = ANIM_TAG_UNUSED_EXPLOSION, - .paletteTag = ANIM_TAG_UNUSED_EXPLOSION, - .oam = &gUnknown_08524974, - .anims = gUnknown_085932E4, - .images = NULL, - .affineAnims = gUnknown_08593300, - .callback = sub_80A77C8, -}; - -const union AnimCmd gUnknown_0859331C[] = -{ - ANIMCMD_FRAME(0, 3, .hFlip = TRUE), - ANIMCMD_FRAME(8, 3, .hFlip = TRUE), - ANIMCMD_FRAME(16, 3, .hFlip = TRUE), - ANIMCMD_FRAME(24, 3, .hFlip = TRUE), - ANIMCMD_FRAME(32, 3, .hFlip = TRUE), - ANIMCMD_FRAME(40, 3, .hFlip = TRUE), - ANIMCMD_FRAME(48, 3, .hFlip = TRUE), - ANIMCMD_LOOP(1), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08593340[] = -{ - gUnknown_0859331C, -}; - -const struct SpriteTemplate gUnknown_08593344 = -{ - .tileTag = ANIM_TAG_ALERT, - .paletteTag = ANIM_TAG_ALERT, - .oam = &gUnknown_08524934, - .anims = gUnknown_08593340, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_81037D8, -}; - -const union AffineAnimCmd gUnknown_0859335C[] = -{ - AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0), - AFFINEANIMCMD_FRAME(0x14, 0x0, 0, 12), - AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 32), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd *const gUnknown_0859337C[] = -{ - gUnknown_0859335C, -}; - -const struct SpriteTemplate gBattleAnimSpriteTemplate_8593380 = -{ - .tileTag = ANIM_TAG_SWORD, - .paletteTag = ANIM_TAG_SWORD, - .oam = &gUnknown_08524ADC, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_0859337C, - .callback = sub_810387C, -}; - -const struct SpriteTemplate gSonicBoomSpriteTemplate = -{ - .tileTag = ANIM_TAG_AIR_WAVE, - .paletteTag = ANIM_TAG_AIR_WAVE, - .oam = &gUnknown_08524B14, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_81038C8, -}; - -const struct SpriteTemplate gUnknown_085933B0 = -{ - .tileTag = ANIM_TAG_AIR_WAVE, - .paletteTag = ANIM_TAG_AIR_WAVE, - .oam = &gUnknown_08524A54, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8103AA4, -}; - -const union AffineAnimCmd gUnknown_085933C8[] = -{ - AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0), - AFFINEANIMCMD_FRAME(0x7, 0x7, 0, -56), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_085933E0[] = -{ - AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 10), - AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10), - AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10), - AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10), - AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10), - AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10), - AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd *const gUnknown_08593420[] = -{ - gUnknown_085933C8, -}; - -const union AffineAnimCmd *const gUnknown_08593424[] = -{ - gUnknown_085933E0, -}; - -const struct SpriteTemplate gSupersonicWaveSpriteTemplate = -{ - .tileTag = ANIM_TAG_GOLD_RING, - .paletteTag = ANIM_TAG_GOLD_RING, - .oam = &gUnknown_08524A14, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08593420, - .callback = TranslateAnimSpriteToTargetMonLocation, -}; - -const struct SpriteTemplate gScreechWaveSpriteTemplate = -{ - .tileTag = ANIM_TAG_PURPLE_RING, - .paletteTag = ANIM_TAG_PURPLE_RING, - .oam = &gUnknown_08524A14, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08593420, - .callback = TranslateAnimSpriteToTargetMonLocation, -}; - -const struct SpriteTemplate gUnknown_08593458 = -{ - .tileTag = ANIM_TAG_METAL_SOUND_WAVES, - .paletteTag = ANIM_TAG_METAL_SOUND_WAVES, - .oam = &gUnknown_08524A1C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08593420, - .callback = TranslateAnimSpriteToTargetMonLocation, -}; - -const struct SpriteTemplate gUnknown_08593470 = -{ - .tileTag = ANIM_TAG_BLUE_RING_2, - .paletteTag = ANIM_TAG_BLUE_RING_2, - .oam = &gUnknown_08524A14, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08593424, - .callback = sub_8108C94, -}; - -const struct SpriteTemplate gUnknown_08593488 = -{ - .tileTag = ANIM_TAG_LARGE_FRESH_EGG, - .paletteTag = ANIM_TAG_LARGE_FRESH_EGG, - .oam = &gUnknown_0852490C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80A78AC, -}; - -const struct SpriteTemplate gUnknown_085934A0 = -{ - .tileTag = ANIM_TAG_UNUSED_VOID_LINES, - .paletteTag = ANIM_TAG_UNUSED_VOID_LINES, - .oam = &gUnknown_08524A3C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8103FE8, -}; - -const union AnimCmd gUnknown_085934B8[] = -{ - ANIMCMD_FRAME(8, 1), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_085934C0[] = -{ - gUnknown_085934B8, -}; - -const union AffineAnimCmd gUnknown_085934C4[] = -{ - AFFINEANIMCMD_FRAME(0x0, 0x0, 10, 1), - AFFINEANIMCMD_JUMP(0), -}; - -const union AffineAnimCmd *const gUnknown_085934D4[] = -{ - gUnknown_085934C4, -}; - -const struct SpriteTemplate gUnknown_085934D8 = -{ - .tileTag = ANIM_TAG_COIN, - .paletteTag = ANIM_TAG_COIN, - .oam = &gUnknown_0852496C, - .anims = gUnknown_085934C0, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8104088, -}; - -const struct SpriteTemplate gUnknown_085934F0 = -{ - .tileTag = ANIM_TAG_COIN, - .paletteTag = ANIM_TAG_COIN, - .oam = &gUnknown_0852496C, - .anims = gUnknown_085934C0, - .images = NULL, - .affineAnims = gUnknown_085934D4, - .callback = sub_810413C, -}; - -const union AffineAnimCmd gUnknown_08593508[] = -{ - AFFINEANIMCMD_FRAME(0x0, 0x0, 20, 1), - AFFINEANIMCMD_JUMP(0), -}; - -const union AffineAnimCmd *const gUnknown_08593518[] = -{ - gUnknown_08593508, -}; - -const struct SpriteTemplate gUnknown_0859351C = -{ - .tileTag = ANIM_TAG_SEED, - .paletteTag = ANIM_TAG_SEED, - .oam = &gUnknown_0852496C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08593518, - .callback = sub_81041C4, -}; - -const union AffineAnimCmd gUnknown_08593534[] = -{ - AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0), - AFFINEANIMCMD_FRAME(0x4, 0x0, 0, 40), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd *const gUnknown_0859354C[] = -{ - gUnknown_08593534, -}; - -const struct SpriteTemplate gUnknown_08593550 = -{ - .tileTag = ANIM_TAG_GUST, - .paletteTag = ANIM_TAG_GUST, - .oam = &gUnknown_085249BC, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_0859354C, - .callback = sub_8104304, -}; - -const union AnimCmd gUnknown_08593568[] = -{ - ANIMCMD_FRAME(0, 3), - ANIMCMD_FRAME(16, 3), - ANIMCMD_FRAME(32, 20), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08593578[] = -{ - ANIMCMD_FRAME(0, 3, .vFlip = TRUE, .hFlip = TRUE), - ANIMCMD_FRAME(16, 3, .vFlip = TRUE, .hFlip = TRUE), - ANIMCMD_FRAME(32, 20, .vFlip = TRUE, .hFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08593588[] = -{ - gUnknown_08593568, - gUnknown_08593578, -}; - -const struct SpriteTemplate gUnknown_08593590 = -{ - .tileTag = ANIM_TAG_CUT, - .paletteTag = ANIM_TAG_CUT, - .oam = &gUnknown_08524A34, - .anims = gUnknown_08593588, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8104364, -}; - -const union AnimCmd gUnknown_085935A8[] = -{ - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(16, 2), - ANIMCMD_FRAME(32, 1), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_085935B8[] = -{ - ANIMCMD_FRAME(0, 2, .vFlip = TRUE, .hFlip = TRUE), - ANIMCMD_FRAME(16, 2, .vFlip = TRUE, .hFlip = TRUE), - ANIMCMD_FRAME(32, 1, .vFlip = TRUE, .hFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_085935C8[] = -{ - gUnknown_085935A8, - gUnknown_085935B8, -}; - -const struct SpriteTemplate gUnknown_085935D0 = -{ - .tileTag = ANIM_TAG_CUT, - .paletteTag = ANIM_TAG_CUT, - .oam = &gUnknown_08524A34, - .anims = gUnknown_085935C8, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8104414, -}; - -const union AffineAnimCmd gUnknown_085935E8[] = -{ - AFFINEANIMCMD_FRAME(-6, 4, 0, 8), - AFFINEANIMCMD_FRAME(10, -10, 0, 8), - AFFINEANIMCMD_FRAME(-4, 6, 0, 8), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_08593608[] = -{ - AFFINEANIMCMD_FRAME(-4, -5, 0, 12), - AFFINEANIMCMD_FRAME(0, 0, 0, 24), - AFFINEANIMCMD_FRAME(4, 5, 0, 12), - AFFINEANIMCMD_END, -}; - -const union AnimCmd gUnknown_08593628[] = -{ - ANIMCMD_FRAME(0, 4, .hFlip = TRUE), - ANIMCMD_FRAME(4, 40, .hFlip = TRUE), - ANIMCMD_FRAME(8, 4, .hFlip = TRUE), - ANIMCMD_FRAME(12, 4, .hFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_0859363C[] = -{ - ANIMCMD_FRAME(0, 4), - ANIMCMD_FRAME(4, 40), - ANIMCMD_FRAME(8, 4), - ANIMCMD_FRAME(12, 4), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08593650[] = -{ - gUnknown_08593628, - gUnknown_0859363C, -}; - -const struct SpriteTemplate gUnknown_08593658 = -{ - .tileTag = ANIM_TAG_BREATH, - .paletteTag = ANIM_TAG_BREATH, - .oam = &gUnknown_0852490C, - .anims = gUnknown_08593650, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8104B1C, -}; - -const union AffineAnimCmd gUnknown_08593670[] = -{ - AFFINEANIMCMD_FRAME(0xB, 0xB, 0, 8), - AFFINEANIMCMD_FRAME(0xFFF5, 0xFFF5, 0, 8), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd *const gUnknown_08593688[] = -{ - gUnknown_08593670, -}; - -const struct SpriteTemplate gUnknown_0859368C = -{ - .tileTag = ANIM_TAG_ANGER, - .paletteTag = ANIM_TAG_ANGER, - .oam = &gUnknown_0852496C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08593688, - .callback = sub_8104BAC, -}; - -const union AffineAnimCmd gUnknown_085936A4[] = -{ - AFFINEANIMCMD_FRAME(-10, 9, 0, 7), - AFFINEANIMCMD_FRAME(20, -20, 0, 7), - AFFINEANIMCMD_FRAME(-20, 20, 0, 7), - AFFINEANIMCMD_FRAME(10, -9, 0, 7), - AFFINEANIMCMD_LOOP(2), - AFFINEANIMCMD_END, -}; - -const struct SpriteTemplate gUnknown_085936D4 = -{ - .tileTag = ANIM_TAG_PENCIL, - .paletteTag = ANIM_TAG_PENCIL, - .oam = &gUnknown_08524914, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_810501C, -}; - -const struct SpriteTemplate gUnknown_085936EC = -{ - .tileTag = ANIM_TAG_SNORE_Z, - .paletteTag = ANIM_TAG_SNORE_Z, - .oam = &gUnknown_08524914, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80A7938, -}; - -const union AnimCmd gUnknown_08593704[] = -{ - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(16, 5), - ANIMCMD_FRAME(32, 5), - ANIMCMD_FRAME(48, 5), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08593718[] = -{ - gUnknown_08593704, -}; -//* -const struct SpriteTemplate gBattleAnimSpriteTemplate_859371C = -{ - .tileTag = ANIM_TAG_EXPLOSION, - .paletteTag = ANIM_TAG_EXPLOSION, - .oam = &gUnknown_08524914, - .anims = gUnknown_08593718, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80A77C8, -}; - -const union AffineAnimCmd gUnknown_08593734[] = -{ - AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 2), - AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 4), - AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 2), - AFFINEANIMCMD_JUMP(0), -}; - -const union AffineAnimCmd gUnknown_08593754[] = -{ - AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_08593764[] = -{ - AFFINEANIMCMD_FRAME(0xFFF8, 0x4, 0, 8), - AFFINEANIMCMD_LOOP(0), - AFFINEANIMCMD_FRAME(0x10, 0xFFF8, 0, 8), - AFFINEANIMCMD_FRAME(0xFFF0, 0x8, 0, 8), - AFFINEANIMCMD_LOOP(1), - AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), - AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 15), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd *const gUnknown_085937A4[] = -{ - gUnknown_08593734, - gUnknown_08593754, - gUnknown_08593764, -}; -//* -const struct SpriteTemplate gUnknown_085937B0 = -{ - .tileTag = ANIM_TAG_BREAKING_EGG, - .paletteTag = ANIM_TAG_BREAKING_EGG, - .oam = &gUnknown_08524AF4, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_085937A4, - .callback = sub_8105538, -}; - -const union AffineAnimCmd gUnknown_085937C8[] = -{ - AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0), - AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 30), - AFFINEANIMCMD_END_ALT(1), -}; - -const union AffineAnimCmd gUnknown_085937E0[] = -{ - AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0), - AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 15), - AFFINEANIMCMD_END_ALT(1), -}; - -const union AffineAnimCmd gUnknown_085937F8[] = -{ - AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0), - AFFINEANIMCMD_FRAME(0xB, 0xB, 0, 45), - AFFINEANIMCMD_END_ALT(1), -}; - -const union AffineAnimCmd *const gUnknown_08593810[] = -{ - gUnknown_085937C8, - gUnknown_085937E0, -}; - -const union AffineAnimCmd *const gUnknown_08593818[] = -{ - gUnknown_085937F8, -}; - -const struct SpriteTemplate gUnknown_0859381C = -{ - .tileTag = ANIM_TAG_THIN_RING, - .paletteTag = ANIM_TAG_THIN_RING, - .oam = &gUnknown_085249DC, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08593810, - .callback = sub_80A77C8, -}; -//* -const union AffineAnimCmd gUnknown_08593834[] = -{ - AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0), - AFFINEANIMCMD_FRAME(0xFFF0, 0xFFF0, 0, 30), - AFFINEANIMCMD_END_ALT(1), -}; - -const union AffineAnimCmd *const gUnknown_0859384C[] = -{ - gUnknown_08593834, -}; - -const struct SpriteTemplate gUnknown_08593850 = -{ - .tileTag = ANIM_TAG_THIN_RING, - .paletteTag = ANIM_TAG_THIN_RING, - .oam = &gUnknown_08524AFC, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_0859384C, - .callback = sub_80A77C8, -}; - -const struct SpriteTemplate gUnknown_08593868 = -{ - .tileTag = ANIM_TAG_THIN_RING, - .paletteTag = ANIM_TAG_THIN_RING, - .oam = &gUnknown_08524AFC, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08593810, - .callback = sub_81051C4, -}; - -const struct SpriteTemplate gUnknown_08593880 = -{ - .tileTag = ANIM_TAG_THIN_RING, - .paletteTag = ANIM_TAG_THIN_RING, - .oam = &gUnknown_08524AFC, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08593818, - .callback = sub_81052A4, -}; - -const struct SpriteTemplate gBattleAnimSpriteTemplate_8593898 = -{ - .tileTag = ANIM_TAG_THIN_RING, - .paletteTag = ANIM_TAG_THIN_RING, - .oam = &gUnknown_08524AFC, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08593810, - .callback = sub_81054E8, -}; - -const union AffineAnimCmd gUnknown_085938B0[] = -{ - AFFINEANIMCMD_FRAME(96, -13, 0, 8), - AFFINEANIMCMD_END, -}; - -const union AnimCmd gUnknown_085938C0[] = -{ - ANIMCMD_FRAME(0, 3), - ANIMCMD_FRAME(4, 3), - ANIMCMD_FRAME(8, 3), - ANIMCMD_FRAME(4, 3), - ANIMCMD_FRAME(0, 3), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_085938D8[] = -{ - gUnknown_085938C0, -}; - -const struct SpriteTemplate gUnknown_085938DC = -{ - .tileTag = ANIM_TAG_SPEED_DUST, - .paletteTag = ANIM_TAG_SPEED_DUST, - .oam = &gUnknown_0852490C, - .anims = gUnknown_085938D8, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8105C48, -}; - -const s8 gUnknown_085938F4[][2] = -{ - {30, 28}, - {-20, 24}, - {16, 26}, - {-10, 28}, -}; - -const union AnimCmd gUnknown_085938FC[] = -{ - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(16, 6), - ANIMCMD_FRAME(32, 15), - ANIMCMD_FRAME(16, 6), - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(16, 6, .hFlip = TRUE), - ANIMCMD_FRAME(32, 15, .hFlip = TRUE), - ANIMCMD_FRAME(16, 6, .hFlip = TRUE), - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(16, 6), - ANIMCMD_FRAME(32, 15), - ANIMCMD_FRAME(16, 6), - ANIMCMD_FRAME(0, 6), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08593934[] = -{ - gUnknown_085938FC, -}; - -const struct SpriteTemplate gUnknown_08593938 = -{ - .tileTag = ANIM_TAG_BELL, - .paletteTag = ANIM_TAG_BELL, - .oam = &gUnknown_08524914, - .anims = gUnknown_08593934, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80A77C8, -}; - -const u16 gUnknown_08593950[] = -{ - 10206, - 9999, - 9998, - 0, -}; - -const struct SpriteTemplate gUnknown_08593958 = -{ - .tileTag = ANIM_TAG_MUSIC_NOTES_2, - .paletteTag = ANIM_TAG_MUSIC_NOTES_2, - .oam = &gUnknown_0852490C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8105DE8, -}; - -const struct SpriteTemplate gUnknown_08593970 = -{ - .tileTag = ANIM_TAG_MAGENTA_HEART, - .paletteTag = ANIM_TAG_MAGENTA_HEART, - .oam = &gUnknown_0852490C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8105E60, -}; - -const union AffineAnimCmd gUnknown_08593988[] = -{ - AFFINEANIMCMD_FRAME(0x000A, 0xFFF3, 0x00, 0x0A), - AFFINEANIMCMD_FRAME(0xFFF6, 0x000D, 0x00, 0x0A), - AFFINEANIMCMD_END, -}; - -const struct SpriteTemplate gUnknown_085939A0 = -{ - .tileTag = ANIM_TAG_RED_HEART, - .paletteTag = ANIM_TAG_RED_HEART, - .oam = &gUnknown_0852490C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8106140, -}; - -const struct SpriteTemplate gBattleAnimSpriteTemplate_85939B8 = -{ - .tileTag = ANIM_TAG_RED_HEART, - .paletteTag = ANIM_TAG_RED_HEART, - .oam = &gUnknown_0852490C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_81061C4, -}; - -const struct SpriteTemplate gUnknown_085939D0 = -{ - .tileTag = ANIM_TAG_RED_HEART, - .paletteTag = ANIM_TAG_RED_HEART, - .oam = &gUnknown_0852490C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_810624C, -}; - -const union AffineAnimCmd gUnknown_085939E8[] = -{ - AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0), - AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 1), - AFFINEANIMCMD_JUMP(1), -}; - -const union AffineAnimCmd *const gUnknown_08593A00[] = -{ - gUnknown_085939E8, -}; - -const struct SpriteTemplate gHiddenPowerOrbSpriteTemplate = -{ - .tileTag = ANIM_TAG_RED_ORB, - .paletteTag = ANIM_TAG_RED_ORB, - .oam = &gUnknown_0852496C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08593A00, - .callback = sub_810673C, -}; - -const struct SpriteTemplate gHiddenPowerOrbScatterSpriteTemplate = -{ - .tileTag = ANIM_TAG_RED_ORB, - .paletteTag = ANIM_TAG_RED_ORB, - .oam = &gUnknown_085249CC, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08593A00, - .callback = sub_8106878, -}; - -const union AffineAnimCmd gUnknown_08593A34[] = -{ - AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0), - AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 1), - AFFINEANIMCMD_JUMP(1), -}; - -const union AffineAnimCmd *const gUnknown_08593A4C[] = -{ - gUnknown_08593A34, -}; - -const struct SpriteTemplate gUnknown_08593A50 = -{ - .tileTag = ANIM_TAG_RED_ORB_2, - .paletteTag = ANIM_TAG_RED_ORB_2, - .oam = &gUnknown_085249C4, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08593A4C, - .callback = sub_8106944, -}; - -const union AnimCmd gUnknown_08593A68[] = -{ - ANIMCMD_FRAME(0, 4), - ANIMCMD_FRAME(4, 4), - ANIMCMD_FRAME(8, 4), - ANIMCMD_FRAME(4, 4), - ANIMCMD_FRAME(0, 4), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08593A80[] = -{ - gUnknown_08593A68, -}; - -const struct SpriteTemplate gUnknown_08593A84 = -{ - .tileTag = ANIM_TAG_EYE_SPARKLE, - .paletteTag = ANIM_TAG_EYE_SPARKLE, - .oam = &gUnknown_0852490C, - .anims = gUnknown_08593A80, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_81069B8, -}; - -const union AnimCmd gUnknown_08593A9C[] = -{ - ANIMCMD_FRAME(0, 24), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08593AA4[] = -{ - gUnknown_08593A9C, -}; - -const struct SpriteTemplate gUnknown_08593AA8 = -{ - .tileTag = ANIM_TAG_ANGEL, - .paletteTag = ANIM_TAG_ANGEL, - .oam = &gUnknown_08524914, - .anims = gUnknown_08593AA4, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_81069D0, -}; - -const struct SpriteTemplate gUnknown_08593AC0 = -{ - .tileTag = ANIM_TAG_PINK_HEART, - .paletteTag = ANIM_TAG_PINK_HEART, - .oam = &gUnknown_0852490C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8106AD0, -}; - -const union AnimCmd gUnknown_08593AD8[] = -{ - ANIMCMD_FRAME(0, 3), - ANIMCMD_JUMP(0), -}; - -const union AnimCmd gUnknown_08593AE0[] = -{ - ANIMCMD_FRAME(16, 3), - ANIMCMD_JUMP(0), -}; - -const union AnimCmd *const gUnknown_08593AE8[] = -{ - gUnknown_08593AD8, - gUnknown_08593AE0, -}; - -const struct SpriteTemplate gUnknown_08593AF0 = -{ - .tileTag = ANIM_TAG_DEVIL, - .paletteTag = ANIM_TAG_DEVIL, - .oam = &gUnknown_08524914, - .anims = gUnknown_08593AE8, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8106B54, -}; - -const union AnimCmd gUnknown_08593B08[] = -{ - ANIMCMD_FRAME(0, 4), - ANIMCMD_FRAME(16, 4), - ANIMCMD_FRAME(32, 4), - ANIMCMD_FRAME(48, 4), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08593B1C[] = -{ - ANIMCMD_FRAME(0, 4, .hFlip = TRUE), - ANIMCMD_FRAME(16, 4, .hFlip = TRUE), - ANIMCMD_FRAME(32, 4, .hFlip = TRUE), - ANIMCMD_FRAME(48, 4, .hFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08593B30[] = -{ - gUnknown_08593B08, - gUnknown_08593B1C, -}; - -const struct SpriteTemplate gUnknown_08593B38 = -{ - .tileTag = ANIM_TAG_SWIPE, - .paletteTag = ANIM_TAG_SWIPE, - .oam = &gUnknown_08524914, - .anims = gUnknown_08593B30, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8106C80, -}; - -const union AnimCmd gUnknown_08593B50[] = -{ - ANIMCMD_FRAME(0, 8), - ANIMCMD_FRAME(16, 8), - ANIMCMD_FRAME(32, 8), - ANIMCMD_FRAME(16, 8), - ANIMCMD_END, -}; - -const union AnimCmd gUnknown_08593B64[] = -{ - ANIMCMD_FRAME(16, 8, .hFlip = TRUE), - ANIMCMD_FRAME(32, 8, .hFlip = TRUE), - ANIMCMD_FRAME(16, 8, .hFlip = TRUE), - ANIMCMD_FRAME(0, 8, .hFlip = TRUE), - ANIMCMD_END, -}; - -const union AnimCmd *const gUnknown_08593B78[] = -{ - gUnknown_08593B50, - gUnknown_08593B64, -}; - -const struct SpriteTemplate gUnknown_08593B80 = -{ - .tileTag = ANIM_TAG_MOVEMENT_WAVES, - .paletteTag = ANIM_TAG_MOVEMENT_WAVES, - .oam = &gUnknown_08524914, - .anims = gUnknown_08593B78, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8106CD0, -}; - -const union AffineAnimCmd gUnknown_08593B98[] = -{ - AFFINEANIMCMD_FRAME(-12, 8, 0, 4), - AFFINEANIMCMD_FRAME(20, -20, 0, 4), - AFFINEANIMCMD_FRAME(-8, 12, 0, 4), - AFFINEANIMCMD_END, -}; - -const struct SpriteTemplate gBattleAnimSpriteTemplate_8593BB8 = -{ - .tileTag = ANIM_TAG_JAGGED_MUSIC_NOTE, - .paletteTag = ANIM_TAG_JAGGED_MUSIC_NOTE, - .oam = &gUnknown_08524914, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8106E00, -}; - -const union AffineAnimCmd gUnknown_08593BD0[] = -{ - AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 5), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_08593BE0[] = -{ - AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 16), - AFFINEANIMCMD_END_ALT(1), -}; - -const union AffineAnimCmd gUnknown_08593BF0[] = -{ - AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 16), - AFFINEANIMCMD_END_ALT(1), -}; - -const union AffineAnimCmd *const gUnknown_08593C00[] = -{ - gUnknown_08593BD0, - gUnknown_08593BE0, - gUnknown_08593BF0, -}; - -extern const union AnimCmd *const gUnknown_08592FCC[]; -const struct SpriteTemplate gUnknown_08593C0C = -{ - .tileTag = ANIM_TAG_MUSIC_NOTES_2, - .paletteTag = ANIM_TAG_MUSIC_NOTES_2, - .oam = &gUnknown_0852496C, - .anims = gUnknown_08592FCC, - .images = NULL, - .affineAnims = gUnknown_08593C00, - .callback = sub_8106F60, -}; - -const struct SpriteTemplate gUnknown_08593C24 = -{ - .tileTag = ANIM_TAG_MUSIC_NOTES_2, - .paletteTag = ANIM_TAG_MUSIC_NOTES_2, - .oam = &gUnknown_0852496C, - .anims = gUnknown_08592FCC, - .images = NULL, - .affineAnims = gUnknown_08593C00, - .callback = sub_8106F00, -}; - -const union AffineAnimCmd gUnknown_08593C3C[] = -{ - AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd gUnknown_08593C4C[] = -{ - AFFINEANIMCMD_FRAME(0x200, 0x100, 0, 0), - AFFINEANIMCMD_END, -}; - -const union AffineAnimCmd *const gUnknown_08593C5C[] = -{ - gUnknown_08593C3C, - gUnknown_08593C4C, -}; - -const struct SpriteTemplate gUnknown_08593C64 = -{ - .tileTag = ANIM_TAG_GUARD_RING, - .paletteTag = ANIM_TAG_GUARD_RING, - .oam = &gUnknown_08524B1C, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gUnknown_08593C5C, - .callback = sub_81070AC, -}; diff --git a/src/electric.c b/src/electric.c index 5d65915b2..5d772e042 100644 --- a/src/electric.c +++ b/src/electric.c @@ -1,24 +1,43 @@ #include "global.h" #include "battle_anim.h" #include "constants/rgb.h" +#include "trig.h" +#include "constants/songs.h" +#include "sound.h" -extern void sub_810A1A8(struct Sprite *); -extern void sub_810A214(struct Sprite *); -extern void sub_810A274(struct Sprite *); -extern void sub_810A308(struct Sprite *); +extern void sub_810E2C8(struct Sprite *); +extern bool8 sub_810B614(struct Task *task, u8 taskId); extern void TranslateAnimSpriteToTargetMonLocation(struct Sprite *); -extern void sub_810A46C(struct Sprite *); -extern void sub_810A5BC(struct Sprite *); -extern void sub_810A628(struct Sprite *); -extern void sub_810A75C(struct Sprite *); -extern void sub_810A9DC(struct Sprite *); -extern void sub_810AA2C(struct Sprite *); -extern void sub_810ACD8(struct Sprite *); -extern void sub_810AD30(struct Sprite *); -extern void sub_810AD98(struct Sprite *); -extern void sub_810B1F0(struct Sprite *); -extern void sub_810B23C(struct Sprite *); -extern void sub_810B51C(struct Sprite *); + +static void sub_810A1A8(struct Sprite *); +static void sub_810A1F8(struct Sprite *); +static void sub_810A214(struct Sprite *); +static void sub_810A258(struct Sprite *); +static void sub_810A274(struct Sprite *); +static void sub_810A308(struct Sprite *); +static void sub_810A46C(struct Sprite *); +static void sub_810A4F4(struct Sprite *); +static void sub_810A56C(struct Sprite *); +static void sub_810A5BC(struct Sprite *); +static void sub_810A628(struct Sprite *); +static void sub_810A6EC(struct Sprite *); +static void sub_810A75C(struct Sprite *); +static void sub_810A834(u8 taskId); +static void sub_810A9DC(struct Sprite *); +static void sub_810AA2C(struct Sprite *); +static void sub_810AAB0(struct Sprite *); +static void sub_810AB78(u8 taskId); +static void sub_810AC8C(struct Sprite *); +static void sub_810ACC0(struct Sprite *); +static void sub_810ACD8(struct Sprite *); +static void sub_810AD30(struct Sprite *); +static void sub_810AD98(struct Sprite *); +static void sub_810ADF8(struct Sprite *); +static bool8 sub_810B154(struct Task *task, u8 taskId); +static void sub_810B1F0(struct Sprite *); +static void sub_810B23C(struct Sprite *); +static bool8 sub_810B430(struct Task *task, u8 taskId); +static void sub_810B51C(struct Sprite *); const union AnimCmd gUnknown_085956A4[] = { @@ -436,3 +455,1041 @@ const struct SpriteTemplate gUnknown_08595A30 = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_810B51C, }; + +static void sub_810A1A8(struct Sprite *sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + sprite->pos1.x -= gBattleAnimArgs[0]; + else + sprite->pos1.x += gBattleAnimArgs[0]; + + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->callback = sub_810A1F8; +} + +static void sub_810A1F8(struct Sprite *sprite) +{ + if (sprite->animEnded) + DestroyAnimSprite(sprite); +} + +static void sub_810A214(struct Sprite *sprite) +{ + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + sprite->pos1.x -= gBattleAnimArgs[0]; + else + sprite->pos1.x += gBattleAnimArgs[0]; + + sprite->callback = sub_810A258; +} + +static void sub_810A258(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + DestroySpriteAndMatrix(sprite); +} + +static void sub_810A274(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->pos1.y -= gBattleAnimArgs[1]; + } + else + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + sprite->data[0] = 0; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[3]; + sprite->data[3] = gBattleAnimArgs[4]; + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = TranslateSpriteInCircleOverDuration; +} + +static void sub_810A308(struct Sprite *sprite) +{ + u8 battler; + u32 matrixNum; + s16 sineVal; + + switch (gBattleAnimArgs[4]) + { + case 0: + battler = gBattleAnimAttacker; + break; + case 1: + default: + battler = gBattleAnimTarget; + break; + case 2: + if (!IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) + battler = gBattleAnimAttacker; + else + battler = BATTLE_PARTNER(gBattleAnimAttacker); + break; + case 3: + if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) + battler = BATTLE_PARTNER(gBattleAnimTarget); + else + battler = gBattleAnimTarget; + break; + } + + if (gBattleAnimArgs[5] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); + sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y); + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET); + } + + sprite->pos2.x = (gSineTable[gBattleAnimArgs[0]] * gBattleAnimArgs[1]) >> 8; + sprite->pos2.y = (gSineTable[gBattleAnimArgs[0] + 64] * gBattleAnimArgs[1]) >> 8; + + if (gBattleAnimArgs[6] & 1) + sprite->oam.priority = sub_80A8328(battler) + 1; + + matrixNum = sprite->oam.matrixNum; + sineVal = gSineTable[gBattleAnimArgs[2]]; + + gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[gBattleAnimArgs[2] + 64]; + gOamMatrices[matrixNum].b = sineVal; + gOamMatrices[matrixNum].c = -sineVal; + + sprite->data[0] = gBattleAnimArgs[3]; + sprite->callback = sub_810E2C8; +} + +static void sub_810A46C(struct Sprite *sprite) +{ + InitAnimSpritePos(sprite, 1); + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + InitAnimLinearTranslation(sprite); + sprite->data[5] = gBattleAnimArgs[2]; + sprite->data[6] = gBattleAnimArgs[5]; + sprite->data[7] = gBattleAnimArgs[4]; + sprite->oam.tileNum += gBattleAnimArgs[6] * 4; + sprite->callback = sub_810A4F4; + sub_810A4F4(sprite); +} + +static void sub_810A4F4(struct Sprite *sprite) +{ + if (!TranslateAnimLinear(sprite)) + { + sprite->pos2.x += Sin(sprite->data[7], sprite->data[5]); + sprite->pos2.y += Cos(sprite->data[7], sprite->data[5]); + sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF; + if(!(sprite->data[7] % 3)) + sprite->invisible ^= 1; + } + else + DestroyAnimSprite(sprite); +} + +static void sub_810A56C(struct Sprite *sprite) +{ + if (--sprite->data[5] == -1) + { + sprite->invisible ^= 1; + sprite->data[5] = sprite->data[4]; + } + if (sprite->data[3]-- <= 0) + DestroyAnimSprite(sprite); +} + +static void sub_810A5BC(struct Sprite *sprite) +{ + if (IsContest() || GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; + sprite->data[3] = gBattleAnimArgs[0]; + sprite->data[4] = gBattleAnimArgs[3]; + sprite->data[5] = gBattleAnimArgs[3]; + sprite->callback = sub_810A56C; +} + +static void sub_810A628(struct Sprite *sprite) +{ + u8 battler; + + sprite->data[0] = gBattleAnimArgs[3]; + if (gBattleAnimArgs[7] & 0x8000) + battler = gBattleAnimTarget; + else + battler = gBattleAnimAttacker; + + if (IsContest() || GetBattlerSide(battler) == B_SIDE_PLAYER) + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + + sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1]; + + sprite->data[4] = gBattleAnimArgs[7] & 0x7FFF; + sprite->data[5] = gBattleAnimArgs[2]; + sprite->data[6] = gBattleAnimArgs[5]; + sprite->data[7] = gBattleAnimArgs[4]; + + sprite->oam.tileNum += gBattleAnimArgs[6] * 4; + sprite->callback = sub_810A6EC; + sprite->callback(sprite); +} + +static void sub_810A6EC(struct Sprite *sprite) +{ + sprite->pos2.x = Sin(sprite->data[7], sprite->data[5]); + sprite->pos2.y = Cos(sprite->data[7], sprite->data[5]); + + sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF; + if (sprite->data[7] % sprite->data[4] == 0) + sprite->invisible ^= 1; + + if (sprite->data[0]-- <= 0) + DestroyAnimSprite(sprite); +} + +static void sub_810A75C(struct Sprite *sprite) +{ + sub_80A6980(sprite, FALSE); + sprite->oam.tileNum += gBattleAnimArgs[3] * 4; + + if (gBattleAnimArgs[3] == 1) + sprite->oam.matrixNum = 8; + else if (gBattleAnimArgs[3] == 2) + sprite->oam.matrixNum = 16; + + sprite->data[0] = gBattleAnimArgs[2]; + sprite->callback = WaitAnimForDuration; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); +} + +void sub_810A7DC(u8 taskId) +{ + gTasks[taskId].data[0] = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[0]; + gTasks[taskId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[1]; + gTasks[taskId].data[2] = gBattleAnimArgs[2]; + gTasks[taskId].func = sub_810A834; +} + +#ifdef NONMATCHING // couldn't get the proper tail merging in the "CreateSprite" switch cases.(ported from ruby) +static void sub_810A834(u8 taskId) +{ + u16 r8; + s16 r12; + s16 r2; + u8 spriteId = 0; + u8 r7 = 0; + u8 sp = gTasks[taskId].data[2]; + s16 r4 = gTasks[taskId].data[0]; + s16 r6 = gTasks[taskId].data[1]; + + if (!gTasks[taskId].data[2]) + { + r8 = 0; + r2 = 1; + r12 = 16; + } + else + { + r12 = 16; + r8 = 8; + r2 = 4; + } + + switch (gTasks[taskId].data[10]) + { + case 0: + r8 += r2 * 0; + spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 1), 2); + r7++; + break; + case 2: + r8 += r2; + spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 2), 2); + r7++; + break; + case 4: + r8 += r2 * 2; + spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 3), 2); + r7++; + break; + case 6: + r8 += r2 * 3; + spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 4), 2); + r7++; + break; + case 8: + spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 5), 2); + r7++; + break; + case 10: + DestroyAnimVisualTask(taskId); + return; + } + + if (r7) + { + gSprites[spriteId].oam.tileNum += r8; + gSprites[spriteId].data[0] = sp; + gSprites[spriteId].callback(&gSprites[spriteId]); + } + + gTasks[taskId].data[10]++; +} +#else +NAKED +static void sub_810A834(u8 taskId) +{ + asm_unified("\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ + movs r5, 0\n\ + movs r7, 0\n\ + ldr r1, =gTasks\n\ + lsls r0, 2\n\ + add r0, r9\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldrb r2, [r0, 0xC]\n\ + str r2, [sp]\n\ + ldrh r4, [r0, 0x8]\n\ + ldrh r6, [r0, 0xA]\n\ + movs r3, 0xC\n\ + ldrsh r0, [r0, r3]\n\ + mov r10, r1\n\ + cmp r0, 0\n\ + bne _0810A878\n\ + movs r0, 0\n\ + mov r8, r0\n\ + movs r2, 0x1\n\ + movs r1, 0x10\n\ + mov r12, r1\n\ + b _0810A882\n\ + .pool\n\ +_0810A878:\n\ + movs r2, 0x10\n\ + mov r12, r2\n\ + movs r3, 0x8\n\ + mov r8, r3\n\ + movs r2, 0x4\n\ +_0810A882:\n\ + mov r0, r9\n\ + lsls r1, r0, 2\n\ + adds r0, r1, r0\n\ + lsls r0, 3\n\ + add r0, r10\n\ + movs r3, 0x1C\n\ + ldrsh r0, [r0, r3]\n\ + mov r10, r1\n\ + cmp r0, 0xA\n\ + bhi _0810A978\n\ + lsls r0, 2\n\ + ldr r1, =_0810A8A4\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .pool\n\ + .align 2, 0\n\ +_0810A8A4:\n\ + .4byte _0810A8D0\n\ + .4byte _0810A978\n\ + .4byte _0810A8E4\n\ + .4byte _0810A978\n\ + .4byte _0810A904\n\ + .4byte _0810A978\n\ + .4byte _0810A91A\n\ + .4byte _0810A978\n\ + .4byte _0810A93C\n\ + .4byte _0810A978\n\ + .4byte _0810A970\n\ +_0810A8D0:\n\ + ldr r0, =gUnknown_08595828\n\ + lsls r1, r4, 16\n\ + asrs r1, 16\n\ + lsls r2, r6, 16\n\ + asrs r2, 16\n\ + mov r4, r12\n\ + lsls r3, r4, 16\n\ + b _0810A952\n\ + .pool\n\ +_0810A8E4:\n\ + mov r0, r12\n\ + lsls r3, r0, 17\n\ + mov r1, r8\n\ + adds r0, r1, r2\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r8, r0\n\ + ldr r0, =gUnknown_08595828\n\ + lsls r1, r4, 16\n\ + asrs r1, 16\n\ + lsls r2, r6, 16\n\ + asrs r2, 16\n\ + b _0810A952\n\ + .pool\n\ +_0810A904:\n\ + mov r3, r12\n\ + lsls r0, r3, 16\n\ + asrs r0, 16\n\ + lsls r3, r0, 1\n\ + adds r3, r0\n\ + lsls r0, r2, 1\n\ + add r0, r8\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r8, r0\n\ + b _0810A946\n\ +_0810A91A:\n\ + mov r0, r12\n\ + lsls r3, r0, 18\n\ + lsls r0, r2, 1\n\ + adds r0, r2\n\ + add r0, r8\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r8, r0\n\ + ldr r0, =gUnknown_08595828\n\ + lsls r1, r4, 16\n\ + asrs r1, 16\n\ + lsls r2, r6, 16\n\ + asrs r2, 16\n\ + b _0810A952\n\ + .pool\n\ +_0810A93C:\n\ + mov r1, r12\n\ + lsls r0, r1, 16\n\ + asrs r0, 16\n\ + lsls r3, r0, 2\n\ + adds r3, r0\n\ +_0810A946:\n\ + ldr r0, =gUnknown_08595828\n\ + lsls r1, r4, 16\n\ + asrs r1, 16\n\ + lsls r2, r6, 16\n\ + asrs r2, 16\n\ + lsls r3, 16\n\ +_0810A952:\n\ + asrs r3, 16\n\ + adds r2, r3\n\ + lsls r2, 16\n\ + asrs r2, 16\n\ + movs r3, 0x2\n\ + bl CreateSprite\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + adds r0, r7, 0x1\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + b _0810A978\n\ + .pool\n\ +_0810A970:\n\ + mov r0, r9\n\ + bl DestroyAnimVisualTask\n\ + b _0810A9BC\n\ +_0810A978:\n\ + cmp r7, 0\n\ + beq _0810A9AC\n\ + ldr r4, =gSprites\n\ + lsls r3, r5, 4\n\ + adds r3, r5\n\ + lsls r3, 2\n\ + adds r0, r3, r4\n\ + ldrh r5, [r0, 0x4]\n\ + lsls r2, r5, 22\n\ + lsrs r2, 22\n\ + add r2, r8\n\ + ldr r6, =0x000003ff\n\ + adds r1, r6, 0\n\ + ands r2, r1\n\ + ldr r1, =0xfffffc00\n\ + ands r1, r5\n\ + orrs r1, r2\n\ + strh r1, [r0, 0x4]\n\ + mov r1, sp\n\ + ldrh r1, [r1]\n\ + strh r1, [r0, 0x2E]\n\ + adds r4, 0x1C\n\ + adds r3, r4\n\ + ldr r1, [r3]\n\ + bl _call_via_r1\n\ +_0810A9AC:\n\ + ldr r0, =gTasks\n\ + mov r1, r10\n\ + add r1, r9\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + ldrh r0, [r1, 0x1C]\n\ + adds r0, 0x1\n\ + strh r0, [r1, 0x1C]\n\ +_0810A9BC:\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .pool\n\ + "); +} +#endif + +static void sub_810A9DC(struct Sprite *sprite) +{ + if (!sprite->data[0]) + { + sprite->oam.shape = 2; + sprite->oam.size = 0; + } + else + { + sprite->oam.shape = 0; + sprite->oam.size = 1; + } + if (++sprite->data[1] == 15) + DestroySprite(sprite); +} + +static void sub_810AA2C(struct Sprite *sprite) +{ + u8 spriteId; + + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + spriteId = CreateSprite(&gUnknown_08595840, sprite->pos1.x + 32, sprite->pos1.y, sprite->subpriority); + gSprites[spriteId].oam.tileNum += 8; + gAnimVisualTaskCount++; + gSprites[spriteId].callback = sub_810AAB0; + sprite->callback = sub_810AAB0; +} + +static void sub_810AAB0(struct Sprite *sprite) +{ + if (++sprite->data[0] == 3) + { + sprite->data[0] = 0; + sprite->invisible ^= 1; + } + + if (++sprite->data[1] == 51) + DestroyAnimSprite(sprite); +} + +void sub_810AAFC(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (!gBattleAnimArgs[0]) + { + task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + task->data[15] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + } + else + { + task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + task->data[15] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + } + + task->data[6] = gBattleAnimArgs[1]; + task->data[7] = 0; + task->data[8] = 0; + task->data[9] = 0; + task->data[10] = 0; + task->data[11] = gBattleAnimArgs[3]; + task->data[12] = 0; + task->data[13] = gBattleAnimArgs[2]; + task->func = sub_810AB78; +} + +void sub_810AB78(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (task->data[6]) + { + if (++task->data[12] > task->data[13]) + { + u8 spriteId; + task->data[12] = 0; + spriteId = CreateSprite(&gUnknown_085958A8, task->data[14], task->data[15], 2); + if (spriteId != MAX_SPRITES) + { + struct Sprite *sprite = &gSprites[spriteId]; + sprite->pos1.x += gUnknown_08595858[task->data[9]][0]; + sprite->pos1.y += gUnknown_08595858[task->data[9]][1]; + + sprite->data[0] = 40 - task->data[8] * 5; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = task->data[14]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = task->data[15]; + sprite->data[5] = taskId; + + InitAnimLinearTranslation(sprite); + StoreSpriteCallbackInData6(sprite, sub_810ACC0); + sprite->callback = RunStoredCallbackWhenAnimEnds; + + if (++task->data[9] > 15) + task->data[9] = 0; + + if (++task->data[10] >= task->data[11]) + { + task->data[10] = 0; + if (task->data[8] <= 5) + task->data[8]++; + } + + task->data[7]++; + task->data[6]--; + } + } + } + else if(task->data[7] == 0) + DestroyAnimVisualTask(taskId); +} + +static void sub_810AC8C(struct Sprite *sprite) +{ + if (TranslateAnimLinear(sprite)) + { + gTasks[sprite->data[5]].data[7]--; + DestroySprite(sprite); + } +} + +static void sub_810ACC0(struct Sprite *sprite) +{ + StartSpriteAnim(sprite, 1); + sprite->callback = sub_810AC8C; +} + +static void sub_810ACD8(struct Sprite *sprite) +{ + if (!gBattleAnimArgs[0]) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + } + + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; +} + +static void sub_810AD30(struct Sprite *sprite) +{ + if (!gBattleAnimArgs[0]) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + } + + sprite->pos2.x = gBattleAnimArgs[1]; + sprite->pos2.y = gBattleAnimArgs[2]; + StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); + sprite->callback = RunStoredCallbackWhenAnimEnds; +} + +static void sub_810AD98(struct Sprite *sprite) +{ + StartSpriteAffineAnim(sprite, 1); + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + sprite->data[6] = GetAnimBattlerSpriteId(0); + sprite->data[7] = 16; + + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + sprite->data[7] *= -1; + + sprite->callback = sub_810ADF8; +} + +static void sub_810ADF8(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (++sprite->data[1] > 40) + sprite->data[0]++; + break; + case 1: + sprite->pos1.x += sprite->data[7]; + gSprites[sprite->data[6]].pos2.x += sprite->data[7]; + if ((u16)(sprite->pos1.x + 80) > 400) + DestroySpriteAndMatrix(sprite); + } +} + +void sub_810AE5C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[15] = GetAnimBattlerSpriteId(0); + task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + { + task->data[14] = -32; + task->data[13] = 2; + } + else + { + task->data[14] = 32; + task->data[13] = -2; + } + + gSprites[task->data[15]].pos2.x = task->data[14]; + task->data[0]++; + break; + case 1: + if (++task->data[1] > 1) + { + task->data[1] = 0; + gSprites[task->data[15]].invisible ^= 1; + + if (task->data[14]) + { + task->data[14] += task->data[13]; + gSprites[task->data[15]].pos2.x = task->data[14]; + } + else + task->data[0]++; + + } + break; + case 2: + if (++task->data[1] > 1) + { + task->data[1] = 0; + gSprites[task->data[15]].invisible ^= 1; + + if (++task->data[2] == 8) + task->data[0]++; + } + break; + case 3: + gSprites[task->data[15]].invisible = 0; + DestroyAnimVisualTask(taskId); + } +} + +void sub_810AFCC(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch(task->data[0]) + { + case 0: + task->data[1] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : -1; + + switch (gBattleAnimArgs[0]) + { + case 0: + task->data[3] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + task->data[5] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + task->data[4] = (task->data[1] * 128) + 120; + break; + case 4: + task->data[3] = 120 - (task->data[1] * 128); + task->data[5] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + task->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) - (task->data[1] * 32); + break; + default: + if ((gBattleAnimArgs[0] & 1) != 0) + { + task->data[3] = 256; + task->data[4] = -16; + } + else + { + task->data[3] = -16; + task->data[4] = 256; + } + + if (task->data[1] == 1) + { + task->data[5] = 80 - gBattleAnimArgs[0] * 10; + } + else + { + u16 temp; + task->data[5] = gBattleAnimArgs[0] * 10 + 40; + temp = task->data[3]; + task->data[3] = task->data[4]; + task->data[4] = temp; + } + } + + if (task->data[3] < task->data[4]) + { + task->data[1] = 1; + task->data[6] = 0; + } + else + { + task->data[1] = -1; + task->data[6] = 3; + } + + task->data[0]++; + break; + case 1: + if (++task->data[2] > 0) + { + task->data[2] = 0; + if (sub_810B154(task, taskId) || sub_810B154(task, taskId)) + task->data[0]++; + } + break; + case 2: + if (task->data[7] == 0) + DestroyAnimVisualTask(taskId); + } +} + +static bool8 sub_810B154(struct Task *task, u8 taskId) +{ + u8 spriteId = CreateSprite(&gUnknown_08595A00, task->data[3], task->data[5], 35); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[6] = taskId; + gSprites[spriteId].data[7] = 7; + task->data[7]++; + } + + task->data[6] += task->data[1]; + if (task->data[6] < 0) + task->data[6] = 3; + + if (task->data[6] > 3) + task->data[6] = 0; + + task->data[3] += task->data[1] * 16; + + if ((task->data[1] == 1 && task->data[3] >= task->data[4]) + || (task->data[1] == -1 && task->data[3] <= task->data[4])) + { + return TRUE; + } + else + { + return FALSE; + } +} + +static void sub_810B1F0(struct Sprite *sprite) +{ + if (++sprite->data[0] > 12) + { + gTasks[sprite->data[6]].data[sprite->data[7]]--; + FreeOamMatrix(sprite->oam.matrixNum); + DestroySprite(sprite); + } +} + +static void sub_810B23C(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + StartSpriteAffineAnim(sprite, 2); + sprite->data[0]++; + break; + case 1: + if (sprite->affineAnimEnded) + DestroySpriteAndMatrix(sprite); + } +} + +void sub_810B29C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[6] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + task->data[7] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + task->data[8] = 4; + task->data[10] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + task->data[9] = (task->data[10] - task->data[6]) / 5; + task->data[4] = 7; + task->data[5] = -1; + task->data[11] = 12; + task->data[12] = BattleAnimAdjustPanning(task->data[11] - 76); + task->data[13] = BattleAnimAdjustPanning(SOUND_PAN_TARGET); + task->data[14] = task->data[12]; + task->data[15] = (task->data[13] - task->data[12]) / 3; + task->data[0]++; + break; + case 1: + if (++task->data[1] > 0) + { + task->data[1] = 0; + if (sub_810B430(task, taskId)) + { + if (task->data[2] == 5) + task->data[0] = 3; + else + task->data[0]++; + } + } + + if (task->data[11]) + task->data[11]--; + break; + case 2: + if (task->data[11]) + task->data[11]--; + + if (++task->data[1] > 4) + { + task->data[1] = 0; + if (task->data[2] & 1) + { + task->data[7] = 4; + task->data[8] = 68; + task->data[4] = 0; + task->data[5] = 1; + } + else + { + task->data[7] = 68; + task->data[8] = 4; + task->data[4] = 7; + task->data[5] = -1; + } + + if (task->data[11]) + task->data[0] = 4; + else + task->data[0] = 1; + } + break; + case 3: + if (task->data[3] == 0) + DestroyAnimVisualTask(taskId); + break; + case 4: + if (task->data[11]) + task->data[11]--; + else + task->data[0] = 1; + break; + } +} + +static bool8 sub_810B430(struct Task *task, u8 taskId) +{ + u8 spriteId = CreateSprite(&gUnknown_08595A30, task->data[6], task->data[7], 35); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.tileNum += task->data[4]; + task->data[4] += task->data[5]; + if (task->data[4] < 0) + task->data[4] = 7; + if (task->data[4] > 7) + task->data[4] = 0; + + gSprites[spriteId].data[6] = taskId; + gSprites[spriteId].data[7] = 3; + task->data[3]++; + } + + if (task->data[4] == 0 && task->data[5] > 0) + { + task->data[14] += task->data[15]; + PlaySE12WithPanning(SE_W085, task->data[14]); + } + + if ((task->data[5] < 0 && task->data[7] <= task->data[8]) + || (task->data[5] > 0 && task->data[7] >= task->data[8])) + { + task->data[2]++; + task->data[6] += task->data[9]; + return TRUE; + } + else + { + task->data[7] += task->data[5] * 8; + return FALSE; + } +} + +static void sub_810B51C(struct Sprite *sprite) +{ + if (++sprite->data[0] > 12) + { + gTasks[sprite->data[6]].data[sprite->data[7]]--; + DestroySprite(sprite); + } +} + +void sub_810B55C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[15] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 32; + task->data[14] = task->data[15]; + while (task->data[14] > 16) + { + task->data[14] -= 32; + } + + task->data[13] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + task->data[12] = GetBattlerSpriteSubpriority(gBattleAnimTarget) - 2; + task->data[0]++; + break; + case 1: + if (++task->data[1] > 1) + { + task->data[1] = 0; + if (sub_810B614(task, taskId)) + task->data[0]++; + } + break; + case 2: + if (task->data[10] == 0) + DestroyAnimVisualTask(taskId); + break; + } +} diff --git a/src/fight.c b/src/fight.c index c9000fae4..fb1c01b78 100644 --- a/src/fight.c +++ b/src/fight.c @@ -828,7 +828,7 @@ static void sub_810D6A8(struct Sprite *sprite) sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], 3); InitAnimLinearTranslation(sprite); - StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); sprite->callback = sub_80A6F98; } } @@ -839,7 +839,7 @@ void sub_810D714(struct Sprite *sprite) sprite->pos1.y = 120; sprite->data[0] = gBattleAnimArgs[3]; - sub_80A8048(&sprite->data[4], &sprite->data[5], (void *)(sprite->pos1.y << 8)); + StorePointerInVars(&sprite->data[4], &sprite->data[5], (void *)(sprite->pos1.y << 8)); sprite->data[6] = gBattleAnimArgs[1]; sprite->oam.tileNum += gBattleAnimArgs[2] * 4; @@ -853,9 +853,9 @@ static void sub_810D770(struct Sprite *sprite) if (sprite->data[0] != 0) { - var0 = sub_80A8050(sprite->data[4], sprite->data[5]); + var0 = LoadPointerFromVars(sprite->data[4], sprite->data[5]); var0 -= sprite->data[6]; - sub_80A8048(&sprite->data[4], &sprite->data[5], var0); + StorePointerInVars(&sprite->data[4], &sprite->data[5], var0); var0 = (void *)(((intptr_t)var0) >> 8); sprite->pos1.y = (intptr_t)var0; @@ -978,7 +978,7 @@ void sub_810DA10(struct Sprite *sprite) StartSpriteAnim(sprite, 1); } - sprite->callback = sub_80A67D8; + sprite->callback = RunStoredCallbackWhenAnimEnds; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } diff --git a/src/fire.c b/src/fire.c index c054f154e..18ec7b95c 100644 --- a/src/fire.c +++ b/src/fire.c @@ -466,7 +466,7 @@ static void sub_8108EC8(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); - sprite->callback = sub_80A634C; + sprite->callback = TranslateSpriteInGrowingCircleOverDuration; sprite->callback(sprite); } @@ -479,13 +479,13 @@ static void sub_8108F08(struct Sprite *sprite) sprite->data[1] = gBattleAnimArgs[2]; sprite->data[2] = gBattleAnimArgs[3]; - sprite->callback = sub_80A656C; + sprite->callback = TranslateAnimLinearSimple; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } static void sub_8108F4C(struct Sprite *sprite) { - sub_80A6838(sprite); + SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker)) { @@ -538,12 +538,12 @@ static void sub_8109028(struct Sprite *sprite) } if (sprite->data[0] == sprite->data[1]) - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } static void sub_8109064(struct Sprite *sprite) { - sub_80A6838(sprite); + SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker)) { @@ -588,7 +588,7 @@ static void sub_81090D8(struct Sprite *sprite) } else { - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); } } @@ -726,7 +726,7 @@ static void AnimFireCross(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); - sprite->callback = sub_80A653C; //TranslateSpriteOverDuration + sprite->callback = TranslateSpriteOverDuration; } static void sub_81093A4(struct Sprite *sprite) @@ -779,7 +779,7 @@ void sub_8109460(u8 taskId) // initialize animation task for Move_ERUPTION? task->data[5] = GetBattlerSide(gBattleAnimAttacker); task->data[6] = 0; - sub_80A7270(task->data[15], 0); + PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL); task->func = sub_81094D0; } @@ -816,7 +816,7 @@ static void sub_81094D0(u8 taskId) // animate Move_ERUPTION? if(!sub_80A80C8(task)) { - sub_80A7E6C(task->data[15]); + SetBattlerSpriteYOffsetFromYScale(task->data[15]); gSprites[task->data[15]].pos2.x = 0; task->data[1] = 0; @@ -879,7 +879,7 @@ static void sub_81094D0(u8 taskId) // animate Move_ERUPTION? if (!sub_80A80C8(task)) { gSprites[task->data[15]].pos1.y = task->data[4]; - sub_80A7344(task->data[15]); + ResetSpriteRotScale(task->data[15]); task->data[2] = 0; task->data[0]++; diff --git a/src/ghost.c b/src/ghost.c index 0464d1491..d4f6512a8 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -342,8 +342,8 @@ void sub_811188C(u8 taskId) SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL)); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10)); spriteId = GetAnimBattlerSpriteId(0); - sub_80A7270(spriteId, 1); - obj_id_set_rotscale(spriteId, 128, 128, 0); + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_BLEND); + SetSpriteRotScale(spriteId, 128, 128, 0); gSprites[spriteId].invisible = FALSE; gTasks[taskId].data[0] = 128; gTasks[taskId].data[1] = *gBattleAnimArgs; @@ -381,11 +381,11 @@ static void sub_811196C(u8 taskId) gTasks[taskId].data[0] += 8; if (gTasks[taskId].data[0] <= 0xFF) { - obj_id_set_rotscale(spriteId, gTasks[taskId].data[0], gTasks[taskId].data[0], 0); + SetSpriteRotScale(spriteId, gTasks[taskId].data[0], gTasks[taskId].data[0], 0); } else { - sub_80A7344(spriteId); + ResetSpriteRotScale(spriteId); DestroyAnimVisualTask(taskId); SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); @@ -454,7 +454,7 @@ static void AnimShadowBallStep(struct Sprite *sprite) sprite->data[0] += 1; break; case 3: - move_anim_8074EE0(sprite); + DestroySpriteAndMatrix(sprite); break; } } @@ -510,7 +510,7 @@ void sub_8111C50(u8 taskId) struct Task *task; task = &gTasks[taskId]; - task->data[0] = duplicate_obj_of_side_rel2move_in_transparent_mode(1); + task->data[0] = CloneBattlerSpriteWithBlend(1); if (task->data[0] < 0) { DestroyAnimVisualTask(taskId); @@ -536,7 +536,7 @@ void sub_8111C50(u8 taskId) gSprites[task->data[0]].data[3] = 0; gSprites[task->data[0]].data[4] = 0; StoreSpriteCallbackInData6(&gSprites[task->data[0]], SpriteCallbackDummy); - gSprites[task->data[0]].callback = sub_80A656C; + gSprites[task->data[0]].callback = TranslateAnimLinearSimple; task->func = sub_8111D78; } @@ -602,7 +602,7 @@ static void sub_8111E78(u8 taskId) } else { - task->data[0] = duplicate_obj_of_side_rel2move_in_transparent_mode(1); + task->data[0] = CloneBattlerSpriteWithBlend(1); if (task->data[0] < 0) { FreeSpritePaletteByTag(0x2771); @@ -1171,7 +1171,7 @@ void sub_8112C6C(u8 taskId) task->data[11] = (sub_80A861C(gBattleAnimAttacker, 1) / 2) + 8; task->data[7] = 0; task->data[5] = sub_80A8328(gBattleAnimAttacker); - task->data[6] = sub_80A82E4(gBattleAnimAttacker) - 2; + task->data[6] = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 2; task->data[3] = 0; task->data[4] = 16; SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL)); @@ -1322,6 +1322,6 @@ static void sub_8112FB8(struct Sprite *sprite) gSprites[sprite->data[5]].pos2.x = 0; gSprites[sprite->data[5]].pos2.y = 0; gSprites[sprite->data[5]].pos1.y -= 8; - sprite->callback = move_anim_8074EE0; + sprite->callback = DestroySpriteAndMatrix; } } diff --git a/src/ground.c b/src/ground.c index 6cb7b8557..77acd3919 100644 --- a/src/ground.c +++ b/src/ground.c @@ -221,7 +221,7 @@ void AnimDirtScatter(struct Sprite *sprite) sprite->data[2] = targetXPos + xOffset; sprite->data[4] = targetYPos + yOffset; sprite->callback = StartAnimLinearTranslation; - StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); } // Moves a particle of dirt in the Mud Sport animation. diff --git a/src/item.c b/src/item.c index 6a1f1955a..71c2dc0f7 100644 --- a/src/item.c +++ b/src/item.c @@ -543,7 +543,7 @@ bool8 RemoveBagItem(u16 itemId, u16 count) VarSet(VAR_0x40ED, itemId); } - var = sub_81ABB2C(pocket); + var = GetItemListPosition(pocket); if (itemPocket->capacity > var && itemPocket->itemSlots[var].itemId == itemId) { diff --git a/src/item_menu.c b/src/item_menu.c index 40d09a8a1..32c42ac31 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -57,7 +57,7 @@ bool8 load_bag_menu_graphics(void); void setup_bag_menu_textboxes(void); void allocate_bag_item_list_buffers(void); void load_bag_item_list_buffers(u8); -void bag_menu_print_pocket_names(u8*, u8*); +void bag_menu_print_pocket_names(const u8*, const u8*); void bag_menu_copy_pocket_name_to_window(u32); void bag_menu_draw_pocket_indicator_square(u8, u8); void bag_menu_add_pocket_scroll_arrow_indicators_maybe(void); @@ -69,7 +69,6 @@ void Task_BagMenu(u8); void get_name(s8*, u16); u16 ItemIdToBattleMoveId(u16); u16 BagGetItemIdByPocketPosition(u8, u16); -void AddBagItemIconSprite(u16, u8); void bag_menu_print_description_box_text(int); void bag_menu_print_cursor(u8, u8); void bag_menu_print(u8, u8, const u8*, u8, u8, u8, u8, u8, u8); @@ -121,7 +120,7 @@ void bag_menu_leave_maybe_3(void); void bag_menu_leave_maybe_2(void); void bag_menu_leave_maybe(void); void sub_81ABA6C(void); -void sub_81ABAC4(void); +static void SetPocketListPositions(void); void sub_81ABAE0(void); u8 sub_81AB1F0(u8); void sub_81AC23C(u8); @@ -151,7 +150,7 @@ void sub_81AD6FC(u8 taskId); // .rodata -const struct BgTemplate gUnknown_08613F90[3] = +static const struct BgTemplate sBgTemplates_ItemMenu[3] = { { .bg = 0, @@ -182,7 +181,7 @@ const struct BgTemplate gUnknown_08613F90[3] = }, }; -const struct ListMenuTemplate gUnknown_08613F9C = +static const struct ListMenuTemplate sItemListMenu = { .items = NULL, .moveCursorFunc = bag_menu_change_item_callback, @@ -258,7 +257,8 @@ const struct ScrollArrowsTemplate gUnknown_08614094 = {SCROLL_ARROW_LEFT, 0x1C, const u8 gUnknown_086140A4[] = INCBIN_U8("graphics/interface/select_button.4bpp"); -const u8 gUnknown_08614164[][3] = { +static const u8 sFontColorTable[][3] = { +// bgColor, textColor, shadowColor {0, 1, 3}, {0, 1, 4}, {0, 3, 6}, @@ -268,7 +268,7 @@ const u8 gUnknown_08614164[][3] = { const struct WindowTemplate gUnknown_08614174[] = { - { + { // Item names .bg = 0, .tilemapLeft = 14, .tilemapTop = 2, @@ -277,7 +277,7 @@ const struct WindowTemplate gUnknown_08614174[] = .paletteNum = 1, .baseBlock = 0x27, }, - { + { // Description .bg = 0, .tilemapLeft = 0, .tilemapTop = 13, @@ -286,7 +286,7 @@ const struct WindowTemplate gUnknown_08614174[] = .paletteNum = 1, .baseBlock = 0x117, }, - { + { // Pocket name .bg = 0, .tilemapLeft = 4, .tilemapTop = 1, @@ -295,7 +295,7 @@ const struct WindowTemplate gUnknown_08614174[] = .paletteNum = 1, .baseBlock = 0x1A1, }, - { + { // TM/HM info icons .bg = 0, .tilemapLeft = 1, .tilemapTop = 13, @@ -304,7 +304,7 @@ const struct WindowTemplate gUnknown_08614174[] = .paletteNum = 12, .baseBlock = 0x16B, }, - { + {// TM/HM info .bg = 0, .tilemapLeft = 7, .tilemapTop = 13, @@ -313,7 +313,7 @@ const struct WindowTemplate gUnknown_08614174[] = .paletteNum = 12, .baseBlock = 0x189, }, - { + { // Field message box .bg = 1, .tilemapLeft = 2, .tilemapTop = 15, @@ -440,16 +440,14 @@ struct TempWallyStruct { EWRAM_DATA struct UnkBagStruct *gUnknown_0203CE54 = 0; EWRAM_DATA struct BagStruct gUnknown_0203CE58 = {0}; -EWRAM_DATA struct ListBuffer1 *gUnknown_0203CE74 = 0; -EWRAM_DATA struct ListBuffer2 *gUnknown_0203CE78 = 0; +static EWRAM_DATA struct ListBuffer1 *sListBuffer1 = 0; +static EWRAM_DATA struct ListBuffer2 *sListBuffer2 = 0; EWRAM_DATA u16 gSpecialVar_ItemId = 0; -EWRAM_DATA struct TempWallyStruct *gUnknown_0203CE80 = 0; +static EWRAM_DATA struct TempWallyStruct *gUnknown_0203CE80 = 0; -extern u8 *gPocketNamesStringsTable[]; -extern struct ListMenuTemplate gUnknown_08613F9C; +extern u8 *const gPocketNamesStringsTable[]; extern const u8 gMoveNames[][0xD]; extern u8* gReturnToXStringsTable[]; -extern u32 gUnknown_0203CE5E[]; extern const u8 EventScript_2736B3[]; extern const u16 gUnknown_0860F074[]; @@ -531,12 +529,12 @@ void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2) temp = gUnknown_0203CE58.location - (POCKETS_COUNT - 1); if (temp <= 1) gUnknown_0203CE54->unk81B = 1; - gUnknown_0203CE54->unk0 = 0; + gUnknown_0203CE54->mainCallback2 = 0; gUnknown_0203CE54->unk81A = 0xFF; gUnknown_0203CE54->unk81E = -1; gUnknown_0203CE54->unk81F = -1; - memset(gUnknown_0203CE54->unk804, 0xFF, sizeof(gUnknown_0203CE54->unk804)); - memset(gUnknown_0203CE54->unk810, 0xFF, 10); + memset(gUnknown_0203CE54->spriteId, 0xFF, sizeof(gUnknown_0203CE54->spriteId)); + memset(gUnknown_0203CE54->windowPointers, 0xFF, 10); SetMainCallback2(CB2_Bag); } } @@ -615,7 +613,7 @@ bool8 setup_bag_menu(void) break; case 10: sub_81ABA6C(); - sub_81ABAC4(); + SetPocketListPositions(); sub_81ABAE0(); gMain.state++; break; @@ -677,10 +675,10 @@ bool8 setup_bag_menu(void) void bag_menu_init_bgs(void) { ResetVramOamAndBgCntRegs(); - memset(gUnknown_0203CE54->unk4, 0, 0x800); + memset(gUnknown_0203CE54->tilemapBuffer, 0, 0x800); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_08613F90, 3); - SetBgTilemapBuffer(2, gUnknown_0203CE54->unk4); + InitBgsFromTemplates(0, sBgTemplates_ItemMenu, 3); + SetBgTilemapBuffer(2, gUnknown_0203CE54->tilemapBuffer); ResetAllBgsCoordinates(); schedule_bg_copy_tilemap_to_vram(2); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); @@ -702,7 +700,7 @@ bool8 load_bag_menu_graphics(void) case 1: if (free_temp_tile_data_buffers_if_possible() != TRUE) { - LZDecompressWram(gUnknown_08D9A88C, gUnknown_0203CE54->unk4); + LZDecompressWram(gUnknown_08D9A88C, gUnknown_0203CE54->tilemapBuffer); gUnknown_0203CE54->unk834++; } break; @@ -744,8 +742,8 @@ u8 sub_81AB1F0(u8 a) void allocate_bag_item_list_buffers(void) { - gUnknown_0203CE74 = Alloc(sizeof(struct ListBuffer1)); - gUnknown_0203CE78 = Alloc(sizeof(struct ListBuffer2)); + sListBuffer1 = Alloc(sizeof(struct ListBuffer1)); + sListBuffer2 = Alloc(sizeof(struct ListBuffer2)); } void load_bag_item_list_buffers(u8 pocketId) @@ -754,34 +752,34 @@ void load_bag_item_list_buffers(u8 pocketId) struct BagPocket *pocket = &gBagPockets[pocketId]; struct ListMenuItem *subBuffer; - if (!gUnknown_0203CE54->unk81B_2) + if (!gUnknown_0203CE54->hideCloseBagText) { - for (i = 0; i < gUnknown_0203CE54->unk829[pocketId] - 1; i++) + for (i = 0; i < gUnknown_0203CE54->numItemStacks[pocketId] - 1; i++) { - get_name(gUnknown_0203CE78->name[i], pocket->itemSlots[i].itemId); - subBuffer = gUnknown_0203CE74->subBuffers; - subBuffer[i].name = gUnknown_0203CE78->name[i]; + get_name(sListBuffer2->name[i], pocket->itemSlots[i].itemId); + subBuffer = sListBuffer1->subBuffers; + subBuffer[i].name = sListBuffer2->name[i]; subBuffer[i].id = i; } - StringCopy(gUnknown_0203CE78->name[i], gText_CloseBag); - subBuffer = gUnknown_0203CE74->subBuffers; - subBuffer[i].name = gUnknown_0203CE78->name[i]; + StringCopy(sListBuffer2->name[i], gText_CloseBag); + subBuffer = sListBuffer1->subBuffers; + subBuffer[i].name = sListBuffer2->name[i]; subBuffer[i].id = -2; } else { - for (i = 0; i < gUnknown_0203CE54->unk829[pocketId]; i++) + for (i = 0; i < gUnknown_0203CE54->numItemStacks[pocketId]; i++) { - get_name(gUnknown_0203CE78->name[i], pocket->itemSlots[i].itemId); - subBuffer = gUnknown_0203CE74->subBuffers; - subBuffer[i].name = gUnknown_0203CE78->name[i]; + get_name(sListBuffer2->name[i], pocket->itemSlots[i].itemId); + subBuffer = sListBuffer1->subBuffers; + subBuffer[i].name = sListBuffer2->name[i]; subBuffer[i].id = i; } } - gMultiuseListMenuTemplate = gUnknown_08613F9C; - gMultiuseListMenuTemplate.totalItems = gUnknown_0203CE54->unk829[pocketId]; - gMultiuseListMenuTemplate.items = gUnknown_0203CE74->subBuffers; - gMultiuseListMenuTemplate.maxShowed = gUnknown_0203CE54->unk82E[pocketId]; + gMultiuseListMenuTemplate = sItemListMenu; + gMultiuseListMenuTemplate.totalItems = gUnknown_0203CE54->numItemStacks[pocketId]; + gMultiuseListMenuTemplate.items = sListBuffer1->subBuffers; + gMultiuseListMenuTemplate.maxShowed = gUnknown_0203CE54->numShownItems[pocketId]; } void get_name(s8 *dest, u16 itemId) @@ -907,7 +905,7 @@ void bag_menu_print_cursor(u8 a, u8 b) void bag_menu_add_pocket_scroll_arrow_indicators_maybe(void) { if (gUnknown_0203CE54->unk81E == 0xFF) - gUnknown_0203CE54->unk81E = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0xAC, 12, 0x94, gUnknown_0203CE54->unk829[gUnknown_0203CE58.pocket] - gUnknown_0203CE54->unk82E[gUnknown_0203CE58.pocket], 0x6E, 0x6E, &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket]); + gUnknown_0203CE54->unk81E = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0xAC, 12, 0x94, gUnknown_0203CE54->numItemStacks[gUnknown_0203CE58.pocket] - gUnknown_0203CE54->numShownItems[gUnknown_0203CE58.pocket], 0x6E, 0x6E, &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket]); } void sub_81AB824(void) @@ -937,8 +935,8 @@ void sub_81AB89C(void) void free_bag_item_list_buffers(void) { - Free(gUnknown_0203CE78); - Free(gUnknown_0203CE74); + Free(sListBuffer2); + Free(sListBuffer1); FreeAllWindowBuffers(); Free(gUnknown_0203CE54); } @@ -955,8 +953,8 @@ void task_close_bag_menu_2(u8 taskId) if (!gPaletteFade.active) { DestroyListMenuTask(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]); - if (gUnknown_0203CE54->unk0 != 0) - SetMainCallback2(gUnknown_0203CE54->unk0); + if (gUnknown_0203CE54->mainCallback2 != 0) + SetMainCallback2(gUnknown_0203CE54->mainCallback2); else SetMainCallback2(gUnknown_0203CE58.bagCallback); sub_81AB824(); @@ -981,15 +979,17 @@ void sub_81AB9A8(u8 pocketId) CompactItemsInBagPocket(pocket); break; } - gUnknown_0203CE54->unk829[pocketId] = 0; + gUnknown_0203CE54->numItemStacks[pocketId] = 0; for (i = 0; i < pocket->capacity && pocket->itemSlots[i].itemId; i++) - gUnknown_0203CE54->unk829[pocketId]++; - if (!gUnknown_0203CE54->unk81B_2) - gUnknown_0203CE54->unk829[pocketId]++; - if (gUnknown_0203CE54->unk829[pocketId] > 8) - gUnknown_0203CE54->unk82E[pocketId] = 8; + gUnknown_0203CE54->numItemStacks[pocketId]++; + + if (!gUnknown_0203CE54->hideCloseBagText) + gUnknown_0203CE54->numItemStacks[pocketId]++; + + if (gUnknown_0203CE54->numItemStacks[pocketId] > 8) + gUnknown_0203CE54->numShownItems[pocketId] = 8; else - gUnknown_0203CE54->unk82E[pocketId] = gUnknown_0203CE54->unk829[pocketId]; + gUnknown_0203CE54->numShownItems[pocketId] = gUnknown_0203CE54->numItemStacks[pocketId]; } void sub_81ABA6C(void) @@ -999,26 +999,26 @@ void sub_81ABA6C(void) sub_81AB9A8(i); } -void sub_81ABA88(u8 a) +void SetInitialScrollAndCursorPositions(u8 pocketId) { - sub_812225C(&gUnknown_0203CE58.scrollPosition[a], &gUnknown_0203CE58.cursorPosition[a], gUnknown_0203CE54->unk82E[a], gUnknown_0203CE54->unk829[a]); + sub_812225C(&gUnknown_0203CE58.scrollPosition[pocketId], &gUnknown_0203CE58.cursorPosition[pocketId], gUnknown_0203CE54->numShownItems[pocketId], gUnknown_0203CE54->numItemStacks[pocketId]); } -void sub_81ABAC4(void) +static void SetPocketListPositions(void) { u8 i; for (i = 0; i < POCKETS_COUNT; i++) - sub_81ABA88(i); + SetInitialScrollAndCursorPositions(i); } void sub_81ABAE0(void) { u8 i; for (i = 0; i < POCKETS_COUNT; i++) - sub_8122298(&gUnknown_0203CE58.scrollPosition[i], &gUnknown_0203CE58.cursorPosition[i], gUnknown_0203CE54->unk82E[i], gUnknown_0203CE54->unk829[i], 8); + sub_8122298(&gUnknown_0203CE58.scrollPosition[i], &gUnknown_0203CE58.cursorPosition[i], gUnknown_0203CE54->numShownItems[i], gUnknown_0203CE54->numItemStacks[i], 8); } -u8 sub_81ABB2C(u8 pocketId) +u8 GetItemListPosition(u8 pocketId) { return gUnknown_0203CE58.scrollPosition[pocketId] + gUnknown_0203CE58.cursorPosition[pocketId]; } @@ -1041,7 +1041,7 @@ void bag_menu_inits_lists_menu(u8 taskId) bag_menu_RemoveBagItem_message_window(4); DestroyListMenuTask(data[0], scrollPos, cursorPos); sub_81AB9A8(gUnknown_0203CE58.pocket); - sub_81ABA88(gUnknown_0203CE58.pocket); + SetInitialScrollAndCursorPositions(gUnknown_0203CE58.pocket); load_bag_item_list_buffers(gUnknown_0203CE58.pocket); data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos); schedule_bg_copy_tilemap_to_vram(0); @@ -1092,7 +1092,7 @@ void Task_BagMenu(u8 taskId) if (sub_81AC2C0() == 1) { ListMenuGetScrollAndRow(data[0], scrollPos, cursorPos); - if ((*scrollPos + *cursorPos) != gUnknown_0203CE54->unk829[gUnknown_0203CE58.pocket] - 1) + if ((*scrollPos + *cursorPos) != gUnknown_0203CE54->numItemStacks[gUnknown_0203CE58.pocket] - 1) { PlaySE(SE_SELECT); bag_menu_swap_items(taskId); @@ -1102,13 +1102,13 @@ void Task_BagMenu(u8 taskId) } else { - int r4 = ListMenuHandleInputGetItemId(data[0]); + int listPosition = ListMenuHandleInputGetItemId(data[0]); ListMenuGetScrollAndRow(data[0], scrollPos, cursorPos); - switch (r4) + switch (listPosition) { - case -1: + case LIST_NOTHING_CHOSEN: break; - case -2: + case LIST_B_PRESSED: if (gUnknown_0203CE58.location == 5) { PlaySE(SE_HAZURE); @@ -1118,13 +1118,13 @@ void Task_BagMenu(u8 taskId) gSpecialVar_ItemId = select; gTasks[taskId].func = unknown_ItemMenu_Confirm; break; - default: + default: // A_BUTTON PlaySE(SE_SELECT); sub_81AB824(); bag_menu_print_cursor_(data[0], 2); - data[1] = r4; - data[2] = BagGetQuantityByPocketPosition(gUnknown_0203CE58.pocket + 1, r4); - gSpecialVar_ItemId = BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, r4); + data[1] = listPosition; + data[2] = BagGetQuantityByPocketPosition(gUnknown_0203CE58.pocket + 1, listPosition); + gSpecialVar_ItemId = BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, listPosition); gUnknown_08614054[gUnknown_0203CE58.location](taskId); break; } @@ -1186,7 +1186,7 @@ void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, u16 a3) ClearWindowTilemap(1); DestroyListMenuTask(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]); schedule_bg_copy_tilemap_to_vram(0); - gSprites[gUnknown_0203CE54->unk804[2 + (gUnknown_0203CE54->unk81B_1 ^ 1)]].invisible = TRUE; + gSprites[gUnknown_0203CE54->spriteId[2 + (gUnknown_0203CE54->unk81B_1 ^ 1)]].invisible = TRUE; sub_81AB824(); } pocketId = gUnknown_0203CE58.pocket; @@ -1744,7 +1744,7 @@ void Task_ActuallyToss(u8 taskId) RemoveBagItem(gSpecialVar_ItemId, data[8]); DestroyListMenuTask(data[0], scrollPos, cursorPos); sub_81AB9A8(gUnknown_0203CE58.pocket); - sub_81ABA88(gUnknown_0203CE58.pocket); + SetInitialScrollAndCursorPositions(gUnknown_0203CE58.pocket); load_bag_item_list_buffers(gUnknown_0203CE58.pocket); data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos); schedule_bg_copy_tilemap_to_vram(0); @@ -1782,7 +1782,7 @@ void ItemMenu_Give(u8 taskId) bag_menu_print_there_is_no_pokemon(taskId); else { - gUnknown_0203CE54->unk0 = sub_81B7F60; + gUnknown_0203CE54->mainCallback2 = sub_81B7F60; unknown_ItemMenu_Confirm(taskId); } } @@ -1815,7 +1815,7 @@ void sub_81AD350(u8 taskId) void ItemMenu_CheckTag(u8 taskId) { - gUnknown_0203CE54->unk0 = DoBerryTagScreen; + gUnknown_0203CE54->mainCallback2 = DoBerryTagScreen; unknown_ItemMenu_Confirm(taskId); } @@ -2012,7 +2012,7 @@ void sub_81AD8C8(u8 taskId) AddMoney(&gSaveBlock1Ptr->money, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8]); DestroyListMenuTask(data[0], scrollPos, cursorPos); sub_81AB9A8(gUnknown_0203CE58.pocket); - sub_81ABA88(gUnknown_0203CE58.pocket); + SetInitialScrollAndCursorPositions(gUnknown_0203CE58.pocket); load_bag_item_list_buffers(gUnknown_0203CE58.pocket); data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos); bag_menu_print_cursor_(data[0], 2); @@ -2235,7 +2235,7 @@ void bag_menu_leave_maybe(void) SetMainCallback2(CB2_ReturnToField); } -void bag_menu_print_pocket_names(u8 *pocketName1, u8 *pocketName2) +void bag_menu_print_pocket_names(const u8 *pocketName1, const u8 *pocketName2) { struct WindowTemplate window = {0, 0, 0, 0, 0, 0, 0}; u16 windowId; @@ -2252,7 +2252,7 @@ void bag_menu_print_pocket_names(u8 *pocketName1, u8 *pocketName2) offset = GetStringCenterAlignXOffset(1, pocketName2, 0x40); bag_menu_print(windowId, 1, pocketName2, offset + 0x40, 1, 0, 0, -1, 1); } - CpuCopy32((u8*)GetWindowAttribute(windowId, WINDOW_TILE_DATA), gUnknown_0203CE54->unk844, 0x400); + CpuCopy32((u8*)GetWindowAttribute(windowId, WINDOW_TILE_DATA), gUnknown_0203CE54->pocketNameBuffer, 0x400); RemoveWindow(windowId); } @@ -2263,7 +2263,7 @@ void bag_menu_copy_pocket_name_to_window(u32 a) int b; if (a > 8) a = 8; - r4 = &gUnknown_0203CE54->unk844; + r4 = &gUnknown_0203CE54->pocketNameBuffer; windowAttribute = (u8*)GetWindowAttribute(2, WINDOW_TILE_DATA); CpuCopy32(r4[0][a], windowAttribute, 0x100); b = a + 16; @@ -2292,17 +2292,17 @@ void setup_bag_menu_textboxes(void) void bag_menu_print(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 h) { - AddTextPrinterParameterized4(windowId, fontId, left, top, letterSpacing, lineSpacing, gUnknown_08614164[h], speed, str); + AddTextPrinterParameterized4(windowId, fontId, left, top, letterSpacing, lineSpacing, sFontColorTable[h], speed, str); } u8 sub_81AE124(u8 a) { - return gUnknown_0203CE54->unk810[a]; + return gUnknown_0203CE54->windowPointers[a]; } u8 bag_menu_add_window(u8 a) { - u8 *ptr = &gUnknown_0203CE54->unk810[a]; + u8 *ptr = &gUnknown_0203CE54->windowPointers[a]; if (*ptr == 0xFF) { *ptr = AddWindow(&gUnknown_086141AC[a]); @@ -2314,7 +2314,7 @@ u8 bag_menu_add_window(u8 a) void bag_menu_remove_window(u8 a) { - u8 *ptr = &gUnknown_0203CE54->unk810[a]; + u8 *ptr = &gUnknown_0203CE54->windowPointers[a]; if (*ptr != 0xFF) { sub_8198070(*ptr, 0); @@ -2327,7 +2327,7 @@ void bag_menu_remove_window(u8 a) u8 AddItemMessageWindow(u8 a) { - u8 *ptr = &gUnknown_0203CE54->unk810[a]; + u8 *ptr = &gUnknown_0203CE54->windowPointers[a]; if (*ptr == 0xFF) *ptr = AddWindow(&gUnknown_086141AC[a]); return *ptr; @@ -2335,7 +2335,7 @@ u8 AddItemMessageWindow(u8 a) void bag_menu_RemoveBagItem_message_window(u8 a) { - u8 *ptr = &gUnknown_0203CE54->unk810[a]; + u8 *ptr = &gUnknown_0203CE54->windowPointers[a]; if (*ptr != 0xFF) { sub_8197DF8(*ptr, 0); diff --git a/src/item_menu_icons.c b/src/item_menu_icons.c index 85b42b9b3..894574ec9 100644 --- a/src/item_menu_icons.c +++ b/src/item_menu_icons.c @@ -1,14 +1,14 @@ #include "global.h" -#include "sprite.h" +#include "berry.h" #include "decompress.h" +#include "graphics.h" +#include "item.h" #include "item_menu.h" #include "item_icon.h" #include "item_menu_icons.h" -#include "window.h" #include "menu_helpers.h" -#include "berry.h" -#include "graphics.h" -#include "item.h" +#include "sprite.h" +#include "window.h" #include "constants/items.h" struct CompressedTilesPal @@ -199,7 +199,7 @@ static const struct SpritePalette gUnknown_0857FBA8 = gUnknown_0857F564, 101 }; -static const struct SpriteTemplate gUnknown_0857FBB0 = +static const struct SpriteTemplate gSpriteTemplate_RotatingBall = { .tileTag = 101, .paletteTag = 101, @@ -409,7 +409,7 @@ static const struct SpriteTemplate gUnknown_0857FE10 = // code void RemoveBagSprite(u8 id) { - u8 *spriteId = &gUnknown_0203CE54->unk804[id]; + u8 *spriteId = &gUnknown_0203CE54->spriteId[id]; if (*spriteId != 0xFF) { FreeSpriteTilesByTag(id + 100); @@ -422,14 +422,14 @@ void RemoveBagSprite(u8 id) void AddBagVisualSprite(u8 bagPocketId) { - u8 *spriteId = &gUnknown_0203CE54->unk804[0]; + u8 *spriteId = &gUnknown_0203CE54->spriteId[0]; *spriteId = CreateSprite(&gUnknown_0857FB4C, 68, 66, 0); SetBagVisualPocketId(bagPocketId, FALSE); } void SetBagVisualPocketId(u8 bagPocketId, bool8 isSwitchingPockets) { - struct Sprite *sprite = &gSprites[gUnknown_0203CE54->unk804[0]]; + struct Sprite *sprite = &gSprites[gUnknown_0203CE54->spriteId[0]]; if (isSwitchingPockets) { sprite->pos2.y = -5; @@ -458,7 +458,7 @@ static void SpriteCB_BagVisualSwitchingPockets(struct Sprite *sprite) void ShakeBagVisual(void) { - struct Sprite *sprite = &gSprites[gUnknown_0203CE54->unk804[0]]; + struct Sprite *sprite = &gSprites[gUnknown_0203CE54->spriteId[0]]; if (sprite->affineAnimEnded) { StartSpriteAffineAnim(sprite, 1); @@ -477,10 +477,10 @@ static void SpriteCB_ShakeBagVisual(struct Sprite *sprite) void AddSwitchPocketRotatingBallSprite(s16 rotationDirection) { - u8 *spriteId = &gUnknown_0203CE54->unk804[1]; + u8 *spriteId = &gUnknown_0203CE54->spriteId[1]; LoadSpriteSheet(&gUnknown_0857FBA0); LoadSpritePalette(&gUnknown_0857FBA8); - *spriteId = CreateSprite(&gUnknown_0857FBB0, 16, 16, 0); + *spriteId = CreateSprite(&gSpriteTemplate_RotatingBall, 16, 16, 0); gSprites[*spriteId].data[0] = rotationDirection; } @@ -515,7 +515,7 @@ static void SpriteCB_SwitchPocketRotatingBallContinue(struct Sprite *sprite) void AddBagItemIconSprite(u16 itemId, u8 id) { - u8 *spriteId = &gUnknown_0203CE54->unk804[id + 2]; + u8 *spriteId = &gUnknown_0203CE54->spriteId[id + 2]; if (*spriteId == 0xFF) { u8 iconSpriteId; @@ -539,17 +539,17 @@ void RemoveBagItemIconSprite(u8 id) void sub_80D4FAC(void) { - sub_8122344(&gUnknown_0203CE54->unk804[4], 8); + sub_8122344(&gUnknown_0203CE54->spriteId[4], 8); } void sub_80D4FC8(u8 arg0) { - sub_81223FC(&gUnknown_0203CE54->unk804[4], 8, arg0); + sub_81223FC(&gUnknown_0203CE54->spriteId[4], 8, arg0); } void sub_80D4FEC(u8 arg0) { - sub_8122448(&gUnknown_0203CE54->unk804[4], 136, 120, (arg0 + 1) * 16); + sub_8122448(&gUnknown_0203CE54->spriteId[4], 136, 120, (arg0 + 1) * 16); } static void sub_80D5018(void *mem0, void *mem1) diff --git a/src/item_use.c b/src/item_use.c index 8399a1861..474b16ae1 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -57,7 +57,6 @@ extern void bag_menu_yes_no(u8, u8, const struct YesNoFuncTable*); extern void sub_81C5924(void); extern void sub_81C59BC(void); extern void sub_81AB9A8(u8); -extern void sub_81ABA88(u8); extern void StartEscapeRopeFieldEffect(void); extern u8* sub_806CF78(u16); extern void sub_81B89F0(void); @@ -128,7 +127,7 @@ void SetUpItemUseCallback(u8 taskId) type = ItemId_GetType(gSpecialVar_ItemId) - 1; if (!InBattlePyramid()) { - gUnknown_0203CE54->unk0 = gUnknown_085920D8[type]; + gUnknown_0203CE54->mainCallback2 = gUnknown_085920D8[type]; unknown_ItemMenu_Confirm(taskId); } else @@ -212,7 +211,7 @@ void sub_80FD254(void) void ItemUseOutOfBattle_Mail(u8 taskId) { - gUnknown_0203CE54->unk0 = sub_80FD254; + gUnknown_0203CE54->mainCallback2 = sub_80FD254; unknown_ItemMenu_Confirm(taskId); } @@ -608,7 +607,7 @@ void ItemUseOutOfBattle_PokeblockCase(u8 taskId) } else if (gTasks[taskId].data[3] != TRUE) { - gUnknown_0203CE54->unk0 = sub_80FDBEC; + gUnknown_0203CE54->mainCallback2 = sub_80FDBEC; unknown_ItemMenu_Confirm(taskId); } else @@ -670,7 +669,7 @@ void sub_80FDD10(u8 taskId) { gUnknown_0203A0F4 = sub_80FDD74; gFieldCallback = MapPostLoadHook_UseItem; - gUnknown_0203CE54->unk0 = CB2_ReturnToField; + gUnknown_0203CE54->mainCallback2 = CB2_ReturnToField; unknown_ItemMenu_Confirm(taskId); } else @@ -812,7 +811,7 @@ void sub_80FE058(void) if (!InBattlePyramid()) { sub_81AB9A8(ItemId_GetPocket(gSpecialVar_ItemId)); - sub_81ABA88(ItemId_GetPocket(gSpecialVar_ItemId)); + SetInitialScrollAndCursorPositions(ItemId_GetPocket(gSpecialVar_ItemId)); } else { @@ -993,7 +992,7 @@ void sub_80FE54C(u8 taskId) { if (!InBattlePyramid()) { - gUnknown_0203CE54->unk0 = sub_81B89F0; + gUnknown_0203CE54->mainCallback2 = sub_81B89F0; unknown_ItemMenu_Confirm(taskId); } else diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 110ec068e..930f1f35b 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -62,14 +62,14 @@ static const u8 * const sGiddyAdjectives[] = { }; static const u8 * const sGiddyQuestions[] = { - gUnknown_08294313, - gUnknown_08294359, - gUnknown_08294398, - gUnknown_082943DA, - gUnknown_0829441C, - gUnknown_08294460, - gUnknown_082944A0, - gUnknown_082944D5 + gMauvilleManText_ISoWantToGoOnAVacation, + gMauvilleManText_IBoughtCrayonsWith120Colors, + gMauvilleManText_WouldntItBeNiceIfWeCouldFloat, + gMauvilleManText_WhenYouWriteOnASandyBeach, + gMauvilleManText_WhatsTheBottomOfTheSeaLike, + gMauvilleManText_WhenYouSeeTheSettingSunDoesIt, + gMauvilleManText_LyingBackInTheGreenGrass, + gMauvilleManText_SecretBasesAreSoWonderful }; static void SetupBard(void) diff --git a/src/normal.c b/src/normal.c index 3de8b1157..e20f74588 100644 --- a/src/normal.c +++ b/src/normal.c @@ -410,8 +410,8 @@ void sub_81159B4(struct Sprite *sprite) sprite->data[3] = 40; sprite->data[4] = 112; sprite->data[5] = 0; - StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); - sprite->callback = sub_80A634C; + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = TranslateSpriteInGrowingCircleOverDuration; sprite->callback(sprite); } @@ -884,7 +884,7 @@ void sub_8116388(struct Sprite *sprite) else sub_80A6980(sprite, TRUE); - sprite->callback = sub_80A67BC; + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } @@ -897,7 +897,7 @@ static void sub_81163D0(struct Sprite *sprite) sub_80A6980(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[4]; - sprite->callback = sub_80A67BC; + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; StoreSpriteCallbackInData6(sprite, sub_810E2C8); } @@ -923,8 +923,8 @@ void sub_8116458(struct Sprite *sprite) sprite->pos2.x += (Random2() % 48) - 24; sprite->pos2.y += (Random2() % 24) - 12; - StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); - sprite->callback = sub_80A67BC; + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; } void sub_81164F0(struct Sprite *sprite) @@ -935,8 +935,8 @@ void sub_81164F0(struct Sprite *sprite) sprite->pos2.x = gBattleAnimArgs[1]; sprite->pos2.y = gBattleAnimArgs[2]; StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); - StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); - sprite->callback = sub_80A67BC; + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = RunStoredCallbackWhenAffineAnimEnds; } void sub_8116560(struct Sprite *sprite) diff --git a/src/poison.c b/src/poison.c index efa89ec13..c52299e3a 100644 --- a/src/poison.c +++ b/src/poison.c @@ -258,7 +258,7 @@ void sub_810DCD0(struct Sprite *sprite) static void sub_810DD24(struct Sprite *sprite) { - sub_80A656C(sprite); + TranslateAnimLinearSimple(sprite); sprite->data[1] -= sprite->data[5]; sprite->data[2] -= sprite->data[6]; diff --git a/src/pokeball.c b/src/pokeball.c index ad839e6af..82d2f2cea 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -426,7 +426,7 @@ static void SpriteCB_TestBallThrow(struct Sprite *sprite) sprite->pos2.y = 0; sprite->data[5] = 0; ballId = ItemIdToBallId(GetBattlerPokeballItemId(opponentBattler)); - LaunchBallStarsTask(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId); + AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId); sprite->data[0] = LaunchBallFadeMonTask(FALSE, opponentBattler, 14, ballId); sprite->sBattler = opponentBattler; sprite->data[7] = noOfShakes; @@ -737,7 +737,7 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite) StartSpriteAnim(sprite, 1); ballId = ItemIdToBallId(GetBattlerPokeballItemId(battlerId)); - LaunchBallStarsTask(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId); + AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId); sprite->data[0] = LaunchBallFadeMonTask(1, sprite->sBattler, 14, ballId); sprite->callback = HandleBallAnimEnd; @@ -985,9 +985,9 @@ static void SpriteCB_OpponentMonSendOut(struct Sprite *sprite) #undef sBattler -static u8 LaunchBallStarsTaskForPokeball(u8 x, u8 y, u8 kindOfStars, u8 d) +static u8 AnimateBallOpenParticlesForPokeball(u8 x, u8 y, u8 kindOfStars, u8 d) { - return LaunchBallStarsTask(x, y, kindOfStars, d, BALL_POKE); + return AnimateBallOpenParticles(x, y, kindOfStars, d, BALL_POKE); } static u8 LaunchBallFadeMonTaskForPokeball(bool8 unFadeLater, u8 battlerId, u32 arg2) @@ -1036,7 +1036,7 @@ static void sub_8076524(struct Sprite *sprite) r5 = 0; StartSpriteAnim(sprite, 1); - LaunchBallStarsTaskForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r5); + AnimateBallOpenParticlesForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r5); sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, battlerId, r4); sprite->callback = sub_80765E0; gSprites[r7].invisible = FALSE; @@ -1129,7 +1129,7 @@ static void sub_80767D4(struct Sprite *sprite) r6 = 0; StartSpriteAnim(sprite, 1); - LaunchBallStarsTaskForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r6); + AnimateBallOpenParticlesForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r6); sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, r8, r5); sprite->callback = sub_807687C; StartSpriteAffineAnim(&gSprites[r7], 2); diff --git a/src/pokedex.c b/src/pokedex.c index fe9066e4c..ef8905bb6 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -1889,9 +1889,9 @@ void sub_80BC890(void) void sub_80BC8D4(u8 dexMode, u8 sortMode) { u16 vars[3]; //I have no idea why three regular variables are stored in an array, but whatever. -#define temp_dexCount vars[0] -#define temp_notNationalDex vars[1] -#define temp_dexNum vars[2] +#define temp_dexCount vars[0] +#define temp_isHoennDex vars[1] +#define temp_dexNum vars[2] s16 i; sPokedexView->pokemonListCount = 0; @@ -1901,18 +1901,18 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode) default: case DEX_MODE_HOENN: temp_dexCount = HOENN_DEX_COUNT; - temp_notNationalDex = TRUE; + temp_isHoennDex = TRUE; break; case DEX_MODE_NATIONAL: if (IsNationalPokedexEnabled()) { temp_dexCount = NATIONAL_DEX_COUNT; - temp_notNationalDex = FALSE; + temp_isHoennDex = FALSE; } else { temp_dexCount = HOENN_DEX_COUNT; - temp_notNationalDex = TRUE; + temp_isHoennDex = TRUE; } break; } @@ -1920,7 +1920,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode) switch (sortMode) { case 0: - if (temp_notNationalDex) + if (temp_isHoennDex) { for (i = 0; i < temp_dexCount; i++) { @@ -2957,7 +2957,7 @@ void sub_80BEA24(u8 taskId) case 5: if (gTasks[taskId].data[1] == 0) { - gTasks[taskId].data[4] = (u16)CreateMonSpriteFromNationalDexNumber(sPokedexListItem->dexNum, 0x30, 0x38, 0); + gTasks[taskId].data[4] = (u16)CreateMonSpriteFromNationalDexNumber(sPokedexListItem->dexNum, 48, 56, 0); gSprites[gTasks[taskId].data[4]].oam.priority = 0; } gMain.state++; @@ -3784,7 +3784,7 @@ void sub_80BFE38(u8 taskId) gTasks[taskId].data[0]++; break; case 4: - spriteId = CreateMonSpriteFromNationalDexNumber(dexNum, 0x30, 0x38, 0); + spriteId = CreateMonSpriteFromNationalDexNumber(dexNum, 48, 56, 0); gSprites[spriteId].oam.priority = 0; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); SetVBlankCallback(gUnknown_030060B4); @@ -4411,17 +4411,17 @@ u16 sub_80C0944(void) for (i = 0; i < 150; i++) { - if (GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT) == FALSE) + if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT)) return 0; } for (i = 151; i < 248; i++) { - if (GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT) == FALSE) + if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT)) return 0; } for (i = 251; i < 384; i++) { - if (GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT) == FALSE) + if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT)) return 0; } return 1; diff --git a/src/pokemon.c b/src/pokemon.c index 004dac0d5..640d70776 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -45,12 +45,6 @@ struct SpeciesItem u16 item; }; -// Extracts the upper 16 bits of a 32-bit number -#define HIHALF(n) (((n) & 0xFFFF0000) >> 16) - -// Extracts the lower 16 bits of a 32-bit number -#define LOHALF(n) ((n) & 0xFFFF) - extern const struct OamData gUnknown_0831ACB0; extern const struct OamData gUnknown_0831ACA8; extern const struct SpriteFrameImage gUnknown_082FF3A8[]; @@ -2755,7 +2749,7 @@ void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedI CalculateMonStats(mon); } -void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src) +void sub_806819C(struct Pokemon *mon, struct BattleTowerPokemon *src) { s32 i; u8 nickname[30]; @@ -2809,7 +2803,7 @@ void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src) CalculateMonStats(mon); } -void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lvl50) +void sub_8068338(struct Pokemon *mon, struct BattleTowerPokemon *src, bool8 lvl50) { s32 i; u8 nickname[30]; @@ -2937,7 +2931,7 @@ void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level, CalculateMonStats(mon); } -void sub_80686FC(struct Pokemon *mon, struct UnknownPokemonStruct *dest) +void sub_80686FC(struct Pokemon *mon, struct BattleTowerPokemon *dest) { s32 i; u16 heldItem; @@ -6707,12 +6701,6 @@ const u32 *GetMonFrontSpritePal(struct Pokemon *mon) return GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality); } -// Extracts the upper 16 bits of a 32-bit number -#define HIHALF(n) (((n) & 0xFFFF0000) >> 16) - -// Extracts the lower 16 bits of a 32-bit number -#define LOHALF(n) ((n) & 0xFFFF) - const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality) { u32 shinyValue; diff --git a/src/record_mixing.c b/src/record_mixing.c index d37883e4d..6d5d49265 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -647,7 +647,7 @@ static void ReceiveOldManData(OldMan *oldMan, size_t recordSize, u8 which) static void ReceiveBattleTowerData(void *battleTowerRecord, size_t recordSize, u8 which) { struct EmeraldBattleTowerRecord *dest; - struct UnknownPokemonStruct *btPokemon; + struct BattleTowerPokemon *btPokemon; u32 mixIndices[4]; s32 i; @@ -1866,7 +1866,7 @@ static void SanitizeEmeraldBattleTowerRecord(struct EmeraldBattleTowerRecord *ds for (i = 0; i < 4; i++) { - struct UnknownPokemonStruct *towerMon = &dst->party[i]; + struct BattleTowerPokemon *towerMon = &dst->party[i]; if (towerMon->species != 0) StripExtCtrlCodes(towerMon->nickname); } diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c index 7f2eb3746..06d2af5b7 100644 --- a/src/reshow_battle_screen.c +++ b/src/reshow_battle_screen.c @@ -226,7 +226,7 @@ static void CreateBattlerSprite(u8 battler) return; SetMultiuseSpriteTemplateToPokemon(GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler)); - gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, 2), posY, sub_80A82E4(battler)); + gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, 2), posY, GetBattlerSpriteSubpriority(battler)); gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler; gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy; gSprites[gBattlerSpriteIds[battler]].data[0] = battler; @@ -241,7 +241,7 @@ static void CreateBattlerSprite(u8 battler) SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(B_POSITION_PLAYER_LEFT)); gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 0x50, (8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].coords) * 4 + 80, - sub_80A82E4(0)); + GetBattlerSpriteSubpriority(0)); gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler; gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy; gSprites[gBattlerSpriteIds[battler]].data[0] = battler; @@ -251,7 +251,7 @@ static void CreateBattlerSprite(u8 battler) SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_WALLY, GetBattlerPosition(0)); gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 0x50, (8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].coords) * 4 + 80, - sub_80A82E4(0)); + GetBattlerSpriteSubpriority(0)); gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler; gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy; gSprites[gBattlerSpriteIds[battler]].data[0] = battler; @@ -262,7 +262,7 @@ static void CreateBattlerSprite(u8 battler) return; SetMultiuseSpriteTemplateToPokemon(GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler)); - gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, 2), posY, sub_80A82E4(battler)); + gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, 2), posY, GetBattlerSpriteSubpriority(battler)); gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler; gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy; gSprites[gBattlerSpriteIds[battler]].data[0] = battler; diff --git a/src/rock.c b/src/rock.c index 3b8e505d8..20d4ea738 100644 --- a/src/rock.c +++ b/src/rock.c @@ -340,7 +340,7 @@ static void sub_8110A70(struct Sprite *sprite) sprite->data[3] = 32; sprite->data[4] = -24; - StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); sprite->callback = sub_80A6450; sprite->callback(sprite); } @@ -367,8 +367,8 @@ void sub_8110AB4(struct Sprite *sprite) sprite->data[3] = 0; sprite->data[4] = 0; - sprite->callback = sub_80A656C; - StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); + sprite->callback = TranslateAnimLinearSimple; + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); } void sub_8110B38(struct Sprite *sprite) diff --git a/src/script_pokemon_util_80F87D8.c b/src/script_pokemon_util_80F87D8.c index 9b7269f00..fc5a06024 100755 --- a/src/script_pokemon_util_80F87D8.c +++ b/src/script_pokemon_util_80F87D8.c @@ -220,7 +220,7 @@ static void ShowContestWinnerCleanup(void) void ShowContestWinner(void) { - SetMainCallback2(sub_812FDEC); + SetMainCallback2(CB2_ContestPainting); gMain.savedCallback = ShowContestWinnerCleanup; } diff --git a/sym_common.txt b/sym_common.txt index e8d1654c0..3a7d698fd 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -63,7 +63,7 @@ gUnknown_030061A0: @ 30061A0 gUnknown_030061C0: @ 30061C0 .space 0x4 -gUnknown_030061C4: @ 30061C4 +gContestPaintingMonPalette: @ 30061C4 .space 0xC .include "field_specials.o" @@ -77,16 +77,7 @@ gDexCryScreenState: @ 30061EC .include "save.o" .include "battle_tower.o" .include "intro.o" - -gUnknown_030062DC: @ 30062DC - .space 0x4 - -gUnknown_030062E0: @ 30062E0 - .space 0x4 - -gUnknown_030062E4: @ 30062E4 - .space 0x4 - + .include "battle_anim_8170478.o" .include "battle_factory_screen.o" .include "apprentice.o" diff --git a/sym_ewram.txt b/sym_ewram.txt index b413f287d..f386e9da1 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -285,26 +285,14 @@ gUnknown_0203A034: @ 203A034 gUnknown_0203A0F4: @ 203A0F4 .space 0x4 -gUnknown_0203A0F8: @ 203A0F8 - .space 0x8 + .include "src/battle_anim_effects_1.o" gUnknown_0203A100: @ 203A100 .space 0x10 .include "src/battle_anim_utility_funcs.o" - -gUnknown_0203A114: @ 203A114 - .space 0x4 - -gUnknown_0203A118: @ 203A118 - .space 0x4 - -gUnknown_0203A11C: @ 203A11C - .space 0x4 - -gUnknown_0203A120: @ 203A120 - .space 0x4 - + .include "src/battle_intro.o" + .include "src/easy_chat.o" .include "src/mon_markings.o" .include "src/mauville_old_man.o" .include "src/mail.o" |