Files
pokeruby/asm/ghost.s
T
2018-01-14 17:24:28 -05:00

3384 lines
56 KiB
ArmAsm

.include "constants/gba_constants.inc"
.include "include/macros.inc"
.syntax unified
.text
@ ghost
thumb_func_start sub_80DDB6C
sub_80DDB6C: @ 80DDB6C
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x1
bl sub_80787B0
ldr r0, _080DDBC8 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
ldr r5, _080DDBCC @ =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
ldrb r0, [r5]
movs r1, 0x3
bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
adds r0, r4, 0
bl sub_8078BD4
ldr r0, _080DDBD0 @ =sub_80DDBD8
str r0, [r4, 0x1C]
movs r0, 0x10
strh r0, [r4, 0x3A]
ldr r1, _080DDBD4 @ =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]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080DDBC8: .4byte gBattleAnimArgs
_080DDBCC: .4byte gAnimBankTarget
_080DDBD0: .4byte sub_80DDBD8
_080DDBD4: .4byte REG_BLDCNT
thumb_func_end sub_80DDB6C
thumb_func_start sub_80DDBD8
sub_80DDBD8: @ 80DDBD8
push {r4,lr}
adds r4, r0, 0
bl sub_80DDCC8
adds r0, r4, 0
bl sub_8078B5C
lsls r0, 24
cmp r0, 0
beq _080DDBF8
ldr r0, _080DDBF4 @ =sub_80DDC4C
str r0, [r4, 0x1C]
b _080DDC42
.align 2, 0
_080DDBF4: .4byte sub_80DDC4C
_080DDBF8:
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r1, 0xA
bl Sin
ldrh r1, [r4, 0x24]
adds r0, r1
strh r0, [r4, 0x24]
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r1, 0xF
bl Cos
ldrh r1, [r4, 0x26]
adds r0, r1
strh r0, [r4, 0x26]
ldrh r2, [r4, 0x38]
adds r0, r2, 0x5
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x38]
ldrh r0, [r4, 0x38]
lsls r2, 16
asrs r2, 16
cmp r2, 0
beq _080DDC30
cmp r2, 0xC4
ble _080DDC42
_080DDC30:
lsls r0, 16
cmp r0, 0
ble _080DDC42
ldr r0, _080DDC48 @ =gUnknown_0202F7D2
movs r1, 0
ldrsb r1, [r0, r1]
movs r0, 0xC4
bl PlaySE12WithPanning
_080DDC42:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DDC48: .4byte gUnknown_0202F7D2
thumb_func_end sub_80DDBD8
thumb_func_start sub_80DDC4C
sub_80DDC4C: @ 80DDC4C
push {r4,lr}
adds r4, r0, 0
movs r0, 0x1
strh r0, [r4, 0x2E]
adds r0, r4, 0
bl sub_8078B5C
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r1, 0xA
bl Sin
ldrh r1, [r4, 0x24]
adds r0, r1
strh r0, [r4, 0x24]
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r1, 0xF
bl Cos
ldrh r1, [r4, 0x26]
adds r0, r1
strh r0, [r4, 0x26]
ldrh r2, [r4, 0x38]
adds r0, r2, 0x5
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x38]
ldrh r0, [r4, 0x38]
lsls r2, 16
asrs r2, 16
cmp r2, 0
beq _080DDC92
cmp r2, 0xC4
ble _080DDC9E
_080DDC92:
lsls r0, 16
cmp r0, 0
ble _080DDC9E
movs r0, 0xC4
bl PlaySE
_080DDC9E:
movs r1, 0x3A
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080DDCBC
adds r2, r4, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r0, _080DDCB8 @ =sub_807861C
str r0, [r4, 0x1C]
b _080DDCC2
.align 2, 0
_080DDCB8: .4byte sub_807861C
_080DDCBC:
adds r0, r4, 0
bl sub_80DDCC8
_080DDCC2:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80DDC4C
thumb_func_start sub_80DDCC8
sub_80DDCC8: @ 80DDCC8
push {r4,lr}
adds r3, r0, 0
ldrh r2, [r3, 0x3A]
movs r1, 0x3A
ldrsh r0, [r3, r1]
cmp r0, 0xFF
ble _080DDCEC
adds r0, r2, 0x1
strh r0, [r3, 0x3A]
lsls r0, 16
ldr r1, _080DDCE8 @ =0x010d0000
cmp r0, r1
bne _080DDD4C
movs r0, 0
b _080DDD4A
.align 2, 0
_080DDCE8: .4byte 0x010d0000
_080DDCEC:
ldrh r1, [r3, 0x3C]
adds r4, r1, 0x1
strh r4, [r3, 0x3C]
movs r0, 0xFF
ands r0, r1
cmp r0, 0
bne _080DDD4C
ldr r1, _080DDD10 @ =0xffffff00
ands r1, r4
strh r1, [r3, 0x3C]
movs r0, 0x80
lsls r0, 1
ands r0, r1
cmp r0, 0
beq _080DDD14
adds r0, r2, 0x1
b _080DDD16
.align 2, 0
_080DDD10: .4byte 0xffffff00
_080DDD14:
subs r0, r2, 0x1
_080DDD16:
strh r0, [r3, 0x3A]
ldr r2, _080DDD54 @ =REG_BLDALPHA
ldrh r1, [r3, 0x3A]
movs r0, 0x10
subs r0, r1
lsls r0, 8
orrs r0, r1
strh r0, [r2]
movs r2, 0x3A
ldrsh r0, [r3, r2]
cmp r0, 0
beq _080DDD32
cmp r0, 0x10
bne _080DDD3E
_080DDD32:
ldrh r0, [r3, 0x3C]
movs r2, 0x80
lsls r2, 1
adds r1, r2, 0
eors r0, r1
strh r0, [r3, 0x3C]
_080DDD3E:
movs r1, 0x3A
ldrsh r0, [r3, r1]
cmp r0, 0
bne _080DDD4C
movs r0, 0x80
lsls r0, 1
_080DDD4A:
strh r0, [r3, 0x3A]
_080DDD4C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DDD54: .4byte REG_BLDALPHA
thumb_func_end sub_80DDCC8
thumb_func_start sub_80DDD58
sub_80DDD58: @ 80DDD58
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
bl sub_8078764
ldr r1, _080DDD74 @ =sub_80DDD78
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DDD74: .4byte sub_80DDD78
thumb_func_end sub_80DDD58
thumb_func_start sub_80DDD78
sub_80DDD78: @ 80DDD78
push {r4,lr}
adds r4, r0, 0
movs r1, 0x2E
ldrsh r0, [r4, r1]
movs r1, 0x20
bl Sin
strh r0, [r4, 0x24]
movs r1, 0x2E
ldrsh r0, [r4, r1]
movs r1, 0x8
bl Cos
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x2E]
subs r0, 0x41
lsls r0, 16
lsrs r0, 16
cmp r0, 0x82
bhi _080DDDAC
ldrb r0, [r4, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r0
movs r0, 0x8
b _080DDDB6
_080DDDAC:
ldrb r0, [r4, 0x5]
movs r1, 0xD
negs r1, r1
ands r1, r0
movs r0, 0x4
_080DDDB6:
orrs r1, r0
strb r1, [r4, 0x5]
ldrh r0, [r4, 0x2E]
adds r0, 0x13
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x32]
adds r0, 0x50
strh r0, [r4, 0x32]
lsls r0, 16
asrs r0, 24
ldrh r1, [r4, 0x26]
adds r0, r1
strh r0, [r4, 0x26]
ldrh r0, [r4, 0x3C]
adds r0, 0x1
strh r0, [r4, 0x3C]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3D
bne _080DDDE8
adds r0, r4, 0
bl DestroyAnimSprite
_080DDDE8:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80DDD78
thumb_func_start sub_80DDDF0
sub_80DDDF0: @ 80DDDF0
push {r4,r5,lr}
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
ldr r1, _080DDE68 @ =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]
movs r0, 0
bl GetAnimBankSpriteId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
movs r1, 0x1
bl sub_8078E70
adds r0, r4, 0
movs r1, 0x80
movs r2, 0x80
movs r3, 0
bl obj_id_set_rotscale
ldr r1, _080DDE6C @ =gSprites
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
adds r0, r1
adds r0, 0x3E
ldrb r2, [r0]
movs r1, 0x5
negs r1, r1
ands r1, r2
strb r1, [r0]
ldr r1, _080DDE70 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r0, r1
movs r2, 0
movs r1, 0x80
strh r1, [r0, 0x8]
ldr r1, _080DDE74 @ =gBattleAnimArgs
ldrh r1, [r1]
strh r1, [r0, 0xA]
strh r2, [r0, 0xC]
movs r1, 0x10
strh r1, [r0, 0xE]
ldr r1, _080DDE78 @ =sub_80DDE7C
str r1, [r0]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080DDE68: .4byte REG_BLDCNT
_080DDE6C: .4byte gSprites
_080DDE70: .4byte gTasks
_080DDE74: .4byte gBattleAnimArgs
_080DDE78: .4byte sub_80DDE7C
thumb_func_end sub_80DDDF0
thumb_func_start sub_80DDE7C
sub_80DDE7C: @ 80DDE7C
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r2, _080DDEC4 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r3, r1, r2
ldrh r0, [r3, 0x1C]
adds r0, 0x1
strh r0, [r3, 0x1C]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
bne _080DDEBE
movs r0, 0
strh r0, [r3, 0x1C]
ldrh r1, [r3, 0xC]
adds r1, 0x1
strh r1, [r3, 0xC]
ldrh r0, [r3, 0xE]
subs r0, 0x1
strh r0, [r3, 0xE]
ldr r2, _080DDEC8 @ =REG_BLDALPHA
lsls r0, 8
orrs r1, r0
strh r1, [r2]
movs r1, 0xC
ldrsh r0, [r3, r1]
cmp r0, 0x9
bne _080DDEBE
ldr r0, _080DDECC @ =sub_80DDED0
str r0, [r3]
_080DDEBE:
pop {r0}
bx r0
.align 2, 0
_080DDEC4: .4byte gTasks
_080DDEC8: .4byte REG_BLDALPHA
_080DDECC: .4byte sub_80DDED0
thumb_func_end sub_80DDE7C
thumb_func_start sub_80DDED0
sub_80DDED0: @ 80DDED0
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
ldr r1, _080DDEF4 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r4, r0, r1
ldrh r1, [r4, 0xA]
movs r2, 0xA
ldrsh r0, [r4, r2]
cmp r0, 0
ble _080DDEF8
subs r0, r1, 0x1
strh r0, [r4, 0xA]
b _080DDF36
.align 2, 0
_080DDEF4: .4byte gTasks
_080DDEF8:
movs r0, 0
bl GetAnimBankSpriteId
lsls r0, 24
lsrs r1, r0, 24
ldrh r0, [r4, 0x8]
adds r0, 0x8
movs r6, 0
strh r0, [r4, 0x8]
lsls r0, 16
asrs r0, 16
cmp r0, 0xFF
bgt _080DDF22
movs r0, 0x8
ldrsh r2, [r4, r0]
adds r0, r1, 0
adds r1, r2, 0
movs r3, 0
bl obj_id_set_rotscale
b _080DDF36
_080DDF22:
adds r0, r1, 0
bl sub_8078F40
adds r0, r5, 0
bl DestroyAnimVisualTask
ldr r0, _080DDF3C @ =REG_BLDCNT
strh r6, [r0]
adds r0, 0x2
strh r6, [r0]
_080DDF36:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080DDF3C: .4byte REG_BLDCNT
thumb_func_end sub_80DDED0
thumb_func_start sub_80DDF40
sub_80DDF40: @ 80DDF40
push {r4-r6,lr}
mov r6, r9
mov r5, r8
push {r5,r6}
sub sp, 0x4
adds r4, r0, 0
ldrh r5, [r4, 0x20]
ldrh r6, [r4, 0x22]
ldr r0, _080DDFDC @ =gAnimBankAttacker
mov r8, r0
ldrb r0, [r0]
movs r1, 0x2
bl GetBankPosition
lsls r0, 24
lsrs r0, 24
movs r1, 0
mov r9, r1
strh r0, [r4, 0x20]
mov r1, r8
ldrb r0, [r1]
movs r1, 0x3
bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
mov r1, r9
strh r1, [r4, 0x2E]
ldr r2, _080DDFE0 @ =gBattleAnimArgs
ldrh r1, [r2]
strh r1, [r4, 0x30]
ldrh r1, [r2, 0x2]
strh r1, [r4, 0x32]
ldrh r1, [r2, 0x4]
strh r1, [r4, 0x34]
ldrh r1, [r4, 0x20]
lsls r1, 4
strh r1, [r4, 0x36]
lsls r0, 4
strh r0, [r4, 0x38]
lsls r5, 16
asrs r5, 16
movs r1, 0x20
ldrsh r0, [r4, r1]
subs r5, r0
lsls r5, 4
movs r0, 0
ldrsh r1, [r2, r0]
lsls r1, 1
adds r0, r5, 0
str r2, [sp]
bl __divsi3
strh r0, [r4, 0x3A]
lsls r6, 16
asrs r6, 16
movs r1, 0x22
ldrsh r0, [r4, r1]
subs r6, r0
lsls r6, 4
ldr r2, [sp]
movs r0, 0
ldrsh r1, [r2, r0]
lsls r1, 1
adds r0, r6, 0
bl __divsi3
strh r0, [r4, 0x3C]
ldr r0, _080DDFE4 @ =sub_80DDFE8
str r0, [r4, 0x1C]
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080DDFDC: .4byte gAnimBankAttacker
_080DDFE0: .4byte gBattleAnimArgs
_080DDFE4: .4byte sub_80DDFE8
thumb_func_end sub_80DDF40
thumb_func_start sub_80DDFE8
sub_80DDFE8: @ 80DDFE8
push {r4,r5,lr}
adds r5, r0, 0
movs r1, 0x2E
ldrsh r0, [r5, r1]
cmp r0, 0x1
beq _080DE032
cmp r0, 0x1
bgt _080DDFFE
cmp r0, 0
beq _080DE008
b _080DE0F6
_080DDFFE:
cmp r0, 0x2
beq _080DE09C
cmp r0, 0x3
beq _080DE0F0
b _080DE0F6
_080DE008:
ldrh r0, [r5, 0x3A]
ldrh r2, [r5, 0x36]
adds r0, r2
strh r0, [r5, 0x36]
ldrh r1, [r5, 0x3C]
ldrh r2, [r5, 0x38]
adds r1, r2
strh r1, [r5, 0x38]
lsls r0, 16
asrs r0, 20
strh r0, [r5, 0x20]
lsls r1, 16
asrs r1, 20
strh r1, [r5, 0x22]
ldrh r0, [r5, 0x30]
subs r0, 0x1
strh r0, [r5, 0x30]
lsls r0, 16
cmp r0, 0
bgt _080DE0F6
b _080DE0E2
_080DE032:
ldrh r0, [r5, 0x32]
subs r0, 0x1
strh r0, [r5, 0x32]
lsls r0, 16
cmp r0, 0
bgt _080DE0F6
ldr r4, _080DE098 @ =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x30]
ldrb r0, [r4]
movs r1, 0x3
bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrh r0, [r5, 0x20]
lsls r0, 4
strh r0, [r5, 0x36]
ldrh r0, [r5, 0x22]
lsls r0, 4
strh r0, [r5, 0x38]
movs r1, 0x30
ldrsh r0, [r5, r1]
movs r2, 0x20
ldrsh r1, [r5, r2]
subs r0, r1
lsls r0, 4
movs r2, 0x34
ldrsh r1, [r5, r2]
bl __divsi3
strh r0, [r5, 0x3A]
movs r1, 0x32
ldrsh r0, [r5, r1]
movs r2, 0x22
ldrsh r1, [r5, r2]
subs r0, r1
lsls r0, 4
movs r2, 0x34
ldrsh r1, [r5, r2]
bl __divsi3
strh r0, [r5, 0x3C]
b _080DE0E2
.align 2, 0
_080DE098: .4byte gAnimBankTarget
_080DE09C:
ldrh r0, [r5, 0x3A]
ldrh r1, [r5, 0x36]
adds r0, r1
strh r0, [r5, 0x36]
ldrh r1, [r5, 0x3C]
ldrh r2, [r5, 0x38]
adds r1, r2
strh r1, [r5, 0x38]
lsls r0, 16
asrs r0, 20
strh r0, [r5, 0x20]
lsls r1, 16
asrs r1, 20
strh r1, [r5, 0x22]
ldrh r0, [r5, 0x34]
subs r0, 0x1
strh r0, [r5, 0x34]
lsls r0, 16
cmp r0, 0
bgt _080DE0F6
ldr r4, _080DE0EC @ =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
_080DE0E2:
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
b _080DE0F6
.align 2, 0
_080DE0EC: .4byte gAnimBankTarget
_080DE0F0:
adds r0, r5, 0
bl move_anim_8074EE0
_080DE0F6:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80DDFE8
thumb_func_start sub_80DE0FC
sub_80DE0FC: @ 80DE0FC
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
bl sub_8078764
ldr r0, _080DE110 @ =sub_80DE114
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DE110: .4byte sub_80DE114
thumb_func_end sub_80DE0FC
thumb_func_start sub_80DE114
sub_80DE114: @ 80DE114
push {r4-r6,lr}
adds r3, r0, 0
movs r5, 0
movs r6, 0
adds r0, 0x3F
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080DE1AA
adds r1, r3, 0
adds r1, 0x3E
ldrb r2, [r1]
movs r0, 0x4
ands r0, r2
adds r4, r1, 0
cmp r0, 0
bne _080DE13E
movs r0, 0x4
orrs r0, r2
strb r0, [r4]
_080DE13E:
movs r1, 0x2E
ldrsh r0, [r3, r1]
cmp r0, 0
beq _080DE14E
cmp r0, 0x1
beq _080DE158
movs r6, 0x1
b _080DE162
_080DE14E:
movs r1, 0x30
ldrsh r0, [r3, r1]
cmp r0, 0x2
bne _080DE162
b _080DE166
_080DE158:
movs r1, 0x30
ldrsh r0, [r3, r1]
cmp r0, 0x4
bne _080DE162
movs r5, 0x1
_080DE162:
cmp r5, 0
beq _080DE198
_080DE166:
ldrb r2, [r4]
lsls r0, r2, 29
lsrs r0, 31
movs r1, 0x1
eors r1, r0
lsls r1, 2
movs r0, 0x5
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r4]
ldrh r0, [r3, 0x32]
adds r0, 0x1
movs r1, 0
strh r0, [r3, 0x32]
strh r1, [r3, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x5
bne _080DE1AA
strh r1, [r3, 0x32]
ldrh r0, [r3, 0x2E]
adds r0, 0x1
strh r0, [r3, 0x2E]
b _080DE1AA
_080DE198:
cmp r6, 0
beq _080DE1A4
adds r0, r3, 0
bl DestroyAnimSprite
b _080DE1AA
_080DE1A4:
ldrh r0, [r3, 0x30]
adds r0, 0x1
strh r0, [r3, 0x30]
_080DE1AA:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80DE114
thumb_func_start sub_80DE1B0
sub_80DE1B0: @ 80DE1B0
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r1, _080DE1DC @ =gTasks
adds r5, r0, r1
movs r0, 0x1
bl duplicate_obj_of_side_rel2move_in_transparent_mode
movs r6, 0
movs r1, 0
strh r0, [r5, 0x8]
lsls r0, 16
cmp r0, 0
bge _080DE1E0
adds r0, r4, 0
bl DestroyAnimVisualTask
b _080DE2C0
.align 2, 0
_080DE1DC: .4byte gTasks
_080DE1E0:
strh r1, [r5, 0xA]
movs r0, 0xF
strh r0, [r5, 0xC]
movs r0, 0x2
strh r0, [r5, 0xE]
strh r1, [r5, 0x10]
ldr r1, _080DE244 @ =REG_BLDCNT
movs r2, 0xFD
lsls r2, 6
adds r0, r2, 0
strh r0, [r1]
ldr r2, _080DE248 @ =REG_BLDALPHA
ldrh r0, [r5, 0xE]
lsls r0, 8
ldrh r1, [r5, 0xC]
orrs r0, r1
strh r0, [r2]
ldr r4, _080DE24C @ =gSprites
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0x50
strh r1, [r0, 0x2E]
ldr r0, _080DE250 @ =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
cmp r0, 0
bne _080DE258
movs r2, 0x8
ldrsh r1, [r5, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldr r1, _080DE254 @ =0x0000ff70
strh r1, [r0, 0x30]
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0x70
b _080DE276
.align 2, 0
_080DE244: .4byte REG_BLDCNT
_080DE248: .4byte REG_BLDALPHA
_080DE24C: .4byte gSprites
_080DE250: .4byte gAnimBankTarget
_080DE254: .4byte 0x0000ff70
_080DE258:
movs r2, 0x8
ldrsh r1, [r5, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0x90
strh r1, [r0, 0x30]
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldr r1, _080DE2C8 @ =0x0000ff90
_080DE276:
strh r1, [r0, 0x32]
ldr r4, _080DE2CC @ =gSprites
movs r2, 0x8
ldrsh r1, [r5, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r2, 0
strh r2, [r0, 0x34]
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
strh r2, [r0, 0x36]
movs r2, 0x8
ldrsh r1, [r5, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldr r1, _080DE2D0 @ =SpriteCallbackDummy
bl StoreSpriteCallbackInData
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r4, 0x1C
adds r0, r4
ldr r1, _080DE2D4 @ =sub_8078394
str r1, [r0]
ldr r0, _080DE2D8 @ =sub_80DE2DC
str r0, [r5]
_080DE2C0:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080DE2C8: .4byte 0x0000ff90
_080DE2CC: .4byte gSprites
_080DE2D0: .4byte SpriteCallbackDummy
_080DE2D4: .4byte sub_8078394
_080DE2D8: .4byte sub_80DE2DC
thumb_func_end sub_80DE1B0
thumb_func_start sub_80DE2DC
sub_80DE2DC: @ 80DE2DC
push {r4,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, _080DE300 @ =gTasks
adds r4, r0, r1
movs r1, 0x10
ldrsh r0, [r4, r1]
cmp r0, 0x1
beq _080DE37C
cmp r0, 0x1
bgt _080DE304
cmp r0, 0
beq _080DE30A
b _080DE3A6
.align 2, 0
_080DE300: .4byte gTasks
_080DE304:
cmp r0, 0x2
beq _080DE3A0
b _080DE3A6
_080DE30A:
ldrh r1, [r4, 0xA]
adds r1, 0x1
strh r1, [r4, 0xA]
movs r0, 0x3
ands r0, r1
strh r0, [r4, 0x12]
cmp r0, 0x1
bne _080DE328
ldrh r1, [r4, 0xC]
movs r2, 0xC
ldrsh r0, [r4, r2]
cmp r0, 0
ble _080DE328
subs r0, r1, 0x1
strh r0, [r4, 0xC]
_080DE328:
movs r1, 0x12
ldrsh r0, [r4, r1]
cmp r0, 0x3
bne _080DE33E
ldrh r1, [r4, 0xE]
movs r2, 0xE
ldrsh r0, [r4, r2]
cmp r0, 0xF
bgt _080DE33E
adds r0, r1, 0x1
strh r0, [r4, 0xE]
_080DE33E:
ldr r2, _080DE374 @ =REG_BLDALPHA
ldrh r0, [r4, 0xE]
lsls r0, 8
ldrh r1, [r4, 0xC]
orrs r0, r1
strh r0, [r2]
ldr r1, [r4, 0xC]
movs r0, 0x80
lsls r0, 13
cmp r1, r0
bne _080DE3A6
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0x50
ble _080DE3A6
movs r2, 0x8
ldrsh r1, [r4, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080DE378 @ =gSprites
adds r0, r1
bl obj_delete_but_dont_free_vram
movs r0, 0x1
strh r0, [r4, 0x10]
b _080DE3A6
.align 2, 0
_080DE374: .4byte REG_BLDALPHA
_080DE378: .4byte gSprites
_080DE37C:
ldrh r0, [r4, 0x14]
adds r0, 0x1
movs r1, 0
strh r0, [r4, 0x14]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1
ble _080DE3A6
ldr r0, _080DE39C @ =REG_BLDCNT
strh r1, [r0]
adds r0, 0x2
strh r1, [r0]
ldrh r0, [r4, 0x10]
adds r0, 0x1
strh r0, [r4, 0x10]
b _080DE3A6
.align 2, 0
_080DE39C: .4byte REG_BLDCNT
_080DE3A0:
adds r0, r2, 0
bl DestroyAnimVisualTask
_080DE3A6:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80DE2DC
thumb_func_start sub_80DE3AC
sub_80DE3AC: @ 80DE3AC
push {lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r2, _080DE3CC @ =gTasks
adds r1, r2
movs r2, 0
strh r2, [r1, 0x26]
ldr r2, _080DE3D0 @ =sub_80DE3D4
str r2, [r1]
bl _call_via_r2
pop {r0}
bx r0
.align 2, 0
_080DE3CC: .4byte gTasks
_080DE3D0: .4byte sub_80DE3D4
thumb_func_end sub_80DE3AC
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 GetBankIdentity_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 GetAnimBankSpriteId
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 GetBankIdentity_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 GetAnimBankSpriteId
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 GetBankPosition
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x1
bl GetBankPosition
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 GetBankPosition
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x1
bl GetBankPosition
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 GetBankPosition
lsls r0, 24
lsrs r0, 24
mov r10, r0
ldrb r0, [r4]
movs r1, 0x1
bl GetBankPosition
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 GetBankPosition
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 GetBankPosition
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 GetBankSide
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 sub_80787B0
ldr r0, _080DEF68 @ =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
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 @ =sub_80782D8
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 sub_80782D8
_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 GetBankSide
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 GetBankPosition
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 GetBankSide
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 @ =gObjectBankIDs
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 gObjectBankIDs
_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.