summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarak <thomastaps194@comcast.net>2018-07-03 20:54:34 -0400
committerGitHub <noreply@github.com>2018-07-03 20:54:34 -0400
commitc4cc1522c86ec240c53c75455b650b1c69b2d5a4 (patch)
treec6db27ae5b9ae3ad1469ddff799e8d340cbead42
parent65fd5f89e17ae08bde8e0b70ac41484f5330c282 (diff)
parentee6951e331df29718355891598fe46285932209e (diff)
Merge pull request #7 from pret/master
merging from source repo
-rw-r--r--asm/ghost.s2278
-rw-r--r--asm/normal.s5030
-rw-r--r--data/battle_anim_scripts.s219
-rw-r--r--include/battle_anim.h10
-rw-r--r--include/rom_8077ABC.h1
-rw-r--r--ld_script.txt2
-rw-r--r--src/battle/anim/ghost.c871
-rw-r--r--src/battle/anim/normal.c1741
-rw-r--r--src/battle/battle_anim_812C144.c9
9 files changed, 2650 insertions, 7511 deletions
diff --git a/asm/ghost.s b/asm/ghost.s
deleted file mode 100644
index 36487210d..000000000
--- a/asm/ghost.s
+++ /dev/null
@@ -1,2278 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "include/macros.inc"
-
- .syntax unified
-
- .text
-
- @ ghost
-
- thumb_func_start sub_80DE3D4
-sub_80DE3D4: @ 80DE3D4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080DE40C @ =gTasks
- adds r5, r0, r1
- ldr r0, _080DE410 @ =gAnimBankTarget
- ldrb r0, [r0]
- bl GetBattlerPosition_permutated
- lsls r0, 24
- lsrs r6, r0, 24
- movs r1, 0x26
- ldrsh r0, [r5, r1]
- cmp r0, 0x4
- bls _080DE400
- b _080DE604
-_080DE400:
- lsls r0, 2
- ldr r1, _080DE414 @ =_080DE418
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080DE40C: .4byte gTasks
-_080DE410: .4byte gAnimBankTarget
-_080DE414: .4byte _080DE418
- .align 2, 0
-_080DE418:
- .4byte _080DE42C
- .4byte _080DE500
- .4byte _080DE544
- .4byte _080DE5AC
- .4byte _080DE5E0
-_080DE42C:
- ldr r7, _080DE460 @ =0x00002771
- adds r0, r7, 0
- bl AllocSpritePalette
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- mov r8, r2
- strh r0, [r5, 0x24]
- cmp r0, 0xFF
- beq _080DE456
- movs r0, 0x1
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- strh r0, [r5, 0x8]
- lsls r0, 16
- cmp r0, 0
- bge _080DE464
- adds r0, r7, 0
- bl FreeSpritePaletteByTag
-_080DE456:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080DE60A
- .align 2, 0
-_080DE460: .4byte 0x00002771
-_080DE464:
- ldr r4, _080DE4E4 @ =gSprites
- movs r3, 0x8
- ldrsh r0, [r5, r3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r2, [r5, 0x24]
- lsls r2, 4
- ldrb r3, [r1, 0x5]
- movs r0, 0xF
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- movs r2, 0x8
- ldrsh r1, [r5, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x5]
- movs r2, 0xC
- orrs r1, r2
- strb r1, [r0, 0x5]
- mov r3, r8
- strh r3, [r5, 0xA]
- strh r3, [r5, 0xC]
- movs r0, 0x10
- strh r0, [r5, 0xE]
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- movs r0, 0x22
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- lsls r0, 4
- strh r0, [r5, 0x10]
- cmp r6, 0x1
- bne _080DE4EC
- movs r2, 0x80
- lsls r2, 19
- ldrh r1, [r2]
- ldr r0, _080DE4E8 @ =0x0000fdff
- b _080DE4F4
- .align 2, 0
-_080DE4E4: .4byte gSprites
-_080DE4E8: .4byte 0x0000fdff
-_080DE4EC:
- movs r2, 0x80
- lsls r2, 19
- ldrh r1, [r2]
- ldr r0, _080DE4FC @ =0x0000fbff
-_080DE4F4:
- ands r0, r1
- strh r0, [r2]
- b _080DE604
- .align 2, 0
-_080DE4FC: .4byte 0x0000fbff
-_080DE500:
- movs r1, 0x24
- ldrsh r0, [r5, r1]
- adds r0, 0x10
- lsls r0, 4
- strh r0, [r5, 0x24]
- movs r2, 0x10
- ldrsh r0, [r5, r2]
- lsls r0, 1
- ldr r1, _080DE534 @ =gPlttBufferUnfaded
- adds r0, r1
- movs r3, 0x24
- ldrsh r1, [r5, r3]
- lsls r1, 1
- ldr r2, _080DE538 @ =gPlttBufferFaded
- adds r1, r2
- ldr r2, _080DE53C @ =REG_BG0CNT
- bl CpuSet
- ldrh r0, [r5, 0x10]
- ldr r3, _080DE540 @ =0x00003c0d
- movs r1, 0x10
- movs r2, 0xA
- bl BlendPalette
- b _080DE604
- .align 2, 0
-_080DE534: .4byte gPlttBufferUnfaded
-_080DE538: .4byte gPlttBufferFaded
-_080DE53C: .4byte REG_BG0CNT
-_080DE540: .4byte 0x00003c0d
-_080DE544:
- ldr r2, _080DE580 @ =gSprites
- movs r0, 0x22
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r1, r0
- subs r1, 0x20
- lsls r1, 16
- lsrs r2, r1, 16
- cmp r1, 0
- bge _080DE564
- movs r2, 0
-_080DE564:
- cmp r6, 0x1
- bne _080DE584
- lsls r0, r2, 24
- lsrs r0, 24
- adds r1, r2, 0
- adds r1, 0x40
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- str r2, [sp]
- movs r2, 0x4
- str r2, [sp, 0x4]
- str r6, [sp, 0x8]
- b _080DE59C
- .align 2, 0
-_080DE580: .4byte gSprites
-_080DE584:
- lsls r0, r2, 24
- lsrs r0, 24
- adds r1, r2, 0
- adds r1, 0x40
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- str r2, [sp]
- movs r2, 0x8
- str r2, [sp, 0x4]
- movs r2, 0x1
- str r2, [sp, 0x8]
-_080DE59C:
- movs r2, 0x2
- movs r3, 0x6
- bl ScanlineEffect_InitWave
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x1C]
- b _080DE604
-_080DE5AC:
- cmp r6, 0x1
- bne _080DE5C0
- ldr r1, _080DE5B8 @ =REG_BLDCNT
- ldr r2, _080DE5BC @ =0x00003f42
- adds r0, r2, 0
- b _080DE5C6
- .align 2, 0
-_080DE5B8: .4byte REG_BLDCNT
-_080DE5BC: .4byte 0x00003f42
-_080DE5C0:
- ldr r1, _080DE5D4 @ =REG_BLDCNT
- ldr r3, _080DE5D8 @ =0x00003f44
- adds r0, r3, 0
-_080DE5C6:
- strh r0, [r1]
- ldr r1, _080DE5DC @ =REG_BLDALPHA
- movs r2, 0x80
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- b _080DE604
- .align 2, 0
-_080DE5D4: .4byte REG_BLDCNT
-_080DE5D8: .4byte 0x00003f44
-_080DE5DC: .4byte REG_BLDALPHA
-_080DE5E0:
- cmp r6, 0x1
- bne _080DE5F0
- movs r0, 0x80
- lsls r0, 19
- ldrh r1, [r0]
- movs r3, 0x80
- lsls r3, 2
- b _080DE5FA
-_080DE5F0:
- movs r0, 0x80
- lsls r0, 19
- ldrh r1, [r0]
- movs r3, 0x80
- lsls r3, 3
-_080DE5FA:
- adds r2, r3, 0
- orrs r1, r2
- strh r1, [r0]
- ldr r0, _080DE618 @ =sub_80DE61C
- str r0, [r5]
-_080DE604:
- ldrh r0, [r5, 0x26]
- adds r0, 0x1
- strh r0, [r5, 0x26]
-_080DE60A:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DE618: .4byte sub_80DE61C
- thumb_func_end sub_80DE3D4
-
- thumb_func_start sub_80DE61C
-sub_80DE61C: @ 80DE61C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080DE6A0 @ =gTasks
- adds r4, r0, r1
- ldrh r1, [r4, 0xA]
- adds r1, 0x1
- strh r1, [r4, 0xA]
- movs r0, 0x1
- ands r0, r1
- strh r0, [r4, 0x12]
- cmp r0, 0
- bne _080DE654
- ldr r1, _080DE6A4 @ =gSineTable
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x12
- bl __divsi3
- strh r0, [r4, 0xC]
-_080DE654:
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- cmp r0, 0x1
- bne _080DE676
- ldr r1, _080DE6A4 @ =gSineTable
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x12
- bl __divsi3
- movs r1, 0x10
- subs r1, r0
- strh r1, [r4, 0xE]
-_080DE676:
- ldr r2, _080DE6A8 @ =REG_BLDALPHA
- ldrh r0, [r4, 0xE]
- lsls r0, 8
- ldrh r1, [r4, 0xC]
- orrs r0, r1
- strh r0, [r2]
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0x80
- bne _080DE698
- movs r0, 0
- strh r0, [r4, 0x26]
- ldr r1, _080DE6AC @ =sub_80DE6B0
- str r1, [r4]
- adds r0, r5, 0
- bl _call_via_r1
-_080DE698:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DE6A0: .4byte gTasks
-_080DE6A4: .4byte gSineTable
-_080DE6A8: .4byte REG_BLDALPHA
-_080DE6AC: .4byte sub_80DE6B0
- thumb_func_end sub_80DE61C
-
- thumb_func_start sub_80DE6B0
-sub_80DE6B0: @ 80DE6B0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080DE6E0 @ =gTasks
- adds r4, r0, r1
- ldr r0, _080DE6E4 @ =gAnimBankTarget
- ldrb r0, [r0]
- bl GetBattlerPosition_permutated
- lsls r0, 24
- lsrs r6, r0, 24
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080DE72C
- cmp r0, 0x1
- bgt _080DE6E8
- cmp r0, 0
- beq _080DE6EE
- b _080DE7AA
- .align 2, 0
-_080DE6E0: .4byte gTasks
-_080DE6E4: .4byte gAnimBankTarget
-_080DE6E8:
- cmp r0, 0x2
- beq _080DE740
- b _080DE7AA
-_080DE6EE:
- ldr r1, _080DE710 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
- movs r0, 0x1
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x24]
- cmp r6, 0x1
- bne _080DE718
- movs r2, 0x80
- lsls r2, 19
- ldrh r1, [r2]
- ldr r0, _080DE714 @ =0x0000fdff
- b _080DE720
- .align 2, 0
-_080DE710: .4byte gScanlineEffect
-_080DE714: .4byte 0x0000fdff
-_080DE718:
- movs r2, 0x80
- lsls r2, 19
- ldrh r1, [r2]
- ldr r0, _080DE728 @ =0x0000fbff
-_080DE720:
- ands r0, r1
- strh r0, [r2]
- b _080DE7AA
- .align 2, 0
-_080DE728: .4byte 0x0000fbff
-_080DE72C:
- ldrh r0, [r4, 0x10]
- ldr r3, _080DE73C @ =0x00003c0d
- movs r1, 0x10
- movs r2, 0
- bl BlendPalette
- b _080DE7AA
- .align 2, 0
-_080DE73C: .4byte 0x00003c0d
-_080DE740:
- ldr r3, _080DE788 @ =gSprites
- movs r0, 0x24
- 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
- strb r1, [r0]
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- bl obj_delete_but_dont_free_vram
- ldr r0, _080DE78C @ =0x00002771
- bl FreeSpritePaletteByTag
- ldr r0, _080DE790 @ =REG_BLDCNT
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- cmp r6, 0x1
- bne _080DE794
- subs r0, 0x52
- ldrh r1, [r0]
- movs r3, 0x80
- lsls r3, 2
- b _080DE79E
- .align 2, 0
-_080DE788: .4byte gSprites
-_080DE78C: .4byte 0x00002771
-_080DE790: .4byte REG_BLDCNT
-_080DE794:
- movs r0, 0x80
- lsls r0, 19
- ldrh r1, [r0]
- movs r3, 0x80
- lsls r3, 3
-_080DE79E:
- adds r2, r3, 0
- orrs r1, r2
- strh r1, [r0]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080DE7AA:
- ldrh r0, [r4, 0x26]
- adds r0, 0x1
- strh r0, [r4, 0x26]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80DE6B0
-
- thumb_func_start sub_80DE7B8
-sub_80DE7B8: @ 80DE7B8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r7, r0, 0
- ldr r0, _080DE7F4 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080DE800
- ldr r4, _080DE7F8 @ =gAnimBankAttacker
- 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 r0, 8
- movs r2, 0xE0
- lsls r2, 13
- adds r0, r2
- lsrs r5, r0, 16
- ldr r4, _080DE7FC @ =gAnimBankTarget
- b _080DE824
- .align 2, 0
-_080DE7F4: .4byte gBattleAnimArgs
-_080DE7F8: .4byte gAnimBankAttacker
-_080DE7FC: .4byte gAnimBankTarget
-_080DE800:
- ldr r4, _080DE8C8 @ =gAnimBankTarget
- 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 r0, 8
- movs r2, 0xE0
- lsls r2, 13
- adds r0, r2
- lsrs r5, r0, 16
- ldr r4, _080DE8CC @ =gAnimBankAttacker
-_080DE824:
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 8
- movs r1, 0xE0
- lsls r1, 13
- adds r0, r1
- lsrs r0, 16
- mov r9, r0
- mov r8, r5
- mov r2, r9
- subs r4, r2, r5
- lsls r4, 16
- lsrs r4, 16
- lsls r0, r6, 4
- strh r0, [r7, 0x2E]
- lsls r0, r5, 4
- strh r0, [r7, 0x30]
- mov r1, r10
- subs r0, r1, r6
- lsls r0, 4
- ldr r5, _080DE8D0 @ =gBattleAnimArgs
- movs r2, 0x2
- ldrsh r1, [r5, r2]
- bl __divsi3
- strh r0, [r7, 0x32]
- lsls r4, 16
- asrs r4, 12
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- adds r0, r4, 0
- bl __divsi3
- strh r0, [r7, 0x34]
- ldrh r0, [r5, 0x2]
- strh r0, [r7, 0x36]
- mov r1, r10
- strh r1, [r7, 0x38]
- mov r2, r9
- strh r2, [r7, 0x3A]
- movs r1, 0x36
- ldrsh r0, [r7, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r7, 0x3C]
- ldrb r1, [r7, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r7, 0x5]
- strh r6, [r7, 0x20]
- mov r2, r8
- strh r2, [r7, 0x22]
- ldr r0, _080DE8D4 @ =sub_80DE8D8
- str r0, [r7, 0x1C]
- adds r2, r7, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DE8C8: .4byte gAnimBankTarget
-_080DE8CC: .4byte gAnimBankAttacker
-_080DE8D0: .4byte gBattleAnimArgs
-_080DE8D4: .4byte sub_80DE8D8
- thumb_func_end sub_80DE7B8
-
- thumb_func_start sub_80DE8D8
-sub_80DE8D8: @ 80DE8D8
- push {r4,lr}
- adds r2, r0, 0
- ldrh r3, [r2, 0x36]
- movs r1, 0x36
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _080DE910
- ldrh r0, [r2, 0x32]
- ldrh r4, [r2, 0x2E]
- adds r0, r4
- strh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x34]
- ldrh r4, [r2, 0x30]
- adds r1, r4
- strh r1, [r2, 0x30]
- 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, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bne _080DE910
- strh r0, [r2, 0x2E]
-_080DE910:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80DE8D8
-
- thumb_func_start sub_80DE918
-sub_80DE918: @ 80DE918
- 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
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080DEA68 @ =gTasks
- adds r1, r0
- str r1, [sp]
- ldr r1, _080DEA6C @ =REG_BLDCNT
- movs r2, 0xFD
- lsls r2, 6
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r3, 0x80
- lsls r3, 5
- adds r0, r3, 0
- strh r0, [r1]
- movs r0, 0
- ldr r1, [sp]
- strh r0, [r1, 0x12]
- strh r0, [r1, 0x14]
- strh r0, [r1, 0x16]
- strh r0, [r1, 0x18]
- movs r0, 0x10
- strh r0, [r1, 0x1A]
- ldr r2, _080DEA70 @ =gBattleAnimArgs
- ldrh r0, [r2]
- strh r0, [r1, 0x1C]
- ldr r4, _080DEA74 @ =gAnimBankAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_807A100
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x8]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080DE988
- b _080DEA88
-_080DE988:
- movs r4, 0
-_080DE98A:
- lsls r1, r4, 16
- asrs r3, r1, 16
- ldr r0, _080DEA74 @ =gAnimBankAttacker
- ldrb r2, [r0]
- str r1, [sp, 0x10]
- cmp r3, r2
- beq _080DEA56
- movs r0, 0x2
- eors r2, r0
- cmp r3, r2
- beq _080DEA56
- lsls r0, r4, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080DEA56
- ldr r6, [sp, 0x4]
- ldr r3, [sp, 0x8]
- lsls r0, r3, 16
- asrs r7, r0, 16
- ldr r0, _080DEA78 @ =gSpriteTemplate_83DAF08
- adds r1, r6, 0
- adds r2, r7, 0
- movs r3, 0x37
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x40
- beq _080DEA56
- adds r0, r4, 0
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- adds r0, r4, 0
- movs r1, 0x3
- bl sub_807A100
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- mov r0, r8
- lsls r5, r0, 4
- add r5, r8
- lsls r5, 2
- ldr r1, _080DEA7C @ =gSprites
- adds r4, r5, r1
- lsls r0, r6, 4
- strh r0, [r4, 0x2E]
- lsls r0, r7, 4
- strh r0, [r4, 0x30]
- mov r2, r10
- subs r0, r2, r6
- lsls r0, 4
- ldr r3, _080DEA70 @ =gBattleAnimArgs
- movs r2, 0x2
- ldrsh r1, [r3, r2]
- bl __divsi3
- strh r0, [r4, 0x32]
- mov r3, r9
- lsls r0, r3, 16
- asrs r0, 16
- subs r0, r7
- lsls r0, 4
- ldr r2, _080DEA70 @ =gBattleAnimArgs
- movs r3, 0x2
- ldrsh r1, [r2, r3]
- bl __divsi3
- strh r0, [r4, 0x34]
- ldr r1, _080DEA70 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x36]
- mov r2, r10
- strh r2, [r4, 0x38]
- mov r3, r9
- strh r3, [r4, 0x3A]
- ldr r0, _080DEA80 @ =gSprites + 0x1C
- adds r5, r0
- ldr r0, _080DEA84 @ =sub_80DE8D8
- str r0, [r5]
- ldr r2, [sp]
- movs r3, 0x20
- ldrsh r1, [r2, r3]
- adds r1, 0xD
- lsls r1, 1
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1
- mov r1, r8
- strh r1, [r0]
- ldrh r0, [r2, 0x20]
- adds r0, 0x1
- strh r0, [r2, 0x20]
-_080DEA56:
- ldr r2, [sp, 0x10]
- movs r3, 0x80
- lsls r3, 9
- adds r0, r2, r3
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080DE98A
- b _080DEB0C
- .align 2, 0
-_080DEA68: .4byte gTasks
-_080DEA6C: .4byte REG_BLDCNT
-_080DEA70: .4byte gBattleAnimArgs
-_080DEA74: .4byte gAnimBankAttacker
-_080DEA78: .4byte gSpriteTemplate_83DAF08
-_080DEA7C: .4byte gSprites
-_080DEA80: .4byte gSprites + 0x1C
-_080DEA84: .4byte sub_80DE8D8
-_080DEA88:
- ldr r0, _080DEB24 @ =gSpriteTemplate_83DAF08
- ldr r7, [sp, 0x4]
- ldr r2, [sp, 0x8]
- lsls r1, r2, 16
- asrs r1, 16
- str r1, [sp, 0xC]
- adds r1, r7, 0
- ldr r2, [sp, 0xC]
- movs r3, 0x37
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x40
- beq _080DEB0C
- movs r3, 0x30
- mov r10, r3
- movs r0, 0x28
- mov r9, r0
- ldr r6, _080DEB28 @ =gSprites
- mov r1, r8
- lsls r5, r1, 4
- add r5, r8
- lsls r5, 2
- adds r4, r5, r6
- lsls r0, r7, 4
- strh r0, [r4, 0x2E]
- ldr r2, [sp, 0xC]
- lsls r0, r2, 4
- strh r0, [r4, 0x30]
- subs r0, r3, r7
- lsls r0, 4
- ldr r3, _080DEB2C @ =gBattleAnimArgs
- movs r2, 0x2
- ldrsh r1, [r3, r2]
- bl __divsi3
- strh r0, [r4, 0x32]
- mov r3, r9
- ldr r1, [sp, 0xC]
- subs r0, r3, r1
- lsls r0, 4
- ldr r2, _080DEB2C @ =gBattleAnimArgs
- movs r3, 0x2
- ldrsh r1, [r2, r3]
- bl __divsi3
- strh r0, [r4, 0x34]
- ldr r1, _080DEB2C @ =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x36]
- mov r2, r10
- strh r2, [r4, 0x38]
- mov r3, r9
- strh r3, [r4, 0x3A]
- adds r6, 0x1C
- adds r5, r6
- ldr r0, _080DEB30 @ =sub_80DE8D8
- str r0, [r5]
- mov r1, r8
- ldr r0, [sp]
- strh r1, [r0, 0x22]
- movs r0, 0x1
- ldr r2, [sp]
- strh r0, [r2, 0x20]
-_080DEB0C:
- ldr r0, _080DEB34 @ =sub_80DEB38
- ldr r3, [sp]
- str r0, [r3]
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DEB24: .4byte gSpriteTemplate_83DAF08
-_080DEB28: .4byte gSprites
-_080DEB2C: .4byte gBattleAnimArgs
-_080DEB30: .4byte sub_80DE8D8
-_080DEB34: .4byte sub_80DEB38
- thumb_func_end sub_80DE918
-
- thumb_func_start sub_80DEB38
-sub_80DEB38: @ 80DEB38
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080DEB5C @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _080DEBEE
- cmp r1, 0x1
- bgt _080DEB60
- cmp r1, 0
- beq _080DEB6E
- b _080DECA4
- .align 2, 0
-_080DEB5C: .4byte gTasks
-_080DEB60:
- cmp r1, 0x2
- bne _080DEB66
- b _080DEC80
-_080DEB66:
- cmp r1, 0x3
- bne _080DEB6C
- b _080DEC94
-_080DEB6C:
- b _080DECA4
-_080DEB6E:
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080DEBCE
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080DEBCE
- strh r1, [r4, 0x12]
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- strh r0, [r4, 0x16]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080DEBA4
- ldrh r1, [r4, 0x18]
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080DEBB2
- adds r0, r1, 0x1
- strh r0, [r4, 0x18]
- b _080DEBB2
-_080DEBA4:
- ldrh r1, [r4, 0x1A]
- movs r2, 0x1A
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080DEBB2
- subs r0, r1, 0x1
- strh r0, [r4, 0x1A]
-_080DEBB2:
- ldr r2, _080DEBE0 @ =REG_BLDALPHA
- ldrh r0, [r4, 0x1A]
- lsls r0, 8
- ldrh r1, [r4, 0x18]
- orrs r0, r1
- strh r0, [r2]
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- cmp r0, 0x17
- ble _080DEBCE
- movs r0, 0
- strh r0, [r4, 0x16]
- movs r0, 0x1
- strh r0, [r4, 0x14]
-_080DEBCE:
- ldrh r1, [r4, 0x1C]
- movs r2, 0x1C
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080DEBE4
- subs r0, r1, 0x1
- strh r0, [r4, 0x1C]
- b _080DECA4
- .align 2, 0
-_080DEBE0: .4byte REG_BLDALPHA
-_080DEBE4:
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080DECA4
- b _080DEC8C
-_080DEBEE:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080DECA4
- movs r0, 0
- strh r0, [r4, 0x12]
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- strh r0, [r4, 0x16]
- ands r0, r1
- lsls r0, 16
- cmp r0, 0
- beq _080DEC1E
- ldrh r1, [r4, 0x18]
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080DEC2C
- subs r0, r1, 0x1
- strh r0, [r4, 0x18]
- b _080DEC2C
-_080DEC1E:
- ldrh r1, [r4, 0x1A]
- movs r2, 0x1A
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080DEC2C
- adds r0, r1, 0x1
- strh r0, [r4, 0x1A]
-_080DEC2C:
- ldr r2, _080DEC48 @ =REG_BLDALPHA
- ldrh r0, [r4, 0x1A]
- lsls r0, 8
- ldrh r1, [r4, 0x18]
- orrs r0, r1
- strh r0, [r2]
- ldr r1, [r4, 0x18]
- movs r0, 0x80
- lsls r0, 13
- cmp r1, r0
- bne _080DECA4
- movs r5, 0
- b _080DEC70
- .align 2, 0
-_080DEC48: .4byte REG_BLDALPHA
-_080DEC4C:
- adds r1, r5, 0
- adds r1, 0xD
- lsls r1, 1
- adds r0, r4, 0
- adds r0, 0x8
- adds r0, r1
- movs r2, 0
- ldrsh r1, [r0, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080DEC7C @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_080DEC70:
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- cmp r5, r0
- blt _080DEC4C
- b _080DEC8C
- .align 2, 0
-_080DEC7C: .4byte gSprites
-_080DEC80:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- cmp r0, 0
- ble _080DECA4
-_080DEC8C:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080DECA4
-_080DEC94:
- ldr r0, _080DECAC @ =REG_BLDCNT
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080DECA4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DECAC: .4byte REG_BLDCNT
- thumb_func_end sub_80DEB38
-
- thumb_func_start sub_80DECB0
-sub_80DECB0: @ 80DECB0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _080DECF8 @ =gBattle_WIN0H
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080DECFC @ =gBattle_WIN0V
- strh r1, [r0]
- ldr r1, _080DED00 @ =REG_WININ
- ldr r2, _080DED04 @ =0x00003f3f
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- subs r2, 0x20
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x6
- movs r0, 0xC8
- strh r0, [r1]
- adds r1, 0x4
- movs r0, 0x10
- strh r0, [r1]
- ldr r0, _080DED08 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080DECF4
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080DED0C
-_080DECF4:
- movs r6, 0x28
- b _080DED0E
- .align 2, 0
-_080DECF8: .4byte gBattle_WIN0H
-_080DECFC: .4byte gBattle_WIN0V
-_080DED00: .4byte REG_WININ
-_080DED04: .4byte 0x00003f3f
-_080DED08: .4byte gAnimBankAttacker
-_080DED0C:
- movs r6, 0xC8
-_080DED0E:
- ldr r1, _080DED4C @ =gBattle_WIN0H
- lsls r3, r6, 16
- asrs r2, r3, 16
- lsls r0, r2, 8
- orrs r0, r2
- strh r0, [r1]
- ldr r1, _080DED50 @ =gBattle_WIN0V
- movs r5, 0x28
- ldr r0, _080DED54 @ =0x00002828
- strh r0, [r1]
- lsrs r3, 16
- movs r1, 0xF0
- subs r1, r2
- movs r4, 0x48
- ldr r2, _080DED58 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r2
- strh r3, [r0, 0xA]
- strh r1, [r0, 0xC]
- strh r5, [r0, 0xE]
- strh r4, [r0, 0x10]
- strh r6, [r0, 0x12]
- strh r5, [r0, 0x14]
- ldr r1, _080DED5C @ =sub_80DED60
- str r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DED4C: .4byte gBattle_WIN0H
-_080DED50: .4byte gBattle_WIN0V
-_080DED54: .4byte 0x00002828
-_080DED58: .4byte gTasks
-_080DED5C: .4byte sub_80DED60
- thumb_func_end sub_80DECB0
-
- thumb_func_start sub_80DED60
-sub_80DED60: @ 80DED60
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080DEE80 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r1, [r4, 0x8]
- adds r0, r1, 0x1
- strh r0, [r4, 0x8]
- ldrh r5, [r4, 0xA]
- ldrh r7, [r4, 0xC]
- ldrh r0, [r4, 0xE]
- mov r10, r0
- ldrh r2, [r4, 0x10]
- str r2, [sp, 0xC]
- ldrh r0, [r4, 0x12]
- ldrh r2, [r4, 0x14]
- mov r8, r2
- lsls r1, 16
- asrs r6, r1, 16
- cmp r6, 0xF
- ble _080DED9C
- b _080DEE8C
-_080DED9C:
- lsls r0, 16
- asrs r0, 16
- bl __floatsidf
- str r0, [sp, 0x10]
- str r1, [sp, 0x14]
- lsls r0, r5, 16
- asrs r0, 16
- bl __floatsidf
- ldr r2, _080DEE84 @ =0x3fb00000
- ldr r3, _080DEE88 @ =0x00000000
- bl __muldf3
- adds r5, r1, 0
- adds r4, r0, 0
- adds r0, r6, 0
- bl __floatsidf
- str r0, [sp, 0x18]
- str r1, [sp, 0x1C]
- adds r1, r5, 0
- adds r0, r4, 0
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- bl __muldf3
- adds r3, r1, 0
- adds r2, r0, 0
- ldr r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- bl __subdf3
- bl __fixunsdfsi
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- lsls r0, r7, 16
- asrs r0, 16
- bl __floatsidf
- ldr r2, _080DEE84 @ =0x3fb00000
- ldr r3, _080DEE88 @ =0x00000000
- bl __muldf3
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- bl __muldf3
- adds r3, r1, 0
- adds r2, r0, 0
- ldr r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- bl __adddf3
- bl __fixunsdfsi
- lsls r0, 16
- lsrs r7, r0, 16
- mov r1, r8
- lsls r0, r1, 16
- asrs r0, 16
- bl __floatsidf
- adds r5, r1, 0
- adds r4, r0, 0
- mov r2, r10
- lsls r0, r2, 16
- asrs r0, 16
- bl __floatsidf
- ldr r2, _080DEE84 @ =0x3fb00000
- ldr r3, _080DEE88 @ =0x00000000
- bl __muldf3
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- bl __muldf3
- adds r3, r1, 0
- adds r2, r0, 0
- adds r1, r5, 0
- adds r0, r4, 0
- bl __subdf3
- bl __fixunsdfsi
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r1, [sp, 0xC]
- lsls r0, r1, 16
- asrs r0, 16
- bl __floatsidf
- ldr r2, _080DEE84 @ =0x3fb00000
- ldr r3, _080DEE88 @ =0x00000000
- bl __muldf3
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- bl __muldf3
- adds r3, r1, 0
- adds r2, r0, 0
- adds r1, r5, 0
- adds r0, r4, 0
- bl __adddf3
- bl __fixunsdfsi
- lsls r0, 16
- lsrs r5, r0, 16
- b _080DEEBA
- .align 2, 0
-_080DEE80: .4byte gTasks
-_080DEE84: .4byte 0x3fb00000
-_080DEE88: .4byte 0x00000000
-_080DEE8C:
- movs r2, 0
- mov r9, r2
- movs r7, 0xF0
- movs r6, 0
- movs r5, 0x70
- str r6, [sp]
- str r6, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r3, 0
- bl sub_80791A8
- lsls r0, 16
- lsrs r0, 16
- str r6, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _080DEEDC @ =sub_80DEEE8
- str r0, [r4]
-_080DEEBA:
- ldr r1, _080DEEE0 @ =gBattle_WIN0H
- mov r2, r9
- lsls r0, r2, 8
- orrs r7, r0
- strh r7, [r1]
- ldr r1, _080DEEE4 @ =gBattle_WIN0V
- lsls r0, r6, 8
- orrs r5, r0
- strh r5, [r1]
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DEEDC: .4byte sub_80DEEE8
-_080DEEE0: .4byte gBattle_WIN0H
-_080DEEE4: .4byte gBattle_WIN0V
- thumb_func_end sub_80DED60
-
- thumb_func_start sub_80DEEE8
-sub_80DEEE8: @ 80DEEE8
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, _080DEF28 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _080DEF20
- ldr r0, _080DEF2C @ =gBattle_WIN0H
- strh r2, [r0]
- ldr r0, _080DEF30 @ =gBattle_WIN0V
- strh r2, [r0]
- ldr r0, _080DEF34 @ =REG_WININ
- ldr r4, _080DEF38 @ =0x00003f3f
- adds r1, r4, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x6
- strh r2, [r0]
- adds r0, 0x4
- strh r2, [r0]
- adds r0, r3, 0
- bl DestroyAnimVisualTask
-_080DEF20:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DEF28: .4byte gPaletteFade
-_080DEF2C: .4byte gBattle_WIN0H
-_080DEF30: .4byte gBattle_WIN0V
-_080DEF34: .4byte REG_WININ
-_080DEF38: .4byte 0x00003f3f
- thumb_func_end sub_80DEEE8
-
- thumb_func_start sub_80DEF3C
-sub_80DEF3C: @ 80DEF3C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r0, _080DEF68 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080DEF70
- movs r2, 0x18
- ldr r3, _080DEF6C @ =0x0000fffe
- ldrb r0, [r4, 0x3]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r0
- movs r0, 0x10
- orrs r1, r0
- strb r1, [r4, 0x3]
- b _080DEF74
- .align 2, 0
-_080DEF68: .4byte gAnimBankAttacker
-_080DEF6C: .4byte 0x0000fffe
-_080DEF70:
- ldr r2, _080DEF90 @ =0x0000ffe8
- movs r3, 0x2
-_080DEF74:
- lsls r0, r2, 16
- asrs r0, 16
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- strh r3, [r4, 0x30]
- movs r0, 0x3C
- strh r0, [r4, 0x2E]
- ldr r0, _080DEF94 @ =sub_80DEF98
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DEF90: .4byte 0x0000ffe8
-_080DEF94: .4byte sub_80DEF98
- thumb_func_end sub_80DEF3C
-
- thumb_func_start sub_80DEF98
-sub_80DEF98: @ 80DEF98
- push {r4,lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r3, r2]
- cmp r0, 0
- ble _080DEFAA
- subs r0, r1, 0x1
- b _080DF00E
-_080DEFAA:
- ldrh r0, [r3, 0x30]
- ldrh r4, [r3, 0x24]
- adds r1, r0, r4
- strh r1, [r3, 0x24]
- adds r0, r1, 0x7
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xE
- bls _080DF010
- ldrh r0, [r3, 0x20]
- adds r0, r1
- strh r0, [r3, 0x20]
- movs r0, 0
- strh r0, [r3, 0x24]
- ldrh r2, [r3, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x8
- ldr r4, _080DEFFC @ =0x000003ff
- adds r0, r4, 0
- ands r1, r0
- ldr r0, _080DF000 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r3, 0x4]
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- strh r0, [r3, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080DF00C
- movs r0, 0x1E
- strh r0, [r3, 0x2E]
- ldr r0, _080DF004 @ =WaitAnimForDuration
- str r0, [r3, 0x1C]
- ldr r1, _080DF008 @ =sub_80DF018
- adds r0, r3, 0
- bl StoreSpriteCallbackInData
- b _080DF010
- .align 2, 0
-_080DEFFC: .4byte 0x000003ff
-_080DF000: .4byte 0xfffffc00
-_080DF004: .4byte WaitAnimForDuration
-_080DF008: .4byte sub_80DF018
-_080DF00C:
- movs r0, 0x28
-_080DF00E:
- strh r0, [r3, 0x2E]
-_080DF010:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80DEF98
-
- thumb_func_start sub_80DF018
-sub_80DF018: @ 80DF018
- push {r4,lr}
- adds r3, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r3, r0]
- cmp r2, 0
- bne _080DF044
- ldr r1, _080DF040 @ =REG_BLDCNT
- movs r4, 0xFD
- lsls r4, 6
- adds r0, r4, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x10
- strh r0, [r1]
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- strh r2, [r3, 0x30]
- strh r2, [r3, 0x32]
- b _080DF082
- .align 2, 0
-_080DF040: .4byte REG_BLDCNT
-_080DF044:
- ldrh r1, [r3, 0x30]
- movs r2, 0x30
- ldrsh r0, [r3, r2]
- cmp r0, 0x1
- bgt _080DF054
- adds r0, r1, 0x1
- strh r0, [r3, 0x30]
- b _080DF082
-_080DF054:
- movs r0, 0
- strh r0, [r3, 0x30]
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- strh r0, [r3, 0x32]
- ldr r2, _080DF088 @ =REG_BLDALPHA
- movs r1, 0x10
- subs r1, r0
- lsls r0, 8
- orrs r1, r0
- strh r1, [r2]
- movs r4, 0x32
- ldrsh r0, [r3, r4]
- cmp r0, 0x10
- bne _080DF082
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080DF08C @ =sub_80DF090
- str r0, [r3, 0x1C]
-_080DF082:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF088: .4byte REG_BLDALPHA
-_080DF08C: .4byte sub_80DF090
- thumb_func_end sub_80DF018
-
- thumb_func_start sub_80DF090
-sub_80DF090: @ 80DF090
- push {lr}
- ldr r1, _080DF0AC @ =REG_BLDCNT
- movs r2, 0
- strh r2, [r1]
- adds r1, 0x2
- strh r2, [r1]
- ldr r1, _080DF0B0 @ =gBattle_WIN0H
- strh r2, [r1]
- ldr r1, _080DF0B4 @ =gBattle_WIN0V
- strh r2, [r1]
- bl DestroyAnimSprite
- pop {r0}
- bx r0
- .align 2, 0
-_080DF0AC: .4byte REG_BLDCNT
-_080DF0B0: .4byte gBattle_WIN0H
-_080DF0B4: .4byte gBattle_WIN0V
- thumb_func_end sub_80DF090
-
- thumb_func_start sub_80DF0B8
-sub_80DF0B8: @ 80DF0B8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0xC
- bl Sin
- strh r0, [r4, 0x24]
- ldr r0, _080DF120 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080DF0DC
- ldrh r0, [r4, 0x24]
- negs r0, r0
- strh r0, [r4, 0x24]
-_080DF0DC:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x6
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- ldrh r1, [r4, 0x30]
- adds r0, r1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- negs r0, r0
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _080DF12C
- ldr r0, _080DF124 @ =0x0000050b
- strh r0, [r4, 0x3A]
- ldr r1, _080DF128 @ =REG_BLDCNT
- movs r2, 0xFD
- lsls r2, 6
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r4, 0x3A]
- strh r0, [r1]
- b _080DF17E
- .align 2, 0
-_080DF120: .4byte gAnimBankAttacker
-_080DF124: .4byte 0x0000050b
-_080DF128: .4byte REG_BLDCNT
-_080DF12C:
- cmp r0, 0x1E
- ble _080DF17E
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- ldrh r1, [r4, 0x3A]
- lsls r0, r1, 16
- asrs r0, 24
- lsls r0, 16
- movs r2, 0xFF
- ands r2, r1
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- lsrs r3, r0, 16
- cmp r3, 0x10
- bls _080DF150
- movs r3, 0x10
-_080DF150:
- subs r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r0, 0
- bge _080DF15C
- movs r2, 0
-_080DF15C:
- ldr r1, _080DF184 @ =REG_BLDALPHA
- lsls r0, r3, 8
- orrs r0, r2
- strh r0, [r1]
- strh r0, [r4, 0x3A]
- cmp r3, 0x10
- bne _080DF17E
- cmp r2, 0
- bne _080DF17E
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080DF188 @ =sub_80DF18C
- str r0, [r4, 0x1C]
-_080DF17E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF184: .4byte REG_BLDALPHA
-_080DF188: .4byte sub_80DF18C
- thumb_func_end sub_80DF0B8
-
- thumb_func_start sub_80DF18C
-sub_80DF18C: @ 80DF18C
- push {lr}
- ldr r1, _080DF1A0 @ =REG_BLDCNT
- movs r2, 0
- strh r2, [r1]
- adds r1, 0x2
- strh r2, [r1]
- bl DestroyAnimSprite
- pop {r0}
- bx r0
- .align 2, 0
-_080DF1A0: .4byte REG_BLDCNT
- thumb_func_end sub_80DF18C
-
- thumb_func_start sub_80DF1A4
-sub_80DF1A4: @ 80DF1A4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080DF23C @ =gTasks
- adds r4, r0
- movs r6, 0
- strh r6, [r4, 0x8]
- movs r0, 0x10
- mov r8, r0
- mov r2, r8
- strh r2, [r4, 0xA]
- ldr r5, _080DF240 @ =gAnimBankAttacker
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1A]
- ldrb r0, [r5]
- bl sub_8077FC0
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1C]
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_807A100
- lsls r0, 16
- asrs r1, r0, 16
- lsrs r0, 31
- adds r1, r0
- asrs r1, 1
- adds r1, 0x8
- strh r1, [r4, 0x1E]
- strh r6, [r4, 0x16]
- ldrb r0, [r5]
- bl sub_8079ED4
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x12]
- ldrb r0, [r5]
- bl sub_8079E90
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x2
- strh r0, [r4, 0x14]
- strh r6, [r4, 0xE]
- mov r0, r8
- strh r0, [r4, 0x10]
- ldr r1, _080DF244 @ =REG_BLDCNT
- movs r2, 0xFD
- lsls r2, 6
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r2, 0x80
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- strh r6, [r4, 0x18]
- ldr r0, _080DF248 @ =sub_80DF24C
- str r0, [r4]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF23C: .4byte gTasks
-_080DF240: .4byte gAnimBankAttacker
-_080DF244: .4byte REG_BLDCNT
-_080DF248: .4byte sub_80DF24C
- thumb_func_end sub_80DF1A4
-
- thumb_func_start sub_80DF24C
-sub_80DF24C: @ 80DF24C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, _080DF270 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bls _080DF266
- b _080DF3CC
-_080DF266:
- lsls r0, 2
- ldr r1, _080DF274 @ =_080DF278
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080DF270: .4byte gTasks
-_080DF274: .4byte _080DF278
- .align 2, 0
-_080DF278:
- .4byte _080DF290
- .4byte _080DF300
- .4byte _080DF342
- .4byte _080DF356
- .4byte _080DF3AC
- .4byte _080DF3BC
-_080DF290:
- movs r6, 0
-_080DF292:
- movs r2, 0x1A
- ldrsh r1, [r4, r2]
- movs r0, 0x1C
- ldrsh r2, [r4, r0]
- ldrb r3, [r4, 0x14]
- ldr r0, _080DF2F4 @ =gSpriteTemplate_83DAF80
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _080DF2E6
- ldr r1, _080DF2F8 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r5, r0, r1
- strh r7, [r5, 0x2E]
- ldr r0, _080DF2FC @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- movs r1, 0
- lsls r0, 24
- cmp r0, 0
- bne _080DF2C8
- movs r1, 0x1
-_080DF2C8:
- strh r1, [r5, 0x30]
- movs r0, 0x2A
- muls r0, r6
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x32]
- ldrh r0, [r4, 0x1E]
- strh r0, [r5, 0x34]
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 1
- strh r0, [r5, 0x38]
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- strh r0, [r4, 0x16]
-_080DF2E6:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x5
- bls _080DF292
- b _080DF3B4
- .align 2, 0
-_080DF2F4: .4byte gSpriteTemplate_83DAF80
-_080DF2F8: .4byte gSprites
-_080DF2FC: .4byte gAnimBankAttacker
-_080DF300:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080DF31E
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0xD
- bgt _080DF32C
- adds r0, r1, 0x1
- strh r0, [r4, 0xE]
- b _080DF32C
-_080DF31E:
- ldrh r1, [r4, 0x10]
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r0, 0x4
- ble _080DF32C
- subs r0, r1, 0x1
- strh r0, [r4, 0x10]
-_080DF32C:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- ldrh r3, [r4, 0xE]
- ldrh r2, [r4, 0x10]
- cmp r0, 0xE
- bne _080DF39C
- cmp r2, 0x4
- bne _080DF39C
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080DF396
-_080DF342:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1E
- ble _080DF3CC
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080DF3B4
-_080DF356:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080DF374
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080DF382
- subs r0, r1, 0x1
- strh r0, [r4, 0xE]
- b _080DF382
-_080DF374:
- ldrh r1, [r4, 0x10]
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080DF382
- adds r0, r1, 0x1
- strh r0, [r4, 0x10]
-_080DF382:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- ldrh r3, [r4, 0xE]
- ldrh r2, [r4, 0x10]
- cmp r0, 0
- bne _080DF39C
- cmp r2, 0x10
- bne _080DF39C
- movs r0, 0x1
- strh r0, [r4, 0x18]
-_080DF396:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080DF39C:
- ldr r1, _080DF3A8 @ =REG_BLDALPHA
- lsls r0, r2, 8
- orrs r0, r3
- strh r0, [r1]
- b _080DF3CC
- .align 2, 0
-_080DF3A8: .4byte REG_BLDALPHA
-_080DF3AC:
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080DF3CC
-_080DF3B4:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080DF3CC
-_080DF3BC:
- ldr r0, _080DF3D4 @ =REG_BLDCNT
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_080DF3CC:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF3D4: .4byte REG_BLDCNT
- thumb_func_end sub_80DF24C
-
- thumb_func_start sub_80DF3D8
-sub_80DF3D8: @ 80DF3D8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080DF3EA
- ldrh r0, [r4, 0x32]
- adds r0, 0x2
- b _080DF3EE
-_080DF3EA:
- ldrh r0, [r4, 0x32]
- subs r0, 0x2
-_080DF3EE:
- strh r0, [r4, 0x32]
- ldrh r1, [r4, 0x32]
- movs r0, 0xFF
- ands r0, r1
- strh r0, [r4, 0x32]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x32]
- subs r0, 0x41
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x7E
- bhi _080DF430
- ldr r2, _080DF42C @ =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0x12]
- adds r1, 0x1
- movs r0, 0x3
- ands r1, r0
- b _080DF444
- .align 2, 0
-_080DF42C: .4byte gTasks
-_080DF430:
- ldr r2, _080DF498 @ =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r2, 0x3
- ldrb r1, [r0, 0x12]
- ands r1, r2
-_080DF444:
- lsls r1, 2
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- lsls r0, 3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3A]
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- movs r1, 0x7
- bl Sin
- strh r0, [r4, 0x26]
- ldr r2, _080DF498 @ =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r1, r0, r2
- movs r2, 0x18
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _080DF492
- ldrh r0, [r1, 0x16]
- subs r0, 0x1
- strh r0, [r1, 0x16]
- adds r0, r4, 0
- bl DestroySprite
-_080DF492:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF498: .4byte gTasks
- thumb_func_end sub_80DF3D8
-
- thumb_func_start sub_80DF49C
-sub_80DF49C: @ 80DF49C
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r3]
- ldr r2, _080DF4E0 @ =gBankSpriteIds
- ldr r1, _080DF4E4 @ =gAnimBankAttacker
- ldrb r1, [r1]
- adds r1, r2
- ldrb r1, [r1]
- strh r1, [r0, 0x38]
- movs r1, 0x80
- strh r1, [r0, 0x2E]
- movs r1, 0xA
- strh r1, [r0, 0x30]
- ldr r2, _080DF4E8 @ =gBattleAnimArgs
- ldrh r1, [r2]
- strh r1, [r0, 0x32]
- ldrh r1, [r2, 0x2]
- strh r1, [r0, 0x34]
- ldr r1, _080DF4EC @ =sub_80DF4F4
- str r1, [r0, 0x1C]
- ldr r2, _080DF4F0 @ =gSprites
- movs r3, 0x38
- ldrsh r1, [r0, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- bx lr
- .align 2, 0
-_080DF4E0: .4byte gBankSpriteIds
-_080DF4E4: .4byte gAnimBankAttacker
-_080DF4E8: .4byte gBattleAnimArgs
-_080DF4EC: .4byte sub_80DF4F4
-_080DF4F0: .4byte gSprites
- thumb_func_end sub_80DF49C
-
- thumb_func_start sub_80DF4F4
-sub_80DF4F4: @ 80DF4F4
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x34]
- movs r1, 0x34
- ldrsh r3, [r5, r1]
- cmp r3, 0
- beq _080DF55C
- subs r0, 0x1
- strh r0, [r5, 0x34]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- bl Sin
- ldr r4, _080DF554 @ =gSprites
- movs r1, 0x38
- ldrsh r2, [r5, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- strh r0, [r1, 0x24]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- bl Cos
- movs r1, 0x38
- ldrsh r2, [r5, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- strh r0, [r1, 0x26]
- ldrh r0, [r5, 0x32]
- ldrh r2, [r5, 0x2E]
- adds r1, r0, r2
- strh r1, [r5, 0x2E]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _080DF590
- ldr r2, _080DF558 @ =0xffffff00
- adds r0, r1, r2
- strh r0, [r5, 0x2E]
- b _080DF590
- .align 2, 0
-_080DF554: .4byte gSprites
-_080DF558: .4byte 0xffffff00
-_080DF55C:
- ldr r2, _080DF598 @ =gSprites
- movs r0, 0x38
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x24]
- movs r0, 0x38
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x26]
- movs r0, 0x38
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- subs r1, 0x8
- strh r1, [r0, 0x22]
- ldr r0, _080DF59C @ =move_anim_8074EE0
- str r0, [r5, 0x1C]
-_080DF590:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF598: .4byte gSprites
-_080DF59C: .4byte move_anim_8074EE0
- thumb_func_end sub_80DF4F4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/normal.s b/asm/normal.s
deleted file mode 100644
index 55aae48fd..000000000
--- a/asm/normal.s
+++ /dev/null
@@ -1,5030 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "include/macros.inc"
-
- .syntax unified
-
- .text
-
- @ normal
-
- thumb_func_start sub_80E1CB4
-sub_80E1CB4: @ 80E1CB4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080E1CEC @ =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]
- ldr r0, _080E1CF0 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _080E1CF4
- ldrh r0, [r5, 0x6]
- negs r0, r0
- strh r0, [r4, 0x30]
- movs r0, 0x1
- strh r0, [r4, 0x36]
- b _080E1D02
- .align 2, 0
-_080E1CEC: .4byte gBattleAnimArgs
-_080E1CF0: .4byte gAnimBankAttacker
-_080E1CF4:
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x30]
- strh r1, [r4, 0x36]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_080E1D02:
- ldr r0, _080E1D18 @ =gBattleAnimArgs
- ldrh r0, [r0, 0x8]
- strh r0, [r4, 0x34]
- ldr r1, _080E1D1C @ =sub_80E1D20
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E1D18: .4byte gBattleAnimArgs
-_080E1D1C: .4byte sub_80E1D20
- thumb_func_end sub_80E1CB4
-
- thumb_func_start sub_80E1D20
-sub_80E1D20: @ 80E1D20
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x1E
- bl Cos
- strh r0, [r4, 0x24]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- movs r1, 0xA
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- cmp r0, 0x7F
- bhi _080E1D52
- ldrb r0, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r4, 0x5]
- b _080E1D5A
-_080E1D52:
- ldrb r0, [r4, 0x5]
- movs r1, 0xC
- orrs r0, r1
- strb r0, [r4, 0x5]
-_080E1D5A:
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x2E]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- 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 _080E1D7E
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080E1D7E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80E1D20
-
- thumb_func_start sub_80E1D84
-sub_80E1D84: @ 80E1D84
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r4, _080E1DBC @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r4, r1]
- bl sub_80E1DC4
- movs r1, 0x2
- ldrsb r1, [r4, r1]
- ldrb r2, [r4, 0x4]
- ldrb r3, [r4, 0x6]
- ldrh r4, [r4, 0x8]
- str r4, [sp]
- bl BeginNormalPaletteFade
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080E1DC0 @ =sub_80E1E0C
- str r0, [r5, 0x1C]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E1DBC: .4byte gBattleAnimArgs
-_080E1DC0: .4byte sub_80E1E0C
- thumb_func_end sub_80E1D84
-
- thumb_func_start sub_80E1DC4
-sub_80E1DC4: @ 80E1DC4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0xC
- lsls r0, 16
- lsrs r0, 16
- movs r4, 0x1
- mov r8, r0
- mov r1, r8
- ands r1, r4
- mov r8, r1
- lsls r0, 16
- asrs r1, r0, 17
- ands r1, r4
- asrs r2, r0, 18
- ands r2, r4
- asrs r3, r0, 19
- ands r3, r4
- asrs r6, r0, 20
- ands r6, r4
- asrs r5, r0, 21
- ands r5, r4
- asrs r0, 22
- ands r0, r4
- str r6, [sp]
- str r5, [sp, 0x4]
- str r0, [sp, 0x8]
- mov r0, r8
- bl sub_80791A8
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80E1DC4
-
- thumb_func_start sub_80E1E0C
-sub_80E1E0C: @ 80E1E0C
- push {lr}
- adds r2, r0, 0
- ldr r0, _080E1E28 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080E1E22
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080E1E22:
- pop {r0}
- bx r0
- .align 2, 0
-_080E1E28: .4byte gPaletteFade
- thumb_func_end sub_80E1E0C
-
- thumb_func_start sub_80E1E2C
-sub_80E1E2C: @ 80E1E2C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080E1E78 @ =gBattleAnimArgs
- ldrh r0, [r4, 0x2]
- strh r0, [r5, 0x2E]
- strh r0, [r5, 0x30]
- ldrh r0, [r4, 0x4]
- strh r0, [r5, 0x32]
- ldrh r0, [r4, 0x6]
- strh r0, [r5, 0x34]
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x36]
- ldrh r0, [r4, 0xA]
- strh r0, [r5, 0x38]
- ldrh r0, [r4, 0xC]
- strh r0, [r5, 0x3A]
- ldrh r0, [r4]
- strh r0, [r5, 0x3C]
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- bl sub_80E1DC4
- ldrb r1, [r4, 0x8]
- ldrh r2, [r4, 0x6]
- bl BlendPalettes
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080E1E7C @ =sub_80E1E80
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E1E78: .4byte gBattleAnimArgs
-_080E1E7C: .4byte sub_80E1E80
- thumb_func_end sub_80E1E2C
-
- thumb_func_start sub_80E1E80
-sub_80E1E80: @ 80E1E80
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080E1E94
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
- b _080E1F04
-_080E1E94:
- ldr r0, _080E1EB0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080E1F04
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080E1EB8
- ldr r0, _080E1EB4 @ =sub_80E1F0C
- str r0, [r4, 0x1C]
- b _080E1F04
- .align 2, 0
-_080E1EB0: .4byte gPaletteFade
-_080E1EB4: .4byte sub_80E1F0C
-_080E1EB8:
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- bl sub_80E1DC4
- adds r3, r0, 0
- ldrh r1, [r4, 0x30]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080E1EDE
- ldrh r1, [r4, 0x36]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x34]
- adds r0, r3, 0
- bl BlendPalettes
- b _080E1EEC
-_080E1EDE:
- ldrh r1, [r4, 0x3A]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x38]
- adds r0, r3, 0
- bl BlendPalettes
-_080E1EEC:
- ldrh r0, [r4, 0x30]
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2, 0
- eors r0, r1
- strh r0, [r4, 0x30]
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x32]
- subs r0, 0x1
- strh r0, [r4, 0x32]
-_080E1F04:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80E1E80
-
- thumb_func_start sub_80E1F0C
-sub_80E1F0C: @ 80E1F0C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080E1F38 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080E1F32
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- bl sub_80E1DC4
- movs r1, 0
- movs r2, 0
- bl BlendPalettes
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080E1F32:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E1F38: .4byte gPaletteFade
- thumb_func_end sub_80E1F0C
-
- thumb_func_start sub_80E1F3C
-sub_80E1F3C: @ 80E1F3C
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _080E1F80 @ =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- movs r2, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- strh r2, [r4, 0x2E]
- movs r0, 0xA
- strh r0, [r4, 0x30]
- movs r0, 0x8
- strh r0, [r4, 0x32]
- movs r0, 0x28
- strh r0, [r4, 0x34]
- movs r0, 0x70
- strh r0, [r4, 0x36]
- strh r2, [r4, 0x38]
- ldr r1, _080E1F84 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- ldr r1, _080E1F88 @ =sub_8078174
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E1F80: .4byte gBattleAnimArgs
-_080E1F84: .4byte move_anim_8074EE0
-_080E1F88: .4byte sub_8078174
- thumb_func_end sub_80E1F3C
-
- thumb_func_start sub_80E1F8C
-sub_80E1F8C: @ 80E1F8C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080E1FD0 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldr r3, _080E1FD4 @ =gBattleAnimArgs
- ldrh r1, [r3]
- movs r5, 0
- strh r1, [r4, 0x8]
- ldrh r1, [r3, 0x2]
- strh r1, [r4, 0xA]
- ldrh r1, [r3, 0x4]
- strh r1, [r4, 0xC]
- ldrh r1, [r3, 0x6]
- strh r1, [r4, 0xE]
- ldrh r2, [r3, 0x8]
- strh r2, [r4, 0x10]
- ldrh r1, [r3, 0xA]
- strh r1, [r4, 0x12]
- strh r5, [r4, 0x18]
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0
- bl sub_80E1FDC
- ldr r0, _080E1FD8 @ =sub_80E202C
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E1FD0: .4byte gTasks
-_080E1FD4: .4byte gBattleAnimArgs
-_080E1FD8: .4byte sub_80E202C
- thumb_func_end sub_80E1F8C
-
- thumb_func_start sub_80E1FDC
-sub_80E1FDC: @ 80E1FDC
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r1, _080E2028 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- bl sub_80E1DC4
- movs r1, 0xA
- ldrsb r1, [r4, r1]
- ldrh r2, [r4, 0x12]
- str r2, [sp]
- adds r2, r5, 0
- adds r3, r6, 0
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0xC]
- subs r0, 0x1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x18]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x18]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E2028: .4byte gTasks
- thumb_func_end sub_80E1FDC
-
- thumb_func_start sub_80E202C
-sub_80E202C: @ 80E202C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- adds r4, r3, 0
- ldr r0, _080E2064 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080E208E
- ldr r1, _080E2068 @ =gTasks
- lsls r2, r3, 2
- adds r0, r2, r3
- lsls r0, 3
- adds r3, r0, r1
- movs r5, 0xC
- ldrsh r0, [r3, r5]
- adds r6, r1, 0
- adds r5, r2, 0
- cmp r0, 0
- ble _080E2088
- movs r1, 0x18
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _080E206C
- ldrb r1, [r3, 0xE]
- ldrb r2, [r3, 0x10]
- b _080E2070
- .align 2, 0
-_080E2064: .4byte gPaletteFade
-_080E2068: .4byte gTasks
-_080E206C:
- ldrb r1, [r3, 0x10]
- ldrb r2, [r3, 0xE]
-_080E2070:
- adds r0, r5, r4
- lsls r0, 3
- adds r0, r6
- movs r3, 0xC
- ldrsh r0, [r0, r3]
- cmp r0, 0x1
- bne _080E2080
- movs r2, 0
-_080E2080:
- adds r0, r4, 0
- bl sub_80E1FDC
- b _080E208E
-_080E2088:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080E208E:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80E202C
-
- thumb_func_start sub_80E2094
-sub_80E2094: @ 80E2094
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080E20D8 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldr r3, _080E20DC @ =gBattleAnimArgs
- ldrh r1, [r3]
- movs r5, 0
- strh r1, [r4, 0x8]
- ldrh r1, [r3, 0x2]
- strh r1, [r4, 0xA]
- ldrh r1, [r3, 0x4]
- strh r1, [r4, 0xC]
- ldrh r1, [r3, 0x6]
- strh r1, [r4, 0xE]
- ldrh r2, [r3, 0x8]
- strh r2, [r4, 0x10]
- ldrh r1, [r3, 0xA]
- strh r1, [r4, 0x12]
- strh r5, [r4, 0x18]
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0
- bl sub_80E20E4
- ldr r0, _080E20E0 @ =sub_80E2140
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E20D8: .4byte gTasks
-_080E20DC: .4byte gBattleAnimArgs
-_080E20E0: .4byte sub_80E2140
- thumb_func_end sub_80E2094
-
- thumb_func_start sub_80E20E4
-sub_80E20E4: @ 80E20E4
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r1, _080E213C @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldrh r0, [r4, 0x8]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r2, 0x1
- lsls r2, r0
- movs r1, 0xA
- ldrsb r1, [r4, r1]
- ldrh r0, [r4, 0x12]
- str r0, [sp]
- adds r0, r2, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0xC]
- subs r0, 0x1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x18]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x18]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E213C: .4byte gTasks
- thumb_func_end sub_80E20E4
-
- thumb_func_start sub_80E2140
-sub_80E2140: @ 80E2140
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- adds r4, r3, 0
- ldr r0, _080E2178 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080E21A2
- ldr r1, _080E217C @ =gTasks
- lsls r2, r3, 2
- adds r0, r2, r3
- lsls r0, 3
- adds r3, r0, r1
- movs r5, 0xC
- ldrsh r0, [r3, r5]
- adds r6, r1, 0
- adds r5, r2, 0
- cmp r0, 0
- ble _080E219C
- movs r1, 0x18
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _080E2180
- ldrb r1, [r3, 0xE]
- ldrb r2, [r3, 0x10]
- b _080E2184
- .align 2, 0
-_080E2178: .4byte gPaletteFade
-_080E217C: .4byte gTasks
-_080E2180:
- ldrb r1, [r3, 0x10]
- ldrb r2, [r3, 0xE]
-_080E2184:
- adds r0, r5, r4
- lsls r0, 3
- adds r0, r6
- movs r3, 0xC
- ldrsh r0, [r0, r3]
- cmp r0, 0x1
- bne _080E2194
- movs r2, 0
-_080E2194:
- adds r0, r4, 0
- bl sub_80E20E4
- b _080E21A2
-_080E219C:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080E21A2:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80E2140
-
- thumb_func_start sub_80E21A8
-sub_80E21A8: @ 80E21A8
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080E2208 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldr r5, _080E220C @ =gBattleAnimArgs
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x8]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0xA]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0xC]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0xE]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x10]
- ldrh r0, [r5, 0xA]
- strh r0, [r4, 0x12]
- ldrh r0, [r5, 0xC]
- strh r0, [r4, 0x14]
- ldrh r0, [r5]
- strh r0, [r4, 0x16]
- ldrh r0, [r5]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r1, 0x1
- lsls r1, r0
- ldrb r3, [r5, 0x8]
- ldrh r0, [r5, 0x6]
- str r0, [sp]
- adds r0, r1, 0
- movs r1, 0
- adds r2, r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _080E2210 @ =sub_80E2214
- str r0, [r4]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E2208: .4byte gTasks
-_080E220C: .4byte gBattleAnimArgs
-_080E2210: .4byte sub_80E2214
- thumb_func_end sub_80E21A8
-
- thumb_func_start sub_80E2214
-sub_80E2214: @ 80E2214
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080E2238 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0x8]
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080E223C
- subs r0, r1, 0x1
- strh r0, [r4, 0x8]
- b _080E22C0
- .align 2, 0
-_080E2238: .4byte gTasks
-_080E223C:
- ldr r0, _080E2258 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080E22C0
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bne _080E2260
- ldr r0, _080E225C @ =sub_80E22CC
- str r0, [r4]
- b _080E22C0
- .align 2, 0
-_080E2258: .4byte gPaletteFade
-_080E225C: .4byte sub_80E22CC
-_080E2260:
- ldrh r0, [r4, 0x16]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r2, 0x1
- lsls r2, r0
- ldrh r1, [r4, 0xA]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080E228E
- ldrb r3, [r4, 0x10]
- ldrh r0, [r4, 0xE]
- str r0, [sp]
- adds r0, r2, 0
- movs r1, 0
- adds r2, r3, 0
- bl BeginNormalPaletteFade
- b _080E229E
-_080E228E:
- ldrb r3, [r4, 0x14]
- ldrh r0, [r4, 0x12]
- str r0, [sp]
- adds r0, r2, 0
- movs r1, 0
- adds r2, r3, 0
- bl BeginNormalPaletteFade
-_080E229E:
- ldr r0, _080E22C8 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0xA]
- movs r3, 0x80
- lsls r3, 1
- adds r2, r3, 0
- eors r0, r2
- strh r0, [r1, 0xA]
- movs r2, 0xFF
- ands r0, r2
- strh r0, [r1, 0x8]
- ldrh r0, [r1, 0xC]
- subs r0, 0x1
- strh r0, [r1, 0xC]
-_080E22C0:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E22C8: .4byte gTasks
- thumb_func_end sub_80E2214
-
- thumb_func_start sub_80E22CC
-sub_80E22CC: @ 80E22CC
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080E231C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080E2312
- ldr r1, _080E2320 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrh r0, [r0, 0x16]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r1, 0x1
- lsls r1, r0
- str r5, [sp]
- adds r0, r1, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl BeginNormalPaletteFade
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080E2312:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E231C: .4byte gPaletteFade
-_080E2320: .4byte gTasks
- thumb_func_end sub_80E22CC
-
- thumb_func_start sub_80E2324
-sub_80E2324: @ 80E2324
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r2, 0
- ldr r0, _080E239C @ =gAnimBankAttacker
- ldrb r6, [r0]
- ldr r0, _080E23A0 @ =gAnimBankTarget
- ldrb r7, [r0]
- ldr r4, _080E23A4 @ =gBattleAnimArgs
- ldrh r1, [r4]
- movs r5, 0x80
- lsls r5, 1
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _080E235E
- str r2, [sp]
- str r2, [sp, 0x4]
- str r2, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r3, 0
- bl sub_80791A8
- adds r2, r0, 0
-_080E235E:
- ldrh r1, [r4, 0x2]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _080E2370
- movs r0, 0x80
- lsls r0, 9
- lsls r0, r6
- orrs r2, r0
-_080E2370:
- ldrh r1, [r4, 0x4]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _080E2382
- movs r0, 0x80
- lsls r0, 9
- lsls r0, r7
- orrs r2, r0
-_080E2382:
- adds r0, r2, 0
- bl InvertPlttBuffer
- mov r0, r8
- bl DestroyAnimVisualTask
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E239C: .4byte gAnimBankAttacker
-_080E23A0: .4byte gAnimBankTarget
-_080E23A4: .4byte gBattleAnimArgs
- thumb_func_end sub_80E2324
-
- thumb_func_start unref_sub_80E23A8
-unref_sub_80E23A8: @ 80E23A8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r5, 0
- ldr r1, _080E249C @ =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080E23EA
- ldr r1, _080E24A0 @ =gBattleAnimArgs
- ldrh r0, [r1]
- strh r0, [r4, 0xC]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0xE]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x10]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0xA]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x12]
- ldrh r0, [r1, 0xA]
- strh r0, [r4, 0x14]
- ldrh r0, [r1, 0xC]
- strh r0, [r4, 0x16]
-_080E23EA:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- ldr r0, _080E24A4 @ =gAnimBankAttacker
- ldrb r0, [r0]
- mov r9, r0
- ldr r0, _080E24A8 @ =gAnimBankTarget
- ldrb r0, [r0]
- mov r10, r0
- ldrh r1, [r4, 0xC]
- movs r7, 0x80
- lsls r7, 1
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _080E240C
- ldr r5, _080E24AC @ =0x0000ffff
-_080E240C:
- movs r6, 0x1
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _080E243C
- ldr r2, _080E24B0 @ =gSprites
- ldr r0, _080E24B4 @ =gHealthboxIDs
- add r0, r9
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x14
- adds r0, r2
- ldr r0, [r0]
- ldrh r0, [r0, 0x2]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r1, r6, 0
- lsls r1, r0
- lsls r1, 16
- orrs r5, r1
-_080E243C:
- ldrh r1, [r4, 0xE]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _080E2450
- adds r0, r6, 0
- mov r2, r9
- lsls r0, r2
- lsls r0, 16
- orrs r5, r0
-_080E2450:
- ldrh r1, [r4, 0x10]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _080E2464
- adds r0, r6, 0
- mov r1, r10
- lsls r0, r1
- lsls r0, 16
- orrs r5, r0
-_080E2464:
- movs r1, 0x12
- ldrsb r1, [r4, r1]
- movs r2, 0x14
- ldrsb r2, [r4, r2]
- movs r3, 0x16
- ldrsb r3, [r4, r3]
- adds r0, r5, 0
- bl TintPlttBuffer
- movs r2, 0x8
- ldrsh r1, [r4, r2]
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080E248E
- adds r0, r5, 0
- bl UnfadePlttBuffer
- mov r0, r8
- bl DestroyAnimVisualTask
-_080E248E:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E249C: .4byte gTasks
-_080E24A0: .4byte gBattleAnimArgs
-_080E24A4: .4byte gAnimBankAttacker
-_080E24A8: .4byte gAnimBankTarget
-_080E24AC: .4byte 0x0000ffff
-_080E24B0: .4byte gSprites
-_080E24B4: .4byte gHealthboxIDs
- thumb_func_end unref_sub_80E23A8
-
- thumb_func_start sub_80E24B8
-sub_80E24B8: @ 80E24B8
- push {r4,lr}
- adds r4, r0, 0
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _080E24EC @ =gBattleAnimArgs
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x30]
- strh r0, [r4, 0x32]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x34]
- movs r2, 0x6
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- beq _080E2500
- cmp r0, 0x1
- bgt _080E24F0
- cmp r0, 0
- beq _080E24F6
- b _080E2518
- .align 2, 0
-_080E24EC: .4byte gBattleAnimArgs
-_080E24F0:
- cmp r0, 0x2
- beq _080E2508
- b _080E2518
-_080E24F6:
- ldr r1, _080E24FC @ =gBattle_BG3_X
- b _080E250A
- .align 2, 0
-_080E24FC: .4byte gBattle_BG3_X
-_080E2500:
- ldr r1, _080E2504 @ =gBattle_BG3_Y
- b _080E250A
- .align 2, 0
-_080E2504: .4byte gBattle_BG3_Y
-_080E2508:
- ldr r1, _080E2514 @ =gSpriteCoordOffsetX
-_080E250A:
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- b _080E2520
- .align 2, 0
-_080E2514: .4byte gSpriteCoordOffsetX
-_080E2518:
- ldr r1, _080E2550 @ =gSpriteCoordOffsetY
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
-_080E2520:
- movs r0, 0x3A
- ldrsh r1, [r4, r0]
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- lsls r0, 16
- orrs r1, r0
- ldr r0, [r1]
- strh r0, [r4, 0x36]
- ldr r0, _080E2554 @ =gBattleAnimArgs
- ldrh r0, [r0, 0x6]
- strh r0, [r4, 0x38]
- subs r0, 0x2
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _080E2544
- bl sub_80E260C
-_080E2544:
- ldr r0, _080E2558 @ =sub_80E255C
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E2550: .4byte gSpriteCoordOffsetY
-_080E2554: .4byte gBattleAnimArgs
-_080E2558: .4byte sub_80E255C
- thumb_func_end sub_80E24B8
-
- thumb_func_start sub_80E255C
-sub_80E255C: @ 80E255C
- push {r4-r7,lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x34]
- movs r2, 0x34
- ldrsh r0, [r3, r2]
- cmp r0, 0
- ble _080E25A0
- subs r0, r1, 0x1
- strh r0, [r3, 0x34]
- ldrh r1, [r3, 0x30]
- movs r2, 0x30
- ldrsh r0, [r3, r2]
- cmp r0, 0
- ble _080E257E
- subs r0, r1, 0x1
- strh r0, [r3, 0x30]
- b _080E25FA
-_080E257E:
- ldrh r0, [r3, 0x32]
- strh r0, [r3, 0x30]
- movs r0, 0x3A
- ldrsh r1, [r3, r0]
- movs r2, 0x3C
- ldrsh r0, [r3, r2]
- lsls r0, 16
- orrs r1, r0
- movs r0, 0x2E
- ldrsh r2, [r3, r0]
- ldr r0, [r1]
- adds r0, r2
- str r0, [r1]
- ldrh r0, [r3, 0x2E]
- negs r0, r0
- strh r0, [r3, 0x2E]
- b _080E25FA
-_080E25A0:
- movs r2, 0x3A
- ldrsh r1, [r3, r2]
- movs r2, 0x3C
- ldrsh r0, [r3, r2]
- lsls r0, 16
- orrs r1, r0
- movs r2, 0x36
- ldrsh r0, [r3, r2]
- str r0, [r1]
- ldrh r0, [r3, 0x38]
- subs r0, 0x2
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _080E25F4
- movs r4, 0
- ldr r5, _080E2600 @ =gBattlersCount
- ldrb r0, [r5]
- cmp r4, r0
- bcs _080E25F4
- ldr r2, _080E2604 @ =gSprites
- mov r12, r2
- ldr r6, _080E2608 @ =gBankSpriteIds
- movs r7, 0x3
- negs r7, r7
-_080E25D2:
- adds r0, r4, r6
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r12
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r7, 0
- ands r0, r2
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r5]
- cmp r4, r0
- bcc _080E25D2
-_080E25F4:
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080E25FA:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E2600: .4byte gBattlersCount
-_080E2604: .4byte gSprites
-_080E2608: .4byte gBankSpriteIds
- thumb_func_end sub_80E255C
-
- thumb_func_start sub_80E260C
-sub_80E260C: @ 80E260C
- push {r4-r6,lr}
- ldr r6, _080E2680 @ =gSprites
- ldr r4, _080E2684 @ =gBankSpriteIds
- ldr r5, _080E2688 @ =gAnimBankAttacker
- ldrb r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x3
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- ldr r3, _080E268C @ =gAnimBankTarget
- ldrb r0, [r3]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- ldr r0, _080E2690 @ =gBattleAnimArgs
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0x2
- bne _080E2694
- ldrb r0, [r5]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0]
- ldrb r0, [r3]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- b _080E26B0
- .align 2, 0
-_080E2680: .4byte gSprites
-_080E2684: .4byte gBankSpriteIds
-_080E2688: .4byte gAnimBankAttacker
-_080E268C: .4byte gAnimBankTarget
-_080E2690: .4byte gBattleAnimArgs
-_080E2694:
- cmp r0, 0
- bne _080E269C
- ldrb r0, [r5]
- b _080E269E
-_080E269C:
- ldrb r0, [r3]
-_080E269E:
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x2
-_080E26B0:
- orrs r1, r2
- strb r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80E260C
-
- thumb_func_start sub_80E26BC
-sub_80E26BC: @ 80E26BC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080E26FC @ =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r2, r1
- ldr r3, _080E2700 @ =gBattleAnimArgs
- ldrh r1, [r3]
- strh r1, [r2, 0x8]
- ldrh r1, [r3, 0x2]
- strh r1, [r2, 0xA]
- ldrh r1, [r3, 0x4]
- strh r1, [r2, 0xC]
- ldrh r1, [r3, 0x6]
- strh r1, [r2, 0xE]
- ldrh r1, [r3, 0x6]
- strh r1, [r2, 0x18]
- ldr r4, _080E2704 @ =gBattle_BG3_X
- ldrh r1, [r3]
- strh r1, [r4]
- ldr r4, _080E2708 @ =gBattle_BG3_Y
- ldrh r1, [r3, 0x2]
- strh r1, [r4]
- ldr r1, _080E270C @ =sub_80E2710
- str r1, [r2]
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E26FC: .4byte gTasks
-_080E2700: .4byte gBattleAnimArgs
-_080E2704: .4byte gBattle_BG3_X
-_080E2708: .4byte gBattle_BG3_Y
-_080E270C: .4byte sub_80E2710
- thumb_func_end sub_80E26BC
-
- thumb_func_start sub_80E2710
-sub_80E2710: @ 80E2710
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080E2740 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r3, r0, r1
- ldrh r2, [r3, 0xE]
- movs r4, 0xE
- ldrsh r0, [r3, r4]
- mov r12, r1
- cmp r0, 0
- bne _080E2796
- ldr r0, _080E2744 @ =gBattle_BG3_X
- ldrh r2, [r0]
- movs r7, 0x8
- ldrsh r1, [r3, r7]
- adds r6, r0, 0
- cmp r2, r1
- bne _080E2748
- ldrh r0, [r3, 0x8]
- negs r0, r0
- b _080E274A
- .align 2, 0
-_080E2740: .4byte gTasks
-_080E2744: .4byte gBattle_BG3_X
-_080E2748:
- ldrh r0, [r3, 0x8]
-_080E274A:
- strh r0, [r6]
- ldr r2, _080E2768 @ =gBattle_BG3_Y
- ldrh r3, [r2]
- lsls r1, r5, 2
- adds r0, r1, r5
- lsls r0, 3
- mov r7, r12
- adds r4, r0, r7
- movs r7, 0xA
- ldrsh r0, [r4, r7]
- cmn r3, r0
- bne _080E276C
- movs r0, 0
- b _080E2770
- .align 2, 0
-_080E2768: .4byte gBattle_BG3_Y
-_080E276C:
- ldrh r0, [r4, 0xA]
- negs r0, r0
-_080E2770:
- strh r0, [r2]
- adds r0, r1, r5
- lsls r0, 3
- add r0, r12
- ldrh r1, [r0, 0x18]
- strh r1, [r0, 0xE]
- ldrh r1, [r0, 0xC]
- subs r1, 0x1
- strh r1, [r0, 0xC]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0
- bne _080E279A
- strh r1, [r6]
- strh r1, [r2]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- b _080E279A
-_080E2796:
- subs r0, r2, 0x1
- strh r0, [r3, 0xE]
-_080E279A:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80E2710
-
- thumb_func_start sub_80E27A0
-sub_80E27A0: @ 80E27A0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080E27C0 @ =gBattleAnimArgs
- ldrb r1, [r4, 0x6]
- bl StartSpriteAffineAnim
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080E27C4
- adds r0, r5, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- b _080E27CC
- .align 2, 0
-_080E27C0: .4byte gBattleAnimArgs
-_080E27C4:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8078764
-_080E27CC:
- ldr r0, _080E27E0 @ =sub_80785E4
- str r0, [r5, 0x1C]
- ldr r1, _080E27E4 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E27E0: .4byte sub_80785E4
-_080E27E4: .4byte DestroyAnimSprite
- thumb_func_end sub_80E27A0
-
- thumb_func_start sub_80E27E8
-sub_80E27E8: @ 80E27E8
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080E2808 @ =gBattleAnimArgs
- ldrb r1, [r4, 0x6]
- bl StartSpriteAffineAnim
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080E280C
- adds r0, r5, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- b _080E2814
- .align 2, 0
-_080E2808: .4byte gBattleAnimArgs
-_080E280C:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8078764
-_080E2814:
- ldr r0, _080E282C @ =gBattleAnimArgs
- ldrh r0, [r0, 0x8]
- strh r0, [r5, 0x2E]
- ldr r0, _080E2830 @ =sub_80785E4
- str r0, [r5, 0x1C]
- ldr r1, _080E2834 @ =sub_80DA48C
- adds r0, r5, 0
- bl StoreSpriteCallbackInData
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E282C: .4byte gBattleAnimArgs
-_080E2830: .4byte sub_80785E4
-_080E2834: .4byte sub_80DA48C
- thumb_func_end sub_80E27E8
-
- thumb_func_start sub_80E2838
-sub_80E2838: @ 80E2838
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080E2868 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080E285C
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080E285C
- ldr r1, _080E286C @ =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
-_080E285C:
- adds r0, r4, 0
- bl sub_80E27A0
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E2868: .4byte gAnimBankAttacker
-_080E286C: .4byte gBattleAnimArgs
- thumb_func_end sub_80E2838
-
- thumb_func_start sub_80E2870
-sub_80E2870: @ 80E2870
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080E28A8 @ =gBattleAnimArgs
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _080E288C
- bl Random
- movs r1, 0x3
- ands r1, r0
- strh r1, [r5, 0x2]
-_080E288C:
- ldrb r1, [r5, 0x2]
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080E28AC
- adds r0, r4, 0
- movs r1, 0
- bl InitAnimSpritePos
- b _080E28B4
- .align 2, 0
-_080E28A8: .4byte gBattleAnimArgs
-_080E28AC:
- adds r0, r4, 0
- movs r1, 0
- bl sub_8078764
-_080E28B4:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x30
- bl __umodsi3
- ldr r1, _080E28F8 @ =0x0000ffe8
- adds r0, r1
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x18
- bl __umodsi3
- ldr r1, _080E28FC @ =0x0000fff4
- adds r0, r1
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldr r1, _080E2900 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- ldr r0, _080E2904 @ =sub_80785E4
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E28F8: .4byte 0x0000ffe8
-_080E28FC: .4byte 0x0000fff4
-_080E2900: .4byte move_anim_8074EE0
-_080E2904: .4byte sub_80785E4
- thumb_func_end sub_80E2870
-
- thumb_func_start sub_80E2908
-sub_80E2908: @ 80E2908
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080E2968 @ =gBattleAnimArgs
- ldrb r0, [r5]
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x2E]
- ldr r2, _080E296C @ =gSprites
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x24]
- ldrh r0, [r0, 0x20]
- adds r1, r0
- strh r1, [r4, 0x20]
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r1, r0
- strh r1, [r4, 0x22]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x24]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x26]
- ldrb r1, [r5, 0x6]
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- ldr r1, _080E2970 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- ldr r0, _080E2974 @ =sub_80785E4
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E2968: .4byte gBattleAnimArgs
-_080E296C: .4byte gSprites
-_080E2970: .4byte move_anim_8074EE0
-_080E2974: .4byte sub_80785E4
- thumb_func_end sub_80E2908
-
- thumb_func_start sub_80E2978
-sub_80E2978: @ 80E2978
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080E2990 @ =gBattleAnimArgs
- movs r1, 0x4
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080E2994
- adds r0, r4, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- b _080E299C
- .align 2, 0
-_080E2990: .4byte gBattleAnimArgs
-_080E2994:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8078764
-_080E299C:
- ldr r0, _080E29B4 @ =gBattleAnimArgs
- ldrh r0, [r0, 0x6]
- strh r0, [r4, 0x2E]
- ldr r1, _080E29B8 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- ldr r0, _080E29BC @ =WaitAnimForDuration
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E29B4: .4byte gBattleAnimArgs
-_080E29B8: .4byte DestroyAnimSprite
-_080E29BC: .4byte WaitAnimForDuration
- thumb_func_end sub_80E2978
-
- thumb_func_start sub_80E29C0
-sub_80E29C0: @ 80E29C0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080E29E0 @ =gBattleAnimArgs
- ldrb r1, [r4, 0x6]
- bl StartSpriteAffineAnim
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080E29E4
- adds r0, r5, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- b _080E29EC
- .align 2, 0
-_080E29E0: .4byte gBattleAnimArgs
-_080E29E4:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8078764
-_080E29EC:
- ldr r0, _080E29F8 @ =sub_80E29FC
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E29F8: .4byte sub_80E29FC
- thumb_func_end sub_80E29C0
-
- thumb_func_start sub_80E29FC
-sub_80E29FC: @ 80E29FC
- push {lr}
- adds r3, r0, 0
- 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, 0x2E]
- adds r1, r0, 0x1
- strh r1, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- ble _080E2A32
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080E2A32:
- pop {r0}
- bx r0
- thumb_func_end sub_80E29FC
-
- thumb_func_start sub_80E2A38
-sub_80E2A38: @ 80E2A38
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r4, _080E2A78 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r4, r1]
- bl sub_80E1DC4
- adds r6, r0, 0
- ldrh r3, [r4]
- lsls r3, 16
- asrs r0, r3, 23
- movs r4, 0x1
- ands r0, r4
- asrs r1, r3, 24
- ands r1, r4
- asrs r2, r3, 25
- ands r2, r4
- asrs r3, 26
- ands r3, r4
- bl sub_80792C0
- orrs r6, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_80E2C8C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E2A78: .4byte gBattleAnimArgs
- thumb_func_end sub_80E2A38
-
- thumb_func_start sub_80E2A7C
-sub_80E2A7C: @ 80E2A7C
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- mov r1, sp
- movs r0, 0xFF
- strb r0, [r1, 0x1]
- movs r0, 0x1
- bl sub_80E1DC4
- adds r5, r0, 0
- ldr r0, _080E2AA8 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x7
- bhi _080E2B26
- lsls r0, 2
- ldr r1, _080E2AAC @ =_080E2AB0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E2AA8: .4byte gBattleAnimArgs
-_080E2AAC: .4byte _080E2AB0
- .align 2, 0
-_080E2AB0:
- .4byte _080E2AD2
- .4byte _080E2ADE
- .4byte _080E2AD0
- .4byte _080E2ADC
- .4byte _080E2AEC
- .4byte _080E2B04
- .4byte _080E2B0C
- .4byte _080E2B18
-_080E2AD0:
- movs r5, 0
-_080E2AD2:
- mov r0, sp
- ldr r1, _080E2AD8 @ =gAnimBankAttacker
- b _080E2AE2
- .align 2, 0
-_080E2AD8: .4byte gAnimBankAttacker
-_080E2ADC:
- movs r5, 0
-_080E2ADE:
- mov r0, sp
- ldr r1, _080E2AE8 @ =gAnimBankTarget
-_080E2AE2:
- ldrb r1, [r1]
- strb r1, [r0]
- b _080E2B26
- .align 2, 0
-_080E2AE8: .4byte gAnimBankTarget
-_080E2AEC:
- mov r1, sp
- ldr r0, _080E2AFC @ =gAnimBankAttacker
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, _080E2B00 @ =gAnimBankTarget
- ldrb r0, [r0]
- strb r0, [r1, 0x1]
- b _080E2B26
- .align 2, 0
-_080E2AFC: .4byte gAnimBankAttacker
-_080E2B00: .4byte gAnimBankTarget
-_080E2B04:
- mov r1, sp
- movs r0, 0xFF
- strb r0, [r1]
- b _080E2B26
-_080E2B0C:
- movs r5, 0
- mov r2, sp
- ldr r0, _080E2B14 @ =gAnimBankAttacker
- b _080E2B1E
- .align 2, 0
-_080E2B14: .4byte gAnimBankAttacker
-_080E2B18:
- movs r5, 0
- mov r2, sp
- ldr r0, _080E2B70 @ =gAnimBankTarget
-_080E2B1E:
- ldrb r0, [r0]
- movs r1, 0x2
- eors r0, r1
- strb r0, [r2]
-_080E2B26:
- movs r4, 0
- mov r6, sp
-_080E2B2A:
- ldrb r0, [r6]
- cmp r4, r0
- beq _080E2B54
- ldrb r0, [r6, 0x1]
- cmp r4, r0
- beq _080E2B54
- adds r0, r4, 0
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080E2B54
- adds r0, r4, 0
- bl sub_80793A8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x80
- lsls r1, 9
- lsls r1, r0
- orrs r5, r1
-_080E2B54:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080E2B2A
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_80E2C8C
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E2B70: .4byte gAnimBankTarget
- thumb_func_end sub_80E2A7C
-
- thumb_func_start sub_80E2B74
-sub_80E2B74: @ 80E2B74
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080E2B98 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- bl sub_80E1DC4
- adds r2, r0, 0
- ldr r0, _080E2B9C @ =gBattleTerrain
- ldrb r0, [r0]
- cmp r0, 0x9
- bhi _080E2C4A
- lsls r0, 2
- ldr r1, _080E2BA0 @ =_080E2BA4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E2B98: .4byte gBattleAnimArgs
-_080E2B9C: .4byte gBattleTerrain
-_080E2BA0: .4byte _080E2BA4
- .align 2, 0
-_080E2BA4:
- .4byte _080E2BCC
- .4byte _080E2BDC
- .4byte _080E2BE8
- .4byte _080E2BF8
- .4byte _080E2C04
- .4byte _080E2C14
- .4byte _080E2C24
- .4byte _080E2C34
- .4byte _080E2C44
- .4byte _080E2C44
-_080E2BCC:
- ldr r1, _080E2BD4 @ =gBattleAnimArgs
- ldr r0, _080E2BD8 @ =0x00000b0c
- b _080E2C48
- .align 2, 0
-_080E2BD4: .4byte gBattleAnimArgs
-_080E2BD8: .4byte 0x00000b0c
-_080E2BDC:
- ldr r1, _080E2BE4 @ =gBattleAnimArgs
- movs r0, 0x9E
- lsls r0, 4
- b _080E2C48
- .align 2, 0
-_080E2BE4: .4byte gBattleAnimArgs
-_080E2BE8:
- ldr r1, _080E2BF0 @ =gBattleAnimArgs
- ldr r0, _080E2BF4 @ =0x00002f1e
- b _080E2C48
- .align 2, 0
-_080E2BF0: .4byte gBattleAnimArgs
-_080E2BF4: .4byte 0x00002f1e
-_080E2BF8:
- ldr r1, _080E2C00 @ =gBattleAnimArgs
- movs r0, 0x90
- lsls r0, 7
- b _080E2C48
- .align 2, 0
-_080E2C00: .4byte gBattleAnimArgs
-_080E2C04:
- ldr r1, _080E2C0C @ =gBattleAnimArgs
- ldr r0, _080E2C10 @ =0x00007ecb
- b _080E2C48
- .align 2, 0
-_080E2C0C: .4byte gBattleAnimArgs
-_080E2C10: .4byte 0x00007ecb
-_080E2C14:
- ldr r1, _080E2C1C @ =gBattleAnimArgs
- ldr r0, _080E2C20 @ =0x00007ecb
- b _080E2C48
- .align 2, 0
-_080E2C1C: .4byte gBattleAnimArgs
-_080E2C20: .4byte 0x00007ecb
-_080E2C24:
- ldr r1, _080E2C2C @ =gBattleAnimArgs
- ldr r0, _080E2C30 @ =0x00002a16
- b _080E2C48
- .align 2, 0
-_080E2C2C: .4byte gBattleAnimArgs
-_080E2C30: .4byte 0x00002a16
-_080E2C34:
- ldr r1, _080E2C3C @ =gBattleAnimArgs
- ldr r0, _080E2C40 @ =0x00000d2e
- b _080E2C48
- .align 2, 0
-_080E2C3C: .4byte gBattleAnimArgs
-_080E2C40: .4byte 0x00000d2e
-_080E2C44:
- ldr r1, _080E2C58 @ =gBattleAnimArgs
- ldr r0, _080E2C5C @ =0x00007fff
-_080E2C48:
- strh r0, [r1, 0x8]
-_080E2C4A:
- adds r0, r4, 0
- adds r1, r2, 0
- bl sub_80E2C8C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E2C58: .4byte gBattleAnimArgs
-_080E2C5C: .4byte 0x00007fff
- thumb_func_end sub_80E2B74
-
- thumb_func_start sub_80E2C60
-sub_80E2C60: @ 80E2C60
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080E2C88 @ =gBattleAnimArgs
- ldrh r0, [r0]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r1, 0x1
- lsls r1, r0
- adds r0, r4, 0
- bl sub_80E2C8C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E2C88: .4byte gBattleAnimArgs
- thumb_func_end sub_80E2C60
-
- thumb_func_start sub_80E2C8C
-sub_80E2C8C: @ 80E2C8C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080E2CC4 @ =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r2, r3
- strh r1, [r2, 0x8]
- lsrs r1, 16
- strh r1, [r2, 0xA]
- ldr r3, _080E2CC8 @ =gBattleAnimArgs
- ldrh r1, [r3, 0x2]
- strh r1, [r2, 0xC]
- ldrh r1, [r3, 0x4]
- strh r1, [r2, 0xE]
- ldrh r1, [r3, 0x6]
- strh r1, [r2, 0x10]
- ldrh r1, [r3, 0x8]
- strh r1, [r2, 0x12]
- ldrh r1, [r3, 0x4]
- strh r1, [r2, 0x1C]
- ldr r1, _080E2CCC @ =sub_80E2CD0
- str r1, [r2]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_080E2CC4: .4byte gTasks
-_080E2CC8: .4byte gBattleAnimArgs
-_080E2CCC: .4byte sub_80E2CD0
- thumb_func_end sub_80E2C8C
-
- thumb_func_start sub_80E2CD0
-sub_80E2CD0: @ 80E2CD0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r6, 0
- ldr r2, _080E2D50 @ =gTasks
- lsls r5, r7, 2
- adds r0, r5, r7
- lsls r0, 3
- adds r3, r0, r2
- ldrh r0, [r3, 0x1A]
- mov r8, r0
- movs r4, 0x1A
- ldrsh r1, [r3, r4]
- movs r4, 0xC
- ldrsh r0, [r3, r4]
- mov r9, r2
- cmp r1, r0
- bne _080E2D66
- strh r6, [r3, 0x1A]
- movs r0, 0x8
- ldrsh r4, [r3, r0]
- movs r1, 0xA
- ldrsh r0, [r3, r1]
- lsls r0, 16
- orrs r4, r0
- mov r8, r5
- cmp r4, 0
- beq _080E2D32
- adds r5, r3, 0
-_080E2D10:
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _080E2D24
- ldrb r2, [r5, 0x1C]
- ldrh r3, [r5, 0x12]
- adds r0, r6, 0
- movs r1, 0x10
- bl BlendPalette
-_080E2D24:
- adds r0, r6, 0
- adds r0, 0x10
- lsls r0, 16
- lsrs r6, r0, 16
- lsrs r4, 1
- cmp r4, 0
- bne _080E2D10
-_080E2D32:
- mov r4, r8
- adds r0, r4, r7
- lsls r0, 3
- mov r1, r9
- adds r2, r0, r1
- ldrh r0, [r2, 0x1C]
- movs r4, 0x1C
- ldrsh r3, [r2, r4]
- movs r4, 0x10
- ldrsh r1, [r2, r4]
- cmp r3, r1
- bge _080E2D54
- adds r0, 0x1
- strh r0, [r2, 0x1C]
- b _080E2D6C
- .align 2, 0
-_080E2D50: .4byte gTasks
-_080E2D54:
- cmp r3, r1
- ble _080E2D5E
- subs r0, 0x1
- strh r0, [r2, 0x1C]
- b _080E2D6C
-_080E2D5E:
- adds r0, r7, 0
- bl DestroyAnimVisualTask
- b _080E2D6C
-_080E2D66:
- mov r0, r8
- adds r0, 0x1
- strh r0, [r3, 0x1A]
-_080E2D6C:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80E2CD0
-
- thumb_func_start sub_80E2D78
-sub_80E2D78: @ 80E2D78
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r4, _080E2DAC @ =gBattleAnimArgs
- ldrb r0, [r4]
- ldrb r1, [r4, 0x2]
- ldrb r2, [r4, 0x4]
- ldrb r3, [r4, 0x6]
- ldrb r4, [r4, 0x8]
- str r4, [sp]
- bl BeginHardwarePaletteFade
- ldr r1, _080E2DB0 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _080E2DB4 @ =sub_80E2DB8
- str r1, [r0]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E2DAC: .4byte gBattleAnimArgs
-_080E2DB0: .4byte gTasks
-_080E2DB4: .4byte sub_80E2DB8
- thumb_func_end sub_80E2D78
-
- thumb_func_start sub_80E2DB8
-sub_80E2DB8: @ 80E2DB8
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080E2DD4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080E2DD0
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080E2DD0:
- pop {r0}
- bx r0
- .align 2, 0
-_080E2DD4: .4byte gPaletteFade
- thumb_func_end sub_80E2DB8
-
- thumb_func_start sub_80E2DD8
-sub_80E2DD8: @ 80E2DD8
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080E2E04 @ =gTasks
- adds r1, r0
- ldr r2, _080E2E08 @ =gBattleAnimArgs
- ldrh r0, [r2]
- movs r3, 0
- strh r0, [r1, 0x8]
- strh r3, [r1, 0xA]
- ldrh r0, [r2, 0x2]
- strh r0, [r1, 0xC]
- ldrh r0, [r2, 0x4]
- strh r0, [r1, 0xE]
- ldrh r0, [r2, 0x6]
- strh r0, [r1, 0x10]
- strh r3, [r1, 0x12]
- ldr r0, _080E2E0C @ =sub_80E2E10
- str r0, [r1]
- bx lr
- .align 2, 0
-_080E2E04: .4byte gTasks
-_080E2E08: .4byte gBattleAnimArgs
-_080E2E0C: .4byte sub_80E2E10
- thumb_func_end sub_80E2DD8
-
- thumb_func_start sub_80E2E10
-sub_80E2E10: @ 80E2E10
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r2, r5, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080E2E3C @ =gTasks
- adds r4, r0, r1
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080E2ED4
- ldrh r1, [r4, 0xA]
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080E2E40
- subs r0, r1, 0x1
- strh r0, [r4, 0xA]
- b _080E2EE2
- .align 2, 0
-_080E2E3C: .4byte gTasks
-_080E2E40:
- ldrb r0, [r4, 0x8]
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- strh r0, [r4, 0x14]
- lsls r0, 16
- cmp r0, 0
- blt _080E2EBE
- ldr r6, _080E2ECC @ =gSprites
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r3, r1, r6
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- movs r2, 0x2
- cmp r0, 0
- beq _080E2E68
- movs r2, 0x1
-_080E2E68:
- lsls r2, 2
- ldrb r1, [r3, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x5]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrh r1, [r4, 0xE]
- strh r1, [r0, 0x2E]
- movs r2, 0x14
- ldrsh r1, [r4, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r5, [r0, 0x30]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x5
- strh r1, [r0, 0x32]
- movs r2, 0x14
- ldrsh r1, [r4, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r6, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _080E2ED0 @ =sub_80E2EE8
- str r1, [r0]
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
-_080E2EBE:
- ldrh r0, [r4, 0x10]
- subs r0, 0x1
- strh r0, [r4, 0x10]
- ldrh r0, [r4, 0xC]
- strh r0, [r4, 0xA]
- b _080E2EE2
- .align 2, 0
-_080E2ECC: .4byte gSprites
-_080E2ED0: .4byte sub_80E2EE8
-_080E2ED4:
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080E2EE2
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080E2EE2:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80E2E10
-
- thumb_func_start sub_80E2EE8
-sub_80E2EE8: @ 80E2EE8
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080E2EFC
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
- b _080E2F20
-_080E2EFC:
- ldr r3, _080E2F28 @ =gTasks
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x30
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl obj_delete_but_dont_free_vram
-_080E2F20:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E2F28: .4byte gTasks
- thumb_func_end sub_80E2EE8
-
- thumb_func_start sub_80E2F2C
-sub_80E2F2C: @ 80E2F2C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r7, 0
- ldr r0, _080E3038 @ =gBattle_WIN0H
- strh r7, [r0]
- ldr r0, _080E303C @ =gBattle_WIN0V
- strh r7, [r0]
- ldr r1, _080E3040 @ =REG_WININ
- ldr r2, _080E3044 @ =0x00003f3f
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r3, _080E3048 @ =0x00003f3d
- adds r0, r3, 0
- strh r0, [r1]
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- movs r3, 0x80
- lsls r3, 8
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r2]
- ldr r1, _080E304C @ =REG_BLDCNT
- ldr r2, _080E3050 @ =0x00003f42
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r3, _080E3054 @ =0x00000c08
- adds r0, r3, 0
- strh r0, [r1]
- ldr r4, _080E3058 @ =REG_BG1CNT
- ldrb r1, [r4]
- movs r0, 0x4
- negs r0, r0
- mov r8, r0
- ands r0, r1
- strb r0, [r4]
- ldrb r1, [r4, 0x1]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r4, 0x1]
- ldrb r0, [r4, 0x1]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r4, 0x1]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080E2FAC
- ldrb r0, [r4]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r4]
-_080E2FAC:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _080E3028
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080E3028
- ldr r5, _080E305C @ =gAnimBankAttacker
- ldrb r0, [r5]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _080E2FDC
- ldrb r0, [r5]
- bl GetBattlerPosition
- lsls r0, 24
- cmp r0, 0
- bne _080E3028
-_080E2FDC:
- ldrb r0, [r5]
- movs r6, 0x2
- eors r0, r6
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080E3028
- ldr r3, _080E3060 @ =gSprites
- ldr r1, _080E3064 @ =gBankSpriteIds
- ldrb r0, [r5]
- eors r0, r6
- adds r0, r1
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- ldrb r3, [r2, 0x5]
- lsls r1, r3, 28
- lsrs r1, 30
- subs r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldrb r1, [r4]
- mov r0, r8
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r4]
- movs r7, 0x1
-_080E3028:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080E306C
- ldr r0, _080E3068 @ =gSharedMem + 0x19348
- ldrh r4, [r0]
- b _080E30B4
- .align 2, 0
-_080E3038: .4byte gBattle_WIN0H
-_080E303C: .4byte gBattle_WIN0V
-_080E3040: .4byte REG_WININ
-_080E3044: .4byte 0x00003f3f
-_080E3048: .4byte 0x00003f3d
-_080E304C: .4byte REG_BLDCNT
-_080E3050: .4byte 0x00003f42
-_080E3054: .4byte 0x00000c08
-_080E3058: .4byte REG_BG1CNT
-_080E305C: .4byte gAnimBankAttacker
-_080E3060: .4byte gSprites
-_080E3064: .4byte gBankSpriteIds
-_080E3068: .4byte gSharedMem + 0x19348
-_080E306C:
- ldr r4, _080E308C @ =gAnimBankAttacker
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080E3098
- ldr r1, _080E3090 @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080E3094 @ =gEnemyParty
- b _080E30A8
- .align 2, 0
-_080E308C: .4byte gAnimBankAttacker
-_080E3090: .4byte gBattlerPartyIndexes
-_080E3094: .4byte gEnemyParty
-_080E3098:
- ldr r1, _080E3160 @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080E3164 @ =gPlayerParty
-_080E30A8:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
-_080E30B4:
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080E3168 @ =gAnimBankAttacker
- ldrb r0, [r0]
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_807A4A0
- lsls r0, 24
- lsrs r4, r0, 24
- mov r0, sp
- bl sub_8078914
- ldr r1, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0xC]
- ldr r2, _080E316C @ =0x040000d4
- add r0, sp, 0xC
- str r0, [r2]
- str r1, [r2, 0x4]
- ldr r0, _080E3170 @ =0x85000400
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- ldr r0, _080E3174 @ =gUnknown_08D20A30
- bl LZDecompressVram
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080E3106
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_80763FC
-_080E3106:
- ldr r0, _080E3178 @ =gUnknown_08D20A14
- ldr r1, [sp]
- bl LZDecompressVram
- ldr r0, _080E317C @ =gUnknown_083DB568
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- adds r1, 0x1
- movs r2, 0x2
- bl LoadPalette
- ldr r2, _080E3180 @ =gBattle_BG1_X
- ldr r0, _080E3184 @ =gSprites
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x20]
- negs r0, r0
- adds r0, 0x20
- strh r0, [r2]
- ldr r2, _080E3188 @ =gBattle_BG1_Y
- ldrh r0, [r1, 0x22]
- negs r0, r0
- adds r0, 0x20
- strh r0, [r2]
- ldr r1, _080E318C @ =gTasks
- mov r2, r9
- lsls r0, r2, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x8]
- strh r7, [r0, 0x14]
- ldr r1, _080E3190 @ =sub_80E3194
- str r1, [r0]
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E3160: .4byte gBattlerPartyIndexes
-_080E3164: .4byte gPlayerParty
-_080E3168: .4byte gAnimBankAttacker
-_080E316C: .4byte 0x040000d4
-_080E3170: .4byte 0x85000400
-_080E3174: .4byte gUnknown_08D20A30
-_080E3178: .4byte gUnknown_08D20A14
-_080E317C: .4byte gUnknown_083DB568
-_080E3180: .4byte gBattle_BG1_X
-_080E3184: .4byte gSprites
-_080E3188: .4byte gBattle_BG1_Y
-_080E318C: .4byte gTasks
-_080E3190: .4byte sub_80E3194
- thumb_func_end sub_80E2F2C
-
- thumb_func_start sub_80E3194
-sub_80E3194: @ 80E3194
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _080E32AC @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x1C]
- adds r0, 0x4
- movs r5, 0
- strh r0, [r4, 0x1C]
- ldr r7, _080E32B0 @ =gBattle_BG1_Y
- ldrh r2, [r7]
- subs r1, r2, 0x4
- strh r1, [r7]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x40
- bne _080E329E
- strh r5, [r4, 0x1C]
- adds r0, r2, 0
- adds r0, 0x3C
- strh r0, [r7]
- ldrh r0, [r4, 0x1E]
- adds r0, 0x1
- strh r0, [r4, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080E329E
- movs r0, 0
- bl sub_8076464
- ldr r0, _080E32B4 @ =gBattle_WIN0H
- strh r5, [r0]
- ldr r0, _080E32B8 @ =gBattle_WIN0V
- strh r5, [r0]
- ldr r0, _080E32BC @ =REG_WININ
- ldr r2, _080E32C0 @ =0x00003f3f
- adds r1, r2, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080E3208
- ldr r2, _080E32C4 @ =REG_BG1CNT
- ldrb r1, [r2]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_080E3208:
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- movs r3, 0x80
- lsls r3, 8
- adds r1, r3, 0
- eors r0, r1
- strh r0, [r2]
- ldr r0, _080E32C8 @ =REG_BLDCNT
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- movs r0, 0
- bl GetAnimBattlerSpriteId
- ldr r0, _080E32CC @ =gSprites
- mov r8, r0
- movs r2, 0x8
- ldrsh r1, [r4, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- bl DestroySprite
- mov r0, sp
- bl sub_8078914
- ldr r2, [sp, 0x4]
- str r5, [sp, 0xC]
- ldr r1, _080E32D0 @ =0x040000d4
- add r0, sp, 0xC
- str r0, [r1]
- str r2, [r1, 0x4]
- ldr r0, _080E32D4 @ =0x85000200
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r3, 0x14
- ldrsh r0, [r4, r3]
- cmp r0, 0x1
- bne _080E3288
- ldr r2, _080E32D8 @ =gBankSpriteIds
- ldr r0, _080E32DC @ =gAnimBankAttacker
- ldrb r1, [r0]
- movs r0, 0x2
- eors r0, r1
- adds r0, r2
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- add r2, r8
- ldrb r3, [r2, 0x5]
- lsls r1, r3, 28
- lsrs r1, 30
- adds r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
-_080E3288:
- ldr r2, _080E32C4 @ =REG_BG1CNT
- ldrb r1, [r2, 0x1]
- movs r0, 0x21
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x1]
- movs r0, 0
- strh r0, [r7]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080E329E:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E32AC: .4byte gTasks
-_080E32B0: .4byte gBattle_BG1_Y
-_080E32B4: .4byte gBattle_WIN0H
-_080E32B8: .4byte gBattle_WIN0V
-_080E32BC: .4byte REG_WININ
-_080E32C0: .4byte 0x00003f3f
-_080E32C4: .4byte REG_BG1CNT
-_080E32C8: .4byte REG_BLDCNT
-_080E32CC: .4byte gSprites
-_080E32D0: .4byte 0x040000d4
-_080E32D4: .4byte 0x85000200
-_080E32D8: .4byte gBankSpriteIds
-_080E32DC: .4byte gAnimBankAttacker
- thumb_func_end sub_80E3194
-
- thumb_func_start sub_80E32E0
-sub_80E32E0: @ 80E32E0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r3, r0, 24
- movs r2, 0
- ldr r0, _080E332C @ =gTasks
- mov r12, r0
- ldr r1, _080E3330 @ =sub_80E3338
- mov r8, r1
- lsls r1, r3, 2
- adds r0, r1, r3
- lsls r4, r0, 3
- mov r7, r12
- adds r7, 0x8
- adds r5, r1, 0
- ldr r6, _080E3334 @ =gBattleAnimArgs
-_080E3302:
- lsls r0, r2, 1
- adds r1, r0, r4
- adds r1, r7
- adds r0, r6
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x7
- bls _080E3302
- adds r0, r5, r3
- lsls r0, 3
- add r0, r12
- mov r1, r8
- str r1, [r0]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E332C: .4byte gTasks
-_080E3330: .4byte sub_80E3338
-_080E3334: .4byte gBattleAnimArgs
- thumb_func_end sub_80E32E0
-
- thumb_func_start sub_80E3338
-sub_80E3338: @ 80E3338
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r0, 0
- str r0, [sp, 0x1C]
- movs r1, 0
- str r1, [sp, 0x20]
- add r7, sp, 0xC
- ldr r2, _080E3388 @ =gTasks
- mov r3, r9
- lsls r1, r3, 2
- adds r0, r1, r3
- lsls r0, 3
- mov r10, r1
- adds r1, r2, 0
- adds r1, 0x8
- adds r1, r0, r1
- adds r3, r7, 0
- movs r4, 0
- movs r2, 0x7
-_080E336C:
- ldrh r0, [r1]
- strh r0, [r3]
- strh r4, [r1]
- adds r1, 0x2
- adds r3, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _080E336C
- movs r1, 0x4
- ldrsh r0, [r7, r1]
- cmp r0, 0
- bne _080E3390
- ldr r0, _080E338C @ =gAnimBankAttacker
- b _080E3392
- .align 2, 0
-_080E3388: .4byte gTasks
-_080E338C: .4byte gAnimBankAttacker
-_080E3390:
- ldr r0, _080E34B4 @ =gAnimBankTarget
-_080E3392:
- ldrb r5, [r0]
- movs r0, 0x2
- mov r8, r5
- mov r2, r8
- eors r2, r0
- mov r8, r2
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080E33BC
- movs r3, 0x6
- ldrsh r0, [r7, r3]
- cmp r0, 0
- beq _080E33C0
- mov r0, r8
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- cmp r0, 0
- bne _080E33C0
-_080E33BC:
- movs r0, 0
- strh r0, [r7, 0x6]
-_080E33C0:
- ldr r0, _080E34B8 @ =gBattle_WIN0H
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080E34BC @ =gBattle_WIN0V
- strh r1, [r0]
- ldr r1, _080E34C0 @ =REG_WININ
- ldr r2, _080E34C4 @ =0x00003f3f
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r3, _080E34C8 @ =0x00003f3d
- adds r0, r3, 0
- strh r0, [r1]
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- movs r3, 0x80
- lsls r3, 8
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r2]
- ldr r1, _080E34CC @ =REG_BLDCNT
- ldr r2, _080E34D0 @ =0x00003f42
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r3, 0x80
- lsls r3, 5
- adds r0, r3, 0
- strh r0, [r1]
- ldr r4, _080E34D4 @ =REG_BG1CNT
- ldrb r1, [r4]
- movs r6, 0x4
- negs r6, r6
- adds r0, r6, 0
- ands r0, r1
- strb r0, [r4]
- ldrb r1, [r4, 0x1]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r4, 0x1]
- ldrb r0, [r4, 0x1]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r4, 0x1]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080E3432
- ldrb r0, [r4]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r4]
-_080E3432:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _080E34A4
- movs r1, 0x6
- ldrsh r0, [r7, r1]
- cmp r0, 0
- bne _080E34A4
- adds r0, r5, 0
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _080E345E
- adds r0, r5, 0
- bl GetBattlerPosition
- lsls r0, 24
- cmp r0, 0
- bne _080E34A4
-_080E345E:
- mov r0, r8
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080E34A4
- ldr r1, _080E34D8 @ =gSprites
- ldr r0, _080E34DC @ =gBankSpriteIds
- add r0, r8
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldrb r3, [r2, 0x5]
- lsls r1, r3, 28
- lsrs r1, 30
- subs r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldrb r1, [r4]
- adds r0, r6, 0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r4]
- movs r2, 0x1
- str r2, [sp, 0x20]
-_080E34A4:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080E34E4
- ldr r0, _080E34E0 @ =gSharedMem + 0x19348
- ldrh r4, [r0]
- b _080E3522
- .align 2, 0
-_080E34B4: .4byte gAnimBankTarget
-_080E34B8: .4byte gBattle_WIN0H
-_080E34BC: .4byte gBattle_WIN0V
-_080E34C0: .4byte REG_WININ
-_080E34C4: .4byte 0x00003f3f
-_080E34C8: .4byte 0x00003f3d
-_080E34CC: .4byte REG_BLDCNT
-_080E34D0: .4byte 0x00003f42
-_080E34D4: .4byte REG_BG1CNT
-_080E34D8: .4byte gSprites
-_080E34DC: .4byte gBankSpriteIds
-_080E34E0: .4byte gSharedMem + 0x19348
-_080E34E4:
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080E3508
- ldr r1, _080E3500 @ =gBattlerPartyIndexes
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080E3504 @ =gEnemyParty
- b _080E3516
- .align 2, 0
-_080E3500: .4byte gBattlerPartyIndexes
-_080E3504: .4byte gEnemyParty
-_080E3508:
- ldr r1, _080E3568 @ =gBattlerPartyIndexes
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080E356C @ =gPlayerParty
-_080E3516:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
-_080E3522:
- ldr r6, _080E3570 @ =gBankSpriteIds
- adds r0, r5, r6
- ldrb r1, [r0]
- adds r0, r5, 0
- adds r2, r4, 0
- bl sub_807A4A0
- lsls r0, 24
- lsrs r5, r0, 24
- movs r3, 0x6
- ldrsh r0, [r7, r3]
- cmp r0, 0
- beq _080E3550
- mov r1, r8
- adds r0, r1, r6
- ldrb r1, [r0]
- mov r0, r8
- adds r2, r4, 0
- bl sub_807A4A0
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x1C]
-_080E3550:
- mov r0, sp
- bl sub_8078914
- movs r2, 0
- ldrsh r0, [r7, r2]
- cmp r0, 0
- bne _080E3578
- ldr r0, _080E3574 @ =gBattleStatMask1_Tilemap
- ldr r1, [sp, 0x4]
- bl LZDecompressVram
- b _080E3580
- .align 2, 0
-_080E3568: .4byte gBattlerPartyIndexes
-_080E356C: .4byte gPlayerParty
-_080E3570: .4byte gBankSpriteIds
-_080E3574: .4byte gBattleStatMask1_Tilemap
-_080E3578:
- ldr r0, _080E35B0 @ =gBattleStatMask2_Tilemap
- ldr r1, [sp, 0x4]
- bl LZDecompressVram
-_080E3580:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080E3598
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_80763FC
-_080E3598:
- ldr r0, _080E35B4 @ =gBattleStatMask_Gfx
- ldr r1, [sp]
- bl LZDecompressVram
- ldrh r0, [r7, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bne _080E35BC
- ldr r0, _080E35B8 @ =gBattleStatMask2_Pal
- b _080E35FE
- .align 2, 0
-_080E35B0: .4byte gBattleStatMask2_Tilemap
-_080E35B4: .4byte gBattleStatMask_Gfx
-_080E35B8: .4byte gBattleStatMask2_Pal
-_080E35BC:
- cmp r0, 0x1
- bne _080E35C8
- ldr r0, _080E35C4 @ =gBattleStatMask1_Pal
- b _080E35FE
- .align 2, 0
-_080E35C4: .4byte gBattleStatMask1_Pal
-_080E35C8:
- cmp r0, 0x2
- bne _080E35D4
- ldr r0, _080E35D0 @ =gBattleStatMask3_Pal
- b _080E35FE
- .align 2, 0
-_080E35D0: .4byte gBattleStatMask3_Pal
-_080E35D4:
- cmp r0, 0x3
- bne _080E35E0
- ldr r0, _080E35DC @ =gBattleStatMask4_Pal
- b _080E35FE
- .align 2, 0
-_080E35DC: .4byte gBattleStatMask4_Pal
-_080E35E0:
- cmp r0, 0x4
- bne _080E35EC
- ldr r0, _080E35E8 @ =gBattleStatMask6_Pal
- b _080E35FE
- .align 2, 0
-_080E35E8: .4byte gBattleStatMask6_Pal
-_080E35EC:
- cmp r0, 0x5
- bne _080E35F8
- ldr r0, _080E35F4 @ =gBattleStatMask7_Pal
- b _080E35FE
- .align 2, 0
-_080E35F4: .4byte gBattleStatMask7_Pal
-_080E35F8:
- cmp r0, 0x6
- bne _080E3610
- ldr r0, _080E360C @ =gBattleStatMask8_Pal
-_080E35FE:
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- b _080E361E
- .align 2, 0
-_080E360C: .4byte gBattleStatMask8_Pal
-_080E3610:
- ldr r0, _080E3644 @ =gBattleStatMask5_Pal
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
-_080E361E:
- ldr r2, _080E3648 @ =gBattle_BG1_X
- movs r1, 0
- strh r1, [r2]
- ldr r0, _080E364C @ =gBattle_BG1_Y
- strh r1, [r0]
- movs r3, 0
- ldrsh r0, [r7, r3]
- cmp r0, 0x1
- bne _080E3658
- movs r0, 0x40
- strh r0, [r2]
- ldr r2, _080E3650 @ =gTasks
- mov r0, r10
- add r0, r9
- lsls r0, 3
- adds r0, r2
- ldr r1, _080E3654 @ =0x0000fffd
- strh r1, [r0, 0xA]
- b _080E3668
- .align 2, 0
-_080E3644: .4byte gBattleStatMask5_Pal
-_080E3648: .4byte gBattle_BG1_X
-_080E364C: .4byte gBattle_BG1_Y
-_080E3650: .4byte gTasks
-_080E3654: .4byte 0x0000fffd
-_080E3658:
- ldr r0, _080E3680 @ =gTasks
- mov r1, r10
- add r1, r9
- lsls r1, 3
- adds r1, r0
- movs r2, 0x3
- strh r2, [r1, 0xA]
- adds r2, r0, 0
-_080E3668:
- movs r1, 0x8
- ldrsh r0, [r7, r1]
- cmp r0, 0
- bne _080E3684
- mov r0, r10
- add r0, r9
- lsls r0, 3
- adds r0, r2
- movs r1, 0xA
- strh r1, [r0, 0x10]
- movs r1, 0x14
- b _080E3692
- .align 2, 0
-_080E3680: .4byte gTasks
-_080E3684:
- mov r0, r10
- add r0, r9
- lsls r0, 3
- adds r0, r2
- movs r1, 0xD
- strh r1, [r0, 0x10]
- movs r1, 0x1E
-_080E3692:
- strh r1, [r0, 0x12]
- mov r1, r10
- add r1, r9
- lsls r1, 3
- adds r1, r2
- strh r5, [r1, 0x8]
- ldrh r0, [r7, 0x6]
- strh r0, [r1, 0xC]
- mov r2, sp
- ldrh r2, [r2, 0x1C]
- strh r2, [r1, 0xE]
- mov r3, sp
- ldrh r3, [r3, 0x20]
- strh r3, [r1, 0x14]
- ldr r0, _080E36D8 @ =gBankSpriteIds
- add r0, r8
- ldrb r0, [r0]
- strh r0, [r1, 0x16]
- ldr r0, _080E36DC @ =sub_80E3704
- str r0, [r1]
- movs r1, 0
- ldrsh r0, [r7, r1]
- cmp r0, 0
- bne _080E36E0
- movs r0, 0x40
- negs r0, r0
- bl BattleAnimAdjustPanning2
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xEF
- bl PlaySE12WithPanning
- b _080E36F4
- .align 2, 0
-_080E36D8: .4byte gBankSpriteIds
-_080E36DC: .4byte sub_80E3704
-_080E36E0:
- movs r0, 0x40
- negs r0, r0
- bl BattleAnimAdjustPanning2
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xF5
- bl PlaySE12WithPanning
-_080E36F4:
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80E3338
-
- thumb_func_start sub_80E3704
-sub_80E3704: @ 80E3704
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r2, _080E3730 @ =gBattle_BG1_Y
- ldr r1, _080E3734 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0xA]
- ldrh r1, [r2]
- adds r0, r1
- strh r0, [r2]
- movs r3, 0x26
- ldrsh r2, [r4, r3]
- cmp r2, 0x1
- beq _080E3774
- cmp r2, 0x1
- bgt _080E3738
- cmp r2, 0
- beq _080E373E
- b _080E3866
- .align 2, 0
-_080E3730: .4byte gBattle_BG1_Y
-_080E3734: .4byte gTasks
-_080E3738:
- cmp r2, 0x2
- beq _080E378E
- b _080E3866
-_080E373E:
- ldrh r0, [r4, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1E]
- lsls r0, 16
- cmp r0, 0
- bgt _080E374C
- b _080E3866
-_080E374C:
- strh r2, [r4, 0x1E]
- ldrh r1, [r4, 0x20]
- adds r1, 0x1
- strh r1, [r4, 0x20]
- ldr r2, _080E3770 @ =REG_BLDALPHA
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- strh r1, [r2]
- movs r0, 0x20
- ldrsh r1, [r4, r0]
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080E3866
- b _080E3786
- .align 2, 0
-_080E3770: .4byte REG_BLDALPHA
-_080E3774:
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x12
- ldrsh r1, [r4, r3]
- cmp r0, r1
- bne _080E3866
-_080E3786:
- ldrh r0, [r4, 0x26]
- adds r0, 0x1
- strh r0, [r4, 0x26]
- b _080E3866
-_080E378E:
- ldrh r0, [r4, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1E]
- lsls r0, 16
- cmp r0, 0
- ble _080E3866
- movs r0, 0
- strh r0, [r4, 0x1E]
- ldrh r1, [r4, 0x20]
- subs r1, 0x1
- strh r1, [r4, 0x20]
- ldr r7, _080E386C @ =REG_BLDALPHA
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- strh r1, [r7]
- movs r0, 0x20
- ldrsh r5, [r4, r0]
- cmp r5, 0
- bne _080E3866
- movs r0, 0
- bl sub_8076464
- ldr r0, _080E3870 @ =gBattle_WIN0H
- strh r5, [r0]
- ldr r0, _080E3874 @ =gBattle_WIN0V
- strh r5, [r0]
- ldr r0, _080E3878 @ =REG_WININ
- ldr r2, _080E387C @ =0x00003f3f
- adds r1, r2, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080E37E8
- ldr r2, _080E3880 @ =REG_BG1CNT
- ldrb r1, [r2]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_080E37E8:
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- movs r3, 0x80
- lsls r3, 8
- adds r1, r3, 0
- eors r0, r1
- strh r0, [r2]
- ldr r0, _080E3884 @ =REG_BLDCNT
- strh r5, [r0]
- strh r5, [r7]
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r5, _080E3888 @ =gSprites
- adds r0, r5
- bl DestroySprite
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080E3828
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
-_080E3828:
- movs r3, 0x14
- ldrsh r0, [r4, r3]
- cmp r0, 0x1
- bne _080E3854
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r5
- ldrb r3, [r2, 0x5]
- lsls r1, r3, 28
- lsrs r1, 30
- adds r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
-_080E3854:
- ldr r2, _080E3880 @ =REG_BG1CNT
- ldrb r1, [r2, 0x1]
- movs r0, 0x21
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x1]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080E3866:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E386C: .4byte REG_BLDALPHA
-_080E3870: .4byte gBattle_WIN0H
-_080E3874: .4byte gBattle_WIN0V
-_080E3878: .4byte REG_WININ
-_080E387C: .4byte 0x00003f3f
-_080E3880: .4byte REG_BG1CNT
-_080E3884: .4byte REG_BLDCNT
-_080E3888: .4byte gSprites
- thumb_func_end sub_80E3704
-
- thumb_func_start sub_80E388C
-sub_80E388C: @ 80E388C
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0x1
- bl sub_80792C0
- adds r6, r0, 0
- movs r1, 0
- bl sub_80E39BC
- ldr r0, _080E38EC @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- lsrs r0, r6, 16
- movs r5, 0
- strh r0, [r4, 0x24]
- str r5, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_80791A8
- adds r6, r0, 0
- ldr r1, _080E38F0 @ =0x0000ffff
- ands r6, r1
- adds r0, r6, 0
- bl sub_80E39BC
- strh r6, [r4, 0x26]
- strh r5, [r4, 0x8]
- strh r5, [r4, 0xA]
- ldr r0, _080E38F4 @ =sub_80E38F8
- str r0, [r4]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E38EC: .4byte gTasks
-_080E38F0: .4byte 0x0000ffff
-_080E38F4: .4byte sub_80E38F8
- thumb_func_end sub_80E388C
-
- thumb_func_start sub_80E38F8
-sub_80E38F8: @ 80E38F8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080E391C @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _080E393C
- cmp r1, 0x1
- bgt _080E3920
- cmp r1, 0
- beq _080E3926
- b _080E39B6
- .align 2, 0
-_080E391C: .4byte gTasks
-_080E3920:
- cmp r1, 0x2
- beq _080E39B0
- b _080E39B6
-_080E3926:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- ble _080E39B6
- strh r1, [r4, 0xA]
- movs r0, 0x10
- strh r0, [r4, 0xC]
- b _080E39A4
-_080E393C:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080E39B6
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- subs r0, 0x1
- strh r0, [r4, 0xC]
- movs r5, 0
- movs r6, 0x1
-_080E3958:
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- asrs r0, r5
- ands r0, r6
- cmp r0, 0
- beq _080E3972
- lsls r0, r5, 20
- lsrs r0, 16
- ldrb r2, [r4, 0xC]
- movs r1, 0x10
- ldr r3, _080E39AC @ =0x0000ffff
- bl BlendPalette
-_080E3972:
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- asrs r0, r5
- ands r0, r6
- cmp r0, 0
- beq _080E3992
- lsls r0, r5, 20
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r0, 16
- ldrb r2, [r4, 0xC]
- movs r1, 0x10
- movs r3, 0
- bl BlendPalette
-_080E3992:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0xF
- bls _080E3958
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080E39B6
-_080E39A4:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080E39B6
- .align 2, 0
-_080E39AC: .4byte 0x0000ffff
-_080E39B0:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080E39B6:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80E38F8
-
- thumb_func_start sub_80E39BC
-sub_80E39BC: @ 80E39BC
- push {r4-r6,lr}
- adds r3, r0, 0
- lsls r1, 16
- lsrs r6, r1, 16
- movs r2, 0
-_080E39C6:
- movs r0, 0x1
- ands r0, r3
- lsrs r4, r3, 1
- adds r5, r2, 0x1
- cmp r0, 0
- beq _080E39F2
- lsls r0, r2, 20
- lsrs r2, r0, 16
- adds r0, r2, 0
- adds r0, 0x10
- cmp r2, r0
- bge _080E39F2
- ldr r1, _080E3A04 @ =gPlttBufferFaded
- adds r3, r0, 0
-_080E39E2:
- lsls r0, r2, 1
- adds r0, r1
- strh r6, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r3
- blt _080E39E2
-_080E39F2:
- adds r3, r4, 0
- lsls r0, r5, 16
- lsrs r2, r0, 16
- cmp r2, 0x1F
- bls _080E39C6
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E3A04: .4byte gPlttBufferFaded
- thumb_func_end sub_80E39BC
-
- thumb_func_start sub_80E3A08
-sub_80E3A08: @ 80E3A08
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0
- movs r2, 0
- ldr r0, _080E3A50 @ =gAnimBankAttacker
- ldrb r3, [r0]
- movs r5, 0x1
-_080E3A18:
- cmp r3, r2
- beq _080E3A26
- adds r1, r2, 0
- adds r1, 0x10
- adds r0, r5, 0
- lsls r0, r1
- orrs r4, r0
-_080E3A26:
- adds r2, 0x1
- cmp r2, 0x3
- bls _080E3A18
- movs r2, 0x5
- ldr r0, _080E3A54 @ =gBattleAnimArgs
- adds r1, r0, 0
- adds r1, 0x8
-_080E3A34:
- ldrh r0, [r1]
- strh r0, [r1, 0x2]
- subs r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bne _080E3A34
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80E2C8C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E3A50: .4byte gAnimBankAttacker
-_080E3A54: .4byte gBattleAnimArgs
- thumb_func_end sub_80E3A08
-
- thumb_func_start sub_80E3A58
-sub_80E3A58: @ 80E3A58
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- bl sub_80789D4
- ldr r0, _080E3AC0 @ =sub_80E3AD0
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080E3AC4 @ =gBattleAnimArgs
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080E3A94
- ldr r0, _080E3AC8 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080E3A94
- ldrh r0, [r4]
- negs r0, r0
- strh r0, [r4]
- ldrh r0, [r4, 0x2]
- negs r0, r0
- strh r0, [r4, 0x2]
-_080E3A94:
- ldr r0, _080E3ACC @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r2, _080E3AC4 @ =gBattleAnimArgs
- ldrh r0, [r2]
- strh r0, [r1, 0xA]
- ldrh r0, [r2, 0x2]
- strh r0, [r1, 0xC]
- ldrh r0, [r2, 0x6]
- strh r0, [r1, 0xE]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E3AC0: .4byte sub_80E3AD0
-_080E3AC4: .4byte gBattleAnimArgs
-_080E3AC8: .4byte gAnimBankAttacker
-_080E3ACC: .4byte gTasks
- thumb_func_end sub_80E3A58
-
- thumb_func_start sub_80E3AD0
-sub_80E3AD0: @ 80E3AD0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080E3B3C @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r3, [r1, 0xA]
- ldrh r0, [r1, 0x1C]
- adds r3, r0
- movs r4, 0
- mov r12, r4
- strh r3, [r1, 0x1C]
- ldrh r2, [r1, 0xC]
- ldrh r7, [r1, 0x1E]
- adds r2, r7
- strh r2, [r1, 0x1E]
- ldr r6, _080E3B40 @ =gBattle_BG3_X
- lsls r0, r3, 16
- asrs r0, 24
- ldrh r4, [r6]
- adds r0, r4
- strh r0, [r6]
- ldr r4, _080E3B44 @ =gBattle_BG3_Y
- lsls r0, r2, 16
- asrs r0, 24
- ldrh r7, [r4]
- adds r0, r7
- strh r0, [r4]
- movs r0, 0xFF
- ands r3, r0
- strh r3, [r1, 0x1C]
- ands r2, r0
- strh r2, [r1, 0x1E]
- ldr r0, _080E3B48 @ =gBattleAnimArgs
- movs r3, 0xE
- ldrsh r2, [r0, r3]
- movs r7, 0xE
- ldrsh r0, [r1, r7]
- cmp r2, r0
- bne _080E3B36
- mov r0, r12
- strh r0, [r6]
- strh r0, [r4]
- movs r0, 0x1
- bl sub_80789D4
- adds r0, r5, 0
- bl DestroyTask
-_080E3B36:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E3B3C: .4byte gTasks
-_080E3B40: .4byte gBattle_BG3_X
-_080E3B44: .4byte gBattle_BG3_Y
-_080E3B48: .4byte gBattleAnimArgs
- thumb_func_end sub_80E3AD0
-
- thumb_func_start sub_80E3B4C
-sub_80E3B4C: @ 80E3B4C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080E3B70 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- ldr r1, _080E3B74 @ =gBattleAnimArgs
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0xE]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E3B70: .4byte gAnimBankAttacker
-_080E3B74: .4byte gBattleAnimArgs
- thumb_func_end sub_80E3B4C
-
- thumb_func_start sub_80E3B78
-sub_80E3B78: @ 80E3B78
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080E3B9C @ =gAnimBankTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- ldr r1, _080E3BA0 @ =gBattleAnimArgs
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0xE]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E3B9C: .4byte gAnimBankTarget
-_080E3BA0: .4byte gBattleAnimArgs
- thumb_func_end sub_80E3B78
-
- thumb_func_start sub_80E3BA4
-sub_80E3BA4: @ 80E3BA4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r5, _080E3BD0 @ =gBattleAnimArgs
- movs r4, 0
- ldr r0, _080E3BD4 @ =gAnimBankAttacker
- ldrb r2, [r0]
- movs r0, 0x2
- ldr r1, _080E3BD8 @ =gAnimBankTarget
- eors r0, r2
- ldrb r1, [r1]
- cmp r0, r1
- bne _080E3BC0
- movs r4, 0x1
-_080E3BC0:
- strh r4, [r5, 0xE]
- adds r0, r3, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E3BD0: .4byte gBattleAnimArgs
-_080E3BD4: .4byte gAnimBankAttacker
-_080E3BD8: .4byte gAnimBankTarget
- thumb_func_end sub_80E3BA4
-
- thumb_func_start sub_80E3BDC
-sub_80E3BDC: @ 80E3BDC
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r6, _080E3C3C @ =gSprites
-_080E3BE6:
- ldr r0, _080E3C40 @ =gAnimBankAttacker
- ldrb r0, [r0]
- cmp r4, r0
- beq _080E3C24
- lsls r0, r4, 24
- lsrs r0, 24
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080E3C24
- ldr r0, _080E3C44 @ =gBankSpriteIds
- adds r0, r4, r0
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r6
- ldr r1, _080E3C48 @ =gBattleAnimArgs
- adds r2, 0x3E
- movs r0, 0x1
- ldrb r3, [r1]
- ands r3, r0
- lsls r3, 2
- ldrb r0, [r2]
- movs r7, 0x5
- negs r7, r7
- adds r1, r7, 0
- ands r0, r1
- orrs r0, r3
- strb r0, [r2]
-_080E3C24:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _080E3BE6
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E3C3C: .4byte gSprites
-_080E3C40: .4byte gAnimBankAttacker
-_080E3C44: .4byte gBankSpriteIds
-_080E3C48: .4byte gBattleAnimArgs
- thumb_func_end sub_80E3BDC
-
- thumb_func_start sub_80E3C4C
-sub_80E3C4C: @ 80E3C4C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- ldr r1, [sp, 0x3C]
- ldr r4, [sp, 0x40]
- ldr r5, [sp, 0x44]
- ldr r6, [sp, 0x48]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r2, 16
- lsrs r2, 16
- str r2, [sp, 0xC]
- lsls r3, 24
- lsrs r7, r3, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp, 0x10]
- lsls r5, 24
- lsrs r5, 24
- str r5, [sp, 0x14]
- lsls r6, 24
- lsrs r6, 24
- mov r10, r6
- movs r0, 0
- str r0, [sp, 0x18]
- movs r0, 0x2
- adds r6, r7, 0
- eors r6, r0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080E3CAE
- mov r1, r8
- cmp r1, 0
- beq _080E3CB2
- adds r0, r6, 0
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- cmp r0, 0
- bne _080E3CB2
-_080E3CAE:
- movs r2, 0
- mov r8, r2
-_080E3CB2:
- ldr r0, _080E3D34 @ =gBattle_WIN0H
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080E3D38 @ =gBattle_WIN0V
- strh r1, [r0]
- ldr r1, _080E3D3C @ =REG_WININ
- ldr r3, _080E3D40 @ =0x00003f3f
- adds r0, r3, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _080E3D44 @ =0x00003f3d
- adds r0, r2, 0
- strh r0, [r1]
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- movs r3, 0x80
- lsls r3, 8
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r2]
- ldr r1, _080E3D48 @ =REG_BLDCNT
- ldr r2, _080E3D4C @ =0x00003f42
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r3, 0x80
- lsls r3, 5
- adds r0, r3, 0
- strh r0, [r1]
- ldr r4, _080E3D50 @ =REG_BG1CNT
- ldrb r1, [r4]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- strb r0, [r4]
- ldrb r1, [r4, 0x1]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r4, 0x1]
- ldrb r0, [r4, 0x1]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r4, 0x1]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080E3D22
- ldrb r0, [r4]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r4]
-_080E3D22:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080E3D58
- ldr r0, _080E3D54 @ =gSharedMem + 0x19348
- ldrh r4, [r0]
- b _080E3D96
- .align 2, 0
-_080E3D34: .4byte gBattle_WIN0H
-_080E3D38: .4byte gBattle_WIN0V
-_080E3D3C: .4byte REG_WININ
-_080E3D40: .4byte 0x00003f3f
-_080E3D44: .4byte 0x00003f3d
-_080E3D48: .4byte REG_BLDCNT
-_080E3D4C: .4byte 0x00003f42
-_080E3D50: .4byte REG_BG1CNT
-_080E3D54: .4byte gSharedMem + 0x19348
-_080E3D58:
- adds r0, r7, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080E3D7C
- ldr r1, _080E3D74 @ =gBattlerPartyIndexes
- lsls r0, r7, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080E3D78 @ =gEnemyParty
- b _080E3D8A
- .align 2, 0
-_080E3D74: .4byte gBattlerPartyIndexes
-_080E3D78: .4byte gEnemyParty
-_080E3D7C:
- ldr r1, _080E3E48 @ =gBattlerPartyIndexes
- lsls r0, r7, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080E3E4C @ =gPlayerParty
-_080E3D8A:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
-_080E3D96:
- ldr r5, _080E3E50 @ =gBankSpriteIds
- adds r0, r7, r5
- ldrb r1, [r0]
- adds r0, r7, 0
- adds r2, r4, 0
- bl sub_807A4A0
- lsls r0, 24
- lsrs r7, r0, 24
- mov r0, r8
- cmp r0, 0
- beq _080E3DC0
- adds r0, r6, r5
- ldrb r1, [r0]
- adds r0, r6, 0
- adds r2, r4, 0
- bl sub_807A4A0
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x18]
-_080E3DC0:
- mov r0, sp
- bl sub_8078914
- ldr r1, [sp, 0x4]
- ldr r0, [sp, 0x50]
- bl LZDecompressVram
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080E3DE6
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_80763FC
-_080E3DE6:
- ldr r1, [sp]
- ldr r0, [sp, 0x4C]
- bl LZDecompressVram
- mov r0, sp
- ldrb r1, [r0, 0x8]
- lsls r1, 4
- ldr r0, [sp, 0x54]
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r0, _080E3E54 @ =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080E3E58 @ =gBattle_BG1_Y
- strh r1, [r0]
- ldr r1, _080E3E5C @ =gTasks
- mov r2, r9
- lsls r0, r2, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- mov r3, sp
- ldrh r3, [r3, 0xC]
- strh r3, [r0, 0xA]
- mov r1, sp
- ldrh r1, [r1, 0x10]
- strh r1, [r0, 0x10]
- mov r2, r10
- strh r2, [r0, 0x12]
- mov r3, sp
- ldrh r3, [r3, 0x14]
- strh r3, [r0, 0x14]
- strh r7, [r0, 0x8]
- mov r1, r8
- strh r1, [r0, 0xC]
- mov r2, sp
- ldrh r2, [r2, 0x18]
- strh r2, [r0, 0xE]
- ldr r1, _080E3E60 @ =sub_80E3E64
- str r1, [r0]
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E3E48: .4byte gBattlerPartyIndexes
-_080E3E4C: .4byte gPlayerParty
-_080E3E50: .4byte gBankSpriteIds
-_080E3E54: .4byte gBattle_BG1_X
-_080E3E58: .4byte gBattle_BG1_Y
-_080E3E5C: .4byte gTasks
-_080E3E60: .4byte sub_80E3E64
- thumb_func_end sub_80E3C4C
-
- thumb_func_start sub_80E3E64
-sub_80E3E64: @ 80E3E64
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _080E3E9C @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r3, r0, r1
- movs r0, 0xA
- ldrsh r2, [r3, r0]
- adds r5, r1, 0
- cmp r2, 0
- bge _080E3E80
- negs r2, r2
-_080E3E80:
- ldrh r0, [r3, 0x22]
- adds r4, r0, r2
- strh r4, [r3, 0x22]
- movs r1, 0xA
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bge _080E3EA4
- ldr r2, _080E3EA0 @ =gBattle_BG1_Y
- lsls r1, r4, 16
- asrs r1, 24
- ldrh r0, [r2]
- subs r0, r1
- strh r0, [r2]
- b _080E3EB0
- .align 2, 0
-_080E3E9C: .4byte gTasks
-_080E3EA0: .4byte gBattle_BG1_Y
-_080E3EA4:
- ldr r1, _080E3ED4 @ =gBattle_BG1_Y
- lsls r0, r4, 16
- asrs r0, 24
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
-_080E3EB0:
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r5
- ldrh r1, [r4, 0x22]
- movs r0, 0xFF
- ands r0, r1
- movs r2, 0
- strh r0, [r4, 0x22]
- movs r3, 0x26
- ldrsh r0, [r4, r3]
- cmp r0, 0x1
- beq _080E3F18
- cmp r0, 0x1
- bgt _080E3ED8
- cmp r0, 0
- beq _080E3EDE
- b _080E3FE2
- .align 2, 0
-_080E3ED4: .4byte gBattle_BG1_Y
-_080E3ED8:
- cmp r0, 0x2
- beq _080E3F32
- b _080E3FE2
-_080E3EDE:
- ldrh r0, [r4, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1E]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x14
- ldrsh r1, [r4, r3]
- cmp r0, r1
- blt _080E3FE2
- strh r2, [r4, 0x1E]
- ldrh r1, [r4, 0x20]
- adds r1, 0x1
- strh r1, [r4, 0x20]
- ldr r2, _080E3F14 @ =REG_BLDALPHA
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- strh r1, [r2]
- movs r0, 0x20
- ldrsh r1, [r4, r0]
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080E3FE2
- b _080E3F2A
- .align 2, 0
-_080E3F14: .4byte REG_BLDALPHA
-_080E3F18:
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x12
- ldrsh r1, [r4, r3]
- cmp r0, r1
- bne _080E3FE2
-_080E3F2A:
- ldrh r0, [r4, 0x26]
- adds r0, 0x1
- strh r0, [r4, 0x26]
- b _080E3FE2
-_080E3F32:
- ldrh r0, [r4, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1E]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x14
- ldrsh r1, [r4, r3]
- cmp r0, r1
- blt _080E3FE2
- strh r2, [r4, 0x1E]
- ldrh r1, [r4, 0x20]
- subs r1, 0x1
- strh r1, [r4, 0x20]
- ldr r7, _080E3FE8 @ =REG_BLDALPHA
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- strh r1, [r7]
- movs r0, 0x20
- ldrsh r5, [r4, r0]
- cmp r5, 0
- bne _080E3FE2
- movs r0, 0
- bl sub_8076464
- ldr r0, _080E3FEC @ =gBattle_WIN0H
- strh r5, [r0]
- ldr r0, _080E3FF0 @ =gBattle_WIN0V
- strh r5, [r0]
- ldr r0, _080E3FF4 @ =REG_WININ
- ldr r2, _080E3FF8 @ =0x00003f3f
- adds r1, r2, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080E3F90
- ldr r2, _080E3FFC @ =REG_BG1CNT
- ldrb r1, [r2]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_080E3F90:
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- movs r3, 0x80
- lsls r3, 8
- adds r1, r3, 0
- eors r0, r1
- strh r0, [r2]
- ldr r0, _080E4000 @ =REG_BLDCNT
- strh r5, [r0]
- strh r5, [r7]
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r5, _080E4004 @ =gSprites
- adds r0, r5
- bl DestroySprite
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080E3FD0
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
-_080E3FD0:
- ldr r2, _080E3FFC @ =REG_BG1CNT
- ldrb r1, [r2, 0x1]
- movs r0, 0x21
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x1]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080E3FE2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E3FE8: .4byte REG_BLDALPHA
-_080E3FEC: .4byte gBattle_WIN0H
-_080E3FF0: .4byte gBattle_WIN0V
-_080E3FF4: .4byte REG_WININ
-_080E3FF8: .4byte 0x00003f3f
-_080E3FFC: .4byte REG_BG1CNT
-_080E4000: .4byte REG_BLDCNT
-_080E4004: .4byte gSprites
- thumb_func_end sub_80E3E64
-
- thumb_func_start sub_80E4008
-sub_80E4008: @ 80E4008
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080E4020 @ =gBattleAnimArgs
- ldr r1, _080E4024 @ =gBattleTerrain
- ldrb r1, [r1]
- strh r1, [r2]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080E4020: .4byte gBattleAnimArgs
-_080E4024: .4byte gBattleTerrain
- thumb_func_end sub_80E4008
-
- thumb_func_start sub_80E4028
-sub_80E4028: @ 80E4028
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0
- ldr r0, _080E4068 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080E406C
- 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_80791A8
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080E4084
- movs r2, 0x1
-_080E405A:
- lsrs r1, 1
- adds r4, 0x1
- adds r0, r1, 0
- ands r0, r2
- cmp r0, 0
- beq _080E405A
- b _080E4084
- .align 2, 0
-_080E4068: .4byte gBattleAnimArgs
-_080E406C:
- cmp r0, 0x1
- bne _080E4078
- ldr r0, _080E4074 @ =gAnimBankAttacker
- b _080E407E
- .align 2, 0
-_080E4074: .4byte gAnimBankAttacker
-_080E4078:
- cmp r0, 0x2
- bne _080E4084
- ldr r0, _080E409C @ =gAnimBankTarget
-_080E407E:
- ldrb r0, [r0]
- adds r4, r0, 0
- adds r4, 0x10
-_080E4084:
- ldr r0, _080E40A0 @ =gBattleAnimArgs
- movs r1, 0x2
- ldrsh r0, [r0, r1]
- lsls r5, r0, 5
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080E40A8
- ldr r0, _080E40A4 @ =gSharedMem + 0x14800
- b _080E40AA
- .align 2, 0
-_080E409C: .4byte gAnimBankTarget
-_080E40A0: .4byte gBattleAnimArgs
-_080E40A4: .4byte gSharedMem + 0x14800
-_080E40A8:
- ldr r0, _080E40C8 @ =gSharedMem + 0x18000
-_080E40AA:
- adds r2, r5, r0
- lsls r1, r4, 5
- ldr r0, _080E40CC @ =gPlttBufferUnfaded
- adds r1, r0
- adds r0, r2, 0
- movs r2, 0x20
- bl memcpy
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E40C8: .4byte gSharedMem + 0x18000
-_080E40CC: .4byte gPlttBufferUnfaded
- thumb_func_end sub_80E4028
-
- thumb_func_start sub_80E40D0
-sub_80E40D0: @ 80E40D0
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0
- ldr r0, _080E4110 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080E4114
- 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_80791A8
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080E412C
- movs r2, 0x1
-_080E4102:
- lsrs r1, 1
- adds r4, 0x1
- adds r0, r1, 0
- ands r0, r2
- cmp r0, 0
- beq _080E4102
- b _080E412C
- .align 2, 0
-_080E4110: .4byte gBattleAnimArgs
-_080E4114:
- cmp r0, 0x1
- bne _080E4120
- ldr r0, _080E411C @ =gAnimBankAttacker
- b _080E4126
- .align 2, 0
-_080E411C: .4byte gAnimBankAttacker
-_080E4120:
- cmp r0, 0x2
- bne _080E412C
- ldr r0, _080E4148 @ =gAnimBankTarget
-_080E4126:
- ldrb r0, [r0]
- adds r4, r0, 0
- adds r4, 0x10
-_080E412C:
- lsls r1, r4, 5
- ldr r0, _080E414C @ =gPlttBufferUnfaded
- adds r5, r1, r0
- ldr r0, _080E4150 @ =gBattleAnimArgs
- movs r1, 0x2
- ldrsh r0, [r0, r1]
- lsls r4, r0, 5
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080E4158
- ldr r0, _080E4154 @ =gSharedMem + 0x14800
- b _080E415A
- .align 2, 0
-_080E4148: .4byte gAnimBankTarget
-_080E414C: .4byte gPlttBufferUnfaded
-_080E4150: .4byte gBattleAnimArgs
-_080E4154: .4byte gSharedMem + 0x14800
-_080E4158:
- ldr r0, _080E4174 @ =gSharedMem + 0x18000
-_080E415A:
- adds r1, r4, r0
- adds r0, r5, 0
- movs r2, 0x20
- bl memcpy
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E4174: .4byte gSharedMem + 0x18000
- thumb_func_end sub_80E40D0
-
- thumb_func_start sub_80E4178
-sub_80E4178: @ 80E4178
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r0, _080E41B8 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080E41BC
- 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_80791A8
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080E41D4
- movs r2, 0x1
-_080E41AA:
- lsrs r1, 1
- adds r4, 0x1
- adds r0, r1, 0
- ands r0, r2
- cmp r0, 0
- beq _080E41AA
- b _080E41D4
- .align 2, 0
-_080E41B8: .4byte gBattleAnimArgs
-_080E41BC:
- cmp r0, 0x1
- bne _080E41C8
- ldr r0, _080E41C4 @ =gAnimBankAttacker
- b _080E41CE
- .align 2, 0
-_080E41C4: .4byte gAnimBankAttacker
-_080E41C8:
- cmp r0, 0x2
- bne _080E41D4
- ldr r0, _080E41F4 @ =gAnimBankTarget
-_080E41CE:
- ldrb r0, [r0]
- adds r4, r0, 0
- adds r4, 0x10
-_080E41D4:
- lsls r1, r4, 5
- ldr r0, _080E41F8 @ =gPlttBufferUnfaded
- adds r0, r1, r0
- ldr r2, _080E41FC @ =gPlttBufferFaded
- adds r1, r2
- movs r2, 0x20
- bl memcpy
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E41F4: .4byte gAnimBankTarget
-_080E41F8: .4byte gPlttBufferUnfaded
-_080E41FC: .4byte gPlttBufferFaded
- thumb_func_end sub_80E4178
-
- thumb_func_start sub_80E4200
-sub_80E4200: @ 80E4200
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsContest
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _080E4220
- ldr r1, _080E421C @ =gBattleAnimArgs
- movs r0, 0x1
- strh r0, [r1, 0xE]
- b _080E4224
- .align 2, 0
-_080E421C: .4byte gBattleAnimArgs
-_080E4220:
- ldr r0, _080E4230 @ =gBattleAnimArgs
- strh r1, [r0, 0xE]
-_080E4224:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E4230: .4byte gBattleAnimArgs
- thumb_func_end sub_80E4200
-
- thumb_func_start sub_80E4234
-sub_80E4234: @ 80E4234
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080E4254 @ =gAnimBankAttacker
- ldr r1, _080E4258 @ =gBankTarget
- ldrb r1, [r1]
- strb r1, [r2]
- ldr r2, _080E425C @ =gAnimBankTarget
- ldr r1, _080E4260 @ =gEffectBank
- ldrb r1, [r1]
- strb r1, [r2]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080E4254: .4byte gAnimBankAttacker
-_080E4258: .4byte gBankTarget
-_080E425C: .4byte gAnimBankTarget
-_080E4260: .4byte gEffectBank
- thumb_func_end sub_80E4234
-
- thumb_func_start sub_80E4264
-sub_80E4264: @ 80E4264
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080E428C @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- adds r4, r0, 0
- ldr r0, _080E4290 @ =gAnimBankTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _080E4298
- ldr r1, _080E4294 @ =gBattleAnimArgs
- movs r0, 0x1
- b _080E429C
- .align 2, 0
-_080E428C: .4byte gAnimBankAttacker
-_080E4290: .4byte gAnimBankTarget
-_080E4294: .4byte gBattleAnimArgs
-_080E4298:
- ldr r1, _080E42AC @ =gBattleAnimArgs
- movs r0, 0
-_080E429C:
- strh r0, [r1, 0xE]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E42AC: .4byte gBattleAnimArgs
- thumb_func_end sub_80E4264
-
- thumb_func_start sub_80E42B0
-sub_80E42B0: @ 80E42B0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080E42C8 @ =gAnimBankTarget
- ldr r1, _080E42CC @ =gBankTarget
- ldrb r1, [r1]
- strb r1, [r2]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080E42C8: .4byte gAnimBankTarget
-_080E42CC: .4byte gBankTarget
- thumb_func_end sub_80E42B0
-
- thumb_func_start sub_80E42D0
-sub_80E42D0: @ 80E42D0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080E42F0 @ =gAnimBankAttacker
- ldr r1, _080E42F4 @ =gBankAttacker
- ldrb r1, [r1]
- strb r1, [r2]
- ldr r2, _080E42F8 @ =gAnimBankTarget
- ldr r1, _080E42FC @ =gEffectBank
- ldrb r1, [r1]
- strb r1, [r2]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080E42F0: .4byte gAnimBankAttacker
-_080E42F4: .4byte gBankAttacker
-_080E42F8: .4byte gAnimBankTarget
-_080E42FC: .4byte gEffectBank
- thumb_func_end sub_80E42D0
-
- thumb_func_start sub_80E4300
-sub_80E4300: @ 80E4300
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080E4318
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080E434E
-_080E4318:
- ldr r0, _080E4354 @ =gTasks
- lsls r3, r4, 2
- adds r3, r4
- lsls r3, 3
- adds r3, r0
- ldr r1, _080E4358 @ =gAnimBankAttacker
- ldrb r0, [r1]
- lsls r0, 2
- ldr r2, _080E435C @ =gSharedMem + 0x17800
- adds r0, r2
- ldr r0, [r0]
- lsls r0, 31
- lsrs r0, 31
- strh r0, [r3, 0x8]
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1]
- movs r2, 0x1
- orrs r0, r2
- strb r0, [r1]
- ldr r0, _080E4360 @ =sub_80E4368
- str r0, [r3]
- ldr r1, _080E4364 @ =gAnimVisualTaskCount
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
-_080E434E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E4354: .4byte gTasks
-_080E4358: .4byte gAnimBankAttacker
-_080E435C: .4byte gSharedMem + 0x17800
-_080E4360: .4byte sub_80E4368
-_080E4364: .4byte gAnimVisualTaskCount
- thumb_func_end sub_80E4300
-
- thumb_func_start sub_80E4368
-sub_80E4368: @ 80E4368
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080E43B0 @ =gBattleAnimArgs
- movs r2, 0xE
- ldrsh r1, [r0, r2]
- movs r0, 0x80
- lsls r0, 5
- cmp r1, r0
- bne _080E43A8
- ldr r0, _080E43B4 @ =gAnimBankAttacker
- ldrb r3, [r0]
- lsls r3, 2
- ldr r0, _080E43B8 @ =gSharedMem + 0x17800
- adds r3, r0
- ldr r1, _080E43BC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0, 0x8]
- movs r1, 0x1
- ands r1, r0
- ldrb r2, [r3]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- adds r0, r4, 0
- bl DestroyTask
-_080E43A8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E43B0: .4byte gBattleAnimArgs
-_080E43B4: .4byte gAnimBankAttacker
-_080E43B8: .4byte gSharedMem + 0x17800
-_080E43BC: .4byte gTasks
- thumb_func_end sub_80E4368
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index 185f85f33..c5c6eb144 100644
--- a/data/battle_anim_scripts.s
+++ b/data/battle_anim_scripts.s
@@ -1,3 +1,5 @@
+#define rgb(red, green, blue) (((blue)<<10)|((green)<<5)|(red))
+
#include "constants/battle_anim.h"
#include "constants/moves.h"
#include "constants/songs.h"
@@ -5,6 +7,7 @@
.include "include/macros/battle_anim.inc"
.include "constants/constants.inc"
+
.section script_data, "aw", %progbits
gSingingMoves:: @ 81C7160
@@ -788,7 +791,7 @@ Move_DOUBLE_EDGE: @ 81C817A
waitplaysewithpan SE_W207, 192, 8
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 18, 6, 2, 4
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 16, 16, 32767
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 0, 16, 16, rgb(31, 31, 31)
createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 20, 0, 0, 4
delay 3
waitforvisualfinish
@@ -800,7 +803,7 @@ Move_DOUBLE_EDGE: @ 81C817A
createvisualtask sub_80A8E04, 2, 8, -256, 1, 0
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 4, 0, 12, 1
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 4, 0, 12, 1
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 16, 0, 32767
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 16, 0, rgb(31, 31, 31)
waitforvisualfinish
createvisualtask sub_80A8E04, 2, 8, -256, 0, 1
createvisualtask sub_80A8E04, 2, 8, -256, 1, 1
@@ -938,7 +941,7 @@ Move_MEGA_PUNCH: @ 81C854D
loadspritegfx 10143
monbg ANIM_BANK_TARGET
delay 2
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 0, 16, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 0, 0, 16, rgb(0, 0, 0)
setalpha 12, 8
playsewithpan SE_W025, 63
createsprite gMegaPunchKickSpriteTemplate, 3, 0, 0, 0, 50
@@ -981,7 +984,7 @@ Move_MEGA_KICK: @ 81C8627
loadspritegfx 10143
monbg ANIM_BANK_TARGET
delay 2
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 0, 16, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 0, 0, 16, rgb(0, 0, 0)
setalpha 12, 8
playsewithpan SE_W025, 63
createsprite gMegaPunchKickSpriteTemplate, 3, 0, 0, 1, 50
@@ -1673,7 +1676,7 @@ Move_PROTECT: @ 81C97B5
Move_DETECT: @ 81C97D2
loadspritegfx 10071
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 9, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 9, rgb(0, 0, 0)
waitforvisualfinish
createvisualtask sub_80E2A38, 10, 2, 1, 0, 9, 32767
delay 18
@@ -1681,7 +1684,7 @@ Move_DETECT: @ 81C97D2
createsprite gBattleAnimSpriteTemplate_83930F4, 13, 20, -20
waitforvisualfinish
delay 10
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 9, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 9, 0, rgb(0, 0, 0)
createvisualtask sub_80E2A38, 10, 2, 2, 9, 0, 32767
waitforvisualfinish
end
@@ -2079,12 +2082,12 @@ Move_MEAN_LOOK: @ 81CA31A
loadspritegfx 10187
monbg ANIM_BANK_DEF_PARTNER
playsewithpan SE_W060, 192
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 16, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 16, rgb(0, 0, 0)
loopsewithpan SE_W109, 63, 15, 4
waitplaysewithpan SE_W043, 63, 85
createsprite gBattleAnimSpriteTemplate_8402264, 2
delay 120
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 16, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 16, 0, rgb(0, 0, 0)
delay 30
clearmonbg ANIM_BANK_DEF_PARTNER
waitforvisualfinish
@@ -3350,7 +3353,7 @@ Move_MOONLIGHT: @ 81CBDAE
loadspritegfx 10195
loadspritegfx 10031
setalpha 0, 16
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 16, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 16, rgb(0, 0, 0)
waitforvisualfinish
createsprite gBattleAnimSpriteTemplate_83D6FC8, 2, 120, 56
createvisualtask sub_8079670, 3, 0, 16, 16, 0, 1
@@ -3555,7 +3558,7 @@ Move_CHARGE: @ 81CC1D0
loadspritegfx 10213
monbg ANIM_BANK_ATTACKER
setalpha 12, 8
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 4, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 4, rgb(0, 0, 0)
waitforvisualfinish
createvisualtask sub_80D6B3C, 2, 0, 60, 2, 12
playsewithpan SE_W268, 192
@@ -3579,7 +3582,7 @@ Move_CHARGE: @ 81CC1D0
createsprite gBattleAnimSpriteTemplate_83D9A9C, 2, 0, -16, -16
playsewithpan SE_W085B, 192
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 4, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 4, 4, 0, rgb(0, 0, 0)
clearmonbg ANIM_BANK_ATTACKER
blendoff
end
@@ -3711,13 +3714,13 @@ _81CC4A7:
playsewithpan SE_W233, 63
delay 20
createvisualtask AnimTask_WindUpLunge, 2, ANIM_BANK_ATTACKER, -24, 0, 24, 10, 24, 3
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 6, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 6, rgb(0, 0, 0)
delay 37
createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 1
createsprite gFistFootSpriteTemplate, 2, 0, 0, 10, 1, 0
playsewithpan SE_W233B, 63
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 6, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 6, 0, rgb(0, 0, 0)
waitforvisualfinish
clearmonbg ANIM_BANK_TARGET
end
@@ -3739,7 +3742,7 @@ _81CC576:
playsewithpan SE_W233, 63
delay 20
createvisualtask AnimTask_WindUpLunge, 2, ANIM_BANK_ATTACKER, -24, 0, 24, 10, 24, 3
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 6, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 6, rgb(0, 0, 0)
delay 37
createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 1
createsprite gFistFootSpriteTemplate, 2, 0, 0, 10, 1, 0
@@ -3751,7 +3754,7 @@ _81CC576:
createsprite gBattleAnimSpriteTemplate_83DA0B8, 2, 1, 3, 8, 12
playsewithpan SE_W280, 63
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 6, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 6, 0, rgb(0, 0, 0)
waitforvisualfinish
clearmonbg ANIM_BANK_TARGET
end
@@ -3790,7 +3793,7 @@ Move_ENDEAVOR: @ 81CC6DA
Move_ERUPTION: @ 81CC74F
loadspritegfx 10201
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 2, 0, 4, 31
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 31, 2, 0, 4, rgb(31, 0, 0)
waitforvisualfinish
createvisualtask sub_80D5470, 2
waitplaysewithpan SE_W153, 192, 60
@@ -3810,7 +3813,7 @@ Move_ERUPTION: @ 81CC74F
createvisualtask sub_80E1864, 5, 4, 8, 60
loopsewithpan SE_W088, 63, 16, 12
delay 80
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 40, 31, 4, 4, 0, 31
+ createsprite gSimplePaletteBlendSpriteTemplate, 40, 31, 4, 4, 0, rgb(31, 0, 0)
end
Move_SKILL_SWAP: @ 81CC81C
@@ -3883,13 +3886,13 @@ Move_TAIL_GLOW: @ 81CC918
loadspritegfx 10212
monbg ANIM_BANK_ATTACKER
setalpha 12, 8
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 4, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 4, rgb(0, 0, 0)
waitforvisualfinish
createsprite gBattleAnimSpriteTemplate_83DAC10, 66, 0
delay 18
loopsewithpan SE_W234, 192, 16, 6
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 4, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 4, 4, 0, rgb(0, 0, 0)
clearmonbg ANIM_BANK_ATTACKER
blendoff
delay 1
@@ -4126,7 +4129,7 @@ Move_AROMATHERAPY: @ 81CCFAB
loadspritegfx 10159
loadspritegfx 10203
loadspritegfx 10049
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 1, 0, 0, 7, 13293
+ createsprite gSimplePaletteBlendSpriteTemplate, 0, 1, 0, 0, 7, rgb(13, 31, 12)
delay 1
monbg ANIM_BANK_ATTACKER
delay 1
@@ -4144,7 +4147,7 @@ Move_AROMATHERAPY: @ 81CCFAB
waitforvisualfinish
clearmonbg ANIM_BANK_ATTACKER
delay 1
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 1, 0, 7, 0, 13293
+ createsprite gSimplePaletteBlendSpriteTemplate, 0, 1, 0, 7, 0, rgb(13, 31, 12)
delay 1
playsewithpan SE_W287, 192
createvisualtask sub_81300A4, 2, 1
@@ -4155,7 +4158,7 @@ Move_AROMATHERAPY: @ 81CCFAB
createsprite gBattleAnimSpriteTemplate_83D6CA0, 16, 12, -5, 0, 0, 32, 60, 1
waitforvisualfinish
playsewithpan SE_REAPOKE, 192
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 43, 3, 10, 0, 13293
+ createsprite gSimplePaletteBlendSpriteTemplate, 0, 43, 3, 10, 0, rgb(13, 31, 12)
createsprite gBattleAnimSpriteTemplate_83D7974, 16, 0, 0, 0, 1
waitforvisualfinish
end
@@ -4222,7 +4225,7 @@ Move_ODOR_SLEUTH: @ 81CD1FF
Move_GRASS_WHISTLE: @ 81CD249
loadspritegfx 10072
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 4, 13298
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 4, rgb(18, 31, 12)
waitforvisualfinish
createvisualtask sub_80CEA20, 2
waitforvisualfinish
@@ -4253,19 +4256,19 @@ Move_GRASS_WHISTLE: @ 81CD249
delay 4
waitforvisualfinish
createvisualtask sub_80CEAD8, 2
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 4, 0, 13298
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 4, 4, 0, rgb(18, 31, 12)
waitforvisualfinish
end
Move_TICKLE: @ 81CD33C
loadspritegfx 10218
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 0, 0, 16, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 2, 0, 0, 16, rgb(0, 0, 0)
waitforvisualfinish
createsprite gBattleAnimSpriteTemplate_83D7B94, 0, -16, -8
createsprite gBattleAnimSpriteTemplate_83D7B94, 0, 16, -8
playsewithpan SE_W197, 192
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 0, 16, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 2, 0, 16, 0, rgb(0, 0, 0)
waitforvisualfinish
delay 20
createvisualtask AnimTask_SwayMon, 3, 0, 6, 1280, 3, 0
@@ -4540,7 +4543,7 @@ Move_SHOCK_WAVE: @ 81CD867
loadspritegfx 10037
monbg ANIM_BANK_ATTACKER
setalpha 12, 8
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 4, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 4, rgb(0, 0, 0)
waitforvisualfinish
createvisualtask sub_80D6B3C, 2, 0, 20, 0, 2
playsewithpan SE_W268, 192
@@ -4655,7 +4658,7 @@ Move_ICE_PUNCH: @ 81CDB3E
loadspritegfx 10141
loadspritegfx 10135
loadspritegfx 10143
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 7, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 7, rgb(0, 0, 0)
createvisualtask sub_80E2A38, 10, 4, 2, 0, 9, 32588
delay 20
playsewithpan SE_W081, 63
@@ -4680,7 +4683,7 @@ Move_ICE_PUNCH: @ 81CDB3E
delay 5
createvisualtask sub_80E2A38, 10, 4, 2, 9, 0, 32588
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 7, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 0, 7, 0, rgb(0, 0, 0)
waitforvisualfinish
clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
@@ -4773,7 +4776,7 @@ Move_THUNDER: @ 81CDDCE
waitbgfadeout
createvisualtask sub_80E3A58, 5, -256, 0, 1, -1
waitbgfadein
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 16, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 16, rgb(0, 0, 0)
delay 16
createvisualtask sub_80E2324, 2, 257, 257, 257
playsewithpan SE_W086, 63
@@ -4817,7 +4820,7 @@ Move_THUNDER: @ 81CDDCE
delay 2
createvisualtask sub_80E2324, 2, 257, 257, 257
delay 1
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 130, 1, 2, 16, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 130, 1, 2, 16, 0, rgb(0, 0, 0)
waitforvisualfinish
restorebg
waitbgfadeout
@@ -4831,7 +4834,7 @@ Move_THUNDER_PUNCH: @ 81CDF28
loadspritegfx 10037
monbg ANIM_BANK_TARGET
setalpha 12, 8
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 16, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 16, rgb(0, 0, 0)
waitforvisualfinish
playsewithpan SE_W004, 63
createsprite gFistFootSpriteTemplate, 132, 0, 0, 8, 1, 0
@@ -4851,7 +4854,7 @@ Move_THUNDER_PUNCH: @ 81CDF28
createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 3, 15, 1
createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 2
delay 1
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 16, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 16, 0, rgb(0, 0, 0)
delay 20
waitforvisualfinish
clearmonbg ANIM_BANK_TARGET
@@ -5349,7 +5352,7 @@ Move_ICE_BEAM: @ 81CEB4D
monbgprio_28 1
setalpha 12, 8
loadspritegfx 10141
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 7, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 7, rgb(0, 0, 0)
waitforvisualfinish
createsoundtask sub_812B058, 183, -64, 63, 4, 4, 0, 10
createsprite gBattleAnimSpriteTemplate_83D9C3C, 2, 20, 12, 0, 12, 20
@@ -5358,7 +5361,7 @@ Move_ICE_BEAM: @ 81CEB4D
call _81CEC4E
call _81CEC4E
call _81CEC4E
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 4, -31, 0, 7, 32384
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 4, -31, 0, 7, rgb(0, 20, 31)
createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 25, 1
call _81CEC4E
call _81CEC4E
@@ -5374,9 +5377,9 @@ Move_ICE_BEAM: @ 81CEB4D
waitforvisualfinish
delay 20
call Unknown_81D5C36
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 4, 5, 7, 0, 32384
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 4, 5, 7, 0, rgb(0, 20, 31)
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 7, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 0, 7, 0, rgb(0, 0, 0)
waitforvisualfinish
clearmonbg ANIM_BANK_TARGET
blendoff
@@ -5574,7 +5577,7 @@ _81CF13F:
Move_POWDER_SNOW: @ 81CF146
loadspritegfx 10141
monbg ANIM_BANK_DEF_PARTNER
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 1, 0, 3, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 31, 1, 0, 3, rgb(0, 0, 0)
waitforvisualfinish
panse_1B SE_W016, 192, 63, 2, 0
call _81CF190
@@ -5586,7 +5589,7 @@ Move_POWDER_SNOW: @ 81CF146
waitforvisualfinish
clearmonbg ANIM_BANK_DEF_PARTNER
delay 20
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 1, 3, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 31, 1, 3, 0, rgb(0, 0, 0)
end
_81CF190:
createsprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, 0, 0, 0, 56, 4, 4, 1
@@ -5700,7 +5703,7 @@ Move_ABSORB: @ 81CF427
monbg ANIM_BANK_DEF_PARTNER
monbgprio_2A ANIM_BANK_TARGET
setalpha 12, 8
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 4, 13293
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 4, rgb(13, 31, 12)
waitforvisualfinish
playsewithpan SE_W071, 63
createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2
@@ -5713,7 +5716,7 @@ Move_ABSORB: @ 81CF427
delay 15
call Unknown_81D5EF5
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 4, 0, 13293
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 4, 0, rgb(13, 31, 12)
waitforvisualfinish
clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
@@ -5752,7 +5755,7 @@ Move_MEGA_DRAIN: @ 81CF53F
monbg ANIM_BANK_DEF_PARTNER
monbgprio_2A ANIM_BANK_TARGET
setalpha 12, 8
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 8, 13293
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 8, rgb(13, 31, 12)
waitforvisualfinish
playsewithpan SE_W071, 63
createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 1
@@ -5765,7 +5768,7 @@ Move_MEGA_DRAIN: @ 81CF53F
delay 15
call Unknown_81D5EF5
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 8, 0, 13293
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 8, 0, rgb(13, 31, 12)
waitforvisualfinish
clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
@@ -5812,7 +5815,7 @@ Move_GIGA_DRAIN: @ 81CF6CF
monbg ANIM_BANK_DEF_PARTNER
monbgprio_2A ANIM_BANK_TARGET
setalpha 12, 8
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 12, 13293
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 12, rgb(13, 31, 12)
waitforvisualfinish
playsewithpan SE_W071, 63
createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 0
@@ -5825,7 +5828,7 @@ Move_GIGA_DRAIN: @ 81CF6CF
delay 15
call Unknown_81D5EF5
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 12, 0, 13293
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 12, 0, rgb(13, 31, 12)
waitforvisualfinish
clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
@@ -5890,14 +5893,14 @@ Move_LEECH_LIFE: @ 81CF8D7
delay 2
createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 7, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 7, rgb(0, 0, 0)
waitforvisualfinish
call _81CF496
waitforvisualfinish
delay 15
call Unknown_81D5EF5
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 7, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 7, 0, rgb(0, 0, 0)
waitforvisualfinish
clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
@@ -6358,14 +6361,14 @@ Move_WHIRLPOOL: @ 81D038C
monbgprio_28 1
setalpha 12, 8
delay 0
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 0, 7, 23968
+ createsprite gSimplePaletteBlendSpriteTemplate, 0, 4, 2, 0, 7, rgb(0, 13, 23)
playsewithpan SE_W250, 63
createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 50, 1
call _81D03E4
call _81D03E4
call _81D03E4
delay 12
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 7, 0, 23968
+ createsprite gSimplePaletteBlendSpriteTemplate, 0, 4, 2, 7, 0, rgb(0, 13, 23)
waitforvisualfinish
clearmonbg ANIM_BANK_DEF_PARTNER
end
@@ -7406,7 +7409,7 @@ Move_STRING_SHOT: @ 81D1C98
loadspritegfx 10180
monbg ANIM_BANK_DEF_PARTNER
delay 0
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 5, 1, 2, 0, 9, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 5, 1, 2, 0, 9, rgb(0, 0, 0)
waitforvisualfinish
loopsewithpan SE_W081, 192, 9, 6
call _81D1D56
@@ -7438,7 +7441,7 @@ Move_STRING_SHOT: @ 81D1C98
clearmonbg ANIM_BANK_DEF_PARTNER
delay 1
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 5, 1, 2, 9, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 5, 1, 2, 9, 0, rgb(0, 0, 0)
end
_81D1D56:
createsprite gBattleAnimSpriteTemplate_83DAB28, 130, 20, 0, 512, 20, 1
@@ -7450,7 +7453,7 @@ Move_SPIDER_WEB: @ 81D1D6A
loadspritegfx 10180
monbg ANIM_BANK_DEF_PARTNER
delay 0
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 5, 1, 2, 0, 9, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 5, 1, 2, 0, 9, rgb(0, 0, 0)
waitforvisualfinish
monbgprio_28 1
loopsewithpan SE_W081, 192, 9, 6
@@ -7474,7 +7477,7 @@ Move_SPIDER_WEB: @ 81D1D6A
waitforvisualfinish
clearmonbg ANIM_BANK_DEF_PARTNER
delay 1
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 5, 1, 2, 9, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 5, 1, 2, 9, 0, rgb(0, 0, 0)
end
_81D1DF7:
createsprite gBattleAnimSpriteTemplate_83DAB28, 130, 20, 0, 512, 20, 0
@@ -7626,7 +7629,7 @@ _81D2084:
createsprite gBattleAnimSpriteTemplate_83DAF38, 130
createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 14, 1
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 16, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 16, 0, rgb(0, 0, 0)
waitforvisualfinish
clearmonbg ANIM_BANK_DEF_PARTNER
end
@@ -7659,7 +7662,7 @@ Move_SOFT_BOILED: @ 81D213B
delay 120
delay 7
playsewithpan SE_W030, 192
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 3, 10, 0, 31500
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 31, 3, 10, 0, rgb(12, 24, 30)
createsprite gBattleAnimSpriteTemplate_83D7928, 3, 31, 16, 0, 1
delay 8
createsprite gBattleAnimSpriteTemplate_83D7928, 3, 31, 16, 0, 1
@@ -7725,12 +7728,12 @@ Move_FAKE_OUT: @ 81D23A8
createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 5, 1
createvisualtask sub_80D1E38, 3
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 16, 0, 32767
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 16, 0, rgb(31, 31, 31)
end
Move_SCARY_FACE: @ 81D23E3
loadspritegfx 10218
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 27, 3, 0, 16, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 27, 3, 0, 16, rgb(0, 0, 0)
playsewithpan SE_W060, 192
waitforvisualfinish
delay 10
@@ -7742,7 +7745,7 @@ Move_SCARY_FACE: @ 81D23E3
waitforvisualfinish
createvisualtask sub_80D60B4, 3, 20, 1, 0
playsewithpan SE_W081B, 63
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 27, 3, 16, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 27, 3, 16, 0, rgb(0, 0, 0)
waitforvisualfinish
end
@@ -7910,13 +7913,13 @@ Move_PERISH_SONG: @ 81D2784
delay 20
panse_1B SE_W195, 192, 63, 2, 0
delay 80
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 16, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 0, 16, rgb(0, 0, 0)
createvisualtask sub_80E0E24, 5, 4, 0
createvisualtask sub_80E0E24, 5, 5, 0
createvisualtask sub_80E0E24, 5, 6, 0
createvisualtask sub_80E0E24, 5, 7, 0
delay 100
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 16, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 16, 0, rgb(0, 0, 0)
createvisualtask sub_80E0E24, 5, 4, 1
createvisualtask sub_80E0E24, 5, 5, 1
createvisualtask sub_80E0E24, 5, 6, 1
@@ -7991,7 +7994,7 @@ Move_TRI_ATTACK: @ 81D2A0F
delay 20
createsoundtask sub_812B058, 220, -64, 63, 5, 6, 0, 7
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 16, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 16, rgb(0, 0, 0)
delay 16
loadspritegfx 10033
createsprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, -1, 0
@@ -8027,7 +8030,7 @@ Move_TRI_ATTACK: @ 81D2A0F
waitforvisualfinish
loadspritegfx 10141
call Unknown_81D5C36
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 16, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 16, 0, rgb(0, 0, 0)
waitforvisualfinish
end
@@ -8113,7 +8116,7 @@ Move_TRICK: @ 81D2CE8
Move_WISH: @ 81D2D66
loadspritegfx 10233
loadspritegfx 10049
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 10, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 0, 10, rgb(0, 0, 0)
waitforvisualfinish
panse_27 SE_W115, 63, 192, 253, 0
createsprite gBattleAnimSpriteTemplate_84024E8, 40
@@ -8122,7 +8125,7 @@ Move_WISH: @ 81D2D66
loopsewithpan SE_W215, 192, 16, 3
call Unknown_81D5ECA
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 10, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 10, 0, rgb(0, 0, 0)
waitforvisualfinish
end
@@ -8134,7 +8137,7 @@ Move_STOCKPILE: @ 81D2DAE
call _81D2DEC
call _81D2DEC
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 0, 12, 0, 32767
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 2, 0, 12, 0, rgb(31, 31, 31)
end
_81D2DEC:
createsprite gBattleAnimSpriteTemplate_83D6350, 2, 55, 55, 13
@@ -8319,7 +8322,7 @@ _81D3144:
Move_HYPER_BEAM: @ 81D31EA
loadspritegfx 10147
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 0, 16, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 4, 0, 16, rgb(0, 0, 0)
waitforvisualfinish
delay 10
playsewithpan SE_W063, 192
@@ -8359,7 +8362,7 @@ Move_HYPER_BEAM: @ 81D31EA
call _81D331B
createvisualtask sub_80E2A38, 10, 4, 2, 11, 0, 26425
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 16, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 4, 16, 0, rgb(0, 0, 0)
end
_81D331B:
createsprite gBattleAnimSpriteTemplate_83D6394, 130
@@ -8415,7 +8418,7 @@ _81D3415:
Move_ROLE_PLAY: @ 81D3428
monbg ANIM_BANK_ATK_PARTNER
createvisualtask sub_80E2A38, 10, 4, 2, 0, 16, 32767
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 10, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 0, 10, rgb(0, 0, 0)
waitforvisualfinish
playsewithpan SE_W161, 192
waitplaysewithpan SE_W197, 192, 30
@@ -8424,7 +8427,7 @@ Move_ROLE_PLAY: @ 81D3428
clearmonbg ANIM_BANK_ATK_PARTNER
createvisualtask sub_80E2A38, 10, 4, 2, 16, 0, 32767
delay 8
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 10, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 10, 0, rgb(0, 0, 0)
end
Move_REFRESH: @ 81D3485
@@ -8437,7 +8440,7 @@ Move_REFRESH: @ 81D3485
call Unknown_81D5ECA
waitforvisualfinish
playsewithpan SE_REAPOKE, 192
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 3, 10, 0, 31500
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 31, 3, 10, 0, rgb(12, 24, 30)
createsprite gBattleAnimSpriteTemplate_83D7928, 3, 0, 0, 0, 0
end
@@ -8472,7 +8475,7 @@ Move_HYPER_VOICE: @ 81D3550
end
_81D3562:
createvisualtask sub_812B2B8, 5
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 3, 8, 0, 1023
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 31, 3, 8, 0, rgb(31, 31, 0)
createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, ANIM_BANK_ATTACKER, 0
createsprite gBattleAnimSpriteTemplate_83D798C, 0, 45, 0, 0, 0, 0, 0, 1
createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 1, 0, 6, 1
@@ -8482,14 +8485,14 @@ _81D3562:
Move_SAND_TOMB: @ 81D35D2
loadspritegfx 10074
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 0, 7, 563
+ createsprite gSimplePaletteBlendSpriteTemplate, 0, 4, 2, 0, 7, rgb(19, 17, 0)
createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 43, 1
playsewithpan SE_W328, 63
call _81D361F
call _81D361F
call _81D361F
delay 22
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 7, 0, 563
+ createsprite gSimplePaletteBlendSpriteTemplate, 0, 4, 2, 7, 0, rgb(19, 17, 0)
waitforvisualfinish
end
_81D361F:
@@ -8755,7 +8758,7 @@ Move_FRENZY_PLANT: @ 81D3C7B
monbg ANIM_BANK_TARGET
monbgprio_28 1
setalpha 12, 8
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 1, 2, 0, 5, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 0, 1, 2, 0, 5, rgb(0, 0, 0)
waitforvisualfinish
createsprite gBattleAnimSpriteTemplate_83D6670, 2, 10, 8, 2, 0, 0, 100
playsewithpan SE_W010, 192
@@ -8803,7 +8806,7 @@ Move_FRENZY_PLANT: @ 81D3C7B
createsprite gBasicHitSplatSpriteTemplate, 2, 0, 10, 1, 1
playsewithpan SE_W003, 63
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 1, 2, 5, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 0, 1, 2, 5, 0, rgb(0, 0, 0)
waitforvisualfinish
clearmonbg ANIM_BANK_TARGET
blendoff
@@ -8945,7 +8948,7 @@ _81D401E:
createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
goto _81D3F67
_81D4139:
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 0, 6, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 0, 0, 6, rgb(0, 0, 0)
waitforvisualfinish
createsprite gVerticalDipSpriteTemplate, 2, 16, 1, ANIM_BANK_ATTACKER
createvisualtask sub_812B340, 5, 167, -64
@@ -9002,7 +9005,7 @@ _81D4139:
createsprite gBasicHitSplatSpriteTemplate, 2, -5, 3, 1, 0
createvisualtask sub_812B30C, 5, 141, 63
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 6, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 0, 6, 0, rgb(0, 0, 0)
goto _81D3F67
_81D4371:
createsprite gVerticalDipSpriteTemplate, 2, 4, 3, ANIM_BANK_ATTACKER
@@ -9246,7 +9249,7 @@ Move_OVERHEAT: @ 81D4AFC
loadspritegfx 10135
monbg ANIM_BANK_DEF_PARTNER
setalpha 12, 18
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 5, 28
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 5, rgb(28, 0, 0)
waitforvisualfinish
createvisualtask sub_80E4028, 5, 0, 1
delay 1
@@ -9255,7 +9258,7 @@ Move_OVERHEAT: @ 81D4AFC
playsewithpan SE_W082, 192
createvisualtask sub_80E4028, 5, 1, 0
delay 1
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 1, 0, 13, 28
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 2, 1, 0, 13, rgb(28, 0, 0)
createvisualtask AnimTask_ShakeMon, 5, 0, 2, 0, 15, 1
waitforvisualfinish
playsewithpan SE_W172B, 192
@@ -9301,12 +9304,12 @@ Move_OVERHEAT: @ 81D4AFC
playsewithpan SE_W007, 63
createvisualtask sub_80E4178, 5, 1
delay 1
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, -1, 0, 13, 19026
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 2, -1, 0, 13, rgb(18, 18, 18)
createvisualtask AnimTask_ShakeMon, 5, 0, 3, 0, 15, 1
waitforvisualfinish
createvisualtask sub_80E40D0, 5, 0, 1
delay 1
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 5, 0, 28
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 5, 0, rgb(28, 0, 0)
waitforvisualfinish
clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
@@ -9314,7 +9317,7 @@ Move_OVERHEAT: @ 81D4AFC
delay 15
createvisualtask sub_80E40D0, 5, 1, 0
delay 1
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 0, 13, 0, 19026
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 2, 0, 13, 0, rgb(18, 18, 18)
waitforvisualfinish
end
@@ -9456,7 +9459,7 @@ Move_WATER_PULSE: @ 81D50D2
monbg ANIM_BANK_TARGET
monbgprio_28 1
playsewithpan SE_W145C, 192
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 0, 7, 29472
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 0, 0, 7, rgb(0, 25, 28)
delay 10
createsprite gBattleAnimSpriteTemplate_83D9408, 66, 100, 100, 8, 1, 20, 40, 0
createsprite gBattleAnimSpriteTemplate_83D9408, 66, 20, 100, 16, 2, 10, 35, 1
@@ -9476,7 +9479,7 @@ Move_WATER_PULSE: @ 81D50D2
delay 13
createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 8, 18, 1
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 7, 0, 29472
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 7, 0, rgb(0, 25, 28)
waitforvisualfinish
clearmonbg ANIM_BANK_DEF_PARTNER
end
@@ -9534,7 +9537,7 @@ Move_DOOM_DESIRE: @ 81D52CB
delay 1
monbg ANIM_BANK_ATK_PARTNER
createvisualtask sub_80E0E24, 5, 1, 0
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 4, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 4, rgb(0, 0, 0)
waitforvisualfinish
setalpha 8, 8
playsewithpan SE_W060, 192
@@ -9542,7 +9545,7 @@ Move_DOOM_DESIRE: @ 81D52CB
waitforvisualfinish
delay 20
createvisualtask sub_80E0E24, 5, 1, 1
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 4, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 4, 0, rgb(0, 0, 0)
waitforvisualfinish
clearmonbg ANIM_BANK_ATK_PARTNER
blendoff
@@ -9550,7 +9553,7 @@ Move_DOOM_DESIRE: @ 81D52CB
Unknown_81D532F: @ 81D532F
loadspritegfx 10198
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 16, 32767
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 0, 16, rgb(31, 31, 31)
waitforvisualfinish
delay 10
createvisualtask sub_812E14C, 5
@@ -9577,7 +9580,7 @@ Unknown_81D532F: @ 81D532F
playsewithpan SE_W120, 63
createsprite gBattleAnimSpriteTemplate_83D7828, 3, 16, 16, 1, 1
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 16, 0, 32767
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 16, 0, rgb(31, 31, 31)
waitforvisualfinish
end
@@ -10138,13 +10141,13 @@ ElectricityEffect: @ 81D6100
createsprite gElectricitySpriteTemplate, 130, -20, 15, 5, 1
return
-Unknown_81D618B: @ 81D618B
+ConfusionEffect: @ 81D618B
loopsewithpan SE_W146, 63, 13, 6
- createsprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 0, 3, 90
- createsprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 51, 3, 90
- createsprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 102, 3, 90
- createsprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 153, 3, 90
- createsprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 204, 3, 90
+ createsprite gConfusionDuckSpriteTemplate, 130, 0, -15, 0, 3, 90
+ createsprite gConfusionDuckSpriteTemplate, 130, 0, -15, 51, 3, 90
+ createsprite gConfusionDuckSpriteTemplate, 130, 0, -15, 102, 3, 90
+ createsprite gConfusionDuckSpriteTemplate, 130, 0, -15, 153, 3, 90
+ createsprite gConfusionDuckSpriteTemplate, 130, 0, -15, 204, 3, 90
return
Unknown_81D61E7: @ 81D61E7
@@ -10218,7 +10221,7 @@ StatusCondition_Poison: @ 81D6270
StatusCondition_Confusion: @ 81D629B
loadspritegfx 10073
- call Unknown_81D618B
+ call ConfusionEffect
end
StatusCondition_Burn: @ 81D62A4
@@ -10382,13 +10385,13 @@ _81D6522:
monbgprio_28 1
setalpha 12, 8
delay 0
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 0, 7, 23968
+ createsprite gSimplePaletteBlendSpriteTemplate, 0, 4, 2, 0, 7, rgb(0, 13, 23)
playsewithpan SE_W250, 63
createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 30, 1
call _81D03E4
call _81D03E4
delay 12
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 7, 0, 23968
+ createsprite gSimplePaletteBlendSpriteTemplate, 0, 4, 2, 7, 0, rgb(0, 13, 23)
waitforvisualfinish
stopsound
clearmonbg ANIM_BANK_DEF_PARTNER
@@ -10411,13 +10414,13 @@ _81D6576:
end
_81D65D3:
loadspritegfx 10074
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 0, 7, 563
+ createsprite gSimplePaletteBlendSpriteTemplate, 0, 4, 2, 0, 7, rgb(19, 17, 0)
createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 30, 1
playsewithpan SE_W328, 63
call _81D361F
call _81D361F
delay 22
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 7, 0, 563
+ createsprite gSimplePaletteBlendSpriteTemplate, 0, 4, 2, 7, 0, rgb(19, 17, 0)
waitforvisualfinish
stopsound
end
@@ -10439,7 +10442,7 @@ General_ItemEffect: @ 81D661C
call Unknown_81D5ECA
waitforvisualfinish
playsewithpan SE_REAPOKE, 192
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 3, 7, 0, 26609
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 2, 3, 7, 0, rgb(17, 31, 25)
createsprite gBattleAnimSpriteTemplate_83D7928, 3, 0, 0, 0, 0
waitforvisualfinish
end
@@ -10484,11 +10487,11 @@ General_SmokeballEscape: @ 81D6690
end
General_HangedOn: @ 81D676E
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 2, 7, 0, 9, 31
+ createsprite gSimplePaletteBlendSpriteTemplate, 0, 2, 7, 0, 9, rgb(31, 0, 0)
playsewithpan SE_W082, 192
createvisualtask sub_812FC68, 5, 30, 128, 0, 1, 2, 0, 1
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 2, 4, 9, 0, 31
+ createsprite gSimplePaletteBlendSpriteTemplate, 0, 2, 4, 9, 0, rgb(31, 0, 0)
waitforvisualfinish
delay 6
createsprite gSlideMonToOriginalPosSpriteTemplate, 0, 0, 0, 15
@@ -10587,7 +10590,7 @@ General_FutureSightHit: @ 81D68D5
General_DoomDesireHit: @ 81D6934
createvisualtask sub_80E42B0, 2
loadspritegfx 10198
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 16, 32767
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 0, 16, rgb(31, 31, 31)
waitforvisualfinish
delay 10
createvisualtask sub_812E14C, 5
@@ -10614,7 +10617,7 @@ General_DoomDesireHit: @ 81D6934
playsewithpan SE_W120, 63
createsprite gBattleAnimSpriteTemplate_83D7828, 3, 16, 16, 1, 1
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 16, 0, 32767
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 16, 0, rgb(31, 31, 31)
waitforvisualfinish
end
@@ -10636,7 +10639,7 @@ General_IngrainHeal: @ 81D6A39
loadspritegfx 10031
monbg ANIM_BANK_DEF_PARTNER
setalpha 12, 8
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 4, 13293
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 4, rgb(13, 31, 12)
waitforvisualfinish
delay 3
call _81CF496
@@ -10644,7 +10647,7 @@ General_IngrainHeal: @ 81D6A39
delay 15
call Unknown_81D5EF5
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 4, 0, 13293
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 4, 0, rgb(13, 31, 12)
waitforvisualfinish
clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
@@ -10653,14 +10656,14 @@ General_IngrainHeal: @ 81D6A39
General_WishHeal: @ 81D6A7C
loadspritegfx 10031
loadspritegfx 10049
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 10, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 0, 10, rgb(0, 0, 0)
waitforvisualfinish
playsewithpan SE_W025, 192
call Unknown_81D5ECA
waitforvisualfinish
call Unknown_81D5EF5
waitforvisualfinish
- createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 10, 0, 0
+ createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 3, 10, 0, rgb(0, 0, 0)
end
Unknown_81D6AB6: @ 81D6AB6
diff --git a/include/battle_anim.h b/include/battle_anim.h
index b5b85625e..e3a3bd7b1 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -34,6 +34,15 @@ struct UnknownStruct3
u8 filler1[0xB];
};
+struct EWRAM_19348_Struct
+{
+ /*0x00*/ u16 species2;
+ /*0x02*/ u16 species;
+ /*0x04*/ u8 filler4[0x8];
+ /*0x0C*/ u32 otId;
+ /*0x10*/ u32 personality;
+};
+
extern void (*gAnimScriptCallback)(void);
extern u8 gAnimScriptActive;
extern u8 gAnimFriendship;
@@ -129,5 +138,6 @@ s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
s16 sub_8077104(s16 newPan, int oldPan);
void DestroyAnimSoundTask(u8 taskId);
void sub_8076464(u8 a);
+s8 BattleAnimAdjustPanning2(s8);
#endif
diff --git a/include/rom_8077ABC.h b/include/rom_8077ABC.h
index 26b2a9475..7cfdff2d4 100644
--- a/include/rom_8077ABC.h
+++ b/include/rom_8077ABC.h
@@ -119,5 +119,6 @@ u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7,
void sub_8079098(struct Sprite *sprite);
void sub_807A0F4(struct Sprite *sprite);
void sub_8078634(u8 task);
+u8 sub_80793A8(u8);
#endif // GUARD_ROM_8077ABC_H
diff --git a/ld_script.txt b/ld_script.txt
index 9ccf09013..189184da1 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -290,12 +290,10 @@ SECTIONS {
src/battle/anim/bug.o(.text);
src/battle/anim/rock.o(.text);
src/battle/anim/ghost.o(.text);
- asm/ghost.o(.text);
src/battle/anim/dragon.o(.text);
src/battle/anim/dark.o(.text);
src/battle/anim/ground.o(.text);
src/battle/anim/normal.o(.text);
- asm/normal.o(.text);
src/battle/anim/battle_intro.o(.text);
src/bike.o(.text);
src/easy_chat_1.o(.text);
diff --git a/src/battle/anim/ghost.c b/src/battle/anim/ghost.c
index 85879c86c..52d9c7e72 100644
--- a/src/battle/anim/ghost.c
+++ b/src/battle/anim/ghost.c
@@ -1,35 +1,53 @@
#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "blend_palette.h"
+#include "palette.h"
+#include "rom_8077ABC.h"
+#include "scanline_effect.h"
#include "sound.h"
-#include "constants/songs.h"
#include "trig.h"
-#include "rom_8077ABC.h"
-#include "battle_anim.h"
+#include "constants/battle_constants.h"
+#include "constants/songs.h"
extern s16 gBattleAnimArgs[];
+extern u8 gBankSpriteIds[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
extern u8 gUnknown_0202F7D2;
-void sub_80DDB6C(struct Sprite *sprite);
-void sub_80DDBD8(struct Sprite *);
-void sub_80DDC4C(struct Sprite *);
-void sub_80DDCC8(struct Sprite *);
-void sub_80DDD58(struct Sprite *sprite);
-void sub_80DDD78(struct Sprite *);
-void sub_80DDE7C(u8 taskId);
-void sub_80DDED0(u8 taskId);
-void sub_80DDF40(struct Sprite *sprite);
-void sub_80DDFE8(struct Sprite *);
-void sub_80DE0FC(struct Sprite *sprite);
-void sub_80DE114(struct Sprite *);
-void sub_80DE2DC(u8 taskId);
-void sub_80DE3D4(u8 taskId);
-void sub_80DE7B8(struct Sprite *sprite);
-void sub_80DEF3C(struct Sprite *sprite);
-void sub_80DF0B8(struct Sprite *sprite);
-void sub_80DF0B8(struct Sprite *sprite);
-void sub_80DF3D8(struct Sprite *sprite);
-void sub_80DF49C(struct Sprite *sprite);
+static void sub_80DDB6C(struct Sprite *sprite);
+static void sub_80DDBD8(struct Sprite *);
+static void sub_80DDC4C(struct Sprite *);
+static void sub_80DDCC8(struct Sprite *);
+static void sub_80DDD58(struct Sprite *sprite);
+static void sub_80DDD78(struct Sprite *);
+static void sub_80DDE7C(u8 taskId);
+static void sub_80DDED0(u8 taskId);
+static void sub_80DDF40(struct Sprite *sprite);
+static void sub_80DDFE8(struct Sprite *);
+static void sub_80DE0FC(struct Sprite *sprite);
+static void sub_80DE114(struct Sprite *);
+static void sub_80DE2DC(u8 taskId);
+static void sub_80DE3D4(u8 taskId);
+static void sub_80DE7B8(struct Sprite *sprite);
+static void sub_80DEF3C(struct Sprite *sprite);
+static void sub_80DF0B8(struct Sprite *sprite);
+static void sub_80DF3D8(struct Sprite *sprite);
+static void sub_80DF49C(struct Sprite *sprite);
+static void sub_80DE61C(u8 taskId);
+static void sub_80DE6B0(u8 taskId);
+static void sub_80DE8D8(struct Sprite *sprite);
+static void sub_80DEB38(u8 taskId);
+static void sub_80DED60(u8 taskId);
+static void sub_80DEEE8(u8 taskId);
+static void sub_80DEF98(struct Sprite *sprite);
+static void sub_80DF018(struct Sprite *sprite);
+static void sub_80DF090(struct Sprite *sprite);
+static void sub_80DF18C(struct Sprite *sprite);
+static void sub_80DF24C(u8 taskId);
+static void sub_80DF4F4(struct Sprite *sprite);
+
const union AffineAnimCmd gSpriteAffineAnim_83DAE48[] =
{
@@ -204,7 +222,7 @@ const struct SpriteTemplate gSpriteTemplate_83DAF98 =
.callback = sub_80DF49C,
};
-void sub_80DDB6C(struct Sprite *sprite)
+static void sub_80DDB6C(struct Sprite *sprite)
{
InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[2];
@@ -219,7 +237,7 @@ void sub_80DDB6C(struct Sprite *sprite)
REG_BLDALPHA = sprite->data[6];
}
-void sub_80DDBD8(struct Sprite *sprite)
+static void sub_80DDBD8(struct Sprite *sprite)
{
s16 r0;
s16 r2;
@@ -229,6 +247,7 @@ void sub_80DDBD8(struct Sprite *sprite)
sprite->callback = sub_80DDC4C;
return;
}
+
sprite->pos2.x += Sin(sprite->data[5], 10);
sprite->pos2.y += Cos(sprite->data[5], 15);
r2 = sprite->data[5];
@@ -241,24 +260,26 @@ void sub_80DDBD8(struct Sprite *sprite)
PlaySE12WithPanning(SE_W109, gUnknown_0202F7D2);
}
-void sub_80DDC4C(struct Sprite *sprite)
+static void sub_80DDC4C(struct Sprite *sprite)
{
s16 r2;
s16 r0;
sprite->data[0] = 1;
TranslateAnimSpriteByDeltas(sprite);
- sprite->pos2.x += Sin(sprite->data[5],10);
- sprite->pos2.y += Cos(sprite->data[5],15);
+ sprite->pos2.x += Sin(sprite->data[5], 10);
+ sprite->pos2.y += Cos(sprite->data[5], 15);
r2 = sprite->data[5];
sprite->data[5] = (sprite->data[5] + 5) & 0xFF;
r0 = sprite->data[5];
- if(r2 == 0 || r2 > 196)
- if(r0 > 0)
+ if (r2 == 0 || r2 > 196)
+ {
+ if (r0 > 0)
PlaySE(SE_W109);
+ }
- if(sprite->data[6] == 0)
+ if (sprite->data[6] == 0)
{
sprite->invisible = TRUE;
sprite->callback = sub_807861C;
@@ -267,13 +288,13 @@ void sub_80DDC4C(struct Sprite *sprite)
sub_80DDCC8(sprite);
}
-void sub_80DDCC8(struct Sprite *sprite)
+static void sub_80DDCC8(struct Sprite *sprite)
{
s16 r0;
- if(sprite->data[6] > 0xFF)
+ if (sprite->data[6] > 0xFF)
{
- if(++sprite->data[6] == 0x10d)
+ if (++sprite->data[6] == 0x10d)
sprite->data[6] = 0;
return;
}
@@ -281,32 +302,30 @@ void sub_80DDCC8(struct Sprite *sprite)
r0 = sprite->data[7];
sprite->data[7]++;
- if((r0 & 0xFF) == 0)
+ if ((r0 & 0xFF) == 0)
{
sprite->data[7] &= 0xff00;
- if((sprite->data[7] & 0x100) != 0)
+ if ((sprite->data[7] & 0x100) != 0)
sprite->data[6]++;
else
sprite->data[6]--;
+
+ REG_BLDALPHA = BLDALPHA_BLEND(sprite->data[6], 16 - sprite->data[6]);
+ if (sprite->data[6] == 0 || sprite->data[6] == 16)
+ sprite->data[7] ^= 0x100;
+ if (sprite->data[6] == 0)
+ sprite->data[6] = 0x100;
}
- else
- return;
-
- REG_BLDALPHA = BLDALPHA_BLEND(sprite->data[6], 16 - sprite->data[6]);
- if(sprite->data[6] == 0 || sprite->data[6] == 16)
- sprite->data[7] ^= 0x100;
- if(sprite->data[6] == 0)
- sprite->data[6] = 0x100;
}
-void sub_80DDD58(struct Sprite *sprite)
+static void sub_80DDD58(struct Sprite *sprite)
{
sub_8078764(sprite, 1);
sprite->callback = sub_80DDD78;
sub_80DDD78(sprite);
}
-void sub_80DDD78(struct Sprite *sprite)
+static void sub_80DDD78(struct Sprite *sprite)
{
u16 temp1;
sprite->pos2.x = Sin(sprite->data[0], 32);
@@ -340,7 +359,7 @@ void sub_80DDDF0(u8 taskId)
gTasks[taskId].func = sub_80DDE7C;
}
-void sub_80DDE7C(u8 taskId)
+static void sub_80DDE7C(u8 taskId)
{
gTasks[taskId].data[10] += 1;
if (gTasks[taskId].data[10] == 3)
@@ -351,11 +370,12 @@ void sub_80DDE7C(u8 taskId)
REG_BLDALPHA = gTasks[taskId].data[3] << 8 | gTasks[taskId].data[2];
if (gTasks[taskId].data[2] != 9)
return;
+
gTasks[taskId].func = sub_80DDED0;
}
}
-void sub_80DDED0(u8 taskId)
+static void sub_80DDED0(u8 taskId)
{
u8 spriteId;
if (gTasks[taskId].data[1] > 0)
@@ -363,20 +383,23 @@ void sub_80DDED0(u8 taskId)
gTasks[taskId].data[1] -= 1;
return;
}
+
spriteId = GetAnimBattlerSpriteId(0);
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);
- return;
}
- sub_8078F40(spriteId);
- DestroyAnimVisualTask(taskId);
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
+ else
+ {
+ sub_8078F40(spriteId);
+ DestroyAnimVisualTask(taskId);
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ }
}
-void sub_80DDF40(struct Sprite *sprite)
+static void sub_80DDF40(struct Sprite *sprite)
{
u16 r5, r6;
r5 = sprite->pos1.x;
@@ -394,7 +417,7 @@ void sub_80DDF40(struct Sprite *sprite)
sprite->callback = sub_80DDFE8;
}
-void sub_80DDFE8(struct Sprite *sprite)
+static void sub_80DDFE8(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -438,7 +461,7 @@ void sub_80DDFE8(struct Sprite *sprite)
}
}
-void sub_80DE0FC(struct Sprite *sprite)
+static void sub_80DE0FC(struct Sprite *sprite)
{
sub_8078764(sprite, 1);
sprite->callback = sub_80DE114;
@@ -446,7 +469,7 @@ void sub_80DE0FC(struct Sprite *sprite)
/* NONMATCHING */
NAKED
-void sub_80DE114(struct Sprite *sprite)
+static void sub_80DE114(struct Sprite *sprite)
{
asm_unified("\tpush {r4-r6,lr}\n"
"\tadds r3, r0, 0\n"
@@ -570,7 +593,7 @@ void sub_80DE1B0(u8 taskId)
task->func = sub_80DE2DC;
}
-void sub_80DE2DC(u8 taskId)
+static void sub_80DE2DC(u8 taskId)
{
struct Task *task;
@@ -613,5 +636,735 @@ void sub_80DE3AC(u8 taskId)
task = &gTasks[taskId];
task->data[15] = 0;
task->func = sub_80DE3D4;
- sub_80DE3D4(taskId);
+ task->func(taskId);
+}
+
+static void sub_80DE3D4(u8 taskId)
+{
+ s16 startLine;
+ struct Task *task = &gTasks[taskId];
+ u8 position = GetBattlerPosition_permutated(gAnimBankTarget);
+
+ switch (task->data[15])
+ {
+ case 0:
+ task->data[14] = AllocSpritePalette(0x2771);
+ if (task->data[14] == 0xFF)
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ task->data[0] = duplicate_obj_of_side_rel2move_in_transparent_mode(1);
+ if (task->data[0] < 0)
+ {
+ FreeSpritePaletteByTag(0x2771);
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ gSprites[task->data[0]].oam.paletteNum = task->data[14];
+ gSprites[task->data[0]].oam.objMode = ST_OAM_OBJ_NORMAL;
+ gSprites[task->data[0]].oam.priority = 3;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 16;
+ task->data[13] = GetAnimBattlerSpriteId(1);
+ task->data[4] = (gSprites[task->data[13]].oam.paletteNum + 16) * 16;
+ if (position == 1)
+ REG_DISPCNT &= 0xFDFF;
+ else
+ REG_DISPCNT &= 0xFBFF;
+
+ task->data[15]++;
+ }
+ }
+ break;
+ case 1:
+ task->data[14] = (task->data[14] + 16) * 16;
+ CpuSet(&gPlttBufferUnfaded[task->data[4]], &gPlttBufferFaded[task->data[14]], 0x4000008);
+ BlendPalette(task->data[4], 16, 10, RGB(13, 0, 15));
+ task->data[15]++;
+ break;
+ case 2:
+ startLine = gSprites[task->data[13]].pos1.y + gSprites[task->data[13]].pos2.y - 32;
+ if (startLine < 0)
+ startLine = 0;
+
+ if (position == 1)
+ task->data[10] = ScanlineEffect_InitWave(startLine, startLine + 64, 2, 6, 0, 4, 1);
+ else
+ task->data[10] = ScanlineEffect_InitWave(startLine, startLine + 64, 2, 6, 0, 8, 1);
+
+ task->data[15]++;
+ break;
+ case 3:
+ if (position == 1)
+ REG_BLDCNT = 0x3F42;
+ else
+ REG_BLDCNT = 0x3F44;
+
+ REG_BLDALPHA = 0x1000;
+ task->data[15]++;
+ break;
+ case 4:
+ if (position == 1)
+ REG_DISPCNT |= DISPCNT_BG1_ON;
+ else
+ REG_DISPCNT |= DISPCNT_BG2_ON;
+
+ task->func = sub_80DE61C;
+ task->data[15]++;
+ break;
+ default:
+ task->data[15]++;
+ break;
+ }
+}
+
+static void sub_80DE61C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ task->data[1]++;
+ task->data[5] = task->data[1] & 1;
+ if (task->data[5] == 0)
+ task->data[2] = gSineTable[task->data[1]] / 18;
+
+ if (task->data[5] == 1)
+ task->data[3] = 16 - (gSineTable[task->data[1]] / 18);
+
+ REG_BLDALPHA = (task->data[3] << 8) | task->data[2];
+ if (task->data[1] == 128)
+ {
+ task->data[15] = 0;
+ task->func = sub_80DE6B0;
+ task->func(taskId);
+ }
+}
+
+static void sub_80DE6B0(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ u8 position = GetBattlerPosition_permutated(gAnimBankTarget);
+
+ switch (task->data[15])
+ {
+ case 0:
+ gScanlineEffect.state = 3;
+ task->data[14] = GetAnimBattlerSpriteId(1);
+ if (position == 1)
+ REG_DISPCNT &= 0xFDFF;
+ else
+ REG_DISPCNT &= 0xFBFF;
+ break;
+ case 1:
+ BlendPalette(task->data[4], 16, 0, RGB(13, 0, 15));
+ break;
+ case 2:
+ gSprites[task->data[14]].invisible = 1;
+ obj_delete_but_dont_free_vram(&gSprites[task->data[0]]);
+ FreeSpritePaletteByTag(0x2771);
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ if (position == 1)
+ REG_DISPCNT |= DISPCNT_BG1_ON;
+ else
+ REG_DISPCNT |= DISPCNT_BG2_ON;
+
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+
+ task->data[15]++;
+}
+
+static void sub_80DE7B8(struct Sprite *sprite)
+{
+ s16 battler1X, battler1Y;
+ s16 battler2X, battler2Y;
+ s16 yDiff;
+
+ if (gBattleAnimArgs[0] == 0)
+ {
+ battler1X = GetBattlerSpriteCoord(gAnimBankAttacker, 0);
+ battler1Y = GetBattlerSpriteCoord(gAnimBankAttacker, 1) + 28;
+ battler2X = GetBattlerSpriteCoord(gAnimBankTarget, 0);
+ battler2Y = GetBattlerSpriteCoord(gAnimBankTarget, 1) + 28;
+ }
+ else
+ {
+ battler1X = GetBattlerSpriteCoord(gAnimBankTarget, 0);
+ battler1Y = GetBattlerSpriteCoord(gAnimBankTarget, 1) + 28;
+ battler2X = GetBattlerSpriteCoord(gAnimBankAttacker, 0);
+ battler2Y = GetBattlerSpriteCoord(gAnimBankAttacker, 1) + 28;
+ }
+
+ yDiff = battler2Y - battler1Y;
+ sprite->data[0] = battler1X * 16;
+ sprite->data[1] = battler1Y * 16;
+ sprite->data[2] = ((battler2X - battler1X) * 16) / gBattleAnimArgs[1];
+ sprite->data[3] = (yDiff * 16) / gBattleAnimArgs[1];
+ sprite->data[4] = gBattleAnimArgs[1];
+ sprite->data[5] = battler2X;
+ sprite->data[6] = battler2Y;
+ sprite->data[7] = sprite->data[4] / 2;
+ sprite->oam.priority = 2;
+ sprite->pos1.x = battler1X;
+ sprite->pos1.y = battler1Y;
+ sprite->callback = sub_80DE8D8;
+ sprite->invisible = 1;
+}
+
+static void sub_80DE8D8(struct Sprite *sprite)
+{
+ if (sprite->data[4])
+ {
+ sprite->data[0] += sprite->data[2];
+ sprite->data[1] += sprite->data[3];
+ sprite->pos1.x = sprite->data[0] >> 4;
+ sprite->pos1.y = sprite->data[1] >> 4;
+ if (--sprite->data[4] == 0)
+ sprite->data[0] = 0;
+ }
+}
+
+void sub_80DE918(u8 taskId)
+{
+ struct Task *task;
+ s16 battler;
+ u8 spriteId;
+ s16 baseX, baseY;
+ s16 x, y;
+
+ task = &gTasks[taskId];
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = 0x1000;
+ task->data[5] = 0;
+ task->data[6] = 0;
+ task->data[7] = 0;
+ task->data[8] = 0;
+ task->data[9] = 16;
+ task->data[10] = gBattleAnimArgs[0];
+
+ baseX = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ baseY = sub_807A100(gAnimBankAttacker, 3);
+ if (!IsContest())
+ {
+ for (battler = 0; battler < 4; battler++)
+ {
+ if (battler != gAnimBankAttacker
+ && battler != (gAnimBankAttacker ^ 2)
+ && IsAnimBankSpriteVisible(battler))
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_83DAF08, baseX, baseY, 55);
+ if (spriteId != MAX_SPRITES)
+ {
+ x = GetBattlerSpriteCoord(battler, 2);
+ y = sub_807A100(battler, 3);
+ gSprites[spriteId].data[0] = baseX << 4;
+ gSprites[spriteId].data[1] = baseY << 4;
+ gSprites[spriteId].data[2] = ((x - baseX) << 4) / gBattleAnimArgs[1];
+ gSprites[spriteId].data[3] = ((y - baseY) << 4) / gBattleAnimArgs[1];
+ gSprites[spriteId].data[4] = gBattleAnimArgs[1];
+ gSprites[spriteId].data[5] = x;
+ gSprites[spriteId].data[6] = y;
+ gSprites[spriteId].callback = sub_80DE8D8;
+
+ task->data[task->data[12] + 13] = spriteId;
+ task->data[12]++;
+ }
+ }
+ }
+ }
+ else
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_83DAF08, baseX, baseY, 55);
+ if (spriteId != MAX_SPRITES)
+ {
+ x = 48;
+ y = 40;
+ gSprites[spriteId].data[0] = baseX << 4;
+ gSprites[spriteId].data[1] = baseY << 4;
+ gSprites[spriteId].data[2] = ((x - baseX) << 4) / gBattleAnimArgs[1];
+ gSprites[spriteId].data[3] = ((y - baseY) << 4) / gBattleAnimArgs[1];
+ gSprites[spriteId].data[4] = gBattleAnimArgs[1];
+ gSprites[spriteId].data[5] = x;
+ gSprites[spriteId].data[6] = y;
+ gSprites[spriteId].callback = sub_80DE8D8;
+
+ task->data[13] = spriteId;
+ task->data[12] = 1;
+ }
+ }
+
+ task->func = sub_80DEB38;
+}
+
+static void sub_80DEB38(u8 taskId)
+{
+ u16 i;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (task->data[6] == 0)
+ {
+ if (++task->data[5] > 1)
+ {
+ task->data[5] = 0;
+ task->data[7]++;
+ if (task->data[7] & 1)
+ {
+ if (task->data[8] < 16)
+ task->data[8]++;
+ }
+ else
+ {
+ if (task->data[9])
+ task->data[9]--;
+ }
+
+ REG_BLDALPHA = (task->data[9] << 8) | task->data[8];
+ if (task->data[7] >= 24)
+ {
+ task->data[7] = 0;
+ task->data[6] = 1;
+ }
+ }
+ }
+
+ if (task->data[10])
+ task->data[10]--;
+ else if (task->data[6])
+ task->data[0]++;
+ break;
+ case 1:
+ if (++task->data[5] > 1)
+ {
+ task->data[5] = 0;
+ task->data[7]++;
+ if (task->data[7] & 1)
+ {
+ if (task->data[8])
+ task->data[8]--;
+ }
+ else
+ {
+ if (task->data[9] < 16)
+ task->data[9]++;
+ }
+
+ REG_BLDALPHA = (task->data[9] << 8) | task->data[8];
+ if (task->data[8] == 0 && task->data[9] == 16)
+ {
+ for (i = 0; i < task->data[12]; i++)
+ DestroySprite(&gSprites[task->data[i + 13]]);
+
+ task->data[0]++;
+ }
+ }
+ break;
+ case 2:
+ if (++task->data[5] > 0)
+ task->data[0]++;
+ break;
+ case 3:
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_80DECB0(u8 taskId)
+{
+ s16 startX, startY;
+ s16 leftDistance, topDistance, bottomDistance, rightDistance;
+
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ REG_WININ = 0x3F3F;
+ REG_WINOUT = 0x3F1F;
+ REG_BLDCNT = 0xC8;
+ REG_BLDY = 0x10;
+
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER || IsContest())
+ startX = 40;
+ else
+ startX = 200;
+
+ gBattle_WIN0H = (startX << 8) | startX;
+ startY = 40;
+ gBattle_WIN0V = (startY << 8) | startY;
+
+ leftDistance = startX;
+ rightDistance = 240 - startX;
+ topDistance = startY;
+ bottomDistance = 72;
+ gTasks[taskId].data[1] = leftDistance;
+ gTasks[taskId].data[2] = rightDistance;
+ gTasks[taskId].data[3] = topDistance;
+ gTasks[taskId].data[4] = bottomDistance;
+ gTasks[taskId].data[5] = startX;
+ gTasks[taskId].data[6] = startY;
+ gTasks[taskId].func = sub_80DED60;
+}
+
+static void sub_80DED60(u8 taskId)
+{
+ s16 step;
+ s16 leftDistance, rightDistance, topDistance, bottomDistance;
+ s16 startX, startY;
+ u16 left, right, top, bottom;
+ u16 selectedPalettes;
+
+ step = gTasks[taskId].data[0];
+ gTasks[taskId].data[0]++;
+ leftDistance = gTasks[taskId].data[1];
+ rightDistance = gTasks[taskId].data[2];
+ topDistance = gTasks[taskId].data[3];
+ bottomDistance = gTasks[taskId].data[4];
+ startX = gTasks[taskId].data[5];
+ startY = gTasks[taskId].data[6];
+
+ if (step < 16)
+ {
+ left = startX - (leftDistance * 0.0625) * step;
+ right = startX + (rightDistance * 0.0625) * step;
+ top = startY - (topDistance * 0.0625) * step;
+ bottom = startY + (bottomDistance * 0.0625) * step;
+ }
+ else
+ {
+ left = 0;
+ right = 240;
+ top = 0;
+ bottom = 112;
+ selectedPalettes = sub_80791A8(1, 0, 0, 0, 0, 0, 0);
+ BeginNormalPaletteFade(selectedPalettes, 0, 16, 16, RGB(0, 0, 0));
+ gTasks[taskId].func = sub_80DEEE8;
+ }
+
+ gBattle_WIN0H = (left << 8) | right;
+ gBattle_WIN0V = (top << 8) | bottom;
+}
+
+static void sub_80DEEE8(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ REG_WININ = 0x3F3F;
+ REG_WINOUT = 0x3F3F;
+ REG_BLDCNT = 0;
+ REG_BLDY = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static void sub_80DEF3C(struct Sprite *sprite)
+{
+ s16 xDelta;
+ s16 xDelta2;
+
+ InitAnimSpritePos(sprite, 1);
+ if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_PLAYER)
+ {
+ xDelta = 24;
+ xDelta2 = -2;
+ sprite->oam.matrixNum = 8;
+ }
+ else
+ {
+ xDelta = -24;
+ xDelta2 = 2;
+ }
+
+ sprite->pos1.x += xDelta;
+ sprite->data[1] = xDelta2;
+ sprite->data[0] = 60;
+ sprite->callback = sub_80DEF98;
+}
+
+static void sub_80DEF98(struct Sprite *sprite)
+{
+ u16 var0;
+
+ if (sprite->data[0] > 0)
+ {
+ sprite->data[0]--;
+ }
+ else
+ {
+ sprite->pos2.x += sprite->data[1];
+ var0 = sprite->pos2.x + 7;
+ if (var0 > 14)
+ {
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos2.x = 0;
+ sprite->oam.tileNum += 8;
+ if (++sprite->data[2] == 3)
+ {
+ sprite->data[0] = 30;
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData(sprite, sub_80DF018);
+ }
+ else
+ {
+ sprite->data[0] = 40;
+ }
+ }
+ }
+}
+
+static void sub_80DF018(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = 0x0010;
+ sprite->data[0]++;
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ }
+ else if (sprite->data[1] < 2)
+ {
+ sprite->data[1]++;
+ }
+ else
+ {
+ sprite->data[1] = 0;
+ sprite->data[2]++;
+ REG_BLDALPHA = (16 - sprite->data[2]) | (sprite->data[2] << 8);
+ if (sprite->data[2] == 16)
+ {
+ sprite->invisible = 1;
+ sprite->callback = sub_80DF090;
+ }
+ }
+}
+
+static void sub_80DF090(struct Sprite *sprite)
+{
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_80DF0B8(struct Sprite *sprite)
+{
+ u16 coeffB;
+ u16 coeffA;
+
+ sprite->pos2.x = Sin(sprite->data[0], 12);
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ sprite->pos2.x = -sprite->pos2.x;
+
+ sprite->data[0] = (sprite->data[0] + 6) & 0xFF;
+ sprite->data[1] += 0x100;
+ sprite->pos2.y = -(sprite->data[1] >> 8);
+
+ sprite->data[7]++;
+ if (sprite->data[7] == 1)
+ {
+ sprite->data[6] = 0x050B;
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = sprite->data[6];
+ }
+ else if (sprite->data[7] > 30)
+ {
+ sprite->data[2]++;
+ coeffB = sprite->data[6] >> 8;
+ coeffA = sprite->data[6] & 0xFF;
+
+ if (++coeffB > 16)
+ coeffB = 16;
+ if (--(s16)coeffA < 0)
+ coeffA = 0;
+
+ REG_BLDALPHA = (coeffB << 8) | coeffA;
+ sprite->data[6] = (coeffB << 8) | coeffA;
+ if (coeffB == 16 && coeffA == 0)
+ {
+ sprite->invisible = 1;
+ sprite->callback = sub_80DF18C;
+ }
+ }
+}
+
+static void sub_80DF18C(struct Sprite *sprite)
+{
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80DF1A4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[0] = 0;
+ task->data[1] = 16;
+ task->data[9] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ task->data[10] = sub_8077FC0(gAnimBankAttacker);
+ task->data[11] = (sub_807A100(gAnimBankAttacker, 1) / 2) + 8;
+ task->data[7] = 0;
+ task->data[5] = sub_8079ED4(gAnimBankAttacker);
+ task->data[6] = sub_8079E90(gAnimBankAttacker) - 2;
+ task->data[3] = 0;
+ task->data[4] = 16;
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = 0x1000;
+ task->data[8] = 0;
+ task->func = sub_80DF24C;
+}
+
+static void sub_80DF24C(u8 taskId)
+{
+ u16 i;
+ u8 spriteId;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ for (i = 0; i < 6; i++)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_83DAF80, task->data[9], task->data[10], task->data[6]);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].data[1] = GetBattlerSide(gAnimBankAttacker) == B_SIDE_PLAYER;
+
+ gSprites[spriteId].data[2] = (i * 42) & 0xFF;
+ gSprites[spriteId].data[3] = task->data[11];
+ gSprites[spriteId].data[5] = i * 6;
+ task->data[7]++;
+ }
+ }
+
+ task->data[0]++;
+ break;
+ case 1:
+ if (++task->data[1] & 1)
+ {
+ if (task->data[3] < 14)
+ task->data[3]++;
+ }
+ else
+ {
+ if (task->data[4] > 4)
+ task->data[4]--;
+ }
+
+ if (task->data[3] == 14 && task->data[4] == 4)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+
+ REG_BLDALPHA = (task->data[4] << 8) | task->data[3];
+ break;
+ case 2:
+ if (++task->data[1] > 30)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ if (++task->data[1] & 1)
+ {
+ if (task->data[3] > 0)
+ task->data[3]--;
+ }
+ else
+ {
+ if (task->data[4] < 16)
+ task->data[4]++;
+ }
+
+ if (task->data[3] == 0 && task->data[4] == 16)
+ {
+ task->data[8] = 1;
+ task->data[0]++;
+ }
+
+ REG_BLDALPHA = (task->data[4] << 8) | task->data[3];
+ break;
+ case 4:
+ if (task->data[7] == 0)
+ task->data[0]++;
+ break;
+ case 5:
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_80DF3D8(struct Sprite *sprite)
+{
+ u16 index;
+
+ if (sprite->data[1] == 0)
+ sprite->data[2] += 2;
+ else
+ sprite->data[2] -= 2;
+
+ sprite->data[2] &= 0xFF;
+ sprite->pos2.x = Sin(sprite->data[2], sprite->data[3]);
+
+ index = sprite->data[2] - 65;
+ if (index < 127)
+ sprite->oam.priority = gTasks[sprite->data[0]].data[5] + 1;
+ else
+ sprite->oam.priority = gTasks[sprite->data[0]].data[5];
+
+ sprite->data[5]++;
+ sprite->data[6] = (sprite->data[5] * 8) & 0xFF;
+ sprite->pos2.y = Sin(sprite->data[6], 7);
+ if (gTasks[sprite->data[0]].data[8])
+ {
+ gTasks[sprite->data[0]].data[7]--;
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_80DF49C(struct Sprite *sprite)
+{
+ sprite->invisible = 1;
+ sprite->data[5] = gBankSpriteIds[gAnimBankAttacker];
+ sprite->data[0] = 128;
+ sprite->data[1] = 10;
+ sprite->data[2] = gBattleAnimArgs[0];
+ sprite->data[3] = gBattleAnimArgs[1];
+ sprite->callback = sub_80DF4F4;
+
+ gSprites[sprite->data[5]].pos1.y += 8;
+}
+
+static void sub_80DF4F4(struct Sprite *sprite)
+{
+ if (sprite->data[3])
+ {
+ sprite->data[3]--;
+ gSprites[sprite->data[5]].pos2.x = Sin(sprite->data[0], sprite->data[1]);
+ gSprites[sprite->data[5]].pos2.y = Cos(sprite->data[0], sprite->data[1]);
+ sprite->data[0] += sprite->data[2];
+ if (sprite->data[0] > 255)
+ sprite->data[0] -= 256;
+ }
+ else
+ {
+ 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;
+ }
}
diff --git a/src/battle/anim/normal.c b/src/battle/anim/normal.c
index 8303e7c68..7564c529c 100644
--- a/src/battle/anim/normal.c
+++ b/src/battle/anim/normal.c
@@ -1,26 +1,89 @@
#include "global.h"
-#include "rom_8077ABC.h"
+#include "battle.h"
#include "battle_anim.h"
+#include "blend_palette.h"
+#include "decompress.h"
+#include "ewram.h"
+#include "palette.h"
+#include "random.h"
+#include "rom_8077ABC.h"
+#include "sound.h"
+#include "task.h"
+#include "trig.h"
+#include "constants/battle_constants.h"
+#include "constants/songs.h"
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+extern u8 gHealthboxIDs[];
+extern u8 gBattlersCount;
+extern u8 gBankSpriteIds[];
+extern u8 gBattleTerrain;
+extern u16 gBattlerPartyIndexes[];
+extern u8 gBankTarget;
+extern u8 gEffectBank;
+extern u8 gBankAttacker;
+extern u8 gAnimVisualTaskCount;
+
+extern const u8 gUnknown_08D20A14[];
+extern const u8 gUnknown_08D20A30[];
+extern const u8 gBattleStatMask1_Tilemap[];
+extern const u8 gBattleStatMask2_Tilemap[];
+extern const u8 gBattleStatMask_Gfx[];
+extern const u16 gBattleStatMask1_Pal[];
+extern const u16 gBattleStatMask2_Pal[];
+extern const u16 gBattleStatMask3_Pal[];
+extern const u16 gBattleStatMask4_Pal[];
+extern const u16 gBattleStatMask5_Pal[];
+extern const u16 gBattleStatMask6_Pal[];
+extern const u16 gBattleStatMask7_Pal[];
+extern const u16 gBattleStatMask8_Pal[];
+
+extern void sub_80DA48C(struct Sprite *);
+
+static void AnimConfusionDuck(struct Sprite *sprite);
+static void AnimSimplePaletteBlend(struct Sprite *sprite);
+static void sub_80E1E2C(struct Sprite *sprite);
+static void sub_80E1F3C(struct Sprite *sprite);
+static void sub_80E24B8(struct Sprite *sprite);
+static void sub_80E27A0(struct Sprite *sprite);
+static void sub_80E2838(struct Sprite *sprite);
+static void sub_80E2870(struct Sprite *sprite);
+static void sub_80E2908(struct Sprite *sprite);
+static void sub_80E2978(struct Sprite *sprite);
+static void sub_80E29C0(struct Sprite *sprite);
+static void sub_80E27E8(struct Sprite *sprite);
+static void AnimConfusionDuckStep(struct Sprite *sprite);
+static u32 UnpackSelectedBattleAnimPalettes(s16);
+static void AnimSimplePaletteBlendStep(struct Sprite *sprite);
+static void sub_80E1E80(struct Sprite *sprite);
+static void sub_80E1F0C(struct Sprite *sprite);
+static void sub_80E1FDC(u8, u8, u8);
+static void sub_80E202C(u8 taskId);
+static void sub_80E20E4(u8, u8, u8);
+static void sub_80E2140(u8 taskId);
+static void sub_80E2214(u8 taskId);
+static void sub_80E22CC(u8 taskId);
+static void sub_80E260C(void);
+static void sub_80E255C(struct Sprite *sprite);
+static void sub_80E2710(u8 taskId);
+static void sub_80E29FC(struct Sprite *sprite);
+static void sub_80E2C8C(u8 taskId, u32 selectedPalettes);
+static void sub_80E2CD0(u8 taskId);
+static void sub_80E2DB8(u8 taskId);
+static void sub_80E2E10(u8 taskId);
+static void sub_80E2EE8(struct Sprite *sprite);
+static void sub_80E3194(u8 taskId);
+static void sub_80E3338(u8 taskId);
+static void sub_80E3704(u8 taskId);
+static void sub_80E38F8(u8 taskId);
+static void sub_80E39BC(u32, u16);
+static void sub_80E3AD0(u8 taskId);
+static void sub_80E3E64(u8 taskId);
+static void sub_80E4368(u8 taskId);
-void sub_80E1CB4(struct Sprite *sprite);
-void sub_80E1D84(struct Sprite *sprite);
-void sub_80E1E2C(struct Sprite *sprite);
-void sub_80E1F3C(struct Sprite *sprite);
-void sub_80E24B8(struct Sprite *sprite);
-void sub_80E27A0(struct Sprite *sprite);
-void sub_80E2838(struct Sprite *sprite);
-void sub_80E27A0(struct Sprite *sprite);
-void sub_80E2870(struct Sprite *sprite);
-void sub_80E2908(struct Sprite *sprite);
-void sub_80E2978(struct Sprite *sprite);
-void sub_80E29C0(struct Sprite *sprite);
-void sub_80E27E8(struct Sprite *sprite);
-
-const union AnimCmd gSpriteAnim_83DB37C[] =
+const union AnimCmd gConfusionDuckSpriteAnim1[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(4, 8),
@@ -29,7 +92,7 @@ const union AnimCmd gSpriteAnim_83DB37C[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gSpriteAnim_83DB390[] =
+const union AnimCmd gConfusionDuckSpriteAnim2[] =
{
ANIMCMD_FRAME(0, 8, .hFlip = TRUE),
ANIMCMD_FRAME(4, 8),
@@ -38,24 +101,24 @@ const union AnimCmd gSpriteAnim_83DB390[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd *const gSpriteAnimTable_83DB3A4[] =
+const union AnimCmd *const gConfusionDuckSpriteAnimTable[] =
{
- gSpriteAnim_83DB37C,
- gSpriteAnim_83DB390,
+ gConfusionDuckSpriteAnim1,
+ gConfusionDuckSpriteAnim2,
};
-const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB3AC =
+const struct SpriteTemplate gConfusionDuckSpriteTemplate =
{
.tileTag = 10073,
.paletteTag = 10073,
.oam = &gOamData_837DF2C,
- .anims = gSpriteAnimTable_83DB3A4,
+ .anims = gConfusionDuckSpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80E1CB4,
+ .callback = AnimConfusionDuck,
};
-const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB3C4 =
+const struct SpriteTemplate gSimplePaletteBlendSpriteTemplate =
{
.tileTag = 0,
.paletteTag = 0,
@@ -63,7 +126,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB3C4 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80E1D84,
+ .callback = AnimSimplePaletteBlend,
};
const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB3DC =
@@ -238,3 +301,1631 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB550 =
};
const u16 gUnknown_083DB568 = RGB(31, 31, 31);
+
+// Moves a spinning duck around the mon's head.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: initial wave offset
+// arg 3: wave period (higher means faster wave)
+// arg 4: duration
+static void AnimConfusionDuck(struct Sprite *sprite)
+{
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->data[1] = -gBattleAnimArgs[3];
+ sprite->data[4] = 1;
+ }
+ else
+ {
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[4] = 0;
+ StartSpriteAnim(sprite, 1);
+ }
+
+ sprite->data[3] = gBattleAnimArgs[4];
+ sprite->callback = AnimConfusionDuckStep;
+ sprite->callback(sprite);
+}
+
+static void AnimConfusionDuckStep(struct Sprite *sprite)
+{
+ sprite->pos2.x = Cos(sprite->data[0], 30);
+ sprite->pos2.y = Sin(sprite->data[0], 10);
+
+ if ((u16)sprite->data[0] < 128)
+ sprite->oam.priority = 1;
+ else
+ sprite->oam.priority = 3;
+
+ sprite->data[0] = (sprite->data[0] + sprite->data[1]) & 0xFF;
+ if (++sprite->data[2] == sprite->data[3])
+ DestroyAnimSprite(sprite);
+}
+
+// Performs a simple color blend on a specified sprite.
+// arg 0: palette selector
+// arg 1: delay
+// arg 2: start blend amount
+// arg 3: end blend amount
+// arg 4: blend color
+static void AnimSimplePaletteBlend(struct Sprite *sprite)
+{
+ u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]);
+ BeginNormalPaletteFade(selectedPalettes, gBattleAnimArgs[1], gBattleAnimArgs[2], gBattleAnimArgs[3], gBattleAnimArgs[4]);
+ sprite->invisible = 1;
+ sprite->callback = AnimSimplePaletteBlendStep;
+}
+
+// Unpacks a bitfield and returns a bitmask of its selected palettes.
+// Bits 0-6 of the selector parameter result in the following palettes being selected:
+// 0: battle background palettes (BG palettes 1, 2, and 3)
+// 1: gAnimBankAttacker OBJ palette
+// 2: gAnimBankTarget OBJ palette
+// 3: gAnimBankAttacker partner OBJ palette
+// 4: gAnimBankTarget partner OBJ palette
+// 5: BG palette 4
+// 6: BG palette 5
+static u32 UnpackSelectedBattleAnimPalettes(s16 selector)
+{
+ u8 arg0 = selector & 1;
+ u8 arg1 = (selector >> 1) & 1;
+ u8 arg2 = (selector >> 2) & 1;
+ u8 arg3 = (selector >> 3) & 1;
+ u8 arg4 = (selector >> 4) & 1;
+ u8 arg5 = (selector >> 5) & 1;
+ u8 arg6 = (selector >> 6) & 1;
+ return sub_80791A8(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+}
+
+static void AnimSimplePaletteBlendStep(struct Sprite *sprite)
+{
+ if (!gPaletteFade.active)
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_80E1E2C(struct Sprite *sprite)
+{
+ u32 selectedPalettes;
+
+ sprite->data[0] = gBattleAnimArgs[1];
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[2] = gBattleAnimArgs[2];
+ sprite->data[3] = gBattleAnimArgs[3];
+ sprite->data[4] = gBattleAnimArgs[4];
+ sprite->data[5] = gBattleAnimArgs[5];
+ sprite->data[6] = gBattleAnimArgs[6];
+ sprite->data[7] = gBattleAnimArgs[0];
+
+ selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]);
+ BlendPalettes(selectedPalettes, gBattleAnimArgs[4], gBattleAnimArgs[3]);
+ sprite->invisible = 1;
+ sprite->callback = sub_80E1E80;
+}
+
+static void sub_80E1E80(struct Sprite *sprite)
+{
+ u32 selectedPalettes;
+
+ if (sprite->data[0] > 0)
+ {
+ sprite->data[0]--;
+ return;
+ }
+
+ if (gPaletteFade.active)
+ return;
+
+ if (sprite->data[2] == 0)
+ {
+ sprite->callback = sub_80E1F0C;
+ return;
+ }
+
+ selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]);
+ if (sprite->data[1] & 0x100)
+ BlendPalettes(selectedPalettes, sprite->data[4], sprite->data[3]);
+ else
+ BlendPalettes(selectedPalettes, sprite->data[6], sprite->data[5]);
+
+ sprite->data[1] ^= 0x100;
+ sprite->data[0] = sprite->data[1] & 0xFF;
+ sprite->data[2]--;
+}
+
+static void sub_80E1F0C(struct Sprite *sprite)
+{
+ u32 selectedPalettes;
+
+ if (!gPaletteFade.active)
+ {
+ selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]);
+ BlendPalettes(selectedPalettes, 0, 0);
+ DestroyAnimSprite(sprite);
+ }
+}
+
+static void sub_80E1F3C(struct Sprite *sprite)
+{
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = 0;
+ sprite->data[1] = 10;
+ sprite->data[2] = 8;
+ sprite->data[3] = 40;
+ sprite->data[4] = 112;
+ sprite->data[5] = 0;
+ StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ sprite->callback = sub_8078174;
+ sprite->callback(sprite);
+}
+
+void sub_80E1F8C(u8 taskId)
+{
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ gTasks[taskId].data[4] = gBattleAnimArgs[4];
+ gTasks[taskId].data[5] = gBattleAnimArgs[5];
+ gTasks[taskId].data[8] = 0;
+ sub_80E1FDC(taskId, 0, gTasks[taskId].data[4]);
+ gTasks[taskId].func = sub_80E202C;
+}
+
+static void sub_80E1FDC(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount)
+{
+ u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gTasks[taskId].data[0]);
+ BeginNormalPaletteFade(
+ selectedPalettes,
+ gTasks[taskId].data[1],
+ initialBlendAmount,
+ targetBlendAmount,
+ gTasks[taskId].data[5]);
+
+ gTasks[taskId].data[2]--;
+ gTasks[taskId].data[8] ^= 1;
+}
+
+static void sub_80E202C(u8 taskId)
+{
+ u8 initialBlendAmount, targetBlendAmount;
+ if (!gPaletteFade.active)
+ {
+ if (gTasks[taskId].data[2] > 0)
+ {
+ if (gTasks[taskId].data[8] == 0)
+ {
+ initialBlendAmount = gTasks[taskId].data[3];
+ targetBlendAmount = gTasks[taskId].data[4];
+ }
+ else
+ {
+ initialBlendAmount = gTasks[taskId].data[4];
+ targetBlendAmount = gTasks[taskId].data[3];
+ }
+
+ if (gTasks[taskId].data[2] == 1)
+ targetBlendAmount = 0;
+
+ sub_80E1FDC(taskId, initialBlendAmount, targetBlendAmount);
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_80E2094(u8 taskId)
+{
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ gTasks[taskId].data[4] = gBattleAnimArgs[4];
+ gTasks[taskId].data[5] = gBattleAnimArgs[5];
+ gTasks[taskId].data[8] = 0;
+ sub_80E20E4(taskId, 0, gTasks[taskId].data[4]);
+ gTasks[taskId].func = sub_80E2140;
+}
+
+static void sub_80E20E4(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount)
+{
+ u8 paletteIndex = IndexOfSpritePaletteTag(gTasks[taskId].data[0]);
+ BeginNormalPaletteFade(
+ 1 << (paletteIndex + 16),
+ gTasks[taskId].data[1],
+ initialBlendAmount,
+ targetBlendAmount,
+ gTasks[taskId].data[5]);
+
+ gTasks[taskId].data[2]--;
+ gTasks[taskId].data[8] ^= 1;
+}
+
+static void sub_80E2140(u8 taskId)
+{
+ u8 initialBlendAmount, targetBlendAmount;
+ if (!gPaletteFade.active)
+ {
+ if (gTasks[taskId].data[2] > 0)
+ {
+ if (gTasks[taskId].data[8] == 0)
+ {
+ initialBlendAmount = gTasks[taskId].data[3];
+ targetBlendAmount = gTasks[taskId].data[4];
+ }
+ else
+ {
+ initialBlendAmount = gTasks[taskId].data[4];
+ targetBlendAmount = gTasks[taskId].data[3];
+ }
+
+ if (gTasks[taskId].data[2] == 1)
+ targetBlendAmount = 0;
+
+ sub_80E20E4(taskId, initialBlendAmount, targetBlendAmount);
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_80E21A8(u8 taskId)
+{
+ u8 paletteIndex;
+
+ gTasks[taskId].data[0] = gBattleAnimArgs[1];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ gTasks[taskId].data[4] = gBattleAnimArgs[4];
+ gTasks[taskId].data[5] = gBattleAnimArgs[5];
+ gTasks[taskId].data[6] = gBattleAnimArgs[6];
+ gTasks[taskId].data[7] = gBattleAnimArgs[0];
+
+ paletteIndex = IndexOfSpritePaletteTag(gBattleAnimArgs[0]);
+ BeginNormalPaletteFade(
+ 1 << (paletteIndex + 16),
+ 0,
+ gBattleAnimArgs[4],
+ gBattleAnimArgs[4],
+ gBattleAnimArgs[3]);
+
+ gTasks[taskId].func = sub_80E2214;
+}
+
+static void sub_80E2214(u8 taskId)
+{
+ u32 selectedPalettes;
+
+ if (gTasks[taskId].data[0] > 0)
+ {
+ gTasks[taskId].data[0]--;
+ return;
+ }
+
+ if (gPaletteFade.active)
+ return;
+
+ if (gTasks[taskId].data[2] == 0)
+ {
+ gTasks[taskId].func = sub_80E22CC;
+ return;
+ }
+
+ selectedPalettes = 1 << (IndexOfSpritePaletteTag(gTasks[taskId].data[7]) + 16);
+ if (gTasks[taskId].data[1] & 0x100)
+ {
+ BeginNormalPaletteFade(
+ selectedPalettes,
+ 0,
+ gTasks[taskId].data[4],
+ gTasks[taskId].data[4],
+ gTasks[taskId].data[3]);
+ }
+ else
+ {
+ BeginNormalPaletteFade(
+ selectedPalettes,
+ 0,
+ gTasks[taskId].data[6],
+ gTasks[taskId].data[6],
+ gTasks[taskId].data[5]);
+ }
+
+ gTasks[taskId].data[1] ^= 0x100;
+ gTasks[taskId].data[0] = gTasks[taskId].data[1] & 0xFF;
+ gTasks[taskId].data[2]--;
+}
+
+static void sub_80E22CC(u8 taskId)
+{
+ u32 selectedPalettes;
+
+ if (!gPaletteFade.active)
+ {
+ selectedPalettes = 1 << (IndexOfSpritePaletteTag(gTasks[taskId].data[7]) + 16);
+ BeginNormalPaletteFade(selectedPalettes, 0, 0, 0, RGB(0, 0, 0));
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_80E2324(u8 taskId)
+{
+ u32 selectedPalettes = 0;
+ u8 attackerBattler = gAnimBankAttacker;
+ u8 targetBattler = gAnimBankTarget;
+
+ if (gBattleAnimArgs[0] & 0x100)
+ selectedPalettes = sub_80791A8(1, 0, 0, 0, 0, 0, 0);
+
+ if (gBattleAnimArgs[1] & 0x100)
+ selectedPalettes |= (0x10000 << attackerBattler);
+
+ if (gBattleAnimArgs[2] & 0x100)
+ selectedPalettes |= (0x10000 << targetBattler);
+
+ InvertPlttBuffer(selectedPalettes);
+ DestroyAnimVisualTask(taskId);
+}
+
+void unref_sub_80E23A8(u8 taskId)
+{
+ u8 attackerBattler;
+ u8 targetBattler;
+ u8 paletteIndex;
+ u32 selectedPalettes = 0;
+
+ if (gTasks[taskId].data[0] == 0)
+ {
+ gTasks[taskId].data[2] = gBattleAnimArgs[0];
+ gTasks[taskId].data[3] = gBattleAnimArgs[1];
+ gTasks[taskId].data[4] = gBattleAnimArgs[2];
+ gTasks[taskId].data[1] = gBattleAnimArgs[3];
+ gTasks[taskId].data[5] = gBattleAnimArgs[4];
+ gTasks[taskId].data[6] = gBattleAnimArgs[5];
+ gTasks[taskId].data[7] = gBattleAnimArgs[6];
+ }
+
+ gTasks[taskId].data[0]++;
+ attackerBattler = gAnimBankAttacker;
+ targetBattler = gAnimBankTarget;
+
+ if (gTasks[taskId].data[2] & 0x100)
+ selectedPalettes = 0x0000FFFF;
+
+ if (gTasks[taskId].data[2] & 0x1)
+ {
+ paletteIndex = IndexOfSpritePaletteTag(gSprites[gHealthboxIDs[attackerBattler]].template->paletteTag);
+ selectedPalettes |= ((1 << paletteIndex) << 16);
+ }
+
+ if (gTasks[taskId].data[3] & 0x100)
+ selectedPalettes |= ((1 << attackerBattler) << 16);
+
+ if (gTasks[taskId].data[4] & 0x100)
+ selectedPalettes |= ((1 << targetBattler) << 16);
+
+ TintPlttBuffer(selectedPalettes, gTasks[taskId].data[5], gTasks[taskId].data[6], gTasks[taskId].data[7]);
+ if (gTasks[taskId].data[0] == gTasks[taskId].data[1])
+ {
+ UnfadePlttBuffer(selectedPalettes);
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static void sub_80E24B8(struct Sprite *sprite)
+{
+ u16 var0;
+
+ sprite->invisible = 1;
+ sprite->data[0] = -gBattleAnimArgs[0];
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[2] = gBattleAnimArgs[1];
+ sprite->data[3] = gBattleAnimArgs[2];
+
+ switch (gBattleAnimArgs[3])
+ {
+ case 0:
+ StoreSpriteCallbackInData(sprite, (void *)&gBattle_BG3_X);
+ break;
+ case 1:
+ StoreSpriteCallbackInData(sprite, (void *)&gBattle_BG3_Y);
+ break;
+ case 2:
+ StoreSpriteCallbackInData(sprite, (void *)&gSpriteCoordOffsetX);
+ break;
+ default:
+ StoreSpriteCallbackInData(sprite, (void *)&gSpriteCoordOffsetY);
+ break;
+ }
+
+ sprite->data[4] = *(u32 *)(sprite->data[6] | (sprite->data[7] << 16));
+ sprite->data[5] = gBattleAnimArgs[3];
+ var0 = sprite->data[5] - 2;
+ if (var0 < 2)
+ sub_80E260C();
+
+ sprite->callback = sub_80E255C;
+}
+
+static void sub_80E255C(struct Sprite *sprite)
+{
+ u8 i;
+ u16 var0;
+
+ if (sprite->data[3] > 0)
+ {
+ sprite->data[3]--;
+ if (sprite->data[1] > 0)
+ {
+ sprite->data[1]--;
+ }
+ else
+ {
+ sprite->data[1] = sprite->data[2];
+ *(u32 *)(sprite->data[6] | (sprite->data[7] << 16)) += sprite->data[0];
+ sprite->data[0] = -sprite->data[0];
+ }
+ }
+ else
+ {
+ *(u32 *)(sprite->data[6] | (sprite->data[7] << 16)) = sprite->data[4];
+ var0 = sprite->data[5] - 2;
+ if (var0 < 2)
+ {
+ for (i = 0; i < gBattlersCount; i++)
+ gSprites[gBankSpriteIds[i]].coordOffsetEnabled = 0;
+ }
+
+ DestroyAnimSprite(sprite);
+ }
+}
+
+static void sub_80E260C(void)
+{
+ gSprites[gBankSpriteIds[gAnimBankAttacker]].coordOffsetEnabled = 0;
+ gSprites[gBankSpriteIds[gAnimBankTarget]].coordOffsetEnabled = 0;
+
+ if (gBattleAnimArgs[4] == 2)
+ {
+ gSprites[gBankSpriteIds[gAnimBankAttacker]].coordOffsetEnabled = 1;
+ gSprites[gBankSpriteIds[gAnimBankTarget]].coordOffsetEnabled = 1;
+ }
+ else
+ {
+ if (gBattleAnimArgs[4] == 0)
+ gSprites[gBankSpriteIds[gAnimBankAttacker]].coordOffsetEnabled = 1;
+ else
+ gSprites[gBankSpriteIds[gAnimBankTarget]].coordOffsetEnabled = 1;
+ }
+}
+
+void sub_80E26BC(u8 taskId)
+{
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ gTasks[taskId].data[8] = gBattleAnimArgs[3];
+ gBattle_BG3_X = gBattleAnimArgs[0];
+ gBattle_BG3_Y = gBattleAnimArgs[1];
+ gTasks[taskId].func = sub_80E2710;
+ gTasks[taskId].func(taskId);
+}
+
+static void sub_80E2710(u8 taskId)
+{
+ if (gTasks[taskId].data[3] == 0)
+ {
+ if (gBattle_BG3_X == gTasks[taskId].data[0])
+ gBattle_BG3_X = -gTasks[taskId].data[0];
+ else
+ gBattle_BG3_X = gTasks[taskId].data[0];
+
+ if (gBattle_BG3_Y == -gTasks[taskId].data[1])
+ gBattle_BG3_Y = 0;
+ else
+ gBattle_BG3_Y = -gTasks[taskId].data[1];
+
+ gTasks[taskId].data[3] = gTasks[taskId].data[8];
+ if (--gTasks[taskId].data[2] == 0)
+ {
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ else
+ {
+ gTasks[taskId].data[3]--;
+ }
+}
+
+static void sub_80E27A0(struct Sprite *sprite)
+{
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
+ if (gBattleAnimArgs[2] == 0)
+ InitAnimSpritePos(sprite, 1);
+ else
+ sub_8078764(sprite, 1);
+
+ sprite->callback = sub_80785E4;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+static void sub_80E27E8(struct Sprite *sprite)
+{
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
+ if (gBattleAnimArgs[2] == 0)
+ InitAnimSpritePos(sprite, 1);
+ else
+ sub_8078764(sprite, 1);
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->callback = sub_80785E4;
+ StoreSpriteCallbackInData(sprite, sub_80DA48C);
+}
+
+static void sub_80E2838(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER && !IsContest())
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+
+ sub_80E27A0(sprite);
+}
+
+static void sub_80E2870(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[1] == -1)
+ gBattleAnimArgs[1] = Random() & 3;
+
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[1]);
+ if (gBattleAnimArgs[0] == 0)
+ InitAnimSpritePos(sprite, 0);
+ else
+ sub_8078764(sprite, 0);
+
+ sprite->pos2.x += (Random() % 48) - 24;
+ sprite->pos2.y += (Random() % 24) - 12;
+
+ StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ sprite->callback = sub_80785E4;
+}
+
+static void sub_80E2908(struct Sprite *sprite)
+{
+ sprite->data[0] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+ sprite->pos1.x = gSprites[sprite->data[0]].pos1.x + gSprites[sprite->data[0]].pos2.x;
+ sprite->pos1.y = gSprites[sprite->data[0]].pos1.y + gSprites[sprite->data[0]].pos2.y;
+ sprite->pos2.x = gBattleAnimArgs[1];
+ sprite->pos2.y = gBattleAnimArgs[2];
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
+ StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ sprite->callback = sub_80785E4;
+}
+
+static void sub_80E2978(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[2] == 0)
+ InitAnimSpritePos(sprite, 1);
+ else
+ sub_8078764(sprite, 1);
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+ sprite->callback = WaitAnimForDuration;
+}
+
+static void sub_80E29C0(struct Sprite *sprite)
+{
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
+ if (gBattleAnimArgs[2] == 0)
+ InitAnimSpritePos(sprite, 1);
+ else
+ sub_8078764(sprite, 1);
+
+ sprite->callback = sub_80E29FC;
+}
+
+static void sub_80E29FC(struct Sprite *sprite)
+{
+ sprite->invisible ^= 1;
+ if (sprite->data[0]++ > 12)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80E2A38(u8 taskId)
+{
+ u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]);
+ selectedPalettes |= sub_80792C0(
+ (gBattleAnimArgs[0] >> 7) & 1,
+ (gBattleAnimArgs[0] >> 8) & 1,
+ (gBattleAnimArgs[0] >> 9) & 1,
+ (gBattleAnimArgs[0] >> 10) & 1);
+
+ sub_80E2C8C(taskId, selectedPalettes);
+}
+
+void sub_80E2A7C(u8 taskId)
+{
+ u8 battler;
+ u32 selectedPalettes;
+ u8 sp[2];
+
+ sp[1] = 0xFF;
+ selectedPalettes = UnpackSelectedBattleAnimPalettes(1);
+ switch (gBattleAnimArgs[0])
+ {
+ case 2:
+ selectedPalettes = 0;
+ // fall through
+ case 0:
+ sp[0] = gAnimBankAttacker;
+ break;
+ case 3:
+ selectedPalettes = 0;
+ // fall through
+ case 1:
+ sp[0] = gAnimBankTarget;
+ break;
+ case 4:
+ sp[0] = gAnimBankAttacker;
+ sp[1] = gAnimBankTarget;
+ break;
+ case 5:
+ sp[0] = 0xFF;
+ break;
+ case 6:
+ selectedPalettes = 0;
+ sp[0] = gAnimBankAttacker ^ 2;
+ break;
+ case 7:
+ selectedPalettes = 0;
+ sp[0] = gAnimBankTarget ^ 2;
+ break;
+ }
+
+ for (battler = 0; battler < 4; battler++)
+ {
+ if (battler != sp[0] && battler != sp[1] && IsAnimBankSpriteVisible(battler))
+ {
+ u8 paletteIndex = sub_80793A8(battler);
+ selectedPalettes |= (0x10000 << paletteIndex);
+ }
+ }
+
+ sub_80E2C8C(taskId, selectedPalettes);
+}
+
+void sub_80E2B74(u8 taskId)
+{
+ u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]);
+
+ switch (gBattleTerrain)
+ {
+ case BATTLE_TERRAIN_GRASS:
+ gBattleAnimArgs[4] = 0x0B0C;
+ break;
+ case BATTLE_TERRAIN_LONG_GRASS:
+ gBattleAnimArgs[4] = 0x09E0;
+ break;
+ case BATTLE_TERRAIN_SAND:
+ gBattleAnimArgs[4] = 0x2F1E;
+ break;
+ case BATTLE_TERRAIN_UNDERWATER:
+ gBattleAnimArgs[4] = 0x4800;
+ break;
+ case BATTLE_TERRAIN_WATER:
+ gBattleAnimArgs[4] = 0x7ECB;
+ break;
+ case BATTLE_TERRAIN_POND:
+ gBattleAnimArgs[4] = 0x7ECB;
+ break;
+ case BATTLE_TERRAIN_MOUNTAIN:
+ gBattleAnimArgs[4] = 0x2A16;
+ break;
+ case BATTLE_TERRAIN_CAVE:
+ gBattleAnimArgs[4] = 0x0D2E;
+ break;
+ case BATTLE_TERRAIN_BUILDING:
+ gBattleAnimArgs[4] = 0x7FFF;
+ break;
+ case BATTLE_TERRAIN_PLAIN:
+ gBattleAnimArgs[4] = 0x7FFF;
+ break;
+ }
+
+ sub_80E2C8C(taskId, selectedPalettes);
+}
+
+void sub_80E2C60(u8 taskId)
+{
+ u8 paletteIndex = IndexOfSpritePaletteTag(gBattleAnimArgs[0]);
+ sub_80E2C8C(taskId, 1 << (paletteIndex + 16));
+}
+
+static void sub_80E2C8C(u8 taskId, u32 selectedPalettes)
+{
+ gTasks[taskId].data[0] = selectedPalettes;
+ gTasks[taskId].data[1] = selectedPalettes >> 16;
+ gTasks[taskId].data[2] = gBattleAnimArgs[1];
+ gTasks[taskId].data[3] = gBattleAnimArgs[2];
+ gTasks[taskId].data[4] = gBattleAnimArgs[3];
+ gTasks[taskId].data[5] = gBattleAnimArgs[4];
+ gTasks[taskId].data[10] = gBattleAnimArgs[2];
+ gTasks[taskId].func = sub_80E2CD0;
+ gTasks[taskId].func(taskId);
+}
+
+static void sub_80E2CD0(u8 taskId)
+{
+ u32 selectedPalettes;
+ u16 singlePaletteMask = 0;
+
+ if (gTasks[taskId].data[9] == gTasks[taskId].data[2])
+ {
+ gTasks[taskId].data[9] = 0;
+ selectedPalettes = gTasks[taskId].data[0] | (gTasks[taskId].data[1] << 16);
+ while (selectedPalettes != 0)
+ {
+ if (selectedPalettes & 1)
+ BlendPalette(singlePaletteMask, 16, gTasks[taskId].data[10], gTasks[taskId].data[5]);
+ singlePaletteMask += 0x10;
+ selectedPalettes >>= 1;
+ }
+
+ if (gTasks[taskId].data[10] < gTasks[taskId].data[4])
+ gTasks[taskId].data[10]++;
+ else if (gTasks[taskId].data[10] > gTasks[taskId].data[4])
+ gTasks[taskId].data[10]--;
+ else
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ gTasks[taskId].data[9]++;
+ }
+}
+
+void sub_80E2D78(u8 taskId)
+{
+ BeginHardwarePaletteFade(
+ gBattleAnimArgs[0],
+ gBattleAnimArgs[1],
+ gBattleAnimArgs[2],
+ gBattleAnimArgs[3],
+ gBattleAnimArgs[4]);
+
+ gTasks[taskId].func = sub_80E2DB8;
+}
+
+static void sub_80E2DB8(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80E2DD8(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[0] = gBattleAnimArgs[0];
+ task->data[1] = 0;
+ task->data[2] = gBattleAnimArgs[1];
+ task->data[3] = gBattleAnimArgs[2];
+ task->data[4] = gBattleAnimArgs[3];
+ task->data[5] = 0;
+ task->func = sub_80E2E10;
+}
+
+static void sub_80E2E10(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (task->data[4])
+ {
+ if (task->data[1])
+ {
+ task->data[1]--;
+ }
+ else
+ {
+ task->data[6] = duplicate_obj_of_side_rel2move_in_transparent_mode(task->data[0]);
+ if (task->data[6] >= 0)
+ {
+ gSprites[task->data[6]].oam.priority = task->data[0] ? 1 : 2;
+ gSprites[task->data[6]].data[0] = task->data[3];
+ gSprites[task->data[6]].data[1] = taskId;
+ gSprites[task->data[6]].data[2] = 5;
+ gSprites[task->data[6]].callback = sub_80E2EE8;
+ task->data[5]++;
+ }
+
+ task->data[4]--;
+ task->data[1] = task->data[2];
+ }
+ }
+ else if (task->data[5] == 0)
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static void sub_80E2EE8(struct Sprite *sprite)
+{
+ if (sprite->data[0])
+ {
+ sprite->data[0]--;
+ }
+ else
+ {
+ gTasks[sprite->data[1]].data[sprite->data[2]]--;
+ obj_delete_but_dont_free_vram(sprite);
+ }
+}
+
+void sub_80E2F2C(u8 taskId)
+{
+ u16 species;
+ int spriteId, newSpriteId;
+ u16 var0;
+ struct Struct_sub_8078914 subStruct;
+
+ var0 = 0;
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ REG_WININ = 0x3F3F;
+ REG_WINOUT = 0x3F3D;
+ REG_DISPCNT |= DISPCNT_OBJWIN_ON;
+ REG_BLDCNT = 0x3F42;
+ REG_BLDALPHA = 0x0C08;
+ REG_BG1CNT_BITFIELD.priority = 0;
+ REG_BG1CNT_BITFIELD.screenSize = 0;
+ REG_BG1CNT_BITFIELD.areaOverflowMode = 1;
+
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 1;
+
+ if (IsDoubleBattle() && !IsContest())
+ {
+ if (GetBattlerPosition(gAnimBankAttacker) == B_POSITION_OPPONENT_RIGHT
+ || GetBattlerPosition(gAnimBankAttacker) == B_POSITION_PLAYER_LEFT)
+ {
+ if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2) == TRUE)
+ {
+ gSprites[gBankSpriteIds[gAnimBankAttacker ^ 2]].oam.priority -= 1;
+ REG_BG1CNT_BITFIELD.priority = 1;
+ var0 = 1;
+ }
+ }
+ }
+
+ if (IsContest())
+ {
+ species = eWRAM_19348Struct->species2;
+ }
+ else
+ {
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gAnimBankAttacker]], MON_DATA_SPECIES);
+ else
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gAnimBankAttacker]], MON_DATA_SPECIES);
+ }
+
+ spriteId = GetAnimBattlerSpriteId(0);
+ newSpriteId = sub_807A4A0(gAnimBankAttacker, spriteId, species);
+ sub_8078914(&subStruct);
+ DmaFill32Defvars(3, 0, subStruct.field_4, 0x1000);
+ LZDecompressVram(&gUnknown_08D20A30, subStruct.field_4);
+ if (IsContest())
+ sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0);
+
+ LZDecompressVram(&gUnknown_08D20A14, subStruct.field_0);
+ LoadPalette(&gUnknown_083DB568, subStruct.field_8 * 16 + 1, 2);
+
+ gBattle_BG1_X = -gSprites[spriteId].pos1.x + 32;
+ gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32;
+ gTasks[taskId].data[0] = newSpriteId;
+ gTasks[taskId].data[6] = var0;
+ gTasks[taskId].func = sub_80E3194;
+}
+
+static void sub_80E3194(u8 taskId)
+{
+ struct Struct_sub_8078914 subStruct;
+ struct Sprite *sprite;
+
+ gTasks[taskId].data[10] += 4;
+ gBattle_BG1_Y -= 4;
+ if (gTasks[taskId].data[10] == 64)
+ {
+ gTasks[taskId].data[10] = 0;
+ gBattle_BG1_Y += 64;
+ if (++gTasks[taskId].data[11] == 4)
+ {
+ sub_8076464(0);
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ REG_WININ = 0x3F3F;
+ REG_WINOUT = 0x3F3F;
+
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 0;
+
+ REG_DISPCNT ^= DISPCNT_OBJWIN_ON;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ sprite = &gSprites[GetAnimBattlerSpriteId(0)]; // unused
+ sprite = &gSprites[gTasks[taskId].data[0]];
+ DestroySprite(sprite);
+
+ sub_8078914(&subStruct);
+ DmaFill32Defvars(3, 0, subStruct.field_4, 0x800);
+ if (gTasks[taskId].data[6] == 1)
+ gSprites[gBankSpriteIds[gAnimBankAttacker ^ 2]].oam.priority++;
+
+ REG_BG1CNT_BITFIELD.areaOverflowMode = 0;
+ do {} while(0); // needed to match. perhaps part of a debug macro
+ gBattle_BG1_Y = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_80E32E0(u8 taskId)
+{
+ u8 i;
+
+ for (i = 0; i < 8; i++)
+ gTasks[taskId].data[i] = gBattleAnimArgs[i];
+
+ gTasks[taskId].func = sub_80E3338;
+}
+
+static void sub_80E3338(u8 taskId)
+{
+ int i;
+ u8 battler1, battler2;
+ u16 species;
+ u8 spriteId, spriteId2;
+ u16 var0;
+ struct Struct_sub_8078914 subStruct;
+ s16 taskData[8];
+
+ spriteId2 = 0;
+ var0 = 0;
+
+ for (i = 0; i < 8; i++)
+ {
+ taskData[i] = gTasks[taskId].data[i];
+ gTasks[taskId].data[i] = 0;
+ }
+
+ if (taskData[2] == 0)
+ battler1 = gAnimBankAttacker;
+ else
+ battler1 = gAnimBankTarget;
+
+ battler2 = battler1 ^ 2;
+ if (IsContest() || (taskData[3] && !IsAnimBankSpriteVisible(battler2)))
+ taskData[3] = 0;
+
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ REG_WININ = 0x3F3F;
+ REG_WINOUT = 0x3F3D;
+ REG_DISPCNT |= DISPCNT_OBJWIN_ON;
+ REG_BLDCNT = 0x3F42;
+ REG_BLDALPHA = 0x1000;
+ REG_BG1CNT_BITFIELD.priority = 0;
+ REG_BG1CNT_BITFIELD.screenSize = 0;
+ REG_BG1CNT_BITFIELD.areaOverflowMode = 1;
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 1;
+
+ if (IsDoubleBattle() && taskData[3] == 0)
+ {
+ if (GetBattlerPosition(battler1) == B_POSITION_OPPONENT_RIGHT
+ || GetBattlerPosition(battler1) == B_POSITION_PLAYER_LEFT)
+ {
+ if (IsAnimBankSpriteVisible(battler2) == TRUE)
+ {
+ gSprites[gBankSpriteIds[battler2]].oam.priority -= 1;
+ REG_BG1CNT_BITFIELD.priority = 1;
+ var0 = 1;
+ }
+ }
+ }
+
+ if (IsContest())
+ {
+ species = eWRAM_19348Struct->species2;
+ }
+ else
+ {
+ if (GetBattlerSide(battler1) != B_SIDE_PLAYER)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES);
+ else
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES);
+ }
+
+ spriteId = sub_807A4A0(battler1, gBankSpriteIds[battler1], species);
+ if (taskData[3])
+ spriteId2 = sub_807A4A0(battler2, gBankSpriteIds[battler2], species);
+
+ sub_8078914(&subStruct);
+ if (taskData[0] == 0)
+ LZDecompressVram(&gBattleStatMask1_Tilemap, subStruct.field_4);
+ else
+ LZDecompressVram(&gBattleStatMask2_Tilemap, subStruct.field_4);
+
+ if (IsContest())
+ sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0);
+
+ LZDecompressVram(&gBattleStatMask_Gfx, subStruct.field_0);
+
+ if (taskData[1] == 0)
+ LoadCompressedPalette(gBattleStatMask2_Pal, subStruct.field_8 << 4, 32);
+ else if (taskData[1] == 1)
+ LoadCompressedPalette(gBattleStatMask1_Pal, subStruct.field_8 << 4, 32);
+ else if (taskData[1] == 2)
+ LoadCompressedPalette(gBattleStatMask3_Pal, subStruct.field_8 << 4, 32);
+ else if (taskData[1] == 3)
+ LoadCompressedPalette(gBattleStatMask4_Pal, subStruct.field_8 << 4, 32);
+ else if (taskData[1] == 4)
+ LoadCompressedPalette(gBattleStatMask6_Pal, subStruct.field_8 << 4, 32);
+ else if (taskData[1] == 5)
+ LoadCompressedPalette(gBattleStatMask7_Pal, subStruct.field_8 << 4, 32);
+ else if (taskData[1] == 6)
+ LoadCompressedPalette(gBattleStatMask8_Pal, subStruct.field_8 << 4, 32);
+ else
+ LoadCompressedPalette(gBattleStatMask5_Pal, subStruct.field_8 << 4, 32);
+
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+
+ if (taskData[0] == 1)
+ {
+ gBattle_BG1_X = 64;
+ gTasks[taskId].data[1] = -3;
+ }
+ else
+ {
+ gTasks[taskId].data[1] = 3;
+ }
+
+ if (taskData[4] == 0)
+ {
+ gTasks[taskId].data[4] = 10;
+ gTasks[taskId].data[5] = 20;
+ }
+ else
+ {
+ gTasks[taskId].data[4] = 13;
+ gTasks[taskId].data[5] = 30;
+ }
+
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].data[2] = taskData[3];
+ gTasks[taskId].data[3] = spriteId2;
+ gTasks[taskId].data[6] = var0;
+ gTasks[taskId].data[7] = gBankSpriteIds[battler2];
+ gTasks[taskId].func = sub_80E3704;
+
+ if (taskData[0] == 0)
+ PlaySE12WithPanning(SE_W287, BattleAnimAdjustPanning2(-64));
+ else
+ PlaySE12WithPanning(SE_W287B, BattleAnimAdjustPanning2(-64));
+}
+
+static void sub_80E3704(u8 taskId)
+{
+ gBattle_BG1_Y += gTasks[taskId].data[1];
+
+ switch (gTasks[taskId].data[15])
+ {
+ case 0:
+ if (gTasks[taskId].data[11]++ > 0)
+ {
+ gTasks[taskId].data[11] = 0;
+ gTasks[taskId].data[12]++;
+ REG_BLDALPHA = ((16 - gTasks[taskId].data[12]) << 8) | gTasks[taskId].data[12];
+ if (gTasks[taskId].data[12] == gTasks[taskId].data[4])
+ gTasks[taskId].data[15]++;
+ }
+ break;
+ case 1:
+ if (++gTasks[taskId].data[10] == gTasks[taskId].data[5])
+ gTasks[taskId].data[15]++;
+ break;
+ case 2:
+ if (gTasks[taskId].data[11]++ > 0)
+ {
+ gTasks[taskId].data[11] = 0;
+ gTasks[taskId].data[12]--;
+ REG_BLDALPHA = ((16 - gTasks[taskId].data[12]) << 8) | gTasks[taskId].data[12];
+ if (gTasks[taskId].data[12] == 0)
+ {
+ sub_8076464(0);
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ REG_WININ = 0x3F3F;
+ REG_WINOUT = 0x3F3F;
+
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 0;
+
+ REG_DISPCNT ^= DISPCNT_OBJWIN_ON;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroySprite(&gSprites[gTasks[taskId].data[0]]);
+ if (gTasks[taskId].data[2])
+ DestroySprite(&gSprites[gTasks[taskId].data[3]]);
+
+ if (gTasks[taskId].data[6] == 1)
+ gSprites[gTasks[taskId].data[7]].oam.priority++;
+
+ REG_BG1CNT_BITFIELD.areaOverflowMode = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ break;
+ }
+}
+
+void sub_80E388C(u8 taskId)
+{
+ u32 selectedPalettes = sub_80792C0(1, 1, 1, 1);
+ sub_80E39BC(selectedPalettes, 0);
+ gTasks[taskId].data[14] = selectedPalettes >> 16;
+
+ selectedPalettes = sub_80791A8(1, 0, 0, 0, 0, 0, 0) & 0xFFFF;
+ sub_80E39BC(selectedPalettes, 0xFFFF);
+ gTasks[taskId].data[15] = selectedPalettes;
+
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].func = sub_80E38F8;
+}
+
+static void sub_80E38F8(u8 taskId)
+{
+ u16 i;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 6)
+ {
+ task->data[1] = 0;
+ task->data[2] = 16;
+ task->data[0]++;
+ }
+ break;
+ case 1:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ task->data[2]--;
+
+ for (i = 0; i < 16; i++)
+ {
+ if ((task->data[15] >> i) & 1)
+ {
+ u16 paletteOffset = i * 16;
+ BlendPalette(paletteOffset, 16, task->data[2], 0xFFFF);
+ }
+
+ if ((task->data[14] >> i) & 1)
+ {
+ u16 paletteOffset = i * 16 + 0x100;
+ BlendPalette(paletteOffset, 16, task->data[2], 0);
+ }
+ }
+
+ if (task->data[2] == 0)
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_80E39BC(u32 selectedPalettes, u16 color)
+{
+ u16 i;
+
+ for (i = 0; i < 32; i++)
+ {
+ if (selectedPalettes & 1)
+ {
+ u16 curOffset = i * 16;
+ u16 paletteOffset = curOffset;
+ while (curOffset < paletteOffset + 16)
+ {
+ gPlttBufferFaded[curOffset] = color;
+ curOffset++;
+ }
+ }
+
+ selectedPalettes >>= 1;
+ }
+}
+
+void sub_80E3A08(u8 taskId)
+{
+ u32 i;
+ int j;
+ u32 selectedPalettes = 0;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gAnimBankAttacker != i)
+ selectedPalettes |= 1 << (i + 16);
+ }
+
+ for (j = 5; j != 0; j--)
+ gBattleAnimArgs[j] = gBattleAnimArgs[j - 1];
+
+ sub_80E2C8C(taskId, selectedPalettes);
+}
+
+void sub_80E3A58(u8 taskId)
+{
+ u8 newTaskId;
+
+ sub_80789D4(0);
+ newTaskId = CreateTask(sub_80E3AD0, 5);
+ if (gBattleAnimArgs[2] && GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ {
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ }
+
+ gTasks[newTaskId].data[1] = gBattleAnimArgs[0];
+ gTasks[newTaskId].data[2] = gBattleAnimArgs[1];
+ gTasks[newTaskId].data[3] = gBattleAnimArgs[3];
+ gTasks[newTaskId].data[0]++;
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_80E3AD0(u8 taskId)
+{
+ gTasks[taskId].data[10] += gTasks[taskId].data[1];
+ gTasks[taskId].data[11] += gTasks[taskId].data[2];
+ gBattle_BG3_X += gTasks[taskId].data[10] >> 8;
+ gBattle_BG3_Y += gTasks[taskId].data[11] >> 8;
+ gTasks[taskId].data[10] &= 0xFF;
+ gTasks[taskId].data[11] &= 0xFF;
+
+ if (gBattleAnimArgs[7] == gTasks[taskId].data[3])
+ {
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+ sub_80789D4(1);
+ DestroyTask(taskId);
+ }
+}
+
+void sub_80E3B4C(u8 taskId)
+{
+ gBattleAnimArgs[7] = GetBattlerSide(gAnimBankAttacker);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80E3B78(u8 taskId)
+{
+ gBattleAnimArgs[7] = GetBattlerSide(gAnimBankTarget);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80E3BA4(u8 taskId)
+{
+ gBattleAnimArgs[7] = (gAnimBankAttacker ^ 2) == gAnimBankTarget;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80E3BDC(u8 taskId)
+{
+ u16 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (i != gAnimBankAttacker && IsAnimBankSpriteVisible(i))
+ gSprites[gBankSpriteIds[i]].invisible = gBattleAnimArgs[0];
+ }
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80E3C4C(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u8 *arg8, const u8 *arg9, const u16 *palette)
+{
+ u16 species;
+ u8 spriteId, spriteId2;
+ struct Struct_sub_8078914 subStruct;
+ u8 battler2;
+
+ spriteId2 = 0;
+ battler2 = battler1 ^ 2;
+
+ if (IsContest() || (arg4 && !IsAnimBankSpriteVisible(battler2)))
+ arg4 = 0;
+
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ REG_WININ = 0x3F3F;
+ REG_WINOUT = 0x3F3D;
+ REG_DISPCNT |= DISPCNT_OBJWIN_ON;
+ REG_BLDCNT = 0x3F42;
+ REG_BLDALPHA = 0x1000;
+ REG_BG1CNT_BITFIELD.priority = 0;
+ REG_BG1CNT_BITFIELD.screenSize = 0;
+ REG_BG1CNT_BITFIELD.areaOverflowMode = 1;
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 1;
+
+ if (IsContest())
+ {
+ species = eWRAM_19348Struct->species2;
+ }
+ else
+ {
+ if (GetBattlerSide(battler1) != B_SIDE_PLAYER)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES);
+ else
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES);
+ }
+
+ spriteId = sub_807A4A0(battler1, gBankSpriteIds[battler1], species);
+ if (arg4)
+ spriteId2 = sub_807A4A0(battler2, gBankSpriteIds[battler2], species);
+
+ sub_8078914(&subStruct);
+ LZDecompressVram(arg9, subStruct.field_4);
+ if (IsContest())
+ sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0);
+
+ LZDecompressVram(arg8, subStruct.field_0);
+ LoadCompressedPalette(palette, subStruct.field_8 << 4, 32);
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ gTasks[taskId].data[1] = arg2;
+ gTasks[taskId].data[4] = arg5;
+ gTasks[taskId].data[5] = arg7;
+ gTasks[taskId].data[6] = arg6;
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].data[2] = arg4;
+ gTasks[taskId].data[3] = spriteId2;
+ gTasks[taskId].func = sub_80E3E64;
+}
+
+static void sub_80E3E64(u8 taskId)
+{
+ gTasks[taskId].data[13] += gTasks[taskId].data[1] < 0 ? -gTasks[taskId].data[1] : gTasks[taskId].data[1];
+ if (gTasks[taskId].data[1] < 0)
+ gBattle_BG1_Y -= gTasks[taskId].data[13] >> 8;
+ else
+ gBattle_BG1_Y += gTasks[taskId].data[13] >> 8;
+
+ gTasks[taskId].data[13] &= 0xFF;
+ switch (gTasks[taskId].data[15])
+ {
+ case 0:
+ if (gTasks[taskId].data[11]++ >= gTasks[taskId].data[6])
+ {
+ gTasks[taskId].data[11] = 0;
+ gTasks[taskId].data[12]++;
+ REG_BLDALPHA = ((16 - gTasks[taskId].data[12]) << 8) | gTasks[taskId].data[12];
+ if (gTasks[taskId].data[12] == gTasks[taskId].data[4])
+ gTasks[taskId].data[15]++;
+ }
+ break;
+ case 1:
+ if (++gTasks[taskId].data[10] == gTasks[taskId].data[5])
+ gTasks[taskId].data[15]++;
+ break;
+ case 2:
+ if (gTasks[taskId].data[11]++ >= gTasks[taskId].data[6])
+ {
+ gTasks[taskId].data[11] = 0;
+ gTasks[taskId].data[12]--;
+ REG_BLDALPHA = ((16 - gTasks[taskId].data[12]) << 8) | gTasks[taskId].data[12];
+ if (gTasks[taskId].data[12] == 0)
+ {
+ sub_8076464(0);
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ REG_WININ = 0x3F3F;
+ REG_WINOUT = 0x3F3F;
+
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 0;
+
+ REG_DISPCNT ^= DISPCNT_OBJWIN_ON;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroySprite(&gSprites[gTasks[taskId].data[0]]);
+ if (gTasks[taskId].data[2])
+ DestroySprite(&gSprites[gTasks[taskId].data[3]]);
+
+ REG_BG1CNT_BITFIELD.areaOverflowMode = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ break;
+ }
+}
+
+void sub_80E4008(u8 taskId)
+{
+ gBattleAnimArgs[0] = gBattleTerrain;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80E4028(u8 taskId)
+{
+ u32 selectedPalettes;
+ u8 *dest;
+ int offset;
+ int i = 0;
+
+ if (gBattleAnimArgs[0] == 0)
+ {
+ selectedPalettes = sub_80791A8(1, 0, 0, 0, 0, 0, 0);
+ while ((selectedPalettes & 1) == 0)
+ {
+ selectedPalettes >>= 1;
+ i++;
+ }
+ }
+ else if (gBattleAnimArgs[0] == 1)
+ {
+ i = gAnimBankAttacker + 16;
+ }
+ else if (gBattleAnimArgs[0] == 2)
+ {
+ i = gAnimBankTarget + 16;
+ }
+
+ offset = gBattleAnimArgs[1] * 32;
+ dest = IsContest() ? &ewram14800[offset] : &ewram18000_2[offset];
+ // This doesn't match when u16* is used.
+ memcpy(dest, &((u8 *)gPlttBufferUnfaded)[i * 32], 32);
+ DestroyAnimVisualTask(taskId);
+}
+
+
+void sub_80E40D0(u8 taskId)
+{
+ u32 selectedPalettes;
+ u8 *src;
+ u8 *dest;
+ int offset;
+ int i = 0;
+
+ if (gBattleAnimArgs[0] == 0)
+ {
+ selectedPalettes = sub_80791A8(1, 0, 0, 0, 0, 0, 0);
+ while ((selectedPalettes & 1) == 0)
+ {
+ selectedPalettes >>= 1;
+ i++;
+ }
+ }
+ else if (gBattleAnimArgs[0] == 1)
+ {
+ i = gAnimBankAttacker + 16;
+ }
+ else if (gBattleAnimArgs[0] == 2)
+ {
+ i = gAnimBankTarget + 16;
+ }
+
+ dest = &((u8 *)gPlttBufferUnfaded)[i * 32];
+ offset = gBattleAnimArgs[1] * 32;
+ src = IsContest() ? &ewram14800[offset] : &ewram18000_2[offset];
+ // This doesn't match when u16* is used.
+ memcpy(dest, src, 32);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80E4178(u8 taskId)
+{
+ u32 selectedPalettes;
+ int i = 0;
+
+ if (gBattleAnimArgs[0] == 0)
+ {
+ selectedPalettes = sub_80791A8(1, 0, 0, 0, 0, 0, 0);
+ while ((selectedPalettes & 1) == 0)
+ {
+ selectedPalettes >>= 1;
+ i++;
+ }
+ }
+ else if (gBattleAnimArgs[0] == 1)
+ {
+ i = gAnimBankAttacker + 16;
+ }
+ else if (gBattleAnimArgs[0] == 2)
+ {
+ i = gAnimBankTarget + 16;
+ }
+
+ memcpy(&gPlttBufferUnfaded[i * 16], &gPlttBufferFaded[i * 16], 32);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80E4200(u8 taskId)
+{
+ if (IsContest())
+ gBattleAnimArgs[7] = 1;
+ else
+ gBattleAnimArgs[7] = 0;
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80E4234(u8 taskId)
+{
+ gAnimBankAttacker = gBankTarget;
+ gAnimBankTarget = gEffectBank;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80E4264(u8 taskId)
+{
+ if (GetBattlerSide(gAnimBankAttacker) == GetBattlerSide(gAnimBankTarget))
+ gBattleAnimArgs[7] = 1;
+ else
+ gBattleAnimArgs[7] = 0;
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80E42B0(u8 taskId)
+{
+ gAnimBankTarget = gBankTarget;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80E42D0(u8 taskId)
+{
+ gAnimBankAttacker = gBankAttacker;
+ gAnimBankTarget = gEffectBank;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80E4300(u8 taskId)
+{
+ if (IsContest())
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ gTasks[taskId].data[0] = ewram17800[gAnimBankAttacker].invisible;
+ ewram17800[gAnimBankAttacker].invisible = 1;
+ gTasks[taskId].func = sub_80E4368;
+ gAnimVisualTaskCount--;
+ }
+}
+
+static void sub_80E4368(u8 taskId)
+{
+ if (gBattleAnimArgs[7] == 0x1000)
+ {
+ ewram17800[gAnimBankAttacker].invisible = gTasks[taskId].data[0] & 1;
+ DestroyTask(taskId);
+ }
+}
diff --git a/src/battle/battle_anim_812C144.c b/src/battle/battle_anim_812C144.c
index 2175f7d2a..bcdd2b693 100644
--- a/src/battle/battle_anim_812C144.c
+++ b/src/battle/battle_anim_812C144.c
@@ -14,15 +14,6 @@
#include "constants/songs.h"
#include "constants/species.h"
-struct EWRAM_19348_Struct
-{
- /*0x00*/ u8 filler0[0x2];
- /*0x02*/ u16 species;
- /*0x04*/ u8 filler4[0x8];
- /*0x0C*/ u32 otId;
- /*0x10*/ u32 personality;
-};
-
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;