28699 lines
485 KiB
ArmAsm
28699 lines
485 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_80AF058
|
|
sub_80AF058: @ 80AF058
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
ldr r0, _080AF0B4 @ =gUnknown_83E5F38
|
|
movs r2, 0x22
|
|
ldrsh r1, [r4, r2]
|
|
movs r3, 0x24
|
|
ldrsh r2, [r4, r3]
|
|
ldrh r3, [r4, 0x20]
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0x40
|
|
beq _080AF09C
|
|
ldr r3, _080AF0B8 @ =gSprites
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r1, r3, 0
|
|
adds r1, 0x1C
|
|
adds r1, r0, r1
|
|
ldr r2, _080AF0BC @ =sub_80AF0C8
|
|
str r2, [r1]
|
|
adds r0, r3
|
|
strh r5, [r0, 0x3A]
|
|
movs r1, 0xA
|
|
strh r1, [r0, 0x3C]
|
|
ldrh r0, [r4, 0x1C]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x1C]
|
|
_080AF09C:
|
|
ldrh r2, [r4, 0x24]
|
|
movs r0, 0x24
|
|
ldrsh r1, [r4, r0]
|
|
movs r3, 0x26
|
|
ldrsh r0, [r4, r3]
|
|
cmp r1, r0
|
|
bge _080AF0C0
|
|
adds r0, r2, 0
|
|
adds r0, 0x20
|
|
strh r0, [r4, 0x24]
|
|
movs r0, 0
|
|
b _080AF0C2
|
|
.align 2, 0
|
|
_080AF0B4: .4byte gUnknown_83E5F38
|
|
_080AF0B8: .4byte gSprites
|
|
_080AF0BC: .4byte sub_80AF0C8
|
|
_080AF0C0:
|
|
movs r0, 0x1
|
|
_080AF0C2:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80AF058
|
|
|
|
thumb_func_start sub_80AF0C8
|
|
sub_80AF0C8: @ 80AF0C8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080AF0FC
|
|
ldr r3, _080AF104 @ =gTasks
|
|
movs r0, 0x3C
|
|
ldrsh r1, [r4, r0]
|
|
lsls r1, 1
|
|
movs r0, 0x3A
|
|
ldrsh r2, [r4, r0]
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
adds r1, r0
|
|
adds r3, 0x8
|
|
adds r1, r3
|
|
ldrh r0, [r1]
|
|
subs r0, 0x1
|
|
strh r0, [r1]
|
|
adds r0, r4, 0
|
|
bl DestroySprite
|
|
_080AF0FC:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AF104: .4byte gTasks
|
|
thumb_func_end sub_80AF0C8
|
|
|
|
thumb_func_start sub_80AF108
|
|
sub_80AF108: @ 80AF108
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
adds r5, r0, 0
|
|
ldrh r2, [r5, 0x4]
|
|
lsls r1, r2, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x7
|
|
ldr r3, _080AF210 @ =0x000003ff
|
|
adds r0, r3, 0
|
|
ands r1, r0
|
|
ldr r0, _080AF214 @ =0xfffffc00
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r5, 0x4]
|
|
ldr r4, _080AF218 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
ldr r4, _080AF21C @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
str r3, [sp]
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r1, _080AF220 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
ldrh r0, [r1]
|
|
ldr r3, [sp]
|
|
adds r0, r3
|
|
strh r0, [r5, 0x30]
|
|
ldrh r0, [r1, 0x4]
|
|
mov r4, r9
|
|
adds r0, r4, r0
|
|
strh r0, [r5, 0x32]
|
|
ldrh r0, [r1, 0x2]
|
|
adds r0, r6
|
|
strh r0, [r5, 0x34]
|
|
ldrh r0, [r1, 0x6]
|
|
mov r7, r8
|
|
adds r0, r7, r0
|
|
strh r0, [r5, 0x36]
|
|
adds r0, r5, 0
|
|
bl sub_8074C80
|
|
adds r4, 0x20
|
|
movs r0, 0x98
|
|
lsls r0, 1
|
|
mov r12, r0
|
|
ldr r3, [sp]
|
|
cmp r4, r12
|
|
bhi _080AF1E2
|
|
adds r0, r7, 0
|
|
adds r0, 0x20
|
|
ldrh r1, [r5, 0x30]
|
|
ldrh r2, [r5, 0x32]
|
|
cmp r0, 0xE0
|
|
bhi _080AF1E2
|
|
adds r4, r1, 0
|
|
mov r10, r12
|
|
_080AF1AE:
|
|
mov r7, r9
|
|
lsls r1, r7, 16
|
|
asrs r1, 16
|
|
adds r1, r4
|
|
lsls r1, 16
|
|
mov r7, r8
|
|
lsls r0, r7, 16
|
|
asrs r0, 16
|
|
adds r0, r2
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
lsrs r0, r1, 16
|
|
mov r9, r0
|
|
movs r7, 0x80
|
|
lsls r7, 14
|
|
adds r1, r7
|
|
lsrs r1, 16
|
|
cmp r1, r10
|
|
bhi _080AF1E2
|
|
mov r1, r8
|
|
lsls r0, r1, 16
|
|
adds r0, r7
|
|
lsrs r0, 16
|
|
cmp r0, 0xE0
|
|
bls _080AF1AE
|
|
_080AF1E2:
|
|
ldrh r0, [r5, 0x30]
|
|
negs r7, r0
|
|
strh r7, [r5, 0x30]
|
|
ldrh r0, [r5, 0x32]
|
|
negs r4, r0
|
|
strh r4, [r5, 0x32]
|
|
lsls r0, r3, 16
|
|
movs r1, 0x80
|
|
lsls r1, 14
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
movs r2, 0x98
|
|
lsls r2, 1
|
|
mov r12, r2
|
|
ldr r1, _080AF220 @ =gBattleAnimArgs
|
|
mov r10, r1
|
|
cmp r0, r12
|
|
bhi _080AF24E
|
|
lsls r1, r6, 16
|
|
movs r2, 0x80
|
|
lsls r2, 14
|
|
adds r0, r1, r2
|
|
b _080AF246
|
|
.align 2, 0
|
|
_080AF210: .4byte 0x000003ff
|
|
_080AF214: .4byte 0xfffffc00
|
|
_080AF218: .4byte gBattleAnimTarget
|
|
_080AF21C: .4byte gBattleAnimAttacker
|
|
_080AF220: .4byte gBattleAnimArgs
|
|
_080AF224:
|
|
lsls r1, r3, 16
|
|
asrs r1, 16
|
|
adds r1, r7
|
|
lsls r1, 16
|
|
asrs r0, r2, 16
|
|
adds r0, r4
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
lsrs r3, r1, 16
|
|
movs r0, 0x80
|
|
lsls r0, 14
|
|
adds r1, r0
|
|
lsrs r1, 16
|
|
cmp r1, r12
|
|
bhi _080AF24E
|
|
lsls r1, r6, 16
|
|
adds r0, r1, r0
|
|
_080AF246:
|
|
lsrs r0, 16
|
|
adds r2, r1, 0
|
|
cmp r0, 0xE0
|
|
bls _080AF224
|
|
_080AF24E:
|
|
strh r3, [r5, 0x20]
|
|
strh r6, [r5, 0x22]
|
|
mov r1, r10
|
|
ldrh r0, [r1, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
strh r3, [r5, 0x30]
|
|
mov r2, r9
|
|
strh r2, [r5, 0x32]
|
|
strh r6, [r5, 0x34]
|
|
mov r3, r8
|
|
strh r3, [r5, 0x36]
|
|
adds r0, r5, 0
|
|
bl sub_8074C80
|
|
mov r7, r10
|
|
ldrh r0, [r7, 0xA]
|
|
strh r0, [r5, 0x34]
|
|
ldrh r0, [r7, 0xC]
|
|
strh r0, [r5, 0x36]
|
|
ldr r0, _080AF288 @ =sub_80AF28C
|
|
str r0, [r5, 0x1C]
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AF288: .4byte sub_80AF28C
|
|
thumb_func_end sub_80AF108
|
|
|
|
thumb_func_start sub_80AF28C
|
|
sub_80AF28C: @ 80AF28C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080AF2E4
|
|
ldrh r1, [r4, 0x30]
|
|
ldrh r2, [r4, 0x38]
|
|
adds r1, r2
|
|
strh r1, [r4, 0x38]
|
|
ldrh r0, [r4, 0x32]
|
|
ldrh r2, [r4, 0x3A]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x3A]
|
|
strh r1, [r4, 0x24]
|
|
strh r0, [r4, 0x26]
|
|
movs r1, 0x3C
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x34
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
ldrh r1, [r4, 0x24]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x24]
|
|
movs r2, 0x3C
|
|
ldrsh r0, [r4, r2]
|
|
movs r2, 0x34
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
ldrh r1, [r4, 0x26]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x36]
|
|
ldrh r2, [r4, 0x3C]
|
|
adds r0, r2
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x3C]
|
|
ldrh r0, [r4, 0x2E]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _080AF2EA
|
|
_080AF2E4:
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080AF2EA:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80AF28C
|
|
|
|
thumb_func_start sub_80AF2F0
|
|
sub_80AF2F0: @ 80AF2F0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _080AF324 @ =gBattleAnimArgs
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, 0x2E]
|
|
movs r0, 0x3C
|
|
strh r0, [r4, 0x30]
|
|
movs r0, 0x9
|
|
strh r0, [r4, 0x32]
|
|
movs r0, 0x1E
|
|
strh r0, [r4, 0x34]
|
|
movs r0, 0xFE
|
|
lsls r0, 8
|
|
strh r0, [r4, 0x36]
|
|
ldr r1, _080AF328 @ =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r1, _080AF32C @ =sub_8074AE0
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AF324: .4byte gBattleAnimArgs
|
|
_080AF328: .4byte DestroyAnimSprite
|
|
_080AF32C: .4byte sub_8074AE0
|
|
thumb_func_end sub_80AF2F0
|
|
|
|
thumb_func_start sub_80AF330
|
|
sub_80AF330: @ 80AF330
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r0, _080AF364 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x32]
|
|
ldr r0, _080AF368 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080AF370
|
|
ldr r0, _080AF36C @ =gBattleAnimArgs
|
|
ldrh r1, [r4, 0x32]
|
|
ldrh r0, [r0, 0x4]
|
|
subs r1, r0
|
|
strh r1, [r4, 0x32]
|
|
b _080AF37A
|
|
.align 2, 0
|
|
_080AF364: .4byte gBattleAnimTarget
|
|
_080AF368: .4byte gBattleAnimAttacker
|
|
_080AF36C: .4byte gBattleAnimArgs
|
|
_080AF370:
|
|
ldr r0, _080AF3A8 @ =gBattleAnimArgs
|
|
ldrh r0, [r0, 0x4]
|
|
ldrh r1, [r4, 0x32]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x32]
|
|
_080AF37A:
|
|
ldr r0, _080AF3AC @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
ldr r1, _080AF3A8 @ =gBattleAnimArgs
|
|
lsrs r0, 24
|
|
ldrh r2, [r1, 0x6]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x36]
|
|
ldrh r0, [r1, 0x8]
|
|
strh r0, [r4, 0x2E]
|
|
ldr r1, _080AF3B0 @ =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, _080AF3B4 @ =sub_8075590
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AF3A8: .4byte gBattleAnimArgs
|
|
_080AF3AC: .4byte gBattleAnimTarget
|
|
_080AF3B0: .4byte DestroyAnimSprite
|
|
_080AF3B4: .4byte sub_8075590
|
|
thumb_func_end sub_80AF330
|
|
|
|
thumb_func_start sub_80AF3B8
|
|
sub_80AF3B8: @ 80AF3B8
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080AF3D0 @ =gBattleAnimArgs
|
|
movs r1, 0x4
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _080AF3D4
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl sub_8075114
|
|
b _080AF40A
|
|
.align 2, 0
|
|
_080AF3D0: .4byte gBattleAnimArgs
|
|
_080AF3D4:
|
|
ldr r0, _080AF41C @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
adds r2, r4, 0
|
|
adds r2, 0x20
|
|
adds r3, r4, 0
|
|
adds r3, 0x22
|
|
movs r1, 0x1
|
|
bl sub_8076D9C
|
|
ldr r0, _080AF420 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080AF3FA
|
|
ldrh r0, [r5]
|
|
negs r0, r0
|
|
strh r0, [r5]
|
|
_080AF3FA:
|
|
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]
|
|
_080AF40A:
|
|
ldr r1, _080AF424 @ =sub_80AF42C
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, _080AF428 @ =sub_8074F50
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AF41C: .4byte gBattleAnimTarget
|
|
_080AF420: .4byte gBattleAnimAttacker
|
|
_080AF424: .4byte sub_80AF42C
|
|
_080AF428: .4byte sub_8074F50
|
|
thumb_func_end sub_80AF3B8
|
|
|
|
thumb_func_start sub_80AF42C
|
|
sub_80AF42C: @ 80AF42C
|
|
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 r0, 0x1
|
|
strh r0, [r3, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x14
|
|
bne _080AF462
|
|
adds r0, r3, 0
|
|
bl move_anim_8074EE0
|
|
_080AF462:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80AF42C
|
|
|
|
thumb_func_start sub_80AF468
|
|
sub_80AF468: @ 80AF468
|
|
push {r4-r7,lr}
|
|
sub sp, 0x10
|
|
adds r5, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r6, _080AF4B0 @ =gBattleAnimArgs
|
|
ldrh r0, [r6, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
ldrh r0, [r5, 0x20]
|
|
strh r0, [r5, 0x30]
|
|
ldrh r0, [r5, 0x22]
|
|
strh r0, [r5, 0x34]
|
|
movs r1, 0xA
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
bne _080AF4B8
|
|
ldr r4, _080AF4B4 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x32]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r6, [r6, 0x6]
|
|
adds r0, r6
|
|
strh r0, [r5, 0x36]
|
|
b _080AF4CA
|
|
.align 2, 0
|
|
_080AF4B0: .4byte gBattleAnimArgs
|
|
_080AF4B4: .4byte gBattleAnimTarget
|
|
_080AF4B8:
|
|
ldr r0, _080AF4E4 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
adds r2, r5, 0
|
|
adds r2, 0x32
|
|
adds r3, r5, 0
|
|
adds r3, 0x36
|
|
movs r1, 0x1
|
|
bl sub_8076D9C
|
|
_080AF4CA:
|
|
ldr r0, _080AF4E8 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080AF4F0
|
|
ldr r0, _080AF4EC @ =gBattleAnimArgs
|
|
ldrh r1, [r5, 0x32]
|
|
ldrh r0, [r0, 0x4]
|
|
subs r1, r0
|
|
strh r1, [r5, 0x32]
|
|
b _080AF4FA
|
|
.align 2, 0
|
|
_080AF4E4: .4byte gBattleAnimTarget
|
|
_080AF4E8: .4byte gBattleAnimAttacker
|
|
_080AF4EC: .4byte gBattleAnimArgs
|
|
_080AF4F0:
|
|
ldr r0, _080AF598 @ =gBattleAnimArgs
|
|
ldrh r0, [r0, 0x4]
|
|
ldrh r2, [r5, 0x32]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x32]
|
|
_080AF4FA:
|
|
adds r7, r5, 0
|
|
adds r7, 0x2E
|
|
adds r2, r7, 0
|
|
mov r1, sp
|
|
movs r4, 0x7
|
|
_080AF504:
|
|
ldrh r0, [r2]
|
|
strh r0, [r1]
|
|
adds r2, 0x2
|
|
adds r1, 0x2
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bge _080AF504
|
|
adds r0, r5, 0
|
|
bl sub_8075804
|
|
ldrh r0, [r5, 0x30]
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
strh r0, [r5, 0x30]
|
|
ldrh r0, [r5, 0x32]
|
|
eors r0, r1
|
|
strh r0, [r5, 0x32]
|
|
_080AF526:
|
|
movs r0, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
adds r0, r5, 0
|
|
bl sub_807578C
|
|
movs r0, 0x20
|
|
ldrsh r1, [r5, r0]
|
|
movs r2, 0x24
|
|
ldrsh r0, [r5, r2]
|
|
adds r1, r0
|
|
adds r1, 0x10
|
|
movs r0, 0x88
|
|
lsls r0, 1
|
|
cmp r1, r0
|
|
bhi _080AF55A
|
|
movs r0, 0x22
|
|
ldrsh r1, [r5, r0]
|
|
movs r2, 0x26
|
|
ldrsh r0, [r5, r2]
|
|
adds r1, r0
|
|
cmp r1, 0xA0
|
|
bgt _080AF55A
|
|
movs r0, 0x10
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bge _080AF526
|
|
_080AF55A:
|
|
ldrh r0, [r5, 0x24]
|
|
ldrh r1, [r5, 0x20]
|
|
adds r0, r1
|
|
movs r1, 0
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r5, 0x26]
|
|
ldrh r2, [r5, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x22]
|
|
strh r1, [r5, 0x26]
|
|
strh r1, [r5, 0x24]
|
|
ldr r6, _080AF59C @ =sub_8075830
|
|
ldr r1, _080AF5A0 @ =sub_80AF5A4
|
|
mov r3, sp
|
|
adds r2, r7, 0
|
|
movs r4, 0x7
|
|
_080AF57A:
|
|
ldrh r0, [r3]
|
|
strh r0, [r2]
|
|
adds r3, 0x2
|
|
adds r2, 0x2
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bge _080AF57A
|
|
str r6, [r5, 0x1C]
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
add sp, 0x10
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AF598: .4byte gBattleAnimArgs
|
|
_080AF59C: .4byte sub_8075830
|
|
_080AF5A0: .4byte sub_80AF5A4
|
|
thumb_func_end sub_80AF468
|
|
|
|
thumb_func_start sub_80AF5A4
|
|
sub_80AF5A4: @ 80AF5A4
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x24]
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
movs r5, 0
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r4, 0x26]
|
|
ldrh r2, [r4, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x22]
|
|
strh r5, [r4, 0x26]
|
|
strh r5, [r4, 0x24]
|
|
movs r0, 0x80
|
|
strh r0, [r4, 0x2E]
|
|
ldr r0, _080AF600 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
ldr r1, _080AF604 @ =0x0000ffec
|
|
cmp r0, 0
|
|
beq _080AF5D4
|
|
movs r1, 0x14
|
|
_080AF5D4:
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl Sin
|
|
strh r0, [r4, 0x34]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0xF
|
|
bl Cos
|
|
strh r0, [r4, 0x36]
|
|
strh r5, [r4, 0x38]
|
|
ldr r1, _080AF608 @ =sub_80AF60C
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AF600: .4byte gBattleAnimAttacker
|
|
_080AF604: .4byte 0x0000ffec
|
|
_080AF608: .4byte sub_80AF60C
|
|
thumb_func_end sub_80AF5A4
|
|
|
|
thumb_func_start sub_80AF60C
|
|
sub_80AF60C: @ 80AF60C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _080AF660 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
ldr r1, _080AF664 @ =0x0000ffec
|
|
cmp r0, 0
|
|
beq _080AF622
|
|
movs r1, 0x14
|
|
_080AF622:
|
|
movs r2, 0x38
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x1F
|
|
bgt _080AF668
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl Sin
|
|
ldrh r1, [r4, 0x34]
|
|
subs r0, r1
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0xF
|
|
bl Cos
|
|
ldrh r1, [r4, 0x36]
|
|
subs r0, r1
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x10
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x38]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x38]
|
|
b _080AF686
|
|
.align 2, 0
|
|
_080AF660: .4byte gBattleAnimAttacker
|
|
_080AF664: .4byte 0x0000ffec
|
|
_080AF668:
|
|
ldrh r0, [r4, 0x24]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r2
|
|
movs r1, 0
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r4, 0x26]
|
|
ldrh r2, [r4, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x22]
|
|
strh r1, [r4, 0x26]
|
|
strh r1, [r4, 0x24]
|
|
strh r1, [r4, 0x36]
|
|
strh r1, [r4, 0x34]
|
|
ldr r0, _080AF68C @ =sub_80AF690
|
|
str r0, [r4, 0x1C]
|
|
_080AF686:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AF68C: .4byte sub_80AF690
|
|
thumb_func_end sub_80AF60C
|
|
|
|
thumb_func_start sub_80AF690
|
|
sub_80AF690: @ 80AF690
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
adds r0, r4, 0
|
|
bl sub_807578C
|
|
movs r1, 0x20
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x24
|
|
ldrsh r1, [r4, r2]
|
|
adds r0, r1
|
|
adds r0, 0x10
|
|
movs r1, 0x88
|
|
lsls r1, 1
|
|
cmp r0, r1
|
|
bhi _080AF6CC
|
|
movs r1, 0x22
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x26
|
|
ldrsh r1, [r4, r2]
|
|
adds r1, r0, r1
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
cmp r1, r0
|
|
bgt _080AF6CC
|
|
movs r0, 0x10
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bge _080AF6D2
|
|
_080AF6CC:
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080AF6D2:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80AF690
|
|
|
|
thumb_func_start sub_80AF6D8
|
|
sub_80AF6D8: @ 80AF6D8
|
|
push {r4-r7,lr}
|
|
sub sp, 0x10
|
|
adds r5, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r1, _080AF71C @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
ldrh r0, [r5, 0x20]
|
|
strh r0, [r5, 0x30]
|
|
ldrh r0, [r5, 0x22]
|
|
strh r0, [r5, 0x34]
|
|
movs r2, 0xE
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
bne _080AF724
|
|
ldr r4, _080AF720 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x32]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x36]
|
|
b _080AF736
|
|
.align 2, 0
|
|
_080AF71C: .4byte gBattleAnimArgs
|
|
_080AF720: .4byte gBattleAnimTarget
|
|
_080AF724:
|
|
ldr r0, _080AF754 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
adds r2, r5, 0
|
|
adds r2, 0x32
|
|
adds r3, r5, 0
|
|
adds r3, 0x36
|
|
movs r1, 0x1
|
|
bl sub_8076D9C
|
|
_080AF736:
|
|
ldr r0, _080AF758 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080AF760
|
|
ldr r0, _080AF75C @ =gBattleAnimArgs
|
|
ldrh r1, [r5, 0x32]
|
|
ldrh r2, [r0, 0x4]
|
|
subs r1, r2
|
|
strh r1, [r5, 0x32]
|
|
adds r1, r0, 0
|
|
b _080AF76A
|
|
.align 2, 0
|
|
_080AF754: .4byte gBattleAnimTarget
|
|
_080AF758: .4byte gBattleAnimAttacker
|
|
_080AF75C: .4byte gBattleAnimArgs
|
|
_080AF760:
|
|
ldr r1, _080AF814 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
ldrh r2, [r5, 0x32]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x32]
|
|
_080AF76A:
|
|
ldrh r0, [r1, 0x6]
|
|
ldrh r1, [r5, 0x36]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x36]
|
|
adds r0, r5, 0
|
|
bl sub_8075804
|
|
adds r7, r5, 0
|
|
adds r7, 0x2E
|
|
adds r2, r7, 0
|
|
mov r1, sp
|
|
movs r4, 0x7
|
|
_080AF782:
|
|
ldrh r0, [r2]
|
|
strh r0, [r1]
|
|
adds r2, 0x2
|
|
adds r1, 0x2
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bge _080AF782
|
|
ldrh r0, [r5, 0x30]
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
strh r0, [r5, 0x30]
|
|
ldrh r0, [r5, 0x32]
|
|
eors r0, r1
|
|
strh r0, [r5, 0x32]
|
|
_080AF79E:
|
|
movs r0, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
adds r0, r5, 0
|
|
bl sub_807578C
|
|
movs r2, 0x20
|
|
ldrsh r1, [r5, r2]
|
|
movs r2, 0x24
|
|
ldrsh r0, [r5, r2]
|
|
adds r1, r0
|
|
adds r1, 0x10
|
|
movs r0, 0x88
|
|
lsls r0, 1
|
|
cmp r1, r0
|
|
bhi _080AF7D2
|
|
movs r0, 0x22
|
|
ldrsh r1, [r5, r0]
|
|
movs r2, 0x26
|
|
ldrsh r0, [r5, r2]
|
|
adds r1, r0
|
|
cmp r1, 0xA0
|
|
bgt _080AF7D2
|
|
movs r0, 0x10
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bge _080AF79E
|
|
_080AF7D2:
|
|
ldrh r0, [r5, 0x24]
|
|
ldrh r1, [r5, 0x20]
|
|
adds r0, r1
|
|
movs r1, 0
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r5, 0x26]
|
|
ldrh r2, [r5, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x22]
|
|
strh r1, [r5, 0x26]
|
|
strh r1, [r5, 0x24]
|
|
ldr r1, _080AF814 @ =gBattleAnimArgs
|
|
ldr r6, _080AF818 @ =sub_80AF81C
|
|
mov r3, sp
|
|
adds r2, r7, 0
|
|
movs r4, 0x7
|
|
_080AF7F2:
|
|
ldrh r0, [r3]
|
|
strh r0, [r2]
|
|
adds r3, 0x2
|
|
adds r2, 0x2
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bge _080AF7F2
|
|
ldrh r0, [r1, 0xA]
|
|
strh r0, [r5, 0x38]
|
|
ldrh r0, [r1, 0xC]
|
|
strh r0, [r5, 0x3A]
|
|
str r6, [r5, 0x1C]
|
|
add sp, 0x10
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AF814: .4byte gBattleAnimArgs
|
|
_080AF818: .4byte sub_80AF81C
|
|
thumb_func_end sub_80AF6D8
|
|
|
|
thumb_func_start sub_80AF81C
|
|
sub_80AF81C: @ 80AF81C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_807578C
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080AF830
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
_080AF830:
|
|
movs r2, 0x3C
|
|
ldrsh r0, [r4, r2]
|
|
movs r2, 0x38
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
ldrh r1, [r4, 0x26]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x3A]
|
|
ldrh r2, [r4, 0x3C]
|
|
adds r0, r2
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x3C]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
bne _080AF886
|
|
movs r2, 0x20
|
|
ldrsh r0, [r4, r2]
|
|
movs r2, 0x24
|
|
ldrsh r1, [r4, r2]
|
|
adds r0, r1
|
|
adds r0, 0x10
|
|
movs r1, 0x88
|
|
lsls r1, 1
|
|
cmp r0, r1
|
|
bhi _080AF880
|
|
movs r0, 0x22
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x26
|
|
ldrsh r0, [r4, r2]
|
|
adds r1, r0
|
|
cmp r1, 0xA0
|
|
bgt _080AF880
|
|
movs r0, 0x10
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bge _080AF886
|
|
_080AF880:
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080AF886:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80AF81C
|
|
|
|
thumb_func_start sub_80AF88C
|
|
sub_80AF88C: @ 80AF88C
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080AF8F8
|
|
ldr r5, _080AF8AC @ =gBattleAnimArgs
|
|
movs r1, 0x4
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _080AF8B0
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl sub_8075114
|
|
b _080AF8E6
|
|
.align 2, 0
|
|
_080AF8AC: .4byte gBattleAnimArgs
|
|
_080AF8B0:
|
|
ldr r0, _080AF8F0 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
adds r2, r4, 0
|
|
adds r2, 0x20
|
|
adds r3, r4, 0
|
|
adds r3, 0x22
|
|
movs r1, 0
|
|
bl sub_8076D9C
|
|
ldr r0, _080AF8F4 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080AF8D6
|
|
ldrh r0, [r5]
|
|
negs r0, r0
|
|
strh r0, [r5]
|
|
_080AF8D6:
|
|
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]
|
|
_080AF8E6:
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _080AF90C
|
|
.align 2, 0
|
|
_080AF8F0: .4byte gBattleAnimTarget
|
|
_080AF8F4: .4byte gBattleAnimAttacker
|
|
_080AF8F8:
|
|
adds r0, r4, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080AF90C
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080AF90C:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80AF88C
|
|
|
|
thumb_func_start sub_80AF914
|
|
sub_80AF914: @ 80AF914
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldr r6, _080AF934 @ =gBattleAnimArgs
|
|
movs r1, 0x8
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
bne _080AF984
|
|
movs r1, 0xA
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
bne _080AF938
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl sub_8075160
|
|
b _080AF976
|
|
.align 2, 0
|
|
_080AF934: .4byte gBattleAnimArgs
|
|
_080AF938:
|
|
ldr r4, _080AF960 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
adds r2, r5, 0
|
|
adds r2, 0x20
|
|
adds r3, r5, 0
|
|
adds r3, 0x22
|
|
movs r1, 0
|
|
bl sub_8076D9C
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080AF964
|
|
ldrh r0, [r5, 0x20]
|
|
ldrh r1, [r6]
|
|
subs r0, r1
|
|
b _080AF96A
|
|
.align 2, 0
|
|
_080AF960: .4byte gBattleAnimAttacker
|
|
_080AF964:
|
|
ldrh r0, [r6]
|
|
ldrh r1, [r5, 0x20]
|
|
adds r0, r1
|
|
_080AF96A:
|
|
strh r0, [r5, 0x20]
|
|
ldr r0, _080AF97C @ =gBattleAnimArgs
|
|
ldrh r0, [r0, 0x2]
|
|
ldrh r1, [r5, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x22]
|
|
_080AF976:
|
|
ldr r0, _080AF980 @ =gBattleAnimAttacker
|
|
b _080AF9D4
|
|
.align 2, 0
|
|
_080AF97C: .4byte gBattleAnimArgs
|
|
_080AF980: .4byte gBattleAnimAttacker
|
|
_080AF984:
|
|
movs r1, 0xA
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
bne _080AF996
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl sub_8075114
|
|
b _080AF9D2
|
|
_080AF996:
|
|
ldr r4, _080AF9BC @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
adds r2, r5, 0
|
|
adds r2, 0x20
|
|
adds r3, r5, 0
|
|
adds r3, 0x22
|
|
movs r1, 0
|
|
bl sub_8076D9C
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080AF9C0
|
|
ldrh r0, [r5, 0x20]
|
|
ldrh r1, [r6]
|
|
subs r0, r1
|
|
b _080AF9C6
|
|
.align 2, 0
|
|
_080AF9BC: .4byte gBattleAnimTarget
|
|
_080AF9C0:
|
|
ldrh r0, [r6]
|
|
ldrh r1, [r5, 0x20]
|
|
adds r0, r1
|
|
_080AF9C6:
|
|
strh r0, [r5, 0x20]
|
|
ldr r0, _080AF9F0 @ =gBattleAnimArgs
|
|
ldrh r0, [r0, 0x2]
|
|
ldrh r1, [r5, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x22]
|
|
_080AF9D2:
|
|
ldr r0, _080AF9F4 @ =gBattleAnimTarget
|
|
_080AF9D4:
|
|
ldrb r0, [r0]
|
|
strh r0, [r5, 0x3C]
|
|
ldr r0, _080AF9F0 @ =gBattleAnimArgs
|
|
movs r1, 0xA
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
beq _080AF9EC
|
|
bl sub_8075290
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080AF9F8
|
|
_080AF9EC:
|
|
movs r0, 0x20
|
|
b _080AF9FA
|
|
.align 2, 0
|
|
_080AF9F0: .4byte gBattleAnimArgs
|
|
_080AF9F4: .4byte gBattleAnimTarget
|
|
_080AF9F8:
|
|
movs r0, 0x40
|
|
_080AF9FA:
|
|
strh r0, [r5, 0x3A]
|
|
ldr r0, _080AFA40 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080AFA10
|
|
ldrh r0, [r5, 0x22]
|
|
adds r0, 0x8
|
|
strh r0, [r5, 0x22]
|
|
_080AFA10:
|
|
ldr r1, _080AFA44 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x6]
|
|
strh r0, [r5, 0x2E]
|
|
ldrh r0, [r5, 0x20]
|
|
strh r0, [r5, 0x30]
|
|
strh r0, [r5, 0x32]
|
|
ldrh r0, [r5, 0x22]
|
|
strh r0, [r5, 0x34]
|
|
ldrh r1, [r1, 0x4]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x36]
|
|
adds r0, r5, 0
|
|
bl obj_translate_based_on_private_1_2_3_4
|
|
movs r0, 0x40
|
|
strh r0, [r5, 0x38]
|
|
ldr r1, _080AFA48 @ =sub_80AFA4C
|
|
str r1, [r5, 0x1C]
|
|
adds r0, r5, 0
|
|
bl _call_via_r1
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AFA40: .4byte gBattleAnimTarget
|
|
_080AFA44: .4byte gBattleAnimArgs
|
|
_080AFA48: .4byte sub_80AFA4C
|
|
thumb_func_end sub_80AF914
|
|
|
|
thumb_func_start sub_80AFA4C
|
|
sub_80AFA4C: @ 80AFA4C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80755E0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080AFAD6
|
|
movs r1, 0x38
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x3A
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
ldrh r1, [r4, 0x24]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x24]
|
|
movs r2, 0x38
|
|
ldrsh r0, [r4, r2]
|
|
movs r1, 0x6
|
|
negs r1, r1
|
|
bl Cos
|
|
ldrh r1, [r4, 0x26]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x38]
|
|
subs r0, 0x40
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x7F
|
|
bhi _080AFAA8
|
|
ldrh r0, [r4, 0x3C]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_8076884
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r4, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x5]
|
|
b _080AFACA
|
|
_080AFAA8:
|
|
ldrh r0, [r4, 0x3C]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_8076884
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x1
|
|
movs r1, 0x3
|
|
ands r0, r1
|
|
lsls r0, 2
|
|
ldrb r2, [r4, 0x5]
|
|
movs r1, 0xD
|
|
negs r1, r1
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r4, 0x5]
|
|
_080AFACA:
|
|
ldrh r0, [r4, 0x38]
|
|
adds r0, 0x3
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x38]
|
|
b _080AFADC
|
|
_080AFAD6:
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080AFADC:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80AFA4C
|
|
|
|
thumb_func_start sub_80AFAE4
|
|
sub_80AFAE4: @ 80AFAE4
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, _080AFBA0 @ =0x00003f42
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r0, 0x1
|
|
movs r1, 0x4
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080AFB26
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
_080AFB26:
|
|
ldr r0, _080AFBA4 @ =gBattle_BG1_X
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r4, _080AFBA8 @ =gBattle_BG1_Y
|
|
strh r1, [r4]
|
|
movs r0, 0x14
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldrh r1, [r4]
|
|
movs r0, 0x16
|
|
bl SetGpuReg
|
|
mov r0, sp
|
|
bl sub_80752A0
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080AFBAC @ =gUnknown_83C3540
|
|
movs r2, 0x80
|
|
lsls r2, 4
|
|
mov r3, sp
|
|
ldrh r3, [r3, 0xA]
|
|
bl LoadBgTiles
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080AFBB0 @ =gFile_graphics_battle_anims_backgrounds_fog_tilemap
|
|
bl sub_807543C
|
|
ldr r0, _080AFBB4 @ =gUnknown_83C2CE0
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x8]
|
|
lsls r1, 4
|
|
movs r2, 0x20
|
|
bl LoadPalette
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080AFB88
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x8]
|
|
ldr r1, [sp, 0x4]
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_80730C0
|
|
_080AFB88:
|
|
ldr r0, _080AFBB8 @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _080AFBBC @ =sub_80AFBC0
|
|
str r0, [r1]
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AFBA0: .4byte 0x00003f42
|
|
_080AFBA4: .4byte gBattle_BG1_X
|
|
_080AFBA8: .4byte gBattle_BG1_Y
|
|
_080AFBAC: .4byte gUnknown_83C3540
|
|
_080AFBB0: .4byte gFile_graphics_battle_anims_backgrounds_fog_tilemap
|
|
_080AFBB4: .4byte gUnknown_83C2CE0
|
|
_080AFBB8: .4byte gTasks
|
|
_080AFBBC: .4byte sub_80AFBC0
|
|
thumb_func_end sub_80AFAE4
|
|
|
|
thumb_func_start sub_80AFBC0
|
|
sub_80AFBC0: @ 80AFBC0
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, _080AFBF4 @ =gBattle_BG1_X
|
|
ldr r2, _080AFBF8 @ =0x0000ffff
|
|
adds r0, r2, 0
|
|
ldrh r2, [r1]
|
|
adds r0, r2
|
|
strh r0, [r1]
|
|
ldr r1, _080AFBFC @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r2, 0x20
|
|
ldrsh r0, [r0, r2]
|
|
adds r2, r1, 0
|
|
cmp r0, 0x4
|
|
bls _080AFBEA
|
|
b _080AFD36
|
|
_080AFBEA:
|
|
lsls r0, 2
|
|
ldr r1, _080AFC00 @ =_080AFC04
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080AFBF4: .4byte gBattle_BG1_X
|
|
_080AFBF8: .4byte 0x0000ffff
|
|
_080AFBFC: .4byte gTasks
|
|
_080AFC00: .4byte _080AFC04
|
|
.align 2, 0
|
|
_080AFC04:
|
|
.4byte _080AFC18
|
|
.4byte _080AFC70
|
|
.4byte _080AFC92
|
|
.4byte _080AFCD6
|
|
.4byte _080AFCF8
|
|
_080AFC18:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r4, r0, r2
|
|
ldrh r0, [r4, 0x1C]
|
|
adds r0, 0x1
|
|
movs r5, 0
|
|
strh r0, [r4, 0x1C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
beq _080AFC32
|
|
b _080AFD36
|
|
_080AFC32:
|
|
strh r5, [r4, 0x1C]
|
|
ldrh r0, [r4, 0x1A]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x1A]
|
|
ldr r1, _080AFC6C @ =gUnknown_83E64D4
|
|
movs r2, 0x1A
|
|
ldrsh r0, [r4, r2]
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
strh r1, [r4, 0x1E]
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r1, 0x1E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x9
|
|
bne _080AFD36
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x20]
|
|
strh r5, [r4, 0x1E]
|
|
b _080AFD36
|
|
.align 2, 0
|
|
_080AFC6C: .4byte gUnknown_83E64D4
|
|
_080AFC70:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r1, r0, r2
|
|
ldrh r0, [r1, 0x1E]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x1E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x51
|
|
bne _080AFD36
|
|
movs r0, 0x9
|
|
strh r0, [r1, 0x1E]
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x20]
|
|
b _080AFD36
|
|
_080AFC92:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r4, r0, r2
|
|
ldrh r0, [r4, 0x1C]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x1C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
bne _080AFD36
|
|
movs r0, 0
|
|
strh r0, [r4, 0x1C]
|
|
ldrh r1, [r4, 0x1E]
|
|
subs r1, 0x1
|
|
strh r1, [r4, 0x1E]
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r2, 0x1E
|
|
ldrsh r1, [r4, r2]
|
|
cmp r1, 0
|
|
bne _080AFD36
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x20]
|
|
strh r1, [r4, 0x1E]
|
|
b _080AFD36
|
|
_080AFCD6:
|
|
mov r0, sp
|
|
bl sub_80752A0
|
|
movs r0, 0x1
|
|
bl sub_8075358
|
|
movs r0, 0x2
|
|
bl sub_8075358
|
|
ldr r0, _080AFD40 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x20]
|
|
_080AFCF8:
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080AFD0C
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
_080AFD0C:
|
|
ldr r0, _080AFD44 @ =gBattle_BG1_X
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, _080AFD48 @ =gBattle_BG1_Y
|
|
strh r1, [r0]
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x1
|
|
movs r1, 0x4
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_080AFD36:
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AFD40: .4byte gTasks
|
|
_080AFD44: .4byte gBattle_BG1_X
|
|
_080AFD48: .4byte gBattle_BG1_Y
|
|
thumb_func_end sub_80AFBC0
|
|
|
|
thumb_func_start sub_80AFD4C
|
|
sub_80AFD4C: @ 80AFD4C
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080AFD78 @ =gBattleAnimAttacker
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x20]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x22]
|
|
ldr r0, _080AFD7C @ =sub_8075DF4
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AFD78: .4byte gBattleAnimAttacker
|
|
_080AFD7C: .4byte sub_8075DF4
|
|
thumb_func_end sub_80AFD4C
|
|
|
|
thumb_func_start sub_80AFD80
|
|
sub_80AFD80: @ 80AFD80
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, _080AFE40 @ =0x00003f42
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r0, 0x1
|
|
movs r1, 0x4
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080AFDC2
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
_080AFDC2:
|
|
ldr r0, _080AFE44 @ =gBattle_BG1_X
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r4, _080AFE48 @ =gBattle_BG1_Y
|
|
strh r1, [r4]
|
|
movs r0, 0x14
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldrh r1, [r4]
|
|
movs r0, 0x16
|
|
bl SetGpuReg
|
|
mov r0, sp
|
|
bl sub_80752A0
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080AFE4C @ =gUnknown_83C3540
|
|
movs r2, 0x80
|
|
lsls r2, 4
|
|
mov r3, sp
|
|
ldrh r3, [r3, 0xA]
|
|
bl LoadBgTiles
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080AFE50 @ =gFile_graphics_battle_anims_backgrounds_fog_tilemap
|
|
bl sub_807543C
|
|
ldr r0, _080AFE54 @ =gUnknown_83C2CE0
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x8]
|
|
lsls r1, 4
|
|
movs r2, 0x20
|
|
bl LoadPalette
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080AFE24
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x8]
|
|
ldr r1, [sp, 0x4]
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_80730C0
|
|
_080AFE24:
|
|
ldr r1, _080AFE58 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _080AFE5C @ =0x0000ffff
|
|
strh r1, [r0, 0x26]
|
|
ldr r1, _080AFE60 @ =sub_80AFE64
|
|
str r1, [r0]
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AFE40: .4byte 0x00003f42
|
|
_080AFE44: .4byte gBattle_BG1_X
|
|
_080AFE48: .4byte gBattle_BG1_Y
|
|
_080AFE4C: .4byte gUnknown_83C3540
|
|
_080AFE50: .4byte gFile_graphics_battle_anims_backgrounds_fog_tilemap
|
|
_080AFE54: .4byte gUnknown_83C2CE0
|
|
_080AFE58: .4byte gTasks
|
|
_080AFE5C: .4byte 0x0000ffff
|
|
_080AFE60: .4byte sub_80AFE64
|
|
thumb_func_end sub_80AFD80
|
|
|
|
thumb_func_start sub_80AFE64
|
|
sub_80AFE64: @ 80AFE64
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r2, _080AFE94 @ =gBattle_BG1_X
|
|
ldr r3, _080AFE98 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r3
|
|
ldrh r0, [r1, 0x26]
|
|
ldrh r5, [r2]
|
|
adds r0, r5
|
|
strh r0, [r2]
|
|
movs r2, 0x20
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0x4
|
|
bls _080AFE8A
|
|
b _080AFFBE
|
|
_080AFE8A:
|
|
lsls r0, 2
|
|
ldr r1, _080AFE9C @ =_080AFEA0
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080AFE94: .4byte gBattle_BG1_X
|
|
_080AFE98: .4byte gTasks
|
|
_080AFE9C: .4byte _080AFEA0
|
|
.align 2, 0
|
|
_080AFEA0:
|
|
.4byte _080AFEB4
|
|
.4byte _080AFEF8
|
|
.4byte _080AFF1A
|
|
.4byte _080AFF5E
|
|
.4byte _080AFF80
|
|
_080AFEB4:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r4, r0, r3
|
|
ldrh r0, [r4, 0x1A]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x1A]
|
|
ldr r1, _080AFEF4 @ =gUnknown_83E6500
|
|
movs r5, 0x1A
|
|
ldrsh r0, [r4, r5]
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
strh r1, [r4, 0x1E]
|
|
movs r0, 0x11
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r1, 0x1E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x5
|
|
bne _080AFFBE
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x20]
|
|
movs r0, 0
|
|
strh r0, [r4, 0x1E]
|
|
b _080AFFBE
|
|
.align 2, 0
|
|
_080AFEF4: .4byte gUnknown_83E6500
|
|
_080AFEF8:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r1, r0, r3
|
|
ldrh r0, [r1, 0x1E]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x1E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x51
|
|
bne _080AFFBE
|
|
movs r0, 0x5
|
|
strh r0, [r1, 0x1E]
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x20]
|
|
b _080AFFBE
|
|
_080AFF1A:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r4, r0, r3
|
|
ldrh r0, [r4, 0x1C]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x1C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
bne _080AFFBE
|
|
movs r0, 0
|
|
strh r0, [r4, 0x1C]
|
|
ldrh r1, [r4, 0x1E]
|
|
subs r1, 0x1
|
|
strh r1, [r4, 0x1E]
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r2, 0x1E
|
|
ldrsh r1, [r4, r2]
|
|
cmp r1, 0
|
|
bne _080AFFBE
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x20]
|
|
strh r1, [r4, 0x1E]
|
|
b _080AFFBE
|
|
_080AFF5E:
|
|
mov r0, sp
|
|
bl sub_80752A0
|
|
movs r0, 0x1
|
|
bl sub_8075358
|
|
movs r0, 0x2
|
|
bl sub_8075358
|
|
ldr r0, _080AFFC8 @ =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x20]
|
|
_080AFF80:
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080AFF94
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
_080AFF94:
|
|
ldr r0, _080AFFCC @ =gBattle_BG1_X
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, _080AFFD0 @ =gBattle_BG1_Y
|
|
strh r1, [r0]
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x1
|
|
movs r1, 0x4
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_080AFFBE:
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AFFC8: .4byte gTasks
|
|
_080AFFCC: .4byte gBattle_BG1_X
|
|
_080AFFD0: .4byte gBattle_BG1_Y
|
|
thumb_func_end sub_80AFE64
|
|
|
|
thumb_func_start sub_80AFFD4
|
|
sub_80AFFD4: @ 80AFFD4
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r5, r0, 0
|
|
ldr r6, _080B00BC @ =gBattleAnimArgs
|
|
ldrh r0, [r6]
|
|
strh r0, [r5, 0x2E]
|
|
ldr r0, _080B00C0 @ =gBattleAnimAttacker
|
|
mov r8, r0
|
|
ldrb r0, [r0]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
adds r4, r0, 0
|
|
ldr r7, _080B00C4 @ =gBattleAnimTarget
|
|
ldrb r0, [r7]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r4, 24
|
|
lsls r0, 24
|
|
cmp r4, r0
|
|
bcs _080B0008
|
|
movs r0, 0x80
|
|
lsls r0, 8
|
|
strh r0, [r5, 0x3C]
|
|
_080B0008:
|
|
ldr r3, _080B00C8 @ =gUnknown_2023BD6
|
|
ldrb r0, [r7]
|
|
adds r0, r3
|
|
ldrb r1, [r0]
|
|
movs r2, 0x1
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B0068
|
|
ldrh r0, [r6, 0x2]
|
|
negs r0, r0
|
|
strh r0, [r6, 0x2]
|
|
ldrh r0, [r6, 0x6]
|
|
negs r0, r0
|
|
strh r0, [r6, 0x6]
|
|
movs r1, 0x3C
|
|
ldrsh r0, [r5, r1]
|
|
movs r1, 0x80
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B0064
|
|
mov r1, r8
|
|
ldrb r0, [r1]
|
|
adds r0, r3
|
|
ldrb r1, [r0]
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B0064
|
|
movs r0, 0x1
|
|
bl GetAnimBankSpriteId
|
|
ldr r2, _080B00CC @ =gSprites
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
adds r1, 0x43
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
adds r1, r5, 0
|
|
adds r1, 0x43
|
|
strb r0, [r1]
|
|
_080B0064:
|
|
movs r0, 0x1
|
|
strh r0, [r5, 0x3A]
|
|
_080B0068:
|
|
ldr r4, _080B00C0 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
ldr r6, _080B00BC @ =gBattleAnimArgs
|
|
movs r1, 0xE
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
beq _080B00D0
|
|
ldrh r0, [r6, 0x2]
|
|
ldrh r1, [r5, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x30]
|
|
ldr r4, _080B00C4 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r6, 0x6]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x32]
|
|
ldrh r0, [r6, 0x4]
|
|
ldrh r1, [r5, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x34]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
b _080B00F8
|
|
.align 2, 0
|
|
_080B00BC: .4byte gBattleAnimArgs
|
|
_080B00C0: .4byte gBattleAnimAttacker
|
|
_080B00C4: .4byte gBattleAnimTarget
|
|
_080B00C8: .4byte gUnknown_2023BD6
|
|
_080B00CC: .4byte gSprites
|
|
_080B00D0:
|
|
ldrh r0, [r6, 0x2]
|
|
ldrh r1, [r5, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x30]
|
|
ldr r4, _080B0140 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r6, 0x6]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x32]
|
|
ldrh r0, [r6, 0x4]
|
|
ldrh r1, [r5, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x34]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
_080B00F8:
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r6, [r6, 0x8]
|
|
adds r0, r6
|
|
strh r0, [r5, 0x36]
|
|
ldrb r0, [r4]
|
|
bl sub_8076884
|
|
lsls r0, 24
|
|
lsrs r0, 16
|
|
ldrh r1, [r5, 0x3C]
|
|
orrs r0, r1
|
|
strh r0, [r5, 0x3C]
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B012C
|
|
movs r0, 0x1
|
|
strh r0, [r5, 0x3A]
|
|
adds r1, r5, 0
|
|
adds r1, 0x43
|
|
movs r0, 0x80
|
|
strb r0, [r1]
|
|
_080B012C:
|
|
adds r0, r5, 0
|
|
bl obj_translate_based_on_private_1_2_3_4
|
|
ldr r0, _080B0144 @ =sub_80B0148
|
|
str r0, [r5, 0x1C]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B0140: .4byte gBattleAnimTarget
|
|
_080B0144: .4byte sub_80B0148
|
|
thumb_func_end sub_80AFFD4
|
|
|
|
thumb_func_start sub_80B0148
|
|
sub_80B0148: @ 80B0148
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x3C]
|
|
movs r5, 0xFF
|
|
movs r1, 0xFF
|
|
ands r1, r0
|
|
cmp r1, 0x1
|
|
beq _080B0230
|
|
cmp r1, 0x1
|
|
bgt _080B0162
|
|
cmp r1, 0
|
|
beq _080B016A
|
|
b _080B0380
|
|
_080B0162:
|
|
cmp r1, 0x2
|
|
bne _080B0168
|
|
b _080B0344
|
|
_080B0168:
|
|
b _080B0380
|
|
_080B016A:
|
|
adds r0, r4, 0
|
|
bl sub_80755E0
|
|
ldr r1, _080B0194 @ =gSineTable
|
|
movs r2, 0x38
|
|
ldrsh r0, [r4, r2]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
asrs r0, 4
|
|
ldrh r2, [r4, 0x24]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080B0198
|
|
ldrh r0, [r4, 0x38]
|
|
subs r0, 0x8
|
|
b _080B019C
|
|
.align 2, 0
|
|
_080B0194: .4byte gSineTable
|
|
_080B0198:
|
|
ldrh r0, [r4, 0x38]
|
|
adds r0, 0x8
|
|
_080B019C:
|
|
ands r0, r5
|
|
strh r0, [r4, 0x38]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
ble _080B01AA
|
|
b _080B0380
|
|
_080B01AA:
|
|
movs r5, 0x50
|
|
strh r5, [r4, 0x2E]
|
|
ldr r6, _080B01F8 @ =gBattleAnimTarget
|
|
ldrb r0, [r6]
|
|
movs r1, 0
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r4, 0x26]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
adds r0, 0x1D
|
|
strh r0, [r4, 0x36]
|
|
ldrh r0, [r4, 0x3C]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x3C]
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B0200
|
|
ldr r1, _080B01FC @ =gUnknown_2023BD6
|
|
ldrb r0, [r6]
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B0200
|
|
movs r0, 0xCC
|
|
strh r0, [r4, 0x38]
|
|
b _080B0202
|
|
.align 2, 0
|
|
_080B01F8: .4byte gBattleAnimTarget
|
|
_080B01FC: .4byte gUnknown_2023BD6
|
|
_080B0200:
|
|
strh r5, [r4, 0x38]
|
|
_080B0202:
|
|
movs r0, 0
|
|
strh r0, [r4, 0x26]
|
|
ldr r1, _080B022C @ =gSineTable
|
|
movs r2, 0x38
|
|
ldrsh r0, [r4, r2]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
asrs r0, 3
|
|
strh r0, [r4, 0x24]
|
|
ldrh r0, [r4, 0x38]
|
|
adds r0, 0x2
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x38]
|
|
adds r0, r4, 0
|
|
bl obj_translate_based_on_private_1_2_3_4
|
|
b _080B0380
|
|
.align 2, 0
|
|
_080B022C: .4byte gSineTable
|
|
_080B0230:
|
|
adds r0, r4, 0
|
|
bl sub_80755E0
|
|
ldr r1, _080B028C @ =gSineTable
|
|
movs r2, 0x38
|
|
ldrsh r0, [r4, r2]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
asrs r0, 3
|
|
ldrh r2, [r4, 0x24]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x24]
|
|
movs r2, 0x38
|
|
ldrsh r0, [r4, r2]
|
|
adds r0, 0x40
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
negs r0, r0
|
|
asrs r0, 8
|
|
ldrh r1, [r4, 0x26]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x26]
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B02AE
|
|
ldrh r1, [r4, 0x38]
|
|
adds r0, r1, 0
|
|
subs r0, 0x40
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
adds r3, r1, 0
|
|
cmp r0, 0x7F
|
|
bhi _080B0290
|
|
ldrh r1, [r4, 0x3C]
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
b _080B0298
|
|
.align 2, 0
|
|
_080B028C: .4byte gSineTable
|
|
_080B0290:
|
|
ldrh r1, [r4, 0x3C]
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
adds r1, 0x1
|
|
_080B0298:
|
|
movs r0, 0x3
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r4, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x5]
|
|
adds r0, r3, 0x4
|
|
b _080B02CE
|
|
_080B02AE:
|
|
ldrh r0, [r4, 0x38]
|
|
subs r0, 0x40
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x7F
|
|
bhi _080B02C2
|
|
adds r1, r4, 0
|
|
adds r1, 0x43
|
|
movs r0, 0x80
|
|
b _080B02C8
|
|
_080B02C2:
|
|
adds r1, r4, 0
|
|
adds r1, 0x43
|
|
movs r0, 0x8C
|
|
_080B02C8:
|
|
strb r0, [r1]
|
|
ldrh r0, [r4, 0x38]
|
|
subs r0, 0x4
|
|
_080B02CE:
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x38]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bgt _080B0380
|
|
movs r5, 0
|
|
movs r0, 0xC0
|
|
lsls r0, 2
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x24]
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x26]
|
|
ldrh r2, [r4, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
adds r0, 0x4
|
|
strh r0, [r4, 0x36]
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B0328
|
|
ldr r1, _080B0320 @ =gUnknown_2023BD6
|
|
ldr r0, _080B0324 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B0328
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
b _080B032A
|
|
.align 2, 0
|
|
_080B0320: .4byte gUnknown_2023BD6
|
|
_080B0324: .4byte gBattleAnimTarget
|
|
_080B0328:
|
|
ldr r0, _080B0340 @ =0x0000fff0
|
|
_080B032A:
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r4, 0x3C]
|
|
adds r0, 0x1
|
|
movs r1, 0
|
|
strh r0, [r4, 0x3C]
|
|
strh r1, [r4, 0x26]
|
|
strh r1, [r4, 0x24]
|
|
adds r0, r4, 0
|
|
bl sub_8075678
|
|
b _080B0380
|
|
.align 2, 0
|
|
_080B0340: .4byte 0x0000fff0
|
|
_080B0344:
|
|
adds r0, r4, 0
|
|
bl sub_80755E0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B0380
|
|
ldrb r0, [r4, 0x1]
|
|
lsls r0, 30
|
|
lsrs r0, 30
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B0372
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
bl FreeOamMatrix
|
|
ldrb r1, [r4, 0x1]
|
|
movs r0, 0x4
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r4, 0x1]
|
|
_080B0372:
|
|
adds r0, r4, 0
|
|
bl DestroySprite
|
|
ldr r1, _080B0388 @ =gUnknown_2037EE2
|
|
ldrb r0, [r1]
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
_080B0380:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B0388: .4byte gUnknown_2037EE2
|
|
thumb_func_end sub_80B0148
|
|
|
|
thumb_func_start sub_80B038C
|
|
sub_80B038C: @ 80B038C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080B03A0 @ =gTasks
|
|
adds r1, r0
|
|
ldr r0, _080B03A4 @ =sub_80B03A8
|
|
str r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_080B03A0: .4byte gTasks
|
|
_080B03A4: .4byte sub_80B03A8
|
|
thumb_func_end sub_80B038C
|
|
|
|
thumb_func_start sub_80B03A8
|
|
sub_80B03A8: @ 80B03A8
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _080B03CC @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r0, 0x8
|
|
ldrsh r5, [r4, r0]
|
|
cmp r5, 0x1
|
|
beq _080B03EC
|
|
cmp r5, 0x1
|
|
bgt _080B03D0
|
|
cmp r5, 0
|
|
beq _080B03D6
|
|
b _080B0450
|
|
.align 2, 0
|
|
_080B03CC: .4byte gTasks
|
|
_080B03D0:
|
|
cmp r5, 0x2
|
|
beq _080B0442
|
|
b _080B0450
|
|
_080B03D6:
|
|
ldrh r0, [r4, 0x10]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x10]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x2
|
|
ble _080B0450
|
|
strh r5, [r4, 0x10]
|
|
strh r5, [r4, 0x12]
|
|
strh r5, [r4, 0xC]
|
|
b _080B0428
|
|
_080B03EC:
|
|
ldrh r1, [r4, 0x12]
|
|
movs r3, 0x12
|
|
ldrsh r0, [r4, r3]
|
|
cmp r0, 0
|
|
bne _080B043C
|
|
ldrb r0, [r4, 0xE]
|
|
ldrb r1, [r4, 0xC]
|
|
movs r3, 0x1
|
|
bl sub_80B0458
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B040C
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
_080B040C:
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x3
|
|
bne _080B0438
|
|
ldrh r0, [r4, 0xE]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xE]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xA
|
|
bne _080B0430
|
|
_080B0428:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080B0450
|
|
_080B0430:
|
|
ldrh r0, [r4, 0x8]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080B0450
|
|
_080B0438:
|
|
strh r5, [r4, 0x12]
|
|
b _080B0450
|
|
_080B043C:
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x12]
|
|
b _080B0450
|
|
_080B0442:
|
|
movs r1, 0xA
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080B0450
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B0450:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B03A8
|
|
|
|
thumb_func_start sub_80B0458
|
|
sub_80B0458: @ 80B0458
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
lsls r0, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r9, r1
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
str r2, [sp]
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
mov r10, r3
|
|
movs r1, 0
|
|
str r1, [sp, 0x4]
|
|
ldr r1, _080B04D0 @ =gUnknown_83E652C
|
|
lsrs r0, 22
|
|
adds r4, r0, r1
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 24
|
|
asrs r0, 28
|
|
mov r8, r0
|
|
cmp r0, 0x2
|
|
beq _080B0544
|
|
ldrh r0, [r4, 0x2]
|
|
lsls r0, 20
|
|
lsrs r0, 24
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
adds r0, r5, 0
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B0544
|
|
movs r0, 0x1
|
|
str r0, [sp, 0x4]
|
|
adds r0, r5, 0
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
adds r0, r5, 0
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
mov r1, r8
|
|
cmp r1, 0
|
|
beq _080B04D4
|
|
cmp r1, 0x1
|
|
beq _080B050A
|
|
b _080B0556
|
|
.align 2, 0
|
|
_080B04D0: .4byte gUnknown_83E652C
|
|
_080B04D4:
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl sub_8076B2C
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x6
|
|
bl __divsi3
|
|
lsls r1, r7, 16
|
|
asrs r1, 16
|
|
subs r1, r0
|
|
lsls r1, 16
|
|
lsrs r7, r1, 16
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl sub_8076B2C
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x6
|
|
bl __divsi3
|
|
lsls r1, r6, 16
|
|
asrs r1, 16
|
|
subs r1, r0
|
|
b _080B053E
|
|
_080B050A:
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl sub_8076B2C
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x6
|
|
bl __divsi3
|
|
lsls r1, r7, 16
|
|
asrs r1, 16
|
|
adds r1, r0
|
|
lsls r1, 16
|
|
lsrs r7, r1, 16
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl sub_8076B2C
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x6
|
|
bl __divsi3
|
|
lsls r1, r6, 16
|
|
asrs r1, 16
|
|
adds r1, r0
|
|
_080B053E:
|
|
lsls r1, 16
|
|
lsrs r6, r1, 16
|
|
b _080B0556
|
|
_080B0544:
|
|
ldrh r0, [r4]
|
|
lsls r0, 22
|
|
asrs r0, 6
|
|
lsrs r7, r0, 16
|
|
ldr r0, [r4]
|
|
lsls r0, 12
|
|
asrs r0, 22
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
_080B0556:
|
|
lsls r0, r6, 16
|
|
asrs r0, 16
|
|
adds r0, 0x8
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
lsls r1, r7, 16
|
|
asrs r1, 16
|
|
subs r1, r0
|
|
ldr r0, _080B05B0 @ =gUnknown_83E65A4
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
movs r2, 0x8
|
|
negs r2, r2
|
|
movs r3, 0x12
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0x40
|
|
beq _080B05B8
|
|
lsls r4, r5, 4
|
|
adds r4, r5
|
|
lsls r4, 2
|
|
ldr r0, _080B05B4 @ =gSprites
|
|
adds r4, r0
|
|
adds r0, r4, 0
|
|
mov r1, r9
|
|
bl StartSpriteAffineAnim
|
|
mov r0, sp
|
|
ldrh r0, [r0, 0x4]
|
|
strh r0, [r4, 0x2E]
|
|
strh r7, [r4, 0x34]
|
|
strh r6, [r4, 0x36]
|
|
mov r1, r9
|
|
strh r1, [r4, 0x38]
|
|
mov r0, sp
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, 0x3A]
|
|
mov r1, r10
|
|
strh r1, [r4, 0x3C]
|
|
movs r0, 0x1
|
|
b _080B05BA
|
|
.align 2, 0
|
|
_080B05B0: .4byte gUnknown_83E65A4
|
|
_080B05B4: .4byte gSprites
|
|
_080B05B8:
|
|
movs r0, 0
|
|
_080B05BA:
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80B0458
|
|
|
|
thumb_func_start sub_80B05CC
|
|
sub_80B05CC: @ 80B05CC
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, 0x4
|
|
strh r0, [r4, 0x20]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r2, r1, 0
|
|
adds r2, 0x8
|
|
strh r2, [r4, 0x22]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r3, 0x34
|
|
ldrsh r1, [r4, r3]
|
|
cmp r0, r1
|
|
bge _080B05F6
|
|
lsls r0, r2, 16
|
|
asrs r0, 16
|
|
movs r2, 0x36
|
|
ldrsh r1, [r4, r2]
|
|
cmp r0, r1
|
|
blt _080B06A6
|
|
_080B05F6:
|
|
movs r3, 0x2E
|
|
ldrsh r0, [r4, r3]
|
|
cmp r0, 0x1
|
|
bne _080B0678
|
|
movs r1, 0x38
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080B0678
|
|
ldr r0, _080B066C @ =gUnknown_83E63E0
|
|
movs r2, 0x34
|
|
ldrsh r1, [r4, r2]
|
|
movs r3, 0x36
|
|
ldrsh r2, [r4, r3]
|
|
adds r3, r4, 0
|
|
adds r3, 0x43
|
|
ldrb r3, [r3]
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x2E]
|
|
cmp r0, 0x40
|
|
beq _080B065A
|
|
ldr r2, _080B0670 @ =gSprites
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r1, r2, 0
|
|
adds r1, 0x1C
|
|
adds r0, r1
|
|
ldr r1, _080B0674 @ =sub_80B06B0
|
|
str r1, [r0]
|
|
movs r3, 0x2E
|
|
ldrsh r1, [r4, r3]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r4, 0x3A]
|
|
strh r1, [r0, 0x3A]
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r4, 0x3C]
|
|
strh r1, [r0, 0x3C]
|
|
_080B065A:
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
bl FreeOamMatrix
|
|
adds r0, r4, 0
|
|
bl DestroySprite
|
|
b _080B06A6
|
|
.align 2, 0
|
|
_080B066C: .4byte gUnknown_83E63E0
|
|
_080B0670: .4byte gSprites
|
|
_080B0674: .4byte sub_80B06B0
|
|
_080B0678:
|
|
ldr r3, _080B06AC @ =gTasks
|
|
movs r2, 0x3C
|
|
ldrsh r1, [r4, r2]
|
|
lsls r1, 1
|
|
movs r0, 0x3A
|
|
ldrsh r2, [r4, r0]
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
adds r1, r0
|
|
adds r3, 0x8
|
|
adds r1, r3
|
|
ldrh r0, [r1]
|
|
subs r0, 0x1
|
|
strh r0, [r1]
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
bl FreeOamMatrix
|
|
adds r0, r4, 0
|
|
bl DestroySprite
|
|
_080B06A6:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B06AC: .4byte gTasks
|
|
thumb_func_end sub_80B05CC
|
|
|
|
thumb_func_start sub_80B06B0
|
|
sub_80B06B0: @ 80B06B0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x14
|
|
bne _080B06F0
|
|
ldr r3, _080B06F8 @ =gTasks
|
|
movs r0, 0x3C
|
|
ldrsh r1, [r4, r0]
|
|
lsls r1, 1
|
|
movs r0, 0x3A
|
|
ldrsh r2, [r4, r0]
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
adds r1, r0
|
|
adds r3, 0x8
|
|
adds r1, r3
|
|
ldrh r0, [r1]
|
|
subs r0, 0x1
|
|
strh r0, [r1]
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
bl FreeOamMatrix
|
|
adds r0, r4, 0
|
|
bl DestroySprite
|
|
_080B06F0:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B06F8: .4byte gTasks
|
|
thumb_func_end sub_80B06B0
|
|
|
|
thumb_func_start unc_080B06FC
|
|
unc_080B06FC: @ 80B06FC
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _080B077C @ =gUnknown_2037EE4
|
|
ldr r0, [r0]
|
|
ldrb r1, [r0, 0x11]
|
|
lsrs r0, r1, 4
|
|
lsls r1, 28
|
|
lsrs r1, 28
|
|
subs r0, r1
|
|
subs r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0x4
|
|
bls _080B071A
|
|
movs r1, 0x4
|
|
_080B071A:
|
|
adds r0, r5, 0
|
|
bl StartSpriteAffineAnim
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r6, _080B0780 @ =gBattleAnimArgs
|
|
ldrh r0, [r6, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
ldr r0, _080B0784 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B0742
|
|
ldrh r0, [r6, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r6, 0x4]
|
|
_080B0742:
|
|
ldr r4, _080B0788 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r6, 0x4]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x32]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r6, 0x6]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x36]
|
|
ldrh r0, [r6, 0xA]
|
|
strh r0, [r5, 0x38]
|
|
adds r0, r5, 0
|
|
bl sub_8075068
|
|
ldr r0, _080B078C @ =sub_80B0790
|
|
str r0, [r5, 0x1C]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B077C: .4byte gUnknown_2037EE4
|
|
_080B0780: .4byte gBattleAnimArgs
|
|
_080B0784: .4byte gBattleAnimAttacker
|
|
_080B0788: .4byte gBattleAnimTarget
|
|
_080B078C: .4byte sub_80B0790
|
|
thumb_func_end unc_080B06FC
|
|
|
|
thumb_func_start sub_80B0790
|
|
sub_80B0790: @ 80B0790
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl AnimateBallThrow
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B07B2
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAnim
|
|
ldr r0, _080B07B8 @ =sub_8074F6C
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, _080B07BC @ =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
_080B07B2:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B07B8: .4byte sub_8074F6C
|
|
_080B07BC: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80B0790
|
|
|
|
thumb_func_start sub_80B07C0
|
|
sub_80B07C0: @ 80B07C0
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
ldrh r2, [r4, 0x4]
|
|
lsls r1, r2, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x8
|
|
ldr r3, _080B0814 @ =0x000003ff
|
|
adds r0, r3, 0
|
|
ands r1, r0
|
|
ldr r0, _080B0818 @ =0xfffffc00
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r4, 0x4]
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl sub_8075114
|
|
bl Random
|
|
movs r5, 0xFF
|
|
ands r5, r0
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
adds r6, r0, 0
|
|
orrs r5, r6
|
|
bl Random
|
|
ldr r1, _080B081C @ =0x000001ff
|
|
ands r1, r0
|
|
adds r0, r1, 0
|
|
cmp r0, 0xFF
|
|
ble _080B0806
|
|
subs r0, r6, r0
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
_080B0806:
|
|
strh r5, [r4, 0x30]
|
|
strh r1, [r4, 0x32]
|
|
ldr r0, _080B0820 @ =sub_80B0824
|
|
str r0, [r4, 0x1C]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B0814: .4byte 0x000003ff
|
|
_080B0818: .4byte 0xfffffc00
|
|
_080B081C: .4byte 0x000001ff
|
|
_080B0820: .4byte sub_80B0824
|
|
thumb_func_end sub_80B07C0
|
|
|
|
thumb_func_start sub_80B0824
|
|
sub_80B0824: @ 80B0824
|
|
push {r4,lr}
|
|
adds r2, r0, 0
|
|
ldrh r0, [r2, 0x30]
|
|
ldrh r1, [r2, 0x34]
|
|
adds r3, r0, r1
|
|
strh r3, [r2, 0x34]
|
|
ldrh r1, [r2, 0x32]
|
|
ldrh r4, [r2, 0x36]
|
|
adds r1, r4
|
|
strh r1, [r2, 0x36]
|
|
movs r1, 0x1
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080B0848
|
|
lsls r0, r3, 16
|
|
asrs r0, 24
|
|
negs r0, r0
|
|
b _080B084C
|
|
_080B0848:
|
|
lsls r0, r3, 16
|
|
asrs r0, 24
|
|
_080B084C:
|
|
strh r0, [r2, 0x24]
|
|
ldrh r0, [r2, 0x36]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
strh r0, [r2, 0x26]
|
|
ldrh r0, [r2, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x15
|
|
bne _080B086A
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_080B086A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B0824
|
|
|
|
thumb_func_start sub_80B0870
|
|
sub_80B0870: @ 80B0870
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _080B0898 @ =gBattleAnimArgs
|
|
ldrb r3, [r1]
|
|
lsls r3, 1
|
|
adds r3, r1
|
|
ldr r1, _080B089C @ =gUnknown_2037EE4
|
|
ldr r1, [r1]
|
|
ldrb r1, [r1, 0x11]
|
|
lsrs r2, r1, 4
|
|
lsls r1, 28
|
|
lsrs r1, 28
|
|
subs r2, r1
|
|
subs r2, 0x1
|
|
strh r2, [r3]
|
|
bl DestroyAnimVisualTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B0898: .4byte gBattleAnimArgs
|
|
_080B089C: .4byte gUnknown_2037EE4
|
|
thumb_func_end sub_80B0870
|
|
|
|
thumb_func_start unc_080B08A0
|
|
unc_080B08A0: @ 80B08A0
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080B08D0 @ =gBattleAnimArgs
|
|
movs r0, 0
|
|
ldrsh r1, [r5, r0]
|
|
adds r0, r4, 0
|
|
bl sub_8074FF8
|
|
ldrh r0, [r5, 0x2]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x22]
|
|
movs r0, 0xF
|
|
strh r0, [r4, 0x2E]
|
|
ldr r0, _080B08D4 @ =sub_8074C44
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, _080B08D8 @ =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B08D0: .4byte gBattleAnimArgs
|
|
_080B08D4: .4byte sub_8074C44
|
|
_080B08D8: .4byte DestroyAnimSprite
|
|
thumb_func_end unc_080B08A0
|
|
|
|
thumb_func_start sub_80B08DC
|
|
sub_80B08DC: @ 80B08DC
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080B0920 @ =gBattleAnimArgs
|
|
movs r1, 0xE
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
bne _080B0904
|
|
ldr r0, _080B0924 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B0904
|
|
ldrh r0, [r4, 0x2]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x2]
|
|
ldrh r0, [r4, 0x6]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x6]
|
|
_080B0904:
|
|
ldr r4, _080B0920 @ =gBattleAnimArgs
|
|
ldrb r1, [r4, 0xC]
|
|
adds r0, r5, 0
|
|
bl StartSpriteAnim
|
|
movs r0, 0
|
|
strh r0, [r4, 0xC]
|
|
adds r0, r5, 0
|
|
bl sub_8075F0C
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B0920: .4byte gBattleAnimArgs
|
|
_080B0924: .4byte gBattleAnimAttacker
|
|
thumb_func_end sub_80B08DC
|
|
|
|
thumb_func_start sub_80B0928
|
|
sub_80B0928: @ 80B0928
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B0944
|
|
ldr r0, _080B0950 @ =gBattleAnimArgs
|
|
ldrh r1, [r0, 0x2]
|
|
negs r1, r1
|
|
strh r1, [r0, 0x2]
|
|
ldrh r1, [r0, 0x6]
|
|
negs r1, r1
|
|
strh r1, [r0, 0x6]
|
|
_080B0944:
|
|
adds r0, r4, 0
|
|
bl sub_80B08DC
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B0950: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80B0928
|
|
|
|
thumb_func_start sub_80B0954
|
|
sub_80B0954: @ 80B0954
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080B0974 @ =gBattleAnimArgs
|
|
ldrb r1, [r4, 0x8]
|
|
bl StartSpriteAnim
|
|
movs r1, 0x6
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080B0978
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
b _080B0980
|
|
.align 2, 0
|
|
_080B0974: .4byte gBattleAnimArgs
|
|
_080B0978:
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl sub_8075114
|
|
_080B0980:
|
|
ldr r0, _080B0998 @ =gBattleAnimArgs
|
|
ldrh r0, [r0, 0x4]
|
|
strh r0, [r5, 0x2E]
|
|
ldr r0, _080B099C @ =sub_8074C44
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, _080B09A0 @ =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B0998: .4byte gBattleAnimArgs
|
|
_080B099C: .4byte sub_8074C44
|
|
_080B09A0: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80B0954
|
|
|
|
thumb_func_start sub_80B09A4
|
|
sub_80B09A4: @ 80B09A4
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
adds r5, r0, 0
|
|
ldr r0, _080B09C0 @ =gBattleAnimArgs
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
mov r9, r0
|
|
cmp r1, 0
|
|
bne _080B09C8
|
|
ldr r0, _080B09C4 @ =gBattleAnimAttacker
|
|
b _080B09CA
|
|
.align 2, 0
|
|
_080B09C0: .4byte gBattleAnimArgs
|
|
_080B09C4: .4byte gBattleAnimAttacker
|
|
_080B09C8:
|
|
ldr r0, _080B0B10 @ =gBattleAnimTarget
|
|
_080B09CA:
|
|
ldrb r0, [r0]
|
|
mov r8, r0
|
|
mov r4, r9
|
|
movs r3, 0x4
|
|
ldrsh r0, [r4, r3]
|
|
cmp r0, 0
|
|
bge _080B09E8
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x5
|
|
bl __umodsi3
|
|
strh r0, [r4, 0x4]
|
|
_080B09E8:
|
|
ldrb r1, [r4, 0x4]
|
|
adds r0, r5, 0
|
|
bl StartSpriteAnim
|
|
mov r0, r8
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
mov r0, r8
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
mov r0, r8
|
|
movs r1, 0x1
|
|
bl sub_8076B2C
|
|
lsls r0, 16
|
|
asrs r1, r0, 16
|
|
lsrs r0, 31
|
|
adds r1, r0
|
|
lsls r1, 15
|
|
lsrs r6, r1, 16
|
|
mov r0, r8
|
|
movs r1, 0
|
|
bl sub_8076B2C
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0
|
|
bge _080B0A32
|
|
adds r0, 0x3
|
|
_080B0A32:
|
|
lsls r4, r0, 14
|
|
lsrs r4, 16
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
lsls r1, r6, 16
|
|
asrs r1, 16
|
|
bl __modsi3
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
adds r1, r4, 0
|
|
bl __modsi3
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
bl Random
|
|
movs r7, 0x1
|
|
adds r1, r7, 0
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080B0A74
|
|
lsls r0, r6, 16
|
|
negs r0, r0
|
|
lsrs r6, r0, 16
|
|
_080B0A74:
|
|
bl Random
|
|
adds r1, r7, 0
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080B0A86
|
|
lsls r0, r4, 16
|
|
negs r0, r0
|
|
lsrs r4, r0, 16
|
|
_080B0A86:
|
|
ldr r0, _080B0B14 @ =gUnknown_2023BD6
|
|
add r0, r8
|
|
ldrb r1, [r0]
|
|
adds r0, r7, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B0A9C
|
|
lsls r0, r4, 16
|
|
ldr r1, _080B0B18 @ =0xfff00000
|
|
adds r0, r1
|
|
lsrs r4, r0, 16
|
|
_080B0A9C:
|
|
lsls r0, r6, 16
|
|
asrs r0, 16
|
|
ldrh r2, [r5, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x20]
|
|
lsls r0, r4, 16
|
|
asrs r0, 16
|
|
ldrh r3, [r5, 0x22]
|
|
adds r0, r3
|
|
strh r0, [r5, 0x22]
|
|
mov r1, r9
|
|
ldrh r0, [r1, 0x2]
|
|
strh r0, [r5, 0x2E]
|
|
ldr r0, _080B0B1C @ =gUnknown_83E7C08
|
|
movs r2, 0x20
|
|
ldrsh r1, [r5, r2]
|
|
movs r3, 0x22
|
|
ldrsh r2, [r5, r3]
|
|
adds r3, r5, 0
|
|
adds r3, 0x43
|
|
ldrb r3, [r3]
|
|
adds r3, 0x1
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x3C]
|
|
cmp r0, 0x40
|
|
beq _080B0B00
|
|
movs r0, 0x3C
|
|
ldrsh r1, [r5, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r4, _080B0B20 @ =gSprites
|
|
adds r0, r4
|
|
movs r1, 0
|
|
bl StartSpriteAffineAnim
|
|
movs r2, 0x3C
|
|
ldrsh r1, [r5, r2]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r4, 0x1C
|
|
adds r0, r4
|
|
ldr r1, _080B0B24 @ =SpriteCallbackDummy
|
|
str r1, [r0]
|
|
_080B0B00:
|
|
ldr r0, _080B0B28 @ =sub_80B0B2C
|
|
str r0, [r5, 0x1C]
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B0B10: .4byte gBattleAnimTarget
|
|
_080B0B14: .4byte gUnknown_2023BD6
|
|
_080B0B18: .4byte 0xfff00000
|
|
_080B0B1C: .4byte gUnknown_83E7C08
|
|
_080B0B20: .4byte gSprites
|
|
_080B0B24: .4byte SpriteCallbackDummy
|
|
_080B0B28: .4byte sub_80B0B2C
|
|
thumb_func_end sub_80B09A4
|
|
|
|
thumb_func_start sub_80B0B2C
|
|
sub_80B0B2C: @ 80B0B2C
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldrh r1, [r5, 0x2E]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r5, r2]
|
|
cmp r0, 0
|
|
bne _080B0B74
|
|
movs r1, 0x3C
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x40
|
|
beq _080B0B68
|
|
ldr r4, _080B0B70 @ =gSprites
|
|
adds r1, r0, 0
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldrb r0, [r0, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
bl FreeOamMatrix
|
|
movs r0, 0x3C
|
|
ldrsh r1, [r5, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
bl DestroySprite
|
|
_080B0B68:
|
|
adds r0, r5, 0
|
|
bl DestroyAnimSprite
|
|
b _080B0B78
|
|
.align 2, 0
|
|
_080B0B70: .4byte gSprites
|
|
_080B0B74:
|
|
subs r0, r1, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
_080B0B78:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B0B2C
|
|
|
|
thumb_func_start sub_80B0B80
|
|
sub_80B0B80: @ 80B0B80
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075114
|
|
movs r0, 0x1E
|
|
strh r0, [r4, 0x2E]
|
|
ldr r0, _080B0BA0 @ =gBattleAnimArgs
|
|
movs r1, 0x4
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080B0BA4
|
|
ldrh r0, [r4, 0x20]
|
|
subs r0, 0x14
|
|
strh r0, [r4, 0x32]
|
|
b _080B0BB6
|
|
.align 2, 0
|
|
_080B0BA0: .4byte gBattleAnimArgs
|
|
_080B0BA4:
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, 0x14
|
|
strh r0, [r4, 0x32]
|
|
adds r2, r4, 0
|
|
adds r2, 0x3F
|
|
ldrb r0, [r2]
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
_080B0BB6:
|
|
ldrh r0, [r4, 0x22]
|
|
subs r0, 0x14
|
|
strh r0, [r4, 0x36]
|
|
ldr r0, _080B0BD0 @ =sub_8075590
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, _080B0BD4 @ =sub_80B0BD8
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B0BD0: .4byte sub_8075590
|
|
_080B0BD4: .4byte sub_80B0BD8
|
|
thumb_func_end sub_80B0B80
|
|
|
|
thumb_func_start sub_80B0BD8
|
|
sub_80B0BD8: @ 80B0BD8
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldrh r0, [r5, 0x38]
|
|
adds r0, 0x1
|
|
movs r6, 0
|
|
strh r0, [r5, 0x38]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xB
|
|
bne _080B0C18
|
|
ldrh r2, [r5, 0x20]
|
|
ldrh r4, [r5, 0x24]
|
|
subs r0, r2, r4
|
|
strh r0, [r5, 0x32]
|
|
ldrh r1, [r5, 0x22]
|
|
ldrh r3, [r5, 0x26]
|
|
subs r0, r1, r3
|
|
strh r0, [r5, 0x36]
|
|
movs r0, 0x8
|
|
strh r0, [r5, 0x2E]
|
|
adds r2, r4
|
|
strh r2, [r5, 0x20]
|
|
adds r1, r3
|
|
strh r1, [r5, 0x22]
|
|
strh r6, [r5, 0x26]
|
|
strh r6, [r5, 0x24]
|
|
ldr r0, _080B0C20 @ =sub_8075590
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, _080B0C24 @ =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
_080B0C18:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B0C20: .4byte sub_8075590
|
|
_080B0C24: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80B0BD8
|
|
|
|
thumb_func_start sub_80B0C28
|
|
sub_80B0C28: @ 80B0C28
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
ldr r0, _080B0CA4 @ =gBattleAnimAttacker
|
|
ldrb r1, [r0]
|
|
movs r0, 0x2
|
|
ldr r2, _080B0CA8 @ =gBattleAnimTarget
|
|
eors r0, r1
|
|
ldrb r1, [r2]
|
|
cmp r0, r1
|
|
bne _080B0C54
|
|
ldrb r0, [r2]
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bhi _080B0C54
|
|
ldr r1, _080B0CAC @ =gBattleAnimArgs
|
|
movs r2, 0
|
|
ldrsh r0, [r1, r2]
|
|
negs r0, r0
|
|
strh r0, [r1]
|
|
_080B0C54:
|
|
adds r0, r6, 0
|
|
movs r1, 0x1
|
|
bl sub_8075114
|
|
ldr r0, _080B0CA4 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B0C72
|
|
ldr r1, _080B0CAC @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x4]
|
|
_080B0C72:
|
|
ldr r4, _080B0CAC @ =gBattleAnimArgs
|
|
ldrh r0, [r4, 0x6]
|
|
movs r5, 0
|
|
strh r0, [r6, 0x2E]
|
|
ldrh r0, [r6, 0x20]
|
|
strh r0, [r6, 0x30]
|
|
ldrh r1, [r4, 0x4]
|
|
adds r0, r1
|
|
strh r0, [r6, 0x32]
|
|
ldrh r0, [r6, 0x22]
|
|
strh r0, [r6, 0x34]
|
|
strh r0, [r6, 0x36]
|
|
adds r0, r6, 0
|
|
bl obj_translate_based_on_private_1_2_3_4
|
|
ldrh r0, [r4, 0xA]
|
|
strh r0, [r6, 0x38]
|
|
ldrh r0, [r4, 0x8]
|
|
strh r0, [r6, 0x3A]
|
|
strh r5, [r6, 0x3C]
|
|
ldr r0, _080B0CB0 @ =sub_80B0CB4
|
|
str r0, [r6, 0x1C]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B0CA4: .4byte gBattleAnimAttacker
|
|
_080B0CA8: .4byte gBattleAnimTarget
|
|
_080B0CAC: .4byte gBattleAnimArgs
|
|
_080B0CB0: .4byte sub_80B0CB4
|
|
thumb_func_end sub_80B0C28
|
|
|
|
thumb_func_start sub_80B0CB4
|
|
sub_80B0CB4: @ 80B0CB4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80755E0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B0CE0
|
|
ldrh r0, [r4, 0x3C]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
movs r2, 0x38
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
ldrh r1, [r4, 0x26]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x3A]
|
|
ldrh r2, [r4, 0x3C]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x3C]
|
|
b _080B0CE6
|
|
_080B0CE0:
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B0CE6:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B0CB4
|
|
|
|
thumb_func_start sub_80B0CEC
|
|
sub_80B0CEC: @ 80B0CEC
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075114
|
|
ldr r5, _080B0D18 @ =gBattleAnimArgs
|
|
ldrb r1, [r5, 0x4]
|
|
adds r0, r4, 0
|
|
bl StartSpriteAnim
|
|
ldrh r0, [r5, 0x6]
|
|
strh r0, [r4, 0x2E]
|
|
ldr r0, _080B0D1C @ =sub_8074C44
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, _080B0D20 @ =sub_80B0D24
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B0D18: .4byte gBattleAnimArgs
|
|
_080B0D1C: .4byte sub_8074C44
|
|
_080B0D20: .4byte sub_80B0D24
|
|
thumb_func_end sub_80B0CEC
|
|
|
|
thumb_func_start sub_80B0D24
|
|
sub_80B0D24: @ 80B0D24
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0
|
|
bl StartSpriteAffineAnim
|
|
adds r2, r4, 0
|
|
adds r2, 0x2C
|
|
ldrb r0, [r2]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
movs r0, 0x14
|
|
strh r0, [r4, 0x2E]
|
|
ldr r0, _080B0D50 @ =sub_8074C44
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, _080B0D54 @ =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B0D50: .4byte sub_8074C44
|
|
_080B0D54: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80B0D24
|
|
|
|
thumb_func_start sub_80B0D58
|
|
sub_80B0D58: @ 80B0D58
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075114
|
|
ldr r0, _080B0D74 @ =gBattleAnimArgs
|
|
ldrh r0, [r0, 0x4]
|
|
strh r0, [r4, 0x2E]
|
|
ldr r0, _080B0D78 @ =sub_80B0D7C
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B0D74: .4byte gBattleAnimArgs
|
|
_080B0D78: .4byte sub_80B0D7C
|
|
thumb_func_end sub_80B0D58
|
|
|
|
thumb_func_start sub_80B0D7C
|
|
sub_80B0D7C: @ 80B0D7C
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldrh r0, [r5, 0x2E]
|
|
subs r0, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bne _080B0DC0
|
|
movs r0, 0x6
|
|
strh r0, [r5, 0x2E]
|
|
ldr r4, _080B0DC8 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x32]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x36]
|
|
ldr r0, _080B0DCC @ =sub_8075590
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, _080B0DD0 @ =sub_80B0DD4
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
_080B0DC0:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B0DC8: .4byte gBattleAnimTarget
|
|
_080B0DCC: .4byte sub_8075590
|
|
_080B0DD0: .4byte sub_80B0DD4
|
|
thumb_func_end sub_80B0D7C
|
|
|
|
thumb_func_start sub_80B0DD4
|
|
sub_80B0DD4: @ 80B0DD4
|
|
push {lr}
|
|
movs r1, 0xF
|
|
strh r1, [r0, 0x2E]
|
|
ldr r1, _080B0DE8 @ =sub_8074C44
|
|
str r1, [r0, 0x1C]
|
|
ldr r1, _080B0DEC @ =DestroyAnimSprite
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B0DE8: .4byte sub_8074C44
|
|
_080B0DEC: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80B0DD4
|
|
|
|
thumb_func_start sub_80B0DF0
|
|
sub_80B0DF0: @ 80B0DF0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080B0E1C
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl sub_8075114
|
|
ldr r1, _080B0E18 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r1, 0x6]
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _080B0E78
|
|
.align 2, 0
|
|
_080B0E18: .4byte gBattleAnimArgs
|
|
_080B0E1C:
|
|
ldrh r0, [r4, 0x30]
|
|
ldrh r2, [r4, 0x36]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x36]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x32
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x34]
|
|
adds r0, 0x3
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x34]
|
|
cmp r0, 0x64
|
|
ble _080B0E6A
|
|
movs r0, 0x34
|
|
ldrsh r1, [r4, r0]
|
|
lsrs r0, r1, 31
|
|
adds r0, r1, r0
|
|
asrs r0, 1
|
|
lsls r0, 1
|
|
subs r1, r0
|
|
adds r3, r4, 0
|
|
adds r3, 0x3E
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r3]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
_080B0E6A:
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x78
|
|
ble _080B0E78
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B0E78:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B0DF0
|
|
|
|
thumb_func_start sub_80B0E80
|
|
sub_80B0E80: @ 80B0E80
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _080B0E94 @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080B0E9C
|
|
ldr r4, _080B0E98 @ =gBattleAnimAttacker
|
|
b _080B0E9E
|
|
.align 2, 0
|
|
_080B0E94: .4byte gBattleAnimArgs
|
|
_080B0E98: .4byte gBattleAnimAttacker
|
|
_080B0E9C:
|
|
ldr r4, _080B0EE4 @ =gBattleAnimTarget
|
|
_080B0E9E:
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
ldr r1, _080B0EE8 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x2]
|
|
ldrh r2, [r5, 0x20]
|
|
adds r0, r2
|
|
movs r2, 0
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r1, 0x4]
|
|
ldrh r3, [r5, 0x22]
|
|
adds r0, r3
|
|
strh r0, [r5, 0x22]
|
|
strh r2, [r5, 0x2E]
|
|
ldrh r0, [r1, 0x6]
|
|
strh r0, [r5, 0x30]
|
|
ldrh r0, [r1, 0x8]
|
|
strh r0, [r5, 0x32]
|
|
strh r2, [r5, 0x34]
|
|
ldr r0, _080B0EEC @ =sub_80B0EF0
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B0EE4: .4byte gBattleAnimTarget
|
|
_080B0EE8: .4byte gBattleAnimArgs
|
|
_080B0EEC: .4byte sub_80B0EF0
|
|
thumb_func_end sub_80B0E80
|
|
|
|
thumb_func_start sub_80B0EF0
|
|
sub_80B0EF0: @ 80B0EF0
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
movs r0, 0x2E
|
|
ldrsh r2, [r1, r0]
|
|
cmp r2, 0
|
|
beq _080B0F02
|
|
cmp r2, 0x1
|
|
beq _080B0F26
|
|
b _080B0F60
|
|
_080B0F02:
|
|
ldrh r0, [r1, 0x30]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0x30]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080B0F60
|
|
movs r2, 0x32
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
bne _080B0F1E
|
|
adds r0, r1, 0
|
|
bl DestroyAnimSprite
|
|
b _080B0F60
|
|
_080B0F1E:
|
|
ldrh r0, [r1, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x2E]
|
|
b _080B0F60
|
|
_080B0F26:
|
|
ldrh r0, [r1, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080B0F4E
|
|
movs r0, 0
|
|
strh r0, [r1, 0x30]
|
|
ldrh r0, [r1, 0x34]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x34]
|
|
ands r0, r2
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080B0F4A
|
|
movs r0, 0x2
|
|
b _080B0F4C
|
|
_080B0F4A:
|
|
ldr r0, _080B0F64 @ =0x0000fffe
|
|
_080B0F4C:
|
|
strh r0, [r1, 0x24]
|
|
_080B0F4E:
|
|
ldrh r0, [r1, 0x32]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0x32]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080B0F60
|
|
adds r0, r1, 0
|
|
bl DestroyAnimSprite
|
|
_080B0F60:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B0F64: .4byte 0x0000fffe
|
|
thumb_func_end sub_80B0EF0
|
|
|
|
thumb_func_start sub_80B0F68
|
|
sub_80B0F68: @ 80B0F68
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldr r6, _080B0F8C @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
bne _080B0F94
|
|
ldr r4, _080B0F90 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r2, [r6, 0x4]
|
|
adds r0, r2
|
|
b _080B0FA6
|
|
.align 2, 0
|
|
_080B0F8C: .4byte gBattleAnimArgs
|
|
_080B0F90: .4byte gBattleAnimAttacker
|
|
_080B0F94:
|
|
ldr r4, _080B0FF0 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r6, 0x4]
|
|
adds r0, r1
|
|
_080B0FA6:
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r6, [r6, 0x6]
|
|
adds r0, r6
|
|
strh r0, [r5, 0x22]
|
|
ldrh r2, [r5, 0x4]
|
|
lsls r1, r2, 22
|
|
lsrs r1, 22
|
|
ldr r3, _080B0FF4 @ =gBattleAnimArgs
|
|
movs r4, 0x2
|
|
ldrsh r0, [r3, r4]
|
|
lsls r0, 4
|
|
adds r1, r0
|
|
ldr r4, _080B0FF8 @ =0x000003ff
|
|
adds r0, r4, 0
|
|
ands r1, r0
|
|
ldr r0, _080B0FFC @ =0xfffffc00
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r5, 0x4]
|
|
movs r1, 0
|
|
movs r0, 0
|
|
strh r0, [r5, 0x2E]
|
|
movs r2, 0x2
|
|
ldrsh r0, [r3, r2]
|
|
cmp r0, 0x1
|
|
beq _080B1014
|
|
cmp r0, 0x1
|
|
bgt _080B1000
|
|
cmp r0, 0
|
|
beq _080B100A
|
|
b _080B103A
|
|
.align 2, 0
|
|
_080B0FF0: .4byte gBattleAnimTarget
|
|
_080B0FF4: .4byte gBattleAnimArgs
|
|
_080B0FF8: .4byte 0x000003ff
|
|
_080B0FFC: .4byte 0xfffffc00
|
|
_080B1000:
|
|
cmp r0, 0x2
|
|
beq _080B1024
|
|
cmp r0, 0x3
|
|
beq _080B1034
|
|
b _080B103A
|
|
_080B100A:
|
|
ldr r0, _080B1010 @ =0x0000fffd
|
|
b _080B1034
|
|
.align 2, 0
|
|
_080B1010: .4byte 0x0000fffd
|
|
_080B1014:
|
|
movs r0, 0x3
|
|
strh r0, [r5, 0x3A]
|
|
ldr r0, _080B1020 @ =0x0000fffd
|
|
strh r0, [r5, 0x3C]
|
|
b _080B1042
|
|
.align 2, 0
|
|
_080B1020: .4byte 0x0000fffd
|
|
_080B1024:
|
|
ldr r0, _080B1030 @ =0x0000fffd
|
|
strh r0, [r5, 0x3A]
|
|
movs r0, 0x3
|
|
strh r0, [r5, 0x3C]
|
|
b _080B1042
|
|
.align 2, 0
|
|
_080B1030: .4byte 0x0000fffd
|
|
_080B1034:
|
|
strh r0, [r5, 0x3A]
|
|
strh r0, [r5, 0x3C]
|
|
b _080B1042
|
|
_080B103A:
|
|
adds r0, r5, 0
|
|
bl DestroyAnimSprite
|
|
b _080B1046
|
|
_080B1042:
|
|
ldr r0, _080B104C @ =sub_80B1050
|
|
str r0, [r5, 0x1C]
|
|
_080B1046:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B104C: .4byte sub_80B1050
|
|
thumb_func_end sub_80B0F68
|
|
|
|
thumb_func_start sub_80B1050
|
|
sub_80B1050: @ 80B1050
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
ldrh r0, [r1, 0x3A]
|
|
ldrh r2, [r1, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r1, 0x20]
|
|
ldrh r0, [r1, 0x3C]
|
|
ldrh r2, [r1, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r1, 0x22]
|
|
ldrh r0, [r1, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x28
|
|
ble _080B1078
|
|
adds r0, r1, 0
|
|
bl DestroyAnimSprite
|
|
_080B1078:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B1050
|
|
|
|
thumb_func_start sub_80B107C
|
|
sub_80B107C: @ 80B107C
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _080B10C8 @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080B10D8
|
|
ldr r4, _080B10CC @ =sBattler_AI
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
ldr r0, _080B10D0 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl sub_8076884
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r5, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x5]
|
|
ldr r0, _080B10D4 @ =gBattleAnimTarget
|
|
b _080B10F4
|
|
.align 2, 0
|
|
_080B10C8: .4byte gBattleAnimArgs
|
|
_080B10CC: .4byte sBattler_AI
|
|
_080B10D0: .4byte gBattleAnimAttacker
|
|
_080B10D4: .4byte gBattleAnimTarget
|
|
_080B10D8:
|
|
ldr r0, _080B1110 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl sub_8076884
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r5, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x5]
|
|
ldr r0, _080B1114 @ =gBattleAnimAttacker
|
|
_080B10F4:
|
|
ldrb r0, [r0]
|
|
strh r0, [r5, 0x3C]
|
|
movs r0, 0
|
|
strh r0, [r5, 0x2E]
|
|
movs r0, 0xC
|
|
strh r0, [r5, 0x30]
|
|
movs r0, 0x8
|
|
strh r0, [r5, 0x32]
|
|
ldr r0, _080B1118 @ =sub_80B111C
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1110: .4byte gBattleAnimTarget
|
|
_080B1114: .4byte gBattleAnimAttacker
|
|
_080B1118: .4byte sub_80B111C
|
|
thumb_func_end sub_80B107C
|
|
|
|
thumb_func_start sub_80B111C
|
|
sub_80B111C: @ 80B111C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xB4
|
|
bne _080B1178
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x10
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x3C]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
ldrh r0, [r4, 0x3C]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x36]
|
|
adds r0, r4, 0
|
|
bl obj_translate_based_on_private_1_2_3_4
|
|
ldr r1, _080B1180 @ =move_anim_8074EE0
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, _080B1184 @ =sub_807563C
|
|
str r0, [r4, 0x1C]
|
|
_080B1178:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1180: .4byte move_anim_8074EE0
|
|
_080B1184: .4byte sub_807563C
|
|
thumb_func_end sub_80B111C
|
|
|
|
thumb_func_start sub_80B1188
|
|
sub_80B1188: @ 80B1188
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080B11D4 @ =gBattleAnimArgs
|
|
ldrh r0, [r4]
|
|
strh r0, [r5, 0x20]
|
|
movs r2, 0x78
|
|
strh r2, [r5, 0x22]
|
|
ldrh r0, [r4, 0x6]
|
|
strh r0, [r5, 0x2E]
|
|
adds r0, r5, 0
|
|
adds r0, 0x36
|
|
adds r1, r5, 0
|
|
adds r1, 0x38
|
|
lsls r2, 8
|
|
bl sub_80765C0
|
|
ldrh r0, [r4, 0x2]
|
|
strh r0, [r5, 0x3A]
|
|
ldrh r2, [r5, 0x4]
|
|
lsls r1, r2, 22
|
|
lsrs r1, 22
|
|
movs r3, 0x4
|
|
ldrsh r0, [r4, r3]
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
ldr r3, _080B11D8 @ =0x000003ff
|
|
adds r0, r3, 0
|
|
ands r1, r0
|
|
ldr r0, _080B11DC @ =0xfffffc00
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r5, 0x4]
|
|
ldr r0, _080B11E0 @ =sub_80B11E4
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B11D4: .4byte gBattleAnimArgs
|
|
_080B11D8: .4byte 0x000003ff
|
|
_080B11DC: .4byte 0xfffffc00
|
|
_080B11E0: .4byte sub_80B11E4
|
|
thumb_func_end sub_80B1188
|
|
|
|
thumb_func_start sub_80B11E4
|
|
sub_80B11E4: @ 80B11E4
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r7, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r7, r1]
|
|
cmp r0, 0
|
|
beq _080B1236
|
|
movs r2, 0x36
|
|
ldrsh r0, [r7, r2]
|
|
movs r2, 0x38
|
|
ldrsh r1, [r7, r2]
|
|
bl sub_80765C8
|
|
adds r4, r0, 0
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r7, r1]
|
|
subs r4, r0
|
|
adds r0, r7, 0
|
|
adds r0, 0x36
|
|
adds r1, r7, 0
|
|
adds r1, 0x38
|
|
adds r2, r4, 0
|
|
bl sub_80765C0
|
|
asrs r4, 8
|
|
strh r4, [r7, 0x22]
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
movs r0, 0x8
|
|
negs r0, r0
|
|
cmp r4, r0
|
|
bge _080B122E
|
|
adds r0, r7, 0
|
|
bl DestroyAnimSprite
|
|
b _080B128C
|
|
_080B122E:
|
|
ldrh r0, [r7, 0x2E]
|
|
subs r0, 0x1
|
|
strh r0, [r7, 0x2E]
|
|
b _080B128C
|
|
_080B1236:
|
|
ldr r4, _080B1298 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
adds r6, r0, 0
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldr r2, _080B129C @ =gBattleAnimTarget
|
|
mov r8, r2
|
|
ldrb r0, [r2]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
mov r1, r8
|
|
ldrb r0, [r1]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
subs r4, r6
|
|
strh r4, [r7, 0x2E]
|
|
lsrs r0, 24
|
|
subs r0, r5
|
|
strh r0, [r7, 0x30]
|
|
ldrh r0, [r7, 0x20]
|
|
lsls r0, 4
|
|
strh r0, [r7, 0x32]
|
|
ldrh r0, [r7, 0x22]
|
|
lsls r0, 4
|
|
strh r0, [r7, 0x34]
|
|
ldr r0, _080B12A0 @ =sub_80B12A4
|
|
str r0, [r7, 0x1C]
|
|
_080B128C:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1298: .4byte gBattleAnimAttacker
|
|
_080B129C: .4byte gBattleAnimTarget
|
|
_080B12A0: .4byte sub_80B12A4
|
|
thumb_func_end sub_80B11E4
|
|
|
|
thumb_func_start sub_80B12A4
|
|
sub_80B12A4: @ 80B12A4
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldrh r0, [r2, 0x2E]
|
|
ldrh r1, [r2, 0x32]
|
|
adds r0, r1
|
|
strh r0, [r2, 0x32]
|
|
ldrh r1, [r2, 0x30]
|
|
ldrh r3, [r2, 0x34]
|
|
adds r1, r3
|
|
strh r1, [r2, 0x34]
|
|
lsls r0, 16
|
|
asrs r0, 20
|
|
strh r0, [r2, 0x20]
|
|
lsls r1, 16
|
|
asrs r3, r1, 20
|
|
strh r3, [r2, 0x22]
|
|
adds r0, 0x8
|
|
lsls r0, 16
|
|
movs r1, 0x80
|
|
lsls r1, 17
|
|
cmp r0, r1
|
|
bhi _080B12DE
|
|
adds r1, r3, 0
|
|
movs r0, 0x8
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
blt _080B12DE
|
|
cmp r1, 0x78
|
|
ble _080B12E4
|
|
_080B12DE:
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_080B12E4:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B12A4
|
|
|
|
thumb_func_start sub_80B12E8
|
|
sub_80B12E8: @ 80B12E8
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _080B131C @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080B132C
|
|
ldr r4, _080B1320 @ =sBattler_AI
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
ldr r0, _080B1324 @ =gBattleAnimTarget
|
|
ldrb r4, [r0]
|
|
ldr r0, _080B1328 @ =gBattleAnimAttacker
|
|
b _080B1332
|
|
.align 2, 0
|
|
_080B131C: .4byte gBattleAnimArgs
|
|
_080B1320: .4byte sBattler_AI
|
|
_080B1324: .4byte gBattleAnimTarget
|
|
_080B1328: .4byte gBattleAnimAttacker
|
|
_080B132C:
|
|
ldr r0, _080B1364 @ =gBattleAnimAttacker
|
|
ldrb r4, [r0]
|
|
ldr r0, _080B1368 @ =gBattleAnimTarget
|
|
_080B1332:
|
|
ldrb r0, [r0]
|
|
bl sub_8076884
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r5, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x5]
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B136C
|
|
ldrb r2, [r5, 0x3]
|
|
lsls r1, r2, 26
|
|
lsrs r1, 27
|
|
movs r0, 0x8
|
|
orrs r1, r0
|
|
lsls r1, 1
|
|
subs r0, 0x47
|
|
b _080B1386
|
|
.align 2, 0
|
|
_080B1364: .4byte gBattleAnimAttacker
|
|
_080B1368: .4byte gBattleAnimTarget
|
|
_080B136C:
|
|
adds r0, r4, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B138C
|
|
ldrb r2, [r5, 0x3]
|
|
lsls r1, r2, 26
|
|
lsrs r1, 27
|
|
movs r0, 0x18
|
|
orrs r1, r0
|
|
lsls r1, 1
|
|
subs r0, 0x57
|
|
_080B1386:
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x3]
|
|
_080B138C:
|
|
movs r0, 0x10
|
|
strh r0, [r5, 0x2E]
|
|
ldrh r0, [r5, 0x20]
|
|
strh r0, [r5, 0x30]
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x32]
|
|
ldrh r0, [r5, 0x22]
|
|
strh r0, [r5, 0x34]
|
|
adds r0, r4, 0
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x36]
|
|
adds r0, r5, 0
|
|
bl obj_translate_based_on_private_1_2_3_4
|
|
ldr r1, _080B13CC @ =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, _080B13D0 @ =sub_807563C
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B13CC: .4byte DestroyAnimSprite
|
|
_080B13D0: .4byte sub_807563C
|
|
thumb_func_end sub_80B12E8
|
|
|
|
thumb_func_start sub_80B13D4
|
|
sub_80B13D4: @ 80B13D4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x36
|
|
ldrsh r0, [r4, r2]
|
|
cmp r1, r0
|
|
bne _080B13EA
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B13EA:
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B13D4
|
|
|
|
thumb_func_start sub_80B13F8
|
|
sub_80B13F8: @ 80B13F8
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080B1474 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
ldr r1, _080B1478 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x6]
|
|
strh r0, [r5, 0x30]
|
|
ldrh r0, [r1]
|
|
strh r0, [r5, 0x32]
|
|
ldrh r0, [r1, 0x2]
|
|
strh r0, [r5, 0x34]
|
|
ldrh r0, [r1, 0x4]
|
|
strh r0, [r5, 0x36]
|
|
ldr r0, _080B147C @ =gUnknown_2037F16
|
|
ldrb r6, [r0]
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B1442
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
_080B1442:
|
|
movs r0, 0x1
|
|
ands r6, r0
|
|
cmp r6, 0
|
|
beq _080B1456
|
|
ldrh r0, [r5, 0x32]
|
|
negs r0, r0
|
|
strh r0, [r5, 0x32]
|
|
ldrh r0, [r5, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x30]
|
|
_080B1456:
|
|
ldrh r1, [r5, 0x30]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r5, 0
|
|
bl StartSpriteAnim
|
|
ldrh r0, [r5, 0x32]
|
|
strh r0, [r5, 0x24]
|
|
ldrh r0, [r5, 0x34]
|
|
strh r0, [r5, 0x26]
|
|
ldr r0, _080B1480 @ =sub_80B13D4
|
|
str r0, [r5, 0x1C]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1474: .4byte gBattleAnimTarget
|
|
_080B1478: .4byte gBattleAnimArgs
|
|
_080B147C: .4byte gUnknown_2037F16
|
|
_080B1480: .4byte sub_80B13D4
|
|
thumb_func_end sub_80B13F8
|
|
|
|
thumb_func_start sub_80B1484
|
|
sub_80B1484: @ 80B1484
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _080B149C @ =gBattleAnimArgs
|
|
movs r1, 0x4
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080B14A0
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl sub_8075160
|
|
b _080B14A8
|
|
.align 2, 0
|
|
_080B149C: .4byte gBattleAnimArgs
|
|
_080B14A0:
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl sub_8075114
|
|
_080B14A8:
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B14BC
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
bl StartSpriteAnim
|
|
b _080B14D2
|
|
_080B14BC:
|
|
ldr r0, _080B14E4 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B14D2
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAnim
|
|
_080B14D2:
|
|
ldr r0, _080B14E8 @ =sub_8074F6C
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, _080B14EC @ =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B14E4: .4byte gBattleAnimAttacker
|
|
_080B14E8: .4byte sub_8074F6C
|
|
_080B14EC: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80B1484
|
|
|
|
thumb_func_start sub_80B14F0
|
|
sub_80B14F0: @ 80B14F0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B152A
|
|
ldrh r0, [r4, 0x30]
|
|
adds r0, 0x28
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x30]
|
|
movs r1, 0x30
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x2
|
|
bl Sin
|
|
strh r0, [r4, 0x24]
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x28
|
|
ble _080B152A
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B152A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B14F0
|
|
|
|
thumb_func_start sub_80B1530
|
|
sub_80B1530: @ 80B1530
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
ldr r1, _080B1560 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _080B1568
|
|
cmp r0, 0x1
|
|
bgt _080B1582
|
|
cmp r0, 0
|
|
bne _080B1582
|
|
movs r0, 0
|
|
bl sub_8075458
|
|
ldr r0, _080B1564 @ =gBattleAnimArgs
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, 0x18]
|
|
b _080B157A
|
|
.align 2, 0
|
|
_080B1560: .4byte gTasks
|
|
_080B1564: .4byte gBattleAnimArgs
|
|
_080B1568:
|
|
ldrh r0, [r4, 0x18]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x18]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bne _080B158E
|
|
_080B157A:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080B158E
|
|
_080B1582:
|
|
movs r2, 0xA0
|
|
lsls r2, 3
|
|
adds r0, r2, 0
|
|
ldrh r1, [r4, 0x1A]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x1A]
|
|
_080B158E:
|
|
movs r2, 0xB0
|
|
lsls r2, 4
|
|
adds r0, r2, 0
|
|
ldrh r1, [r4, 0x1C]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x1C]
|
|
ldr r0, _080B15BC @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B15C4
|
|
ldr r1, _080B15C0 @ =gBattle_BG3_X
|
|
ldrh r0, [r4, 0x1A]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
ldrh r2, [r1]
|
|
adds r0, r2
|
|
strh r0, [r1]
|
|
adds r7, r1, 0
|
|
b _080B15D4
|
|
.align 2, 0
|
|
_080B15BC: .4byte gBattleAnimTarget
|
|
_080B15C0: .4byte gBattle_BG3_X
|
|
_080B15C4:
|
|
ldr r2, _080B1614 @ =gBattle_BG3_X
|
|
ldrh r1, [r4, 0x1A]
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
ldrh r0, [r2]
|
|
subs r0, r1
|
|
strh r0, [r2]
|
|
adds r7, r2, 0
|
|
_080B15D4:
|
|
ldr r3, _080B1618 @ =gBattle_BG3_Y
|
|
ldrh r2, [r4, 0x1C]
|
|
lsls r0, r2, 16
|
|
asrs r0, 24
|
|
ldrh r1, [r3]
|
|
adds r0, r1
|
|
strh r0, [r3]
|
|
movs r0, 0xFF
|
|
ldrb r1, [r4, 0x1A]
|
|
movs r5, 0
|
|
strh r1, [r4, 0x1A]
|
|
ands r0, r2
|
|
strh r0, [r4, 0x1C]
|
|
ldr r0, _080B161C @ =gBattleAnimArgs
|
|
movs r2, 0xE
|
|
ldrsh r1, [r0, r2]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bne _080B160C
|
|
strh r5, [r7]
|
|
strh r5, [r3]
|
|
movs r0, 0x1
|
|
bl sub_8075458
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B160C:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1614: .4byte gBattle_BG3_X
|
|
_080B1618: .4byte gBattle_BG3_Y
|
|
_080B161C: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80B1530
|
|
|
|
thumb_func_start sub_80B1620
|
|
sub_80B1620: @ 80B1620
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080B1674 @ =gBattleAnimArgs
|
|
movs r1, 0x6
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080B1636
|
|
adds r0, r5, 0
|
|
movs r1, 0x2
|
|
bl StartSpriteAnim
|
|
_080B1636:
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldrh r0, [r4, 0x4]
|
|
strh r0, [r5, 0x2E]
|
|
ldr r4, _080B1678 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x32]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x36]
|
|
ldr r0, _080B167C @ =0x0000ffe2
|
|
strh r0, [r5, 0x38]
|
|
adds r0, r5, 0
|
|
bl sub_8075068
|
|
ldr r0, _080B1680 @ =sub_80B1684
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1674: .4byte gBattleAnimArgs
|
|
_080B1678: .4byte gBattleAnimTarget
|
|
_080B167C: .4byte 0x0000ffe2
|
|
_080B1680: .4byte sub_80B1684
|
|
thumb_func_end sub_80B1620
|
|
|
|
thumb_func_start sub_80B1684
|
|
sub_80B1684: @ 80B1684
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl AnimateBallThrow
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B1698
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B1698:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B1684
|
|
|
|
thumb_func_start sub_80B16A0
|
|
sub_80B16A0: @ 80B16A0
|
|
push {r4-r6,lr}
|
|
sub sp, 0x4
|
|
adds r4, r0, 0
|
|
ldr r5, _080B1714 @ =gBattleAnimArgs
|
|
movs r1, 0x6
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _080B16B8
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
bl StartSpriteAnim
|
|
_080B16B8:
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r0, _080B1718 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
mov r6, sp
|
|
adds r6, 0x2
|
|
movs r1, 0x1
|
|
mov r2, sp
|
|
adds r3, r6, 0
|
|
bl sub_8076D9C
|
|
ldr r0, _080B171C @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B16E6
|
|
ldrh r0, [r5, 0x8]
|
|
negs r0, r0
|
|
strh r0, [r5, 0x8]
|
|
_080B16E6:
|
|
ldrh r0, [r5, 0x4]
|
|
strh r0, [r4, 0x2E]
|
|
mov r1, sp
|
|
ldrh r0, [r5, 0x8]
|
|
ldrh r1, [r1]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r5, 0xA]
|
|
ldrh r6, [r6]
|
|
adds r0, r6
|
|
strh r0, [r4, 0x36]
|
|
ldr r0, _080B1720 @ =0x0000ffe2
|
|
strh r0, [r4, 0x38]
|
|
adds r0, r4, 0
|
|
bl sub_8075068
|
|
ldr r0, _080B1724 @ =sub_80B1728
|
|
str r0, [r4, 0x1C]
|
|
add sp, 0x4
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1714: .4byte gBattleAnimArgs
|
|
_080B1718: .4byte gBattleAnimTarget
|
|
_080B171C: .4byte gBattleAnimAttacker
|
|
_080B1720: .4byte 0x0000ffe2
|
|
_080B1724: .4byte sub_80B1728
|
|
thumb_func_end sub_80B16A0
|
|
|
|
thumb_func_start sub_80B1728
|
|
sub_80B1728: @ 80B1728
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl AnimateBallThrow
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B173C
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B173C:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B1728
|
|
|
|
thumb_func_start sub_80B1744
|
|
sub_80B1744: @ 80B1744
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080B1790 @ =gBattleAnimArgs
|
|
ldrh r0, [r5, 0x4]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r1, [r5]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
ldrh r1, [r5, 0x2]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x36]
|
|
adds r0, r4, 0
|
|
bl sub_80754B8
|
|
movs r1, 0x30
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x4
|
|
ldrsh r1, [r5, r2]
|
|
bl __divsi3
|
|
strh r0, [r4, 0x38]
|
|
movs r1, 0x32
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x4
|
|
ldrsh r1, [r5, r2]
|
|
bl __divsi3
|
|
strh r0, [r4, 0x3A]
|
|
ldr r0, _080B1794 @ =sub_80B1798
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1790: .4byte gBattleAnimArgs
|
|
_080B1794: .4byte sub_80B1798
|
|
thumb_func_end sub_80B1744
|
|
|
|
thumb_func_start sub_80B1798
|
|
sub_80B1798: @ 80B1798
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_8074D00
|
|
ldrh r0, [r4, 0x30]
|
|
ldrh r1, [r4, 0x38]
|
|
subs r0, r1
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x32]
|
|
ldrh r1, [r4, 0x3A]
|
|
subs r0, r1
|
|
strh r0, [r4, 0x32]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080B17BE
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B17BE:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B1798
|
|
|
|
thumb_func_start sub_80B17C4
|
|
sub_80B17C4: @ 80B17C4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _080B1824 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
adds r2, r4, 0
|
|
adds r2, 0x20
|
|
adds r3, r4, 0
|
|
adds r3, 0x22
|
|
movs r1, 0x1
|
|
bl sub_8076D9C
|
|
ldr r0, _080B1828 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B17F0
|
|
ldr r1, _080B182C @ =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
negs r0, r0
|
|
strh r0, [r1]
|
|
_080B17F0:
|
|
ldr r0, _080B182C @ =gBattleAnimArgs
|
|
ldrh r2, [r0]
|
|
ldrh r1, [r4, 0x20]
|
|
adds r2, r1
|
|
strh r2, [r4, 0x20]
|
|
ldrh r1, [r0, 0x2]
|
|
ldrh r3, [r4, 0x22]
|
|
adds r1, r3
|
|
strh r1, [r4, 0x22]
|
|
ldrh r3, [r0, 0x8]
|
|
strh r3, [r4, 0x2E]
|
|
ldrh r0, [r0, 0x4]
|
|
adds r2, r0
|
|
strh r2, [r4, 0x32]
|
|
adds r1, r3
|
|
strh r1, [r4, 0x36]
|
|
ldr r0, _080B1830 @ =sub_8075590
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, _080B1834 @ =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1824: .4byte gBattleAnimTarget
|
|
_080B1828: .4byte gBattleAnimAttacker
|
|
_080B182C: .4byte gBattleAnimArgs
|
|
_080B1830: .4byte sub_8075590
|
|
_080B1834: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80B17C4
|
|
|
|
thumb_func_start sub_80B1838
|
|
sub_80B1838: @ 80B1838
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080B1850 @ =gBattleAnimArgs
|
|
movs r1, 0x4
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _080B1854
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl sub_8075114
|
|
b _080B188A
|
|
.align 2, 0
|
|
_080B1850: .4byte gBattleAnimArgs
|
|
_080B1854:
|
|
ldr r0, _080B1894 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
adds r2, r4, 0
|
|
adds r2, 0x20
|
|
adds r3, r4, 0
|
|
adds r3, 0x22
|
|
movs r1, 0x1
|
|
bl sub_8076D9C
|
|
ldr r0, _080B1898 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B187A
|
|
ldrh r0, [r5]
|
|
negs r0, r0
|
|
strh r0, [r5]
|
|
_080B187A:
|
|
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]
|
|
_080B188A:
|
|
ldr r0, _080B189C @ =sub_80B18A0
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1894: .4byte gBattleAnimTarget
|
|
_080B1898: .4byte gBattleAnimAttacker
|
|
_080B189C: .4byte sub_80B18A0
|
|
thumb_func_end sub_80B1838
|
|
|
|
thumb_func_start sub_80B18A0
|
|
sub_80B18A0: @ 80B18A0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0xB
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x2E]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x4
|
|
bl Sin
|
|
strh r0, [r4, 0x24]
|
|
ldrh r0, [r4, 0x30]
|
|
adds r0, 0x30
|
|
strh r0, [r4, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
negs r0, r0
|
|
strh r0, [r4, 0x26]
|
|
adds r0, r4, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B18DC
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B18DC:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B18A0
|
|
|
|
thumb_func_start sub_80B18E4
|
|
sub_80B18E4: @ 80B18E4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0
|
|
bl sub_8075114
|
|
ldrh r0, [r4, 0x22]
|
|
adds r0, 0x14
|
|
strh r0, [r4, 0x22]
|
|
movs r0, 0xBF
|
|
strh r0, [r4, 0x30]
|
|
ldr r1, _080B1908 @ =sub_80B190C
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1908: .4byte sub_80B190C
|
|
thumb_func_end sub_80B18E4
|
|
|
|
thumb_func_start sub_80B190C
|
|
sub_80B190C: @ 80B190C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x30
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x20
|
|
bl Sin
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x30
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x8
|
|
bl Cos
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x30]
|
|
adds r0, 0x5
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x47
|
|
bne _080B1946
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B1946:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B190C
|
|
|
|
thumb_func_start sub_80B194C
|
|
sub_80B194C: @ 80B194C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _080B197C @ =gTasks
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
adds r4, r1
|
|
ldr r1, _080B1980 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x2]
|
|
strh r0, [r4, 0x8]
|
|
ldrh r0, [r1]
|
|
strh r0, [r4, 0xA]
|
|
ldr r0, _080B1984 @ =0x00002719
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0xC]
|
|
ldr r0, _080B1988 @ =sub_80B198C
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B197C: .4byte gTasks
|
|
_080B1980: .4byte gBattleAnimArgs
|
|
_080B1984: .4byte 0x00002719
|
|
_080B1988: .4byte sub_80B198C
|
|
thumb_func_end sub_80B194C
|
|
|
|
thumb_func_start sub_80B198C
|
|
sub_80B198C: @ 80B198C
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r2, _080B1A0C @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r3, r0, r2
|
|
ldrh r0, [r3, 0x1C]
|
|
adds r1, r0, 0x1
|
|
strh r1, [r3, 0x1C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r4, 0xA
|
|
ldrsh r1, [r3, r4]
|
|
adds r7, r2, 0
|
|
cmp r0, r1
|
|
bne _080B19EA
|
|
movs r0, 0
|
|
strh r0, [r3, 0x1C]
|
|
ldrb r0, [r3, 0xC]
|
|
ldr r2, _080B1A10 @ =gPlttBufferFaded
|
|
lsls r0, 4
|
|
movs r3, 0x84
|
|
lsls r3, 1
|
|
adds r1, r0, r3
|
|
lsls r1, 1
|
|
adds r1, r2
|
|
ldrh r6, [r1]
|
|
movs r4, 0x7
|
|
mov r12, r0
|
|
ldr r0, _080B1A14 @ =0x00000107
|
|
add r0, r12
|
|
lsls r0, 1
|
|
adds r3, r0, r2
|
|
_080B19D2:
|
|
ldrh r0, [r3]
|
|
strh r0, [r1]
|
|
subs r3, 0x2
|
|
subs r1, 0x2
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bgt _080B19D2
|
|
ldr r0, _080B1A18 @ =0x00000101
|
|
add r0, r12
|
|
lsls r0, 1
|
|
adds r0, r2
|
|
strh r6, [r0]
|
|
_080B19EA:
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r7
|
|
ldrh r1, [r0, 0x8]
|
|
subs r1, 0x1
|
|
strh r1, [r0, 0x8]
|
|
lsls r1, 16
|
|
cmp r1, 0
|
|
bne _080B1A04
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B1A04:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1A0C: .4byte gTasks
|
|
_080B1A10: .4byte gPlttBufferFaded
|
|
_080B1A14: .4byte 0x00000107
|
|
_080B1A18: .4byte 0x00000101
|
|
thumb_func_end sub_80B198C
|
|
|
|
thumb_func_start sub_80B1A1C
|
|
sub_80B1A1C: @ 80B1A1C
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r0, _080B1A88 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B1A3C
|
|
ldr r1, _080B1A8C @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x4]
|
|
_080B1A3C:
|
|
ldr r4, _080B1A8C @ =gBattleAnimArgs
|
|
ldrh r0, [r4, 0x8]
|
|
strh r0, [r6, 0x2E]
|
|
ldrh r0, [r6, 0x20]
|
|
strh r0, [r6, 0x30]
|
|
ldr r5, _080B1A90 @ =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x4]
|
|
adds r0, r1
|
|
strh r0, [r6, 0x32]
|
|
ldrh r0, [r6, 0x22]
|
|
strh r0, [r6, 0x34]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r4, [r4, 0x6]
|
|
adds r0, r4
|
|
strh r0, [r6, 0x36]
|
|
adds r0, r6, 0
|
|
bl obj_translate_based_on_private_1_2_3_4
|
|
ldr r0, _080B1A94 @ =sub_8074F50
|
|
str r0, [r6, 0x1C]
|
|
ldr r1, _080B1A98 @ =sub_80B1A9C
|
|
adds r0, r6, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1A88: .4byte gBattleAnimAttacker
|
|
_080B1A8C: .4byte gBattleAnimArgs
|
|
_080B1A90: .4byte gBattleAnimTarget
|
|
_080B1A94: .4byte sub_8074F50
|
|
_080B1A98: .4byte sub_80B1A9C
|
|
thumb_func_end sub_80B1A1C
|
|
|
|
thumb_func_start sub_80B1A9C
|
|
sub_80B1A9C: @ 80B1A9C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80755E0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B1AB0
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B1AB0:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B1A9C
|
|
|
|
thumb_func_start sub_80B1AB8
|
|
sub_80B1AB8: @ 80B1AB8
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080B1B54 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B1AE4
|
|
ldr r1, _080B1B58 @ =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
negs r0, r0
|
|
strh r0, [r1]
|
|
ldrh r0, [r1, 0x2]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x2]
|
|
ldrh r0, [r1, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x4]
|
|
ldrh r0, [r1, 0x6]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x6]
|
|
_080B1AE4:
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B1AFC
|
|
ldr r0, _080B1B58 @ =gBattleAnimArgs
|
|
ldrh r1, [r0, 0x2]
|
|
negs r1, r1
|
|
strh r1, [r0, 0x2]
|
|
ldrh r1, [r0, 0x6]
|
|
negs r1, r1
|
|
strh r1, [r0, 0x6]
|
|
_080B1AFC:
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
ldr r2, _080B1B58 @ =gBattleAnimArgs
|
|
ldrh r1, [r2]
|
|
ldrh r3, [r5, 0x20]
|
|
adds r1, r3
|
|
strh r1, [r5, 0x20]
|
|
lsrs r0, 24
|
|
ldrh r1, [r2, 0x2]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x22]
|
|
ldrh r0, [r2, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
movs r3, 0xC
|
|
ldrsh r0, [r2, r3]
|
|
cmp r0, 0
|
|
bne _080B1B60
|
|
ldr r4, _080B1B5C @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x32]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x36]
|
|
b _080B1B72
|
|
.align 2, 0
|
|
_080B1B54: .4byte gBattleAnimAttacker
|
|
_080B1B58: .4byte gBattleAnimArgs
|
|
_080B1B5C: .4byte gBattleAnimTarget
|
|
_080B1B60:
|
|
ldr r0, _080B1BA0 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
adds r2, r5, 0
|
|
adds r2, 0x32
|
|
adds r3, r5, 0
|
|
adds r3, 0x36
|
|
movs r1, 0x1
|
|
bl sub_8076D9C
|
|
_080B1B72:
|
|
ldr r4, _080B1BA4 @ =gBattleAnimArgs
|
|
ldrh r0, [r4, 0x4]
|
|
ldrh r1, [r5, 0x32]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x32]
|
|
ldrh r0, [r4, 0x6]
|
|
ldrh r3, [r5, 0x36]
|
|
adds r0, r3
|
|
strh r0, [r5, 0x36]
|
|
ldr r0, _080B1BA8 @ =sub_8075590
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, _080B1BAC @ =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldrb r1, [r4, 0xA]
|
|
adds r0, r5, 0
|
|
bl SeekSpriteAnim
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1BA0: .4byte gBattleAnimTarget
|
|
_080B1BA4: .4byte gBattleAnimArgs
|
|
_080B1BA8: .4byte sub_8075590
|
|
_080B1BAC: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80B1AB8
|
|
|
|
thumb_func_start sub_80B1BB0
|
|
sub_80B1BB0: @ 80B1BB0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r1, _080B1BEC @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r1, 0x6]
|
|
strh r0, [r4, 0x30]
|
|
ldr r0, _080B1BF0 @ =sub_80B1BF8
|
|
str r0, [r4, 0x1C]
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
ldr r2, _080B1BF4 @ =gSprites
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
adds r1, 0x3E
|
|
ldrb r0, [r1]
|
|
movs r2, 0x4
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1BEC: .4byte gBattleAnimArgs
|
|
_080B1BF0: .4byte sub_80B1BF8
|
|
_080B1BF4: .4byte gSprites
|
|
thumb_func_end sub_80B1BB0
|
|
|
|
thumb_func_start sub_80B1BF8
|
|
sub_80B1BF8: @ 80B1BF8
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldrh r1, [r2, 0x2E]
|
|
movs r3, 0x2E
|
|
ldrsh r0, [r2, r3]
|
|
cmp r0, 0
|
|
ble _080B1C0C
|
|
subs r0, r1, 0x1
|
|
strh r0, [r2, 0x2E]
|
|
b _080B1C1E
|
|
_080B1C0C:
|
|
ldrh r0, [r2, 0x30]
|
|
ldrh r1, [r2, 0x32]
|
|
adds r0, r1
|
|
strh r0, [r2, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
ldrh r1, [r2, 0x26]
|
|
subs r1, r0
|
|
strh r1, [r2, 0x26]
|
|
_080B1C1E:
|
|
movs r3, 0x22
|
|
ldrsh r0, [r2, r3]
|
|
movs r3, 0x26
|
|
ldrsh r1, [r2, r3]
|
|
adds r0, r1
|
|
movs r1, 0x20
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bge _080B1C36
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_080B1C36:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B1BF8
|
|
|
|
thumb_func_start sub_80B1C3C
|
|
sub_80B1C3C: @ 80B1C3C
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _080B1C64 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B1C6C
|
|
movs r0, 0x88
|
|
lsls r0, 1
|
|
strh r0, [r5, 0x20]
|
|
ldr r0, _080B1C68 @ =0x0000ffe0
|
|
strh r0, [r5, 0x22]
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
b _080B1C72
|
|
.align 2, 0
|
|
_080B1C64: .4byte gBattleAnimAttacker
|
|
_080B1C68: .4byte 0x0000ffe0
|
|
_080B1C6C:
|
|
ldr r0, _080B1CB0 @ =0x0000ffe0
|
|
strh r0, [r5, 0x20]
|
|
strh r0, [r5, 0x22]
|
|
_080B1C72:
|
|
ldr r0, _080B1CB4 @ =gBattleAnimArgs
|
|
ldrh r0, [r0]
|
|
strh r0, [r5, 0x2E]
|
|
ldrh r0, [r5, 0x20]
|
|
strh r0, [r5, 0x30]
|
|
ldr r4, _080B1CB8 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x32]
|
|
ldrh r0, [r5, 0x22]
|
|
strh r0, [r5, 0x34]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x36]
|
|
adds r0, r5, 0
|
|
bl obj_translate_based_on_private_1_2_3_4
|
|
ldr r0, _080B1CBC @ =sub_80B1CC0
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1CB0: .4byte 0x0000ffe0
|
|
_080B1CB4: .4byte gBattleAnimArgs
|
|
_080B1CB8: .4byte gBattleAnimTarget
|
|
_080B1CBC: .4byte sub_80B1CC0
|
|
thumb_func_end sub_80B1C3C
|
|
|
|
thumb_func_start sub_80B1CC0
|
|
sub_80B1CC0: @ 80B1CC0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
adds r0, r4, 0
|
|
bl sub_80755E0
|
|
ldrh r1, [r4, 0x34]
|
|
lsrs r0, r1, 8
|
|
cmp r0, 0xC8
|
|
bls _080B1CE8
|
|
ldrh r0, [r4, 0x24]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x20]
|
|
movs r0, 0
|
|
strh r0, [r4, 0x24]
|
|
movs r0, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x34]
|
|
_080B1CE8:
|
|
movs r1, 0x20
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x24
|
|
ldrsh r1, [r4, r2]
|
|
adds r0, r1
|
|
adds r0, 0x20
|
|
movs r1, 0x98
|
|
lsls r1, 1
|
|
cmp r0, r1
|
|
bhi _080B1D0A
|
|
movs r1, 0x22
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x26
|
|
ldrsh r1, [r4, r2]
|
|
adds r0, r1
|
|
cmp r0, 0xA0
|
|
ble _080B1D30
|
|
_080B1D0A:
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
ldr r2, _080B1D38 @ =gSprites
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
adds r1, 0x3E
|
|
ldrb r2, [r1]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B1D30:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1D38: .4byte gSprites
|
|
thumb_func_end sub_80B1CC0
|
|
|
|
thumb_func_start sub_80B1D3C
|
|
sub_80B1D3C: @ 80B1D3C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x2E]
|
|
subs r1, r0, 0x1
|
|
strh r1, [r4, 0x2E]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bgt _080B1D7C
|
|
ldrb r0, [r4, 0x1]
|
|
lsls r0, 30
|
|
lsrs r0, 30
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B1D6E
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
bl FreeOamMatrix
|
|
ldrb r1, [r4, 0x1]
|
|
movs r0, 0x4
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r4, 0x1]
|
|
_080B1D6E:
|
|
adds r0, r4, 0
|
|
bl DestroySprite
|
|
ldr r1, _080B1D84 @ =gUnknown_2037EE2
|
|
ldrb r0, [r1]
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
_080B1D7C:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1D84: .4byte gUnknown_2037EE2
|
|
thumb_func_end sub_80B1D3C
|
|
|
|
thumb_func_start sub_80B1D88
|
|
sub_80B1D88: @ 80B1D88
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r7, r0, 0
|
|
adds r5, r7, 0
|
|
adds r5, 0x2E
|
|
ldr r0, _080B1DA8 @ =gBattleAnimArgs
|
|
ldrh r1, [r0, 0xE]
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B1DB0
|
|
ldr r0, _080B1DAC @ =gBattleAnimAttacker
|
|
b _080B1DB2
|
|
.align 2, 0
|
|
_080B1DA8: .4byte gBattleAnimArgs
|
|
_080B1DAC: .4byte gBattleAnimAttacker
|
|
_080B1DB0:
|
|
ldr r0, _080B1E5C @ =gBattleAnimTarget
|
|
_080B1DB2:
|
|
ldrb r6, [r0]
|
|
adds r0, r6, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B1DC8
|
|
ldr r1, _080B1E60 @ =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
negs r0, r0
|
|
strh r0, [r1]
|
|
_080B1DC8:
|
|
adds r0, r6, 0
|
|
movs r1, 0
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
ldr r4, _080B1E60 @ =gBattleAnimArgs
|
|
lsrs r0, 24
|
|
ldrh r1, [r4]
|
|
adds r0, r1
|
|
strh r0, [r7, 0x20]
|
|
adds r0, r6, 0
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
ldrh r1, [r4, 0x2]
|
|
lsrs r0, 24
|
|
adds r1, r0, r1
|
|
strh r1, [r7, 0x22]
|
|
lsls r1, 8
|
|
strh r1, [r5, 0x8]
|
|
ldrh r1, [r4, 0xC]
|
|
adds r0, r1
|
|
lsls r0, 1
|
|
ldrh r2, [r5, 0xE]
|
|
movs r1, 0x1
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strh r1, [r5, 0xE]
|
|
ldrb r0, [r5]
|
|
movs r2, 0x4
|
|
mov r8, r2
|
|
mov r1, r8
|
|
orrs r0, r1
|
|
strb r0, [r5]
|
|
ldrh r0, [r4, 0x4]
|
|
ldrb r1, [r4, 0x4]
|
|
strh r1, [r5, 0x2]
|
|
lsls r0, 16
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0xA]
|
|
ldrh r0, [r4, 0x6]
|
|
strh r0, [r5, 0x4]
|
|
ldrh r0, [r4, 0x8]
|
|
strh r0, [r5, 0x6]
|
|
ldrh r0, [r4, 0xA]
|
|
strh r0, [r5, 0xC]
|
|
subs r1, 0x40
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
cmp r1, 0x7F
|
|
bhi _080B1EBE
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B1E64
|
|
adds r0, r6, 0
|
|
bl sub_8076884
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x1
|
|
movs r1, 0x3
|
|
ands r0, r1
|
|
lsls r0, 2
|
|
ldrb r2, [r7, 0x5]
|
|
movs r1, 0xD
|
|
negs r1, r1
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r7, 0x5]
|
|
b _080B1E7C
|
|
.align 2, 0
|
|
_080B1E5C: .4byte gBattleAnimTarget
|
|
_080B1E60: .4byte gBattleAnimArgs
|
|
_080B1E64:
|
|
adds r0, r6, 0
|
|
bl sub_8076884
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r7, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r7, 0x5]
|
|
_080B1E7C:
|
|
ldrb r1, [r5, 0xE]
|
|
movs r4, 0x2
|
|
negs r4, r4
|
|
adds r0, r4, 0
|
|
ands r0, r1
|
|
strb r0, [r5, 0xE]
|
|
movs r2, 0x4
|
|
ldrsh r0, [r5, r2]
|
|
movs r1, 0x80
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B1F1E
|
|
adds r3, r7, 0
|
|
adds r3, 0x3F
|
|
ldrb r2, [r3]
|
|
lsls r0, r2, 31
|
|
lsrs r0, 31
|
|
movs r1, 0x1
|
|
eors r1, r0
|
|
adds r0, r4, 0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
lsls r0, 31
|
|
lsrs r0, 31
|
|
adds r1, r7, 0
|
|
adds r1, 0x2A
|
|
strb r0, [r1]
|
|
ldrb r0, [r3]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
b _080B1F16
|
|
_080B1EBE:
|
|
adds r0, r6, 0
|
|
bl sub_8076884
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r7, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r7, 0x5]
|
|
ldrb r0, [r5, 0xE]
|
|
movs r4, 0x1
|
|
orrs r0, r4
|
|
strb r0, [r5, 0xE]
|
|
movs r1, 0x4
|
|
ldrsh r0, [r5, r1]
|
|
movs r1, 0x80
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B1F1E
|
|
adds r3, r7, 0
|
|
adds r3, 0x3F
|
|
ldrb r2, [r3]
|
|
lsls r1, r2, 31
|
|
lsrs r1, 31
|
|
movs r0, 0x1
|
|
eors r1, r0
|
|
ands r1, r4
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
lsls r0, 31
|
|
lsrs r0, 31
|
|
adds r1, r7, 0
|
|
adds r1, 0x2A
|
|
strb r0, [r1]
|
|
ldrb r0, [r3]
|
|
mov r2, r8
|
|
orrs r0, r2
|
|
_080B1F16:
|
|
movs r1, 0x11
|
|
negs r1, r1
|
|
ands r0, r1
|
|
strb r0, [r3]
|
|
_080B1F1E:
|
|
ldrh r1, [r5, 0x2]
|
|
lsrs r1, 6
|
|
lsls r1, 4
|
|
ldrb r2, [r5]
|
|
movs r0, 0xF
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5]
|
|
ldr r3, _080B1F88 @ =gSineTable
|
|
ldrh r0, [r5, 0x2]
|
|
lsls r0, 1
|
|
adds r0, r3
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
ldrb r0, [r5, 0xC]
|
|
muls r0, r1
|
|
asrs r0, 8
|
|
strh r0, [r7, 0x24]
|
|
ldrb r2, [r7, 0x3]
|
|
lsls r2, 26
|
|
lsrs r2, 27
|
|
movs r1, 0x24
|
|
ldrsh r0, [r7, r1]
|
|
negs r0, r0
|
|
asrs r0, 1
|
|
ldrb r5, [r5, 0xA]
|
|
adds r0, r5
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 1
|
|
adds r1, r3
|
|
ldrh r4, [r1]
|
|
ldr r1, _080B1F8C @ =gOamMatrices
|
|
lsls r2, 3
|
|
adds r2, r1
|
|
adds r0, 0x40
|
|
lsls r0, 1
|
|
adds r0, r3
|
|
ldrh r0, [r0]
|
|
strh r0, [r2, 0x6]
|
|
strh r0, [r2]
|
|
strh r4, [r2, 0x2]
|
|
lsls r0, r4, 16
|
|
asrs r0, 16
|
|
negs r0, r0
|
|
strh r0, [r2, 0x4]
|
|
ldr r0, _080B1F90 @ =sub_80B1F94
|
|
str r0, [r7, 0x1C]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B1F88: .4byte gSineTable
|
|
_080B1F8C: .4byte gOamMatrices
|
|
_080B1F90: .4byte sub_80B1F94
|
|
thumb_func_end sub_80B1D88
|
|
|
|
thumb_func_start sub_80B1F94
|
|
sub_80B1F94: @ 80B1F94
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
adds r5, r0, 0
|
|
movs r6, 0
|
|
adds r4, r5, 0
|
|
adds r4, 0x2E
|
|
ldrb r2, [r4]
|
|
movs r7, 0x1
|
|
movs r0, 0x1
|
|
mov r9, r0
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _080B1FCE
|
|
ldrb r0, [r4, 0x1]
|
|
adds r1, r0, 0
|
|
adds r1, 0xFF
|
|
strb r1, [r4, 0x1]
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B1FC2
|
|
b _080B24AA
|
|
_080B1FC2:
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r4]
|
|
strb r6, [r4, 0x1]
|
|
b _080B24AA
|
|
_080B1FCE:
|
|
ldrh r0, [r4, 0x2]
|
|
lsrs r1, r0, 6
|
|
mov r12, r0
|
|
cmp r1, 0x1
|
|
bne _080B1FDA
|
|
b _080B20FE
|
|
_080B1FDA:
|
|
cmp r1, 0x1
|
|
bgt _080B1FE4
|
|
cmp r1, 0
|
|
beq _080B1FF2
|
|
b _080B23F0
|
|
_080B1FE4:
|
|
cmp r1, 0x2
|
|
bne _080B1FEA
|
|
b _080B21F2
|
|
_080B1FEA:
|
|
cmp r1, 0x3
|
|
bne _080B1FF0
|
|
b _080B22E6
|
|
_080B1FF0:
|
|
b _080B23F0
|
|
_080B1FF2:
|
|
lsls r1, r2, 24
|
|
lsrs r0, r1, 28
|
|
cmp r0, 0x1
|
|
bne _080B2006
|
|
movs r0, 0x8
|
|
orrs r0, r2
|
|
orrs r0, r7
|
|
strb r0, [r4]
|
|
strb r6, [r4, 0x1]
|
|
b _080B20F4
|
|
_080B2006:
|
|
lsrs r0, r1, 28
|
|
cmp r0, 0x3
|
|
bne _080B2028
|
|
lsls r0, r2, 30
|
|
lsrs r0, 31
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
ands r0, r7
|
|
lsls r0, 1
|
|
movs r1, 0x3
|
|
negs r1, r1
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
orrs r1, r7
|
|
strb r1, [r4]
|
|
strb r6, [r4, 0x1]
|
|
b _080B20F4
|
|
_080B2028:
|
|
movs r0, 0x8
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _080B20F4
|
|
adds r3, r5, 0
|
|
adds r3, 0x3F
|
|
ldrb r2, [r3]
|
|
lsls r1, r2, 31
|
|
lsrs r1, 31
|
|
movs r6, 0x1
|
|
eors r1, r6
|
|
ands r1, r7
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
mov r8, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
lsls r0, 31
|
|
lsrs r0, 31
|
|
adds r1, r5, 0
|
|
adds r1, 0x2A
|
|
strb r0, [r1]
|
|
ldrb r0, [r3]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
movs r1, 0x11
|
|
negs r1, r1
|
|
ands r0, r1
|
|
strb r0, [r3]
|
|
ldrb r1, [r4]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B20E6
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B20B6
|
|
ldrb r1, [r4, 0xE]
|
|
mov r0, r9
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B209C
|
|
ldrb r2, [r5, 0x5]
|
|
lsls r1, r2, 28
|
|
lsrs r1, 30
|
|
subs r1, 0x1
|
|
movs r0, 0x3
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x5]
|
|
b _080B20D4
|
|
_080B209C:
|
|
ldrb r2, [r5, 0x5]
|
|
lsls r1, r2, 28
|
|
lsrs r1, 30
|
|
adds r1, 0x1
|
|
movs r0, 0x3
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x5]
|
|
b _080B20D4
|
|
_080B20B6:
|
|
ldrb r1, [r4, 0xE]
|
|
mov r0, r9
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B20CA
|
|
adds r1, r5, 0
|
|
adds r1, 0x43
|
|
ldrb r0, [r1]
|
|
subs r0, 0xC
|
|
b _080B20D2
|
|
_080B20CA:
|
|
adds r1, r5, 0
|
|
adds r1, 0x43
|
|
ldrb r0, [r1]
|
|
adds r0, 0xC
|
|
_080B20D2:
|
|
strb r0, [r1]
|
|
_080B20D4:
|
|
ldrb r2, [r4, 0xE]
|
|
lsls r0, r2, 31
|
|
lsrs r0, 31
|
|
eors r0, r6
|
|
ands r0, r7
|
|
mov r1, r8
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r4, 0xE]
|
|
_080B20E6:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x9
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r4]
|
|
ldrh r1, [r4, 0x2]
|
|
mov r12, r1
|
|
_080B20F4:
|
|
ldrb r1, [r4]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
strb r0, [r4]
|
|
b _080B23F0
|
|
_080B20FE:
|
|
lsls r1, r2, 24
|
|
lsrs r0, r1, 28
|
|
cmp r0, 0
|
|
bne _080B210C
|
|
movs r0, 0x8
|
|
orrs r0, r2
|
|
b _080B2114
|
|
_080B210C:
|
|
lsrs r0, r1, 28
|
|
cmp r0, 0x2
|
|
bne _080B211C
|
|
adds r0, r2, 0
|
|
_080B2114:
|
|
orrs r0, r7
|
|
strb r0, [r4]
|
|
strb r6, [r4, 0x1]
|
|
b _080B21E8
|
|
_080B211C:
|
|
movs r0, 0x8
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _080B21E8
|
|
adds r3, r5, 0
|
|
adds r3, 0x3F
|
|
ldrb r2, [r3]
|
|
lsls r1, r2, 31
|
|
lsrs r1, 31
|
|
movs r6, 0x1
|
|
eors r1, r6
|
|
ands r1, r7
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
mov r8, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
lsls r0, 31
|
|
lsrs r0, 31
|
|
adds r1, r5, 0
|
|
adds r1, 0x2A
|
|
strb r0, [r1]
|
|
ldrb r0, [r3]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
movs r1, 0x11
|
|
negs r1, r1
|
|
ands r0, r1
|
|
strb r0, [r3]
|
|
ldrb r1, [r4]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B21DA
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B21AA
|
|
ldrb r1, [r4, 0xE]
|
|
mov r0, r9
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B2190
|
|
ldrb r2, [r5, 0x5]
|
|
lsls r1, r2, 28
|
|
lsrs r1, 30
|
|
subs r1, 0x1
|
|
movs r0, 0x3
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x5]
|
|
b _080B21C8
|
|
_080B2190:
|
|
ldrb r2, [r5, 0x5]
|
|
lsls r1, r2, 28
|
|
lsrs r1, 30
|
|
adds r1, 0x1
|
|
movs r0, 0x3
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x5]
|
|
b _080B21C8
|
|
_080B21AA:
|
|
ldrb r1, [r4, 0xE]
|
|
mov r0, r9
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B21BE
|
|
adds r1, r5, 0
|
|
adds r1, 0x43
|
|
ldrb r0, [r1]
|
|
subs r0, 0xC
|
|
b _080B21C6
|
|
_080B21BE:
|
|
adds r1, r5, 0
|
|
adds r1, 0x43
|
|
ldrb r0, [r1]
|
|
adds r0, 0xC
|
|
_080B21C6:
|
|
strb r0, [r1]
|
|
_080B21C8:
|
|
ldrb r2, [r4, 0xE]
|
|
lsls r0, r2, 31
|
|
lsrs r0, 31
|
|
eors r0, r6
|
|
ands r0, r7
|
|
mov r1, r8
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r4, 0xE]
|
|
_080B21DA:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x9
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r4]
|
|
ldrh r1, [r4, 0x2]
|
|
mov r12, r1
|
|
_080B21E8:
|
|
ldrb r0, [r4]
|
|
movs r1, 0xF
|
|
ands r1, r0
|
|
movs r0, 0x10
|
|
b _080B23EC
|
|
_080B21F2:
|
|
lsls r1, r2, 24
|
|
lsrs r0, r1, 28
|
|
cmp r0, 0x3
|
|
bne _080B2200
|
|
movs r0, 0x8
|
|
orrs r0, r2
|
|
b _080B2208
|
|
_080B2200:
|
|
lsrs r0, r1, 28
|
|
cmp r0, 0x1
|
|
bne _080B2210
|
|
adds r0, r2, 0
|
|
_080B2208:
|
|
orrs r0, r7
|
|
strb r0, [r4]
|
|
strb r6, [r4, 0x1]
|
|
b _080B22DC
|
|
_080B2210:
|
|
movs r0, 0x8
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _080B22DC
|
|
adds r3, r5, 0
|
|
adds r3, 0x3F
|
|
ldrb r2, [r3]
|
|
lsls r1, r2, 31
|
|
lsrs r1, 31
|
|
movs r6, 0x1
|
|
eors r1, r6
|
|
ands r1, r7
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
mov r8, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
lsls r0, 31
|
|
lsrs r0, 31
|
|
adds r1, r5, 0
|
|
adds r1, 0x2A
|
|
strb r0, [r1]
|
|
ldrb r0, [r3]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
movs r1, 0x11
|
|
negs r1, r1
|
|
ands r0, r1
|
|
strb r0, [r3]
|
|
ldrb r1, [r4]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B22CE
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B229E
|
|
ldrb r1, [r4, 0xE]
|
|
mov r0, r9
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B2284
|
|
ldrb r2, [r5, 0x5]
|
|
lsls r1, r2, 28
|
|
lsrs r1, 30
|
|
subs r1, 0x1
|
|
movs r0, 0x3
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x5]
|
|
b _080B22BC
|
|
_080B2284:
|
|
ldrb r2, [r5, 0x5]
|
|
lsls r1, r2, 28
|
|
lsrs r1, 30
|
|
adds r1, 0x1
|
|
movs r0, 0x3
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x5]
|
|
b _080B22BC
|
|
_080B229E:
|
|
ldrb r1, [r4, 0xE]
|
|
mov r0, r9
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B22B2
|
|
adds r1, r5, 0
|
|
adds r1, 0x43
|
|
ldrb r0, [r1]
|
|
subs r0, 0xC
|
|
b _080B22BA
|
|
_080B22B2:
|
|
adds r1, r5, 0
|
|
adds r1, 0x43
|
|
ldrb r0, [r1]
|
|
adds r0, 0xC
|
|
_080B22BA:
|
|
strb r0, [r1]
|
|
_080B22BC:
|
|
ldrb r2, [r4, 0xE]
|
|
lsls r0, r2, 31
|
|
lsrs r0, 31
|
|
eors r0, r6
|
|
ands r0, r7
|
|
mov r1, r8
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r4, 0xE]
|
|
_080B22CE:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x9
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r4]
|
|
ldrh r1, [r4, 0x2]
|
|
mov r12, r1
|
|
_080B22DC:
|
|
ldrb r0, [r4]
|
|
movs r1, 0xF
|
|
ands r1, r0
|
|
movs r0, 0x20
|
|
b _080B23EC
|
|
_080B22E6:
|
|
lsls r1, r2, 24
|
|
lsrs r0, r1, 28
|
|
cmp r0, 0x2
|
|
bne _080B22F6
|
|
movs r0, 0x8
|
|
orrs r0, r2
|
|
strb r0, [r4]
|
|
b _080B23E4
|
|
_080B22F6:
|
|
lsrs r0, r1, 28
|
|
cmp r0, 0
|
|
bne _080B2318
|
|
lsls r0, r2, 30
|
|
lsrs r0, 31
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
ands r0, r7
|
|
lsls r0, 1
|
|
movs r1, 0x3
|
|
negs r1, r1
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
orrs r1, r7
|
|
strb r1, [r4]
|
|
strb r6, [r4, 0x1]
|
|
b _080B23E4
|
|
_080B2318:
|
|
movs r0, 0x8
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _080B23E4
|
|
adds r3, r5, 0
|
|
adds r3, 0x3F
|
|
ldrb r2, [r3]
|
|
lsls r1, r2, 31
|
|
lsrs r1, 31
|
|
movs r6, 0x1
|
|
eors r1, r6
|
|
ands r1, r7
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
mov r8, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
lsls r0, 31
|
|
lsrs r0, 31
|
|
adds r1, r5, 0
|
|
adds r1, 0x2A
|
|
strb r0, [r1]
|
|
ldrb r0, [r3]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
movs r1, 0x11
|
|
negs r1, r1
|
|
ands r0, r1
|
|
strb r0, [r3]
|
|
ldrb r1, [r4]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B23D6
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B23A6
|
|
ldrb r1, [r4, 0xE]
|
|
mov r0, r9
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B238C
|
|
ldrb r2, [r5, 0x5]
|
|
lsls r1, r2, 28
|
|
lsrs r1, 30
|
|
subs r1, 0x1
|
|
movs r0, 0x3
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x5]
|
|
b _080B23C4
|
|
_080B238C:
|
|
ldrb r2, [r5, 0x5]
|
|
lsls r1, r2, 28
|
|
lsrs r1, 30
|
|
adds r1, 0x1
|
|
movs r0, 0x3
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x5]
|
|
b _080B23C4
|
|
_080B23A6:
|
|
ldrb r1, [r4, 0xE]
|
|
mov r0, r9
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B23BA
|
|
adds r1, r5, 0
|
|
adds r1, 0x43
|
|
ldrb r0, [r1]
|
|
subs r0, 0xC
|
|
b _080B23C2
|
|
_080B23BA:
|
|
adds r1, r5, 0
|
|
adds r1, 0x43
|
|
ldrb r0, [r1]
|
|
adds r0, 0xC
|
|
_080B23C2:
|
|
strb r0, [r1]
|
|
_080B23C4:
|
|
ldrb r2, [r4, 0xE]
|
|
lsls r0, r2, 31
|
|
lsrs r0, 31
|
|
eors r0, r6
|
|
ands r0, r7
|
|
mov r1, r8
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r4, 0xE]
|
|
_080B23D6:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x9
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r4]
|
|
ldrh r1, [r4, 0x2]
|
|
mov r12, r1
|
|
_080B23E4:
|
|
ldrb r0, [r4]
|
|
movs r1, 0xF
|
|
ands r1, r0
|
|
movs r0, 0x30
|
|
_080B23EC:
|
|
orrs r1, r0
|
|
strb r1, [r4]
|
|
_080B23F0:
|
|
ldrb r1, [r4]
|
|
lsls r1, 30
|
|
lsrs r1, 31
|
|
adds r0, r4, 0
|
|
adds r0, 0xC
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
ldr r3, _080B2478 @ =gSineTable
|
|
mov r2, r12
|
|
lsls r0, r2, 1
|
|
adds r0, r3
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
muls r0, r1
|
|
asrs r0, 8
|
|
strh r0, [r5, 0x24]
|
|
ldrb r2, [r5, 0x3]
|
|
lsls r2, 26
|
|
lsrs r2, 27
|
|
movs r1, 0x24
|
|
ldrsh r0, [r5, r1]
|
|
negs r0, r0
|
|
asrs r0, 1
|
|
ldrb r1, [r4, 0xA]
|
|
adds r0, r1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 1
|
|
adds r1, r3
|
|
ldrh r6, [r1]
|
|
ldr r1, _080B247C @ =gOamMatrices
|
|
lsls r2, 3
|
|
adds r2, r1
|
|
adds r0, 0x40
|
|
lsls r0, 1
|
|
adds r0, r3
|
|
ldrh r0, [r0]
|
|
strh r0, [r2, 0x6]
|
|
strh r0, [r2]
|
|
strh r6, [r2, 0x2]
|
|
lsls r0, r6, 16
|
|
asrs r0, 16
|
|
negs r0, r0
|
|
strh r0, [r2, 0x4]
|
|
ldrh r0, [r4, 0x6]
|
|
ldrh r2, [r4, 0x8]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x8]
|
|
lsls r0, 16
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
movs r1, 0x4
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x80
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B2480
|
|
ldrh r0, [r4, 0x4]
|
|
subs r1, 0x1
|
|
ands r1, r0
|
|
ldrh r0, [r4, 0x2]
|
|
subs r0, r1
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x2]
|
|
b _080B2490
|
|
.align 2, 0
|
|
_080B2478: .4byte gSineTable
|
|
_080B247C: .4byte gOamMatrices
|
|
_080B2480:
|
|
ldrh r0, [r4, 0x4]
|
|
ldr r1, _080B24B8 @ =0x00007fff
|
|
ands r1, r0
|
|
ldrh r2, [r4, 0x2]
|
|
adds r1, r2
|
|
movs r0, 0xFF
|
|
ands r1, r0
|
|
strh r1, [r4, 0x2]
|
|
_080B2490:
|
|
movs r0, 0x22
|
|
ldrsh r1, [r5, r0]
|
|
movs r2, 0x26
|
|
ldrsh r0, [r5, r2]
|
|
adds r1, r0
|
|
ldrh r0, [r4, 0xE]
|
|
lsrs r0, 1
|
|
cmp r1, r0
|
|
blt _080B24AA
|
|
movs r0, 0
|
|
strh r0, [r5, 0x2E]
|
|
ldr r0, _080B24BC @ =sub_80B1D3C
|
|
str r0, [r5, 0x1C]
|
|
_080B24AA:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B24B8: .4byte 0x00007fff
|
|
_080B24BC: .4byte sub_80B1D3C
|
|
thumb_func_end sub_80B1F94
|
|
|
|
thumb_func_start sub_80B24C0
|
|
sub_80B24C0: @ 80B24C0
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _080B2508 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl sub_8076884
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r4, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x5]
|
|
ldr r5, _080B250C @ =gBattleAnimAttacker
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x20]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x22]
|
|
ldr r0, _080B2510 @ =sub_8075DF4
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B2508: .4byte gBattleAnimTarget
|
|
_080B250C: .4byte gBattleAnimAttacker
|
|
_080B2510: .4byte sub_8075DF4
|
|
thumb_func_end sub_80B24C0
|
|
|
|
thumb_func_start sub_80B2514
|
|
sub_80B2514: @ 80B2514
|
|
push {r4-r7,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080B2554 @ =gBattleAnimArgs
|
|
ldrh r0, [r5]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r5, 0x2]
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r5, 0x4]
|
|
strh r0, [r4, 0x34]
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B25C4
|
|
ldr r0, _080B2558 @ =gUnknown_2023BD6
|
|
ldr r1, _080B255C @ =gBattleAnimTarget
|
|
ldrb r2, [r1]
|
|
adds r0, r2, r0
|
|
ldrb r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B2560
|
|
adds r0, r2, 0
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r5, [r5, 0x6]
|
|
adds r0, r5
|
|
b _080B256E
|
|
.align 2, 0
|
|
_080B2554: .4byte gBattleAnimArgs
|
|
_080B2558: .4byte gUnknown_2023BD6
|
|
_080B255C: .4byte gBattleAnimTarget
|
|
_080B2560:
|
|
adds r0, r2, 0
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x28
|
|
_080B256E:
|
|
strh r0, [r4, 0x3C]
|
|
ldr r0, _080B259C @ =gBattleAnimArgs
|
|
movs r1, 0x8
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
beq _080B25A4
|
|
ldr r0, _080B25A0 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl sub_8076884
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x1
|
|
movs r1, 0x3
|
|
ands r0, r1
|
|
lsls r0, 2
|
|
ldrb r2, [r4, 0x5]
|
|
movs r1, 0xD
|
|
negs r1, r1
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r4, 0x5]
|
|
b _080B25D8
|
|
.align 2, 0
|
|
_080B259C: .4byte gBattleAnimArgs
|
|
_080B25A0: .4byte gBattleAnimTarget
|
|
_080B25A4:
|
|
ldr r0, _080B25C0 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl sub_8076884
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r4, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x5]
|
|
b _080B25D8
|
|
.align 2, 0
|
|
_080B25C0: .4byte gBattleAnimTarget
|
|
_080B25C4:
|
|
ldr r0, _080B267C @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r5, [r5, 0x6]
|
|
adds r0, r5
|
|
strh r0, [r4, 0x3C]
|
|
_080B25D8:
|
|
ldr r5, _080B2680 @ =gSineTable
|
|
ldrh r3, [r4, 0x30]
|
|
movs r1, 0xFF
|
|
ands r1, r3
|
|
lsls r0, r1, 1
|
|
adds r0, r5
|
|
ldrh r0, [r0]
|
|
movs r2, 0
|
|
strh r0, [r4, 0x36]
|
|
adds r1, 0x40
|
|
lsls r1, 1
|
|
adds r1, r5
|
|
ldrh r0, [r1]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x38]
|
|
strh r2, [r4, 0x3A]
|
|
strh r2, [r4, 0x26]
|
|
strh r2, [r4, 0x24]
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 26
|
|
lsrs r6, r0, 27
|
|
lsls r3, 16
|
|
lsrs r3, 24
|
|
strh r3, [r4, 0x30]
|
|
bl Random
|
|
lsls r0, 16
|
|
asrs r7, r0, 16
|
|
movs r0, 0x80
|
|
lsls r0, 8
|
|
ands r0, r7
|
|
cmp r0, 0
|
|
beq _080B2622
|
|
ldrh r1, [r4, 0x30]
|
|
movs r0, 0xFF
|
|
subs r0, r1
|
|
strh r0, [r4, 0x30]
|
|
_080B2622:
|
|
movs r0, 0x30
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r5
|
|
ldrh r0, [r0]
|
|
ldr r3, _080B2684 @ =gOamMatrices
|
|
lsls r2, r6, 3
|
|
adds r2, r3
|
|
adds r1, 0x40
|
|
lsls r1, 1
|
|
adds r1, r5
|
|
ldrh r1, [r1]
|
|
strh r1, [r2, 0x6]
|
|
strh r1, [r2]
|
|
strh r0, [r2, 0x2]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
negs r0, r0
|
|
strh r0, [r2, 0x4]
|
|
adds r3, r4, 0
|
|
adds r3, 0x3F
|
|
ldrb r0, [r3]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
movs r1, 0x11
|
|
negs r1, r1
|
|
ands r0, r1
|
|
strb r0, [r3]
|
|
movs r0, 0x1
|
|
ands r0, r7
|
|
cmp r0, 0
|
|
beq _080B2672
|
|
adds r2, r4, 0
|
|
adds r2, 0x2A
|
|
movs r1, 0x1
|
|
movs r0, 0x1
|
|
strb r0, [r2]
|
|
ldrb r0, [r3]
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
_080B2672:
|
|
ldr r0, _080B2688 @ =sub_80B268C
|
|
str r0, [r4, 0x1C]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B267C: .4byte gBattleAnimTarget
|
|
_080B2680: .4byte gSineTable
|
|
_080B2684: .4byte gOamMatrices
|
|
_080B2688: .4byte sub_80B268C
|
|
thumb_func_end sub_80B2514
|
|
|
|
thumb_func_start sub_80B268C
|
|
sub_80B268C: @ 80B268C
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x10
|
|
adds r4, r0, 0
|
|
adds r5, r4, 0
|
|
adds r5, 0x2E
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
movs r1, 0
|
|
mov r8, r1
|
|
movs r7, 0
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
ble _080B2770
|
|
movs r2, 0x36
|
|
ldrsh r1, [r4, r2]
|
|
movs r2, 0x3A
|
|
ldrsh r0, [r4, r2]
|
|
muls r0, r1
|
|
asrs r6, r0, 8
|
|
strh r6, [r4, 0x24]
|
|
movs r0, 0x38
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x3A
|
|
ldrsh r0, [r4, r2]
|
|
muls r0, r1
|
|
asrs r3, r0, 8
|
|
strh r3, [r4, 0x26]
|
|
ldrh r2, [r4, 0x34]
|
|
movs r1, 0xFF
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
ldrh r2, [r4, 0x3A]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x3A]
|
|
ldrh r2, [r4, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ands r1, r2
|
|
cmp r0, r1
|
|
blt _080B2770
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, r6
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r4, 0x22]
|
|
adds r0, r3
|
|
strh r0, [r4, 0x22]
|
|
strh r7, [r4, 0x24]
|
|
strh r7, [r4, 0x26]
|
|
mov r0, sp
|
|
adds r1, r5, 0
|
|
movs r2, 0x10
|
|
bl memcpy
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
movs r2, 0x10
|
|
bl memset
|
|
ldrh r0, [r4, 0x22]
|
|
lsls r0, 8
|
|
strh r0, [r5, 0x8]
|
|
mov r0, sp
|
|
ldrh r0, [r0, 0x6]
|
|
lsrs r1, r0, 8
|
|
strh r1, [r5, 0x6]
|
|
strh r7, [r5, 0x2]
|
|
mov r0, sp
|
|
ldrh r0, [r0, 0x2]
|
|
strh r0, [r5, 0xA]
|
|
adds r0, r4, 0
|
|
adds r0, 0x2A
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _080B2740
|
|
movs r0, 0x8
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080B2738
|
|
ldr r0, _080B2734 @ =0x00008001
|
|
b _080B274E
|
|
.align 2, 0
|
|
_080B2734: .4byte 0x00008001
|
|
_080B2738:
|
|
ldr r0, _080B273C @ =0x00008002
|
|
b _080B274E
|
|
.align 2, 0
|
|
_080B273C: .4byte 0x00008002
|
|
_080B2740:
|
|
movs r0, 0x8
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080B274C
|
|
movs r0, 0x1
|
|
b _080B274E
|
|
_080B274C:
|
|
movs r0, 0x2
|
|
_080B274E:
|
|
strh r0, [r5, 0x4]
|
|
mov r0, sp
|
|
ldrh r0, [r0, 0x4]
|
|
lsrs r0, 8
|
|
strb r0, [r5, 0xC]
|
|
subs r0, 0x2
|
|
strb r0, [r5, 0xD]
|
|
mov r0, sp
|
|
ldrh r1, [r0, 0xE]
|
|
lsls r1, 1
|
|
ldrh r2, [r5, 0xE]
|
|
movs r0, 0x1
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r5, 0xE]
|
|
ldr r0, _080B277C @ =sub_80B1F94
|
|
str r0, [r4, 0x1C]
|
|
_080B2770:
|
|
add sp, 0x10
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B277C: .4byte sub_80B1F94
|
|
thumb_func_end sub_80B268C
|
|
|
|
thumb_func_start sub_80B2780
|
|
sub_80B2780: @ 80B2780
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _080B2798 @ =gBattleAnimArgs
|
|
movs r1, 0x4
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080B279C
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl sub_8075160
|
|
b _080B27A4
|
|
.align 2, 0
|
|
_080B2798: .4byte gBattleAnimArgs
|
|
_080B279C:
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl sub_8075114
|
|
_080B27A4:
|
|
ldr r4, _080B280C @ =gBattleAnimArgs
|
|
movs r2, 0x4
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bne _080B27BC
|
|
ldr r0, _080B2810 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B27D2
|
|
_080B27BC:
|
|
movs r1, 0x4
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
bne _080B27D8
|
|
ldr r0, _080B2814 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B27D8
|
|
_080B27D2:
|
|
ldrh r0, [r5, 0x20]
|
|
adds r0, 0x8
|
|
strh r0, [r5, 0x20]
|
|
_080B27D8:
|
|
ldr r4, _080B280C @ =gBattleAnimArgs
|
|
ldrb r1, [r4, 0x8]
|
|
adds r0, r5, 0
|
|
bl SeekSpriteAnim
|
|
ldrh r0, [r5, 0x20]
|
|
subs r0, 0x20
|
|
strh r0, [r5, 0x20]
|
|
ldr r0, _080B2818 @ =0x00000ccc
|
|
strh r0, [r5, 0x30]
|
|
ldrh r1, [r4, 0x8]
|
|
movs r0, 0xC
|
|
adds r2, r0, 0
|
|
muls r2, r1
|
|
adds r0, r2, 0
|
|
ldrh r2, [r5, 0x24]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x24]
|
|
strh r1, [r5, 0x2E]
|
|
ldrh r0, [r4, 0x6]
|
|
strh r0, [r5, 0x3C]
|
|
ldr r0, _080B281C @ =sub_80B2820
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B280C: .4byte gBattleAnimArgs
|
|
_080B2810: .4byte gBattleAnimAttacker
|
|
_080B2814: .4byte gBattleAnimTarget
|
|
_080B2818: .4byte 0x00000ccc
|
|
_080B281C: .4byte sub_80B2820
|
|
thumb_func_end sub_80B2780
|
|
|
|
thumb_func_start sub_80B2820
|
|
sub_80B2820: @ 80B2820
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
ldrh r1, [r4, 0x24]
|
|
adds r0, r1
|
|
movs r1, 0
|
|
strh r0, [r4, 0x24]
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x6
|
|
bne _080B284A
|
|
strh r1, [r4, 0x2E]
|
|
strh r1, [r4, 0x24]
|
|
adds r0, r4, 0
|
|
bl StartSpriteAnim
|
|
_080B284A:
|
|
ldrh r0, [r4, 0x3C]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x3C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bne _080B2862
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B2862:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B2820
|
|
|
|
thumb_func_start sub_80B2868
|
|
sub_80B2868: @ 80B2868
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r6, r0, 0
|
|
ldr r1, _080B2900 @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r7, r0, r1
|
|
ldrh r0, [r7, 0x8]
|
|
movs r1, 0x1F
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B28E2
|
|
ldr r1, _080B2904 @ =gUnknown_2037EE2
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
movs r1, 0x8
|
|
ldrsh r0, [r7, r1]
|
|
movs r5, 0xD
|
|
negs r5, r5
|
|
adds r1, r5, 0
|
|
bl Sin
|
|
ldr r4, _080B2908 @ =gBattleAnimArgs
|
|
strh r0, [r4]
|
|
movs r1, 0x8
|
|
ldrsh r0, [r7, r1]
|
|
adds r1, r5, 0
|
|
bl Cos
|
|
strh r0, [r4, 0x2]
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x4]
|
|
movs r0, 0x3
|
|
strh r0, [r4, 0x6]
|
|
ldr r0, _080B290C @ =gUnknown_83E7C98
|
|
mov r8, r0
|
|
ldr r5, _080B2910 @ =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
adds r2, r0, 0
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
mov r0, r8
|
|
adds r1, r4, 0
|
|
movs r3, 0x3
|
|
bl CreateSpriteAndAnimate
|
|
_080B28E2:
|
|
ldrh r0, [r7, 0x8]
|
|
adds r0, 0x8
|
|
strh r0, [r7, 0x8]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xFF
|
|
ble _080B28F6
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B28F6:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B2900: .4byte gTasks
|
|
_080B2904: .4byte gUnknown_2037EE2
|
|
_080B2908: .4byte gBattleAnimArgs
|
|
_080B290C: .4byte gUnknown_83E7C98
|
|
_080B2910: .4byte gBattleAnimTarget
|
|
thumb_func_end sub_80B2868
|
|
|
|
thumb_func_start sub_80B2914
|
|
sub_80B2914: @ 80B2914
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080B2926
|
|
cmp r0, 0x1
|
|
beq _080B2958
|
|
b _080B296C
|
|
_080B2926:
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
ldr r2, _080B2954 @ =gSprites
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
adds r1, 0x3E
|
|
ldrb r0, [r1]
|
|
movs r2, 0x4
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _080B296C
|
|
.align 2, 0
|
|
_080B2954: .4byte gSprites
|
|
_080B2958:
|
|
adds r0, r4, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B296C
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B296C:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B2914
|
|
|
|
thumb_func_start sub_80B2974
|
|
sub_80B2974: @ 80B2974
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _080B29AC
|
|
cmp r0, 0x1
|
|
bgt _080B298A
|
|
cmp r0, 0
|
|
beq _080B2990
|
|
b _080B29FE
|
|
_080B298A:
|
|
cmp r0, 0x2
|
|
beq _080B29C0
|
|
b _080B29FE
|
|
_080B2990:
|
|
ldr r0, _080B29A8 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x22]
|
|
negs r0, r0
|
|
subs r0, 0x20
|
|
strh r0, [r4, 0x26]
|
|
b _080B29B8
|
|
.align 2, 0
|
|
_080B29A8: .4byte gBattleAnimTarget
|
|
_080B29AC:
|
|
ldrh r0, [r4, 0x26]
|
|
adds r0, 0xA
|
|
strh r0, [r4, 0x26]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
blt _080B29FE
|
|
_080B29B8:
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _080B29FE
|
|
_080B29C0:
|
|
ldrh r0, [r4, 0x26]
|
|
subs r0, 0xA
|
|
strh r0, [r4, 0x26]
|
|
movs r2, 0x22
|
|
ldrsh r0, [r4, r2]
|
|
movs r2, 0x26
|
|
ldrsh r1, [r4, r2]
|
|
adds r0, r1
|
|
movs r1, 0x20
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bge _080B29FE
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
ldr r2, _080B2A04 @ =gSprites
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
adds r1, 0x3E
|
|
ldrb r2, [r1]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B29FE:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B2A04: .4byte gSprites
|
|
thumb_func_end sub_80B2974
|
|
|
|
thumb_func_start sub_80B2A08
|
|
sub_80B2A08: @ 80B2A08
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r1, _080B2A44 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r1, 0x6]
|
|
strh r0, [r4, 0x30]
|
|
ldr r0, _080B2A48 @ =sub_80B2A50
|
|
str r0, [r4, 0x1C]
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
ldr r2, _080B2A4C @ =gSprites
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
adds r1, 0x3E
|
|
ldrb r0, [r1]
|
|
movs r2, 0x4
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B2A44: .4byte gBattleAnimArgs
|
|
_080B2A48: .4byte sub_80B2A50
|
|
_080B2A4C: .4byte gSprites
|
|
thumb_func_end sub_80B2A08
|
|
|
|
thumb_func_start sub_80B2A50
|
|
sub_80B2A50: @ 80B2A50
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldrh r1, [r2, 0x2E]
|
|
movs r3, 0x2E
|
|
ldrsh r0, [r2, r3]
|
|
cmp r0, 0
|
|
ble _080B2A64
|
|
subs r0, r1, 0x1
|
|
strh r0, [r2, 0x2E]
|
|
b _080B2AA8
|
|
_080B2A64:
|
|
movs r1, 0x22
|
|
ldrsh r0, [r2, r1]
|
|
movs r3, 0x26
|
|
ldrsh r1, [r2, r3]
|
|
adds r0, r1
|
|
movs r1, 0x20
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
ble _080B2A8A
|
|
ldrh r0, [r2, 0x30]
|
|
ldrh r1, [r2, 0x32]
|
|
adds r0, r1
|
|
strh r0, [r2, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
ldrh r1, [r2, 0x26]
|
|
subs r1, r0
|
|
strh r1, [r2, 0x26]
|
|
b _080B2AA8
|
|
_080B2A8A:
|
|
adds r3, r2, 0
|
|
adds r3, 0x3E
|
|
ldrb r0, [r3]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
ldrh r0, [r2, 0x34]
|
|
adds r1, r0, 0x1
|
|
strh r1, [r2, 0x34]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x14
|
|
ble _080B2AA8
|
|
ldr r0, _080B2AAC @ =sub_80B2AB0
|
|
str r0, [r2, 0x1C]
|
|
_080B2AA8:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B2AAC: .4byte sub_80B2AB0
|
|
thumb_func_end sub_80B2A50
|
|
|
|
thumb_func_start sub_80B2AB0
|
|
sub_80B2AB0: @ 80B2AB0
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldrh r0, [r2, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
ldrh r1, [r2, 0x26]
|
|
adds r0, r1
|
|
strh r0, [r2, 0x26]
|
|
movs r3, 0x22
|
|
ldrsh r0, [r2, r3]
|
|
movs r3, 0x26
|
|
ldrsh r1, [r2, r3]
|
|
adds r0, r1
|
|
movs r1, 0x20
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
ble _080B2AE0
|
|
adds r3, r2, 0
|
|
adds r3, 0x3E
|
|
ldrb r1, [r3]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r3]
|
|
_080B2AE0:
|
|
movs r1, 0x26
|
|
ldrsh r0, [r2, r1]
|
|
cmp r0, 0
|
|
ble _080B2AEE
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_080B2AEE:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B2AB0
|
|
|
|
thumb_func_start sub_80B2AF4
|
|
sub_80B2AF4: @ 80B2AF4
|
|
push {r4,r5,lr}
|
|
sub sp, 0x4
|
|
adds r5, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
beq _080B2B08
|
|
cmp r0, 0x1
|
|
beq _080B2B60
|
|
b _080B2BCC
|
|
_080B2B08:
|
|
ldr r0, _080B2B18 @ =gBattleAnimArgs
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
cmp r0, 0
|
|
bne _080B2B20
|
|
ldr r4, _080B2B1C @ =gBattleAnimAttacker
|
|
b _080B2B22
|
|
.align 2, 0
|
|
_080B2B18: .4byte gBattleAnimArgs
|
|
_080B2B1C: .4byte gBattleAnimAttacker
|
|
_080B2B20:
|
|
ldr r4, _080B2B5C @ =gBattleAnimTarget
|
|
_080B2B22:
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
movs r0, 0
|
|
movs r3, 0x80
|
|
lsls r3, 2
|
|
strh r3, [r5, 0x30]
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
str r0, [sp]
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl sub_8075A1C
|
|
ldrh r0, [r5, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
b _080B2BCC
|
|
.align 2, 0
|
|
_080B2B5C: .4byte gBattleAnimTarget
|
|
_080B2B60:
|
|
movs r1, 0x32
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0xB
|
|
bgt _080B2B6E
|
|
ldrh r0, [r5, 0x30]
|
|
subs r0, 0x28
|
|
b _080B2B72
|
|
_080B2B6E:
|
|
ldrh r0, [r5, 0x30]
|
|
adds r0, 0x28
|
|
_080B2B72:
|
|
strh r0, [r5, 0x30]
|
|
ldrh r0, [r5, 0x32]
|
|
adds r0, 0x1
|
|
movs r1, 0
|
|
strh r0, [r5, 0x32]
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
movs r0, 0x30
|
|
ldrsh r3, [r5, r0]
|
|
str r1, [sp]
|
|
adds r0, r5, 0
|
|
bl sub_8075A1C
|
|
ldrb r1, [r5, 0x3]
|
|
lsls r1, 26
|
|
lsrs r1, 27
|
|
movs r0, 0xF4
|
|
lsls r0, 6
|
|
ldr r2, _080B2BD4 @ =gOamMatrices
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
movs r2, 0x6
|
|
ldrsh r1, [r1, r2]
|
|
bl __divsi3
|
|
adds r1, r0, 0x1
|
|
cmp r1, 0x80
|
|
ble _080B2BAC
|
|
movs r1, 0x80
|
|
_080B2BAC:
|
|
movs r0, 0x40
|
|
subs r0, r1
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r1, r0, 1
|
|
strh r1, [r5, 0x26]
|
|
movs r1, 0x32
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x18
|
|
bne _080B2BCC
|
|
adds r0, r5, 0
|
|
bl sub_8075AD8
|
|
adds r0, r5, 0
|
|
bl DestroyAnimSprite
|
|
_080B2BCC:
|
|
add sp, 0x4
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B2BD4: .4byte gOamMatrices
|
|
thumb_func_end sub_80B2AF4
|
|
|
|
thumb_func_start sub_80B2BD8
|
|
sub_80B2BD8: @ 80B2BD8
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
bl Random
|
|
ldr r4, _080B2BFC @ =0x000001ff
|
|
ands r4, r0
|
|
bl Random
|
|
movs r1, 0x7F
|
|
ands r1, r0
|
|
movs r0, 0x1
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _080B2C00
|
|
movs r2, 0xB8
|
|
lsls r2, 2
|
|
adds r0, r4, r2
|
|
b _080B2C08
|
|
.align 2, 0
|
|
_080B2BFC: .4byte 0x000001ff
|
|
_080B2C00:
|
|
movs r2, 0xB8
|
|
lsls r2, 2
|
|
adds r0, r2, 0
|
|
subs r0, r4
|
|
_080B2C08:
|
|
strh r0, [r5, 0x2E]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B2C1C
|
|
movs r2, 0xE0
|
|
lsls r2, 2
|
|
adds r0, r2, 0
|
|
adds r0, r1, r0
|
|
b _080B2C24
|
|
_080B2C1C:
|
|
movs r2, 0xE0
|
|
lsls r2, 2
|
|
adds r0, r2, 0
|
|
subs r0, r1
|
|
_080B2C24:
|
|
strh r0, [r5, 0x30]
|
|
ldr r2, _080B2C4C @ =gBattleAnimArgs
|
|
ldrh r0, [r2]
|
|
strh r0, [r5, 0x32]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080B2C40
|
|
ldrb r0, [r5, 0x3]
|
|
movs r1, 0x3F
|
|
negs r1, r1
|
|
ands r1, r0
|
|
movs r0, 0x10
|
|
orrs r1, r0
|
|
strb r1, [r5, 0x3]
|
|
_080B2C40:
|
|
movs r1, 0x2
|
|
ldrsh r0, [r2, r1]
|
|
cmp r0, 0
|
|
bne _080B2C54
|
|
ldr r4, _080B2C50 @ =gBattleAnimAttacker
|
|
b _080B2C56
|
|
.align 2, 0
|
|
_080B2C4C: .4byte gBattleAnimArgs
|
|
_080B2C50: .4byte gBattleAnimAttacker
|
|
_080B2C54:
|
|
ldr r4, _080B2C80 @ =gBattleAnimTarget
|
|
_080B2C56:
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x20
|
|
strh r0, [r5, 0x22]
|
|
ldr r0, _080B2C84 @ =sub_80B2C88
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B2C80: .4byte gBattleAnimTarget
|
|
_080B2C84: .4byte sub_80B2C88
|
|
thumb_func_end sub_80B2BD8
|
|
|
|
thumb_func_start sub_80B2C88
|
|
sub_80B2C88: @ 80B2C88
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x32
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080B2CA0
|
|
ldrh r3, [r4, 0x2E]
|
|
lsls r0, r3, 16
|
|
asrs r0, 24
|
|
ldrh r1, [r4, 0x24]
|
|
adds r0, r1
|
|
b _080B2CAA
|
|
_080B2CA0:
|
|
ldrh r3, [r4, 0x2E]
|
|
lsls r1, r3, 16
|
|
asrs r1, 24
|
|
ldrh r0, [r4, 0x24]
|
|
subs r0, r1
|
|
_080B2CAA:
|
|
strh r0, [r4, 0x24]
|
|
ldrh r2, [r4, 0x30]
|
|
lsls r1, r2, 16
|
|
asrs r1, 24
|
|
ldrh r0, [r4, 0x26]
|
|
subs r0, r1
|
|
strh r0, [r4, 0x26]
|
|
strh r3, [r4, 0x2E]
|
|
adds r0, r2, 0
|
|
subs r0, 0x20
|
|
strh r0, [r4, 0x30]
|
|
lsls r0, r3, 16
|
|
cmp r0, 0
|
|
bge _080B2CCA
|
|
movs r0, 0
|
|
strh r0, [r4, 0x2E]
|
|
_080B2CCA:
|
|
ldrh r0, [r4, 0x34]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x34]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1F
|
|
bne _080B2CDE
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B2CDE:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B2C88
|
|
|
|
thumb_func_start sub_80B2CE4
|
|
sub_80B2CE4: @ 80B2CE4
|
|
movs r1, 0
|
|
strh r1, [r0, 0x3A]
|
|
movs r1, 0x40
|
|
strh r1, [r0, 0x3C]
|
|
ldr r1, _080B2CF4 @ =sub_80B2CF8
|
|
str r1, [r0, 0x1C]
|
|
bx lr
|
|
.align 2, 0
|
|
_080B2CF4: .4byte sub_80B2CF8
|
|
thumb_func_end sub_80B2CE4
|
|
|
|
thumb_func_start sub_80B2CF8
|
|
sub_80B2CF8: @ 80B2CF8
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r3, r0]
|
|
cmp r1, 0
|
|
beq _080B2D0A
|
|
cmp r1, 0x1
|
|
beq _080B2D58
|
|
b _080B2D5E
|
|
_080B2D0A:
|
|
ldrh r0, [r3, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x8
|
|
ble _080B2D5E
|
|
strh r1, [r3, 0x30]
|
|
movs r1, 0x3E
|
|
adds r1, r3
|
|
mov r12, r1
|
|
ldrb r2, [r1]
|
|
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, 0x32]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x5
|
|
ble _080B2D5E
|
|
ldrb r1, [r1]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B2D5E
|
|
ldrh r0, [r3, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x2E]
|
|
b _080B2D5E
|
|
_080B2D58:
|
|
adds r0, r3, 0
|
|
bl DestroyAnimSprite
|
|
_080B2D5E:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B2CF8
|
|
|
|
thumb_func_start sub_80B2D64
|
|
sub_80B2D64: @ 80B2D64
|
|
push {r4-r6,lr}
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5,r6}
|
|
sub sp, 0x4
|
|
mov r8, r0
|
|
ldrh r4, [r0, 0x20]
|
|
ldrh r5, [r0, 0x22]
|
|
ldr r6, _080B2E18 @ =gBattleAnimAttacker
|
|
ldrb r0, [r6]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r1, r8
|
|
strh r0, [r1, 0x20]
|
|
ldrb r0, [r6]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
adds r6, r0, 0
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
mov r2, r8
|
|
strh r6, [r2, 0x22]
|
|
ldrh r0, [r2, 0x20]
|
|
mov r9, r0
|
|
mov r1, r9
|
|
lsls r0, r1, 4
|
|
strh r0, [r2, 0x36]
|
|
lsls r0, r6, 4
|
|
strh r0, [r2, 0x38]
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
movs r1, 0x20
|
|
ldrsh r0, [r2, r1]
|
|
subs r0, r4, r0
|
|
lsls r0, 4
|
|
movs r1, 0xC
|
|
bl __divsi3
|
|
mov r2, r8
|
|
strh r0, [r2, 0x3A]
|
|
lsls r5, 16
|
|
asrs r5, 16
|
|
movs r1, 0x22
|
|
ldrsh r0, [r2, r1]
|
|
subs r0, r5, r0
|
|
lsls r0, 4
|
|
movs r1, 0xC
|
|
bl __divsi3
|
|
mov r2, r8
|
|
strh r0, [r2, 0x3C]
|
|
mov r0, r9
|
|
subs r4, r0
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
subs r5, r6
|
|
lsls r5, 16
|
|
asrs r5, 16
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl sub_8075B30
|
|
lsls r0, 16
|
|
movs r1, 0xC0
|
|
lsls r1, 24
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
movs r3, 0x80
|
|
lsls r3, 1
|
|
str r0, [sp]
|
|
mov r0, r8
|
|
movs r1, 0x1
|
|
adds r2, r3, 0
|
|
bl sub_8075A1C
|
|
ldr r0, _080B2E1C @ =sub_80B2E20
|
|
mov r2, r8
|
|
str r0, [r2, 0x1C]
|
|
add sp, 0x4
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B2E18: .4byte gBattleAnimAttacker
|
|
_080B2E1C: .4byte sub_80B2E20
|
|
thumb_func_end sub_80B2D64
|
|
|
|
thumb_func_start sub_80B2E20
|
|
sub_80B2E20: @ 80B2E20
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldrh r0, [r2, 0x3A]
|
|
ldrh r1, [r2, 0x36]
|
|
adds r0, r1
|
|
strh r0, [r2, 0x36]
|
|
ldrh r1, [r2, 0x3C]
|
|
ldrh r3, [r2, 0x38]
|
|
adds r1, r3
|
|
strh r1, [r2, 0x38]
|
|
lsls r0, 16
|
|
asrs r0, 20
|
|
strh r0, [r2, 0x20]
|
|
lsls r1, 16
|
|
asrs r3, r1, 20
|
|
strh r3, [r2, 0x22]
|
|
adds r0, 0x2D
|
|
lsls r0, 16
|
|
movs r1, 0xA5
|
|
lsls r1, 17
|
|
cmp r0, r1
|
|
bhi _080B2E5A
|
|
adds r1, r3, 0
|
|
cmp r1, 0x9D
|
|
bgt _080B2E5A
|
|
movs r0, 0x2D
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bge _080B2E60
|
|
_080B2E5A:
|
|
adds r0, r2, 0
|
|
bl move_anim_8074EE0
|
|
_080B2E60:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B2E20
|
|
|
|
thumb_func_start sub_80B2E64
|
|
sub_80B2E64: @ 80B2E64
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _080B2E94 @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080B2E9C
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _080B2E98 @ =gSprites
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
adds r1, 0x3E
|
|
ldrb r0, [r1]
|
|
movs r2, 0x4
|
|
orrs r0, r2
|
|
b _080B2EBA
|
|
.align 2, 0
|
|
_080B2E94: .4byte gBattleAnimArgs
|
|
_080B2E98: .4byte gSprites
|
|
_080B2E9C:
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _080B2EC8 @ =gSprites
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
adds r1, 0x3E
|
|
ldrb r2, [r1]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
_080B2EBA:
|
|
strb r0, [r1]
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B2EC8: .4byte gSprites
|
|
thumb_func_end sub_80B2E64
|
|
|
|
thumb_func_start sub_80B2ECC
|
|
sub_80B2ECC: @ 80B2ECC
|
|
push {r4-r7,lr}
|
|
adds r6, r0, 0
|
|
ldr r0, _080B2F84 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B2EE8
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B2EFE
|
|
_080B2EE8:
|
|
ldrb r1, [r6, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r1
|
|
movs r1, 0x8
|
|
orrs r0, r1
|
|
strb r0, [r6, 0x5]
|
|
adds r1, r6, 0
|
|
adds r1, 0x43
|
|
movs r0, 0xC8
|
|
strb r0, [r1]
|
|
_080B2EFE:
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B2F5A
|
|
movs r0, 0x1
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r7, r4, 0
|
|
adds r0, r4, 0
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
negs r1, r0
|
|
orrs r1, r0
|
|
lsrs r5, r1, 31
|
|
adds r0, r4, 0
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B2F3C
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl sub_8072E48
|
|
_080B2F3C:
|
|
movs r0, 0x2
|
|
adds r4, r0, 0
|
|
eors r4, r7
|
|
adds r0, r4, 0
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B2F5A
|
|
movs r0, 0x1
|
|
eors r5, r0
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl sub_8072E48
|
|
_080B2F5A:
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B2F90
|
|
bl sub_8075290
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B2F90
|
|
ldr r0, _080B2F84 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B2F88
|
|
movs r0, 0x48
|
|
strh r0, [r6, 0x20]
|
|
movs r0, 0x50
|
|
b _080B2FCA
|
|
.align 2, 0
|
|
_080B2F84: .4byte gBattleAnimAttacker
|
|
_080B2F88:
|
|
movs r0, 0xB0
|
|
strh r0, [r6, 0x20]
|
|
movs r0, 0x28
|
|
b _080B2FCA
|
|
_080B2F90:
|
|
ldr r5, _080B3000 @ =gBattleAnimAttacker
|
|
ldrb r0, [r5]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B2FA6
|
|
ldr r1, _080B3004 @ =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
negs r0, r0
|
|
strh r0, [r1]
|
|
_080B2FA6:
|
|
ldrb r0, [r5]
|
|
movs r1, 0
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
ldr r4, _080B3004 @ =gBattleAnimArgs
|
|
lsrs r0, 24
|
|
ldrh r1, [r4]
|
|
adds r0, r1
|
|
strh r0, [r6, 0x20]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r4, [r4, 0x2]
|
|
adds r0, r4
|
|
_080B2FCA:
|
|
strh r0, [r6, 0x22]
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B2FDC
|
|
ldrh r0, [r6, 0x22]
|
|
adds r0, 0x9
|
|
strh r0, [r6, 0x22]
|
|
_080B2FDC:
|
|
ldr r0, _080B3004 @ =gBattleAnimArgs
|
|
ldrh r0, [r0, 0x4]
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 20
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
strh r0, [r6, 0x2E]
|
|
ldr r1, _080B3008 @ =sub_80B300C
|
|
str r1, [r6, 0x1C]
|
|
adds r0, r6, 0
|
|
bl _call_via_r1
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B3000: .4byte gBattleAnimAttacker
|
|
_080B3004: .4byte gBattleAnimArgs
|
|
_080B3008: .4byte sub_80B300C
|
|
thumb_func_end sub_80B2ECC
|
|
|
|
thumb_func_start sub_80B300C
|
|
sub_80B300C: @ 80B300C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x34]
|
|
movs r1, 0x10
|
|
subs r1, r0
|
|
lsls r1, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
ldrh r1, [r4, 0x34]
|
|
movs r2, 0x34
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0xD
|
|
bne _080B3038
|
|
ldr r0, _080B3034 @ =sub_80B3044
|
|
str r0, [r4, 0x1C]
|
|
b _080B303C
|
|
.align 2, 0
|
|
_080B3034: .4byte sub_80B3044
|
|
_080B3038:
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0x34]
|
|
_080B303C:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B300C
|
|
|
|
thumb_func_start sub_80B3044
|
|
sub_80B3044: @ 80B3044
|
|
push {r4-r7,lr}
|
|
adds r3, r0, 0
|
|
ldrh r0, [r3, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x2
|
|
bne _080B30A2
|
|
movs r0, 0
|
|
strh r0, [r3, 0x30]
|
|
ldrh r4, [r3, 0x2E]
|
|
ldr r1, _080B30A8 @ =gPlttBufferFaded
|
|
adds r0, r4, 0
|
|
adds r0, 0x8
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r7, [r0]
|
|
movs r5, 0x8
|
|
adds r6, r1, 0
|
|
adds r1, r4, 0x7
|
|
lsls r0, r4, 1
|
|
adds r0, r6
|
|
adds r2, r0, 0
|
|
adds r2, 0x10
|
|
lsls r1, 1
|
|
adds r1, r6
|
|
_080B307A:
|
|
ldrh r0, [r1]
|
|
strh r0, [r2]
|
|
subs r1, 0x2
|
|
subs r2, 0x2
|
|
subs r5, 0x1
|
|
cmp r5, 0
|
|
bgt _080B307A
|
|
adds r0, r4, 0x1
|
|
lsls r0, 1
|
|
adds r0, r6
|
|
strh r7, [r0]
|
|
ldrh r0, [r3, 0x32]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x10
|
|
bne _080B30A2
|
|
ldr r0, _080B30AC @ =sub_80B30B0
|
|
str r0, [r3, 0x1C]
|
|
_080B30A2:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B30A8: .4byte gPlttBufferFaded
|
|
_080B30AC: .4byte sub_80B30B0
|
|
thumb_func_end sub_80B3044
|
|
|
|
thumb_func_start sub_80B30B0
|
|
sub_80B30B0: @ 80B30B0
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldrh r0, [r5, 0x34]
|
|
movs r1, 0x10
|
|
subs r1, r0
|
|
lsls r1, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
ldrh r0, [r5, 0x34]
|
|
subs r0, 0x1
|
|
strh r0, [r5, 0x34]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bne _080B3156
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B3146
|
|
movs r0, 0x1
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r6, r4, 0
|
|
adds r0, r4, 0
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B3118
|
|
ldr r2, _080B315C @ =gSprites
|
|
ldr r0, _080B3160 @ =gUnknown_2023D44
|
|
adds r0, r4, r0
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
adds r0, 0x3E
|
|
ldrb r2, [r0]
|
|
movs r1, 0x5
|
|
negs r1, r1
|
|
ands r1, r2
|
|
strb r1, [r0]
|
|
_080B3118:
|
|
movs r0, 0x2
|
|
adds r4, r0, 0
|
|
eors r4, r6
|
|
adds r0, r4, 0
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B3146
|
|
ldr r2, _080B315C @ =gSprites
|
|
ldr r0, _080B3160 @ =gUnknown_2023D44
|
|
adds r0, r4, r0
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
adds r0, 0x3E
|
|
ldrb r2, [r0]
|
|
movs r1, 0x5
|
|
negs r1, r1
|
|
ands r1, r2
|
|
strb r1, [r0]
|
|
_080B3146:
|
|
adds r2, r5, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, _080B3164 @ =sub_80B3168
|
|
str r0, [r5, 0x1C]
|
|
_080B3156:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B315C: .4byte gSprites
|
|
_080B3160: .4byte gUnknown_2023D44
|
|
_080B3164: .4byte sub_80B3168
|
|
thumb_func_end sub_80B30B0
|
|
|
|
thumb_func_start sub_80B3168
|
|
sub_80B3168: @ 80B3168
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B31C0
|
|
movs r0, 0x1
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r4, r0, 0
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
negs r1, r0
|
|
orrs r1, r0
|
|
lsrs r5, r1, 31
|
|
adds r0, r4, 0
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B31A6
|
|
adds r0, r5, 0
|
|
bl sub_8073128
|
|
_080B31A6:
|
|
movs r0, 0x2
|
|
eors r4, r0
|
|
adds r0, r4, 0
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B31C0
|
|
movs r0, 0x1
|
|
eors r5, r0
|
|
adds r0, r5, 0
|
|
bl sub_8073128
|
|
_080B31C0:
|
|
ldr r0, _080B31CC @ =DestroyAnimSprite
|
|
str r0, [r6, 0x1C]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B31CC: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80B3168
|
|
|
|
thumb_func_start sub_80B31D0
|
|
sub_80B31D0: @ 80B31D0
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080B325C
|
|
ldr r5, _080B321C @ =gBattleAnimArgs
|
|
movs r1, 0x6
|
|
ldrsh r0, [r5, r1]
|
|
movs r6, 0
|
|
cmp r0, 0
|
|
bne _080B31EA
|
|
movs r6, 0x1
|
|
_080B31EA:
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B3232
|
|
bl sub_8075290
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B3232
|
|
ldr r0, _080B3220 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B3224
|
|
ldrh r0, [r5]
|
|
movs r1, 0x48
|
|
subs r1, r0
|
|
strh r1, [r4, 0x20]
|
|
ldrh r0, [r5, 0x2]
|
|
adds r0, 0x50
|
|
strh r0, [r4, 0x22]
|
|
b _080B3254
|
|
.align 2, 0
|
|
_080B321C: .4byte gBattleAnimArgs
|
|
_080B3220: .4byte gBattleAnimAttacker
|
|
_080B3224:
|
|
ldrh r0, [r5]
|
|
adds r0, 0xB0
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r5, 0x2]
|
|
adds r0, 0x28
|
|
strh r0, [r4, 0x22]
|
|
b _080B3254
|
|
_080B3232:
|
|
ldr r0, _080B3248 @ =gBattleAnimArgs
|
|
movs r1, 0x4
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080B324C
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl sub_8075160
|
|
b _080B3254
|
|
.align 2, 0
|
|
_080B3248: .4byte gBattleAnimArgs
|
|
_080B324C:
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl sub_8075114
|
|
_080B3254:
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _080B3270
|
|
_080B325C:
|
|
adds r0, r4, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x30
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B3270
|
|
adds r0, r4, 0
|
|
bl move_anim_8074EE0
|
|
_080B3270:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B31D0
|
|
|
|
thumb_func_start sub_80B3278
|
|
sub_80B3278: @ 80B3278
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080B32C0 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B32C8
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAnim
|
|
ldrh r0, [r5, 0x20]
|
|
subs r0, 0x28
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r5, 0x22]
|
|
adds r0, 0xA
|
|
strh r0, [r5, 0x22]
|
|
ldr r0, _080B32C4 @ =0x0000ffff
|
|
b _080B32D6
|
|
.align 2, 0
|
|
_080B32C0: .4byte gBattleAnimAttacker
|
|
_080B32C4: .4byte 0x0000ffff
|
|
_080B32C8:
|
|
ldrh r0, [r5, 0x20]
|
|
adds r0, 0x28
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r5, 0x22]
|
|
subs r0, 0xA
|
|
strh r0, [r5, 0x22]
|
|
movs r0, 0x1
|
|
_080B32D6:
|
|
strh r0, [r5, 0x30]
|
|
ldr r1, _080B32EC @ =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, _080B32F0 @ =sub_8074F6C
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B32EC: .4byte DestroyAnimSprite
|
|
_080B32F0: .4byte sub_8074F6C
|
|
thumb_func_end sub_80B3278
|
|
|
|
thumb_func_start sub_80B32F4
|
|
sub_80B32F4: @ 80B32F4
|
|
push {r4-r7,lr}
|
|
adds r5, r0, 0
|
|
ldr r6, _080B3378 @ =gBattleAnimAttacker
|
|
ldrb r0, [r6]
|
|
movs r1, 0x1
|
|
bl sub_8076B2C
|
|
lsls r0, 16
|
|
asrs r1, r0, 16
|
|
lsrs r0, 31
|
|
adds r1, r0
|
|
lsls r1, 15
|
|
lsrs r4, r1, 16
|
|
ldrb r0, [r6]
|
|
movs r1, 0
|
|
bl sub_8076B2C
|
|
lsls r0, 16
|
|
asrs r1, r0, 16
|
|
lsrs r0, 31
|
|
adds r1, r0
|
|
asrs r1, 1
|
|
negs r1, r1
|
|
lsls r1, 16
|
|
lsrs r7, r1, 16
|
|
ldrb r0, [r6]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080B333A
|
|
lsls r0, r4, 16
|
|
negs r0, r0
|
|
lsrs r4, r0, 16
|
|
_080B333A:
|
|
ldrb r0, [r6]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, r4
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r6]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, r7
|
|
strh r0, [r5, 0x22]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xF
|
|
bgt _080B3366
|
|
movs r0, 0x10
|
|
strh r0, [r5, 0x22]
|
|
_080B3366:
|
|
ldr r1, _080B337C @ =sub_80B3384
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, _080B3380 @ =sub_8074F6C
|
|
str r0, [r5, 0x1C]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B3378: .4byte gBattleAnimAttacker
|
|
_080B337C: .4byte sub_80B3384
|
|
_080B3380: .4byte sub_8074F6C
|
|
thumb_func_end sub_80B32F4
|
|
|
|
thumb_func_start sub_80B3384
|
|
sub_80B3384: @ 80B3384
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrb r1, [r4, 0x1]
|
|
movs r0, 0x4
|
|
negs r0, r0
|
|
ands r0, r1
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x1]
|
|
ldr r0, _080B33B0 @ =gUnknown_83E6FF0
|
|
str r0, [r4, 0x10]
|
|
movs r0, 0
|
|
strh r0, [r4, 0x2E]
|
|
adds r0, r4, 0
|
|
bl InitSpriteAffineAnim
|
|
ldr r0, _080B33B4 @ =sub_80B33B8
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B33B0: .4byte gUnknown_83E6FF0
|
|
_080B33B4: .4byte sub_80B33B8
|
|
thumb_func_end sub_80B3384
|
|
|
|
thumb_func_start sub_80B33B8
|
|
sub_80B33B8: @ 80B33B8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080B33CA
|
|
cmp r0, 0x1
|
|
beq _080B33F8
|
|
b _080B3410
|
|
_080B33CA:
|
|
adds r0, r4, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B3410
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
bl FreeOamMatrix
|
|
ldrb r1, [r4, 0x1]
|
|
movs r0, 0x4
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r4, 0x1]
|
|
movs r0, 0x12
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _080B3410
|
|
_080B33F8:
|
|
ldrh r0, [r4, 0x30]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bne _080B3410
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B3410:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B33B8
|
|
|
|
thumb_func_start sub_80B3418
|
|
sub_80B3418: @ 80B3418
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
ldr r0, _080B3448 @ =gTasks
|
|
adds r4, r0
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
strh r1, [r4, 0x8]
|
|
ldr r2, _080B344C @ =gUnknown_83E700C
|
|
adds r0, r4, 0
|
|
bl sub_80762D0
|
|
ldr r0, _080B3450 @ =sub_80B3454
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B3448: .4byte gTasks
|
|
_080B344C: .4byte gUnknown_83E700C
|
|
_080B3450: .4byte sub_80B3454
|
|
thumb_func_end sub_80B3418
|
|
|
|
thumb_func_start sub_80B3454
|
|
sub_80B3454: @ 80B3454
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, _080B347C @ =gTasks
|
|
adds r0, r1
|
|
bl sub_8076308
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B3474
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B3474:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B347C: .4byte gTasks
|
|
thumb_func_end sub_80B3454
|
|
|
|
thumb_func_start sub_80B3480
|
|
sub_80B3480: @ 80B3480
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080B34CC @ =gTasks
|
|
adds r4, r1, r0
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0
|
|
strh r0, [r4, 0x8]
|
|
strh r1, [r4, 0xA]
|
|
strh r1, [r4, 0xC]
|
|
ldr r0, _080B34D0 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
movs r1, 0x8
|
|
cmp r0, 0
|
|
beq _080B34B4
|
|
movs r1, 0x4
|
|
_080B34B4:
|
|
strh r1, [r4, 0xE]
|
|
ldrb r1, [r4, 0x8]
|
|
ldr r2, _080B34D4 @ =gUnknown_83E702C
|
|
adds r0, r4, 0
|
|
bl sub_80762D0
|
|
ldr r0, _080B34D8 @ =sub_80B34DC
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B34CC: .4byte gTasks
|
|
_080B34D0: .4byte gBattleAnimAttacker
|
|
_080B34D4: .4byte gUnknown_83E702C
|
|
_080B34D8: .4byte sub_80B34DC
|
|
thumb_func_end sub_80B3480
|
|
|
|
thumb_func_start sub_80B34DC
|
|
sub_80B34DC: @ 80B34DC
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _080B34FC @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0xA
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080B3500
|
|
cmp r0, 0x1
|
|
beq _080B351C
|
|
b _080B357A
|
|
.align 2, 0
|
|
_080B34FC: .4byte gTasks
|
|
_080B3500:
|
|
adds r0, r4, 0
|
|
bl sub_8076308
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x13
|
|
ble _080B357A
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
b _080B357A
|
|
_080B351C:
|
|
movs r1, 0xE
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080B3544
|
|
ldr r2, _080B3540 @ =gSprites
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r0, 0x26]
|
|
subs r1, 0x8
|
|
strh r1, [r0, 0x26]
|
|
ldrh r0, [r4, 0xE]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0xE]
|
|
b _080B357A
|
|
.align 2, 0
|
|
_080B3540: .4byte gSprites
|
|
_080B3544:
|
|
ldr r3, _080B3580 @ =gSprites
|
|
movs r0, 0x8
|
|
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
|
|
movs r1, 0x88
|
|
lsls r1, 1
|
|
strh r1, [r0, 0x20]
|
|
ldrb r0, [r4, 0x8]
|
|
bl sub_8075980
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B357A:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B3580: .4byte gSprites
|
|
thumb_func_end sub_80B34DC
|
|
|
|
thumb_func_start sub_80B3584
|
|
sub_80B3584: @ 80B3584
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080B360C @ =gTasks
|
|
adds r5, r1, r0
|
|
movs r1, 0
|
|
movs r0, 0x10
|
|
strh r0, [r5, 0xE]
|
|
strh r1, [r5, 0x10]
|
|
ldr r4, _080B3610 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x24]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8076B2C
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x3
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8076B2C
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x3
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
adds r1, r0, 0
|
|
cmp r0, r6
|
|
bcs _080B35EE
|
|
adds r1, r6, 0
|
|
_080B35EE:
|
|
strh r1, [r5, 0x20]
|
|
movs r1, 0xFD
|
|
lsls r1, 6
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0x10
|
|
bl SetGpuReg
|
|
ldr r0, _080B3614 @ =sub_80B3618
|
|
str r0, [r5]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B360C: .4byte gTasks
|
|
_080B3610: .4byte gBattleAnimAttacker
|
|
_080B3614: .4byte sub_80B3618
|
|
thumb_func_end sub_80B3584
|
|
|
|
thumb_func_start sub_80B3618
|
|
sub_80B3618: @ 80B3618
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _080B363C @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
cmp r1, 0x1
|
|
beq _080B3718
|
|
cmp r1, 0x1
|
|
bgt _080B3640
|
|
cmp r1, 0
|
|
beq _080B364E
|
|
b _080B379E
|
|
.align 2, 0
|
|
_080B363C: .4byte gTasks
|
|
_080B3640:
|
|
cmp r1, 0x2
|
|
bne _080B3646
|
|
b _080B377A
|
|
_080B3646:
|
|
cmp r1, 0x3
|
|
bne _080B364C
|
|
b _080B3788
|
|
_080B364C:
|
|
b _080B379E
|
|
_080B364E:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x8
|
|
bgt _080B365E
|
|
b _080B379E
|
|
_080B365E:
|
|
strh r1, [r4, 0xA]
|
|
ldr r0, _080B369C @ =gUnknown_83E7044
|
|
movs r2, 0x22
|
|
ldrsh r1, [r4, r2]
|
|
movs r3, 0x24
|
|
ldrsh r2, [r4, r3]
|
|
movs r3, 0
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
movs r0, 0xC
|
|
ldrsh r1, [r4, r0]
|
|
adds r1, 0x8
|
|
lsls r1, 1
|
|
adds r0, r4, 0
|
|
adds r0, 0x8
|
|
adds r0, r1
|
|
strh r2, [r0]
|
|
cmp r2, 0x40
|
|
beq _080B3702
|
|
movs r1, 0xC
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _080B36BC
|
|
cmp r0, 0x1
|
|
bgt _080B36A0
|
|
cmp r0, 0
|
|
beq _080B36AA
|
|
b _080B3702
|
|
.align 2, 0
|
|
_080B369C: .4byte gUnknown_83E7044
|
|
_080B36A0:
|
|
cmp r0, 0x2
|
|
beq _080B36D4
|
|
cmp r0, 0x3
|
|
beq _080B36EC
|
|
b _080B3702
|
|
_080B36AA:
|
|
ldr r0, _080B36B8 @ =gSprites
|
|
lsls r1, r2, 4
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrh r0, [r4, 0x20]
|
|
b _080B36FA
|
|
.align 2, 0
|
|
_080B36B8: .4byte gSprites
|
|
_080B36BC:
|
|
ldr r0, _080B36D0 @ =gSprites
|
|
lsls r1, r2, 4
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrh r0, [r4, 0x20]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x24]
|
|
ldrh r0, [r4, 0x20]
|
|
b _080B3700
|
|
.align 2, 0
|
|
_080B36D0: .4byte gSprites
|
|
_080B36D4:
|
|
ldr r1, _080B36E8 @ =gSprites
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrh r1, [r4, 0x20]
|
|
strh r1, [r0, 0x24]
|
|
ldrh r1, [r4, 0x20]
|
|
strh r1, [r0, 0x26]
|
|
b _080B3702
|
|
.align 2, 0
|
|
_080B36E8: .4byte gSprites
|
|
_080B36EC:
|
|
ldr r0, _080B3714 @ =gSprites
|
|
lsls r1, r2, 4
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrh r0, [r4, 0x20]
|
|
negs r0, r0
|
|
_080B36FA:
|
|
strh r0, [r1, 0x24]
|
|
ldrh r0, [r4, 0x20]
|
|
negs r0, r0
|
|
_080B3700:
|
|
strh r0, [r1, 0x26]
|
|
_080B3702:
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x5
|
|
bne _080B379E
|
|
b _080B377A
|
|
.align 2, 0
|
|
_080B3714: .4byte gSprites
|
|
_080B3718:
|
|
ldrh r0, [r4, 0xA]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080B3728
|
|
ldrh r0, [r4, 0xE]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0xE]
|
|
b _080B372E
|
|
_080B3728:
|
|
ldrh r0, [r4, 0x10]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x10]
|
|
_080B372E:
|
|
ldrh r1, [r4, 0x10]
|
|
lsls r1, 8
|
|
ldrh r0, [r4, 0xE]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x20
|
|
bne _080B379E
|
|
movs r5, 0x8
|
|
adds r6, r4, 0
|
|
adds r6, 0x8
|
|
_080B3754:
|
|
lsls r0, r5, 1
|
|
adds r1, r6, r0
|
|
movs r2, 0
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0x40
|
|
beq _080B3770
|
|
adds r1, r0, 0
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _080B3784 @ =gSprites
|
|
adds r0, r1
|
|
bl DestroySprite
|
|
_080B3770:
|
|
adds r0, r5, 0x1
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
cmp r5, 0xC
|
|
bls _080B3754
|
|
_080B377A:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080B379E
|
|
.align 2, 0
|
|
_080B3784: .4byte gSprites
|
|
_080B3788:
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B379E:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B3618
|
|
|
|
thumb_func_start sub_80B37A4
|
|
sub_80B37A4: @ 80B37A4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x30
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
subs r0, 0xA
|
|
cmp r1, r0
|
|
ble _080B37CE
|
|
ldrh r0, [r4, 0x30]
|
|
movs r1, 0x1
|
|
ands r1, r0
|
|
adds r3, r4, 0
|
|
adds r3, 0x3E
|
|
lsls r1, 2
|
|
ldrb r2, [r3]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
_080B37CE:
|
|
movs r0, 0x30
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
cmp r1, r0
|
|
bne _080B37E0
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B37E0:
|
|
ldrh r0, [r4, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x30]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B37A4
|
|
|
|
thumb_func_start sub_80B37EC
|
|
sub_80B37EC: @ 80B37EC
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldr r6, _080B3828 @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
bne _080B3818
|
|
ldr r4, _080B382C @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
_080B3818:
|
|
ldrh r0, [r6, 0x2]
|
|
strh r0, [r5, 0x2E]
|
|
ldr r0, _080B3830 @ =sub_80B37A4
|
|
str r0, [r5, 0x1C]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B3828: .4byte gBattleAnimArgs
|
|
_080B382C: .4byte gBattleAnimAttacker
|
|
_080B3830: .4byte sub_80B37A4
|
|
thumb_func_end sub_80B37EC
|
|
|
|
thumb_func_start sub_80B3834
|
|
sub_80B3834: @ 80B3834
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080B3890 @ =gTasks
|
|
adds r5, r1, r0
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B38D8
|
|
ldr r0, _080B3894 @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0x1
|
|
bne _080B38A4
|
|
ldr r0, _080B3898 @ =0x0000fff6
|
|
strh r0, [r5, 0x1C]
|
|
ldr r4, _080B389C @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x5
|
|
bl sub_8076B2C
|
|
subs r0, 0x8
|
|
strh r0, [r5, 0x1E]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
strh r0, [r5, 0x20]
|
|
ldr r4, _080B38A0 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x5
|
|
bl sub_8076B2C
|
|
subs r0, 0x8
|
|
strh r0, [r5, 0x22]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
b _080B3962
|
|
.align 2, 0
|
|
_080B3890: .4byte gTasks
|
|
_080B3894: .4byte gBattleAnimArgs
|
|
_080B3898: .4byte 0x0000fff6
|
|
_080B389C: .4byte gBattleAnimTarget
|
|
_080B38A0: .4byte gBattleAnimAttacker
|
|
_080B38A4:
|
|
movs r0, 0xA
|
|
strh r0, [r5, 0x1C]
|
|
ldr r4, _080B38D0 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x4
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
strh r0, [r5, 0x1E]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8076B2C
|
|
subs r0, 0x8
|
|
strh r0, [r5, 0x20]
|
|
ldr r4, _080B38D4 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x4
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
b _080B3956
|
|
.align 2, 0
|
|
_080B38D0: .4byte gBattleAnimAttacker
|
|
_080B38D4: .4byte gBattleAnimTarget
|
|
_080B38D8:
|
|
ldr r0, _080B391C @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0x1
|
|
bne _080B392C
|
|
ldr r0, _080B3920 @ =0x0000fff6
|
|
strh r0, [r5, 0x1C]
|
|
ldr r4, _080B3924 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x4
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
strh r0, [r5, 0x1E]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
strh r0, [r5, 0x20]
|
|
ldr r4, _080B3928 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x4
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
strh r0, [r5, 0x22]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
b _080B3962
|
|
.align 2, 0
|
|
_080B391C: .4byte gBattleAnimArgs
|
|
_080B3920: .4byte 0x0000fff6
|
|
_080B3924: .4byte gBattleAnimTarget
|
|
_080B3928: .4byte gBattleAnimAttacker
|
|
_080B392C:
|
|
movs r0, 0xA
|
|
strh r0, [r5, 0x1C]
|
|
ldr r4, _080B3974 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x5
|
|
bl sub_8076B2C
|
|
subs r0, 0x8
|
|
strh r0, [r5, 0x1E]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8076B2C
|
|
subs r0, 0x8
|
|
strh r0, [r5, 0x20]
|
|
ldr r4, _080B3978 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x5
|
|
bl sub_8076B2C
|
|
subs r0, 0x8
|
|
_080B3956:
|
|
strh r0, [r5, 0x22]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8076B2C
|
|
subs r0, 0x8
|
|
_080B3962:
|
|
strh r0, [r5, 0x24]
|
|
movs r0, 0x6
|
|
strh r0, [r5, 0xA]
|
|
ldr r0, _080B397C @ =sub_80B3980
|
|
str r0, [r5]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B3974: .4byte gBattleAnimAttacker
|
|
_080B3978: .4byte gBattleAnimTarget
|
|
_080B397C: .4byte sub_80B3980
|
|
thumb_func_end sub_80B3834
|
|
|
|
thumb_func_start sub_80B3980
|
|
sub_80B3980: @ 80B3980
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _080B39A0 @ =gTasks
|
|
adds r5, r0, r1
|
|
movs r0, 0x8
|
|
ldrsh r1, [r5, r0]
|
|
cmp r1, 0
|
|
beq _080B39A4
|
|
cmp r1, 0x1
|
|
beq _080B3A18
|
|
b _080B3A2C
|
|
.align 2, 0
|
|
_080B39A0: .4byte gTasks
|
|
_080B39A4:
|
|
ldrh r0, [r5, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x6
|
|
ble _080B3A2C
|
|
strh r1, [r5, 0xA]
|
|
ldr r0, _080B3A10 @ =gUnknown_83E7114
|
|
movs r2, 0x1E
|
|
ldrsh r1, [r5, r2]
|
|
movs r3, 0x20
|
|
ldrsh r2, [r5, r3]
|
|
movs r3, 0
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0x40
|
|
beq _080B39F8
|
|
ldr r0, _080B3A14 @ =gSprites
|
|
lsls r4, r1, 4
|
|
adds r4, r1
|
|
lsls r4, 2
|
|
adds r4, r0
|
|
movs r0, 0x10
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r5, 0x22]
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r5, 0x24]
|
|
strh r0, [r4, 0x36]
|
|
ldrh r0, [r5, 0x1C]
|
|
strh r0, [r4, 0x38]
|
|
adds r0, r4, 0
|
|
bl sub_8075068
|
|
ldrb r0, [r5, 0xC]
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
adds r0, r4, 0
|
|
bl StartSpriteAffineAnim
|
|
_080B39F8:
|
|
ldrh r0, [r5, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xC
|
|
bne _080B3A2C
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
b _080B3A2C
|
|
.align 2, 0
|
|
_080B3A10: .4byte gUnknown_83E7114
|
|
_080B3A14: .4byte gSprites
|
|
_080B3A18:
|
|
ldrh r0, [r5, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x11
|
|
ble _080B3A2C
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B3A2C:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B3980
|
|
|
|
thumb_func_start sub_80B3A34
|
|
sub_80B3A34: @ 80B3A34
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl AnimateBallThrow
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B3A52
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
bl FreeOamMatrix
|
|
adds r0, r4, 0
|
|
bl DestroySprite
|
|
_080B3A52:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B3A34
|
|
|
|
thumb_func_start sub_80B3A58
|
|
sub_80B3A58: @ 80B3A58
|
|
push {r4-r6,lr}
|
|
sub sp, 0xC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080B3A90 @ =gTasks
|
|
adds r4, r1, r0
|
|
ldr r0, _080B3A94 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl sub_807492C
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
adds r0, r1, 0
|
|
subs r0, 0x20
|
|
strh r0, [r4, 0x24]
|
|
ldr r0, _080B3A98 @ =gBattleAnimArgs
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
cmp r0, 0x1
|
|
beq _080B3AAE
|
|
cmp r0, 0x1
|
|
bgt _080B3A9C
|
|
cmp r0, 0
|
|
beq _080B3AA2
|
|
b _080B3ACA
|
|
.align 2, 0
|
|
_080B3A90: .4byte gTasks
|
|
_080B3A94: .4byte gBattleAnimTarget
|
|
_080B3A98: .4byte gBattleAnimArgs
|
|
_080B3A9C:
|
|
cmp r0, 0x2
|
|
beq _080B3ABA
|
|
b _080B3ACA
|
|
_080B3AA2:
|
|
movs r0, 0x2
|
|
strh r0, [r4, 0x1E]
|
|
movs r0, 0x5
|
|
strh r0, [r4, 0x20]
|
|
movs r0, 0x40
|
|
b _080B3AC2
|
|
_080B3AAE:
|
|
movs r0, 0x2
|
|
strh r0, [r4, 0x1E]
|
|
movs r0, 0x5
|
|
strh r0, [r4, 0x20]
|
|
movs r0, 0xC0
|
|
b _080B3AC2
|
|
_080B3ABA:
|
|
movs r0, 0x4
|
|
strh r0, [r4, 0x1E]
|
|
strh r0, [r4, 0x20]
|
|
movs r0, 0
|
|
_080B3AC2:
|
|
strh r0, [r4, 0x22]
|
|
adds r0, r1, 0
|
|
adds r0, 0x20
|
|
strh r0, [r4, 0x26]
|
|
_080B3ACA:
|
|
movs r1, 0x24
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bge _080B3AD6
|
|
movs r0, 0
|
|
strh r0, [r4, 0x24]
|
|
_080B3AD6:
|
|
ldr r0, _080B3AF0 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080B3AFC
|
|
ldr r0, _080B3AF4 @ =gBattle_BG1_X
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, 0x1C]
|
|
ldr r0, _080B3AF8 @ =0x04000014
|
|
b _080B3B04
|
|
.align 2, 0
|
|
_080B3AF0: .4byte gBattleAnimTarget
|
|
_080B3AF4: .4byte gBattle_BG1_X
|
|
_080B3AF8: .4byte 0x04000014
|
|
_080B3AFC:
|
|
ldr r0, _080B3B64 @ =gBattle_BG2_X
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, 0x1C]
|
|
ldr r0, _080B3B68 @ =0x04000018
|
|
_080B3B04:
|
|
str r0, [sp]
|
|
ldrh r1, [r4, 0x24]
|
|
lsls r3, r1, 16
|
|
asrs r1, r3, 16
|
|
movs r2, 0x24
|
|
ldrsh r0, [r4, r2]
|
|
adds r0, 0x40
|
|
cmp r1, r0
|
|
bgt _080B3B3E
|
|
ldr r5, _080B3B6C @ =gScanlineEffectRegBuffers
|
|
movs r0, 0xF0
|
|
lsls r0, 3
|
|
adds r6, r5, r0
|
|
_080B3B1E:
|
|
asrs r3, 16
|
|
lsls r1, r3, 1
|
|
adds r2, r1, r5
|
|
ldrh r0, [r4, 0x1C]
|
|
strh r0, [r2]
|
|
adds r1, r6
|
|
ldrh r0, [r4, 0x1C]
|
|
strh r0, [r1]
|
|
adds r3, 0x1
|
|
lsls r3, 16
|
|
asrs r1, r3, 16
|
|
movs r2, 0x24
|
|
ldrsh r0, [r4, r2]
|
|
adds r0, 0x40
|
|
cmp r1, r0
|
|
ble _080B3B1E
|
|
_080B3B3E:
|
|
ldr r0, _080B3B70 @ =0xa2600001
|
|
str r0, [sp, 0x4]
|
|
mov r1, sp
|
|
movs r2, 0
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x8]
|
|
mov r0, sp
|
|
strb r2, [r0, 0x9]
|
|
ldr r0, [sp]
|
|
ldr r1, [sp, 0x4]
|
|
ldr r2, [sp, 0x8]
|
|
bl ScanlineEffect_SetParams
|
|
ldr r0, _080B3B74 @ =sub_80B3B78
|
|
str r0, [r4]
|
|
add sp, 0xC
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B3B64: .4byte gBattle_BG2_X
|
|
_080B3B68: .4byte 0x04000018
|
|
_080B3B6C: .4byte gScanlineEffectRegBuffers
|
|
_080B3B70: .4byte 0xa2600001
|
|
_080B3B74: .4byte sub_80B3B78
|
|
thumb_func_end sub_80B3A58
|
|
|
|
thumb_func_start sub_80B3B78
|
|
sub_80B3B78: @ 80B3B78
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _080B3BA0 @ =gTasks
|
|
adds r5, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x1
|
|
beq _080B3C52
|
|
cmp r0, 0x1
|
|
bgt _080B3BA4
|
|
cmp r0, 0
|
|
beq _080B3BAA
|
|
b _080B3C6A
|
|
.align 2, 0
|
|
_080B3BA0: .4byte gTasks
|
|
_080B3BA4:
|
|
cmp r0, 0x2
|
|
beq _080B3C64
|
|
b _080B3C6A
|
|
_080B3BAA:
|
|
ldrh r3, [r5, 0x22]
|
|
ldrh r4, [r5, 0x24]
|
|
movs r2, 0x24
|
|
ldrsh r1, [r5, r2]
|
|
movs r2, 0x26
|
|
ldrsh r0, [r5, r2]
|
|
cmp r1, r0
|
|
bgt _080B3C42
|
|
ldr r0, _080B3BF4 @ =gSineTable
|
|
mov r9, r0
|
|
movs r7, 0x3
|
|
ldr r1, _080B3BF8 @ =gScanlineEffectRegBuffers
|
|
mov r12, r1
|
|
movs r2, 0xF0
|
|
lsls r2, 3
|
|
add r2, r12
|
|
mov r8, r2
|
|
_080B3BCC:
|
|
lsls r2, r3, 16
|
|
asrs r0, r2, 15
|
|
add r0, r9
|
|
movs r3, 0
|
|
ldrsh r0, [r0, r3]
|
|
movs r3, 0x20
|
|
ldrsh r1, [r5, r3]
|
|
asrs r0, r1
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
asrs r3, r0, 16
|
|
adds r6, r2, 0
|
|
cmp r3, 0
|
|
ble _080B3BFC
|
|
ldrh r1, [r5, 0xA]
|
|
adds r0, r7, 0
|
|
ands r0, r1
|
|
adds r0, r3, r0
|
|
b _080B3C08
|
|
.align 2, 0
|
|
_080B3BF4: .4byte gSineTable
|
|
_080B3BF8: .4byte gScanlineEffectRegBuffers
|
|
_080B3BFC:
|
|
cmp r3, 0
|
|
bge _080B3C0C
|
|
ldrh r1, [r5, 0xA]
|
|
adds r0, r7, 0
|
|
ands r0, r1
|
|
subs r0, r3, r0
|
|
_080B3C08:
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
_080B3C0C:
|
|
lsls r2, r4, 16
|
|
asrs r2, 16
|
|
lsls r3, r2, 1
|
|
mov r0, r12
|
|
adds r4, r3, r0
|
|
ldrh r0, [r5, 0x1C]
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r1, r0
|
|
strh r0, [r4]
|
|
add r3, r8
|
|
ldrh r0, [r5, 0x1C]
|
|
adds r1, r0
|
|
strh r1, [r3]
|
|
asrs r0, r6, 16
|
|
ldrh r1, [r5, 0x1E]
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
lsrs r3, r0, 16
|
|
adds r2, 0x1
|
|
lsls r2, 16
|
|
lsrs r4, r2, 16
|
|
asrs r2, 16
|
|
movs r1, 0x26
|
|
ldrsh r0, [r5, r1]
|
|
cmp r2, r0
|
|
ble _080B3BCC
|
|
_080B3C42:
|
|
ldrh r0, [r5, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x17
|
|
ble _080B3C6A
|
|
b _080B3C58
|
|
_080B3C52:
|
|
ldr r1, _080B3C60 @ =gScanlineEffect
|
|
movs r0, 0x3
|
|
strb r0, [r1, 0x15]
|
|
_080B3C58:
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
b _080B3C6A
|
|
.align 2, 0
|
|
_080B3C60: .4byte gScanlineEffect
|
|
_080B3C64:
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B3C6A:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B3B78
|
|
|
|
thumb_func_start sub_80B3C78
|
|
sub_80B3C78: @ 80B3C78
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
mov r8, r4
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, _080B3CAC @ =gTasks
|
|
adds r7, r0, r1
|
|
bl AllocOamMatrix
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
mov r10, r5
|
|
adds r6, r5, 0
|
|
cmp r6, 0xFF
|
|
bne _080B3CB0
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
b _080B3D5A
|
|
.align 2, 0
|
|
_080B3CAC: .4byte gTasks
|
|
_080B3CB0:
|
|
ldr r1, _080B3CD4 @ =gBattleAnimArgs
|
|
ldrb r0, [r1]
|
|
bl duplicate_obj_of_side_rel2move_in_transparent_mode
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
mov r9, r1
|
|
asrs r0, 16
|
|
cmp r0, 0
|
|
bge _080B3CD8
|
|
adds r0, r5, 0
|
|
bl FreeOamMatrix
|
|
mov r0, r8
|
|
bl DestroyAnimVisualTask
|
|
b _080B3D5A
|
|
.align 2, 0
|
|
_080B3CD4: .4byte gBattleAnimArgs
|
|
_080B3CD8:
|
|
ldr r2, _080B3D68 @ =gSprites
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
adds r0, r2, 0
|
|
adds r0, 0x1C
|
|
adds r0, r4, r0
|
|
ldr r1, _080B3D6C @ =SpriteCallbackDummy
|
|
str r1, [r0]
|
|
adds r4, r2
|
|
ldrb r0, [r4, 0x1]
|
|
movs r1, 0x3
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x1]
|
|
movs r0, 0x1F
|
|
ands r6, r0
|
|
lsls r2, r6, 1
|
|
ldrb r1, [r4, 0x3]
|
|
movs r0, 0x3F
|
|
negs r0, r0
|
|
ands r0, r1
|
|
orrs r0, r2
|
|
strb r0, [r4, 0x3]
|
|
adds r2, r4, 0
|
|
adds r2, 0x2C
|
|
ldrb r0, [r2]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
adds r1, r4, 0
|
|
adds r1, 0x43
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
mov r1, r9
|
|
lsls r0, r1, 24
|
|
lsrs r0, 24
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r1, r2, 0
|
|
movs r3, 0
|
|
bl obj_id_set_rotscale
|
|
ldrb r3, [r4, 0x1]
|
|
lsrs r1, r3, 6
|
|
ldrb r2, [r4, 0x3]
|
|
lsrs r2, 6
|
|
lsls r3, 30
|
|
lsrs r3, 30
|
|
adds r0, r4, 0
|
|
bl CalcCenterToCornerVec
|
|
ldr r1, _080B3D70 @ =gBattleAnimArgs
|
|
ldrb r0, [r1]
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r7, 0x22]
|
|
mov r0, r10
|
|
strh r0, [r7, 0x24]
|
|
mov r1, r9
|
|
strh r1, [r7, 0x26]
|
|
ldr r0, _080B3D74 @ =sub_80B3D78
|
|
str r0, [r7]
|
|
_080B3D5A:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B3D68: .4byte gSprites
|
|
_080B3D6C: .4byte SpriteCallbackDummy
|
|
_080B3D70: .4byte gBattleAnimArgs
|
|
_080B3D74: .4byte sub_80B3D78
|
|
thumb_func_end sub_80B3C78
|
|
|
|
thumb_func_start sub_80B3D78
|
|
sub_80B3D78: @ 80B3D78
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _080B3D9C @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _080B3DFC
|
|
cmp r0, 0x1
|
|
bgt _080B3DA0
|
|
cmp r0, 0
|
|
beq _080B3DAA
|
|
b _080B3E7C
|
|
.align 2, 0
|
|
_080B3D9C: .4byte gTasks
|
|
_080B3DA0:
|
|
cmp r0, 0x2
|
|
beq _080B3E4C
|
|
cmp r0, 0x3
|
|
beq _080B3E6C
|
|
b _080B3E7C
|
|
_080B3DAA:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x4
|
|
strh r0, [r4, 0xA]
|
|
ldr r1, _080B3DF8 @ =gSineTable
|
|
movs r2, 0xA
|
|
ldrsh r0, [r4, r2]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
lsls r1, 16
|
|
asrs r1, 17
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r0, r2, 0
|
|
subs r0, r1
|
|
strh r0, [r4, 0xC]
|
|
ldrh r0, [r4, 0x26]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0xC
|
|
ldrsh r2, [r4, r1]
|
|
adds r1, r2, 0
|
|
movs r3, 0
|
|
bl obj_id_set_rotscale
|
|
ldrh r0, [r4, 0x26]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x22]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
bl sub_8076494
|
|
movs r2, 0xA
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x30
|
|
bne _080B3E7C
|
|
b _080B3E5E
|
|
.align 2, 0
|
|
_080B3DF8: .4byte gSineTable
|
|
_080B3DFC:
|
|
ldrh r0, [r4, 0xA]
|
|
subs r0, 0x4
|
|
strh r0, [r4, 0xA]
|
|
ldr r1, _080B3E48 @ =gSineTable
|
|
movs r2, 0xA
|
|
ldrsh r0, [r4, r2]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
lsls r1, 16
|
|
asrs r1, 17
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r0, r2, 0
|
|
subs r0, r1
|
|
strh r0, [r4, 0xC]
|
|
ldrh r0, [r4, 0x26]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0xC
|
|
ldrsh r2, [r4, r1]
|
|
adds r1, r2, 0
|
|
movs r3, 0
|
|
bl obj_id_set_rotscale
|
|
ldrh r0, [r4, 0x26]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x22]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
bl sub_8076494
|
|
movs r2, 0xA
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bne _080B3E7C
|
|
b _080B3E5E
|
|
.align 2, 0
|
|
_080B3E48: .4byte gSineTable
|
|
_080B3E4C:
|
|
movs r0, 0x26
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _080B3E68 @ =gSprites
|
|
adds r0, r1
|
|
bl obj_delete_but_dont_free_vram
|
|
_080B3E5E:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080B3E7C
|
|
.align 2, 0
|
|
_080B3E68: .4byte gSprites
|
|
_080B3E6C:
|
|
ldrh r0, [r4, 0x24]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl FreeOamMatrix
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B3E7C:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B3D78
|
|
|
|
thumb_func_start sub_80B3E84
|
|
sub_80B3E84: @ 80B3E84
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x1
|
|
beq _080B3EFC
|
|
cmp r0, 0x1
|
|
bgt _080B3E9A
|
|
cmp r0, 0
|
|
beq _080B3EA4
|
|
b _080B3FA4
|
|
_080B3E9A:
|
|
cmp r0, 0x2
|
|
beq _080B3F2E
|
|
cmp r0, 0x3
|
|
beq _080B3F8E
|
|
b _080B3FA4
|
|
_080B3EA4:
|
|
ldr r4, _080B3EF8 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B3ED2
|
|
ldrh r0, [r5, 0x22]
|
|
adds r0, 0xC
|
|
strh r0, [r5, 0x22]
|
|
_080B3ED2:
|
|
movs r0, 0x8
|
|
strh r0, [r5, 0x30]
|
|
movs r1, 0xFD
|
|
lsls r1, 6
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
ldrh r0, [r5, 0x30]
|
|
movs r1, 0x10
|
|
subs r1, r0
|
|
lsls r1, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
b _080B3F26
|
|
.align 2, 0
|
|
_080B3EF8: .4byte gBattleAnimAttacker
|
|
_080B3EFC:
|
|
adds r0, r5, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B3FA4
|
|
movs r0, 0x40
|
|
negs r0, r0
|
|
bl sub_8073A44
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r0, 0xC4
|
|
bl PlaySE12WithPanning
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl ChangeSpriteAffineAnim
|
|
_080B3F26:
|
|
ldrh r0, [r5, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
b _080B3FA4
|
|
_080B3F2E:
|
|
ldrh r0, [r5, 0x32]
|
|
adds r1, r0, 0x1
|
|
strh r1, [r5, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080B3F72
|
|
movs r0, 0
|
|
strh r0, [r5, 0x32]
|
|
ldrh r1, [r5, 0x30]
|
|
subs r1, 0x1
|
|
strh r1, [r5, 0x30]
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r1, 0x30
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _080B3F72
|
|
ldrh r0, [r5, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
adds r2, r5, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
_080B3F72:
|
|
movs r0, 0xE0
|
|
lsls r0, 2
|
|
adds r2, r0, 0
|
|
ldrh r1, [r5, 0x34]
|
|
adds r2, r1
|
|
lsls r1, r2, 16
|
|
asrs r1, 24
|
|
ldrh r0, [r5, 0x26]
|
|
subs r0, r1
|
|
strh r0, [r5, 0x26]
|
|
movs r0, 0xFF
|
|
ands r2, r0
|
|
strh r2, [r5, 0x34]
|
|
b _080B3FA4
|
|
_080B3F8E:
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
adds r0, r5, 0
|
|
bl DestroyAnimSprite
|
|
_080B3FA4:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B3E84
|
|
|
|
thumb_func_start sub_80B3FAC
|
|
sub_80B3FAC: @ 80B3FAC
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B3FD8
|
|
adds r0, r6, 0
|
|
movs r1, 0x2
|
|
bl StartSpriteAffineAnim
|
|
ldr r0, _080B3FD4 @ =gBattleAnimArgs
|
|
ldrh r1, [r0, 0x4]
|
|
negs r1, r1
|
|
strh r1, [r0, 0x4]
|
|
ldrh r1, [r0]
|
|
negs r1, r1
|
|
strh r1, [r0]
|
|
b _080B4008
|
|
.align 2, 0
|
|
_080B3FD4: .4byte gBattleAnimArgs
|
|
_080B3FD8:
|
|
ldr r0, _080B406C @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B4008
|
|
adds r0, r6, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
ldr r1, _080B4070 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x2]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x2]
|
|
ldrh r0, [r1, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x4]
|
|
ldrh r0, [r1, 0x6]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x6]
|
|
ldrh r0, [r1]
|
|
negs r0, r0
|
|
strh r0, [r1]
|
|
_080B4008:
|
|
ldr r5, _080B406C @ =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl sub_8074844
|
|
lsls r0, 24
|
|
ldr r4, _080B4070 @ =gBattleAnimArgs
|
|
lsrs r0, 24
|
|
ldrh r1, [r4]
|
|
adds r0, r1
|
|
strh r0, [r6, 0x20]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl sub_8074844
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x2]
|
|
adds r0, r1
|
|
strh r0, [r6, 0x22]
|
|
ldrh r0, [r4, 0x8]
|
|
strh r0, [r6, 0x2E]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x4]
|
|
adds r0, r1
|
|
strh r0, [r6, 0x32]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r4, [r4, 0x6]
|
|
adds r0, r4
|
|
strh r0, [r6, 0x36]
|
|
ldr r0, _080B4074 @ =sub_8075590
|
|
str r0, [r6, 0x1C]
|
|
ldr r1, _080B4078 @ =DestroyAnimSprite
|
|
adds r0, r6, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B406C: .4byte gBattleAnimTarget
|
|
_080B4070: .4byte gBattleAnimArgs
|
|
_080B4074: .4byte sub_8075590
|
|
_080B4078: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80B3FAC
|
|
|
|
thumb_func_start sub_80B407C
|
|
sub_80B407C: @ 80B407C
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B40A0
|
|
ldr r1, _080B409C @ =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
negs r0, r0
|
|
strh r0, [r1]
|
|
adds r0, r6, 0
|
|
movs r1, 0x2
|
|
bl StartSpriteAffineAnim
|
|
b _080B40BC
|
|
.align 2, 0
|
|
_080B409C: .4byte gBattleAnimArgs
|
|
_080B40A0:
|
|
ldr r0, _080B4118 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B40BC
|
|
ldr r0, _080B411C @ =gBattleAnimArgs
|
|
ldrh r1, [r0, 0x2]
|
|
negs r1, r1
|
|
strh r1, [r0, 0x2]
|
|
ldrh r1, [r0]
|
|
negs r1, r1
|
|
strh r1, [r0]
|
|
_080B40BC:
|
|
ldr r5, _080B4118 @ =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl sub_8074844
|
|
lsls r0, 24
|
|
ldr r4, _080B411C @ =gBattleAnimArgs
|
|
lsrs r0, 24
|
|
ldrh r1, [r4]
|
|
adds r0, r1
|
|
strh r0, [r6, 0x20]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl sub_8074844
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x2]
|
|
adds r0, r1
|
|
strh r0, [r6, 0x22]
|
|
ldrh r0, [r4, 0x4]
|
|
strh r0, [r6, 0x2E]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r6, 0x32]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r6, 0x36]
|
|
ldr r0, _080B4120 @ =sub_8075590
|
|
str r0, [r6, 0x1C]
|
|
ldr r1, _080B4124 @ =DestroyAnimSprite
|
|
adds r0, r6, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B4118: .4byte gBattleAnimTarget
|
|
_080B411C: .4byte gBattleAnimArgs
|
|
_080B4120: .4byte sub_8075590
|
|
_080B4124: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80B407C
|
|
|
|
thumb_func_start sub_80B4128
|
|
sub_80B4128: @ 80B4128
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B4144
|
|
ldr r0, _080B4184 @ =gBattleAnimArgs
|
|
movs r2, 0x4
|
|
ldrsh r1, [r0, r2]
|
|
lsrs r2, r1, 31
|
|
adds r1, r2
|
|
asrs r1, 1
|
|
strh r1, [r0, 0x4]
|
|
_080B4144:
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r1, _080B4184 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
strh r0, [r5, 0x2E]
|
|
ldrh r0, [r5, 0x20]
|
|
strh r0, [r5, 0x30]
|
|
ldrh r0, [r5, 0x22]
|
|
strh r0, [r5, 0x34]
|
|
movs r2, 0x8
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
bne _080B418C
|
|
ldr r4, _080B4188 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x32]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x36]
|
|
b _080B419E
|
|
.align 2, 0
|
|
_080B4184: .4byte gBattleAnimArgs
|
|
_080B4188: .4byte gBattleAnimTarget
|
|
_080B418C:
|
|
ldr r0, _080B41B4 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
adds r2, r5, 0
|
|
adds r2, 0x32
|
|
adds r3, r5, 0
|
|
adds r3, 0x36
|
|
movs r1, 0x1
|
|
bl sub_8076D9C
|
|
_080B419E:
|
|
adds r0, r5, 0
|
|
bl sub_8075678
|
|
ldr r0, _080B41B8 @ =gBattleAnimArgs
|
|
ldrh r0, [r0, 0x6]
|
|
strh r0, [r5, 0x38]
|
|
ldr r0, _080B41BC @ =sub_80B41C0
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B41B4: .4byte gBattleAnimTarget
|
|
_080B41B8: .4byte gBattleAnimArgs
|
|
_080B41BC: .4byte sub_80B41C0
|
|
thumb_func_end sub_80B4128
|
|
|
|
thumb_func_start sub_80B41C0
|
|
sub_80B41C0: @ 80B41C0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80755E0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B41D6
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
b _080B41F2
|
|
_080B41D6:
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x38
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
ldrh r1, [r4, 0x24]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x24]
|
|
ldrh r0, [r4, 0x3A]
|
|
adds r0, 0xD
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x3A]
|
|
_080B41F2:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B41C0
|
|
|
|
thumb_func_start sub_80B41F8
|
|
sub_80B41F8: @ 80B41F8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _080B4228 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
adds r2, r4, 0
|
|
adds r2, 0x20
|
|
adds r3, r4, 0
|
|
adds r3, 0x22
|
|
movs r1, 0
|
|
bl sub_8076D9C
|
|
ldr r0, _080B422C @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B4234
|
|
ldr r0, _080B4230 @ =gBattleAnimArgs
|
|
ldrh r1, [r4, 0x20]
|
|
ldrh r2, [r0]
|
|
subs r1, r2
|
|
strh r1, [r4, 0x20]
|
|
b _080B4240
|
|
.align 2, 0
|
|
_080B4228: .4byte gBattleAnimTarget
|
|
_080B422C: .4byte gBattleAnimAttacker
|
|
_080B4230: .4byte gBattleAnimArgs
|
|
_080B4234:
|
|
ldr r1, _080B4268 @ =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x20]
|
|
adds r0, r1, 0
|
|
_080B4240:
|
|
ldrh r0, [r0, 0x2]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x22]
|
|
ldr r0, _080B426C @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B425C
|
|
ldrh r0, [r4, 0x22]
|
|
adds r0, 0x8
|
|
strh r0, [r4, 0x22]
|
|
_080B425C:
|
|
ldr r0, _080B4270 @ =sub_80B4274
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B4268: .4byte gBattleAnimArgs
|
|
_080B426C: .4byte gBattleAnimTarget
|
|
_080B4270: .4byte sub_80B4274
|
|
thumb_func_end sub_80B41F8
|
|
|
|
thumb_func_start sub_80B4274
|
|
sub_80B4274: @ 80B4274
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
ldrh r0, [r3, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x3
|
|
bne _080B42A8
|
|
movs r0, 0
|
|
strh r0, [r3, 0x2E]
|
|
movs r0, 0x3E
|
|
adds r0, r3
|
|
mov r12, r0
|
|
ldrb r2, [r0]
|
|
lsls r0, r2, 29
|
|
lsrs r0, 31
|
|
movs r1, 0x1
|
|
eors r1, r0
|
|
lsls r1, 2
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
mov r1, r12
|
|
strb r0, [r1]
|
|
_080B42A8:
|
|
ldrh r0, [r3, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x33
|
|
bne _080B42BC
|
|
adds r0, r3, 0
|
|
bl DestroyAnimSprite
|
|
_080B42BC:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B4274
|
|
|
|
thumb_func_start sub_80B42C0
|
|
sub_80B42C0: @ 80B42C0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0xFD
|
|
lsls r1, 6
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0x10
|
|
bl SetGpuReg
|
|
movs r0, 0x10
|
|
strh r0, [r4, 0x2E]
|
|
ldr r0, _080B42E4 @ =sub_80B42E8
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B42E4: .4byte sub_80B42E8
|
|
thumb_func_end sub_80B42C0
|
|
|
|
thumb_func_start sub_80B42E8
|
|
sub_80B42E8: @ 80B42E8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x32]
|
|
movs r2, 0x32
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x13
|
|
bgt _080B42FC
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0x32]
|
|
b _080B433A
|
|
_080B42FC:
|
|
ldrh r1, [r4, 0x30]
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0x30]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B433A
|
|
ldrh r1, [r4, 0x2E]
|
|
subs r1, 0x1
|
|
strh r1, [r4, 0x2E]
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080B433A
|
|
adds r2, r4, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, _080B4340 @ =sub_80B4344
|
|
str r0, [r4, 0x1C]
|
|
_080B433A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B4340: .4byte sub_80B4344
|
|
thumb_func_end sub_80B42E8
|
|
|
|
thumb_func_start sub_80B4344
|
|
sub_80B4344: @ 80B4344
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B4344
|
|
|
|
thumb_func_start sub_80B4364
|
|
sub_80B4364: @ 80B4364
|
|
push {r4-r7,lr}
|
|
sub sp, 0x4
|
|
adds r7, r0, 0
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B4384
|
|
ldr r1, _080B4380 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x4]
|
|
b _080B43A6
|
|
.align 2, 0
|
|
_080B4380: .4byte gBattleAnimArgs
|
|
_080B4384:
|
|
ldr r0, _080B4480 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B43A6
|
|
ldr r1, _080B4484 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x4]
|
|
ldrh r0, [r1, 0x2]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x2]
|
|
ldrh r0, [r1, 0x6]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x6]
|
|
_080B43A6:
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B43F6
|
|
ldr r0, _080B4480 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
adds r4, r0, 0
|
|
ldr r5, _080B4488 @ =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
bl GetBattlerSide
|
|
lsls r4, 24
|
|
lsls r0, 24
|
|
cmp r4, r0
|
|
bne _080B43F6
|
|
ldrb r0, [r5]
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B43E4
|
|
ldrb r0, [r5]
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080B43F6
|
|
_080B43E4:
|
|
ldr r0, _080B4484 @ =gBattleAnimArgs
|
|
movs r2, 0x4
|
|
ldrsh r1, [r0, r2]
|
|
negs r1, r1
|
|
strh r1, [r0, 0x4]
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
negs r1, r1
|
|
strh r1, [r0]
|
|
_080B43F6:
|
|
adds r0, r7, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r5, _080B4488 @ =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
ldr r6, _080B4484 @ =gBattleAnimArgs
|
|
lsrs r4, 24
|
|
ldrh r0, [r6, 0x4]
|
|
adds r4, r0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldrh r2, [r6, 0x6]
|
|
adds r1, r2
|
|
lsls r1, 16
|
|
ldrh r2, [r7, 0x20]
|
|
lsls r0, r4, 16
|
|
asrs r0, 16
|
|
subs r0, r2
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldrh r2, [r7, 0x22]
|
|
lsrs r5, r1, 16
|
|
asrs r1, 16
|
|
subs r1, r2
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl sub_8075B30
|
|
lsls r0, 16
|
|
movs r1, 0xC0
|
|
lsls r1, 24
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
movs r3, 0x80
|
|
lsls r3, 1
|
|
str r0, [sp]
|
|
adds r0, r7, 0
|
|
movs r1, 0
|
|
adds r2, r3, 0
|
|
bl sub_8075A1C
|
|
ldrh r0, [r6, 0x8]
|
|
strh r0, [r7, 0x2E]
|
|
strh r4, [r7, 0x32]
|
|
strh r5, [r7, 0x36]
|
|
ldr r0, _080B448C @ =sub_8075590
|
|
str r0, [r7, 0x1C]
|
|
ldr r1, _080B4490 @ =DestroyAnimSprite
|
|
adds r0, r7, 0
|
|
bl StoreSpriteCallbackInData6
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B4480: .4byte gBattleAnimAttacker
|
|
_080B4484: .4byte gBattleAnimArgs
|
|
_080B4488: .4byte gBattleAnimTarget
|
|
_080B448C: .4byte sub_8075590
|
|
_080B4490: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80B4364
|
|
|
|
thumb_func_start sub_80B4494
|
|
sub_80B4494: @ 80B4494
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r0, _080B4500 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B44B4
|
|
ldr r1, _080B4504 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x4]
|
|
_080B44B4:
|
|
ldr r4, _080B4504 @ =gBattleAnimArgs
|
|
ldrh r0, [r4, 0x8]
|
|
strh r0, [r6, 0x2E]
|
|
ldr r5, _080B4508 @ =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x4]
|
|
adds r0, r1
|
|
strh r0, [r6, 0x32]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x6]
|
|
adds r0, r1
|
|
strh r0, [r6, 0x36]
|
|
ldrh r0, [r4, 0xA]
|
|
strh r0, [r6, 0x38]
|
|
adds r0, r6, 0
|
|
bl sub_8075068
|
|
ldr r0, _080B450C @ =sub_80B4510
|
|
str r0, [r6, 0x1C]
|
|
adds r2, r6, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B4500: .4byte gBattleAnimAttacker
|
|
_080B4504: .4byte gBattleAnimArgs
|
|
_080B4508: .4byte gBattleAnimTarget
|
|
_080B450C: .4byte sub_80B4510
|
|
thumb_func_end sub_80B4494
|
|
|
|
thumb_func_start sub_80B4510
|
|
sub_80B4510: @ 80B4510
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x14
|
|
adds r4, r0, 0
|
|
adds r2, r4, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x5
|
|
negs r1, r1
|
|
ands r1, r0
|
|
strb r1, [r2]
|
|
adds r0, r4, 0
|
|
bl AnimateBallThrow
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B453C
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
b _080B45CC
|
|
_080B453C:
|
|
movs r0, 0x2E
|
|
adds r0, r4
|
|
mov r8, r0
|
|
ldrh r7, [r4, 0x20]
|
|
ldrh r5, [r4, 0x24]
|
|
ldrh r1, [r4, 0x22]
|
|
mov r12, r1
|
|
ldrh r6, [r4, 0x26]
|
|
mov r2, r8
|
|
add r1, sp, 0x4
|
|
movs r3, 0x7
|
|
_080B4552:
|
|
ldrh r0, [r2]
|
|
strh r0, [r1]
|
|
adds r2, 0x2
|
|
adds r1, 0x2
|
|
subs r3, 0x1
|
|
cmp r3, 0
|
|
bge _080B4552
|
|
adds r0, r7, r5
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
mov r2, r12
|
|
adds r0, r2, r6
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
adds r0, r4, 0
|
|
bl AnimateBallThrow
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B45CC
|
|
ldrh r0, [r4, 0x24]
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
lsls r1, r5, 16
|
|
asrs r1, 16
|
|
subs r0, r1
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldrh r1, [r4, 0x26]
|
|
ldrh r2, [r4, 0x22]
|
|
adds r1, r2
|
|
lsls r2, r6, 16
|
|
asrs r2, 16
|
|
subs r1, r2
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl sub_8075B30
|
|
lsls r0, 16
|
|
movs r1, 0xC0
|
|
lsls r1, 24
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
movs r3, 0x80
|
|
lsls r3, 1
|
|
str r0, [sp]
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
adds r2, r3, 0
|
|
bl sub_8075A1C
|
|
add r2, sp, 0x4
|
|
mov r1, r8
|
|
movs r3, 0x7
|
|
_080B45BE:
|
|
ldrh r0, [r2]
|
|
strh r0, [r1]
|
|
adds r2, 0x2
|
|
adds r1, 0x2
|
|
subs r3, 0x1
|
|
cmp r3, 0
|
|
bge _080B45BE
|
|
_080B45CC:
|
|
add sp, 0x14
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B4510
|
|
|
|
thumb_func_start sub_80B45D8
|
|
sub_80B45D8: @ 80B45D8
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _080B45EC @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080B45F4
|
|
ldr r4, _080B45F0 @ =gBattleAnimAttacker
|
|
b _080B45F6
|
|
.align 2, 0
|
|
_080B45EC: .4byte gBattleAnimArgs
|
|
_080B45F0: .4byte gBattleAnimAttacker
|
|
_080B45F4:
|
|
ldr r4, _080B4628 @ =gBattleAnimTarget
|
|
_080B45F6:
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x12
|
|
strh r0, [r5, 0x22]
|
|
ldr r1, _080B462C @ =move_anim_8074EE0
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, _080B4630 @ =sub_8074F50
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B4628: .4byte gBattleAnimTarget
|
|
_080B462C: .4byte move_anim_8074EE0
|
|
_080B4630: .4byte sub_8074F50
|
|
thumb_func_end sub_80B45D8
|
|
|
|
thumb_func_start sub_80B4634
|
|
sub_80B4634: @ 80B4634
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldr r6, _080B46A0 @ =gBattleAnimArgs
|
|
movs r1, 0x6
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
beq _080B4654
|
|
ldr r0, _080B46A4 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
adds r2, r5, 0
|
|
adds r2, 0x20
|
|
adds r3, r5, 0
|
|
adds r3, 0x22
|
|
movs r1, 0
|
|
bl sub_8076D9C
|
|
_080B4654:
|
|
ldrh r0, [r6]
|
|
ldrh r1, [r5, 0x20]
|
|
adds r0, r1
|
|
movs r4, 0
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r5, 0x22]
|
|
adds r0, 0xE
|
|
strh r0, [r5, 0x22]
|
|
ldrb r1, [r6, 0x2]
|
|
adds r0, r5, 0
|
|
bl StartSpriteAnim
|
|
adds r0, r5, 0
|
|
bl AnimateSprite
|
|
strh r4, [r5, 0x2E]
|
|
strh r4, [r5, 0x30]
|
|
movs r0, 0x4
|
|
strh r0, [r5, 0x32]
|
|
movs r0, 0x10
|
|
strh r0, [r5, 0x34]
|
|
ldr r0, _080B46A8 @ =0x0000ffba
|
|
strh r0, [r5, 0x36]
|
|
ldrh r0, [r6, 0x4]
|
|
strh r0, [r5, 0x38]
|
|
ldr r1, _080B46AC @ =sub_80B46B4
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r1, _080B46B0 @ =sub_8074BE4
|
|
str r1, [r5, 0x1C]
|
|
adds r0, r5, 0
|
|
bl _call_via_r1
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B46A0: .4byte gBattleAnimArgs
|
|
_080B46A4: .4byte gBattleAnimTarget
|
|
_080B46A8: .4byte 0x0000ffba
|
|
_080B46AC: .4byte sub_80B46B4
|
|
_080B46B0: .4byte sub_8074BE4
|
|
thumb_func_end sub_80B4634
|
|
|
|
thumb_func_start sub_80B46B4
|
|
sub_80B46B4: @ 80B46B4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x38]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r1, r2
|
|
strh r0, [r4, 0x20]
|
|
movs r0, 0xC0
|
|
strh r0, [r4, 0x2E]
|
|
strh r1, [r4, 0x30]
|
|
movs r0, 0x4
|
|
strh r0, [r4, 0x32]
|
|
movs r0, 0x20
|
|
strh r0, [r4, 0x34]
|
|
ldr r0, _080B46EC @ =0x0000ffe8
|
|
strh r0, [r4, 0x36]
|
|
ldr r1, _080B46F0 @ =move_anim_8074EE0
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r1, _080B46F4 @ =sub_8074BE4
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B46EC: .4byte 0x0000ffe8
|
|
_080B46F0: .4byte move_anim_8074EE0
|
|
_080B46F4: .4byte sub_8074BE4
|
|
thumb_func_end sub_80B46B4
|
|
|
|
thumb_func_start sub_80B46F8
|
|
sub_80B46F8: @ 80B46F8
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080B4720 @ =gBattleAnimArgs
|
|
ldrb r1, [r4, 0xA]
|
|
bl StartSpriteAnim
|
|
adds r0, r5, 0
|
|
bl AnimateSprite
|
|
ldr r0, _080B4724 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B4728
|
|
ldrh r0, [r5, 0x20]
|
|
ldrh r1, [r4]
|
|
subs r0, r1
|
|
b _080B472E
|
|
.align 2, 0
|
|
_080B4720: .4byte gBattleAnimArgs
|
|
_080B4724: .4byte gBattleAnimAttacker
|
|
_080B4728:
|
|
ldrh r0, [r4]
|
|
ldrh r1, [r5, 0x20]
|
|
adds r0, r1
|
|
_080B472E:
|
|
strh r0, [r5, 0x20]
|
|
ldr r3, _080B4770 @ =gBattleAnimArgs
|
|
ldrh r2, [r3, 0x2]
|
|
ldrh r0, [r5, 0x22]
|
|
adds r2, r0
|
|
movs r4, 0
|
|
strh r2, [r5, 0x22]
|
|
ldrh r0, [r3, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
ldrh r0, [r5, 0x20]
|
|
strh r0, [r5, 0x30]
|
|
ldrh r1, [r3, 0x4]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x32]
|
|
strh r2, [r5, 0x34]
|
|
ldrh r0, [r3, 0x6]
|
|
adds r2, r0
|
|
strh r2, [r5, 0x36]
|
|
adds r0, r5, 0
|
|
bl sub_80754B8
|
|
strh r4, [r5, 0x34]
|
|
strh r4, [r5, 0x36]
|
|
ldr r0, _080B4774 @ =sub_8074D00
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, _080B4778 @ =move_anim_8074EE0
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B4770: .4byte gBattleAnimArgs
|
|
_080B4774: .4byte sub_8074D00
|
|
_080B4778: .4byte move_anim_8074EE0
|
|
thumb_func_end sub_80B46F8
|
|
|
|
thumb_func_start sub_80B477C
|
|
sub_80B477C: @ 80B477C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _080B4794 @ =gBattleAnimArgs
|
|
movs r1, 0xC
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080B4798
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl sub_8075160
|
|
b _080B47A0
|
|
.align 2, 0
|
|
_080B4794: .4byte gBattleAnimArgs
|
|
_080B4798:
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl sub_8075114
|
|
_080B47A0:
|
|
ldr r1, _080B47BC @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x6]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r1, 0x4]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r1, 0x8]
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r1, 0xA]
|
|
strh r0, [r4, 0x34]
|
|
ldr r0, _080B47C0 @ =sub_80B47C4
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B47BC: .4byte gBattleAnimArgs
|
|
_080B47C0: .4byte sub_80B47C4
|
|
thumb_func_end sub_80B477C
|
|
|
|
thumb_func_start sub_80B47C4
|
|
sub_80B47C4: @ 80B47C4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x30]
|
|
ldrh r1, [r4, 0x36]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x36]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
negs r0, r0
|
|
strh r0, [r4, 0x26]
|
|
movs r2, 0x38
|
|
ldrsh r0, [r4, r2]
|
|
movs r2, 0x34
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
strh r0, [r4, 0x24]
|
|
ldrh r0, [r4, 0x32]
|
|
ldrh r1, [r4, 0x38]
|
|
adds r0, r1
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x38]
|
|
ldrh r0, [r4, 0x2E]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bne _080B480A
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B480A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B47C4
|
|
|
|
thumb_func_start do_boulder_dust
|
|
do_boulder_dust: @ 80B4810
|
|
push {r4-r6,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
movs r5, 0
|
|
ldr r1, _080B48E4 @ =0x00003f42
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r0, 0x1
|
|
movs r1, 0x4
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B4854
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
_080B4854:
|
|
ldr r0, _080B48E8 @ =gBattle_BG1_X
|
|
strh r5, [r0]
|
|
ldr r4, _080B48EC @ =gBattle_BG1_Y
|
|
strh r5, [r4]
|
|
movs r0, 0x14
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldrh r1, [r4]
|
|
movs r0, 0x16
|
|
bl SetGpuReg
|
|
mov r0, sp
|
|
bl sub_80752A0
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080B48F0 @ =gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap
|
|
bl sub_807543C
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080B48F4 @ =gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet
|
|
mov r2, sp
|
|
ldrh r2, [r2, 0xA]
|
|
bl sub_80753B4
|
|
ldr r0, _080B48F8 @ =gFile_graphics_battle_anims_sprites_261_palette
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x8]
|
|
lsls r1, 4
|
|
movs r2, 0x20
|
|
bl LoadCompressedPalette
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B48B0
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x8]
|
|
ldr r1, [sp, 0x4]
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_80730C0
|
|
_080B48B0:
|
|
ldr r0, _080B48FC @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
beq _080B48CA
|
|
ldr r0, _080B4900 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B48CA
|
|
movs r5, 0x1
|
|
_080B48CA:
|
|
ldr r0, _080B4904 @ =gTasks
|
|
lsls r1, r6, 2
|
|
adds r1, r6
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
strh r5, [r1, 0x8]
|
|
ldr r0, _080B4908 @ =sub_80B490C
|
|
str r0, [r1]
|
|
add sp, 0x10
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B48E4: .4byte 0x00003f42
|
|
_080B48E8: .4byte gBattle_BG1_X
|
|
_080B48EC: .4byte gBattle_BG1_Y
|
|
_080B48F0: .4byte gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap
|
|
_080B48F4: .4byte gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet
|
|
_080B48F8: .4byte gFile_graphics_battle_anims_sprites_261_palette
|
|
_080B48FC: .4byte gBattleAnimArgs
|
|
_080B4900: .4byte gBattleAnimAttacker
|
|
_080B4904: .4byte gTasks
|
|
_080B4908: .4byte sub_80B490C
|
|
thumb_func_end do_boulder_dust
|
|
|
|
thumb_func_start sub_80B490C
|
|
sub_80B490C: @ 80B490C
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, _080B4934 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r2, 0x8
|
|
ldrsh r0, [r0, r2]
|
|
adds r2, r1, 0
|
|
cmp r0, 0
|
|
bne _080B4940
|
|
ldr r1, _080B4938 @ =gBattle_BG1_X
|
|
ldr r3, _080B493C @ =0x0000fffa
|
|
adds r0, r3, 0
|
|
ldrh r3, [r1]
|
|
adds r0, r3
|
|
b _080B4946
|
|
.align 2, 0
|
|
_080B4934: .4byte gTasks
|
|
_080B4938: .4byte gBattle_BG1_X
|
|
_080B493C: .4byte 0x0000fffa
|
|
_080B4940:
|
|
ldr r1, _080B4974 @ =gBattle_BG1_X
|
|
ldrh r0, [r1]
|
|
adds r0, 0x6
|
|
_080B4946:
|
|
strh r0, [r1]
|
|
ldr r1, _080B4978 @ =gBattle_BG1_Y
|
|
ldr r3, _080B497C @ =0x0000ffff
|
|
adds r0, r3, 0
|
|
ldrh r3, [r1]
|
|
adds r0, r3
|
|
strh r0, [r1]
|
|
lsls r1, r5, 2
|
|
adds r0, r1, r5
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
movs r3, 0x20
|
|
ldrsh r0, [r0, r3]
|
|
adds r4, r1, 0
|
|
cmp r0, 0x4
|
|
bls _080B4968
|
|
b _080B4A96
|
|
_080B4968:
|
|
lsls r0, 2
|
|
ldr r1, _080B4980 @ =_080B4984
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080B4974: .4byte gBattle_BG1_X
|
|
_080B4978: .4byte gBattle_BG1_Y
|
|
_080B497C: .4byte 0x0000ffff
|
|
_080B4980: .4byte _080B4984
|
|
.align 2, 0
|
|
_080B4984:
|
|
.4byte _080B4998
|
|
.4byte _080B49DA
|
|
.4byte _080B49F4
|
|
.4byte _080B4A36
|
|
.4byte _080B4A58
|
|
_080B4998:
|
|
adds r0, r4, r5
|
|
lsls r0, 3
|
|
adds r4, r0, r2
|
|
ldrh r0, [r4, 0x1C]
|
|
adds r0, 0x1
|
|
movs r5, 0
|
|
strh r0, [r4, 0x1C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
bne _080B4A96
|
|
strh r5, [r4, 0x1C]
|
|
ldrh r1, [r4, 0x1E]
|
|
adds r1, 0x1
|
|
strh r1, [r4, 0x1E]
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r1, 0x1E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x7
|
|
bne _080B4A96
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x20]
|
|
strh r5, [r4, 0x1E]
|
|
b _080B4A96
|
|
_080B49DA:
|
|
adds r0, r4, r5
|
|
lsls r0, 3
|
|
adds r1, r0, r2
|
|
ldrh r0, [r1, 0x1E]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x1E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x65
|
|
bne _080B4A96
|
|
movs r0, 0x7
|
|
strh r0, [r1, 0x1E]
|
|
b _080B4A4C
|
|
_080B49F4:
|
|
adds r0, r4, r5
|
|
lsls r0, 3
|
|
adds r4, r0, r2
|
|
ldrh r0, [r4, 0x1C]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x1C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
bne _080B4A96
|
|
movs r0, 0
|
|
strh r0, [r4, 0x1C]
|
|
ldrh r1, [r4, 0x1E]
|
|
subs r1, 0x1
|
|
strh r1, [r4, 0x1E]
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r2, 0x1E
|
|
ldrsh r1, [r4, r2]
|
|
cmp r1, 0
|
|
bne _080B4A96
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x20]
|
|
strh r1, [r4, 0x1E]
|
|
b _080B4A96
|
|
_080B4A36:
|
|
mov r0, sp
|
|
bl sub_80752A0
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
bl sub_8075358
|
|
ldr r0, _080B4A54 @ =gTasks
|
|
adds r1, r4, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
_080B4A4C:
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x20]
|
|
b _080B4A96
|
|
.align 2, 0
|
|
_080B4A54: .4byte gTasks
|
|
_080B4A58:
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B4A6C
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
_080B4A6C:
|
|
ldr r0, _080B4AA0 @ =gBattle_BG1_X
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, _080B4AA4 @ =gBattle_BG1_Y
|
|
strh r1, [r0]
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x1
|
|
movs r1, 0x4
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B4A96:
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B4AA0: .4byte gBattle_BG1_X
|
|
_080B4AA4: .4byte gBattle_BG1_Y
|
|
thumb_func_end sub_80B490C
|
|
|
|
thumb_func_start sub_80B4AA8
|
|
sub_80B4AA8: @ 80B4AA8
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _080B4B24
|
|
ldr r4, _080B4AEC @ =gBattleAnimArgs
|
|
movs r2, 0x6
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
beq _080B4AF4
|
|
ldr r0, _080B4AF0 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B4AF4
|
|
movs r0, 0x98
|
|
lsls r0, 1
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r4, 0x2]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x2]
|
|
movs r0, 0x1
|
|
strh r0, [r5, 0x38]
|
|
ldrb r1, [r5, 0x3]
|
|
subs r0, 0x40
|
|
ands r0, r1
|
|
movs r1, 0x10
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x3]
|
|
b _080B4AF8
|
|
.align 2, 0
|
|
_080B4AEC: .4byte gBattleAnimArgs
|
|
_080B4AF0: .4byte gBattleAnimAttacker
|
|
_080B4AF4:
|
|
ldr r0, _080B4B18 @ =0x0000ffc0
|
|
strh r0, [r5, 0x20]
|
|
_080B4AF8:
|
|
ldr r4, _080B4B1C @ =gBattleAnimArgs
|
|
ldrh r0, [r4]
|
|
strh r0, [r5, 0x22]
|
|
ldr r1, _080B4B20 @ =gUnknown_83E7470
|
|
adds r0, r5, 0
|
|
bl SetSubspriteTables
|
|
ldrh r0, [r4, 0x2]
|
|
strh r0, [r5, 0x30]
|
|
ldrh r0, [r4, 0x4]
|
|
strh r0, [r5, 0x32]
|
|
ldrh r0, [r5, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
b _080B4B80
|
|
.align 2, 0
|
|
_080B4B18: .4byte 0x0000ffc0
|
|
_080B4B1C: .4byte gBattleAnimArgs
|
|
_080B4B20: .4byte gUnknown_83E7470
|
|
_080B4B24:
|
|
ldrh r1, [r5, 0x30]
|
|
ldrh r3, [r5, 0x34]
|
|
adds r1, r3
|
|
ldrh r2, [r5, 0x32]
|
|
ldrh r0, [r5, 0x36]
|
|
adds r2, r0
|
|
lsls r0, r1, 16
|
|
asrs r0, 24
|
|
ldrh r3, [r5, 0x24]
|
|
adds r0, r3
|
|
strh r0, [r5, 0x24]
|
|
lsls r0, r2, 16
|
|
asrs r0, 24
|
|
ldrh r3, [r5, 0x26]
|
|
adds r0, r3
|
|
strh r0, [r5, 0x26]
|
|
movs r0, 0xFF
|
|
ands r1, r0
|
|
strh r1, [r5, 0x34]
|
|
ands r2, r0
|
|
strh r2, [r5, 0x36]
|
|
movs r1, 0x38
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _080B4B6A
|
|
movs r2, 0x20
|
|
ldrsh r0, [r5, r2]
|
|
movs r3, 0x24
|
|
ldrsh r1, [r5, r3]
|
|
adds r0, r1
|
|
movs r1, 0x88
|
|
lsls r1, 1
|
|
cmp r0, r1
|
|
ble _080B4B80
|
|
b _080B4B7C
|
|
_080B4B6A:
|
|
movs r1, 0x20
|
|
ldrsh r0, [r5, r1]
|
|
movs r2, 0x24
|
|
ldrsh r1, [r5, r2]
|
|
adds r0, r1
|
|
movs r1, 0x20
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bge _080B4B80
|
|
_080B4B7C:
|
|
ldr r0, _080B4B88 @ =DestroyAnimSprite
|
|
str r0, [r5, 0x1C]
|
|
_080B4B80:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B4B88: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80B4AA8
|
|
|
|
thumb_func_start sub_80B4B8C
|
|
sub_80B4B8C: @ 80B4B8C
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080B4BC4 @ =gBattleAnimArgs
|
|
ldrb r1, [r5, 0x8]
|
|
bl StartSpriteAnim
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl sub_8075160
|
|
ldrh r0, [r5, 0x6]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r5, 0x4]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x36]
|
|
ldr r0, _080B4BC8 @ =sub_8075590
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, _080B4BCC @ =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B4BC4: .4byte gBattleAnimArgs
|
|
_080B4BC8: .4byte sub_8075590
|
|
_080B4BCC: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80B4B8C
|
|
|
|
thumb_func_start sub_80B4BD0
|
|
sub_80B4BD0: @ 80B4BD0
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080B4C50 @ =gTasks
|
|
adds r6, r1, r0
|
|
ldr r5, _080B4C54 @ =gBattleAnimAttacker
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
ldrb r0, [r5]
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 8
|
|
movs r1, 0xC0
|
|
lsls r1, 13
|
|
adds r0, r1
|
|
lsrs r7, r0, 16
|
|
ldr r4, _080B4C58 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r10, r0
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 8
|
|
movs r2, 0xC0
|
|
lsls r2, 13
|
|
adds r0, r2
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
ldrb r1, [r5]
|
|
movs r0, 0x2
|
|
eors r0, r1
|
|
ldrb r4, [r4]
|
|
cmp r0, r4
|
|
bne _080B4C40
|
|
mov r8, r7
|
|
_080B4C40:
|
|
bl sub_80B4FB8
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0x1
|
|
bne _080B4C5C
|
|
movs r0, 0x20
|
|
b _080B4C62
|
|
.align 2, 0
|
|
_080B4C50: .4byte gTasks
|
|
_080B4C54: .4byte gBattleAnimAttacker
|
|
_080B4C58: .4byte gBattleAnimTarget
|
|
_080B4C5C:
|
|
lsls r1, r5, 3
|
|
movs r0, 0x30
|
|
subs r0, r1
|
|
_080B4C62:
|
|
strh r0, [r6, 0x18]
|
|
movs r4, 0
|
|
strh r4, [r6, 0x8]
|
|
strh r4, [r6, 0x1E]
|
|
strh r4, [r6, 0x1A]
|
|
movs r0, 0x1
|
|
strh r0, [r6, 0x20]
|
|
movs r1, 0x18
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
bge _080B4C7A
|
|
adds r0, 0x7
|
|
_080B4C7A:
|
|
asrs r0, 3
|
|
subs r0, 0x1
|
|
strh r0, [r6, 0x1C]
|
|
mov r2, r9
|
|
lsls r0, r2, 3
|
|
strh r0, [r6, 0xC]
|
|
lsls r0, r7, 3
|
|
strh r0, [r6, 0xE]
|
|
mov r1, r10
|
|
subs r0, r1, r2
|
|
lsls r0, 3
|
|
movs r2, 0x18
|
|
ldrsh r1, [r6, r2]
|
|
bl __divsi3
|
|
strh r0, [r6, 0x10]
|
|
mov r1, r8
|
|
subs r0, r1, r7
|
|
lsls r0, 3
|
|
movs r2, 0x18
|
|
ldrsh r1, [r6, r2]
|
|
bl __divsi3
|
|
strh r0, [r6, 0x12]
|
|
strh r4, [r6, 0x14]
|
|
strh r4, [r6, 0x16]
|
|
movs r0, 0x40
|
|
negs r0, r0
|
|
bl sub_8073A44
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
asrs r4, 8
|
|
lsrs r4, 16
|
|
movs r0, 0x3F
|
|
bl sub_8073A44
|
|
lsls r0, 24
|
|
strh r4, [r6, 0x22]
|
|
asrs r0, 24
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
subs r0, r4
|
|
movs r2, 0x18
|
|
ldrsh r1, [r6, r2]
|
|
bl __divsi3
|
|
strh r0, [r6, 0x24]
|
|
strh r5, [r6, 0xA]
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r6, 0x26]
|
|
ldr r0, _080B4CFC @ =sub_80B4D00
|
|
str r0, [r6]
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B4CFC: .4byte sub_80B4D00
|
|
thumb_func_end sub_80B4BD0
|
|
|
|
thumb_func_start sub_80B4D00
|
|
sub_80B4D00: @ 80B4D00
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _080B4D24 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x4
|
|
bls _080B4D1A
|
|
b _080B4E68
|
|
_080B4D1A:
|
|
lsls r0, 2
|
|
ldr r1, _080B4D28 @ =_080B4D2C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080B4D24: .4byte gTasks
|
|
_080B4D28: .4byte _080B4D2C
|
|
.align 2, 0
|
|
_080B4D2C:
|
|
.4byte _080B4D40
|
|
.4byte _080B4DA4
|
|
.4byte _080B4DAC
|
|
.4byte _080B4E08
|
|
.4byte _080B4E5A
|
|
_080B4D40:
|
|
ldrh r2, [r4, 0x14]
|
|
ldrh r0, [r4, 0x10]
|
|
subs r2, r0
|
|
strh r2, [r4, 0x14]
|
|
ldrh r0, [r4, 0x16]
|
|
ldrh r1, [r4, 0x12]
|
|
subs r0, r1
|
|
strh r0, [r4, 0x16]
|
|
ldr r3, _080B4DA0 @ =gSprites
|
|
movs r0, 0x26
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
lsls r2, 16
|
|
asrs r2, 19
|
|
strh r2, [r0, 0x24]
|
|
movs r1, 0x26
|
|
ldrsh r0, [r4, r1]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldrh r0, [r4, 0x16]
|
|
lsls r0, 16
|
|
asrs r0, 19
|
|
strh r0, [r1, 0x26]
|
|
ldrh r0, [r4, 0x1A]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x1A]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xA
|
|
bne _080B4D90
|
|
movs r0, 0x14
|
|
strh r0, [r4, 0x1E]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_080B4D90:
|
|
ldrh r1, [r4, 0x22]
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r0, 0x9B
|
|
bl PlaySE12WithPanning
|
|
b _080B4E68
|
|
.align 2, 0
|
|
_080B4DA0: .4byte gSprites
|
|
_080B4DA4:
|
|
ldrh r0, [r4, 0x1E]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x1E]
|
|
b _080B4E4C
|
|
_080B4DAC:
|
|
ldrh r0, [r4, 0x1A]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x1A]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0
|
|
beq _080B4DCC
|
|
ldrh r0, [r4, 0x10]
|
|
ldrh r2, [r4, 0x14]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x14]
|
|
ldrh r0, [r4, 0x12]
|
|
ldrh r1, [r4, 0x16]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x16]
|
|
b _080B4DD6
|
|
_080B4DCC:
|
|
strh r0, [r4, 0x14]
|
|
strh r0, [r4, 0x16]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_080B4DD6:
|
|
ldr r2, _080B4E04 @ =gSprites
|
|
movs r1, 0x26
|
|
ldrsh r0, [r4, r1]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrh r0, [r4, 0x14]
|
|
lsls r0, 16
|
|
asrs r0, 19
|
|
strh r0, [r1, 0x24]
|
|
movs r1, 0x26
|
|
ldrsh r0, [r4, r1]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrh r0, [r4, 0x16]
|
|
lsls r0, 16
|
|
asrs r0, 19
|
|
strh r0, [r1, 0x26]
|
|
b _080B4E68
|
|
.align 2, 0
|
|
_080B4E04: .4byte gSprites
|
|
_080B4E08:
|
|
ldrh r0, [r4, 0x10]
|
|
ldrh r2, [r4, 0xC]
|
|
adds r0, r2
|
|
strh r0, [r4, 0xC]
|
|
ldrh r0, [r4, 0x12]
|
|
ldrh r1, [r4, 0xE]
|
|
adds r0, r1
|
|
strh r0, [r4, 0xE]
|
|
ldrh r0, [r4, 0x1A]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x1A]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r2, 0x1C
|
|
ldrsh r1, [r4, r2]
|
|
cmp r0, r1
|
|
blt _080B4E46
|
|
movs r0, 0
|
|
strh r0, [r4, 0x1A]
|
|
adds r0, r4, 0
|
|
bl sub_80B4E70
|
|
ldrh r1, [r4, 0x24]
|
|
ldrh r0, [r4, 0x22]
|
|
adds r1, r0
|
|
strh r1, [r4, 0x22]
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r0, 0xA8
|
|
bl PlaySE12WithPanning
|
|
_080B4E46:
|
|
ldrh r0, [r4, 0x18]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x18]
|
|
_080B4E4C:
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080B4E68
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080B4E68
|
|
_080B4E5A:
|
|
movs r1, 0x1E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080B4E68
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B4E68:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B4D00
|
|
|
|
thumb_func_start sub_80B4E70
|
|
sub_80B4E70: @ 80B4E70
|
|
push {r4-r7,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0xA]
|
|
subs r0, 0x1
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
bhi _080B4F60
|
|
lsls r0, 2
|
|
ldr r1, _080B4E8C @ =_080B4E90
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080B4E8C: .4byte _080B4E90
|
|
.align 2, 0
|
|
_080B4E90:
|
|
.4byte _080B4EA4
|
|
.4byte _080B4EB0
|
|
.4byte _080B4EB0
|
|
.4byte _080B4EBC
|
|
.4byte _080B4EC8
|
|
_080B4EA4:
|
|
ldr r3, _080B4EAC @ =gUnknown_83E74D8
|
|
movs r5, 0
|
|
b _080B4ECC
|
|
.align 2, 0
|
|
_080B4EAC: .4byte gUnknown_83E74D8
|
|
_080B4EB0:
|
|
ldr r3, _080B4EB8 @ =gUnknown_83E74F0
|
|
movs r5, 0x50
|
|
b _080B4ECC
|
|
.align 2, 0
|
|
_080B4EB8: .4byte gUnknown_83E74F0
|
|
_080B4EBC:
|
|
ldr r3, _080B4EC4 @ =gUnknown_83E74F0
|
|
movs r5, 0x40
|
|
b _080B4ECC
|
|
.align 2, 0
|
|
_080B4EC4: .4byte gUnknown_83E74F0
|
|
_080B4EC8:
|
|
ldr r3, _080B4F68 @ =gUnknown_83E74F0
|
|
movs r5, 0x30
|
|
_080B4ECC:
|
|
ldrh r1, [r4, 0xC]
|
|
lsls r1, 16
|
|
asrs r1, 19
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
ldrh r2, [r4, 0xE]
|
|
lsls r2, 16
|
|
asrs r2, 19
|
|
lsls r2, 16
|
|
movs r6, 0x20
|
|
ldrsh r0, [r4, r6]
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
lsls r1, 16
|
|
lsrs r6, r1, 16
|
|
asrs r1, 16
|
|
lsrs r7, r2, 16
|
|
asrs r2, 16
|
|
adds r0, r3, 0
|
|
movs r3, 0x23
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0x40
|
|
beq _080B4F58
|
|
ldr r1, _080B4F6C @ =gSprites
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
movs r1, 0x12
|
|
strh r1, [r0, 0x2E]
|
|
movs r2, 0x20
|
|
ldrsh r1, [r4, r2]
|
|
lsls r2, r1, 2
|
|
adds r2, r1
|
|
lsls r2, 2
|
|
adds r2, r6, r2
|
|
movs r6, 0xA
|
|
ldrsh r3, [r4, r6]
|
|
lsls r1, r3, 1
|
|
adds r1, r3
|
|
adds r2, r1
|
|
strh r2, [r0, 0x32]
|
|
strh r7, [r0, 0x36]
|
|
movs r1, 0xA
|
|
ldrsh r2, [r4, r1]
|
|
lsls r2, 1
|
|
movs r3, 0x10
|
|
negs r3, r3
|
|
adds r1, r3, 0
|
|
subs r1, r2
|
|
strh r1, [r0, 0x38]
|
|
ldrh r3, [r0, 0x4]
|
|
lsls r2, r3, 22
|
|
lsrs r2, 22
|
|
adds r2, r5
|
|
ldr r5, _080B4F70 @ =0x000003ff
|
|
adds r1, r5, 0
|
|
ands r2, r1
|
|
ldr r1, _080B4F74 @ =0xfffffc00
|
|
ands r1, r3
|
|
orrs r1, r2
|
|
strh r1, [r0, 0x4]
|
|
bl sub_8075068
|
|
ldrh r0, [r4, 0x1E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x1E]
|
|
_080B4F58:
|
|
movs r6, 0x20
|
|
ldrsh r0, [r4, r6]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x20]
|
|
_080B4F60:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B4F68: .4byte gUnknown_83E74F0
|
|
_080B4F6C: .4byte gSprites
|
|
_080B4F70: .4byte 0x000003ff
|
|
_080B4F74: .4byte 0xfffffc00
|
|
thumb_func_end sub_80B4E70
|
|
|
|
thumb_func_start sub_80B4F78
|
|
sub_80B4F78: @ 80B4F78
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl AnimateBallThrow
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B4FAA
|
|
ldr r0, _080B4FB0 @ =sub_80B4D00
|
|
bl FindTaskIdByFunc
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0xFF
|
|
beq _080B4FA4
|
|
ldr r0, _080B4FB4 @ =gTasks
|
|
lsls r1, r2, 2
|
|
adds r1, r2
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0x1E]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0x1E]
|
|
_080B4FA4:
|
|
adds r0, r4, 0
|
|
bl DestroySprite
|
|
_080B4FAA:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B4FB0: .4byte sub_80B4D00
|
|
_080B4FB4: .4byte gTasks
|
|
thumb_func_end sub_80B4F78
|
|
|
|
thumb_func_start sub_80B4FB8
|
|
sub_80B4FB8: @ 80B4FB8
|
|
push {lr}
|
|
ldr r0, _080B4FE0 @ =gUnknown_2037EE4
|
|
ldr r0, [r0]
|
|
ldrb r1, [r0, 0x11]
|
|
lsrs r0, r1, 4
|
|
lsls r1, 28
|
|
lsrs r1, 28
|
|
subs r0, r1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
movs r2, 0xFF
|
|
lsls r2, 24
|
|
adds r0, r2
|
|
lsrs r0, 24
|
|
cmp r0, 0x4
|
|
bls _080B4FDA
|
|
movs r1, 0x1
|
|
_080B4FDA:
|
|
adds r0, r1, 0
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080B4FE0: .4byte gUnknown_2037EE4
|
|
thumb_func_end sub_80B4FB8
|
|
|
|
thumb_func_start sub_80B4FE4
|
|
sub_80B4FE4: @ 80B4FE4
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080B501C @ =gBattleAnimArgs
|
|
ldrb r1, [r5, 0x8]
|
|
bl StartSpriteAnim
|
|
ldrh r0, [r5]
|
|
strh r0, [r4, 0x24]
|
|
ldrh r0, [r5, 0x2]
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r4, 0x34]
|
|
ldrh r1, [r5, 0x4]
|
|
subs r0, r1
|
|
strh r0, [r4, 0x34]
|
|
movs r0, 0x3
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r5, 0x6]
|
|
strh r0, [r4, 0x30]
|
|
ldr r0, _080B5020 @ =sub_80B5024
|
|
str r0, [r4, 0x1C]
|
|
adds r4, 0x3E
|
|
ldrb r0, [r4]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r4]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B501C: .4byte gBattleAnimArgs
|
|
_080B5020: .4byte sub_80B5024
|
|
thumb_func_end sub_80B4FE4
|
|
|
|
thumb_func_start sub_80B5024
|
|
sub_80B5024: @ 80B5024
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
adds r3, r2, 0
|
|
adds r3, 0x3E
|
|
ldrb r0, [r3]
|
|
movs r1, 0x5
|
|
negs r1, r1
|
|
ands r1, r0
|
|
strb r1, [r3]
|
|
ldrh r1, [r2, 0x34]
|
|
movs r3, 0x34
|
|
ldrsh r0, [r2, r3]
|
|
cmp r0, 0
|
|
beq _080B505C
|
|
ldrh r3, [r2, 0x32]
|
|
adds r0, r1, r3
|
|
strh r0, [r2, 0x26]
|
|
ldrh r0, [r2, 0x2E]
|
|
adds r1, r0
|
|
strh r1, [r2, 0x34]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x2E]
|
|
lsls r1, 16
|
|
cmp r1, 0
|
|
ble _080B506E
|
|
movs r0, 0
|
|
strh r0, [r2, 0x34]
|
|
b _080B506E
|
|
_080B505C:
|
|
ldrh r0, [r2, 0x30]
|
|
subs r0, 0x1
|
|
strh r0, [r2, 0x30]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080B506E
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_080B506E:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B5024
|
|
|
|
thumb_func_start sub_80B5074
|
|
sub_80B5074: @ 80B5074
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _080B509C @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080B5090
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
_080B5090:
|
|
adds r0, r4, 0
|
|
bl sub_8075DF4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B509C: .4byte gBattleAnimAttacker
|
|
thumb_func_end sub_80B5074
|
|
|
|
thumb_func_start sub_80B50A0
|
|
sub_80B50A0: @ 80B50A0
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080B50EC @ =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
movs r1, 0
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x20]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _080B50F0 @ =gBattleAnimArgs
|
|
ldrh r3, [r2]
|
|
ldrh r5, [r4, 0x20]
|
|
adds r1, r3, r5
|
|
strh r1, [r4, 0x20]
|
|
ldrh r1, [r2, 0x2]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x22]
|
|
strh r3, [r4, 0x30]
|
|
strh r1, [r4, 0x32]
|
|
ldrh r0, [r2, 0x4]
|
|
strh r0, [r4, 0x38]
|
|
ldrb r1, [r2, 0x6]
|
|
adds r0, r4, 0
|
|
bl StartSpriteAnim
|
|
ldr r0, _080B50F4 @ =sub_80B50F8
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B50EC: .4byte gBattleAnimTarget
|
|
_080B50F0: .4byte gBattleAnimArgs
|
|
_080B50F4: .4byte sub_80B50F8
|
|
thumb_func_end sub_80B50A0
|
|
|
|
thumb_func_start sub_80B50F8
|
|
sub_80B50F8: @ 80B50F8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x8
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x30]
|
|
ldrh r1, [r4, 0x34]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x34]
|
|
ldrh r0, [r4, 0x32]
|
|
ldrh r2, [r4, 0x36]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x36]
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x28
|
|
bl __divsi3
|
|
ldrh r1, [r4, 0x24]
|
|
adds r1, r0
|
|
strh r1, [r4, 0x24]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
movs r2, 0x38
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
ldrh r1, [r4, 0x26]
|
|
subs r1, r0
|
|
strh r1, [r4, 0x26]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x8C
|
|
ble _080B5142
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B5142:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B50F8
|
|
|
|
thumb_func_start sub_80B5148
|
|
sub_80B5148: @ 80B5148
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
ldr r2, _080B5180 @ =gUnknown_2037EE8
|
|
ldr r0, [r2]
|
|
cmp r0, 0x20
|
|
bgt _080B515C
|
|
ldr r1, _080B5184 @ =gBattleAnimArgs
|
|
movs r0, 0
|
|
strh r0, [r1, 0xE]
|
|
_080B515C:
|
|
ldr r2, [r2]
|
|
adds r0, r2, 0
|
|
subs r0, 0x21
|
|
cmp r0, 0x20
|
|
bhi _080B516C
|
|
ldr r1, _080B5184 @ =gBattleAnimArgs
|
|
movs r0, 0x1
|
|
strh r0, [r1, 0xE]
|
|
_080B516C:
|
|
cmp r2, 0x41
|
|
ble _080B5176
|
|
ldr r1, _080B5184 @ =gBattleAnimArgs
|
|
movs r0, 0x2
|
|
strh r0, [r1, 0xE]
|
|
_080B5176:
|
|
adds r0, r3, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B5180: .4byte gUnknown_2037EE8
|
|
_080B5184: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80B5148
|
|
|
|
thumb_func_start sub_80B5188
|
|
sub_80B5188: @ 80B5188
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r1, _080B51E4 @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r5, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _080B51AA
|
|
movs r0, 0
|
|
bl sub_8075458
|
|
movs r0, 0xC8
|
|
strh r0, [r5, 0xA]
|
|
_080B51AA:
|
|
ldr r4, _080B51E8 @ =gBattle_BG3_Y
|
|
movs r1, 0xA
|
|
ldrsh r0, [r5, r1]
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
ldrh r1, [r4]
|
|
adds r1, r0
|
|
strh r1, [r4]
|
|
ldrh r0, [r5, 0xA]
|
|
subs r0, 0x3
|
|
strh r0, [r5, 0xA]
|
|
movs r1, 0x8
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x78
|
|
bne _080B51D6
|
|
movs r0, 0x1
|
|
bl sub_8075458
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B51D6:
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B51E4: .4byte gTasks
|
|
_080B51E8: .4byte gBattle_BG3_Y
|
|
thumb_func_end sub_80B5188
|
|
|
|
thumb_func_start sub_80B51EC
|
|
sub_80B51EC: @ 80B51EC
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r5, r0, 0
|
|
ldr r1, _080B5258 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080B5218
|
|
movs r0, 0
|
|
bl sub_8075458
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
ldr r0, _080B525C @ =gBattle_BG3_Y
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, 0xC]
|
|
_080B5218:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x50
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0xA]
|
|
ldr r6, _080B525C @ =gBattle_BG3_Y
|
|
movs r2, 0xA
|
|
ldrsh r1, [r4, r2]
|
|
movs r0, 0x4
|
|
bl Cos
|
|
ldrh r4, [r4, 0xC]
|
|
adds r0, r4
|
|
strh r0, [r6]
|
|
ldr r0, _080B5260 @ =gBattleAnimArgs
|
|
movs r2, 0xE
|
|
ldrsh r1, [r0, r2]
|
|
ldr r0, _080B5264 @ =0x00000fff
|
|
cmp r1, r0
|
|
bne _080B5250
|
|
movs r0, 0
|
|
strh r0, [r6]
|
|
movs r0, 0x1
|
|
bl sub_8075458
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B5250:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B5258: .4byte gTasks
|
|
_080B525C: .4byte gBattle_BG3_Y
|
|
_080B5260: .4byte gBattleAnimArgs
|
|
_080B5264: .4byte 0x00000fff
|
|
thumb_func_end sub_80B51EC
|
|
|
|
thumb_func_start sub_80B5268
|
|
sub_80B5268: @ 80B5268
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r0, _080B52C4 @ =gBattleAnimArgs
|
|
ldrh r0, [r0, 0x4]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
ldr r5, _080B52C8 @ =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
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 sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x36]
|
|
adds r0, r4, 0
|
|
bl sub_8075678
|
|
ldr r0, _080B52CC @ =sub_80B52D0
|
|
str r0, [r4, 0x1C]
|
|
movs r0, 0x10
|
|
strh r0, [r4, 0x3A]
|
|
movs r1, 0xFD
|
|
lsls r1, 6
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
ldrh r1, [r4, 0x3A]
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B52C4: .4byte gBattleAnimArgs
|
|
_080B52C8: .4byte gBattleAnimTarget
|
|
_080B52CC: .4byte sub_80B52D0
|
|
thumb_func_end sub_80B5268
|
|
|
|
thumb_func_start sub_80B52D0
|
|
sub_80B52D0: @ 80B52D0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80B53C0
|
|
adds r0, r4, 0
|
|
bl sub_80755E0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B52F0
|
|
ldr r0, _080B52EC @ =sub_80B5344
|
|
str r0, [r4, 0x1C]
|
|
b _080B533A
|
|
.align 2, 0
|
|
_080B52EC: .4byte sub_80B5344
|
|
_080B52F0:
|
|
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 _080B5328
|
|
cmp r2, 0xC4
|
|
ble _080B533A
|
|
_080B5328:
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
ble _080B533A
|
|
ldr r0, _080B5340 @ =gUnknown_2037F24
|
|
movs r1, 0
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, 0xBD
|
|
bl PlaySE12WithPanning
|
|
_080B533A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B5340: .4byte gUnknown_2037F24
|
|
thumb_func_end sub_80B52D0
|
|
|
|
thumb_func_start sub_80B5344
|
|
sub_80B5344: @ 80B5344
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
adds r0, r4, 0
|
|
bl sub_80755E0
|
|
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 _080B538A
|
|
cmp r2, 0xC4
|
|
ble _080B5396
|
|
_080B538A:
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
ble _080B5396
|
|
movs r0, 0xBD
|
|
bl PlaySE
|
|
_080B5396:
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080B53B4
|
|
adds r2, r4, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, _080B53B0 @ =sub_8074F88
|
|
str r0, [r4, 0x1C]
|
|
b _080B53BA
|
|
.align 2, 0
|
|
_080B53B0: .4byte sub_8074F88
|
|
_080B53B4:
|
|
adds r0, r4, 0
|
|
bl sub_80B53C0
|
|
_080B53BA:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B5344
|
|
|
|
thumb_func_start sub_80B53C0
|
|
sub_80B53C0: @ 80B53C0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r2, [r4, 0x3A]
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0xFF
|
|
ble _080B53E4
|
|
adds r0, r2, 0x1
|
|
strh r0, [r4, 0x3A]
|
|
lsls r0, 16
|
|
ldr r1, _080B53E0 @ =0x010d0000
|
|
cmp r0, r1
|
|
bne _080B544A
|
|
movs r0, 0
|
|
b _080B5448
|
|
.align 2, 0
|
|
_080B53E0: .4byte 0x010d0000
|
|
_080B53E4:
|
|
ldrh r1, [r4, 0x3C]
|
|
adds r3, r1, 0x1
|
|
strh r3, [r4, 0x3C]
|
|
movs r0, 0xFF
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B544A
|
|
ldr r1, _080B5408 @ =0xffffff00
|
|
ands r1, r3
|
|
strh r1, [r4, 0x3C]
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B540C
|
|
adds r0, r2, 0x1
|
|
b _080B540E
|
|
.align 2, 0
|
|
_080B5408: .4byte 0xffffff00
|
|
_080B540C:
|
|
subs r0, r2, 0x1
|
|
_080B540E:
|
|
strh r0, [r4, 0x3A]
|
|
ldrh r0, [r4, 0x3A]
|
|
movs r1, 0x10
|
|
subs r1, r0
|
|
lsls r1, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r2, 0x3A
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
beq _080B5430
|
|
cmp r0, 0x10
|
|
bne _080B543C
|
|
_080B5430:
|
|
ldrh r0, [r4, 0x3C]
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r1, r2, 0
|
|
eors r0, r1
|
|
strh r0, [r4, 0x3C]
|
|
_080B543C:
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080B544A
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
_080B5448:
|
|
strh r0, [r4, 0x3A]
|
|
_080B544A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B53C0
|
|
|
|
thumb_func_start sub_80B5450
|
|
sub_80B5450: @ 80B5450
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075114
|
|
ldr r1, _080B546C @ =sub_80B5470
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B546C: .4byte sub_80B5470
|
|
thumb_func_end sub_80B5450
|
|
|
|
thumb_func_start sub_80B5470
|
|
sub_80B5470: @ 80B5470
|
|
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 _080B54A4
|
|
ldrb r0, [r4, 0x5]
|
|
movs r1, 0xD
|
|
negs r1, r1
|
|
ands r1, r0
|
|
movs r0, 0x8
|
|
b _080B54AE
|
|
_080B54A4:
|
|
ldrb r0, [r4, 0x5]
|
|
movs r1, 0xD
|
|
negs r1, r1
|
|
ands r1, r0
|
|
movs r0, 0x4
|
|
_080B54AE:
|
|
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 _080B54E0
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B54E0:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B5470
|
|
|
|
thumb_func_start sub_80B54E8
|
|
sub_80B54E8: @ 80B54E8
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
movs r1, 0xFD
|
|
lsls r1, 6
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl sub_80758E0
|
|
adds r0, r4, 0
|
|
movs r1, 0x80
|
|
movs r2, 0x80
|
|
movs r3, 0
|
|
bl obj_id_set_rotscale
|
|
ldr r1, _080B5560 @ =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, _080B5564 @ =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, _080B5568 @ =gBattleAnimArgs
|
|
ldrh r1, [r1]
|
|
strh r1, [r0, 0xA]
|
|
strh r2, [r0, 0xC]
|
|
movs r1, 0x10
|
|
strh r1, [r0, 0xE]
|
|
ldr r1, _080B556C @ =sub_80B5570
|
|
str r1, [r0]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B5560: .4byte gSprites
|
|
_080B5564: .4byte gTasks
|
|
_080B5568: .4byte gBattleAnimArgs
|
|
_080B556C: .4byte sub_80B5570
|
|
thumb_func_end sub_80B54E8
|
|
|
|
thumb_func_start sub_80B5570
|
|
sub_80B5570: @ 80B5570
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _080B55C0 @ =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r4, r1, r2
|
|
ldrh r0, [r4, 0x1C]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x1C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x3
|
|
bne _080B55B8
|
|
movs r0, 0
|
|
strh r0, [r4, 0x1C]
|
|
ldrh r1, [r4, 0xC]
|
|
adds r1, 0x1
|
|
strh r1, [r4, 0xC]
|
|
ldrh r0, [r4, 0xE]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0xE]
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r1, 0xC
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x9
|
|
bne _080B55B8
|
|
ldr r0, _080B55C4 @ =sub_80B55C8
|
|
str r0, [r4]
|
|
_080B55B8:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B55C0: .4byte gTasks
|
|
_080B55C4: .4byte sub_80B55C8
|
|
thumb_func_end sub_80B5570
|
|
|
|
thumb_func_start sub_80B55C8
|
|
sub_80B55C8: @ 80B55C8
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r5, r0, 0
|
|
ldr r1, _080B55EC @ =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 _080B55F0
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0xA]
|
|
b _080B5634
|
|
.align 2, 0
|
|
_080B55EC: .4byte gTasks
|
|
_080B55F0:
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x8
|
|
strh r0, [r4, 0x8]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xFF
|
|
bgt _080B5618
|
|
movs r0, 0x8
|
|
ldrsh r2, [r4, r0]
|
|
adds r0, r1, 0
|
|
adds r1, r2, 0
|
|
movs r3, 0
|
|
bl obj_id_set_rotscale
|
|
b _080B5634
|
|
_080B5618:
|
|
adds r0, r1, 0
|
|
bl sub_8075980
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
_080B5634:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B55C8
|
|
|
|
thumb_func_start sub_80B563C
|
|
sub_80B563C: @ 80B563C
|
|
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, _080B56D8 @ =gBattleAnimAttacker
|
|
mov r8, r0
|
|
ldrb r0, [r0]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
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 sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x22]
|
|
mov r1, r9
|
|
strh r1, [r4, 0x2E]
|
|
ldr r2, _080B56DC @ =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, _080B56E0 @ =sub_80B56E4
|
|
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
|
|
_080B56D8: .4byte gBattleAnimAttacker
|
|
_080B56DC: .4byte gBattleAnimArgs
|
|
_080B56E0: .4byte sub_80B56E4
|
|
thumb_func_end sub_80B563C
|
|
|
|
thumb_func_start sub_80B56E4
|
|
sub_80B56E4: @ 80B56E4
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x1
|
|
beq _080B572E
|
|
cmp r0, 0x1
|
|
bgt _080B56FA
|
|
cmp r0, 0
|
|
beq _080B5704
|
|
b _080B57F2
|
|
_080B56FA:
|
|
cmp r0, 0x2
|
|
beq _080B5798
|
|
cmp r0, 0x3
|
|
beq _080B57EC
|
|
b _080B57F2
|
|
_080B5704:
|
|
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 _080B57F2
|
|
b _080B57DE
|
|
_080B572E:
|
|
ldrh r0, [r5, 0x32]
|
|
subs r0, 0x1
|
|
strh r0, [r5, 0x32]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bgt _080B57F2
|
|
ldr r4, _080B5794 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x30]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
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 _080B57DE
|
|
.align 2, 0
|
|
_080B5794: .4byte gBattleAnimTarget
|
|
_080B5798:
|
|
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 _080B57F2
|
|
ldr r4, _080B57E8 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
_080B57DE:
|
|
ldrh r0, [r5, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
b _080B57F2
|
|
.align 2, 0
|
|
_080B57E8: .4byte gBattleAnimTarget
|
|
_080B57EC:
|
|
adds r0, r5, 0
|
|
bl move_anim_8074EE0
|
|
_080B57F2:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B56E4
|
|
|
|
thumb_func_start sub_80B57F8
|
|
sub_80B57F8: @ 80B57F8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075114
|
|
ldr r0, _080B580C @ =sub_80B5810
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B580C: .4byte sub_80B5810
|
|
thumb_func_end sub_80B57F8
|
|
|
|
thumb_func_start sub_80B5810
|
|
sub_80B5810: @ 80B5810
|
|
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 _080B58A6
|
|
adds r1, r3, 0
|
|
adds r1, 0x3E
|
|
ldrb r2, [r1]
|
|
movs r0, 0x4
|
|
ands r0, r2
|
|
adds r4, r1, 0
|
|
cmp r0, 0
|
|
bne _080B583A
|
|
movs r0, 0x4
|
|
orrs r0, r2
|
|
strb r0, [r4]
|
|
_080B583A:
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r3, r1]
|
|
cmp r0, 0
|
|
beq _080B584A
|
|
cmp r0, 0x1
|
|
beq _080B5854
|
|
movs r6, 0x1
|
|
b _080B585E
|
|
_080B584A:
|
|
movs r1, 0x30
|
|
ldrsh r0, [r3, r1]
|
|
cmp r0, 0x2
|
|
bne _080B585E
|
|
b _080B5862
|
|
_080B5854:
|
|
movs r1, 0x30
|
|
ldrsh r0, [r3, r1]
|
|
cmp r0, 0x4
|
|
bne _080B585E
|
|
movs r5, 0x1
|
|
_080B585E:
|
|
cmp r5, 0
|
|
beq _080B5894
|
|
_080B5862:
|
|
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 _080B58A6
|
|
strh r1, [r3, 0x32]
|
|
ldrh r0, [r3, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x2E]
|
|
b _080B58A6
|
|
_080B5894:
|
|
cmp r6, 0
|
|
beq _080B58A0
|
|
adds r0, r3, 0
|
|
bl DestroyAnimSprite
|
|
b _080B58A6
|
|
_080B58A0:
|
|
ldrh r0, [r3, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x30]
|
|
_080B58A6:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B5810
|
|
|
|
thumb_func_start sub_80B58AC
|
|
sub_80B58AC: @ 80B58AC
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, _080B58D8 @ =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 _080B58DC
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
b _080B59B8
|
|
.align 2, 0
|
|
_080B58D8: .4byte gTasks
|
|
_080B58DC:
|
|
strh r1, [r5, 0xA]
|
|
movs r0, 0xF
|
|
strh r0, [r5, 0xC]
|
|
movs r0, 0x2
|
|
strh r0, [r5, 0xE]
|
|
strh r1, [r5, 0x10]
|
|
movs r1, 0xFD
|
|
lsls r1, 6
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
ldrh r1, [r5, 0xE]
|
|
lsls r1, 8
|
|
ldrh r0, [r5, 0xC]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
ldr r4, _080B5944 @ =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, _080B5948 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B5950
|
|
movs r0, 0x8
|
|
ldrsh r1, [r5, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldr r1, _080B594C @ =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 _080B596E
|
|
.align 2, 0
|
|
_080B5944: .4byte gSprites
|
|
_080B5948: .4byte gBattleAnimTarget
|
|
_080B594C: .4byte 0x0000ff70
|
|
_080B5950:
|
|
movs r0, 0x8
|
|
ldrsh r1, [r5, r0]
|
|
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, _080B59C0 @ =0x0000ff90
|
|
_080B596E:
|
|
strh r1, [r0, 0x32]
|
|
ldr r4, _080B59C4 @ =gSprites
|
|
movs r0, 0x8
|
|
ldrsh r1, [r5, r0]
|
|
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 r0, 0x8
|
|
ldrsh r1, [r5, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldr r1, _080B59C8 @ =SpriteCallbackDummy
|
|
bl StoreSpriteCallbackInData6
|
|
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, _080B59CC @ =sub_8074D00
|
|
str r1, [r0]
|
|
ldr r0, _080B59D0 @ =sub_80B59D4
|
|
str r0, [r5]
|
|
_080B59B8:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B59C0: .4byte 0x0000ff90
|
|
_080B59C4: .4byte gSprites
|
|
_080B59C8: .4byte SpriteCallbackDummy
|
|
_080B59CC: .4byte sub_8074D00
|
|
_080B59D0: .4byte sub_80B59D4
|
|
thumb_func_end sub_80B58AC
|
|
|
|
thumb_func_start sub_80B59D4
|
|
sub_80B59D4: @ 80B59D4
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _080B59F8 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x10
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _080B5A78
|
|
cmp r0, 0x1
|
|
bgt _080B59FC
|
|
cmp r0, 0
|
|
beq _080B5A02
|
|
b _080B5AA4
|
|
.align 2, 0
|
|
_080B59F8: .4byte gTasks
|
|
_080B59FC:
|
|
cmp r0, 0x2
|
|
beq _080B5A9E
|
|
b _080B5AA4
|
|
_080B5A02:
|
|
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 _080B5A20
|
|
ldrh r1, [r4, 0xC]
|
|
movs r2, 0xC
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
ble _080B5A20
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0xC]
|
|
_080B5A20:
|
|
movs r1, 0x12
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x3
|
|
bne _080B5A36
|
|
ldrh r1, [r4, 0xE]
|
|
movs r2, 0xE
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0xF
|
|
bgt _080B5A36
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0xE]
|
|
_080B5A36:
|
|
ldrh r1, [r4, 0xE]
|
|
lsls r1, 8
|
|
ldrh r0, [r4, 0xC]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
ldr r1, [r4, 0xC]
|
|
movs r0, 0x80
|
|
lsls r0, 13
|
|
cmp r1, r0
|
|
bne _080B5AA4
|
|
movs r1, 0xA
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x50
|
|
ble _080B5AA4
|
|
movs r2, 0x8
|
|
ldrsh r1, [r4, r2]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _080B5A74 @ =gSprites
|
|
adds r0, r1
|
|
bl obj_delete_but_dont_free_vram
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x10]
|
|
b _080B5AA4
|
|
.align 2, 0
|
|
_080B5A74: .4byte gSprites
|
|
_080B5A78:
|
|
ldrh r0, [r4, 0x14]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x14]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080B5AA4
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldrh r0, [r4, 0x10]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x10]
|
|
b _080B5AA4
|
|
_080B5A9E:
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B5AA4:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B59D4
|
|
|
|
thumb_func_start sub_80B5AAC
|
|
sub_80B5AAC: @ 80B5AAC
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r2, _080B5ACC @ =gTasks
|
|
adds r1, r2
|
|
movs r2, 0
|
|
strh r2, [r1, 0x26]
|
|
ldr r2, _080B5AD0 @ =sub_80B5AD4
|
|
str r2, [r1]
|
|
bl _call_via_r2
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B5ACC: .4byte gTasks
|
|
_080B5AD0: .4byte sub_80B5AD4
|
|
thumb_func_end sub_80B5AAC
|
|
|
|
thumb_func_start sub_80B5AD4
|
|
sub_80B5AD4: @ 80B5AD4
|
|
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, _080B5B0C @ =gTasks
|
|
adds r5, r0, r1
|
|
ldr r0, _080B5B10 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
movs r1, 0x26
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x4
|
|
bls _080B5B00
|
|
b _080B5D22
|
|
_080B5B00:
|
|
lsls r0, 2
|
|
ldr r1, _080B5B14 @ =_080B5B18
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080B5B0C: .4byte gTasks
|
|
_080B5B10: .4byte gBattleAnimTarget
|
|
_080B5B14: .4byte _080B5B18
|
|
.align 2, 0
|
|
_080B5B18:
|
|
.4byte _080B5B2C
|
|
.4byte _080B5C2C
|
|
.4byte _080B5C70
|
|
.4byte _080B5CD8
|
|
.4byte _080B5D04
|
|
_080B5B2C:
|
|
ldr r7, _080B5B64 @ =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 _080B5B5A
|
|
cmp r0, 0xF
|
|
beq _080B5B5A
|
|
movs r0, 0x1
|
|
bl duplicate_obj_of_side_rel2move_in_transparent_mode
|
|
strh r0, [r5, 0x8]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bge _080B5B68
|
|
adds r0, r7, 0
|
|
bl FreeSpritePaletteByTag
|
|
_080B5B5A:
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
b _080B5D28
|
|
.align 2, 0
|
|
_080B5B64: .4byte 0x00002771
|
|
_080B5B68:
|
|
ldr r4, _080B5C14 @ =gSprites
|
|
movs r1, 0x8
|
|
ldrsh r0, [r5, r1]
|
|
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 r2, 0x8
|
|
ldrsh r0, [r5, r2]
|
|
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 r0, 0x8
|
|
ldrsh r1, [r5, r0]
|
|
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]
|
|
movs r1, 0x8
|
|
ldrsh r0, [r5, r1]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r4
|
|
ldr r0, _080B5C18 @ =gUnknown_2024018
|
|
ldr r1, [r0]
|
|
ldr r0, _080B5C1C @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
ldr r1, [r1]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
lsls r1, 31
|
|
adds r2, 0x3E
|
|
lsrs r1, 31
|
|
lsls r1, 2
|
|
ldrb r3, [r2]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r3
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
mov r2, r8
|
|
strh r2, [r5, 0xA]
|
|
strh r2, [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 _080B5C20
|
|
movs r1, 0x80
|
|
lsls r1, 2
|
|
b _080B5C24
|
|
.align 2, 0
|
|
_080B5C14: .4byte gSprites
|
|
_080B5C18: .4byte gUnknown_2024018
|
|
_080B5C1C: .4byte gBattleAnimTarget
|
|
_080B5C20:
|
|
movs r1, 0x80
|
|
lsls r1, 3
|
|
_080B5C24:
|
|
movs r0, 0
|
|
bl ClearGpuRegBits
|
|
b _080B5D22
|
|
_080B5C2C:
|
|
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, _080B5C60 @ =gPlttBufferUnfaded
|
|
adds r0, r1
|
|
movs r2, 0x24
|
|
ldrsh r1, [r5, r2]
|
|
lsls r1, 1
|
|
ldr r2, _080B5C64 @ =gPlttBufferFaded
|
|
adds r1, r2
|
|
ldr r2, _080B5C68 @ =0x04000008
|
|
bl CpuSet
|
|
ldrh r0, [r5, 0x10]
|
|
ldr r3, _080B5C6C @ =0x00003c0d
|
|
movs r1, 0x10
|
|
movs r2, 0xA
|
|
bl BlendPalette
|
|
b _080B5D22
|
|
.align 2, 0
|
|
_080B5C60: .4byte gPlttBufferUnfaded
|
|
_080B5C64: .4byte gPlttBufferFaded
|
|
_080B5C68: .4byte 0x04000008
|
|
_080B5C6C: .4byte 0x00003c0d
|
|
_080B5C70:
|
|
ldr r2, _080B5CAC @ =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 _080B5C90
|
|
movs r2, 0
|
|
_080B5C90:
|
|
cmp r6, 0x1
|
|
bne _080B5CB0
|
|
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 _080B5CC8
|
|
.align 2, 0
|
|
_080B5CAC: .4byte gSprites
|
|
_080B5CB0:
|
|
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]
|
|
_080B5CC8:
|
|
movs r2, 0x2
|
|
movs r3, 0x6
|
|
bl ScanlineEffect_InitWave
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x1C]
|
|
b _080B5D22
|
|
_080B5CD8:
|
|
cmp r6, 0x1
|
|
bne _080B5CEC
|
|
ldr r1, _080B5CE8 @ =0x00003f42
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
b _080B5CF4
|
|
.align 2, 0
|
|
_080B5CE8: .4byte 0x00003f42
|
|
_080B5CEC:
|
|
ldr r1, _080B5D00 @ =0x00003f44
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
_080B5CF4:
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
b _080B5D22
|
|
.align 2, 0
|
|
_080B5D00: .4byte 0x00003f44
|
|
_080B5D04:
|
|
cmp r6, 0x1
|
|
bne _080B5D14
|
|
movs r1, 0x80
|
|
lsls r1, 2
|
|
movs r0, 0
|
|
bl SetGpuRegBits
|
|
b _080B5D1E
|
|
_080B5D14:
|
|
movs r1, 0x80
|
|
lsls r1, 3
|
|
movs r0, 0
|
|
bl SetGpuRegBits
|
|
_080B5D1E:
|
|
ldr r0, _080B5D34 @ =sub_80B5D38
|
|
str r0, [r5]
|
|
_080B5D22:
|
|
ldrh r0, [r5, 0x26]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x26]
|
|
_080B5D28:
|
|
add sp, 0xC
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B5D34: .4byte sub_80B5D38
|
|
thumb_func_end sub_80B5AD4
|
|
|
|
thumb_func_start sub_80B5D38
|
|
sub_80B5D38: @ 80B5D38
|
|
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, _080B5DC0 @ =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 _080B5D70
|
|
ldr r1, _080B5DC4 @ =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]
|
|
_080B5D70:
|
|
movs r2, 0x12
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x1
|
|
bne _080B5D92
|
|
ldr r1, _080B5DC4 @ =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]
|
|
_080B5D92:
|
|
ldrh r1, [r4, 0xE]
|
|
lsls r1, 8
|
|
ldrh r0, [r4, 0xC]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r2, 0xA
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x80
|
|
bne _080B5DBA
|
|
movs r0, 0
|
|
strh r0, [r4, 0x26]
|
|
ldr r1, _080B5DC8 @ =sub_80B5DCC
|
|
str r1, [r4]
|
|
adds r0, r5, 0
|
|
bl _call_via_r1
|
|
_080B5DBA:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B5DC0: .4byte gTasks
|
|
_080B5DC4: .4byte gSineTable
|
|
_080B5DC8: .4byte sub_80B5DCC
|
|
thumb_func_end sub_80B5D38
|
|
|
|
thumb_func_start sub_80B5DCC
|
|
sub_80B5DCC: @ 80B5DCC
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _080B5DFC @ =gTasks
|
|
adds r4, r0, r1
|
|
ldr r0, _080B5E00 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
movs r1, 0x26
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _080B5E38
|
|
cmp r0, 0x1
|
|
bgt _080B5E04
|
|
cmp r0, 0
|
|
beq _080B5E0A
|
|
b _080B5EB4
|
|
.align 2, 0
|
|
_080B5DFC: .4byte gTasks
|
|
_080B5E00: .4byte gBattleAnimTarget
|
|
_080B5E04:
|
|
cmp r0, 0x2
|
|
beq _080B5E4C
|
|
b _080B5EB4
|
|
_080B5E0A:
|
|
ldr r1, _080B5E28 @ =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 _080B5E2C
|
|
movs r1, 0x80
|
|
lsls r1, 2
|
|
b _080B5E30
|
|
.align 2, 0
|
|
_080B5E28: .4byte gScanlineEffect
|
|
_080B5E2C:
|
|
movs r1, 0x80
|
|
lsls r1, 3
|
|
_080B5E30:
|
|
movs r0, 0
|
|
bl ClearGpuRegBits
|
|
b _080B5EB4
|
|
_080B5E38:
|
|
ldrh r0, [r4, 0x10]
|
|
ldr r3, _080B5E48 @ =0x00003c0d
|
|
movs r1, 0x10
|
|
movs r2, 0
|
|
bl BlendPalette
|
|
b _080B5EB4
|
|
.align 2, 0
|
|
_080B5E48: .4byte 0x00003c0d
|
|
_080B5E4C:
|
|
ldr r3, _080B5E9C @ =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, _080B5EA0 @ =0x00002771
|
|
bl FreeSpritePaletteByTag
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
cmp r6, 0x1
|
|
bne _080B5EA4
|
|
movs r1, 0x80
|
|
lsls r1, 2
|
|
movs r0, 0
|
|
bl SetGpuRegBits
|
|
b _080B5EAE
|
|
.align 2, 0
|
|
_080B5E9C: .4byte gSprites
|
|
_080B5EA0: .4byte 0x00002771
|
|
_080B5EA4:
|
|
movs r1, 0x80
|
|
lsls r1, 3
|
|
movs r0, 0
|
|
bl SetGpuRegBits
|
|
_080B5EAE:
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B5EB4:
|
|
ldrh r0, [r4, 0x26]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x26]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B5DCC
|
|
|
|
thumb_func_start sub_80B5EC0
|
|
sub_80B5EC0: @ 80B5EC0
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
adds r7, r0, 0
|
|
ldr r0, _080B5EFC @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080B5F08
|
|
ldr r4, _080B5F00 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 8
|
|
movs r2, 0xE0
|
|
lsls r2, 13
|
|
adds r0, r2
|
|
lsrs r5, r0, 16
|
|
ldr r4, _080B5F04 @ =gBattleAnimTarget
|
|
b _080B5F2C
|
|
.align 2, 0
|
|
_080B5EFC: .4byte gBattleAnimArgs
|
|
_080B5F00: .4byte gBattleAnimAttacker
|
|
_080B5F04: .4byte gBattleAnimTarget
|
|
_080B5F08:
|
|
ldr r4, _080B5FD0 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 8
|
|
movs r2, 0xE0
|
|
lsls r2, 13
|
|
adds r0, r2
|
|
lsrs r5, r0, 16
|
|
ldr r4, _080B5FD4 @ =gBattleAnimAttacker
|
|
_080B5F2C:
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r10, r0
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
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, _080B5FD8 @ =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, _080B5FDC @ =sub_80B5FE0
|
|
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
|
|
_080B5FD0: .4byte gBattleAnimTarget
|
|
_080B5FD4: .4byte gBattleAnimAttacker
|
|
_080B5FD8: .4byte gBattleAnimArgs
|
|
_080B5FDC: .4byte sub_80B5FE0
|
|
thumb_func_end sub_80B5EC0
|
|
|
|
thumb_func_start sub_80B5FE0
|
|
sub_80B5FE0: @ 80B5FE0
|
|
push {r4,lr}
|
|
adds r2, r0, 0
|
|
ldrh r3, [r2, 0x36]
|
|
movs r1, 0x36
|
|
ldrsh r0, [r2, r1]
|
|
cmp r0, 0
|
|
beq _080B6018
|
|
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 _080B6018
|
|
strh r0, [r2, 0x2E]
|
|
_080B6018:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B5FE0
|
|
|
|
thumb_func_start sub_80B6020
|
|
sub_80B6020: @ 80B6020
|
|
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, _080B6170 @ =gTasks
|
|
adds r1, r0
|
|
str r1, [sp]
|
|
movs r1, 0xFD
|
|
lsls r1, 6
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
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, _080B6174 @ =gBattleAnimArgs
|
|
ldrh r0, [r2]
|
|
strh r0, [r1, 0x1C]
|
|
ldr r4, _080B6178 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x4]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8076B2C
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0x8]
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B6090
|
|
b _080B618C
|
|
_080B6090:
|
|
movs r4, 0
|
|
_080B6092:
|
|
lsls r1, r4, 16
|
|
asrs r3, r1, 16
|
|
ldr r0, _080B6178 @ =gBattleAnimAttacker
|
|
ldrb r2, [r0]
|
|
str r1, [sp, 0x10]
|
|
cmp r3, r2
|
|
beq _080B615E
|
|
movs r0, 0x2
|
|
eors r2, r0
|
|
cmp r3, r2
|
|
beq _080B615E
|
|
lsls r0, r4, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r4, 0
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B615E
|
|
ldr r6, [sp, 0x4]
|
|
ldr r3, [sp, 0x8]
|
|
lsls r0, r3, 16
|
|
asrs r7, r0, 16
|
|
ldr r0, _080B617C @ =gUnknown_83E7668
|
|
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 _080B615E
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r10, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x3
|
|
bl sub_8076B2C
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r9, r0
|
|
mov r0, r8
|
|
lsls r5, r0, 4
|
|
add r5, r8
|
|
lsls r5, 2
|
|
ldr r1, _080B6180 @ =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, _080B6174 @ =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, _080B6174 @ =gBattleAnimArgs
|
|
movs r3, 0x2
|
|
ldrsh r1, [r2, r3]
|
|
bl __divsi3
|
|
strh r0, [r4, 0x34]
|
|
ldr r1, _080B6174 @ =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, _080B6184 @ =gSprites + 0x1C
|
|
adds r5, r0
|
|
ldr r0, _080B6188 @ =sub_80B5FE0
|
|
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]
|
|
_080B615E:
|
|
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 _080B6092
|
|
b _080B6210
|
|
.align 2, 0
|
|
_080B6170: .4byte gTasks
|
|
_080B6174: .4byte gBattleAnimArgs
|
|
_080B6178: .4byte gBattleAnimAttacker
|
|
_080B617C: .4byte gUnknown_83E7668
|
|
_080B6180: .4byte gSprites
|
|
_080B6184: .4byte gSprites + 0x1C
|
|
_080B6188: .4byte sub_80B5FE0
|
|
_080B618C:
|
|
ldr r0, _080B6228 @ =gUnknown_83E7668
|
|
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 _080B6210
|
|
movs r3, 0x30
|
|
mov r10, r3
|
|
movs r0, 0x28
|
|
mov r9, r0
|
|
ldr r6, _080B622C @ =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, _080B6230 @ =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, _080B6230 @ =gBattleAnimArgs
|
|
movs r3, 0x2
|
|
ldrsh r1, [r2, r3]
|
|
bl __divsi3
|
|
strh r0, [r4, 0x34]
|
|
ldr r1, _080B6230 @ =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, _080B6234 @ =sub_80B5FE0
|
|
str r0, [r5]
|
|
mov r1, r8
|
|
ldr r0, [sp]
|
|
strh r1, [r0, 0x22]
|
|
movs r0, 0x1
|
|
ldr r2, [sp]
|
|
strh r0, [r2, 0x20]
|
|
_080B6210:
|
|
ldr r0, _080B6238 @ =sub_80B623C
|
|
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
|
|
_080B6228: .4byte gUnknown_83E7668
|
|
_080B622C: .4byte gSprites
|
|
_080B6230: .4byte gBattleAnimArgs
|
|
_080B6234: .4byte sub_80B5FE0
|
|
_080B6238: .4byte sub_80B623C
|
|
thumb_func_end sub_80B6020
|
|
|
|
thumb_func_start sub_80B623C
|
|
sub_80B623C: @ 80B623C
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _080B6260 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
cmp r1, 0x1
|
|
beq _080B62F2
|
|
cmp r1, 0x1
|
|
bgt _080B6264
|
|
cmp r1, 0
|
|
beq _080B6272
|
|
b _080B63AE
|
|
.align 2, 0
|
|
_080B6260: .4byte gTasks
|
|
_080B6264:
|
|
cmp r1, 0x2
|
|
bne _080B626A
|
|
b _080B6384
|
|
_080B626A:
|
|
cmp r1, 0x3
|
|
bne _080B6270
|
|
b _080B6398
|
|
_080B6270:
|
|
b _080B63AE
|
|
_080B6272:
|
|
movs r2, 0x14
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bne _080B62D8
|
|
ldrh r0, [r4, 0x12]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x12]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080B62D8
|
|
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 _080B62A8
|
|
ldrh r1, [r4, 0x18]
|
|
movs r2, 0x18
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0xF
|
|
bgt _080B62B6
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0x18]
|
|
b _080B62B6
|
|
_080B62A8:
|
|
ldrh r1, [r4, 0x1A]
|
|
movs r2, 0x1A
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
beq _080B62B6
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x1A]
|
|
_080B62B6:
|
|
ldrh r1, [r4, 0x1A]
|
|
lsls r1, 8
|
|
ldrh r0, [r4, 0x18]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r1, 0x16
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x17
|
|
ble _080B62D8
|
|
movs r0, 0
|
|
strh r0, [r4, 0x16]
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x14]
|
|
_080B62D8:
|
|
ldrh r1, [r4, 0x1C]
|
|
movs r2, 0x1C
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
beq _080B62E8
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x1C]
|
|
b _080B63AE
|
|
_080B62E8:
|
|
movs r1, 0x14
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080B63AE
|
|
b _080B6390
|
|
_080B62F2:
|
|
ldrh r0, [r4, 0x12]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x12]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080B63AE
|
|
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 _080B6322
|
|
ldrh r1, [r4, 0x18]
|
|
movs r2, 0x18
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
beq _080B6330
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x18]
|
|
b _080B6330
|
|
_080B6322:
|
|
ldrh r1, [r4, 0x1A]
|
|
movs r2, 0x1A
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0xF
|
|
bgt _080B6330
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0x1A]
|
|
_080B6330:
|
|
ldrh r1, [r4, 0x1A]
|
|
lsls r1, 8
|
|
ldrh r0, [r4, 0x18]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
ldr r1, [r4, 0x18]
|
|
movs r0, 0x80
|
|
lsls r0, 13
|
|
cmp r1, r0
|
|
bne _080B63AE
|
|
movs r5, 0
|
|
b _080B6374
|
|
_080B6350:
|
|
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, _080B6380 @ =gSprites
|
|
adds r0, r1
|
|
bl DestroySprite
|
|
adds r0, r5, 0x1
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
_080B6374:
|
|
movs r1, 0x20
|
|
ldrsh r0, [r4, r1]
|
|
cmp r5, r0
|
|
blt _080B6350
|
|
b _080B6390
|
|
.align 2, 0
|
|
_080B6380: .4byte gSprites
|
|
_080B6384:
|
|
ldrh r0, [r4, 0x12]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x12]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
ble _080B63AE
|
|
_080B6390:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080B63AE
|
|
_080B6398:
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B63AE:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B623C
|
|
|
|
thumb_func_start sub_80B63B4
|
|
sub_80B63B4: @ 80B63B4
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r0, _080B6400 @ =gUnknown_2022984
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, _080B6404 @ =gUnknown_2022986
|
|
strh r1, [r0]
|
|
ldr r1, _080B6408 @ =0x00003f3f
|
|
movs r0, 0x48
|
|
bl SetGpuReg
|
|
ldr r1, _080B640C @ =0x00003f1f
|
|
movs r0, 0x4A
|
|
bl SetGpuReg
|
|
movs r0, 0x50
|
|
movs r1, 0xC8
|
|
bl SetGpuReg
|
|
movs r0, 0x54
|
|
movs r1, 0x10
|
|
bl SetGpuReg
|
|
ldr r0, _080B6410 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B63FC
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B6414
|
|
_080B63FC:
|
|
movs r6, 0x28
|
|
b _080B6416
|
|
.align 2, 0
|
|
_080B6400: .4byte gUnknown_2022984
|
|
_080B6404: .4byte gUnknown_2022986
|
|
_080B6408: .4byte 0x00003f3f
|
|
_080B640C: .4byte 0x00003f1f
|
|
_080B6410: .4byte gBattleAnimAttacker
|
|
_080B6414:
|
|
movs r6, 0xC8
|
|
_080B6416:
|
|
ldr r1, _080B6454 @ =gUnknown_2022984
|
|
lsls r3, r6, 16
|
|
asrs r2, r3, 16
|
|
lsls r0, r2, 8
|
|
orrs r0, r2
|
|
strh r0, [r1]
|
|
ldr r1, _080B6458 @ =gUnknown_2022986
|
|
movs r5, 0x28
|
|
ldr r0, _080B645C @ =0x00002828
|
|
strh r0, [r1]
|
|
lsrs r3, 16
|
|
movs r1, 0xF0
|
|
subs r1, r2
|
|
movs r4, 0x48
|
|
ldr r2, _080B6460 @ =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, _080B6464 @ =sub_80B6468
|
|
str r1, [r0]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B6454: .4byte gUnknown_2022984
|
|
_080B6458: .4byte gUnknown_2022986
|
|
_080B645C: .4byte 0x00002828
|
|
_080B6460: .4byte gTasks
|
|
_080B6464: .4byte sub_80B6468
|
|
thumb_func_end sub_80B63B4
|
|
|
|
thumb_func_start sub_80B6468
|
|
sub_80B6468: @ 80B6468
|
|
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, _080B6588 @ =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 _080B64A4
|
|
b _080B6594
|
|
_080B64A4:
|
|
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, _080B658C @ =0x3fb00000
|
|
ldr r3, _080B6590 @ =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, _080B658C @ =0x3fb00000
|
|
ldr r3, _080B6590 @ =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, _080B658C @ =0x3fb00000
|
|
ldr r3, _080B6590 @ =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, _080B658C @ =0x3fb00000
|
|
ldr r3, _080B6590 @ =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 _080B65C2
|
|
.align 2, 0
|
|
_080B6588: .4byte gTasks
|
|
_080B658C: .4byte 0x3fb00000
|
|
_080B6590: .4byte 0x00000000
|
|
_080B6594:
|
|
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_8075BE8
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r6, [sp]
|
|
movs r1, 0
|
|
movs r2, 0x10
|
|
movs r3, 0x10
|
|
bl BeginNormalPaletteFade
|
|
ldr r0, _080B65E4 @ =sub_80B65F0
|
|
str r0, [r4]
|
|
_080B65C2:
|
|
ldr r1, _080B65E8 @ =gUnknown_2022984
|
|
mov r2, r9
|
|
lsls r0, r2, 8
|
|
orrs r7, r0
|
|
strh r7, [r1]
|
|
ldr r1, _080B65EC @ =gUnknown_2022986
|
|
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
|
|
_080B65E4: .4byte sub_80B65F0
|
|
_080B65E8: .4byte gUnknown_2022984
|
|
_080B65EC: .4byte gUnknown_2022986
|
|
thumb_func_end sub_80B6468
|
|
|
|
thumb_func_start sub_80B65F0
|
|
sub_80B65F0: @ 80B65F0
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r0, _080B663C @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0
|
|
bne _080B6636
|
|
ldr r0, _080B6640 @ =gUnknown_2022984
|
|
strh r1, [r0]
|
|
ldr r0, _080B6644 @ =gUnknown_2022986
|
|
strh r1, [r0]
|
|
ldr r4, _080B6648 @ =0x00003f3f
|
|
movs r0, 0x48
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x4A
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x54
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B6636:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B663C: .4byte gPaletteFade
|
|
_080B6640: .4byte gUnknown_2022984
|
|
_080B6644: .4byte gUnknown_2022986
|
|
_080B6648: .4byte 0x00003f3f
|
|
thumb_func_end sub_80B65F0
|
|
|
|
thumb_func_start sub_80B664C
|
|
sub_80B664C: @ 80B664C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r0, _080B6678 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B6680
|
|
movs r2, 0x18
|
|
ldr r3, _080B667C @ =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 _080B6684
|
|
.align 2, 0
|
|
_080B6678: .4byte gBattleAnimAttacker
|
|
_080B667C: .4byte 0x0000fffe
|
|
_080B6680:
|
|
ldr r2, _080B66A0 @ =0x0000ffe8
|
|
movs r3, 0x2
|
|
_080B6684:
|
|
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, _080B66A4 @ =sub_80B66A8
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B66A0: .4byte 0x0000ffe8
|
|
_080B66A4: .4byte sub_80B66A8
|
|
thumb_func_end sub_80B664C
|
|
|
|
thumb_func_start sub_80B66A8
|
|
sub_80B66A8: @ 80B66A8
|
|
push {r4,lr}
|
|
adds r3, r0, 0
|
|
ldrh r1, [r3, 0x2E]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r3, r2]
|
|
cmp r0, 0
|
|
ble _080B66BA
|
|
subs r0, r1, 0x1
|
|
b _080B671E
|
|
_080B66BA:
|
|
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 _080B6720
|
|
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, _080B670C @ =0x000003ff
|
|
adds r0, r4, 0
|
|
ands r1, r0
|
|
ldr r0, _080B6710 @ =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 _080B671C
|
|
movs r0, 0x1E
|
|
strh r0, [r3, 0x2E]
|
|
ldr r0, _080B6714 @ =sub_8074C44
|
|
str r0, [r3, 0x1C]
|
|
ldr r1, _080B6718 @ =sub_80B6728
|
|
adds r0, r3, 0
|
|
bl StoreSpriteCallbackInData6
|
|
b _080B6720
|
|
.align 2, 0
|
|
_080B670C: .4byte 0x000003ff
|
|
_080B6710: .4byte 0xfffffc00
|
|
_080B6714: .4byte sub_8074C44
|
|
_080B6718: .4byte sub_80B6728
|
|
_080B671C:
|
|
movs r0, 0x28
|
|
_080B671E:
|
|
strh r0, [r3, 0x2E]
|
|
_080B6720:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B66A8
|
|
|
|
thumb_func_start sub_80B6728
|
|
sub_80B6728: @ 80B6728
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x2E
|
|
ldrsh r5, [r4, r0]
|
|
cmp r5, 0
|
|
bne _080B6752
|
|
movs r1, 0xFD
|
|
lsls r1, 6
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0x10
|
|
bl SetGpuReg
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
strh r5, [r4, 0x30]
|
|
strh r5, [r4, 0x32]
|
|
b _080B6796
|
|
_080B6752:
|
|
ldrh r1, [r4, 0x30]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x1
|
|
bgt _080B6762
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0x30]
|
|
b _080B6796
|
|
_080B6762:
|
|
movs r0, 0
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x32]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x32]
|
|
movs r1, 0x10
|
|
subs r1, r0
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r1, 0x32
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x10
|
|
bne _080B6796
|
|
adds r2, r4, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, _080B679C @ =sub_80B67A0
|
|
str r0, [r4, 0x1C]
|
|
_080B6796:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B679C: .4byte sub_80B67A0
|
|
thumb_func_end sub_80B6728
|
|
|
|
thumb_func_start sub_80B67A0
|
|
sub_80B67A0: @ 80B67A0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldr r0, _080B67CC @ =gUnknown_2022984
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, _080B67D0 @ =gUnknown_2022986
|
|
strh r1, [r0]
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B67CC: .4byte gUnknown_2022984
|
|
_080B67D0: .4byte gUnknown_2022986
|
|
thumb_func_end sub_80B67A0
|
|
|
|
thumb_func_start sub_80B67D4
|
|
sub_80B67D4: @ 80B67D4
|
|
push {r4-r7,lr}
|
|
adds r5, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r5, r1]
|
|
movs r1, 0xC
|
|
bl Sin
|
|
strh r0, [r5, 0x24]
|
|
ldr r0, _080B683C @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B67F8
|
|
ldrh r0, [r5, 0x24]
|
|
negs r0, r0
|
|
strh r0, [r5, 0x24]
|
|
_080B67F8:
|
|
ldrh r0, [r5, 0x2E]
|
|
adds r0, 0x6
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r5, 0x2E]
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
adds r0, r1, 0
|
|
ldrh r1, [r5, 0x30]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
negs r0, r0
|
|
strh r0, [r5, 0x26]
|
|
ldrh r0, [r5, 0x3C]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x3C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
bne _080B6844
|
|
ldr r0, _080B6840 @ =0x0000050b
|
|
strh r0, [r5, 0x3A]
|
|
movs r1, 0xFD
|
|
lsls r1, 6
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
ldrh r1, [r5, 0x3A]
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
b _080B689C
|
|
.align 2, 0
|
|
_080B683C: .4byte gBattleAnimAttacker
|
|
_080B6840: .4byte 0x0000050b
|
|
_080B6844:
|
|
cmp r0, 0x1E
|
|
ble _080B689C
|
|
ldrh r0, [r5, 0x32]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x32]
|
|
ldrh r1, [r5, 0x3A]
|
|
lsls r0, r1, 16
|
|
asrs r0, 24
|
|
lsls r0, 16
|
|
movs r6, 0xFF
|
|
ands r6, r1
|
|
movs r1, 0x80
|
|
lsls r1, 9
|
|
adds r0, r1
|
|
lsrs r7, r0, 16
|
|
cmp r7, 0x10
|
|
bls _080B6868
|
|
movs r7, 0x10
|
|
_080B6868:
|
|
subs r0, r6, 0x1
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
cmp r0, 0
|
|
bge _080B6874
|
|
movs r6, 0
|
|
_080B6874:
|
|
lsls r4, r7, 8
|
|
orrs r4, r6
|
|
lsls r1, r4, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
strh r4, [r5, 0x3A]
|
|
cmp r7, 0x10
|
|
bne _080B689C
|
|
cmp r6, 0
|
|
bne _080B689C
|
|
adds r2, r5, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, _080B68A4 @ =sub_80B68A8
|
|
str r0, [r5, 0x1C]
|
|
_080B689C:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B68A4: .4byte sub_80B68A8
|
|
thumb_func_end sub_80B67D4
|
|
|
|
thumb_func_start sub_80B68A8
|
|
sub_80B68A8: @ 80B68A8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B68A8
|
|
|
|
thumb_func_start sub_80B68C8
|
|
sub_80B68C8: @ 80B68C8
|
|
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, _080B6960 @ =gTasks
|
|
adds r4, r0
|
|
movs r6, 0
|
|
strh r6, [r4, 0x8]
|
|
movs r0, 0x10
|
|
mov r8, r0
|
|
mov r0, r8
|
|
strh r0, [r4, 0xA]
|
|
ldr r5, _080B6964 @ =gBattleAnimAttacker
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x1A]
|
|
ldrb r0, [r5]
|
|
bl sub_807492C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x1C]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x1
|
|
bl sub_8076B2C
|
|
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_8076884
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x12]
|
|
ldrb r0, [r5]
|
|
bl sub_807685C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
subs r0, 0x2
|
|
strh r0, [r4, 0x14]
|
|
strh r6, [r4, 0xE]
|
|
mov r0, r8
|
|
strh r0, [r4, 0x10]
|
|
movs r1, 0xFD
|
|
lsls r1, 6
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
strh r6, [r4, 0x18]
|
|
ldr r0, _080B6968 @ =sub_80B696C
|
|
str r0, [r4]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B6960: .4byte gTasks
|
|
_080B6964: .4byte gBattleAnimAttacker
|
|
_080B6968: .4byte sub_80B696C
|
|
thumb_func_end sub_80B68C8
|
|
|
|
thumb_func_start sub_80B696C
|
|
sub_80B696C: @ 80B696C
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
ldr r1, _080B6990 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x5
|
|
bls _080B6986
|
|
b _080B6AF2
|
|
_080B6986:
|
|
lsls r0, 2
|
|
ldr r1, _080B6994 @ =_080B6998
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080B6990: .4byte gTasks
|
|
_080B6994: .4byte _080B6998
|
|
.align 2, 0
|
|
_080B6998:
|
|
.4byte _080B69B0
|
|
.4byte _080B6A20
|
|
.4byte _080B6A62
|
|
.4byte _080B6A76
|
|
.4byte _080B6ACC
|
|
.4byte _080B6ADC
|
|
_080B69B0:
|
|
movs r6, 0
|
|
_080B69B2:
|
|
movs r2, 0x1A
|
|
ldrsh r1, [r4, r2]
|
|
movs r0, 0x1C
|
|
ldrsh r2, [r4, r0]
|
|
ldrb r3, [r4, 0x14]
|
|
ldr r0, _080B6A14 @ =gUnknown_83E76E0
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0x40
|
|
beq _080B6A06
|
|
ldr r1, _080B6A18 @ =gSprites
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r5, r0, r1
|
|
strh r7, [r5, 0x2E]
|
|
ldr r0, _080B6A1C @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
movs r1, 0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B69E8
|
|
movs r1, 0x1
|
|
_080B69E8:
|
|
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]
|
|
_080B6A06:
|
|
adds r0, r6, 0x1
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
cmp r6, 0x5
|
|
bls _080B69B2
|
|
b _080B6AD4
|
|
.align 2, 0
|
|
_080B6A14: .4byte gUnknown_83E76E0
|
|
_080B6A18: .4byte gSprites
|
|
_080B6A1C: .4byte gBattleAnimAttacker
|
|
_080B6A20:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B6A3E
|
|
ldrh r1, [r4, 0xE]
|
|
movs r2, 0xE
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0xD
|
|
bgt _080B6A4C
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0xE]
|
|
b _080B6A4C
|
|
_080B6A3E:
|
|
ldrh r1, [r4, 0x10]
|
|
movs r2, 0x10
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x4
|
|
ble _080B6A4C
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x10]
|
|
_080B6A4C:
|
|
movs r1, 0xE
|
|
ldrsh r0, [r4, r1]
|
|
ldrh r2, [r4, 0xE]
|
|
ldrh r1, [r4, 0x10]
|
|
cmp r0, 0xE
|
|
bne _080B6ABC
|
|
cmp r1, 0x4
|
|
bne _080B6ABC
|
|
movs r0, 0
|
|
strh r0, [r4, 0xA]
|
|
b _080B6AB6
|
|
_080B6A62:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1E
|
|
ble _080B6AF2
|
|
movs r0, 0
|
|
strh r0, [r4, 0xA]
|
|
b _080B6AD4
|
|
_080B6A76:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B6A94
|
|
ldrh r1, [r4, 0xE]
|
|
movs r2, 0xE
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
ble _080B6AA2
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0xE]
|
|
b _080B6AA2
|
|
_080B6A94:
|
|
ldrh r1, [r4, 0x10]
|
|
movs r2, 0x10
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0xF
|
|
bgt _080B6AA2
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0x10]
|
|
_080B6AA2:
|
|
movs r1, 0xE
|
|
ldrsh r0, [r4, r1]
|
|
ldrh r2, [r4, 0xE]
|
|
ldrh r1, [r4, 0x10]
|
|
cmp r0, 0
|
|
bne _080B6ABC
|
|
cmp r1, 0x10
|
|
bne _080B6ABC
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x18]
|
|
_080B6AB6:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
_080B6ABC:
|
|
lsls r1, 8
|
|
orrs r1, r2
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
b _080B6AF2
|
|
_080B6ACC:
|
|
movs r2, 0x16
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bne _080B6AF2
|
|
_080B6AD4:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080B6AF2
|
|
_080B6ADC:
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
adds r0, r7, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B6AF2:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B696C
|
|
|
|
thumb_func_start sub_80B6AF8
|
|
sub_80B6AF8: @ 80B6AF8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x30
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080B6B0A
|
|
ldrh r0, [r4, 0x32]
|
|
adds r0, 0x2
|
|
b _080B6B0E
|
|
_080B6B0A:
|
|
ldrh r0, [r4, 0x32]
|
|
subs r0, 0x2
|
|
_080B6B0E:
|
|
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 _080B6B50
|
|
ldr r2, _080B6B4C @ =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 _080B6B64
|
|
.align 2, 0
|
|
_080B6B4C: .4byte gTasks
|
|
_080B6B50:
|
|
ldr r2, _080B6BB8 @ =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
|
|
_080B6B64:
|
|
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, _080B6BB8 @ =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 _080B6BB2
|
|
ldrh r0, [r1, 0x16]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0x16]
|
|
adds r0, r4, 0
|
|
bl DestroySprite
|
|
_080B6BB2:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B6BB8: .4byte gTasks
|
|
thumb_func_end sub_80B6AF8
|
|
|
|
thumb_func_start sub_80B6BBC
|
|
sub_80B6BBC: @ 80B6BBC
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r2, _080B6BDC @ =gTasks
|
|
adds r1, r2
|
|
movs r2, 0
|
|
strh r2, [r1, 0x26]
|
|
ldr r2, _080B6BE0 @ =sub_80B6BE4
|
|
str r2, [r1]
|
|
bl _call_via_r2
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B6BDC: .4byte gTasks
|
|
_080B6BE0: .4byte sub_80B6BE4
|
|
thumb_func_end sub_80B6BBC
|
|
|
|
thumb_func_start sub_80B6BE4
|
|
sub_80B6BE4: @ 80B6BE4
|
|
push {r4-r6,lr}
|
|
sub sp, 0x1C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080B6C18 @ =gTasks
|
|
adds r6, r1, r0
|
|
ldr r0, _080B6C1C @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
movs r1, 0x26
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0x7
|
|
bls _080B6C0C
|
|
b _080B6F1E
|
|
_080B6C0C:
|
|
lsls r0, 2
|
|
ldr r1, _080B6C20 @ =_080B6C24
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080B6C18: .4byte gTasks
|
|
_080B6C1C: .4byte gBattleAnimAttacker
|
|
_080B6C20: .4byte _080B6C24
|
|
.align 2, 0
|
|
_080B6C24:
|
|
.4byte _080B6C44
|
|
.4byte _080B6CCC
|
|
.4byte _080B6D28
|
|
.4byte _080B6D8C
|
|
.4byte _080B6E04
|
|
.4byte _080B6E6C
|
|
.4byte _080B6E82
|
|
.4byte _080B6EEC
|
|
_080B6C44:
|
|
movs r0, 0x1
|
|
movs r1, 0x4
|
|
movs r2, 0x2
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0x2
|
|
movs r1, 0x4
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0
|
|
strh r0, [r6, 0xA]
|
|
strh r0, [r6, 0xC]
|
|
movs r0, 0x10
|
|
strh r0, [r6, 0xE]
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r6, 0x10]
|
|
ldr r3, _080B6CC8 @ =gSprites
|
|
movs r2, 0x10
|
|
ldrsh r1, [r6, r2]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrb r0, [r0, 0x5]
|
|
lsls r0, 28
|
|
lsrs r0, 30
|
|
strh r0, [r6, 0x12]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrb r0, [r0, 0x5]
|
|
lsrs r0, 4
|
|
adds r0, 0x10
|
|
lsls r0, 4
|
|
strh r0, [r6, 0x14]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrb r2, [r0, 0x1]
|
|
movs r1, 0xD
|
|
negs r1, r1
|
|
ands r1, r2
|
|
movs r2, 0x4
|
|
orrs r1, r2
|
|
strb r1, [r0, 0x1]
|
|
movs r0, 0x10
|
|
ldrsh r1, [r6, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrb r1, [r0, 0x5]
|
|
movs r2, 0xC
|
|
orrs r1, r2
|
|
strb r1, [r0, 0x5]
|
|
movs r0, 0x80
|
|
strh r0, [r6, 0x16]
|
|
b _080B6F1E
|
|
.align 2, 0
|
|
_080B6CC8: .4byte gSprites
|
|
_080B6CCC:
|
|
ldrh r0, [r6, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r6, 0xA]
|
|
movs r5, 0x1
|
|
ands r5, r0
|
|
cmp r5, 0
|
|
beq _080B6CDC
|
|
b _080B6F24
|
|
_080B6CDC:
|
|
ldrh r0, [r6, 0x14]
|
|
ldrb r2, [r6, 0xC]
|
|
ldr r4, _080B6D08 @ =0x000066e0
|
|
movs r1, 0x10
|
|
adds r3, r4, 0
|
|
bl BlendPalette
|
|
ldrh r0, [r6, 0x16]
|
|
ldrb r2, [r6, 0xC]
|
|
movs r1, 0x10
|
|
adds r3, r4, 0
|
|
bl BlendPalette
|
|
ldrh r1, [r6, 0xC]
|
|
movs r2, 0xC
|
|
ldrsh r0, [r6, r2]
|
|
cmp r0, 0xB
|
|
bgt _080B6D0C
|
|
adds r0, r1, 0x1
|
|
strh r0, [r6, 0xC]
|
|
b _080B6F24
|
|
.align 2, 0
|
|
_080B6D08: .4byte 0x000066e0
|
|
_080B6D0C:
|
|
strh r5, [r6, 0xA]
|
|
strh r5, [r6, 0xC]
|
|
ldr r1, _080B6D24 @ =0x00003f44
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
b _080B6F1E
|
|
.align 2, 0
|
|
_080B6D24: .4byte 0x00003f44
|
|
_080B6D28:
|
|
movs r0, 0x2
|
|
movs r1, 0x3
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0x2
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
ldr r0, _080B6D7C @ =gBattle_BG2_X
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r4, _080B6D80 @ =gBattle_BG2_Y
|
|
strh r1, [r4]
|
|
movs r0, 0x18
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldrh r1, [r4]
|
|
movs r0, 0x1A
|
|
bl SetGpuReg
|
|
add r0, sp, 0xC
|
|
movs r1, 0x2
|
|
bl sub_80752C8
|
|
add r0, sp, 0xC
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080B6D84 @ =gFile_graphics_battle_anims_backgrounds_scary_face_sheet
|
|
add r2, sp, 0xC
|
|
ldrh r2, [r2, 0xA]
|
|
bl sub_80753B4
|
|
ldr r0, _080B6D88 @ =gFile_graphics_battle_anims_backgrounds_scary_face_palette
|
|
add r1, sp, 0xC
|
|
ldrb r1, [r1, 0x8]
|
|
lsls r1, 4
|
|
movs r2, 0x20
|
|
bl LoadCompressedPalette
|
|
b _080B6F1E
|
|
.align 2, 0
|
|
_080B6D7C: .4byte gBattle_BG2_X
|
|
_080B6D80: .4byte gBattle_BG2_Y
|
|
_080B6D84: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_sheet
|
|
_080B6D88: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_palette
|
|
_080B6D8C:
|
|
add r0, sp, 0xC
|
|
movs r1, 0x2
|
|
bl sub_80752C8
|
|
movs r0, 0x80
|
|
lsls r0, 6
|
|
bl AllocZeroed
|
|
adds r1, r0, 0
|
|
ldr r5, _080B6DFC @ =gMonSpritesGfxPtr
|
|
ldr r0, [r5]
|
|
movs r4, 0xBE
|
|
lsls r4, 1
|
|
adds r0, r4
|
|
str r1, [r0]
|
|
ldr r0, _080B6E00 @ =gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap
|
|
bl LZDecompressWram
|
|
add r0, sp, 0xC
|
|
ldrb r0, [r0, 0x8]
|
|
ldr r1, [r5]
|
|
adds r1, r4
|
|
ldr r1, [r1]
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
movs r3, 0
|
|
bl sub_80730C0
|
|
add r0, sp, 0xC
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, [r5]
|
|
adds r1, r4
|
|
ldr r1, [r1]
|
|
movs r2, 0x20
|
|
str r2, [sp]
|
|
str r2, [sp, 0x4]
|
|
movs r2, 0x11
|
|
str r2, [sp, 0x8]
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl CopyToBgTilemapBufferRect_ChangePalette
|
|
movs r0, 0x2
|
|
bl CopyBgTilemapBufferToVram
|
|
ldr r0, [r5]
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
bl Free
|
|
ldr r0, [r5]
|
|
adds r0, r4
|
|
movs r1, 0
|
|
str r1, [r0]
|
|
b _080B6F1E
|
|
.align 2, 0
|
|
_080B6DFC: .4byte gMonSpritesGfxPtr
|
|
_080B6E00: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap
|
|
_080B6E04:
|
|
ldrh r0, [r6, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r6, 0xA]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B6E14
|
|
b _080B6F24
|
|
_080B6E14:
|
|
ldrh r1, [r6, 0xC]
|
|
adds r1, 0x1
|
|
strh r1, [r6, 0xC]
|
|
ldrh r0, [r6, 0xE]
|
|
subs r0, 0x1
|
|
strh r0, [r6, 0xE]
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r1, 0xE
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
bne _080B6F24
|
|
strh r0, [r6, 0xA]
|
|
strh r0, [r6, 0xC]
|
|
movs r0, 0x10
|
|
strh r0, [r6, 0xE]
|
|
ldr r1, _080B6E68 @ =0x00003f42
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r0, 0x1
|
|
movs r1, 0x4
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0x2
|
|
movs r1, 0x4
|
|
movs r2, 0x2
|
|
bl SetAnimBgAttribute
|
|
b _080B6F1E
|
|
.align 2, 0
|
|
_080B6E68: .4byte 0x00003f42
|
|
_080B6E6C:
|
|
cmp r4, 0x1
|
|
bne _080B6E76
|
|
movs r1, 0x80
|
|
lsls r1, 2
|
|
b _080B6E7A
|
|
_080B6E76:
|
|
movs r1, 0x80
|
|
lsls r1, 3
|
|
_080B6E7A:
|
|
movs r0, 0
|
|
bl ClearGpuRegBits
|
|
b _080B6F1E
|
|
_080B6E82:
|
|
ldr r2, _080B6EC0 @ =gSprites
|
|
movs r0, 0x10
|
|
ldrsh r1, [r6, 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 _080B6EA2
|
|
movs r2, 0
|
|
_080B6EA2:
|
|
cmp r4, 0x1
|
|
bne _080B6EC4
|
|
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 r4, [sp, 0x8]
|
|
b _080B6EDE
|
|
.align 2, 0
|
|
_080B6EC0: .4byte gSprites
|
|
_080B6EC4:
|
|
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]
|
|
movs r2, 0x4
|
|
_080B6EDE:
|
|
movs r3, 0x8
|
|
bl ScanlineEffect_InitWave
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r6, 0x1C]
|
|
b _080B6F1E
|
|
_080B6EEC:
|
|
ldrh r0, [r6, 0x16]
|
|
ldr r3, _080B6F08 @ =0x000077ff
|
|
movs r1, 0x10
|
|
movs r2, 0xC
|
|
bl BlendPalette
|
|
cmp r4, 0x1
|
|
bne _080B6F0C
|
|
movs r1, 0x80
|
|
lsls r1, 2
|
|
movs r0, 0
|
|
bl SetGpuRegBits
|
|
b _080B6F16
|
|
.align 2, 0
|
|
_080B6F08: .4byte 0x000077ff
|
|
_080B6F0C:
|
|
movs r1, 0x80
|
|
lsls r1, 3
|
|
movs r0, 0
|
|
bl SetGpuRegBits
|
|
_080B6F16:
|
|
ldr r0, _080B6F2C @ =sub_80B6F30
|
|
str r0, [r6]
|
|
movs r0, 0
|
|
strh r0, [r6, 0x26]
|
|
_080B6F1E:
|
|
ldrh r0, [r6, 0x26]
|
|
adds r0, 0x1
|
|
strh r0, [r6, 0x26]
|
|
_080B6F24:
|
|
add sp, 0x1C
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B6F2C: .4byte sub_80B6F30
|
|
thumb_func_end sub_80B6BE4
|
|
|
|
thumb_func_start sub_80B6F30
|
|
sub_80B6F30: @ 80B6F30
|
|
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, _080B6FB8 @ =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, 0x18]
|
|
cmp r0, 0
|
|
bne _080B6F68
|
|
ldr r1, _080B6FBC @ =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]
|
|
_080B6F68:
|
|
movs r2, 0x18
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x1
|
|
bne _080B6F8A
|
|
ldr r1, _080B6FBC @ =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]
|
|
_080B6F8A:
|
|
ldrh r1, [r4, 0xE]
|
|
lsls r1, 8
|
|
ldrh r0, [r4, 0xC]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r2, 0xA
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x80
|
|
bne _080B6FB2
|
|
movs r0, 0
|
|
strh r0, [r4, 0x26]
|
|
ldr r1, _080B6FC0 @ =sub_80B6FC4
|
|
str r1, [r4]
|
|
adds r0, r5, 0
|
|
bl _call_via_r1
|
|
_080B6FB2:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B6FB8: .4byte gTasks
|
|
_080B6FBC: .4byte gSineTable
|
|
_080B6FC0: .4byte sub_80B6FC4
|
|
thumb_func_end sub_80B6F30
|
|
|
|
thumb_func_start sub_80B6FC4
|
|
sub_80B6FC4: @ 80B6FC4
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
ldr r1, _080B6FE8 @ =gTasks
|
|
adds r6, r0, r1
|
|
movs r1, 0x26
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0x5
|
|
bls _080B6FDE
|
|
b _080B7148
|
|
_080B6FDE:
|
|
lsls r0, 2
|
|
ldr r1, _080B6FEC @ =_080B6FF0
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080B6FE8: .4byte gTasks
|
|
_080B6FEC: .4byte _080B6FF0
|
|
.align 2, 0
|
|
_080B6FF0:
|
|
.4byte _080B7008
|
|
.4byte _080B7024
|
|
.4byte _080B7044
|
|
.4byte _080B707C
|
|
.4byte _080B709C
|
|
.4byte _080B70E8
|
|
_080B7008:
|
|
ldr r1, _080B701C @ =gScanlineEffect
|
|
movs r0, 0x3
|
|
strb r0, [r1, 0x15]
|
|
ldrh r0, [r6, 0x16]
|
|
ldr r3, _080B7020 @ =0x000066e0
|
|
movs r1, 0x10
|
|
movs r2, 0xC
|
|
bl BlendPalette
|
|
b _080B7148
|
|
.align 2, 0
|
|
_080B701C: .4byte gScanlineEffect
|
|
_080B7020: .4byte 0x000066e0
|
|
_080B7024:
|
|
ldr r1, _080B7040 @ =0x00003f44
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0x10
|
|
bl SetGpuReg
|
|
movs r1, 0
|
|
movs r0, 0x10
|
|
strh r0, [r6, 0xC]
|
|
strh r1, [r6, 0xE]
|
|
b _080B7148
|
|
.align 2, 0
|
|
_080B7040: .4byte 0x00003f44
|
|
_080B7044:
|
|
ldrh r1, [r6, 0xC]
|
|
subs r1, 0x1
|
|
strh r1, [r6, 0xC]
|
|
ldrh r0, [r6, 0xE]
|
|
adds r0, 0x1
|
|
strh r0, [r6, 0xE]
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r2, 0xE
|
|
ldrsh r0, [r6, r2]
|
|
cmp r0, 0xF
|
|
ble _080B714E
|
|
movs r0, 0x1
|
|
movs r1, 0x4
|
|
movs r2, 0x2
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0x2
|
|
movs r1, 0x4
|
|
movs r2, 0x2
|
|
bl SetAnimBgAttribute
|
|
b _080B7148
|
|
_080B707C:
|
|
movs r0, 0x2
|
|
bl sub_8075358
|
|
movs r0, 0
|
|
movs r1, 0x90
|
|
movs r2, 0x20
|
|
bl FillPalette
|
|
movs r0, 0x2
|
|
movs r1, 0x3
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0xC
|
|
strh r0, [r6, 0xA]
|
|
b _080B7148
|
|
_080B709C:
|
|
ldrh r0, [r6, 0x14]
|
|
ldrb r2, [r6, 0xA]
|
|
ldr r4, _080B70C8 @ =0x000066e0
|
|
movs r1, 0x10
|
|
adds r3, r4, 0
|
|
bl BlendPalette
|
|
ldrh r0, [r6, 0x16]
|
|
ldrb r2, [r6, 0xA]
|
|
movs r1, 0x10
|
|
adds r3, r4, 0
|
|
bl BlendPalette
|
|
ldrh r0, [r6, 0xA]
|
|
movs r2, 0xA
|
|
ldrsh r1, [r6, r2]
|
|
cmp r1, 0
|
|
beq _080B70CC
|
|
subs r0, 0x1
|
|
strh r0, [r6, 0xA]
|
|
b _080B714E
|
|
.align 2, 0
|
|
_080B70C8: .4byte 0x000066e0
|
|
_080B70CC:
|
|
strh r1, [r6, 0xA]
|
|
ldr r1, _080B70E4 @ =0x00003f44
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
b _080B7148
|
|
.align 2, 0
|
|
_080B70E4: .4byte 0x00003f44
|
|
_080B70E8:
|
|
ldr r5, _080B7154 @ =gSprites
|
|
movs r1, 0x10
|
|
ldrsh r0, [r6, r1]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r5
|
|
movs r0, 0x3
|
|
ldrb r2, [r6, 0x12]
|
|
ands r2, r0
|
|
lsls r2, 2
|
|
ldrb r4, [r1, 0x5]
|
|
movs r3, 0xD
|
|
negs r3, r3
|
|
adds r0, r3, 0
|
|
ands r0, r4
|
|
orrs r0, r2
|
|
strb r0, [r1, 0x5]
|
|
movs r2, 0x10
|
|
ldrsh r1, [r6, r2]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldrb r1, [r0, 0x1]
|
|
ands r3, r1
|
|
strb r3, [r0, 0x1]
|
|
movs r0, 0x1
|
|
movs r1, 0x4
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0x2
|
|
movs r1, 0x4
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
adds r0, r7, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B7148:
|
|
ldrh r0, [r6, 0x26]
|
|
adds r0, 0x1
|
|
strh r0, [r6, 0x26]
|
|
_080B714E:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B7154: .4byte gSprites
|
|
thumb_func_end sub_80B6FC4
|
|
|
|
thumb_func_start sub_80B7158
|
|
sub_80B7158: @ 80B7158
|
|
adds r3, r0, 0
|
|
adds r3, 0x3E
|
|
ldrb r1, [r3]
|
|
movs r2, 0x4
|
|
orrs r1, r2
|
|
strb r1, [r3]
|
|
ldr r2, _080B719C @ =gUnknown_2023D44
|
|
ldr r1, _080B71A0 @ =gBattleAnimAttacker
|
|
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, _080B71A4 @ =gBattleAnimArgs
|
|
ldrh r1, [r2]
|
|
strh r1, [r0, 0x32]
|
|
ldrh r1, [r2, 0x2]
|
|
strh r1, [r0, 0x34]
|
|
ldr r1, _080B71A8 @ =sub_80B71B0
|
|
str r1, [r0, 0x1C]
|
|
ldr r2, _080B71AC @ =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
|
|
_080B719C: .4byte gUnknown_2023D44
|
|
_080B71A0: .4byte gBattleAnimAttacker
|
|
_080B71A4: .4byte gBattleAnimArgs
|
|
_080B71A8: .4byte sub_80B71B0
|
|
_080B71AC: .4byte gSprites
|
|
thumb_func_end sub_80B7158
|
|
|
|
thumb_func_start sub_80B71B0
|
|
sub_80B71B0: @ 80B71B0
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldrh r0, [r5, 0x34]
|
|
movs r1, 0x34
|
|
ldrsh r3, [r5, r1]
|
|
cmp r3, 0
|
|
beq _080B7218
|
|
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, _080B7210 @ =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 _080B724C
|
|
ldr r2, _080B7214 @ =0xffffff00
|
|
adds r0, r1, r2
|
|
strh r0, [r5, 0x2E]
|
|
b _080B724C
|
|
.align 2, 0
|
|
_080B7210: .4byte gSprites
|
|
_080B7214: .4byte 0xffffff00
|
|
_080B7218:
|
|
ldr r2, _080B7254 @ =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, _080B7258 @ =move_anim_8074EE0
|
|
str r0, [r5, 0x1C]
|
|
_080B724C:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B7254: .4byte gSprites
|
|
_080B7258: .4byte move_anim_8074EE0
|
|
thumb_func_end sub_80B71B0
|
|
|
|
thumb_func_start sub_80B725C
|
|
sub_80B725C: @ 80B725C
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080B72A4 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B72AC
|
|
ldr r2, _080B72A8 @ =gBattleAnimArgs
|
|
ldrh r0, [r5, 0x20]
|
|
ldrh r1, [r2]
|
|
subs r0, r1
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r2, 0x6]
|
|
negs r0, r0
|
|
strh r0, [r2, 0x6]
|
|
ldrh r0, [r2, 0x8]
|
|
negs r0, r0
|
|
strh r0, [r2, 0x8]
|
|
adds r1, r2, 0
|
|
b _080B72B6
|
|
.align 2, 0
|
|
_080B72A4: .4byte gBattleAnimAttacker
|
|
_080B72A8: .4byte gBattleAnimArgs
|
|
_080B72AC:
|
|
ldr r1, _080B72EC @ =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
ldrh r2, [r5, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x20]
|
|
_080B72B6:
|
|
ldrh r0, [r1, 0x2]
|
|
ldrh r2, [r5, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x22]
|
|
ldrh r0, [r1, 0x4]
|
|
strh r0, [r5, 0x2E]
|
|
ldrh r0, [r1, 0x6]
|
|
strh r0, [r5, 0x30]
|
|
ldrh r0, [r1, 0x8]
|
|
strh r0, [r5, 0x34]
|
|
ldrh r0, [r1, 0xA]
|
|
strh r0, [r5, 0x38]
|
|
adds r2, r5, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldr r1, _080B72F0 @ =move_anim_8074EE0
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, _080B72F4 @ =sub_8074E70
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B72EC: .4byte gBattleAnimArgs
|
|
_080B72F0: .4byte move_anim_8074EE0
|
|
_080B72F4: .4byte sub_8074E70
|
|
thumb_func_end sub_80B725C
|
|
|
|
thumb_func_start sub_80B72F8
|
|
sub_80B72F8: @ 80B72F8
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
bl sub_8074FCC
|
|
ldr r4, _080B7350 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x32]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x36]
|
|
ldr r0, _080B7354 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B735C
|
|
ldr r2, _080B7358 @ =gBattleAnimArgs
|
|
ldrh r0, [r5, 0x20]
|
|
ldrh r1, [r2, 0x2]
|
|
subs r0, r1
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r5, 0x22]
|
|
adds r1, r0
|
|
strh r1, [r5, 0x22]
|
|
ldrh r0, [r5, 0x32]
|
|
ldrh r1, [r2, 0x4]
|
|
subs r0, r1
|
|
strh r0, [r5, 0x32]
|
|
ldrh r0, [r2, 0x6]
|
|
ldrh r1, [r5, 0x36]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x36]
|
|
b _080B7386
|
|
.align 2, 0
|
|
_080B7350: .4byte gBattleAnimTarget
|
|
_080B7354: .4byte gBattleAnimAttacker
|
|
_080B7358: .4byte gBattleAnimArgs
|
|
_080B735C:
|
|
ldr r1, _080B73A0 @ =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
ldrh r2, [r5, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r1, 0x2]
|
|
ldrh r2, [r5, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x22]
|
|
ldrh r0, [r1, 0x4]
|
|
ldrh r2, [r5, 0x32]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x32]
|
|
ldrh r0, [r1, 0x6]
|
|
ldrh r1, [r5, 0x36]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x36]
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAnim
|
|
_080B7386:
|
|
ldr r0, _080B73A0 @ =gBattleAnimArgs
|
|
ldrh r0, [r0, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
ldr r0, _080B73A4 @ =sub_8075590
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, _080B73A8 @ =move_anim_8074EE0
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B73A0: .4byte gBattleAnimArgs
|
|
_080B73A4: .4byte sub_8075590
|
|
_080B73A8: .4byte move_anim_8074EE0
|
|
thumb_func_end sub_80B72F8
|
|
|
|
thumb_func_start sub_80B73AC
|
|
sub_80B73AC: @ 80B73AC
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _080B73C0 @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080B73C8
|
|
ldr r4, _080B73C4 @ =gBattleAnimAttacker
|
|
b _080B73CA
|
|
.align 2, 0
|
|
_080B73C0: .4byte gBattleAnimArgs
|
|
_080B73C4: .4byte gBattleAnimAttacker
|
|
_080B73C8:
|
|
ldr r4, _080B740C @ =gBattleAnimTarget
|
|
_080B73CA:
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
ldr r4, _080B7410 @ =gBattleAnimArgs
|
|
movs r0, 0x2
|
|
ldrsh r1, [r4, r0]
|
|
adds r0, r5, 0
|
|
bl sub_8074FF8
|
|
ldrh r0, [r4, 0x4]
|
|
ldrh r1, [r5, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x22]
|
|
ldr r0, _080B7414 @ =sub_8074F6C
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, _080B7418 @ =move_anim_8074EE0
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B740C: .4byte gBattleAnimTarget
|
|
_080B7410: .4byte gBattleAnimArgs
|
|
_080B7414: .4byte sub_8074F6C
|
|
_080B7418: .4byte move_anim_8074EE0
|
|
thumb_func_end sub_80B73AC
|
|
|
|
thumb_func_start sub_80B741C
|
|
sub_80B741C: @ 80B741C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _080B7444 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B7436
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
_080B7436:
|
|
adds r0, r4, 0
|
|
bl sub_80B72F8
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B7444: .4byte gBattleAnimAttacker
|
|
thumb_func_end sub_80B741C
|
|
|
|
thumb_func_start sub_80B7448
|
|
sub_80B7448: @ 80B7448
|
|
push {r4-r7,lr}
|
|
adds r6, r0, 0
|
|
ldr r4, _080B749C @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r5, 0
|
|
strh r0, [r6, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r6, 0x22]
|
|
strh r5, [r6, 0x36]
|
|
movs r0, 0x1
|
|
strh r0, [r6, 0x38]
|
|
ldr r0, _080B74A0 @ =gBattleAnimArgs
|
|
ldrh r0, [r0]
|
|
strh r0, [r6, 0x3A]
|
|
ldr r4, _080B74A4 @ =sBattler_AI
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8076B2C
|
|
lsls r7, r0, 16
|
|
lsrs r5, r7, 16
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8076B2C
|
|
lsls r1, r0, 16
|
|
lsrs r0, r1, 16
|
|
cmp r5, r0
|
|
bls _080B74A8
|
|
lsrs r0, r7, 17
|
|
b _080B74AA
|
|
.align 2, 0
|
|
_080B749C: .4byte gBattleAnimAttacker
|
|
_080B74A0: .4byte gBattleAnimArgs
|
|
_080B74A4: .4byte sBattler_AI
|
|
_080B74A8:
|
|
lsrs r0, r1, 17
|
|
_080B74AA:
|
|
strh r0, [r6, 0x3C]
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r6, r1]
|
|
movs r2, 0x3C
|
|
ldrsh r1, [r6, r2]
|
|
bl Cos
|
|
strh r0, [r6, 0x24]
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r6, r1]
|
|
movs r2, 0x3C
|
|
ldrsh r1, [r6, r2]
|
|
bl Sin
|
|
strh r0, [r6, 0x26]
|
|
ldr r0, _080B74D4 @ =sub_80B74D8
|
|
str r0, [r6, 0x1C]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B74D4: .4byte sub_80B74D8
|
|
thumb_func_end sub_80B7448
|
|
|
|
thumb_func_start sub_80B74D8
|
|
sub_80B74D8: @ 80B74D8
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x2E
|
|
ldrsh r5, [r4, r0]
|
|
cmp r5, 0
|
|
beq _080B74EA
|
|
cmp r5, 0x1
|
|
beq _080B7556
|
|
b _080B75DA
|
|
_080B74EA:
|
|
ldrh r0, [r4, 0x3A]
|
|
ldrh r1, [r4, 0x38]
|
|
subs r0, r1
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x3A]
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x3C
|
|
ldrsh r1, [r4, r2]
|
|
bl Cos
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x3C
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x36]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x36]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x5
|
|
ble _080B753C
|
|
strh r5, [r4, 0x36]
|
|
ldrh r1, [r4, 0x38]
|
|
movs r2, 0x38
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0xF
|
|
bgt _080B753C
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0x38]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xF
|
|
ble _080B753C
|
|
movs r0, 0x10
|
|
strh r0, [r4, 0x38]
|
|
_080B753C:
|
|
ldrh r0, [r4, 0x34]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x34]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x3C
|
|
ble _080B75DA
|
|
movs r0, 0
|
|
strh r0, [r4, 0x34]
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _080B75DA
|
|
_080B7556:
|
|
ldrh r0, [r4, 0x3A]
|
|
ldrh r1, [r4, 0x38]
|
|
subs r0, r1
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x3A]
|
|
ldrh r1, [r4, 0x3C]
|
|
movs r2, 0x3C
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x95
|
|
bgt _080B757E
|
|
adds r0, r1, 0
|
|
adds r0, 0x8
|
|
strh r0, [r4, 0x3C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x95
|
|
ble _080B757E
|
|
movs r0, 0x96
|
|
strh r0, [r4, 0x3C]
|
|
_080B757E:
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x3C
|
|
ldrsh r1, [r4, r2]
|
|
bl Cos
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x3C
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x36]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x36]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x5
|
|
ble _080B75C6
|
|
movs r0, 0
|
|
strh r0, [r4, 0x36]
|
|
ldrh r1, [r4, 0x38]
|
|
movs r2, 0x38
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0xF
|
|
bgt _080B75C6
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0x38]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xF
|
|
ble _080B75C6
|
|
movs r0, 0x10
|
|
strh r0, [r4, 0x38]
|
|
_080B75C6:
|
|
ldrh r0, [r4, 0x34]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x34]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x14
|
|
ble _080B75DA
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B75DA:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B74D8
|
|
|
|
thumb_func_start sub_80B75E0
|
|
sub_80B75E0: @ 80B75E0
|
|
push {r4-r6,lr}
|
|
sub sp, 0xC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080B760C @ =gTasks
|
|
adds r4, r1, r0
|
|
ldr r0, _080B7610 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080B761C
|
|
ldr r0, _080B7614 @ =0x04000014
|
|
str r0, [sp]
|
|
ldr r0, _080B7618 @ =gBattle_BG1_X
|
|
b _080B7622
|
|
.align 2, 0
|
|
_080B760C: .4byte gTasks
|
|
_080B7610: .4byte gBattleAnimAttacker
|
|
_080B7614: .4byte 0x04000014
|
|
_080B7618: .4byte gBattle_BG1_X
|
|
_080B761C:
|
|
ldr r0, _080B7698 @ =0x04000018
|
|
str r0, [sp]
|
|
ldr r0, _080B769C @ =gBattle_BG2_X
|
|
_080B7622:
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, 0xC]
|
|
ldr r0, _080B76A0 @ =0xa2600001
|
|
str r0, [sp, 0x4]
|
|
mov r1, sp
|
|
movs r5, 0
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x8]
|
|
mov r0, sp
|
|
strb r5, [r0, 0x9]
|
|
ldr r0, _080B76A4 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl sub_807492C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r0, 0
|
|
subs r1, 0x20
|
|
strh r1, [r4, 0xE]
|
|
adds r0, 0x20
|
|
strh r0, [r4, 0x10]
|
|
cmp r1, 0
|
|
bge _080B7652
|
|
strh r5, [r4, 0xE]
|
|
_080B7652:
|
|
ldrh r3, [r4, 0xE]
|
|
movs r1, 0x10
|
|
ldrsh r0, [r4, r1]
|
|
cmp r3, r0
|
|
bgt _080B7680
|
|
ldr r5, _080B76A8 @ =gScanlineEffectRegBuffers
|
|
movs r0, 0xF0
|
|
lsls r0, 3
|
|
adds r6, r5, r0
|
|
_080B7664:
|
|
lsls r1, r3, 1
|
|
adds r2, r1, r5
|
|
ldrh r0, [r4, 0xC]
|
|
strh r0, [r2]
|
|
adds r1, r6
|
|
ldrh r0, [r4, 0xC]
|
|
strh r0, [r1]
|
|
adds r0, r3, 0x1
|
|
lsls r0, 16
|
|
lsrs r3, r0, 16
|
|
movs r1, 0x10
|
|
ldrsh r0, [r4, r1]
|
|
cmp r3, r0
|
|
ble _080B7664
|
|
_080B7680:
|
|
ldr r0, [sp]
|
|
ldr r1, [sp, 0x4]
|
|
ldr r2, [sp, 0x8]
|
|
bl ScanlineEffect_SetParams
|
|
ldr r0, _080B76AC @ =sub_80B76B0
|
|
str r0, [r4]
|
|
add sp, 0xC
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B7698: .4byte 0x04000018
|
|
_080B769C: .4byte gBattle_BG2_X
|
|
_080B76A0: .4byte 0xa2600001
|
|
_080B76A4: .4byte gBattleAnimAttacker
|
|
_080B76A8: .4byte gScanlineEffectRegBuffers
|
|
_080B76AC: .4byte sub_80B76B0
|
|
thumb_func_end sub_80B75E0
|
|
|
|
thumb_func_start sub_80B76B0
|
|
sub_80B76B0: @ 80B76B0
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
lsls r0, r3, 2
|
|
adds r0, r3
|
|
lsls r0, 3
|
|
ldr r1, _080B76D4 @ =gTasks
|
|
adds r2, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r2, r1]
|
|
cmp r0, 0x4
|
|
bhi _080B7766
|
|
lsls r0, 2
|
|
ldr r1, _080B76D8 @ =_080B76DC
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080B76D4: .4byte gTasks
|
|
_080B76D8: .4byte _080B76DC
|
|
.align 2, 0
|
|
_080B76DC:
|
|
.4byte _080B76F0
|
|
.4byte _080B7712
|
|
.4byte _080B7722
|
|
.4byte _080B774E
|
|
.4byte _080B7760
|
|
_080B76F0:
|
|
ldrh r0, [r2, 0x16]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x16]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080B7746
|
|
movs r0, 0
|
|
strh r0, [r2, 0x16]
|
|
ldrh r0, [r2, 0x14]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x14]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x3
|
|
bne _080B7746
|
|
b _080B7740
|
|
_080B7712:
|
|
ldrh r0, [r2, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x3C
|
|
ble _080B7746
|
|
b _080B7740
|
|
_080B7722:
|
|
ldrh r0, [r2, 0x16]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x16]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080B7746
|
|
movs r0, 0
|
|
strh r0, [r2, 0x16]
|
|
ldrh r0, [r2, 0x14]
|
|
subs r0, 0x1
|
|
strh r0, [r2, 0x14]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080B7746
|
|
_080B7740:
|
|
ldrh r0, [r2, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x8]
|
|
_080B7746:
|
|
adds r0, r2, 0
|
|
bl sub_80B776C
|
|
b _080B7766
|
|
_080B774E:
|
|
ldr r1, _080B775C @ =gScanlineEffect
|
|
movs r0, 0x3
|
|
strb r0, [r1, 0x15]
|
|
ldrh r0, [r2, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x8]
|
|
b _080B7766
|
|
.align 2, 0
|
|
_080B775C: .4byte gScanlineEffect
|
|
_080B7760:
|
|
adds r0, r3, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B7766:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B76B0
|
|
|
|
thumb_func_start sub_80B776C
|
|
sub_80B776C: @ 80B776C
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r5, r0, 0
|
|
ldrh r3, [r5, 0x12]
|
|
ldrh r4, [r5, 0xE]
|
|
movs r1, 0x10
|
|
ldrsh r0, [r5, r1]
|
|
cmp r4, r0
|
|
bgt _080B77C2
|
|
ldr r7, _080B77D8 @ =gScanlineEffectRegBuffers
|
|
mov r12, r7
|
|
ldr r0, _080B77DC @ =gSineTable
|
|
mov r8, r0
|
|
ldr r6, _080B77E0 @ =gScanlineEffect
|
|
_080B778A:
|
|
lsls r2, r4, 1
|
|
ldrb r1, [r6, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r2, r0
|
|
add r2, r12
|
|
lsls r0, r3, 1
|
|
add r0, r8
|
|
movs r7, 0
|
|
ldrsh r1, [r0, r7]
|
|
movs r7, 0x14
|
|
ldrsh r0, [r5, r7]
|
|
muls r0, r1
|
|
asrs r0, 7
|
|
ldrh r1, [r5, 0xC]
|
|
adds r0, r1
|
|
strh r0, [r2]
|
|
adds r3, 0x8
|
|
movs r0, 0xFF
|
|
ands r3, r0
|
|
adds r0, r4, 0x1
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
movs r7, 0x10
|
|
ldrsh r0, [r5, r7]
|
|
cmp r4, r0
|
|
ble _080B778A
|
|
_080B77C2:
|
|
ldrh r0, [r5, 0x12]
|
|
adds r0, 0x9
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r5, 0x12]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B77D8: .4byte gScanlineEffectRegBuffers
|
|
_080B77DC: .4byte gSineTable
|
|
_080B77E0: .4byte gScanlineEffect
|
|
thumb_func_end sub_80B776C
|
|
|
|
thumb_func_start sub_80B77E4
|
|
sub_80B77E4: @ 80B77E4
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
adds r4, r0, 0
|
|
ldr r5, _080B7884 @ =gBattleAnimArgs
|
|
movs r0, 0x4
|
|
ldrsh r1, [r5, r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
movs r1, 0x5
|
|
bl __divsi3
|
|
adds r6, r0, 0
|
|
ldr r1, _080B7888 @ =gBattleAnimAttacker
|
|
mov r8, r1
|
|
ldrb r0, [r1]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x20]
|
|
mov r2, r8
|
|
ldrb r0, [r2]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r3, [r5, 0x8]
|
|
adds r0, r3
|
|
strh r0, [r4, 0x22]
|
|
movs r1, 0x2
|
|
ldrsh r0, [r5, r1]
|
|
movs r2, 0x4
|
|
ldrsh r1, [r5, r2]
|
|
bl Cos
|
|
strh r0, [r4, 0x30]
|
|
movs r3, 0x2
|
|
ldrsh r0, [r5, r3]
|
|
lsls r6, 16
|
|
asrs r6, 16
|
|
adds r1, r6, 0
|
|
bl Sin
|
|
strh r0, [r4, 0x32]
|
|
ldrh r1, [r4, 0x30]
|
|
ldrh r2, [r5]
|
|
adds r3, r2, 0
|
|
muls r3, r1
|
|
adds r1, r3, 0
|
|
ldrh r3, [r4, 0x20]
|
|
adds r1, r3
|
|
strh r1, [r4, 0x20]
|
|
adds r1, r2, 0
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
ldrh r2, [r4, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x22]
|
|
ldrh r0, [r5, 0x6]
|
|
strh r0, [r4, 0x34]
|
|
ldr r0, _080B788C @ =sub_80B7894
|
|
str r0, [r4, 0x1C]
|
|
adds r4, 0x2E
|
|
ldr r2, _080B7890 @ =gUnknown_20399A4
|
|
movs r1, 0x6
|
|
_080B786C:
|
|
ldrh r0, [r4]
|
|
strh r0, [r2]
|
|
adds r4, 0x2
|
|
adds r2, 0x2
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bge _080B786C
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B7884: .4byte gBattleAnimArgs
|
|
_080B7888: .4byte gBattleAnimAttacker
|
|
_080B788C: .4byte sub_80B7894
|
|
_080B7890: .4byte gUnknown_20399A4
|
|
thumb_func_end sub_80B77E4
|
|
|
|
thumb_func_start sub_80B7894
|
|
sub_80B7894: @ 80B7894
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x30]
|
|
ldrh r1, [r4, 0x36]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x36]
|
|
ldrh r0, [r4, 0x32]
|
|
ldrh r2, [r4, 0x38]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x38]
|
|
movs r1, 0x36
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
strh r0, [r4, 0x24]
|
|
movs r2, 0x38
|
|
ldrsh r0, [r4, r2]
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r2, 0x34
|
|
ldrsh r1, [r4, r2]
|
|
cmp r0, r1
|
|
ble _080B78D8
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B78D8:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B7894
|
|
|
|
thumb_func_start sub_80B78E0
|
|
sub_80B78E0: @ 80B78E0
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, _080B791C @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _080B7920 @ =gBattleAnimArgs
|
|
ldrh r1, [r1]
|
|
strh r1, [r0, 0x8]
|
|
ldr r1, _080B7924 @ =gBattleAnimAttacker
|
|
ldrb r4, [r1]
|
|
movs r1, 0x10
|
|
strh r1, [r0, 0xA]
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
adds r0, r4, 0
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080B792C
|
|
ldr r1, _080B7928 @ =0x00003f42
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
b _080B7934
|
|
.align 2, 0
|
|
_080B791C: .4byte gTasks
|
|
_080B7920: .4byte gBattleAnimArgs
|
|
_080B7924: .4byte gBattleAnimAttacker
|
|
_080B7928: .4byte 0x00003f42
|
|
_080B792C:
|
|
ldr r1, _080B7948 @ =0x00003f44
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
_080B7934:
|
|
ldr r0, _080B794C @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _080B7950 @ =sub_80B7954
|
|
str r0, [r1]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B7948: .4byte 0x00003f44
|
|
_080B794C: .4byte gTasks
|
|
_080B7950: .4byte sub_80B7954
|
|
thumb_func_end sub_80B78E0
|
|
|
|
thumb_func_start sub_80B7954
|
|
sub_80B7954: @ 80B7954
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r1, _080B79C0 @ =gTasks
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
adds r6, r0, r1
|
|
ldrh r0, [r6, 0xA]
|
|
lsrs r4, r0, 8
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
movs r2, 0xC
|
|
ldrsh r0, [r6, r2]
|
|
ldrb r2, [r6, 0x8]
|
|
cmp r0, r2
|
|
bne _080B79D0
|
|
adds r4, 0x1
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
subs r0, r1, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r4, 8
|
|
orrs r1, r0
|
|
movs r5, 0
|
|
strh r1, [r6, 0xA]
|
|
ldrh r1, [r6, 0xA]
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
strh r5, [r6, 0xC]
|
|
cmp r4, 0x10
|
|
bne _080B79D6
|
|
ldr r2, _080B79C4 @ =gSprites
|
|
ldr r1, _080B79C8 @ =gUnknown_2023D44
|
|
ldr r0, _080B79CC @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
adds r0, 0x3E
|
|
ldrb r1, [r0]
|
|
movs r2, 0x4
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
adds r0, r7, 0
|
|
bl DestroyAnimVisualTask
|
|
b _080B79D6
|
|
.align 2, 0
|
|
_080B79C0: .4byte gTasks
|
|
_080B79C4: .4byte gSprites
|
|
_080B79C8: .4byte gUnknown_2023D44
|
|
_080B79CC: .4byte gBattleAnimAttacker
|
|
_080B79D0:
|
|
ldrh r0, [r6, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r6, 0xC]
|
|
_080B79D6:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B7954
|
|
|
|
thumb_func_start sub_80B79DC
|
|
sub_80B79DC: @ 80B79DC
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _080B7A08 @ =gTasks
|
|
lsls r2, r0, 2
|
|
adds r2, r0
|
|
lsls r2, 3
|
|
adds r2, r1
|
|
ldr r0, _080B7A0C @ =gBattleAnimArgs
|
|
ldrh r0, [r0]
|
|
strh r0, [r2, 0x8]
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
strh r1, [r2, 0xA]
|
|
ldr r0, _080B7A10 @ =sub_80B7A14
|
|
str r0, [r2]
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B7A08: .4byte gTasks
|
|
_080B7A0C: .4byte gBattleAnimArgs
|
|
_080B7A10: .4byte sub_80B7A14
|
|
thumb_func_end sub_80B79DC
|
|
|
|
thumb_func_start sub_80B7A14
|
|
sub_80B7A14: @ 80B7A14
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r1, _080B7A70 @ =gTasks
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
adds r6, r0, r1
|
|
ldrh r0, [r6, 0xA]
|
|
lsrs r4, r0, 8
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
movs r2, 0xC
|
|
ldrsh r0, [r6, r2]
|
|
ldrb r2, [r6, 0x8]
|
|
cmp r0, r2
|
|
bne _080B7A74
|
|
subs r4, 0x1
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r1, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r4, 8
|
|
orrs r1, r0
|
|
movs r5, 0
|
|
strh r1, [r6, 0xA]
|
|
ldrh r1, [r6, 0xA]
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
strh r5, [r6, 0xC]
|
|
cmp r4, 0
|
|
bne _080B7A7A
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
adds r0, r7, 0
|
|
bl DestroyAnimVisualTask
|
|
b _080B7A7A
|
|
.align 2, 0
|
|
_080B7A70: .4byte gTasks
|
|
_080B7A74:
|
|
ldrh r0, [r6, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r6, 0xC]
|
|
_080B7A7A:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B7A14
|
|
|
|
thumb_func_start sub_80B7A80
|
|
sub_80B7A80: @ 80B7A80
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
ldr r0, _080B7AAC @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080B7AB4
|
|
ldr r1, _080B7AB0 @ =0x00003f42
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
b _080B7ABC
|
|
.align 2, 0
|
|
_080B7AAC: .4byte gBattleAnimAttacker
|
|
_080B7AB0: .4byte 0x00003f42
|
|
_080B7AB4:
|
|
ldr r1, _080B7AC8 @ =0x00003f44
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
_080B7ABC:
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B7AC8: .4byte 0x00003f44
|
|
thumb_func_end sub_80B7A80
|
|
|
|
thumb_func_start sub_80B7ACC
|
|
sub_80B7ACC: @ 80B7ACC
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
ldr r6, _080B7B38 @ =gBattleAnimTarget
|
|
ldrb r0, [r6]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x30]
|
|
ldr r5, _080B7B3C @ =gBattleAnimAttacker
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x32]
|
|
ldrb r0, [r6]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x34]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x36]
|
|
movs r0, 0x7E
|
|
strh r0, [r4, 0x2E]
|
|
adds r0, r4, 0
|
|
bl sub_80754B8
|
|
ldrh r0, [r4, 0x30]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x34]
|
|
ldrh r0, [r4, 0x32]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x36]
|
|
ldr r0, _080B7B40 @ =0x0000ffd8
|
|
strh r0, [r4, 0x3A]
|
|
ldr r1, _080B7B44 @ =sub_80B7B48
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B7B38: .4byte gBattleAnimTarget
|
|
_080B7B3C: .4byte gBattleAnimAttacker
|
|
_080B7B40: .4byte 0x0000ffd8
|
|
_080B7B44: .4byte sub_80B7B48
|
|
thumb_func_end sub_80B7ACC
|
|
|
|
thumb_func_start sub_80B7B48
|
|
sub_80B7B48: @ 80B7B48
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
ldrh r5, [r4, 0x30]
|
|
ldrh r0, [r4, 0x34]
|
|
adds r2, r5, r0
|
|
strh r2, [r4, 0x34]
|
|
ldrh r3, [r4, 0x32]
|
|
ldrh r6, [r4, 0x36]
|
|
adds r1, r3, r6
|
|
strh r1, [r4, 0x36]
|
|
lsls r0, r2, 16
|
|
asrs r0, 24
|
|
strh r0, [r4, 0x24]
|
|
lsls r0, r1, 16
|
|
asrs r0, 24
|
|
strh r0, [r4, 0x26]
|
|
movs r6, 0x3C
|
|
ldrsh r0, [r4, r6]
|
|
cmp r0, 0
|
|
bne _080B7B8A
|
|
adds r0, r2, r5
|
|
strh r0, [r4, 0x34]
|
|
adds r1, r3
|
|
strh r1, [r4, 0x36]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
strh r0, [r4, 0x24]
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
strh r1, [r4, 0x26]
|
|
ldrh r0, [r4, 0x2E]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
_080B7B8A:
|
|
movs r1, 0x38
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x3A
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
ldrh r6, [r4, 0x26]
|
|
adds r0, r6
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x38]
|
|
adds r0, 0x3
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x38]
|
|
cmp r0, 0x7F
|
|
ble _080B7BBA
|
|
movs r0, 0
|
|
strh r0, [r4, 0x38]
|
|
ldrh r0, [r4, 0x3A]
|
|
adds r0, 0x14
|
|
strh r0, [r4, 0x3A]
|
|
ldrh r0, [r4, 0x3C]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x3C]
|
|
_080B7BBA:
|
|
ldrh r0, [r4, 0x2E]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080B7BCC
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B7BCC:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B7B48
|
|
|
|
thumb_func_start sub_80B7BD4
|
|
sub_80B7BD4: @ 80B7BD4
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080B7C08 @ =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]
|
|
ldrb r1, [r5, 0x4]
|
|
adds r0, r4, 0
|
|
bl StartSpriteAffineAnim
|
|
ldrh r0, [r5, 0x6]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r5, 0x8]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r5, 0xA]
|
|
strh r0, [r4, 0x32]
|
|
ldr r0, _080B7C0C @ =sub_80B7C10
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B7C08: .4byte gBattleAnimArgs
|
|
_080B7C0C: .4byte sub_80B7C10
|
|
thumb_func_end sub_80B7BD4
|
|
|
|
thumb_func_start sub_80B7C10
|
|
sub_80B7C10: @ 80B7C10
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldrh r0, [r2, 0x2E]
|
|
ldrh r1, [r2, 0x36]
|
|
adds r0, r1
|
|
strh r0, [r2, 0x36]
|
|
ldrh r1, [r2, 0x30]
|
|
ldrh r3, [r2, 0x38]
|
|
adds r1, r3
|
|
strh r1, [r2, 0x38]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
strh r0, [r2, 0x24]
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
strh r1, [r2, 0x26]
|
|
ldrh r0, [r2, 0x34]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x34]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r3, 0x32
|
|
ldrsh r1, [r2, r3]
|
|
cmp r0, r1
|
|
bne _080B7C46
|
|
ldr r0, _080B7C4C @ =sub_80B7C50
|
|
str r0, [r2, 0x1C]
|
|
_080B7C46:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B7C4C: .4byte sub_80B7C50
|
|
thumb_func_end sub_80B7C10
|
|
|
|
thumb_func_start sub_80B7C50
|
|
sub_80B7C50: @ 80B7C50
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
ldrh r1, [r3, 0x36]
|
|
ldrh r0, [r3, 0x2E]
|
|
subs r1, r0
|
|
strh r1, [r3, 0x36]
|
|
ldrh r0, [r3, 0x38]
|
|
ldrh r2, [r3, 0x30]
|
|
subs r0, r2
|
|
strh r0, [r3, 0x38]
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
strh r1, [r3, 0x24]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
strh r0, [r3, 0x26]
|
|
ldrh r0, [r3, 0x34]
|
|
subs r0, 0x1
|
|
strh r0, [r3, 0x34]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080B7C82
|
|
adds r0, r3, 0
|
|
bl move_anim_8074EE0
|
|
_080B7C82:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B7C50
|
|
|
|
thumb_func_start sub_80B7C88
|
|
sub_80B7C88: @ 80B7C88
|
|
push {r4-r7,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _080B7C9C @ =gBattleAnimArgs
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
adds r3, r0, 0
|
|
cmp r1, 0
|
|
bne _080B7CA4
|
|
ldr r0, _080B7CA0 @ =gBattleAnimAttacker
|
|
b _080B7CA6
|
|
.align 2, 0
|
|
_080B7C9C: .4byte gBattleAnimArgs
|
|
_080B7CA0: .4byte gBattleAnimAttacker
|
|
_080B7CA4:
|
|
ldr r0, _080B7CD4 @ =gBattleAnimTarget
|
|
_080B7CA6:
|
|
ldrb r5, [r0]
|
|
movs r6, 0x14
|
|
ldrh r2, [r4, 0x4]
|
|
lsls r1, r2, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x4
|
|
ldr r7, _080B7CD8 @ =0x000003ff
|
|
adds r0, r7, 0
|
|
ands r1, r0
|
|
ldr r0, _080B7CDC @ =0xfffffc00
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r4, 0x4]
|
|
movs r1, 0x2
|
|
ldrsh r0, [r3, r1]
|
|
cmp r0, 0x1
|
|
beq _080B7D04
|
|
cmp r0, 0x1
|
|
bgt _080B7CE0
|
|
cmp r0, 0
|
|
beq _080B7CEA
|
|
b _080B7D58
|
|
.align 2, 0
|
|
_080B7CD4: .4byte gBattleAnimTarget
|
|
_080B7CD8: .4byte 0x000003ff
|
|
_080B7CDC: .4byte 0xfffffc00
|
|
_080B7CE0:
|
|
cmp r0, 0x2
|
|
beq _080B7D1E
|
|
cmp r0, 0x3
|
|
beq _080B7D36
|
|
b _080B7D58
|
|
_080B7CEA:
|
|
adds r0, r5, 0
|
|
movs r1, 0x5
|
|
bl sub_8076B2C
|
|
subs r0, 0x8
|
|
strh r0, [r4, 0x20]
|
|
adds r0, r5, 0
|
|
movs r1, 0x2
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
strh r0, [r4, 0x22]
|
|
b _080B7D58
|
|
_080B7D04:
|
|
adds r0, r5, 0
|
|
movs r1, 0x5
|
|
bl sub_8076B2C
|
|
subs r0, 0xE
|
|
strh r0, [r4, 0x20]
|
|
adds r0, r5, 0
|
|
movs r1, 0x2
|
|
bl sub_8076B2C
|
|
adds r0, 0x10
|
|
strh r0, [r4, 0x22]
|
|
b _080B7D58
|
|
_080B7D1E:
|
|
adds r0, r5, 0
|
|
movs r1, 0x4
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
strh r0, [r4, 0x20]
|
|
adds r0, r5, 0
|
|
movs r1, 0x2
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
b _080B7D4C
|
|
_080B7D36:
|
|
adds r0, r5, 0
|
|
movs r1, 0x4
|
|
bl sub_8076B2C
|
|
adds r0, 0xE
|
|
strh r0, [r4, 0x20]
|
|
adds r0, r5, 0
|
|
movs r1, 0x2
|
|
bl sub_8076B2C
|
|
adds r0, 0x10
|
|
_080B7D4C:
|
|
strh r0, [r4, 0x22]
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
movs r6, 0xEC
|
|
_080B7D58:
|
|
movs r0, 0x20
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, r6, 24
|
|
asrs r0, 24
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r4, 0x22]
|
|
adds r0, 0xC
|
|
strh r0, [r4, 0x36]
|
|
ldr r0, _080B7D80 @ =0x0000fff4
|
|
strh r0, [r4, 0x38]
|
|
adds r0, r4, 0
|
|
bl sub_8075068
|
|
ldr r0, _080B7D84 @ =sub_80B7D88
|
|
str r0, [r4, 0x1C]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B7D80: .4byte 0x0000fff4
|
|
_080B7D84: .4byte sub_80B7D88
|
|
thumb_func_end sub_80B7C88
|
|
|
|
thumb_func_start sub_80B7D88
|
|
sub_80B7D88: @ 80B7D88
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl AnimateBallThrow
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B7D9C
|
|
adds r0, r4, 0
|
|
bl move_anim_8074EE0
|
|
_080B7D9C:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B7D88
|
|
|
|
thumb_func_start sub_80B7DA4
|
|
sub_80B7DA4: @ 80B7DA4
|
|
push {r4-r7,lr}
|
|
sub sp, 0x1C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080B7E08 @ =gTasks
|
|
adds r5, r1, r0
|
|
ldr r4, _080B7E0C @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x1F
|
|
movs r6, 0
|
|
strh r0, [r5, 0x16]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8076B2C
|
|
subs r0, 0x7
|
|
strh r0, [r5, 0x14]
|
|
ldrh r1, [r5, 0x16]
|
|
strh r1, [r5, 0x12]
|
|
strh r0, [r5, 0x10]
|
|
subs r1, r0
|
|
lsls r1, 8
|
|
strh r1, [r5, 0x22]
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r0, 0
|
|
subs r1, 0x20
|
|
strh r1, [r5, 0x24]
|
|
adds r0, 0x20
|
|
strh r0, [r5, 0x26]
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B7E14
|
|
ldr r0, _080B7E10 @ =0x0000fff4
|
|
b _080B7E16
|
|
.align 2, 0
|
|
_080B7E08: .4byte gTasks
|
|
_080B7E0C: .4byte gBattleAnimAttacker
|
|
_080B7E10: .4byte 0x0000fff4
|
|
_080B7E14:
|
|
ldr r0, _080B7E60 @ =0x0000ffc0
|
|
_080B7E16:
|
|
strh r0, [r5, 0x18]
|
|
ldr r0, _080B7E64 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0xE]
|
|
cmp r0, 0x1
|
|
bne _080B7E78
|
|
add r4, sp, 0xC
|
|
adds r0, r4, 0
|
|
bl sub_80752A0
|
|
ldr r0, _080B7E68 @ =gBattle_BG1_Y
|
|
ldrh r0, [r0]
|
|
strh r0, [r5, 0x1C]
|
|
ldr r1, _080B7E6C @ =0x00003f42
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
ldrb r1, [r4, 0x8]
|
|
lsls r1, 4
|
|
movs r0, 0
|
|
movs r2, 0x20
|
|
bl FillPalette
|
|
ldr r0, _080B7E70 @ =0x04000016
|
|
str r0, [sp]
|
|
movs r7, 0x2
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B7EA8
|
|
ldr r1, _080B7E74 @ =gBattle_BG2_X
|
|
b _080B7EA2
|
|
.align 2, 0
|
|
_080B7E60: .4byte 0x0000ffc0
|
|
_080B7E64: .4byte gBattleAnimAttacker
|
|
_080B7E68: .4byte gBattle_BG1_Y
|
|
_080B7E6C: .4byte 0x00003f42
|
|
_080B7E70: .4byte 0x04000016
|
|
_080B7E74: .4byte gBattle_BG2_X
|
|
_080B7E78:
|
|
ldr r0, _080B7F30 @ =gBattle_BG2_Y
|
|
ldrh r0, [r0]
|
|
strh r0, [r5, 0x1C]
|
|
ldr r1, _080B7F34 @ =0x00003f44
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r0, 0
|
|
movs r1, 0x90
|
|
movs r2, 0x20
|
|
bl FillPalette
|
|
ldr r0, _080B7F38 @ =0x0400001a
|
|
str r0, [sp]
|
|
movs r7, 0x4
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B7EA8
|
|
ldr r1, _080B7F3C @ =gBattle_BG1_X
|
|
_080B7EA2:
|
|
ldrh r0, [r1]
|
|
adds r0, 0xF0
|
|
strh r0, [r1]
|
|
_080B7EA8:
|
|
ldr r0, _080B7F40 @ =0xa2600001
|
|
str r0, [sp, 0x4]
|
|
mov r2, sp
|
|
movs r1, 0
|
|
movs r0, 0x1
|
|
strb r0, [r2, 0x8]
|
|
mov r0, sp
|
|
strb r1, [r0, 0x9]
|
|
strh r1, [r5, 0x1E]
|
|
movs r0, 0x10
|
|
strh r0, [r5, 0x20]
|
|
strh r1, [r5, 0x8]
|
|
strh r1, [r5, 0xA]
|
|
strh r1, [r5, 0xC]
|
|
movs r0, 0x3
|
|
bl sub_80B856C
|
|
movs r3, 0
|
|
ldr r4, _080B7F44 @ =gScanlineEffectRegBuffers
|
|
movs r0, 0xF0
|
|
lsls r0, 3
|
|
adds r6, r4, r0
|
|
_080B7ED4:
|
|
lsls r1, r3, 1
|
|
adds r2, r1, r4
|
|
ldrh r0, [r5, 0x1C]
|
|
strh r0, [r2]
|
|
adds r1, r6
|
|
ldrh r0, [r5, 0x1C]
|
|
strh r0, [r1]
|
|
adds r0, r3, 0x1
|
|
lsls r0, 16
|
|
lsrs r3, r0, 16
|
|
cmp r3, 0x6F
|
|
bls _080B7ED4
|
|
ldr r0, [sp]
|
|
ldr r1, [sp, 0x4]
|
|
ldr r2, [sp, 0x8]
|
|
bl ScanlineEffect_SetParams
|
|
movs r0, 0x3F
|
|
eors r7, r0
|
|
movs r1, 0xFC
|
|
lsls r1, 6
|
|
adds r0, r1, 0
|
|
orrs r7, r0
|
|
movs r0, 0x4A
|
|
adds r1, r7, 0
|
|
bl SetGpuReg
|
|
ldr r1, _080B7F48 @ =0x00003f3f
|
|
movs r0, 0x48
|
|
bl SetGpuReg
|
|
ldr r2, _080B7F4C @ =gUnknown_2022984
|
|
ldrh r0, [r5, 0x24]
|
|
lsls r0, 8
|
|
ldrh r1, [r5, 0x26]
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
ldr r1, _080B7F50 @ =gUnknown_2022986
|
|
movs r0, 0xA0
|
|
strh r0, [r1]
|
|
ldr r0, _080B7F54 @ =sub_80B7F58
|
|
str r0, [r5]
|
|
add sp, 0x1C
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B7F30: .4byte gBattle_BG2_Y
|
|
_080B7F34: .4byte 0x00003f44
|
|
_080B7F38: .4byte 0x0400001a
|
|
_080B7F3C: .4byte gBattle_BG1_X
|
|
_080B7F40: .4byte 0xa2600001
|
|
_080B7F44: .4byte gScanlineEffectRegBuffers
|
|
_080B7F48: .4byte 0x00003f3f
|
|
_080B7F4C: .4byte gUnknown_2022984
|
|
_080B7F50: .4byte gUnknown_2022986
|
|
_080B7F54: .4byte sub_80B7F58
|
|
thumb_func_end sub_80B7DA4
|
|
|
|
thumb_func_start sub_80B7F58
|
|
sub_80B7F58: @ 80B7F58
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _080B7F7C @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x4
|
|
bls _080B7F72
|
|
b _080B806A
|
|
_080B7F72:
|
|
lsls r0, 2
|
|
ldr r1, _080B7F80 @ =_080B7F84
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080B7F7C: .4byte gTasks
|
|
_080B7F80: .4byte _080B7F84
|
|
.align 2, 0
|
|
_080B7F84:
|
|
.4byte _080B7F98
|
|
.4byte _080B7FFA
|
|
.4byte _080B8014
|
|
.4byte _080B8050
|
|
.4byte _080B8064
|
|
_080B7F98:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080B806A
|
|
movs r0, 0
|
|
strh r0, [r4, 0xA]
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B7FC8
|
|
ldrh r1, [r4, 0x1E]
|
|
movs r2, 0x1E
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0xC
|
|
beq _080B7FD6
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0x1E]
|
|
b _080B7FD6
|
|
_080B7FC8:
|
|
ldrh r1, [r4, 0x20]
|
|
movs r2, 0x20
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x8
|
|
beq _080B7FD6
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x20]
|
|
_080B7FD6:
|
|
ldrh r1, [r4, 0x20]
|
|
lsls r1, 8
|
|
ldrh r0, [r4, 0x1E]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r1, 0x1E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0xC
|
|
bne _080B806A
|
|
movs r2, 0x20
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x8
|
|
bne _080B806A
|
|
b _080B8056
|
|
_080B7FFA:
|
|
ldrh r0, [r4, 0x10]
|
|
subs r0, 0x8
|
|
strh r0, [r4, 0x10]
|
|
adds r0, r4, 0
|
|
bl sub_80B843C
|
|
movs r0, 0x10
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x18
|
|
ldrsh r0, [r4, r2]
|
|
cmp r1, r0
|
|
bge _080B806A
|
|
b _080B8056
|
|
_080B8014:
|
|
ldrh r0, [r4, 0x10]
|
|
subs r0, 0x8
|
|
strh r0, [r4, 0x10]
|
|
adds r0, r4, 0
|
|
bl sub_80B843C
|
|
ldrh r1, [r4, 0x24]
|
|
adds r1, 0x4
|
|
strh r1, [r4, 0x24]
|
|
ldrh r0, [r4, 0x26]
|
|
subs r2, r0, 0x4
|
|
strh r2, [r4, 0x26]
|
|
lsls r1, 16
|
|
lsls r0, r2, 16
|
|
cmp r1, r0
|
|
blt _080B8036
|
|
strh r2, [r4, 0x24]
|
|
_080B8036:
|
|
ldr r3, _080B804C @ =gUnknown_2022984
|
|
ldrh r2, [r4, 0x24]
|
|
lsls r0, r2, 8
|
|
ldrh r1, [r4, 0x26]
|
|
orrs r0, r1
|
|
strh r0, [r3]
|
|
lsls r2, 16
|
|
lsls r1, 16
|
|
cmp r2, r1
|
|
bne _080B806A
|
|
b _080B8056
|
|
.align 2, 0
|
|
_080B804C: .4byte gUnknown_2022984
|
|
_080B8050:
|
|
ldr r1, _080B8060 @ =gScanlineEffect
|
|
movs r0, 0x3
|
|
strb r0, [r1, 0x15]
|
|
_080B8056:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080B806A
|
|
.align 2, 0
|
|
_080B8060: .4byte gScanlineEffect
|
|
_080B8064:
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B806A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B7F58
|
|
|
|
thumb_func_start sub_80B8070
|
|
sub_80B8070: @ 80B8070
|
|
push {r4-r7,lr}
|
|
sub sp, 0x1C
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
ldr r1, _080B8098 @ =gTasks
|
|
adds r5, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x4
|
|
bls _080B808C
|
|
b _080B829E
|
|
_080B808C:
|
|
lsls r0, 2
|
|
ldr r1, _080B809C @ =_080B80A0
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080B8098: .4byte gTasks
|
|
_080B809C: .4byte _080B80A0
|
|
.align 2, 0
|
|
_080B80A0:
|
|
.4byte _080B80B4
|
|
.4byte _080B8138
|
|
.4byte _080B817C
|
|
.4byte _080B81E8
|
|
.4byte _080B8250
|
|
_080B80B4:
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080B80F0
|
|
ldr r0, _080B80E4 @ =gUnknown_2022984
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, _080B80E8 @ =gUnknown_2022986
|
|
strh r1, [r0]
|
|
ldr r4, _080B80EC @ =0x00003f3f
|
|
movs r0, 0x48
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x4A
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
b _080B829E
|
|
.align 2, 0
|
|
_080B80E4: .4byte gUnknown_2022984
|
|
_080B80E8: .4byte gUnknown_2022986
|
|
_080B80EC: .4byte 0x00003f3f
|
|
_080B80F0:
|
|
ldr r0, _080B8110 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0xE]
|
|
cmp r0, 0x1
|
|
bne _080B811C
|
|
ldr r1, _080B8114 @ =0x00003f42
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
ldr r1, _080B8118 @ =gBattle_BG2_X
|
|
b _080B8126
|
|
.align 2, 0
|
|
_080B8110: .4byte gBattleAnimTarget
|
|
_080B8114: .4byte 0x00003f42
|
|
_080B8118: .4byte gBattle_BG2_X
|
|
_080B811C:
|
|
ldr r1, _080B8130 @ =0x00003f44
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
ldr r1, _080B8134 @ =gBattle_BG1_X
|
|
_080B8126:
|
|
ldrh r0, [r1]
|
|
adds r0, 0xF0
|
|
strh r0, [r1]
|
|
b _080B823C
|
|
.align 2, 0
|
|
_080B8130: .4byte 0x00003f44
|
|
_080B8134: .4byte gBattle_BG1_X
|
|
_080B8138:
|
|
movs r1, 0xE
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x1
|
|
bne _080B8160
|
|
mov r0, sp
|
|
bl sub_80752A0
|
|
ldr r0, _080B815C @ =gBattle_BG1_Y
|
|
ldrh r0, [r0]
|
|
strh r0, [r5, 0x1C]
|
|
mov r0, sp
|
|
ldrb r1, [r0, 0x8]
|
|
lsls r1, 4
|
|
movs r0, 0
|
|
movs r2, 0x20
|
|
bl FillPalette
|
|
b _080B8170
|
|
.align 2, 0
|
|
_080B815C: .4byte gBattle_BG1_Y
|
|
_080B8160:
|
|
ldr r0, _080B8178 @ =gBattle_BG2_Y
|
|
ldrh r0, [r0]
|
|
strh r0, [r5, 0x1C]
|
|
movs r0, 0
|
|
movs r1, 0x90
|
|
movs r2, 0x20
|
|
bl FillPalette
|
|
_080B8170:
|
|
movs r0, 0x3
|
|
bl sub_80B856C
|
|
b _080B823C
|
|
.align 2, 0
|
|
_080B8178: .4byte gBattle_BG2_Y
|
|
_080B817C:
|
|
ldr r4, _080B81C8 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x1F
|
|
movs r6, 0
|
|
strh r0, [r5, 0x16]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8076B2C
|
|
subs r0, 0x7
|
|
strh r0, [r5, 0x14]
|
|
ldrh r1, [r5, 0x16]
|
|
subs r1, r0
|
|
lsls r1, 8
|
|
strh r1, [r5, 0x22]
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
subs r1, r0, 0x4
|
|
strh r1, [r5, 0x24]
|
|
adds r0, 0x4
|
|
strh r0, [r5, 0x26]
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B81D0
|
|
ldr r0, _080B81CC @ =0x0000fff4
|
|
b _080B81D2
|
|
.align 2, 0
|
|
_080B81C8: .4byte gBattleAnimTarget
|
|
_080B81CC: .4byte 0x0000fff4
|
|
_080B81D0:
|
|
ldr r0, _080B81E4 @ =0x0000ffc0
|
|
_080B81D2:
|
|
strh r0, [r5, 0x18]
|
|
ldrh r0, [r5, 0x18]
|
|
strh r0, [r5, 0x10]
|
|
strh r0, [r5, 0x12]
|
|
movs r0, 0xC
|
|
strh r0, [r5, 0x1E]
|
|
movs r0, 0x8
|
|
strh r0, [r5, 0x20]
|
|
b _080B823C
|
|
.align 2, 0
|
|
_080B81E4: .4byte 0x0000ffc0
|
|
_080B81E8:
|
|
movs r1, 0xE
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x1
|
|
bne _080B81F8
|
|
ldr r0, _080B81F4 @ =0x04000016
|
|
b _080B81FA
|
|
.align 2, 0
|
|
_080B81F4: .4byte 0x04000016
|
|
_080B81F8:
|
|
ldr r0, _080B8244 @ =0x0400001a
|
|
_080B81FA:
|
|
str r0, [sp, 0x10]
|
|
movs r3, 0
|
|
add r4, sp, 0x10
|
|
ldr r6, _080B8248 @ =gScanlineEffectRegBuffers
|
|
movs r0, 0xF0
|
|
lsls r0, 3
|
|
adds r7, r6, r0
|
|
_080B8208:
|
|
lsls r1, r3, 1
|
|
adds r2, r1, r6
|
|
ldrh r0, [r5, 0x1C]
|
|
adds r0, 0x9F
|
|
subs r0, r3
|
|
strh r0, [r2]
|
|
adds r1, r7
|
|
ldrh r0, [r5, 0x1C]
|
|
adds r0, 0x9F
|
|
subs r0, r3
|
|
strh r0, [r1]
|
|
adds r0, r3, 0x1
|
|
lsls r0, 16
|
|
lsrs r3, r0, 16
|
|
cmp r3, 0x6F
|
|
bls _080B8208
|
|
ldr r1, _080B824C @ =0xa2600001
|
|
str r1, [r4, 0x4]
|
|
movs r2, 0
|
|
movs r0, 0x1
|
|
strb r0, [r4, 0x8]
|
|
strb r2, [r4, 0x9]
|
|
ldr r0, [sp, 0x10]
|
|
ldr r2, [r4, 0x8]
|
|
bl ScanlineEffect_SetParams
|
|
_080B823C:
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
b _080B829E
|
|
.align 2, 0
|
|
_080B8244: .4byte 0x0400001a
|
|
_080B8248: .4byte gScanlineEffectRegBuffers
|
|
_080B824C: .4byte 0xa2600001
|
|
_080B8250:
|
|
movs r1, 0xE
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x1
|
|
bne _080B8268
|
|
ldr r1, _080B8264 @ =0x00003f3d
|
|
movs r0, 0x4A
|
|
bl SetGpuReg
|
|
b _080B8270
|
|
.align 2, 0
|
|
_080B8264: .4byte 0x00003f3d
|
|
_080B8268:
|
|
ldr r1, _080B82A8 @ =0x00003f3b
|
|
movs r0, 0x4A
|
|
bl SetGpuReg
|
|
_080B8270:
|
|
ldr r1, _080B82AC @ =0x00003f3f
|
|
movs r0, 0x48
|
|
bl SetGpuReg
|
|
ldr r2, _080B82B0 @ =gUnknown_2022984
|
|
ldrh r0, [r5, 0x24]
|
|
lsls r0, 8
|
|
ldrh r1, [r5, 0x26]
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
ldr r1, _080B82B4 @ =gUnknown_2022986
|
|
movs r0, 0xA0
|
|
strh r0, [r1]
|
|
movs r0, 0
|
|
strh r0, [r5, 0x8]
|
|
strh r0, [r5, 0xA]
|
|
strh r0, [r5, 0xC]
|
|
ldr r1, _080B82B8 @ =0x0000080c
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
ldr r0, _080B82BC @ =sub_80B82C0
|
|
str r0, [r5]
|
|
_080B829E:
|
|
add sp, 0x1C
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B82A8: .4byte 0x00003f3b
|
|
_080B82AC: .4byte 0x00003f3f
|
|
_080B82B0: .4byte gUnknown_2022984
|
|
_080B82B4: .4byte gUnknown_2022986
|
|
_080B82B8: .4byte 0x0000080c
|
|
_080B82BC: .4byte sub_80B82C0
|
|
thumb_func_end sub_80B8070
|
|
|
|
thumb_func_start sub_80B82C0
|
|
sub_80B82C0: @ 80B82C0
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _080B82E4 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x4
|
|
bls _080B82DA
|
|
b _080B842A
|
|
_080B82DA:
|
|
lsls r0, 2
|
|
ldr r1, _080B82E8 @ =_080B82EC
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080B82E4: .4byte gTasks
|
|
_080B82E8: .4byte _080B82EC
|
|
.align 2, 0
|
|
_080B82EC:
|
|
.4byte _080B8300
|
|
.4byte _080B832C
|
|
.4byte _080B8394
|
|
.4byte _080B83F6
|
|
.4byte _080B8408
|
|
_080B8300:
|
|
ldrh r0, [r4, 0x12]
|
|
adds r0, 0x8
|
|
strh r0, [r4, 0x12]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldrh r2, [r4, 0x16]
|
|
movs r3, 0x16
|
|
ldrsh r1, [r4, r3]
|
|
cmp r0, r1
|
|
blt _080B8316
|
|
strh r2, [r4, 0x12]
|
|
_080B8316:
|
|
adds r0, r4, 0
|
|
bl sub_80B843C
|
|
movs r0, 0x12
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x16
|
|
ldrsh r0, [r4, r2]
|
|
cmp r1, r0
|
|
beq _080B832A
|
|
b _080B842A
|
|
_080B832A:
|
|
b _080B83FC
|
|
_080B832C:
|
|
movs r3, 0x26
|
|
ldrsh r0, [r4, r3]
|
|
movs r2, 0x24
|
|
ldrsh r1, [r4, r2]
|
|
subs r0, r1
|
|
cmp r0, 0x3F
|
|
bgt _080B8348
|
|
ldrh r0, [r4, 0x24]
|
|
subs r0, 0x4
|
|
strh r0, [r4, 0x24]
|
|
ldrh r0, [r4, 0x26]
|
|
adds r0, 0x4
|
|
strh r0, [r4, 0x26]
|
|
b _080B834C
|
|
_080B8348:
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
_080B834C:
|
|
ldr r2, _080B8390 @ =gUnknown_2022984
|
|
ldrh r0, [r4, 0x24]
|
|
lsls r0, 8
|
|
ldrh r1, [r4, 0x26]
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
ldrh r0, [r4, 0x10]
|
|
adds r0, 0x8
|
|
strh r0, [r4, 0x10]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldrh r2, [r4, 0x14]
|
|
movs r3, 0x14
|
|
ldrsh r1, [r4, r3]
|
|
cmp r0, r1
|
|
blt _080B836E
|
|
strh r2, [r4, 0x10]
|
|
_080B836E:
|
|
adds r0, r4, 0
|
|
bl sub_80B843C
|
|
movs r0, 0x10
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x14
|
|
ldrsh r0, [r4, r2]
|
|
cmp r1, r0
|
|
bne _080B842A
|
|
movs r3, 0xA
|
|
ldrsh r0, [r4, r3]
|
|
cmp r0, 0
|
|
beq _080B842A
|
|
movs r0, 0
|
|
strh r0, [r4, 0xA]
|
|
b _080B83FC
|
|
.align 2, 0
|
|
_080B8390: .4byte gUnknown_2022984
|
|
_080B8394:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080B842A
|
|
movs r0, 0
|
|
strh r0, [r4, 0xA]
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B83C4
|
|
ldrh r1, [r4, 0x1E]
|
|
movs r2, 0x1E
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
beq _080B83D2
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x1E]
|
|
b _080B83D2
|
|
_080B83C4:
|
|
ldrh r1, [r4, 0x20]
|
|
movs r3, 0x20
|
|
ldrsh r0, [r4, r3]
|
|
cmp r0, 0xF
|
|
bgt _080B83D2
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0x20]
|
|
_080B83D2:
|
|
ldrh r1, [r4, 0x20]
|
|
lsls r1, 8
|
|
ldrh r0, [r4, 0x1E]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r1, 0x1E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080B842A
|
|
movs r2, 0x20
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x10
|
|
bne _080B842A
|
|
b _080B83FC
|
|
_080B83F6:
|
|
ldr r1, _080B8404 @ =gScanlineEffect
|
|
movs r0, 0x3
|
|
strb r0, [r1, 0x15]
|
|
_080B83FC:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080B842A
|
|
.align 2, 0
|
|
_080B8404: .4byte gScanlineEffect
|
|
_080B8408:
|
|
ldr r0, _080B8430 @ =gUnknown_2022984
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, _080B8434 @ =gUnknown_2022986
|
|
strh r1, [r0]
|
|
ldr r4, _080B8438 @ =0x00003f3f
|
|
movs r0, 0x48
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x4A
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B842A:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B8430: .4byte gUnknown_2022984
|
|
_080B8434: .4byte gUnknown_2022986
|
|
_080B8438: .4byte 0x00003f3f
|
|
thumb_func_end sub_80B82C0
|
|
|
|
thumb_func_start sub_80B843C
|
|
sub_80B843C: @ 80B843C
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r6, r0, 0
|
|
ldrh r0, [r6, 0x12]
|
|
ldrh r4, [r6, 0x10]
|
|
subs r0, r4
|
|
lsls r0, 16
|
|
asrs r1, r0, 16
|
|
cmp r1, 0
|
|
beq _080B8530
|
|
movs r2, 0x22
|
|
ldrsh r0, [r6, r2]
|
|
bl __divsi3
|
|
mov r8, r0
|
|
movs r3, 0x14
|
|
ldrsh r0, [r6, r3]
|
|
lsls r5, r0, 8
|
|
lsls r0, r4, 16
|
|
movs r4, 0
|
|
cmp r0, 0
|
|
ble _080B849C
|
|
ldr r0, _080B8528 @ =gScanlineEffectRegBuffers
|
|
mov r12, r0
|
|
ldr r7, _080B852C @ =gScanlineEffect
|
|
_080B8470:
|
|
lsls r2, r4, 16
|
|
asrs r2, 16
|
|
lsls r3, r2, 1
|
|
ldrb r1, [r7, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r3, r0
|
|
add r3, r12
|
|
adds r1, r2, 0
|
|
subs r1, 0x9F
|
|
ldrh r0, [r6, 0x1C]
|
|
subs r0, r1
|
|
strh r0, [r3]
|
|
adds r2, 0x1
|
|
lsls r2, 16
|
|
lsrs r4, r2, 16
|
|
asrs r2, 16
|
|
movs r1, 0x10
|
|
ldrsh r0, [r6, r1]
|
|
cmp r2, r0
|
|
blt _080B8470
|
|
_080B849C:
|
|
ldrh r4, [r6, 0x10]
|
|
lsls r3, r4, 16
|
|
asrs r1, r3, 16
|
|
movs r2, 0x12
|
|
ldrsh r0, [r6, r2]
|
|
cmp r1, r0
|
|
bgt _080B84E6
|
|
ldr r0, _080B8528 @ =gScanlineEffectRegBuffers
|
|
mov r12, r0
|
|
ldr r7, _080B852C @ =gScanlineEffect
|
|
_080B84B0:
|
|
asrs r4, r3, 16
|
|
cmp r4, 0
|
|
blt _080B84D2
|
|
asrs r1, r5, 8
|
|
subs r1, r4
|
|
lsls r3, r4, 1
|
|
ldrb r2, [r7, 0x14]
|
|
lsls r0, r2, 4
|
|
subs r0, r2
|
|
lsls r0, 7
|
|
adds r3, r0
|
|
add r3, r12
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
ldrh r2, [r6, 0x1C]
|
|
adds r1, r2
|
|
strh r1, [r3]
|
|
_080B84D2:
|
|
add r5, r8
|
|
adds r0, r4, 0x1
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
lsls r3, r4, 16
|
|
asrs r1, r3, 16
|
|
movs r2, 0x12
|
|
ldrsh r0, [r6, r2]
|
|
cmp r1, r0
|
|
ble _080B84B0
|
|
_080B84E6:
|
|
movs r3, 0x1C
|
|
ldrsh r0, [r6, r3]
|
|
adds r0, 0x9F
|
|
lsls r2, r4, 16
|
|
asrs r1, r2, 16
|
|
subs r5, r0, r1
|
|
movs r3, 0x16
|
|
ldrsh r0, [r6, r3]
|
|
cmp r1, r0
|
|
bge _080B855E
|
|
ldr r7, _080B8528 @ =gScanlineEffectRegBuffers
|
|
ldr r4, _080B852C @ =gScanlineEffect
|
|
_080B84FE:
|
|
asrs r3, r2, 16
|
|
cmp r3, 0
|
|
blt _080B8516
|
|
lsls r2, r3, 1
|
|
ldrb r1, [r4, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r2, r0
|
|
adds r2, r7
|
|
strh r5, [r2]
|
|
subs r5, 0x1
|
|
_080B8516:
|
|
adds r0, r3, 0x1
|
|
lsls r2, r0, 16
|
|
asrs r1, r2, 16
|
|
movs r3, 0x16
|
|
ldrsh r0, [r6, r3]
|
|
cmp r1, r0
|
|
blt _080B84FE
|
|
b _080B855E
|
|
.align 2, 0
|
|
_080B8528: .4byte gScanlineEffectRegBuffers
|
|
_080B852C: .4byte gScanlineEffect
|
|
_080B8530:
|
|
movs r1, 0x1C
|
|
ldrsh r0, [r6, r1]
|
|
adds r5, r0, 0
|
|
adds r5, 0x9F
|
|
movs r4, 0
|
|
ldr r3, _080B8568 @ =gScanlineEffectRegBuffers
|
|
movs r2, 0xF0
|
|
lsls r2, 3
|
|
adds r6, r3, r2
|
|
_080B8542:
|
|
lsls r0, r4, 16
|
|
asrs r0, 16
|
|
lsls r2, r0, 1
|
|
adds r1, r2, r3
|
|
strh r5, [r1]
|
|
adds r2, r6
|
|
strh r5, [r2]
|
|
subs r5, 0x1
|
|
adds r0, 0x1
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x6F
|
|
ble _080B8542
|
|
_080B855E:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B8568: .4byte gScanlineEffectRegBuffers
|
|
thumb_func_end sub_80B843C
|
|
|
|
thumb_func_start sub_80B856C
|
|
sub_80B856C: @ 80B856C
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r4, 0
|
|
ldr r7, _080B85B4 @ =gSprites
|
|
movs r1, 0x3
|
|
ands r0, r1
|
|
lsls r5, r0, 2
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
adds r6, r0, 0
|
|
_080B8582:
|
|
lsls r0, r4, 24
|
|
lsrs r0, 24
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0xFF
|
|
beq _080B85A2
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r7
|
|
ldrb r0, [r1, 0x5]
|
|
ands r0, r6
|
|
orrs r0, r5
|
|
strb r0, [r1, 0x5]
|
|
_080B85A2:
|
|
adds r0, r4, 0x1
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
cmp r4, 0x3
|
|
bls _080B8582
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B85B4: .4byte gSprites
|
|
thumb_func_end sub_80B856C
|
|
|
|
thumb_func_start sub_80B85B8
|
|
sub_80B85B8: @ 80B85B8
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r10, r0
|
|
ldr r6, _080B8658 @ =gBattleAnimAttacker
|
|
ldrb r0, [r6]
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
negs r1, r0
|
|
orrs r1, r0
|
|
lsrs r4, r1, 31
|
|
ldrb r0, [r6]
|
|
adds r1, r4, 0
|
|
bl sub_8072E48
|
|
ldr r0, _080B865C @ =gSprites
|
|
mov r9, r0
|
|
ldr r0, _080B8660 @ =gUnknown_2023D44
|
|
mov r8, r0
|
|
ldrb r0, [r6]
|
|
add r0, r8
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
add r1, r9
|
|
adds r1, 0x3E
|
|
ldrb r2, [r1]
|
|
movs r7, 0x5
|
|
negs r7, r7
|
|
adds r0, r7, 0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldrb r0, [r6]
|
|
movs r5, 0x2
|
|
eors r0, r5
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B8642
|
|
ldrb r0, [r6]
|
|
eors r0, r5
|
|
movs r1, 0x1
|
|
eors r4, r1
|
|
adds r1, r4, 0
|
|
bl sub_8072E48
|
|
ldrb r0, [r6]
|
|
eors r0, r5
|
|
add r0, r8
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
add r0, r9
|
|
adds r0, 0x3E
|
|
ldrb r2, [r0]
|
|
adds r1, r7, 0
|
|
ands r1, r2
|
|
strb r1, [r0]
|
|
_080B8642:
|
|
mov r0, r10
|
|
bl DestroyAnimVisualTask
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B8658: .4byte gBattleAnimAttacker
|
|
_080B865C: .4byte gSprites
|
|
_080B8660: .4byte gUnknown_2023D44
|
|
thumb_func_end sub_80B85B8
|
|
|
|
thumb_func_start sub_80B8664
|
|
sub_80B8664: @ 80B8664
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r4, _080B86AC @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
negs r1, r0
|
|
orrs r1, r0
|
|
lsrs r5, r1, 31
|
|
adds r0, r5, 0
|
|
bl sub_8073128
|
|
ldrb r1, [r4]
|
|
movs r0, 0x2
|
|
eors r0, r1
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B86A0
|
|
movs r0, 0x1
|
|
eors r5, r0
|
|
adds r0, r5, 0
|
|
bl sub_8073128
|
|
_080B86A0:
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B86AC: .4byte gBattleAnimAttacker
|
|
thumb_func_end sub_80B8664
|
|
|
|
thumb_func_start sub_80B86B0
|
|
sub_80B86B0: @ 80B86B0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r1, _080B86E0 @ =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r1, 0x2]
|
|
ldrh r2, [r4, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x22]
|
|
ldrb r1, [r1, 0x4]
|
|
adds r0, r4, 0
|
|
bl StartSpriteAnim
|
|
ldr r0, _080B86E4 @ =sub_8074F6C
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, _080B86E8 @ =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B86E0: .4byte gBattleAnimArgs
|
|
_080B86E4: .4byte sub_8074F6C
|
|
_080B86E8: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80B86B0
|
|
|
|
thumb_func_start sub_80B86EC
|
|
sub_80B86EC: @ 80B86EC
|
|
push {r4-r7,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
movs r6, 0
|
|
ldr r0, _080B87EC @ =gUnknown_2022984
|
|
strh r6, [r0]
|
|
ldr r0, _080B87F0 @ =gUnknown_2022986
|
|
strh r6, [r0]
|
|
ldr r1, _080B87F4 @ =0x00003f3f
|
|
movs r0, 0x48
|
|
bl SetGpuReg
|
|
ldr r1, _080B87F8 @ =0x00003f3d
|
|
movs r0, 0x4A
|
|
bl SetGpuReg
|
|
movs r1, 0x80
|
|
lsls r1, 8
|
|
movs r0, 0
|
|
bl SetGpuRegBits
|
|
ldr r1, _080B87FC @ =0x00003f42
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
ldr r1, _080B8800 @ =0x00000c08
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r0, 0x1
|
|
movs r1, 0x4
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B8750
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
_080B8750:
|
|
bl sub_8075290
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B87CA
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B87CA
|
|
ldr r4, _080B8804 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x3
|
|
beq _080B8780
|
|
ldrb r0, [r4]
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B87CA
|
|
_080B8780:
|
|
ldrb r0, [r4]
|
|
movs r5, 0x2
|
|
eors r0, r5
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080B87CA
|
|
ldr r3, _080B8808 @ =gSprites
|
|
ldr r1, _080B880C @ =gUnknown_2023D44
|
|
ldrb r0, [r4]
|
|
eors r0, r5
|
|
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]
|
|
movs r0, 0x1
|
|
movs r1, 0x4
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
movs r6, 0x1
|
|
_080B87CA:
|
|
ldr r4, _080B8804 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B8818
|
|
ldr r1, _080B8810 @ =gBattlerPartyIndexes
|
|
ldrb r0, [r4]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _080B8814 @ =gEnemyParty
|
|
b _080B8828
|
|
.align 2, 0
|
|
_080B87EC: .4byte gUnknown_2022984
|
|
_080B87F0: .4byte gUnknown_2022986
|
|
_080B87F4: .4byte 0x00003f3f
|
|
_080B87F8: .4byte 0x00003f3d
|
|
_080B87FC: .4byte 0x00003f42
|
|
_080B8800: .4byte 0x00000c08
|
|
_080B8804: .4byte gBattleAnimAttacker
|
|
_080B8808: .4byte gSprites
|
|
_080B880C: .4byte gUnknown_2023D44
|
|
_080B8810: .4byte gBattlerPartyIndexes
|
|
_080B8814: .4byte gEnemyParty
|
|
_080B8818:
|
|
ldr r1, _080B88B8 @ =gBattlerPartyIndexes
|
|
ldrb r0, [r4]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _080B88BC @ =gPlayerParty
|
|
_080B8828:
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r0, _080B88C0 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
bl sub_8076E34
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
mov r0, sp
|
|
bl sub_80752A0
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080B88C4 @ =gFile_graphics_battle_anims_masks_metal_shine_tilemap
|
|
bl sub_807543C
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080B88C8 @ =gFile_graphics_battle_anims_masks_metal_shine_sheet
|
|
mov r2, sp
|
|
ldrh r2, [r2, 0xA]
|
|
bl sub_80753B4
|
|
ldr r0, _080B88CC @ =gFile_graphics_battle_anims_masks_metal_shine_palette
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x8]
|
|
lsls r1, 4
|
|
movs r2, 0x20
|
|
bl LoadCompressedPalette
|
|
ldr r2, _080B88D0 @ =gBattle_BG1_X
|
|
ldr r0, _080B88D4 @ =gSprites
|
|
lsls r1, r4, 4
|
|
adds r1, r4
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0x20]
|
|
negs r0, r0
|
|
adds r0, 0x60
|
|
strh r0, [r2]
|
|
ldr r2, _080B88D8 @ =gBattle_BG1_Y
|
|
ldrh r0, [r1, 0x22]
|
|
negs r0, r0
|
|
adds r0, 0x20
|
|
strh r0, [r2]
|
|
ldrb r0, [r1, 0x5]
|
|
lsrs r0, 4
|
|
adds r0, 0x10
|
|
adds r1, r0, 0
|
|
ldr r2, _080B88DC @ =gBattleAnimArgs
|
|
movs r3, 0x2
|
|
ldrsh r0, [r2, r3]
|
|
cmp r0, 0
|
|
bne _080B88E0
|
|
adds r0, r1, 0
|
|
movs r1, 0
|
|
bl sub_8075B48
|
|
b _080B88EC
|
|
.align 2, 0
|
|
_080B88B8: .4byte gBattlerPartyIndexes
|
|
_080B88BC: .4byte gPlayerParty
|
|
_080B88C0: .4byte gBattleAnimAttacker
|
|
_080B88C4: .4byte gFile_graphics_battle_anims_masks_metal_shine_tilemap
|
|
_080B88C8: .4byte gFile_graphics_battle_anims_masks_metal_shine_sheet
|
|
_080B88CC: .4byte gFile_graphics_battle_anims_masks_metal_shine_palette
|
|
_080B88D0: .4byte gBattle_BG1_X
|
|
_080B88D4: .4byte gSprites
|
|
_080B88D8: .4byte gBattle_BG1_Y
|
|
_080B88DC: .4byte gBattleAnimArgs
|
|
_080B88E0:
|
|
lsls r0, r1, 4
|
|
ldrh r3, [r2, 0x4]
|
|
movs r1, 0x10
|
|
movs r2, 0xB
|
|
bl BlendPalette
|
|
_080B88EC:
|
|
ldr r1, _080B8914 @ =gTasks
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
strh r5, [r0, 0x8]
|
|
ldr r2, _080B8918 @ =gBattleAnimArgs
|
|
ldrh r1, [r2]
|
|
strh r1, [r0, 0xA]
|
|
ldrh r1, [r2, 0x2]
|
|
strh r1, [r0, 0xC]
|
|
ldrh r1, [r2, 0x4]
|
|
strh r1, [r0, 0xE]
|
|
strh r6, [r0, 0x14]
|
|
ldr r1, _080B891C @ =sub_80B8920
|
|
str r1, [r0]
|
|
add sp, 0x10
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B8914: .4byte gTasks
|
|
_080B8918: .4byte gBattleAnimArgs
|
|
_080B891C: .4byte sub_80B8920
|
|
thumb_func_end sub_80B86EC
|
|
|
|
thumb_func_start sub_80B8920
|
|
sub_80B8920: @ 80B8920
|
|
push {r4-r6,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r6, r0, 0
|
|
ldr r1, _080B89E8 @ =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 r2, _080B89EC @ =gBattle_BG1_X
|
|
ldrh r3, [r2]
|
|
subs r1, r3, 0x4
|
|
strh r1, [r2]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x80
|
|
beq _080B894E
|
|
b _080B8A5E
|
|
_080B894E:
|
|
strh r5, [r4, 0x1C]
|
|
adds r0, r3, 0
|
|
adds r0, 0x7C
|
|
strh r0, [r2]
|
|
ldrh r0, [r4, 0x1E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x1E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x2
|
|
bne _080B89FC
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r5, _080B89F0 @ =gSprites
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r5
|
|
ldrb r0, [r1, 0x5]
|
|
lsrs r0, 4
|
|
adds r0, 0x10
|
|
adds r1, r0, 0
|
|
movs r2, 0xA
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bne _080B8990
|
|
adds r0, r1, 0
|
|
movs r1, 0x1
|
|
bl sub_8075B48
|
|
_080B8990:
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
bl DestroySprite
|
|
mov r0, sp
|
|
bl sub_80752A0
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
bl sub_8075358
|
|
movs r1, 0x14
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
bne _080B8A5E
|
|
ldr r2, _080B89F4 @ =gUnknown_2023D44
|
|
ldr r0, _080B89F8 @ =gBattleAnimAttacker
|
|
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
|
|
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]
|
|
b _080B8A5E
|
|
.align 2, 0
|
|
_080B89E8: .4byte gTasks
|
|
_080B89EC: .4byte gBattle_BG1_X
|
|
_080B89F0: .4byte gSprites
|
|
_080B89F4: .4byte gUnknown_2023D44
|
|
_080B89F8: .4byte gBattleAnimAttacker
|
|
_080B89FC:
|
|
cmp r0, 0x3
|
|
bne _080B8A5E
|
|
ldr r0, _080B8A68 @ =gUnknown_2022984
|
|
strh r5, [r0]
|
|
ldr r0, _080B8A6C @ =gUnknown_2022986
|
|
strh r5, [r0]
|
|
ldr r4, _080B8A70 @ =0x00003f3f
|
|
movs r0, 0x48
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x4A
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B8A2E
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
_080B8A2E:
|
|
movs r0, 0
|
|
bl GetGpuReg
|
|
adds r1, r0, 0
|
|
movs r2, 0x80
|
|
lsls r2, 8
|
|
adds r0, r2, 0
|
|
eors r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B8A5E:
|
|
add sp, 0x10
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B8A68: .4byte gUnknown_2022984
|
|
_080B8A6C: .4byte gUnknown_2022986
|
|
_080B8A70: .4byte 0x00003f3f
|
|
thumb_func_end sub_80B8920
|
|
|
|
thumb_func_start sub_80B8A74
|
|
sub_80B8A74: @ 80B8A74
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r4, 0
|
|
ldr r0, _080B8A94 @ =gBattleAnimArgs
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
adds r2, r0, 0
|
|
cmp r1, 0x7
|
|
bhi _080B8AD8
|
|
lsls r0, r1, 2
|
|
ldr r1, _080B8A98 @ =_080B8A9C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080B8A94: .4byte gBattleAnimArgs
|
|
_080B8A98: .4byte _080B8A9C
|
|
.align 2, 0
|
|
_080B8A9C:
|
|
.4byte _080B8ABC
|
|
.4byte _080B8ABC
|
|
.4byte _080B8ABC
|
|
.4byte _080B8ABC
|
|
.4byte _080B8AC8
|
|
.4byte _080B8ACC
|
|
.4byte _080B8AD0
|
|
.4byte _080B8AD4
|
|
_080B8ABC:
|
|
ldrb r0, [r2]
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
b _080B8ADA
|
|
_080B8AC8:
|
|
movs r4, 0
|
|
b _080B8AE0
|
|
_080B8ACC:
|
|
movs r4, 0x2
|
|
b _080B8AE0
|
|
_080B8AD0:
|
|
movs r4, 0x1
|
|
b _080B8AE0
|
|
_080B8AD4:
|
|
movs r4, 0x3
|
|
b _080B8AE0
|
|
_080B8AD8:
|
|
movs r2, 0xFF
|
|
_080B8ADA:
|
|
movs r0, 0
|
|
cmp r0, 0
|
|
beq _080B8B06
|
|
_080B8AE0:
|
|
adds r0, r4, 0
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r4, 0
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B8B04
|
|
ldr r0, _080B8B00 @ =gUnknown_2023D44
|
|
adds r0, r4, r0
|
|
ldrb r2, [r0]
|
|
b _080B8B06
|
|
.align 2, 0
|
|
_080B8B00: .4byte gUnknown_2023D44
|
|
_080B8B04:
|
|
movs r2, 0xFF
|
|
_080B8B06:
|
|
cmp r2, 0xFF
|
|
beq _080B8B22
|
|
ldr r1, _080B8B30 @ =gSprites
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x5]
|
|
lsrs r0, 4
|
|
adds r0, 0x10
|
|
ldr r1, _080B8B34 @ =gBattleAnimArgs
|
|
ldrb r1, [r1, 0x2]
|
|
bl sub_8075B48
|
|
_080B8B22:
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B8B30: .4byte gSprites
|
|
_080B8B34: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80B8A74
|
|
|
|
thumb_func_start sub_80B8B38
|
|
sub_80B8B38: @ 80B8B38
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
ldr r2, _080B8B64 @ =gUnknown_2037F16
|
|
ldrb r0, [r2]
|
|
cmp r0, 0x1
|
|
bhi _080B8B4C
|
|
ldr r1, _080B8B68 @ =gBattleAnimArgs
|
|
movs r0, 0
|
|
strh r0, [r1, 0xE]
|
|
_080B8B4C:
|
|
ldrb r0, [r2]
|
|
cmp r0, 0x2
|
|
bne _080B8B58
|
|
ldr r1, _080B8B68 @ =gBattleAnimArgs
|
|
movs r0, 0x1
|
|
strh r0, [r1, 0xE]
|
|
_080B8B58:
|
|
adds r0, r3, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B8B64: .4byte gUnknown_2037F16
|
|
_080B8B68: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80B8B38
|
|
|
|
thumb_func_start sub_80B8B6C
|
|
sub_80B8B6C: @ 80B8B6C
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080B8BC4 @ =gBattleAnimAttacker
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x20]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x22]
|
|
movs r0, 0x14
|
|
strh r0, [r4, 0x2E]
|
|
ldr r5, _080B8BC8 @ =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x32]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x36]
|
|
ldr r0, _080B8BCC @ =0x0000ffd8
|
|
strh r0, [r4, 0x38]
|
|
adds r0, r4, 0
|
|
bl sub_8075068
|
|
ldr r0, _080B8BD0 @ =sub_80B8BD4
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B8BC4: .4byte gBattleAnimAttacker
|
|
_080B8BC8: .4byte gBattleAnimTarget
|
|
_080B8BCC: .4byte 0x0000ffd8
|
|
_080B8BD0: .4byte sub_80B8BD4
|
|
thumb_func_end sub_80B8B6C
|
|
|
|
thumb_func_start sub_80B8BD4
|
|
sub_80B8BD4: @ 80B8BD4
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
bl AnimateBallThrow
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B8C28
|
|
ldrh r0, [r5, 0x24]
|
|
ldrh r1, [r5, 0x20]
|
|
adds r0, r1
|
|
movs r1, 0
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r5, 0x26]
|
|
ldrh r2, [r5, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x22]
|
|
strh r1, [r5, 0x26]
|
|
strh r1, [r5, 0x24]
|
|
movs r0, 0x14
|
|
strh r0, [r5, 0x2E]
|
|
ldr r4, _080B8C30 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x32]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x36]
|
|
movs r0, 0x28
|
|
strh r0, [r5, 0x38]
|
|
adds r0, r5, 0
|
|
bl sub_8075068
|
|
ldr r0, _080B8C34 @ =sub_80B8C38
|
|
str r0, [r5, 0x1C]
|
|
_080B8C28:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B8C30: .4byte gBattleAnimAttacker
|
|
_080B8C34: .4byte sub_80B8C38
|
|
thumb_func_end sub_80B8BD4
|
|
|
|
thumb_func_start sub_80B8C38
|
|
sub_80B8C38: @ 80B8C38
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl AnimateBallThrow
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B8C4C
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B8C4C:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B8C38
|
|
|
|
thumb_func_start sub_80B8C54
|
|
sub_80B8C54: @ 80B8C54
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075114
|
|
ldr r0, _080B8CB4 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B8C74
|
|
ldr r1, _080B8CB8 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x4]
|
|
_080B8C74:
|
|
ldr r4, _080B8CB8 @ =gBattleAnimArgs
|
|
ldrh r0, [r4, 0x8]
|
|
strh r0, [r6, 0x2E]
|
|
ldr r5, _080B8CBC @ =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x4]
|
|
adds r0, r1
|
|
strh r0, [r6, 0x32]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r4, [r4, 0x6]
|
|
adds r0, r4
|
|
strh r0, [r6, 0x36]
|
|
ldr r0, _080B8CC0 @ =sub_8075590
|
|
str r0, [r6, 0x1C]
|
|
ldr r1, _080B8CC4 @ =DestroyAnimSprite
|
|
adds r0, r6, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B8CB4: .4byte gBattleAnimAttacker
|
|
_080B8CB8: .4byte gBattleAnimArgs
|
|
_080B8CBC: .4byte gBattleAnimTarget
|
|
_080B8CC0: .4byte sub_8075590
|
|
_080B8CC4: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80B8C54
|
|
|
|
thumb_func_start sub_80B8CC8
|
|
sub_80B8CC8: @ 80B8CC8
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r6, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r4, _080B8D48 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074844
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074844
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
bl Random
|
|
movs r4, 0x1F
|
|
adds r5, r4, 0
|
|
ands r5, r0
|
|
bl Random
|
|
ands r4, r0
|
|
adds r1, r5, 0
|
|
cmp r1, 0x10
|
|
ble _080B8D10
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
_080B8D10:
|
|
lsls r0, r4, 16
|
|
asrs r1, r0, 16
|
|
cmp r1, 0x10
|
|
ble _080B8D20
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
_080B8D20:
|
|
ldr r0, _080B8D4C @ =gBattleAnimArgs
|
|
ldrh r0, [r0, 0x4]
|
|
strh r0, [r6, 0x2E]
|
|
mov r1, r8
|
|
adds r0, r1, r5
|
|
strh r0, [r6, 0x32]
|
|
adds r0, r7, r4
|
|
strh r0, [r6, 0x36]
|
|
ldr r0, _080B8D50 @ =sub_8075590
|
|
str r0, [r6, 0x1C]
|
|
ldr r1, _080B8D54 @ =move_anim_8074EE0
|
|
adds r0, r6, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B8D48: .4byte gBattleAnimTarget
|
|
_080B8D4C: .4byte gBattleAnimArgs
|
|
_080B8D50: .4byte sub_8075590
|
|
_080B8D54: .4byte move_anim_8074EE0
|
|
thumb_func_end sub_80B8CC8
|
|
|
|
thumb_func_start sub_80B8D58
|
|
sub_80B8D58: @ 80B8D58
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldrh r2, [r5, 0x4]
|
|
lsls r1, r2, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x1
|
|
ldr r3, _080B8DB8 @ =0x000003ff
|
|
adds r0, r3, 0
|
|
ands r1, r0
|
|
ldr r0, _080B8DBC @ =0xfffffc00
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r5, 0x4]
|
|
ldr r6, _080B8DC0 @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
bne _080B8DCC
|
|
ldr r4, _080B8DC4 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r2, [r6, 0x2]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r3, [r6, 0x4]
|
|
adds r0, r3
|
|
strh r0, [r5, 0x22]
|
|
movs r1, 0x2
|
|
ldrsh r0, [r6, r1]
|
|
movs r2, 0x1
|
|
negs r2, r2
|
|
adds r1, r2, 0
|
|
cmp r0, 0
|
|
ble _080B8DB2
|
|
movs r1, 0x1
|
|
_080B8DB2:
|
|
strh r1, [r5, 0x2E]
|
|
ldr r0, _080B8DC8 @ =sub_80B8DE8
|
|
b _080B8DDA
|
|
.align 2, 0
|
|
_080B8DB8: .4byte 0x000003ff
|
|
_080B8DBC: .4byte 0xfffffc00
|
|
_080B8DC0: .4byte gBattleAnimArgs
|
|
_080B8DC4: .4byte gBattleAnimAttacker
|
|
_080B8DC8: .4byte sub_80B8DE8
|
|
_080B8DCC:
|
|
ldrh r0, [r6, 0x2]
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r6, 0x4]
|
|
strh r0, [r5, 0x22]
|
|
negs r0, r0
|
|
strh r0, [r5, 0x26]
|
|
ldr r0, _080B8DE4 @ =sub_80B8E24
|
|
_080B8DDA:
|
|
str r0, [r5, 0x1C]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B8DE4: .4byte sub_80B8E24
|
|
thumb_func_end sub_80B8D58
|
|
|
|
thumb_func_start sub_80B8DE8
|
|
sub_80B8DE8: @ 80B8DE8
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldrh r0, [r2, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080B8E06
|
|
movs r0, 0
|
|
strh r0, [r2, 0x30]
|
|
ldrh r0, [r2, 0x2E]
|
|
ldrh r1, [r2, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r2, 0x20]
|
|
_080B8E06:
|
|
ldrh r0, [r2, 0x22]
|
|
subs r0, 0x4
|
|
strh r0, [r2, 0x22]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x4
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bge _080B8E1E
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_080B8E1E:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B8DE8
|
|
|
|
thumb_func_start sub_80B8E24
|
|
sub_80B8E24: @ 80B8E24
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r3, r0]
|
|
cmp r1, 0
|
|
beq _080B8E36
|
|
cmp r1, 0x1
|
|
beq _080B8E4C
|
|
b _080B8E8E
|
|
_080B8E36:
|
|
ldrh r0, [r3, 0x26]
|
|
adds r0, 0x4
|
|
strh r0, [r3, 0x26]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
blt _080B8E8E
|
|
strh r1, [r3, 0x26]
|
|
ldrh r0, [r3, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x2E]
|
|
b _080B8E8E
|
|
_080B8E4C:
|
|
ldrh r0, [r3, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x30]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
ble _080B8E8E
|
|
movs r0, 0
|
|
strh r0, [r3, 0x30]
|
|
movs r1, 0x3E
|
|
adds r1, r3
|
|
mov r12, r1
|
|
ldrb r2, [r1]
|
|
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, 0x32]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xA
|
|
bne _080B8E8E
|
|
adds r0, r3, 0
|
|
bl DestroyAnimSprite
|
|
_080B8E8E:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B8E24
|
|
|
|
thumb_func_start sub_80B8E94
|
|
sub_80B8E94: @ 80B8E94
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _080B8EB4 @ =gTasks
|
|
adds r1, r0, r1
|
|
ldr r0, _080B8EB8 @ =gBattleAnimArgs
|
|
movs r3, 0
|
|
ldrsh r0, [r0, r3]
|
|
cmp r0, 0
|
|
bne _080B8EC0
|
|
ldr r0, _080B8EBC @ =sub_80B8ED4
|
|
b _080B8EC2
|
|
.align 2, 0
|
|
_080B8EB4: .4byte gTasks
|
|
_080B8EB8: .4byte gBattleAnimArgs
|
|
_080B8EBC: .4byte sub_80B8ED4
|
|
_080B8EC0:
|
|
ldr r0, _080B8ED0 @ =sub_80B908C
|
|
_080B8EC2:
|
|
str r0, [r1]
|
|
ldr r1, [r1]
|
|
adds r0, r2, 0
|
|
bl _call_via_r1
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B8ED0: .4byte sub_80B908C
|
|
thumb_func_end sub_80B8E94
|
|
|
|
thumb_func_start sub_80B8ED4
|
|
sub_80B8ED4: @ 80B8ED4
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _080B8EF8 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x4
|
|
bls _080B8EEE
|
|
b _080B9082
|
|
_080B8EEE:
|
|
lsls r0, 2
|
|
ldr r1, _080B8EFC @ =_080B8F00
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080B8EF8: .4byte gTasks
|
|
_080B8EFC: .4byte _080B8F00
|
|
.align 2, 0
|
|
_080B8F00:
|
|
.4byte _080B8F14
|
|
.4byte _080B8F9C
|
|
.4byte _080B8FAC
|
|
.4byte _080B9050
|
|
.4byte _080B9064
|
|
_080B8F14:
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x1C]
|
|
ldr r0, _080B8F3C @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x1E]
|
|
cmp r0, 0x1
|
|
bne _080B8F48
|
|
ldr r0, _080B8F40 @ =gBattle_BG1_X
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, 0x20]
|
|
ldr r0, _080B8F44 @ =gBattle_BG1_Y
|
|
b _080B8F50
|
|
.align 2, 0
|
|
_080B8F3C: .4byte gBattleAnimAttacker
|
|
_080B8F40: .4byte gBattle_BG1_X
|
|
_080B8F44: .4byte gBattle_BG1_Y
|
|
_080B8F48:
|
|
ldr r0, _080B8F8C @ =gBattle_BG2_X
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, 0x20]
|
|
ldr r0, _080B8F90 @ =gBattle_BG2_Y
|
|
_080B8F50:
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, 0x22]
|
|
ldr r0, _080B8F94 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl sub_807492C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r0, 0
|
|
subs r1, 0x20
|
|
strh r1, [r4, 0x24]
|
|
adds r0, 0x20
|
|
strh r0, [r4, 0x26]
|
|
cmp r1, 0
|
|
bge _080B8F72
|
|
movs r0, 0
|
|
strh r0, [r4, 0x24]
|
|
_080B8F72:
|
|
ldr r2, _080B8F98 @ =gSprites
|
|
movs r3, 0x1C
|
|
ldrsh r1, [r4, r3]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
adds r0, 0x3E
|
|
ldrb r1, [r0]
|
|
movs r2, 0x4
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
b _080B9056
|
|
.align 2, 0
|
|
_080B8F8C: .4byte gBattle_BG2_X
|
|
_080B8F90: .4byte gBattle_BG2_Y
|
|
_080B8F94: .4byte gBattleAnimAttacker
|
|
_080B8F98: .4byte gSprites
|
|
_080B8F9C:
|
|
ldrb r0, [r4, 0x1E]
|
|
movs r2, 0x24
|
|
ldrsh r1, [r4, r2]
|
|
movs r3, 0x26
|
|
ldrsh r2, [r4, r3]
|
|
bl sub_80B92B8
|
|
b _080B9056
|
|
_080B8FAC:
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x6
|
|
movs r1, 0x7F
|
|
ands r0, r1
|
|
strh r0, [r4, 0xC]
|
|
ldrh r0, [r4, 0x10]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x10]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x2
|
|
ble _080B8FCE
|
|
movs r0, 0
|
|
strh r0, [r4, 0x10]
|
|
ldrh r0, [r4, 0xE]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xE]
|
|
_080B8FCE:
|
|
ldr r1, _080B8FF0 @ =gSineTable
|
|
movs r2, 0xC
|
|
ldrsh r0, [r4, r2]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
lsls r0, 16
|
|
asrs r0, 20
|
|
ldrh r3, [r4, 0xE]
|
|
adds r2, r0, r3
|
|
strh r2, [r4, 0x12]
|
|
movs r1, 0x1E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
bne _080B8FF8
|
|
ldr r1, _080B8FF4 @ =gBattle_BG1_Y
|
|
b _080B8FFA
|
|
.align 2, 0
|
|
_080B8FF0: .4byte gSineTable
|
|
_080B8FF4: .4byte gBattle_BG1_Y
|
|
_080B8FF8:
|
|
ldr r1, _080B901C @ =gBattle_BG2_Y
|
|
_080B8FFA:
|
|
ldrh r0, [r4, 0x22]
|
|
subs r0, r2
|
|
strh r0, [r1]
|
|
movs r2, 0x12
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x3F
|
|
ble _080B9082
|
|
ldrh r0, [r4, 0x24]
|
|
movs r1, 0x78
|
|
subs r2, r1, r0
|
|
strh r2, [r4, 0x12]
|
|
movs r3, 0x1E
|
|
ldrsh r0, [r4, r3]
|
|
cmp r0, 0x1
|
|
bne _080B9024
|
|
ldr r1, _080B9020 @ =gBattle_BG1_Y
|
|
b _080B9026
|
|
.align 2, 0
|
|
_080B901C: .4byte gBattle_BG2_Y
|
|
_080B9020: .4byte gBattle_BG1_Y
|
|
_080B9024:
|
|
ldr r1, _080B9048 @ =gBattle_BG2_Y
|
|
_080B9026:
|
|
ldrh r0, [r4, 0x22]
|
|
subs r0, r2
|
|
strh r0, [r1]
|
|
ldr r2, _080B904C @ =gSprites
|
|
movs r1, 0x1C
|
|
ldrsh r0, [r4, r1]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrh r2, [r1, 0x20]
|
|
movs r3, 0x88
|
|
lsls r3, 1
|
|
adds r0, r3, 0
|
|
subs r0, r2
|
|
strh r0, [r1, 0x24]
|
|
b _080B9056
|
|
.align 2, 0
|
|
_080B9048: .4byte gBattle_BG2_Y
|
|
_080B904C: .4byte gSprites
|
|
_080B9050:
|
|
ldr r1, _080B9060 @ =gScanlineEffect
|
|
movs r0, 0x3
|
|
strb r0, [r1, 0x15]
|
|
_080B9056:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080B9082
|
|
.align 2, 0
|
|
_080B9060: .4byte gScanlineEffect
|
|
_080B9064:
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
ldr r2, _080B9088 @ =gSprites
|
|
movs r0, 0x1C
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
adds r0, 0x3E
|
|
ldrb r1, [r0]
|
|
movs r2, 0x4
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
_080B9082:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B9088: .4byte gSprites
|
|
thumb_func_end sub_80B8ED4
|
|
|
|
thumb_func_start sub_80B908C
|
|
sub_80B908C: @ 80B908C
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _080B90CC @ =gSprites
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
adds r3, r1, 0
|
|
adds r3, 0x3E
|
|
ldrb r0, [r3]
|
|
movs r2, 0x4
|
|
orrs r0, r2
|
|
strb r0, [r3]
|
|
movs r4, 0
|
|
strh r4, [r1, 0x24]
|
|
strh r4, [r1, 0x26]
|
|
ldr r0, _080B90D0 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080B90D8
|
|
ldr r0, _080B90D4 @ =gBattle_BG1_Y
|
|
b _080B90DA
|
|
.align 2, 0
|
|
_080B90CC: .4byte gSprites
|
|
_080B90D0: .4byte gBattleAnimAttacker
|
|
_080B90D4: .4byte gBattle_BG1_Y
|
|
_080B90D8:
|
|
ldr r0, _080B90E8 @ =gBattle_BG2_Y
|
|
_080B90DA:
|
|
strh r4, [r0]
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B90E8: .4byte gBattle_BG2_Y
|
|
thumb_func_end sub_80B908C
|
|
|
|
thumb_func_start sub_80B90EC
|
|
sub_80B90EC: @ 80B90EC
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _080B910C @ =gTasks
|
|
adds r1, r0, r1
|
|
ldr r0, _080B9110 @ =gBattleAnimArgs
|
|
movs r3, 0
|
|
ldrsh r0, [r0, r3]
|
|
cmp r0, 0
|
|
bne _080B9118
|
|
ldr r0, _080B9114 @ =sub_80B912C
|
|
b _080B911A
|
|
.align 2, 0
|
|
_080B910C: .4byte gTasks
|
|
_080B9110: .4byte gBattleAnimArgs
|
|
_080B9114: .4byte sub_80B912C
|
|
_080B9118:
|
|
ldr r0, _080B9128 @ =sub_80B91B0
|
|
_080B911A:
|
|
str r0, [r1]
|
|
ldr r1, [r1]
|
|
adds r0, r2, 0
|
|
bl _call_via_r1
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B9128: .4byte sub_80B91B0
|
|
thumb_func_end sub_80B90EC
|
|
|
|
thumb_func_start sub_80B912C
|
|
sub_80B912C: @ 80B912C
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _080B914C @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r0, 0x8
|
|
ldrsh r5, [r4, r0]
|
|
cmp r5, 0
|
|
beq _080B9150
|
|
cmp r5, 0x1
|
|
beq _080B91A4
|
|
b _080B91AA
|
|
.align 2, 0
|
|
_080B914C: .4byte gTasks
|
|
_080B9150:
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x1C]
|
|
ldr r3, _080B91A0 @ =gSprites
|
|
movs r0, 0x1C
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
adds r0, 0x3E
|
|
ldrb r2, [r0]
|
|
movs r1, 0x5
|
|
negs r1, r1
|
|
ands r1, r2
|
|
strb r1, [r0]
|
|
movs r0, 0x1C
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
strh r5, [r0, 0x24]
|
|
movs r1, 0x1C
|
|
ldrsh r0, [r4, r1]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldrh r2, [r1, 0x22]
|
|
movs r0, 0xA0
|
|
subs r0, r2
|
|
strh r0, [r1, 0x26]
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080B91AA
|
|
.align 2, 0
|
|
_080B91A0: .4byte gSprites
|
|
_080B91A4:
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B91AA:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B912C
|
|
|
|
thumb_func_start sub_80B91B0
|
|
sub_80B91B0: @ 80B91B0
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _080B91D4 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x4
|
|
bhi _080B92B2
|
|
lsls r0, 2
|
|
ldr r1, _080B91D8 @ =_080B91DC
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080B91D4: .4byte gTasks
|
|
_080B91D8: .4byte _080B91DC
|
|
.align 2, 0
|
|
_080B91DC:
|
|
.4byte _080B91F0
|
|
.4byte _080B9244
|
|
.4byte _080B9252
|
|
.4byte _080B926C
|
|
.4byte _080B92AC
|
|
_080B91F0:
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x1C]
|
|
ldr r0, _080B9214 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x1E]
|
|
cmp r0, 0x1
|
|
bne _080B921C
|
|
ldr r0, _080B9218 @ =gBattle_BG1_X
|
|
b _080B921E
|
|
.align 2, 0
|
|
_080B9214: .4byte gBattleAnimAttacker
|
|
_080B9218: .4byte gBattle_BG1_X
|
|
_080B921C:
|
|
ldr r0, _080B923C @ =gBattle_BG2_X
|
|
_080B921E:
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, 0x20]
|
|
ldr r0, _080B9240 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl sub_807492C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r0, 0
|
|
subs r1, 0x20
|
|
strh r1, [r4, 0x24]
|
|
adds r0, 0x20
|
|
strh r0, [r4, 0x26]
|
|
b _080B929A
|
|
.align 2, 0
|
|
_080B923C: .4byte gBattle_BG2_X
|
|
_080B9240: .4byte gBattleAnimAttacker
|
|
_080B9244:
|
|
ldrb r0, [r4, 0x1E]
|
|
movs r1, 0x26
|
|
ldrsh r2, [r4, r1]
|
|
movs r1, 0
|
|
bl sub_80B92B8
|
|
b _080B929A
|
|
_080B9252:
|
|
ldr r2, _080B9268 @ =gSprites
|
|
movs r0, 0x1C
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
movs r1, 0x60
|
|
strh r1, [r0, 0x26]
|
|
b _080B929A
|
|
.align 2, 0
|
|
_080B9268: .4byte gSprites
|
|
_080B926C:
|
|
ldr r2, _080B92A4 @ =gSprites
|
|
movs r0, 0x1C
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r0, 0x26]
|
|
subs r1, 0x8
|
|
strh r1, [r0, 0x26]
|
|
movs r0, 0x1C
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
movs r1, 0x26
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080B92B2
|
|
ldr r1, _080B92A8 @ =gScanlineEffect
|
|
movs r0, 0x3
|
|
strb r0, [r1, 0x15]
|
|
_080B929A:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080B92B2
|
|
.align 2, 0
|
|
_080B92A4: .4byte gSprites
|
|
_080B92A8: .4byte gScanlineEffect
|
|
_080B92AC:
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B92B2:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B91B0
|
|
|
|
thumb_func_start sub_80B92B8
|
|
sub_80B92B8: @ 80B92B8
|
|
push {r4-r6,lr}
|
|
sub sp, 0xC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
lsls r2, 16
|
|
lsrs r4, r2, 16
|
|
cmp r0, 0x1
|
|
bne _080B92DC
|
|
ldr r0, _080B92D4 @ =gBattle_BG1_X
|
|
ldrh r3, [r0]
|
|
ldr r0, _080B92D8 @ =0x04000014
|
|
b _080B92E2
|
|
.align 2, 0
|
|
_080B92D4: .4byte gBattle_BG1_X
|
|
_080B92D8: .4byte 0x04000014
|
|
_080B92DC:
|
|
ldr r0, _080B9368 @ =gBattle_BG2_X
|
|
ldrh r3, [r0]
|
|
ldr r0, _080B936C @ =0x04000018
|
|
_080B92E2:
|
|
str r0, [sp]
|
|
lsls r0, r1, 16
|
|
cmp r0, 0
|
|
bge _080B92EC
|
|
movs r1, 0
|
|
_080B92EC:
|
|
lsls r2, r1, 16
|
|
lsls r0, r4, 16
|
|
asrs r4, r0, 16
|
|
cmp r2, r0
|
|
bge _080B9318
|
|
ldr r5, _080B9370 @ =gScanlineEffectRegBuffers
|
|
movs r0, 0xF0
|
|
lsls r0, 3
|
|
adds r6, r5, r0
|
|
_080B92FE:
|
|
asrs r2, 16
|
|
lsls r1, r2, 1
|
|
adds r0, r1, r5
|
|
strh r3, [r0]
|
|
adds r1, r6
|
|
strh r3, [r1]
|
|
adds r2, 0x1
|
|
lsls r2, 16
|
|
lsrs r1, r2, 16
|
|
lsls r2, r1, 16
|
|
asrs r0, r2, 16
|
|
cmp r0, r4
|
|
blt _080B92FE
|
|
_080B9318:
|
|
lsls r1, 16
|
|
asrs r0, r1, 16
|
|
cmp r0, 0x9F
|
|
bgt _080B9346
|
|
ldr r4, _080B9370 @ =gScanlineEffectRegBuffers
|
|
lsls r0, r3, 16
|
|
asrs r0, 16
|
|
adds r3, r0, 0
|
|
adds r3, 0xF0
|
|
movs r0, 0xF0
|
|
lsls r0, 3
|
|
adds r5, r4, r0
|
|
_080B9330:
|
|
asrs r2, r1, 16
|
|
lsls r1, r2, 1
|
|
adds r0, r1, r4
|
|
strh r3, [r0]
|
|
adds r1, r5
|
|
strh r3, [r1]
|
|
adds r2, 0x1
|
|
lsls r1, r2, 16
|
|
asrs r0, r1, 16
|
|
cmp r0, 0x9F
|
|
ble _080B9330
|
|
_080B9346:
|
|
ldr r0, _080B9374 @ =0xa2600001
|
|
str r0, [sp, 0x4]
|
|
mov r1, sp
|
|
movs r2, 0
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x8]
|
|
mov r0, sp
|
|
strb r2, [r0, 0x9]
|
|
ldr r0, [sp]
|
|
ldr r1, [sp, 0x4]
|
|
ldr r2, [sp, 0x8]
|
|
bl ScanlineEffect_SetParams
|
|
add sp, 0xC
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B9368: .4byte gBattle_BG2_X
|
|
_080B936C: .4byte 0x04000018
|
|
_080B9370: .4byte gScanlineEffectRegBuffers
|
|
_080B9374: .4byte 0xa2600001
|
|
thumb_func_end sub_80B92B8
|
|
|
|
thumb_func_start sub_80B9378
|
|
sub_80B9378: @ 80B9378
|
|
push {r4-r7,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _080B938C @ =gBattleAnimArgs
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
adds r7, r0, 0
|
|
cmp r1, 0
|
|
bne _080B9394
|
|
ldr r0, _080B9390 @ =gBattleAnimAttacker
|
|
b _080B9396
|
|
.align 2, 0
|
|
_080B938C: .4byte gBattleAnimArgs
|
|
_080B9390: .4byte gBattleAnimAttacker
|
|
_080B9394:
|
|
ldr r0, _080B93F8 @ =gBattleAnimTarget
|
|
_080B9396:
|
|
ldrb r4, [r0]
|
|
movs r6, 0x18
|
|
adds r1, r7, 0
|
|
movs r2, 0x2
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0x1
|
|
bne _080B93B2
|
|
negs r0, r6
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
movs r2, 0x4
|
|
ldrsh r0, [r1, r2]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x4]
|
|
_080B93B2:
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, r6
|
|
strh r0, [r5, 0x20]
|
|
adds r0, r4, 0
|
|
bl sub_807492C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x1E
|
|
strh r0, [r5, 0x22]
|
|
ldrh r1, [r7, 0xA]
|
|
strh r1, [r5, 0x2E]
|
|
ldrh r1, [r7, 0x4]
|
|
ldrh r2, [r5, 0x20]
|
|
adds r1, r2
|
|
strh r1, [r5, 0x32]
|
|
ldrh r1, [r7, 0x6]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x36]
|
|
ldrh r0, [r7, 0x8]
|
|
strh r0, [r5, 0x38]
|
|
adds r0, r5, 0
|
|
bl sub_8075068
|
|
ldr r0, _080B93FC @ =sub_80B9400
|
|
str r0, [r5, 0x1C]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B93F8: .4byte gBattleAnimTarget
|
|
_080B93FC: .4byte sub_80B9400
|
|
thumb_func_end sub_80B9378
|
|
|
|
thumb_func_start sub_80B9400
|
|
sub_80B9400: @ 80B9400
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl AnimateBallThrow
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B9414
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B9414:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B9400
|
|
|
|
thumb_func_start sub_80B941C
|
|
sub_80B941C: @ 80B941C
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
ldr r0, _080B9430 @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080B9438
|
|
ldr r0, _080B9434 @ =gBattleAnimAttacker
|
|
b _080B943A
|
|
.align 2, 0
|
|
_080B9430: .4byte gBattleAnimArgs
|
|
_080B9434: .4byte gBattleAnimAttacker
|
|
_080B9438:
|
|
ldr r0, _080B9498 @ =gBattleAnimTarget
|
|
_080B943A:
|
|
ldrb r5, [r0]
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _080B949C @ =0x0000fff0
|
|
adds r0, r2
|
|
ldr r4, _080B94A0 @ =gBattleAnimArgs
|
|
movs r3, 0x2
|
|
ldrsh r1, [r4, r3]
|
|
lsls r1, 5
|
|
adds r0, r1
|
|
strh r0, [r6, 0x20]
|
|
adds r0, r5, 0
|
|
bl sub_807492C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x20
|
|
strh r0, [r6, 0x22]
|
|
ldrh r2, [r6, 0x4]
|
|
lsls r1, r2, 22
|
|
lsrs r1, 22
|
|
movs r3, 0x2
|
|
ldrsh r0, [r4, r3]
|
|
lsls r0, 3
|
|
adds r1, r0
|
|
ldr r3, _080B94A4 @ =0x000003ff
|
|
adds r0, r3, 0
|
|
ands r1, r0
|
|
ldr r0, _080B94A8 @ =0xfffffc00
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r6, 0x4]
|
|
ldr r1, _080B94AC @ =DestroyAnimSprite
|
|
adds r0, r6, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldrh r0, [r4, 0x4]
|
|
strh r0, [r6, 0x2E]
|
|
ldr r0, _080B94B0 @ =sub_8074C44
|
|
str r0, [r6, 0x1C]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B9498: .4byte gBattleAnimTarget
|
|
_080B949C: .4byte 0x0000fff0
|
|
_080B94A0: .4byte gBattleAnimArgs
|
|
_080B94A4: .4byte 0x000003ff
|
|
_080B94A8: .4byte 0xfffffc00
|
|
_080B94AC: .4byte DestroyAnimSprite
|
|
_080B94B0: .4byte sub_8074C44
|
|
thumb_func_end sub_80B941C
|
|
|
|
thumb_func_start sub_80B94B4
|
|
sub_80B94B4: @ 80B94B4
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _080B94D8 @ =gTasks
|
|
adds r4, r0, r1
|
|
ldr r0, _080B94DC @ =gBattleAnimArgs
|
|
ldrh r2, [r0, 0x2]
|
|
movs r3, 0x2
|
|
ldrsh r1, [r0, r3]
|
|
adds r6, r0, 0
|
|
cmp r1, 0
|
|
beq _080B94E0
|
|
adds r0, r2, 0x3
|
|
b _080B94EC
|
|
.align 2, 0
|
|
_080B94D8: .4byte gTasks
|
|
_080B94DC: .4byte gBattleAnimArgs
|
|
_080B94E0:
|
|
ldr r0, _080B950C @ =gUnknown_2037EEC
|
|
ldrh r0, [r0]
|
|
movs r1, 0xA
|
|
bl __udivsi3
|
|
adds r0, 0x3
|
|
_080B94EC:
|
|
strh r0, [r4, 0x26]
|
|
strh r0, [r4, 0x24]
|
|
adds r1, r6, 0
|
|
ldrh r0, [r1, 0x4]
|
|
strh r0, [r4, 0xE]
|
|
movs r2, 0
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0x4
|
|
beq _080B9518
|
|
cmp r0, 0x5
|
|
bne _080B9558
|
|
ldr r0, _080B9510 @ =gBattle_BG3_X
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, 0x22]
|
|
ldr r0, _080B9514 @ =sub_80B9584
|
|
b _080B9576
|
|
.align 2, 0
|
|
_080B950C: .4byte gUnknown_2037EEC
|
|
_080B9510: .4byte gBattle_BG3_X
|
|
_080B9514: .4byte sub_80B9584
|
|
_080B9518:
|
|
movs r0, 0
|
|
strh r0, [r4, 0x22]
|
|
movs r5, 0
|
|
_080B951E:
|
|
lsls r0, r5, 24
|
|
lsrs r0, 24
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B9548
|
|
movs r3, 0x22
|
|
ldrsh r0, [r4, r3]
|
|
adds r0, 0x9
|
|
lsls r0, 1
|
|
adds r1, r4, 0
|
|
adds r1, 0x8
|
|
adds r1, r0
|
|
ldr r0, _080B9554 @ =gUnknown_2023D44
|
|
adds r0, r5, r0
|
|
ldrb r0, [r0]
|
|
strh r0, [r1]
|
|
ldrh r0, [r4, 0x22]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x22]
|
|
_080B9548:
|
|
adds r0, r5, 0x1
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
cmp r5, 0x3
|
|
bls _080B951E
|
|
b _080B9574
|
|
.align 2, 0
|
|
_080B9554: .4byte gUnknown_2023D44
|
|
_080B9558:
|
|
ldrb r0, [r6]
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x1A]
|
|
cmp r0, 0xFF
|
|
bne _080B9570
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
b _080B9578
|
|
_080B9570:
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x22]
|
|
_080B9574:
|
|
ldr r0, _080B9580 @ =sub_80B967C
|
|
_080B9576:
|
|
str r0, [r4]
|
|
_080B9578:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B9580: .4byte sub_80B967C
|
|
thumb_func_end sub_80B94B4
|
|
|
|
thumb_func_start sub_80B9584
|
|
sub_80B9584: @ 80B9584
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _080B95A8 @ =gTasks
|
|
adds r3, r0, r1
|
|
movs r0, 0x8
|
|
ldrsh r1, [r3, r0]
|
|
cmp r1, 0x1
|
|
beq _080B9608
|
|
cmp r1, 0x1
|
|
bgt _080B95AC
|
|
cmp r1, 0
|
|
beq _080B95B2
|
|
b _080B9674
|
|
.align 2, 0
|
|
_080B95A8: .4byte gTasks
|
|
_080B95AC:
|
|
cmp r1, 0x2
|
|
beq _080B9668
|
|
b _080B9674
|
|
_080B95B2:
|
|
ldrh r0, [r3, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080B9674
|
|
strh r1, [r3, 0xA]
|
|
ldrh r1, [r3, 0xC]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B95DC
|
|
ldr r1, _080B95D8 @ =gBattle_BG3_X
|
|
ldrh r0, [r3, 0x26]
|
|
ldrh r2, [r3, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r1]
|
|
b _080B95E6
|
|
.align 2, 0
|
|
_080B95D8: .4byte gBattle_BG3_X
|
|
_080B95DC:
|
|
ldr r0, _080B9604 @ =gBattle_BG3_X
|
|
ldrh r1, [r3, 0x22]
|
|
ldrh r2, [r3, 0x26]
|
|
subs r1, r2
|
|
strh r1, [r0]
|
|
_080B95E6:
|
|
ldrh r0, [r3, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r2, 0xE
|
|
ldrsh r1, [r3, r2]
|
|
cmp r0, r1
|
|
bne _080B9674
|
|
movs r0, 0
|
|
strh r0, [r3, 0xC]
|
|
ldrh r0, [r3, 0x24]
|
|
subs r0, 0x1
|
|
strh r0, [r3, 0x24]
|
|
b _080B965C
|
|
.align 2, 0
|
|
_080B9604: .4byte gBattle_BG3_X
|
|
_080B9608:
|
|
ldrh r0, [r3, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080B9674
|
|
movs r0, 0
|
|
strh r0, [r3, 0xA]
|
|
ldrh r0, [r3, 0xC]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _080B9634
|
|
ldr r1, _080B9630 @ =gBattle_BG3_X
|
|
ldrh r0, [r3, 0x24]
|
|
ldrh r2, [r3, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r1]
|
|
b _080B963E
|
|
.align 2, 0
|
|
_080B9630: .4byte gBattle_BG3_X
|
|
_080B9634:
|
|
ldr r0, _080B9664 @ =gBattle_BG3_X
|
|
ldrh r1, [r3, 0x22]
|
|
ldrh r2, [r3, 0x24]
|
|
subs r1, r2
|
|
strh r1, [r0]
|
|
_080B963E:
|
|
ldrh r0, [r3, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
bne _080B9674
|
|
movs r0, 0
|
|
strh r0, [r3, 0xC]
|
|
ldrh r0, [r3, 0x24]
|
|
subs r0, 0x1
|
|
strh r0, [r3, 0x24]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080B9674
|
|
_080B965C:
|
|
ldrh r0, [r3, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x8]
|
|
b _080B9674
|
|
.align 2, 0
|
|
_080B9664: .4byte gBattle_BG3_X
|
|
_080B9668:
|
|
ldr r1, _080B9678 @ =gBattle_BG3_X
|
|
ldrh r0, [r3, 0x22]
|
|
strh r0, [r1]
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B9674:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B9678: .4byte gBattle_BG3_X
|
|
thumb_func_end sub_80B9584
|
|
|
|
thumb_func_start sub_80B967C
|
|
sub_80B967C: @ 80B967C
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
lsls r0, r3, 2
|
|
adds r0, r3
|
|
lsls r0, 3
|
|
ldr r1, _080B96A0 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r0, 0x8
|
|
ldrsh r5, [r4, r0]
|
|
cmp r5, 0x1
|
|
beq _080B96DC
|
|
cmp r5, 0x1
|
|
bgt _080B96A4
|
|
cmp r5, 0
|
|
beq _080B96AA
|
|
b _080B9756
|
|
.align 2, 0
|
|
_080B96A0: .4byte gTasks
|
|
_080B96A4:
|
|
cmp r5, 0x2
|
|
beq _080B9718
|
|
b _080B9756
|
|
_080B96AA:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080B9756
|
|
strh r5, [r4, 0xA]
|
|
adds r0, r4, 0
|
|
bl sub_80B9760
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r2, 0xE
|
|
ldrsh r1, [r4, r2]
|
|
cmp r0, r1
|
|
bne _080B9756
|
|
strh r5, [r4, 0xC]
|
|
ldrh r0, [r4, 0x24]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x24]
|
|
b _080B9710
|
|
_080B96DC:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
movs r5, 0
|
|
strh r0, [r4, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080B9756
|
|
strh r5, [r4, 0xA]
|
|
adds r0, r4, 0
|
|
bl sub_80B9760
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
bne _080B9756
|
|
strh r5, [r4, 0xC]
|
|
ldrh r0, [r4, 0x24]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x24]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080B9756
|
|
_080B9710:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080B9756
|
|
_080B9718:
|
|
movs r2, 0
|
|
movs r7, 0x22
|
|
ldrsh r0, [r4, r7]
|
|
cmp r2, r0
|
|
bge _080B9750
|
|
ldr r0, _080B975C @ =gSprites
|
|
mov r12, r0
|
|
adds r5, r4, 0
|
|
adds r5, 0x8
|
|
movs r6, 0
|
|
_080B972C:
|
|
adds r0, r2, 0
|
|
adds r0, 0x9
|
|
lsls r0, 1
|
|
adds r0, r5, r0
|
|
movs r7, 0
|
|
ldrsh r1, [r0, r7]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
add r0, r12
|
|
strh r6, [r0, 0x24]
|
|
adds r0, r2, 0x1
|
|
lsls r0, 16
|
|
lsrs r2, r0, 16
|
|
movs r1, 0x22
|
|
ldrsh r0, [r4, r1]
|
|
cmp r2, r0
|
|
blt _080B972C
|
|
_080B9750:
|
|
adds r0, r3, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B9756:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B975C: .4byte gSprites
|
|
thumb_func_end sub_80B967C
|
|
|
|
thumb_func_start sub_80B9760
|
|
sub_80B9760: @ 80B9760
|
|
push {r4-r7,lr}
|
|
adds r3, r0, 0
|
|
ldrh r1, [r3, 0xC]
|
|
movs r4, 0x1
|
|
adds r0, r4, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B9788
|
|
movs r0, 0x24
|
|
ldrsh r1, [r3, r0]
|
|
lsrs r0, r1, 31
|
|
adds r1, r0
|
|
asrs r1, 1
|
|
ldrh r2, [r3, 0x24]
|
|
adds r0, r4, 0
|
|
ands r0, r2
|
|
adds r1, r0
|
|
lsls r1, 16
|
|
lsrs r4, r1, 16
|
|
b _080B9798
|
|
_080B9788:
|
|
movs r1, 0x24
|
|
ldrsh r0, [r3, r1]
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
negs r0, r0
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
_080B9798:
|
|
movs r2, 0
|
|
movs r7, 0x22
|
|
ldrsh r0, [r3, r7]
|
|
cmp r2, r0
|
|
bge _080B97CC
|
|
ldr r6, _080B97D4 @ =gSprites
|
|
adds r5, r3, 0
|
|
adds r5, 0x8
|
|
_080B97A8:
|
|
adds r0, r2, 0
|
|
adds r0, 0x9
|
|
lsls r0, 1
|
|
adds r0, r5, r0
|
|
movs r7, 0
|
|
ldrsh r1, [r0, r7]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
strh r4, [r0, 0x24]
|
|
adds r0, r2, 0x1
|
|
lsls r0, 16
|
|
lsrs r2, r0, 16
|
|
movs r1, 0x22
|
|
ldrsh r0, [r3, r1]
|
|
cmp r2, r0
|
|
blt _080B97A8
|
|
_080B97CC:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B97D4: .4byte gSprites
|
|
thumb_func_end sub_80B9760
|
|
|
|
thumb_func_start sub_80B97D8
|
|
sub_80B97D8: @ 80B97D8
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
ldr r3, _080B97F8 @ =gBattleAnimArgs
|
|
movs r2, 0
|
|
ldr r0, _080B97FC @ =gUnknown_2037EEC
|
|
ldrh r0, [r0]
|
|
cmp r0, 0x63
|
|
bls _080B97EC
|
|
movs r2, 0x1
|
|
_080B97EC:
|
|
strh r2, [r3, 0x1E]
|
|
adds r0, r1, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B97F8: .4byte gBattleAnimArgs
|
|
_080B97FC: .4byte gUnknown_2037EEC
|
|
thumb_func_end sub_80B97D8
|
|
|
|
thumb_func_start sub_80B9800
|
|
sub_80B9800: @ 80B9800
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r2, _080B9818 @ =gBattleAnimArgs
|
|
ldrh r1, [r2]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
adds r6, r2, 0
|
|
cmp r0, 0
|
|
beq _080B9820
|
|
ldr r0, _080B981C @ =gBattleAnimTarget
|
|
b _080B9822
|
|
.align 2, 0
|
|
_080B9818: .4byte gBattleAnimArgs
|
|
_080B981C: .4byte gBattleAnimTarget
|
|
_080B9820:
|
|
ldr r0, _080B9890 @ =gBattleAnimAttacker
|
|
_080B9822:
|
|
ldrb r0, [r0]
|
|
adds r5, r0, 0
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0x1
|
|
ble _080B9832
|
|
movs r0, 0x2
|
|
eors r5, r0
|
|
_080B9832:
|
|
ldr r0, _080B9894 @ =sub_80B98A8
|
|
ldrb r1, [r6, 0x2]
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
ldr r0, _080B9898 @ =gTasks
|
|
adds r4, r0
|
|
adds r0, r5, 0
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x20
|
|
subs r1, r0
|
|
ldr r2, _080B989C @ =0x000001ff
|
|
adds r0, r2, 0
|
|
ands r1, r0
|
|
strh r1, [r4, 0xA]
|
|
adds r0, r5, 0
|
|
movs r1, 0x3
|
|
bl sub_8074480
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x40
|
|
subs r1, r0
|
|
movs r0, 0xFF
|
|
ands r1, r0
|
|
strh r1, [r4, 0xC]
|
|
ldr r2, _080B98A0 @ =gBattle_BG3_X
|
|
ldrh r0, [r4, 0xA]
|
|
strh r0, [r2]
|
|
ldr r0, _080B98A4 @ =gBattle_BG3_Y
|
|
strh r1, [r0]
|
|
ldrh r0, [r6, 0x4]
|
|
strh r0, [r4, 0xE]
|
|
adds r0, r7, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B9890: .4byte gBattleAnimAttacker
|
|
_080B9894: .4byte sub_80B98A8
|
|
_080B9898: .4byte gTasks
|
|
_080B989C: .4byte 0x000001ff
|
|
_080B98A0: .4byte gBattle_BG3_X
|
|
_080B98A4: .4byte gBattle_BG3_Y
|
|
thumb_func_end sub_80B9800
|
|
|
|
thumb_func_start sub_80B98A8
|
|
sub_80B98A8: @ 80B98A8
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
lsls r0, r3, 2
|
|
adds r0, r3
|
|
lsls r0, 3
|
|
ldr r1, _080B98D8 @ =gTasks
|
|
adds r2, r0, r1
|
|
ldr r0, _080B98DC @ =gBattleAnimArgs
|
|
movs r4, 0xE
|
|
ldrsh r1, [r0, r4]
|
|
movs r4, 0xE
|
|
ldrsh r0, [r2, r4]
|
|
cmp r1, r0
|
|
bne _080B98E8
|
|
ldr r0, _080B98E0 @ =gBattle_BG3_X
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, _080B98E4 @ =gBattle_BG3_Y
|
|
strh r1, [r0]
|
|
adds r0, r3, 0
|
|
bl DestroyTask
|
|
b _080B98F4
|
|
.align 2, 0
|
|
_080B98D8: .4byte gTasks
|
|
_080B98DC: .4byte gBattleAnimArgs
|
|
_080B98E0: .4byte gBattle_BG3_X
|
|
_080B98E4: .4byte gBattle_BG3_Y
|
|
_080B98E8:
|
|
ldr r1, _080B98FC @ =gBattle_BG3_X
|
|
ldrh r0, [r2, 0xA]
|
|
strh r0, [r1]
|
|
ldr r1, _080B9900 @ =gBattle_BG3_Y
|
|
ldrh r0, [r2, 0xC]
|
|
strh r0, [r1]
|
|
_080B98F4:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B98FC: .4byte gBattle_BG3_X
|
|
_080B9900: .4byte gBattle_BG3_Y
|
|
thumb_func_end sub_80B98A8
|
|
|
|
thumb_func_start sub_80B9904
|
|
sub_80B9904: @ 80B9904
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080B993C @ =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, _080B9940 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _080B9944
|
|
ldrh r0, [r5, 0x6]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x30]
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x36]
|
|
b _080B9952
|
|
.align 2, 0
|
|
_080B993C: .4byte gBattleAnimArgs
|
|
_080B9940: .4byte gBattleAnimAttacker
|
|
_080B9944:
|
|
ldrh r0, [r5, 0x6]
|
|
strh r0, [r4, 0x30]
|
|
strh r1, [r4, 0x36]
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAnim
|
|
_080B9952:
|
|
ldr r0, _080B9968 @ =gBattleAnimArgs
|
|
ldrh r0, [r0, 0x8]
|
|
strh r0, [r4, 0x34]
|
|
ldr r1, _080B996C @ =sub_80B9970
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B9968: .4byte gBattleAnimArgs
|
|
_080B996C: .4byte sub_80B9970
|
|
thumb_func_end sub_80B9904
|
|
|
|
thumb_func_start sub_80B9970
|
|
sub_80B9970: @ 80B9970
|
|
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 _080B99A2
|
|
ldrb r0, [r4, 0x5]
|
|
movs r1, 0xD
|
|
negs r1, r1
|
|
ands r1, r0
|
|
movs r0, 0x4
|
|
orrs r1, r0
|
|
strb r1, [r4, 0x5]
|
|
b _080B99AA
|
|
_080B99A2:
|
|
ldrb r0, [r4, 0x5]
|
|
movs r1, 0xC
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x5]
|
|
_080B99AA:
|
|
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 _080B99CE
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B99CE:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B9970
|
|
|
|
thumb_func_start sub_80B99D4
|
|
sub_80B99D4: @ 80B99D4
|
|
push {r4,r5,lr}
|
|
sub sp, 0x4
|
|
adds r5, r0, 0
|
|
ldr r4, _080B9A0C @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
bl sub_80B9A14
|
|
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, _080B9A10 @ =sub_80B9A5C
|
|
str r0, [r5, 0x1C]
|
|
add sp, 0x4
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B9A0C: .4byte gBattleAnimArgs
|
|
_080B9A10: .4byte sub_80B9A5C
|
|
thumb_func_end sub_80B99D4
|
|
|
|
thumb_func_start sub_80B9A14
|
|
sub_80B9A14: @ 80B9A14
|
|
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_8075BE8
|
|
add sp, 0xC
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80B9A14
|
|
|
|
thumb_func_start sub_80B9A5C
|
|
sub_80B9A5C: @ 80B9A5C
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldr r0, _080B9A78 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B9A72
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_080B9A72:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B9A78: .4byte gPaletteFade
|
|
thumb_func_end sub_80B9A5C
|
|
|
|
thumb_func_start sub_80B9A7C
|
|
sub_80B9A7C: @ 80B9A7C
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080B9AC8 @ =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_80B9A14
|
|
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, _080B9ACC @ =sub_80B9AD0
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B9AC8: .4byte gBattleAnimArgs
|
|
_080B9ACC: .4byte sub_80B9AD0
|
|
thumb_func_end sub_80B9A7C
|
|
|
|
thumb_func_start sub_80B9AD0
|
|
sub_80B9AD0: @ 80B9AD0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x2E]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
ble _080B9AE4
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _080B9B54
|
|
_080B9AE4:
|
|
ldr r0, _080B9B00 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B9B54
|
|
movs r1, 0x32
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080B9B08
|
|
ldr r0, _080B9B04 @ =sub_80B9B5C
|
|
str r0, [r4, 0x1C]
|
|
b _080B9B54
|
|
.align 2, 0
|
|
_080B9B00: .4byte gPaletteFade
|
|
_080B9B04: .4byte sub_80B9B5C
|
|
_080B9B08:
|
|
movs r2, 0x3C
|
|
ldrsh r0, [r4, r2]
|
|
bl sub_80B9A14
|
|
adds r3, r0, 0
|
|
ldrh r1, [r4, 0x30]
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B9B2E
|
|
ldrh r1, [r4, 0x36]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldrh r2, [r4, 0x34]
|
|
adds r0, r3, 0
|
|
bl BlendPalettes
|
|
b _080B9B3C
|
|
_080B9B2E:
|
|
ldrh r1, [r4, 0x3A]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldrh r2, [r4, 0x38]
|
|
adds r0, r3, 0
|
|
bl BlendPalettes
|
|
_080B9B3C:
|
|
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]
|
|
_080B9B54:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B9AD0
|
|
|
|
thumb_func_start sub_80B9B5C
|
|
sub_80B9B5C: @ 80B9B5C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _080B9B88 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B9B82
|
|
movs r1, 0x3C
|
|
ldrsh r0, [r4, r1]
|
|
bl sub_80B9A14
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl BlendPalettes
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B9B82:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B9B88: .4byte gPaletteFade
|
|
thumb_func_end sub_80B9B5C
|
|
|
|
thumb_func_start sub_80B9B8C
|
|
sub_80B9B8C: @ 80B9B8C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r1, _080B9BD0 @ =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, _080B9BD4 @ =move_anim_8074EE0
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r1, _080B9BD8 @ =sub_8074AE0
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B9BD0: .4byte gBattleAnimArgs
|
|
_080B9BD4: .4byte move_anim_8074EE0
|
|
_080B9BD8: .4byte sub_8074AE0
|
|
thumb_func_end sub_80B9B8C
|
|
|
|
thumb_func_start sub_80B9BDC
|
|
sub_80B9BDC: @ 80B9BDC
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _080B9C20 @ =gTasks
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
adds r4, r1
|
|
ldr r3, _080B9C24 @ =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_80B9C2C
|
|
ldr r0, _080B9C28 @ =sub_80B9C7C
|
|
str r0, [r4]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B9C20: .4byte gTasks
|
|
_080B9C24: .4byte gBattleAnimArgs
|
|
_080B9C28: .4byte sub_80B9C7C
|
|
thumb_func_end sub_80B9BDC
|
|
|
|
thumb_func_start sub_80B9C2C
|
|
sub_80B9C2C: @ 80B9C2C
|
|
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, _080B9C78 @ =gTasks
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
adds r4, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
bl sub_80B9A14
|
|
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
|
|
_080B9C78: .4byte gTasks
|
|
thumb_func_end sub_80B9C2C
|
|
|
|
thumb_func_start sub_80B9C7C
|
|
sub_80B9C7C: @ 80B9C7C
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
adds r4, r3, 0
|
|
ldr r0, _080B9CB4 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B9CDE
|
|
ldr r1, _080B9CB8 @ =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 _080B9CD8
|
|
movs r1, 0x18
|
|
ldrsh r0, [r3, r1]
|
|
cmp r0, 0
|
|
bne _080B9CBC
|
|
ldrb r1, [r3, 0xE]
|
|
ldrb r2, [r3, 0x10]
|
|
b _080B9CC0
|
|
.align 2, 0
|
|
_080B9CB4: .4byte gPaletteFade
|
|
_080B9CB8: .4byte gTasks
|
|
_080B9CBC:
|
|
ldrb r1, [r3, 0x10]
|
|
ldrb r2, [r3, 0xE]
|
|
_080B9CC0:
|
|
adds r0, r5, r4
|
|
lsls r0, 3
|
|
adds r0, r6
|
|
movs r3, 0xC
|
|
ldrsh r0, [r0, r3]
|
|
cmp r0, 0x1
|
|
bne _080B9CD0
|
|
movs r2, 0
|
|
_080B9CD0:
|
|
adds r0, r4, 0
|
|
bl sub_80B9C2C
|
|
b _080B9CDE
|
|
_080B9CD8:
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B9CDE:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B9C7C
|
|
|
|
thumb_func_start sub_80B9CE4
|
|
sub_80B9CE4: @ 80B9CE4
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
movs r5, 0
|
|
ldr r3, _080B9D88 @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r0, r3
|
|
ldr r2, _080B9D8C @ =gBattleAnimArgs
|
|
ldrh r1, [r2]
|
|
strh r1, [r0, 0x8]
|
|
ldrh r1, [r2, 0x2]
|
|
strh r1, [r0, 0xA]
|
|
ldrh r1, [r2, 0x4]
|
|
strh r1, [r0, 0xC]
|
|
ldrh r1, [r2, 0x6]
|
|
strh r1, [r0, 0xE]
|
|
ldrh r1, [r2, 0x8]
|
|
strh r1, [r0, 0x10]
|
|
ldrh r1, [r2, 0xA]
|
|
strh r1, [r0, 0x12]
|
|
strh r5, [r0, 0x18]
|
|
movs r4, 0
|
|
ldr r0, _080B9D90 @ =gBattlersCount
|
|
ldrb r1, [r0]
|
|
mov r9, r3
|
|
mov r8, r2
|
|
cmp r5, r1
|
|
bge _080B9D4C
|
|
ldr r0, _080B9D94 @ =gBattleAnimAttacker
|
|
ldrb r3, [r0]
|
|
ldr r7, _080B9D98 @ =gBattleAnimTarget
|
|
movs r0, 0x1
|
|
mov r12, r0
|
|
adds r2, r1, 0
|
|
_080B9D32:
|
|
cmp r4, r3
|
|
beq _080B9D46
|
|
ldrb r1, [r7]
|
|
cmp r4, r1
|
|
beq _080B9D46
|
|
adds r1, r4, 0
|
|
adds r1, 0x10
|
|
mov r0, r12
|
|
lsls r0, r1
|
|
orrs r5, r0
|
|
_080B9D46:
|
|
adds r4, 0x1
|
|
cmp r4, r2
|
|
blt _080B9D32
|
|
_080B9D4C:
|
|
mov r2, r8
|
|
movs r1, 0
|
|
ldrsh r0, [r2, r1]
|
|
cmp r0, 0x1
|
|
bne _080B9D5A
|
|
movs r0, 0xE
|
|
orrs r5, r0
|
|
_080B9D5A:
|
|
lsls r4, r6, 2
|
|
adds r4, r6
|
|
lsls r4, 3
|
|
add r4, r9
|
|
lsrs r0, r5, 16
|
|
strh r0, [r4, 0x1A]
|
|
movs r0, 0xFF
|
|
ands r5, r0
|
|
strh r5, [r4, 0x1C]
|
|
ldrb r2, [r4, 0x10]
|
|
adds r0, r6, 0
|
|
movs r1, 0
|
|
bl sub_80B9DA0
|
|
ldr r0, _080B9D9C @ =sub_80B9DF0
|
|
str r0, [r4]
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B9D88: .4byte gTasks
|
|
_080B9D8C: .4byte gBattleAnimArgs
|
|
_080B9D90: .4byte gBattlersCount
|
|
_080B9D94: .4byte gBattleAnimAttacker
|
|
_080B9D98: .4byte gBattleAnimTarget
|
|
_080B9D9C: .4byte sub_80B9DF0
|
|
thumb_func_end sub_80B9CE4
|
|
|
|
thumb_func_start sub_80B9DA0
|
|
sub_80B9DA0: @ 80B9DA0
|
|
push {r4,r5,lr}
|
|
sub sp, 0x4
|
|
adds r5, r1, 0
|
|
adds r3, r2, 0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
ldr r1, _080B9DEC @ =gTasks
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
adds r4, r1
|
|
ldrh r0, [r4, 0x1A]
|
|
lsls r0, 16
|
|
ldrh r1, [r4, 0x1C]
|
|
orrs r0, r1
|
|
movs r1, 0xA
|
|
ldrsb r1, [r4, r1]
|
|
ldrh r2, [r4, 0x12]
|
|
str r2, [sp]
|
|
adds r2, r5, 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,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B9DEC: .4byte gTasks
|
|
thumb_func_end sub_80B9DA0
|
|
|
|
thumb_func_start sub_80B9DF0
|
|
sub_80B9DF0: @ 80B9DF0
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
adds r4, r3, 0
|
|
ldr r0, _080B9E28 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B9E52
|
|
ldr r1, _080B9E2C @ =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 _080B9E4C
|
|
movs r1, 0x18
|
|
ldrsh r0, [r3, r1]
|
|
cmp r0, 0
|
|
bne _080B9E30
|
|
ldrb r1, [r3, 0xE]
|
|
ldrb r2, [r3, 0x10]
|
|
b _080B9E34
|
|
.align 2, 0
|
|
_080B9E28: .4byte gPaletteFade
|
|
_080B9E2C: .4byte gTasks
|
|
_080B9E30:
|
|
ldrb r1, [r3, 0x10]
|
|
ldrb r2, [r3, 0xE]
|
|
_080B9E34:
|
|
adds r0, r5, r4
|
|
lsls r0, 3
|
|
adds r0, r6
|
|
movs r3, 0xC
|
|
ldrsh r0, [r0, r3]
|
|
cmp r0, 0x1
|
|
bne _080B9E44
|
|
movs r2, 0
|
|
_080B9E44:
|
|
adds r0, r4, 0
|
|
bl sub_80B9DA0
|
|
b _080B9E52
|
|
_080B9E4C:
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B9E52:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B9DF0
|
|
|
|
thumb_func_start sub_80B9E58
|
|
sub_80B9E58: @ 80B9E58
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _080B9E9C @ =gTasks
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
adds r4, r1
|
|
ldr r3, _080B9EA0 @ =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_80B9EA8
|
|
ldr r0, _080B9EA4 @ =sub_80B9F04
|
|
str r0, [r4]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B9E9C: .4byte gTasks
|
|
_080B9EA0: .4byte gBattleAnimArgs
|
|
_080B9EA4: .4byte sub_80B9F04
|
|
thumb_func_end sub_80B9E58
|
|
|
|
thumb_func_start sub_80B9EA8
|
|
sub_80B9EA8: @ 80B9EA8
|
|
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, _080B9F00 @ =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
|
|
_080B9F00: .4byte gTasks
|
|
thumb_func_end sub_80B9EA8
|
|
|
|
thumb_func_start sub_80B9F04
|
|
sub_80B9F04: @ 80B9F04
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
adds r4, r3, 0
|
|
ldr r0, _080B9F3C @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080B9F66
|
|
ldr r1, _080B9F40 @ =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 _080B9F60
|
|
movs r1, 0x18
|
|
ldrsh r0, [r3, r1]
|
|
cmp r0, 0
|
|
bne _080B9F44
|
|
ldrb r1, [r3, 0xE]
|
|
ldrb r2, [r3, 0x10]
|
|
b _080B9F48
|
|
.align 2, 0
|
|
_080B9F3C: .4byte gPaletteFade
|
|
_080B9F40: .4byte gTasks
|
|
_080B9F44:
|
|
ldrb r1, [r3, 0x10]
|
|
ldrb r2, [r3, 0xE]
|
|
_080B9F48:
|
|
adds r0, r5, r4
|
|
lsls r0, 3
|
|
adds r0, r6
|
|
movs r3, 0xC
|
|
ldrsh r0, [r0, r3]
|
|
cmp r0, 0x1
|
|
bne _080B9F58
|
|
movs r2, 0
|
|
_080B9F58:
|
|
adds r0, r4, 0
|
|
bl sub_80B9EA8
|
|
b _080B9F66
|
|
_080B9F60:
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B9F66:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B9F04
|
|
|
|
thumb_func_start sub_80B9F6C
|
|
sub_80B9F6C: @ 80B9F6C
|
|
push {r4,r5,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _080B9FCC @ =gTasks
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
adds r4, r1
|
|
ldr r5, _080B9FD0 @ =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, _080B9FD4 @ =sub_80B9FD8
|
|
str r0, [r4]
|
|
add sp, 0x4
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B9FCC: .4byte gTasks
|
|
_080B9FD0: .4byte gBattleAnimArgs
|
|
_080B9FD4: .4byte sub_80B9FD8
|
|
thumb_func_end sub_80B9F6C
|
|
|
|
thumb_func_start sub_80B9FD8
|
|
sub_80B9FD8: @ 80B9FD8
|
|
push {r4,r5,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, _080B9FFC @ =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 _080BA000
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080BA084
|
|
.align 2, 0
|
|
_080B9FFC: .4byte gTasks
|
|
_080BA000:
|
|
ldr r0, _080BA01C @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080BA084
|
|
movs r3, 0xC
|
|
ldrsh r0, [r4, r3]
|
|
cmp r0, 0
|
|
bne _080BA024
|
|
ldr r0, _080BA020 @ =sub_80BA090
|
|
str r0, [r4]
|
|
b _080BA084
|
|
.align 2, 0
|
|
_080BA01C: .4byte gPaletteFade
|
|
_080BA020: .4byte sub_80BA090
|
|
_080BA024:
|
|
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 _080BA052
|
|
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 _080BA062
|
|
_080BA052:
|
|
ldrb r3, [r4, 0x14]
|
|
ldrh r0, [r4, 0x12]
|
|
str r0, [sp]
|
|
adds r0, r2, 0
|
|
movs r1, 0
|
|
adds r2, r3, 0
|
|
bl BeginNormalPaletteFade
|
|
_080BA062:
|
|
ldr r0, _080BA08C @ =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]
|
|
_080BA084:
|
|
add sp, 0x4
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BA08C: .4byte gTasks
|
|
thumb_func_end sub_80B9FD8
|
|
|
|
thumb_func_start sub_80BA090
|
|
sub_80BA090: @ 80BA090
|
|
push {r4,r5,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _080BA0E0 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0
|
|
bne _080BA0D6
|
|
ldr r1, _080BA0E4 @ =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
|
|
_080BA0D6:
|
|
add sp, 0x4
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BA0E0: .4byte gPaletteFade
|
|
_080BA0E4: .4byte gTasks
|
|
thumb_func_end sub_80BA090
|
|
|
|
thumb_func_start sub_80BA0E8
|
|
sub_80BA0E8: @ 80BA0E8
|
|
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, _080BA160 @ =gBattleAnimAttacker
|
|
ldrb r6, [r0]
|
|
ldr r0, _080BA164 @ =gBattleAnimTarget
|
|
ldrb r7, [r0]
|
|
ldr r4, _080BA168 @ =gBattleAnimArgs
|
|
ldrh r1, [r4]
|
|
movs r5, 0x80
|
|
lsls r5, 1
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BA122
|
|
str r2, [sp]
|
|
str r2, [sp, 0x4]
|
|
str r2, [sp, 0x8]
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
movs r3, 0
|
|
bl sub_8075BE8
|
|
adds r2, r0, 0
|
|
_080BA122:
|
|
ldrh r1, [r4, 0x2]
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BA134
|
|
movs r0, 0x80
|
|
lsls r0, 9
|
|
lsls r0, r6
|
|
orrs r2, r0
|
|
_080BA134:
|
|
ldrh r1, [r4, 0x4]
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BA146
|
|
movs r0, 0x80
|
|
lsls r0, 9
|
|
lsls r0, r7
|
|
orrs r2, r0
|
|
_080BA146:
|
|
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
|
|
_080BA160: .4byte gBattleAnimAttacker
|
|
_080BA164: .4byte gBattleAnimTarget
|
|
_080BA168: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80BA0E8
|
|
|
|
thumb_func_start sub_80BA16C
|
|
sub_80BA16C: @ 80BA16C
|
|
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, _080BA260 @ =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 _080BA1AE
|
|
ldr r1, _080BA264 @ =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]
|
|
_080BA1AE:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
ldr r0, _080BA268 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
mov r9, r0
|
|
ldr r0, _080BA26C @ =gBattleAnimTarget
|
|
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 _080BA1D0
|
|
ldr r5, _080BA270 @ =0x0000ffff
|
|
_080BA1D0:
|
|
movs r6, 0x1
|
|
adds r0, r6, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BA200
|
|
ldr r2, _080BA274 @ =gSprites
|
|
ldr r0, _080BA278 @ =gUnknown_3004FF0
|
|
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
|
|
_080BA200:
|
|
ldrh r1, [r4, 0xE]
|
|
adds r0, r7, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BA214
|
|
adds r0, r6, 0
|
|
mov r2, r9
|
|
lsls r0, r2
|
|
lsls r0, 16
|
|
orrs r5, r0
|
|
_080BA214:
|
|
ldrh r1, [r4, 0x10]
|
|
adds r0, r7, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BA228
|
|
adds r0, r6, 0
|
|
mov r1, r10
|
|
lsls r0, r1
|
|
lsls r0, 16
|
|
orrs r5, r0
|
|
_080BA228:
|
|
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 _080BA252
|
|
adds r0, r5, 0
|
|
bl UnfadePlttBuffer
|
|
mov r0, r8
|
|
bl DestroyAnimVisualTask
|
|
_080BA252:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BA260: .4byte gTasks
|
|
_080BA264: .4byte gBattleAnimArgs
|
|
_080BA268: .4byte gBattleAnimAttacker
|
|
_080BA26C: .4byte gBattleAnimTarget
|
|
_080BA270: .4byte 0x0000ffff
|
|
_080BA274: .4byte gSprites
|
|
_080BA278: .4byte gUnknown_3004FF0
|
|
thumb_func_end sub_80BA16C
|
|
|
|
thumb_func_start sub_80BA27C
|
|
sub_80BA27C: @ 80BA27C
|
|
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, _080BA2B0 @ =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 _080BA2C4
|
|
cmp r0, 0x1
|
|
bgt _080BA2B4
|
|
cmp r0, 0
|
|
beq _080BA2BA
|
|
b _080BA2DC
|
|
.align 2, 0
|
|
_080BA2B0: .4byte gBattleAnimArgs
|
|
_080BA2B4:
|
|
cmp r0, 0x2
|
|
beq _080BA2CC
|
|
b _080BA2DC
|
|
_080BA2BA:
|
|
ldr r1, _080BA2C0 @ =gBattle_BG3_X
|
|
b _080BA2CE
|
|
.align 2, 0
|
|
_080BA2C0: .4byte gBattle_BG3_X
|
|
_080BA2C4:
|
|
ldr r1, _080BA2C8 @ =gBattle_BG3_Y
|
|
b _080BA2CE
|
|
.align 2, 0
|
|
_080BA2C8: .4byte gBattle_BG3_Y
|
|
_080BA2CC:
|
|
ldr r1, _080BA2D8 @ =gSpriteCoordOffsetX
|
|
_080BA2CE:
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
b _080BA2E4
|
|
.align 2, 0
|
|
_080BA2D8: .4byte gSpriteCoordOffsetX
|
|
_080BA2DC:
|
|
ldr r1, _080BA314 @ =gSpriteCoordOffsetY
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
_080BA2E4:
|
|
movs r0, 0x3A
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x3C
|
|
ldrsh r0, [r4, r2]
|
|
lsls r0, 16
|
|
orrs r1, r0
|
|
ldrh r0, [r1]
|
|
strh r0, [r4, 0x36]
|
|
ldr r0, _080BA318 @ =gBattleAnimArgs
|
|
ldrh r0, [r0, 0x6]
|
|
strh r0, [r4, 0x38]
|
|
subs r0, 0x2
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x1
|
|
bhi _080BA308
|
|
bl sub_80BA3CC
|
|
_080BA308:
|
|
ldr r0, _080BA31C @ =sub_80BA320
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BA314: .4byte gSpriteCoordOffsetY
|
|
_080BA318: .4byte gBattleAnimArgs
|
|
_080BA31C: .4byte sub_80BA320
|
|
thumb_func_end sub_80BA27C
|
|
|
|
thumb_func_start sub_80BA320
|
|
sub_80BA320: @ 80BA320
|
|
push {r4-r7,lr}
|
|
adds r3, r0, 0
|
|
ldrh r1, [r3, 0x34]
|
|
movs r2, 0x34
|
|
ldrsh r0, [r3, r2]
|
|
cmp r0, 0
|
|
ble _080BA362
|
|
subs r0, r1, 0x1
|
|
strh r0, [r3, 0x34]
|
|
ldrh r1, [r3, 0x30]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r3, r2]
|
|
cmp r0, 0
|
|
ble _080BA342
|
|
subs r0, r1, 0x1
|
|
strh r0, [r3, 0x30]
|
|
b _080BA3BA
|
|
_080BA342:
|
|
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
|
|
ldrh r0, [r3, 0x2E]
|
|
ldrh r2, [r1]
|
|
adds r0, r2
|
|
strh r0, [r1]
|
|
ldrh r0, [r3, 0x2E]
|
|
negs r0, r0
|
|
strh r0, [r3, 0x2E]
|
|
b _080BA3BA
|
|
_080BA362:
|
|
movs r0, 0x3A
|
|
ldrsh r1, [r3, r0]
|
|
movs r2, 0x3C
|
|
ldrsh r0, [r3, r2]
|
|
lsls r0, 16
|
|
orrs r1, r0
|
|
ldrh r0, [r3, 0x36]
|
|
strh r0, [r1]
|
|
ldrh r0, [r3, 0x38]
|
|
subs r0, 0x2
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x1
|
|
bhi _080BA3B4
|
|
movs r4, 0
|
|
ldr r5, _080BA3C0 @ =gBattlersCount
|
|
ldrb r0, [r5]
|
|
cmp r4, r0
|
|
bcs _080BA3B4
|
|
ldr r2, _080BA3C4 @ =gSprites
|
|
mov r12, r2
|
|
ldr r6, _080BA3C8 @ =gUnknown_2023D44
|
|
movs r7, 0x3
|
|
negs r7, r7
|
|
_080BA392:
|
|
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 _080BA392
|
|
_080BA3B4:
|
|
adds r0, r3, 0
|
|
bl DestroyAnimSprite
|
|
_080BA3BA:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BA3C0: .4byte gBattlersCount
|
|
_080BA3C4: .4byte gSprites
|
|
_080BA3C8: .4byte gUnknown_2023D44
|
|
thumb_func_end sub_80BA320
|
|
|
|
thumb_func_start sub_80BA3CC
|
|
sub_80BA3CC: @ 80BA3CC
|
|
push {r4-r6,lr}
|
|
ldr r6, _080BA440 @ =gSprites
|
|
ldr r4, _080BA444 @ =gUnknown_2023D44
|
|
ldr r5, _080BA448 @ =gBattleAnimAttacker
|
|
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, _080BA44C @ =gBattleAnimTarget
|
|
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, _080BA450 @ =gBattleAnimArgs
|
|
movs r1, 0x8
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0x2
|
|
bne _080BA454
|
|
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 _080BA470
|
|
.align 2, 0
|
|
_080BA440: .4byte gSprites
|
|
_080BA444: .4byte gUnknown_2023D44
|
|
_080BA448: .4byte gBattleAnimAttacker
|
|
_080BA44C: .4byte gBattleAnimTarget
|
|
_080BA450: .4byte gBattleAnimArgs
|
|
_080BA454:
|
|
cmp r0, 0
|
|
bne _080BA45C
|
|
ldrb r0, [r5]
|
|
b _080BA45E
|
|
_080BA45C:
|
|
ldrb r0, [r3]
|
|
_080BA45E:
|
|
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
|
|
_080BA470:
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80BA3CC
|
|
|
|
thumb_func_start sub_80BA47C
|
|
sub_80BA47C: @ 80BA47C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _080BA4BC @ =gTasks
|
|
lsls r2, r0, 2
|
|
adds r2, r0
|
|
lsls r2, 3
|
|
adds r2, r1
|
|
ldr r3, _080BA4C0 @ =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, _080BA4C4 @ =gBattle_BG3_X
|
|
ldrh r1, [r3]
|
|
strh r1, [r4]
|
|
ldr r4, _080BA4C8 @ =gBattle_BG3_Y
|
|
ldrh r1, [r3, 0x2]
|
|
strh r1, [r4]
|
|
ldr r1, _080BA4CC @ =sub_80BA4D0
|
|
str r1, [r2]
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BA4BC: .4byte gTasks
|
|
_080BA4C0: .4byte gBattleAnimArgs
|
|
_080BA4C4: .4byte gBattle_BG3_X
|
|
_080BA4C8: .4byte gBattle_BG3_Y
|
|
_080BA4CC: .4byte sub_80BA4D0
|
|
thumb_func_end sub_80BA47C
|
|
|
|
thumb_func_start sub_80BA4D0
|
|
sub_80BA4D0: @ 80BA4D0
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, _080BA500 @ =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 _080BA556
|
|
ldr r0, _080BA504 @ =gBattle_BG3_X
|
|
ldrh r2, [r0]
|
|
movs r7, 0x8
|
|
ldrsh r1, [r3, r7]
|
|
adds r6, r0, 0
|
|
cmp r2, r1
|
|
bne _080BA508
|
|
ldrh r0, [r3, 0x8]
|
|
negs r0, r0
|
|
b _080BA50A
|
|
.align 2, 0
|
|
_080BA500: .4byte gTasks
|
|
_080BA504: .4byte gBattle_BG3_X
|
|
_080BA508:
|
|
ldrh r0, [r3, 0x8]
|
|
_080BA50A:
|
|
strh r0, [r6]
|
|
ldr r2, _080BA528 @ =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 _080BA52C
|
|
movs r0, 0
|
|
b _080BA530
|
|
.align 2, 0
|
|
_080BA528: .4byte gBattle_BG3_Y
|
|
_080BA52C:
|
|
ldrh r0, [r4, 0xA]
|
|
negs r0, r0
|
|
_080BA530:
|
|
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 _080BA55A
|
|
strh r1, [r6]
|
|
strh r1, [r2]
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
b _080BA55A
|
|
_080BA556:
|
|
subs r0, r2, 0x1
|
|
strh r0, [r3, 0xE]
|
|
_080BA55A:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80BA4D0
|
|
|
|
thumb_func_start sub_80BA560
|
|
sub_80BA560: @ 80BA560
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080BA580 @ =gBattleAnimArgs
|
|
ldrb r1, [r4, 0x6]
|
|
bl StartSpriteAffineAnim
|
|
movs r1, 0x4
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080BA584
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
b _080BA58C
|
|
.align 2, 0
|
|
_080BA580: .4byte gBattleAnimArgs
|
|
_080BA584:
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl sub_8075114
|
|
_080BA58C:
|
|
ldr r0, _080BA5A0 @ =sub_8074F50
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, _080BA5A4 @ =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BA5A0: .4byte sub_8074F50
|
|
_080BA5A4: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80BA560
|
|
|
|
thumb_func_start sub_80BA5A8
|
|
sub_80BA5A8: @ 80BA5A8
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080BA5C8 @ =gBattleAnimArgs
|
|
ldrb r1, [r4, 0x6]
|
|
bl StartSpriteAffineAnim
|
|
movs r1, 0x4
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080BA5CC
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
b _080BA5D4
|
|
.align 2, 0
|
|
_080BA5C8: .4byte gBattleAnimArgs
|
|
_080BA5CC:
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl sub_8075114
|
|
_080BA5D4:
|
|
ldr r0, _080BA5EC @ =gBattleAnimArgs
|
|
ldrh r0, [r0, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
ldr r0, _080BA5F0 @ =sub_8074F50
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, _080BA5F4 @ =sub_80B1D3C
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BA5EC: .4byte gBattleAnimArgs
|
|
_080BA5F0: .4byte sub_8074F50
|
|
_080BA5F4: .4byte sub_80B1D3C
|
|
thumb_func_end sub_80BA5A8
|
|
|
|
thumb_func_start sub_80BA5F8
|
|
sub_80BA5F8: @ 80BA5F8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _080BA628 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080BA61C
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080BA61C
|
|
ldr r1, _080BA62C @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x2]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x2]
|
|
_080BA61C:
|
|
adds r0, r4, 0
|
|
bl sub_80BA560
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BA628: .4byte gBattleAnimAttacker
|
|
_080BA62C: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80BA5F8
|
|
|
|
thumb_func_start sub_80BA630
|
|
sub_80BA630: @ 80BA630
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080BA668 @ =gBattleAnimArgs
|
|
movs r0, 0x2
|
|
ldrsh r1, [r5, r0]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bne _080BA64C
|
|
bl Random
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
strh r1, [r5, 0x2]
|
|
_080BA64C:
|
|
ldrb r1, [r5, 0x2]
|
|
adds r0, r4, 0
|
|
bl StartSpriteAffineAnim
|
|
movs r1, 0
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _080BA66C
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl sub_8075160
|
|
b _080BA674
|
|
.align 2, 0
|
|
_080BA668: .4byte gBattleAnimArgs
|
|
_080BA66C:
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl sub_8075114
|
|
_080BA674:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x30
|
|
bl __umodsi3
|
|
ldr r1, _080BA6B8 @ =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, _080BA6BC @ =0x0000fff4
|
|
adds r0, r1
|
|
ldrh r1, [r4, 0x26]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x26]
|
|
ldr r1, _080BA6C0 @ =move_anim_8074EE0
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, _080BA6C4 @ =sub_8074F50
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BA6B8: .4byte 0x0000ffe8
|
|
_080BA6BC: .4byte 0x0000fff4
|
|
_080BA6C0: .4byte move_anim_8074EE0
|
|
_080BA6C4: .4byte sub_8074F50
|
|
thumb_func_end sub_80BA630
|
|
|
|
thumb_func_start sub_80BA6C8
|
|
sub_80BA6C8: @ 80BA6C8
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080BA728 @ =gBattleAnimArgs
|
|
ldrb r0, [r5]
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x2E]
|
|
ldr r2, _080BA72C @ =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, _080BA730 @ =move_anim_8074EE0
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, _080BA734 @ =sub_8074F50
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BA728: .4byte gBattleAnimArgs
|
|
_080BA72C: .4byte gSprites
|
|
_080BA730: .4byte move_anim_8074EE0
|
|
_080BA734: .4byte sub_8074F50
|
|
thumb_func_end sub_80BA6C8
|
|
|
|
thumb_func_start sub_80BA738
|
|
sub_80BA738: @ 80BA738
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _080BA750 @ =gBattleAnimArgs
|
|
movs r1, 0x4
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080BA754
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
b _080BA75C
|
|
.align 2, 0
|
|
_080BA750: .4byte gBattleAnimArgs
|
|
_080BA754:
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl sub_8075114
|
|
_080BA75C:
|
|
ldr r0, _080BA774 @ =gBattleAnimArgs
|
|
ldrh r0, [r0, 0x6]
|
|
strh r0, [r4, 0x2E]
|
|
ldr r1, _080BA778 @ =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, _080BA77C @ =sub_8074C44
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BA774: .4byte gBattleAnimArgs
|
|
_080BA778: .4byte DestroyAnimSprite
|
|
_080BA77C: .4byte sub_8074C44
|
|
thumb_func_end sub_80BA738
|
|
|
|
thumb_func_start sub_80BA780
|
|
sub_80BA780: @ 80BA780
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080BA7A0 @ =gBattleAnimArgs
|
|
ldrb r1, [r4, 0x6]
|
|
bl StartSpriteAffineAnim
|
|
movs r1, 0x4
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080BA7A4
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
b _080BA7AC
|
|
.align 2, 0
|
|
_080BA7A0: .4byte gBattleAnimArgs
|
|
_080BA7A4:
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl sub_8075114
|
|
_080BA7AC:
|
|
ldr r0, _080BA7B8 @ =sub_80BA7BC
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BA7B8: .4byte sub_80BA7BC
|
|
thumb_func_end sub_80BA780
|
|
|
|
thumb_func_start sub_80BA7BC
|
|
sub_80BA7BC: @ 80BA7BC
|
|
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 _080BA7F2
|
|
adds r0, r3, 0
|
|
bl DestroyAnimSprite
|
|
_080BA7F2:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80BA7BC
|
|
|
|
thumb_func_start sub_80BA7F8
|
|
sub_80BA7F8: @ 80BA7F8
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldr r4, _080BA838 @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
bl sub_80B9A14
|
|
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_8075CB8
|
|
orrs r6, r0
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
bl sub_80BAA4C
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BA838: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80BA7F8
|
|
|
|
thumb_func_start sub_80BA83C
|
|
sub_80BA83C: @ 80BA83C
|
|
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_80B9A14
|
|
adds r5, r0, 0
|
|
ldr r0, _080BA868 @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0x7
|
|
bhi _080BA8E6
|
|
lsls r0, 2
|
|
ldr r1, _080BA86C @ =_080BA870
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080BA868: .4byte gBattleAnimArgs
|
|
_080BA86C: .4byte _080BA870
|
|
.align 2, 0
|
|
_080BA870:
|
|
.4byte _080BA892
|
|
.4byte _080BA89E
|
|
.4byte _080BA890
|
|
.4byte _080BA89C
|
|
.4byte _080BA8AC
|
|
.4byte _080BA8C4
|
|
.4byte _080BA8CC
|
|
.4byte _080BA8D8
|
|
_080BA890:
|
|
movs r5, 0
|
|
_080BA892:
|
|
mov r0, sp
|
|
ldr r1, _080BA898 @ =gBattleAnimAttacker
|
|
b _080BA8A2
|
|
.align 2, 0
|
|
_080BA898: .4byte gBattleAnimAttacker
|
|
_080BA89C:
|
|
movs r5, 0
|
|
_080BA89E:
|
|
mov r0, sp
|
|
ldr r1, _080BA8A8 @ =gBattleAnimTarget
|
|
_080BA8A2:
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
b _080BA8E6
|
|
.align 2, 0
|
|
_080BA8A8: .4byte gBattleAnimTarget
|
|
_080BA8AC:
|
|
mov r1, sp
|
|
ldr r0, _080BA8BC @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
ldr r0, _080BA8C0 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
strb r0, [r1, 0x1]
|
|
b _080BA8E6
|
|
.align 2, 0
|
|
_080BA8BC: .4byte gBattleAnimAttacker
|
|
_080BA8C0: .4byte gBattleAnimTarget
|
|
_080BA8C4:
|
|
mov r1, sp
|
|
movs r0, 0xFF
|
|
strb r0, [r1]
|
|
b _080BA8E6
|
|
_080BA8CC:
|
|
movs r5, 0
|
|
mov r2, sp
|
|
ldr r0, _080BA8D4 @ =gBattleAnimAttacker
|
|
b _080BA8DE
|
|
.align 2, 0
|
|
_080BA8D4: .4byte gBattleAnimAttacker
|
|
_080BA8D8:
|
|
movs r5, 0
|
|
mov r2, sp
|
|
ldr r0, _080BA930 @ =gBattleAnimTarget
|
|
_080BA8DE:
|
|
ldrb r0, [r0]
|
|
movs r1, 0x2
|
|
eors r0, r1
|
|
strb r0, [r2]
|
|
_080BA8E6:
|
|
movs r4, 0
|
|
mov r6, sp
|
|
_080BA8EA:
|
|
ldrb r0, [r6]
|
|
cmp r4, r0
|
|
beq _080BA914
|
|
ldrb r0, [r6, 0x1]
|
|
cmp r4, r0
|
|
beq _080BA914
|
|
adds r0, r4, 0
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080BA914
|
|
adds r0, r4, 0
|
|
bl sub_8075D80
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x80
|
|
lsls r1, 9
|
|
lsls r1, r0
|
|
orrs r5, r1
|
|
_080BA914:
|
|
adds r0, r4, 0x1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0x3
|
|
bls _080BA8EA
|
|
adds r0, r7, 0
|
|
adds r1, r5, 0
|
|
bl sub_80BAA4C
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BA930: .4byte gBattleAnimTarget
|
|
thumb_func_end sub_80BA83C
|
|
|
|
thumb_func_start sub_80BA934
|
|
sub_80BA934: @ 80BA934
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _080BA958 @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
bl sub_80B9A14
|
|
adds r2, r0, 0
|
|
ldr r0, _080BA95C @ =gUnknown_2022B50
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x9
|
|
bhi _080BAA0A
|
|
lsls r0, 2
|
|
ldr r1, _080BA960 @ =_080BA964
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080BA958: .4byte gBattleAnimArgs
|
|
_080BA95C: .4byte gUnknown_2022B50
|
|
_080BA960: .4byte _080BA964
|
|
.align 2, 0
|
|
_080BA964:
|
|
.4byte _080BA98C
|
|
.4byte _080BA99C
|
|
.4byte _080BA9A8
|
|
.4byte _080BA9B8
|
|
.4byte _080BA9C4
|
|
.4byte _080BA9D4
|
|
.4byte _080BA9E4
|
|
.4byte _080BA9F4
|
|
.4byte _080BAA04
|
|
.4byte _080BAA04
|
|
_080BA98C:
|
|
ldr r1, _080BA994 @ =gBattleAnimArgs
|
|
ldr r0, _080BA998 @ =0x00000b0c
|
|
b _080BAA08
|
|
.align 2, 0
|
|
_080BA994: .4byte gBattleAnimArgs
|
|
_080BA998: .4byte 0x00000b0c
|
|
_080BA99C:
|
|
ldr r1, _080BA9A4 @ =gBattleAnimArgs
|
|
movs r0, 0x9E
|
|
lsls r0, 4
|
|
b _080BAA08
|
|
.align 2, 0
|
|
_080BA9A4: .4byte gBattleAnimArgs
|
|
_080BA9A8:
|
|
ldr r1, _080BA9B0 @ =gBattleAnimArgs
|
|
ldr r0, _080BA9B4 @ =0x00002f1e
|
|
b _080BAA08
|
|
.align 2, 0
|
|
_080BA9B0: .4byte gBattleAnimArgs
|
|
_080BA9B4: .4byte 0x00002f1e
|
|
_080BA9B8:
|
|
ldr r1, _080BA9C0 @ =gBattleAnimArgs
|
|
movs r0, 0x90
|
|
lsls r0, 7
|
|
b _080BAA08
|
|
.align 2, 0
|
|
_080BA9C0: .4byte gBattleAnimArgs
|
|
_080BA9C4:
|
|
ldr r1, _080BA9CC @ =gBattleAnimArgs
|
|
ldr r0, _080BA9D0 @ =0x00007ecb
|
|
b _080BAA08
|
|
.align 2, 0
|
|
_080BA9CC: .4byte gBattleAnimArgs
|
|
_080BA9D0: .4byte 0x00007ecb
|
|
_080BA9D4:
|
|
ldr r1, _080BA9DC @ =gBattleAnimArgs
|
|
ldr r0, _080BA9E0 @ =0x00007ecb
|
|
b _080BAA08
|
|
.align 2, 0
|
|
_080BA9DC: .4byte gBattleAnimArgs
|
|
_080BA9E0: .4byte 0x00007ecb
|
|
_080BA9E4:
|
|
ldr r1, _080BA9EC @ =gBattleAnimArgs
|
|
ldr r0, _080BA9F0 @ =0x00002a16
|
|
b _080BAA08
|
|
.align 2, 0
|
|
_080BA9EC: .4byte gBattleAnimArgs
|
|
_080BA9F0: .4byte 0x00002a16
|
|
_080BA9F4:
|
|
ldr r1, _080BA9FC @ =gBattleAnimArgs
|
|
ldr r0, _080BAA00 @ =0x00000d2e
|
|
b _080BAA08
|
|
.align 2, 0
|
|
_080BA9FC: .4byte gBattleAnimArgs
|
|
_080BAA00: .4byte 0x00000d2e
|
|
_080BAA04:
|
|
ldr r1, _080BAA18 @ =gBattleAnimArgs
|
|
ldr r0, _080BAA1C @ =0x00007fff
|
|
_080BAA08:
|
|
strh r0, [r1, 0x8]
|
|
_080BAA0A:
|
|
adds r0, r4, 0
|
|
adds r1, r2, 0
|
|
bl sub_80BAA4C
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BAA18: .4byte gBattleAnimArgs
|
|
_080BAA1C: .4byte 0x00007fff
|
|
thumb_func_end sub_80BA934
|
|
|
|
thumb_func_start sub_80BAA20
|
|
sub_80BAA20: @ 80BAA20
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r0, _080BAA48 @ =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_80BAA4C
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BAA48: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80BAA20
|
|
|
|
thumb_func_start sub_80BAA4C
|
|
sub_80BAA4C: @ 80BAA4C
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r3, _080BAA84 @ =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, _080BAA88 @ =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, _080BAA8C @ =sub_80BAA90
|
|
str r1, [r2]
|
|
bl _call_via_r1
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BAA84: .4byte gTasks
|
|
_080BAA88: .4byte gBattleAnimArgs
|
|
_080BAA8C: .4byte sub_80BAA90
|
|
thumb_func_end sub_80BAA4C
|
|
|
|
thumb_func_start sub_80BAA90
|
|
sub_80BAA90: @ 80BAA90
|
|
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, _080BAB10 @ =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 _080BAB26
|
|
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 _080BAAF2
|
|
adds r5, r3, 0
|
|
_080BAAD0:
|
|
movs r0, 0x1
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _080BAAE4
|
|
ldrb r2, [r5, 0x1C]
|
|
ldrh r3, [r5, 0x12]
|
|
adds r0, r6, 0
|
|
movs r1, 0x10
|
|
bl BlendPalette
|
|
_080BAAE4:
|
|
adds r0, r6, 0
|
|
adds r0, 0x10
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
lsrs r4, 1
|
|
cmp r4, 0
|
|
bne _080BAAD0
|
|
_080BAAF2:
|
|
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 _080BAB14
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x1C]
|
|
b _080BAB2C
|
|
.align 2, 0
|
|
_080BAB10: .4byte gTasks
|
|
_080BAB14:
|
|
cmp r3, r1
|
|
ble _080BAB1E
|
|
subs r0, 0x1
|
|
strh r0, [r2, 0x1C]
|
|
b _080BAB2C
|
|
_080BAB1E:
|
|
adds r0, r7, 0
|
|
bl DestroyAnimVisualTask
|
|
b _080BAB2C
|
|
_080BAB26:
|
|
mov r0, r8
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x1A]
|
|
_080BAB2C:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80BAA90
|
|
|
|
thumb_func_start sub_80BAB38
|
|
sub_80BAB38: @ 80BAB38
|
|
push {r4,r5,lr}
|
|
sub sp, 0x4
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldr r4, _080BAB6C @ =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, _080BAB70 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _080BAB74 @ =sub_80BAB78
|
|
str r1, [r0]
|
|
add sp, 0x4
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BAB6C: .4byte gBattleAnimArgs
|
|
_080BAB70: .4byte gTasks
|
|
_080BAB74: .4byte sub_80BAB78
|
|
thumb_func_end sub_80BAB38
|
|
|
|
thumb_func_start sub_80BAB78
|
|
sub_80BAB78: @ 80BAB78
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r0, _080BAB94 @ =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080BAB90
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
_080BAB90:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BAB94: .4byte gPaletteFade
|
|
thumb_func_end sub_80BAB78
|
|
|
|
thumb_func_start sub_80BAB98
|
|
sub_80BAB98: @ 80BAB98
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080BABC4 @ =gTasks
|
|
adds r1, r0
|
|
ldr r2, _080BABC8 @ =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, _080BABCC @ =sub_80BABD0
|
|
str r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_080BABC4: .4byte gTasks
|
|
_080BABC8: .4byte gBattleAnimArgs
|
|
_080BABCC: .4byte sub_80BABD0
|
|
thumb_func_end sub_80BAB98
|
|
|
|
thumb_func_start sub_80BABD0
|
|
sub_80BABD0: @ 80BABD0
|
|
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, _080BABFC @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x10
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080BAC94
|
|
ldrh r1, [r4, 0xA]
|
|
movs r2, 0xA
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
beq _080BAC00
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0xA]
|
|
b _080BACA2
|
|
.align 2, 0
|
|
_080BABFC: .4byte gTasks
|
|
_080BAC00:
|
|
ldrb r0, [r4, 0x8]
|
|
bl duplicate_obj_of_side_rel2move_in_transparent_mode
|
|
strh r0, [r4, 0x14]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
blt _080BAC7E
|
|
ldr r6, _080BAC8C @ =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 _080BAC28
|
|
movs r2, 0x1
|
|
_080BAC28:
|
|
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, _080BAC90 @ =sub_80BACA8
|
|
str r1, [r0]
|
|
ldrh r0, [r4, 0x12]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x12]
|
|
_080BAC7E:
|
|
ldrh r0, [r4, 0x10]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x10]
|
|
ldrh r0, [r4, 0xC]
|
|
strh r0, [r4, 0xA]
|
|
b _080BACA2
|
|
.align 2, 0
|
|
_080BAC8C: .4byte gSprites
|
|
_080BAC90: .4byte sub_80BACA8
|
|
_080BAC94:
|
|
movs r1, 0x12
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080BACA2
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
_080BACA2:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80BABD0
|
|
|
|
thumb_func_start sub_80BACA8
|
|
sub_80BACA8: @ 80BACA8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x2E]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
beq _080BACBC
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _080BACE0
|
|
_080BACBC:
|
|
ldr r3, _080BACE8 @ =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
|
|
_080BACE0:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BACE8: .4byte gTasks
|
|
thumb_func_end sub_80BACA8
|
|
|
|
thumb_func_start sub_80BACEC
|
|
sub_80BACEC: @ 80BACEC
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x14
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
movs r7, 0
|
|
ldr r0, _080BAE20 @ =gUnknown_2022984
|
|
strh r7, [r0]
|
|
ldr r0, _080BAE24 @ =gUnknown_2022986
|
|
strh r7, [r0]
|
|
ldr r1, _080BAE28 @ =0x00003f3f
|
|
movs r0, 0x48
|
|
bl SetGpuReg
|
|
ldr r1, _080BAE2C @ =0x00003f3d
|
|
movs r0, 0x4A
|
|
bl SetGpuReg
|
|
movs r1, 0x80
|
|
lsls r1, 8
|
|
movs r0, 0
|
|
bl SetGpuRegBits
|
|
ldr r1, _080BAE30 @ =0x00003f42
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
ldr r1, _080BAE34 @ =0x00000c08
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r0, 0xA
|
|
bl GetGpuReg
|
|
add r4, sp, 0x10
|
|
strh r0, [r4]
|
|
ldrb r1, [r4]
|
|
movs r0, 0x4
|
|
negs r0, r0
|
|
mov r8, r0
|
|
ands r0, r1
|
|
strb r0, [r4]
|
|
mov r2, sp
|
|
adds r2, 0x11
|
|
ldrb r1, [r2]
|
|
movs r0, 0x3F
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
ldrh r1, [r4]
|
|
movs r0, 0xA
|
|
bl SetGpuReg
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080BAD7A
|
|
ldrb r1, [r4]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r1
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r4]
|
|
ldrh r1, [r4]
|
|
movs r0, 0xA
|
|
bl SetGpuReg
|
|
_080BAD7A:
|
|
bl sub_8075290
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080BADFE
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080BADFE
|
|
ldr r5, _080BAE38 @ =gBattleAnimAttacker
|
|
ldrb r0, [r5]
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x3
|
|
beq _080BADAA
|
|
ldrb r0, [r5]
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080BADFE
|
|
_080BADAA:
|
|
ldrb r0, [r5]
|
|
movs r6, 0x2
|
|
eors r0, r6
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080BADFE
|
|
ldr r3, _080BAE3C @ =gSprites
|
|
ldr r1, _080BAE40 @ =gUnknown_2023D44
|
|
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]
|
|
ldrh r1, [r4]
|
|
movs r0, 0xA
|
|
bl SetGpuReg
|
|
movs r7, 0x1
|
|
_080BADFE:
|
|
ldr r4, _080BAE38 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080BAE4C
|
|
ldr r1, _080BAE44 @ =gBattlerPartyIndexes
|
|
ldrb r0, [r4]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _080BAE48 @ =gEnemyParty
|
|
b _080BAE5C
|
|
.align 2, 0
|
|
_080BAE20: .4byte gUnknown_2022984
|
|
_080BAE24: .4byte gUnknown_2022986
|
|
_080BAE28: .4byte 0x00003f3f
|
|
_080BAE2C: .4byte 0x00003f3d
|
|
_080BAE30: .4byte 0x00003f42
|
|
_080BAE34: .4byte 0x00000c08
|
|
_080BAE38: .4byte gBattleAnimAttacker
|
|
_080BAE3C: .4byte gSprites
|
|
_080BAE40: .4byte gUnknown_2023D44
|
|
_080BAE44: .4byte gBattlerPartyIndexes
|
|
_080BAE48: .4byte gEnemyParty
|
|
_080BAE4C:
|
|
ldr r1, _080BAF0C @ =gBattlerPartyIndexes
|
|
ldrb r0, [r4]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _080BAF10 @ =gPlayerParty
|
|
_080BAE5C:
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r5, r0, 0
|
|
ldr r0, _080BAF14 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
adds r1, r5, 0
|
|
adds r2, r4, 0
|
|
bl sub_8076E34
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
mov r0, sp
|
|
bl sub_80752A0
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080BAF18 @ =gFile_graphics_battle_anims_masks_curse_tilemap
|
|
bl sub_807543C
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080BAEAC
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x8]
|
|
ldr r1, [sp, 0x4]
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_80730C0
|
|
_080BAEAC:
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080BAF1C @ =gFile_graphics_battle_anims_masks_curse_sheet
|
|
mov r2, sp
|
|
ldrh r2, [r2, 0xA]
|
|
bl sub_80753B4
|
|
ldr r0, _080BAF20 @ =gUnknown_83E7CC8
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x8]
|
|
lsls r1, 4
|
|
adds r1, 0x1
|
|
movs r2, 0x2
|
|
bl LoadPalette
|
|
ldr r2, _080BAF24 @ =gBattle_BG1_X
|
|
ldr r0, _080BAF28 @ =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, _080BAF2C @ =gBattle_BG1_Y
|
|
ldrh r0, [r1, 0x22]
|
|
negs r0, r0
|
|
adds r0, 0x20
|
|
strh r0, [r2]
|
|
ldr r1, _080BAF30 @ =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, _080BAF34 @ =sub_80BAF38
|
|
str r1, [r0]
|
|
add sp, 0x14
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BAF0C: .4byte gBattlerPartyIndexes
|
|
_080BAF10: .4byte gPlayerParty
|
|
_080BAF14: .4byte gBattleAnimAttacker
|
|
_080BAF18: .4byte gFile_graphics_battle_anims_masks_curse_tilemap
|
|
_080BAF1C: .4byte gFile_graphics_battle_anims_masks_curse_sheet
|
|
_080BAF20: .4byte gUnknown_83E7CC8
|
|
_080BAF24: .4byte gBattle_BG1_X
|
|
_080BAF28: .4byte gSprites
|
|
_080BAF2C: .4byte gBattle_BG1_Y
|
|
_080BAF30: .4byte gTasks
|
|
_080BAF34: .4byte sub_80BAF38
|
|
thumb_func_end sub_80BACEC
|
|
|
|
thumb_func_start sub_80BAF38
|
|
sub_80BAF38: @ 80BAF38
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x14
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r6, r0, 0
|
|
ldr r1, _080BB068 @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r5, r0, r1
|
|
ldrh r0, [r5, 0x1C]
|
|
adds r0, 0x4
|
|
movs r1, 0
|
|
mov r8, r1
|
|
strh r0, [r5, 0x1C]
|
|
ldr r7, _080BB06C @ =gBattle_BG1_Y
|
|
ldrh r2, [r7]
|
|
subs r1, r2, 0x4
|
|
strh r1, [r7]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x40
|
|
bne _080BB05A
|
|
mov r0, r8
|
|
strh r0, [r5, 0x1C]
|
|
adds r0, r2, 0
|
|
adds r0, 0x3C
|
|
strh r0, [r7]
|
|
ldrh r0, [r5, 0x1E]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x1E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
bne _080BB05A
|
|
movs r0, 0
|
|
bl sub_8073128
|
|
ldr r0, _080BB070 @ =gUnknown_2022984
|
|
mov r1, r8
|
|
strh r1, [r0]
|
|
ldr r0, _080BB074 @ =gUnknown_2022986
|
|
strh r1, [r0]
|
|
ldr r4, _080BB078 @ =0x00003f3f
|
|
movs r0, 0x48
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x4A
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080BAFCA
|
|
movs r0, 0xA
|
|
bl GetGpuReg
|
|
add r1, sp, 0x10
|
|
strh r0, [r1]
|
|
ldrb r2, [r1]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldrh r1, [r1]
|
|
movs r0, 0xA
|
|
bl SetGpuReg
|
|
_080BAFCA:
|
|
movs r0, 0
|
|
bl GetGpuReg
|
|
adds r1, r0, 0
|
|
movs r2, 0x80
|
|
lsls r2, 8
|
|
adds r0, r2, 0
|
|
eors r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
ldr r4, _080BB07C @ =gSprites
|
|
movs r0, 0x8
|
|
ldrsh r1, [r5, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
bl DestroySprite
|
|
mov r0, sp
|
|
bl sub_80752A0
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
bl sub_8075358
|
|
movs r1, 0x14
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x1
|
|
bne _080BB050
|
|
ldr r2, _080BB080 @ =gUnknown_2023D44
|
|
ldr r0, _080BB084 @ =gBattleAnimAttacker
|
|
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
|
|
adds r2, r4
|
|
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]
|
|
_080BB050:
|
|
mov r2, r8
|
|
strh r2, [r7]
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
_080BB05A:
|
|
add sp, 0x14
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BB068: .4byte gTasks
|
|
_080BB06C: .4byte gBattle_BG1_Y
|
|
_080BB070: .4byte gUnknown_2022984
|
|
_080BB074: .4byte gUnknown_2022986
|
|
_080BB078: .4byte 0x00003f3f
|
|
_080BB07C: .4byte gSprites
|
|
_080BB080: .4byte gUnknown_2023D44
|
|
_080BB084: .4byte gBattleAnimAttacker
|
|
thumb_func_end sub_80BAF38
|
|
|
|
thumb_func_start sub_80BB088
|
|
sub_80BB088: @ 80BB088
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r4, _080BB0C8 @ =gUnknown_20399B4
|
|
movs r0, 0x18
|
|
bl AllocZeroed
|
|
str r0, [r4]
|
|
movs r2, 0
|
|
ldr r3, _080BB0CC @ =gBattleAnimArgs
|
|
_080BB09C:
|
|
ldr r1, [r4]
|
|
lsls r0, r2, 1
|
|
adds r1, 0x4
|
|
adds r1, r0
|
|
adds r0, r3
|
|
ldrh r0, [r0]
|
|
strh r0, [r1]
|
|
adds r0, r2, 0x1
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0x7
|
|
bls _080BB09C
|
|
ldr r0, _080BB0D0 @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _080BB0D4 @ =sub_80BB0D8
|
|
str r0, [r1]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BB0C8: .4byte gUnknown_20399B4
|
|
_080BB0CC: .4byte gBattleAnimArgs
|
|
_080BB0D0: .4byte gTasks
|
|
_080BB0D4: .4byte sub_80BB0D8
|
|
thumb_func_end sub_80BB088
|
|
|
|
thumb_func_start sub_80BB0D8
|
|
sub_80BB0D8: @ 80BB0D8
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r0, _080BB0F0 @ =gUnknown_20399B4
|
|
ldr r1, [r0]
|
|
movs r2, 0x8
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
bne _080BB0F8
|
|
ldr r0, _080BB0F4 @ =gBattleAnimAttacker
|
|
b _080BB0FA
|
|
.align 2, 0
|
|
_080BB0F0: .4byte gUnknown_20399B4
|
|
_080BB0F4: .4byte gBattleAnimAttacker
|
|
_080BB0F8:
|
|
ldr r0, _080BB230 @ =gBattleAnimTarget
|
|
_080BB0FA:
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
ldr r4, _080BB234 @ =gUnknown_20399B4
|
|
ldr r2, [r4]
|
|
ldrb r0, [r2]
|
|
movs r1, 0x2
|
|
eors r0, r1
|
|
strb r0, [r2, 0x1]
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080BB12A
|
|
ldr r1, [r4]
|
|
movs r2, 0xA
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
beq _080BB130
|
|
ldrb r0, [r1, 0x1]
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080BB130
|
|
_080BB12A:
|
|
ldr r1, [r4]
|
|
movs r0, 0
|
|
strh r0, [r1, 0xA]
|
|
_080BB130:
|
|
ldr r0, _080BB238 @ =gUnknown_2022984
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, _080BB23C @ =gUnknown_2022986
|
|
strh r1, [r0]
|
|
ldr r1, _080BB240 @ =0x00003f3f
|
|
movs r0, 0x48
|
|
bl SetGpuReg
|
|
ldr r1, _080BB244 @ =0x00003f3d
|
|
movs r0, 0x4A
|
|
bl SetGpuReg
|
|
movs r1, 0x80
|
|
lsls r1, 8
|
|
movs r0, 0
|
|
bl SetGpuRegBits
|
|
ldr r1, _080BB248 @ =0x00003f42
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r0, 0x1
|
|
movs r1, 0x4
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080BB18E
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
_080BB18E:
|
|
bl sub_8075290
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080BB20A
|
|
ldr r4, _080BB234 @ =gUnknown_20399B4
|
|
ldr r1, [r4]
|
|
movs r2, 0xA
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
bne _080BB20A
|
|
ldrb r0, [r1]
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x3
|
|
beq _080BB1C0
|
|
ldr r0, [r4]
|
|
ldrb r0, [r0]
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080BB20A
|
|
_080BB1C0:
|
|
ldr r0, [r4]
|
|
ldrb r0, [r0, 0x1]
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0x1
|
|
bne _080BB20A
|
|
ldr r3, _080BB24C @ =gSprites
|
|
ldr r1, _080BB250 @ =gUnknown_2023D44
|
|
ldr r0, [r4]
|
|
ldrb r0, [r0, 0x1]
|
|
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]
|
|
movs r0, 0x1
|
|
movs r1, 0x4
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
ldr r0, [r4]
|
|
strb r5, [r0, 0x2]
|
|
_080BB20A:
|
|
ldr r4, _080BB234 @ =gUnknown_20399B4
|
|
ldr r0, [r4]
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080BB25C
|
|
ldr r1, _080BB254 @ =gBattlerPartyIndexes
|
|
ldr r0, [r4]
|
|
ldrb r0, [r0]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _080BB258 @ =gEnemyParty
|
|
b _080BB26E
|
|
.align 2, 0
|
|
_080BB230: .4byte gBattleAnimTarget
|
|
_080BB234: .4byte gUnknown_20399B4
|
|
_080BB238: .4byte gUnknown_2022984
|
|
_080BB23C: .4byte gUnknown_2022986
|
|
_080BB240: .4byte 0x00003f3f
|
|
_080BB244: .4byte 0x00003f3d
|
|
_080BB248: .4byte 0x00003f42
|
|
_080BB24C: .4byte gSprites
|
|
_080BB250: .4byte gUnknown_2023D44
|
|
_080BB254: .4byte gBattlerPartyIndexes
|
|
_080BB258: .4byte gEnemyParty
|
|
_080BB25C:
|
|
ldr r1, _080BB290 @ =gBattlerPartyIndexes
|
|
ldr r0, [r4]
|
|
ldrb r0, [r0]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _080BB294 @ =gPlayerParty
|
|
_080BB26E:
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
ldr r1, [r4]
|
|
strh r0, [r1, 0x14]
|
|
ldr r0, _080BB298 @ =gTasks
|
|
lsls r1, r6, 2
|
|
adds r1, r6
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _080BB29C @ =sub_80BB2A0
|
|
str r0, [r1]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BB290: .4byte gBattlerPartyIndexes
|
|
_080BB294: .4byte gPlayerParty
|
|
_080BB298: .4byte gTasks
|
|
_080BB29C: .4byte sub_80BB2A0
|
|
thumb_func_end sub_80BB0D8
|
|
|
|
thumb_func_start sub_80BB2A0
|
|
sub_80BB2A0: @ 80BB2A0
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r0, 0
|
|
mov r8, r0
|
|
ldr r6, _080BB300 @ =gUnknown_2023D44
|
|
ldr r4, _080BB304 @ =gUnknown_20399B4
|
|
ldr r2, [r4]
|
|
ldrb r0, [r2]
|
|
adds r1, r0, r6
|
|
ldrb r1, [r1]
|
|
ldrh r2, [r2, 0x14]
|
|
bl sub_8076E34
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r2, [r4]
|
|
movs r1, 0xA
|
|
ldrsh r0, [r2, r1]
|
|
cmp r0, 0
|
|
beq _080BB2E2
|
|
ldrb r0, [r2, 0x1]
|
|
adds r1, r0, r6
|
|
ldrb r1, [r1]
|
|
ldrh r2, [r2, 0x14]
|
|
bl sub_8076E34
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
_080BB2E2:
|
|
mov r0, sp
|
|
bl sub_80752A0
|
|
ldr r0, [r4]
|
|
movs r4, 0x4
|
|
ldrsh r0, [r0, r4]
|
|
cmp r0, 0
|
|
bne _080BB30C
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080BB308 @ =gFile_graphics_battle_anims_masks_stat_tilemap_1_tilemap
|
|
bl sub_807543C
|
|
b _080BB316
|
|
.align 2, 0
|
|
_080BB300: .4byte gUnknown_2023D44
|
|
_080BB304: .4byte gUnknown_20399B4
|
|
_080BB308: .4byte gFile_graphics_battle_anims_masks_stat_tilemap_1_tilemap
|
|
_080BB30C:
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080BB354 @ =gFile_graphics_battle_anims_masks_stat_tilemap_2_tilemap
|
|
bl sub_807543C
|
|
_080BB316:
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080BB32E
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x8]
|
|
ldr r1, [sp, 0x4]
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_80730C0
|
|
_080BB32E:
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080BB358 @ =gFile_graphics_battle_anims_masks_stat_sheet
|
|
mov r2, sp
|
|
ldrh r2, [r2, 0xA]
|
|
bl sub_80753B4
|
|
ldr r0, _080BB35C @ =gUnknown_20399B4
|
|
ldr r0, [r0]
|
|
movs r1, 0x6
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0x6
|
|
bhi _080BB3C4
|
|
lsls r0, 2
|
|
ldr r1, _080BB360 @ =_080BB364
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080BB354: .4byte gFile_graphics_battle_anims_masks_stat_tilemap_2_tilemap
|
|
_080BB358: .4byte gFile_graphics_battle_anims_masks_stat_sheet
|
|
_080BB35C: .4byte gUnknown_20399B4
|
|
_080BB360: .4byte _080BB364
|
|
.align 2, 0
|
|
_080BB364:
|
|
.4byte _080BB380
|
|
.4byte _080BB388
|
|
.4byte _080BB390
|
|
.4byte _080BB398
|
|
.4byte _080BB3A0
|
|
.4byte _080BB3A8
|
|
.4byte _080BB3B0
|
|
_080BB380:
|
|
ldr r0, _080BB384 @ =gFile_graphics_battle_anims_masks_stat2_palette
|
|
b _080BB3B2
|
|
.align 2, 0
|
|
_080BB384: .4byte gFile_graphics_battle_anims_masks_stat2_palette
|
|
_080BB388:
|
|
ldr r0, _080BB38C @ =gFile_graphics_battle_anims_masks_stat1_palette
|
|
b _080BB3B2
|
|
.align 2, 0
|
|
_080BB38C: .4byte gFile_graphics_battle_anims_masks_stat1_palette
|
|
_080BB390:
|
|
ldr r0, _080BB394 @ =gFile_graphics_battle_anims_masks_stat3_palette
|
|
b _080BB3B2
|
|
.align 2, 0
|
|
_080BB394: .4byte gFile_graphics_battle_anims_masks_stat3_palette
|
|
_080BB398:
|
|
ldr r0, _080BB39C @ =gFile_graphics_battle_anims_masks_stat4_palette
|
|
b _080BB3B2
|
|
.align 2, 0
|
|
_080BB39C: .4byte gFile_graphics_battle_anims_masks_stat4_palette
|
|
_080BB3A0:
|
|
ldr r0, _080BB3A4 @ =gFile_graphics_battle_anims_masks_stat6_palette
|
|
b _080BB3B2
|
|
.align 2, 0
|
|
_080BB3A4: .4byte gFile_graphics_battle_anims_masks_stat6_palette
|
|
_080BB3A8:
|
|
ldr r0, _080BB3AC @ =gFile_graphics_battle_anims_masks_stat7_palette
|
|
b _080BB3B2
|
|
.align 2, 0
|
|
_080BB3AC: .4byte gFile_graphics_battle_anims_masks_stat7_palette
|
|
_080BB3B0:
|
|
ldr r0, _080BB3C0 @ =gFile_graphics_battle_anims_masks_stat8_palette
|
|
_080BB3B2:
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x8]
|
|
lsls r1, 4
|
|
movs r2, 0x20
|
|
bl LoadCompressedPalette
|
|
b _080BB3D2
|
|
.align 2, 0
|
|
_080BB3C0: .4byte gFile_graphics_battle_anims_masks_stat8_palette
|
|
_080BB3C4:
|
|
ldr r0, _080BB3FC @ =gFile_graphics_battle_anims_masks_stat5_palette
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x8]
|
|
lsls r1, 4
|
|
movs r2, 0x20
|
|
bl LoadCompressedPalette
|
|
_080BB3D2:
|
|
ldr r3, _080BB400 @ =gBattle_BG1_X
|
|
movs r2, 0
|
|
strh r2, [r3]
|
|
ldr r0, _080BB404 @ =gBattle_BG1_Y
|
|
strh r2, [r0]
|
|
ldr r1, _080BB408 @ =gUnknown_20399B4
|
|
ldr r0, [r1]
|
|
movs r4, 0x4
|
|
ldrsh r0, [r0, r4]
|
|
adds r4, r1, 0
|
|
cmp r0, 0x1
|
|
bne _080BB414
|
|
movs r0, 0x40
|
|
strh r0, [r3]
|
|
ldr r2, _080BB40C @ =gTasks
|
|
lsls r3, r5, 2
|
|
adds r0, r3, r5
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
ldr r1, _080BB410 @ =0x0000fffd
|
|
b _080BB420
|
|
.align 2, 0
|
|
_080BB3FC: .4byte gFile_graphics_battle_anims_masks_stat5_palette
|
|
_080BB400: .4byte gBattle_BG1_X
|
|
_080BB404: .4byte gBattle_BG1_Y
|
|
_080BB408: .4byte gUnknown_20399B4
|
|
_080BB40C: .4byte gTasks
|
|
_080BB410: .4byte 0x0000fffd
|
|
_080BB414:
|
|
ldr r2, _080BB43C @ =gTasks
|
|
lsls r3, r5, 2
|
|
adds r0, r3, r5
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
movs r1, 0x3
|
|
_080BB420:
|
|
strh r1, [r0, 0xA]
|
|
ldr r0, [r4]
|
|
movs r1, 0xC
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080BB440
|
|
adds r0, r3, r5
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
movs r1, 0xA
|
|
strh r1, [r0, 0x10]
|
|
movs r1, 0x14
|
|
b _080BB44C
|
|
.align 2, 0
|
|
_080BB43C: .4byte gTasks
|
|
_080BB440:
|
|
adds r0, r3, r5
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
movs r1, 0xD
|
|
strh r1, [r0, 0x10]
|
|
movs r1, 0x1E
|
|
_080BB44C:
|
|
strh r1, [r0, 0x12]
|
|
adds r1, r3, r5
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
strh r7, [r1, 0x8]
|
|
ldr r3, [r4]
|
|
ldrh r0, [r3, 0xA]
|
|
strh r0, [r1, 0xC]
|
|
mov r4, r8
|
|
strh r4, [r1, 0xE]
|
|
ldrb r0, [r3, 0x2]
|
|
strh r0, [r1, 0x14]
|
|
ldr r2, _080BB490 @ =gUnknown_2023D44
|
|
ldrb r0, [r3, 0x1]
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
strh r0, [r1, 0x16]
|
|
ldr r0, _080BB494 @ =sub_80BB4B8
|
|
str r0, [r1]
|
|
movs r1, 0x4
|
|
ldrsh r0, [r3, r1]
|
|
cmp r0, 0
|
|
bne _080BB498
|
|
movs r0, 0x40
|
|
negs r0, r0
|
|
bl sub_8073B08
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r0, 0xE8
|
|
bl PlaySE12WithPanning
|
|
b _080BB4AC
|
|
.align 2, 0
|
|
_080BB490: .4byte gUnknown_2023D44
|
|
_080BB494: .4byte sub_80BB4B8
|
|
_080BB498:
|
|
movs r0, 0x40
|
|
negs r0, r0
|
|
bl sub_8073B08
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r0, 0xEE
|
|
bl PlaySE12WithPanning
|
|
_080BB4AC:
|
|
add sp, 0x10
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80BB2A0
|
|
|
|
thumb_func_start sub_80BB4B8
|
|
sub_80BB4B8: @ 80BB4B8
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r2, _080BB4E4 @ =gBattle_BG1_Y
|
|
ldr r1, _080BB4E8 @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r5, r0, r1
|
|
ldrh r0, [r5, 0xA]
|
|
ldrh r1, [r2]
|
|
adds r0, r1
|
|
strh r0, [r2]
|
|
movs r0, 0x26
|
|
ldrsh r2, [r5, r0]
|
|
cmp r2, 0x1
|
|
beq _080BB52E
|
|
cmp r2, 0x1
|
|
bgt _080BB4EC
|
|
cmp r2, 0
|
|
beq _080BB4F6
|
|
b _080BB644
|
|
.align 2, 0
|
|
_080BB4E4: .4byte gBattle_BG1_Y
|
|
_080BB4E8: .4byte gTasks
|
|
_080BB4EC:
|
|
cmp r2, 0x2
|
|
beq _080BB544
|
|
cmp r2, 0x3
|
|
beq _080BB582
|
|
b _080BB644
|
|
_080BB4F6:
|
|
ldrh r0, [r5, 0x1E]
|
|
adds r1, r0, 0x1
|
|
strh r1, [r5, 0x1E]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bgt _080BB504
|
|
b _080BB644
|
|
_080BB504:
|
|
strh r2, [r5, 0x1E]
|
|
ldrh r1, [r5, 0x20]
|
|
adds r1, 0x1
|
|
strh r1, [r5, 0x20]
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r2, 0x20
|
|
ldrsh r1, [r5, r2]
|
|
movs r2, 0x10
|
|
ldrsh r0, [r5, r2]
|
|
cmp r1, r0
|
|
beq _080BB52C
|
|
b _080BB644
|
|
_080BB52C:
|
|
b _080BB57A
|
|
_080BB52E:
|
|
ldrh r0, [r5, 0x1C]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x1C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r2, 0x12
|
|
ldrsh r1, [r5, r2]
|
|
cmp r0, r1
|
|
beq _080BB542
|
|
b _080BB644
|
|
_080BB542:
|
|
b _080BB57A
|
|
_080BB544:
|
|
ldrh r0, [r5, 0x1E]
|
|
adds r1, r0, 0x1
|
|
strh r1, [r5, 0x1E]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
ble _080BB644
|
|
movs r0, 0
|
|
strh r0, [r5, 0x1E]
|
|
ldrh r1, [r5, 0x20]
|
|
subs r1, 0x1
|
|
strh r1, [r5, 0x20]
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r1, 0x20
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _080BB644
|
|
movs r0, 0
|
|
bl sub_8073128
|
|
_080BB57A:
|
|
ldrh r0, [r5, 0x26]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x26]
|
|
b _080BB644
|
|
_080BB582:
|
|
ldr r0, _080BB64C @ =gUnknown_2022984
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, _080BB650 @ =gUnknown_2022986
|
|
strh r1, [r0]
|
|
ldr r4, _080BB654 @ =0x00003f3f
|
|
movs r0, 0x48
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x4A
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080BB5B2
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
_080BB5B2:
|
|
movs r0, 0
|
|
bl GetGpuReg
|
|
adds r1, r0, 0
|
|
movs r2, 0x80
|
|
lsls r2, 8
|
|
adds r0, r2, 0
|
|
eors r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x8
|
|
ldrsh r1, [r5, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r4, _080BB658 @ =gSprites
|
|
adds r0, r4
|
|
bl DestroySprite
|
|
movs r1, 0xC
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
beq _080BB606
|
|
movs r2, 0xE
|
|
ldrsh r1, [r5, r2]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
bl DestroySprite
|
|
_080BB606:
|
|
movs r1, 0x14
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x1
|
|
bne _080BB632
|
|
movs r2, 0x16
|
|
ldrsh r0, [r5, r2]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r4
|
|
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]
|
|
_080BB632:
|
|
ldr r4, _080BB65C @ =gUnknown_20399B4
|
|
ldr r0, [r4]
|
|
bl Free
|
|
movs r0, 0
|
|
str r0, [r4]
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
_080BB644:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BB64C: .4byte gUnknown_2022984
|
|
_080BB650: .4byte gUnknown_2022986
|
|
_080BB654: .4byte 0x00003f3f
|
|
_080BB658: .4byte gSprites
|
|
_080BB65C: .4byte gUnknown_20399B4
|
|
thumb_func_end sub_80BB4B8
|
|
|
|
thumb_func_start sub_80BB660
|
|
sub_80BB660: @ 80BB660
|
|
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_8075CB8
|
|
adds r6, r0, 0
|
|
movs r1, 0
|
|
bl sub_80BB790
|
|
ldr r0, _080BB6C0 @ =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_8075BE8
|
|
adds r6, r0, 0
|
|
ldr r1, _080BB6C4 @ =0x0000ffff
|
|
ands r6, r1
|
|
adds r0, r6, 0
|
|
bl sub_80BB790
|
|
strh r6, [r4, 0x26]
|
|
strh r5, [r4, 0x8]
|
|
strh r5, [r4, 0xA]
|
|
ldr r0, _080BB6C8 @ =sub_80BB6CC
|
|
str r0, [r4]
|
|
add sp, 0xC
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BB6C0: .4byte gTasks
|
|
_080BB6C4: .4byte 0x0000ffff
|
|
_080BB6C8: .4byte sub_80BB6CC
|
|
thumb_func_end sub_80BB660
|
|
|
|
thumb_func_start sub_80BB6CC
|
|
sub_80BB6CC: @ 80BB6CC
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _080BB6F0 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
cmp r1, 0x1
|
|
beq _080BB710
|
|
cmp r1, 0x1
|
|
bgt _080BB6F4
|
|
cmp r1, 0
|
|
beq _080BB6FA
|
|
b _080BB78A
|
|
.align 2, 0
|
|
_080BB6F0: .4byte gTasks
|
|
_080BB6F4:
|
|
cmp r1, 0x2
|
|
beq _080BB784
|
|
b _080BB78A
|
|
_080BB6FA:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x6
|
|
ble _080BB78A
|
|
strh r1, [r4, 0xA]
|
|
movs r0, 0x10
|
|
strh r0, [r4, 0xC]
|
|
b _080BB778
|
|
_080BB710:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080BB78A
|
|
movs r0, 0
|
|
strh r0, [r4, 0xA]
|
|
ldrh r0, [r4, 0xC]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
movs r5, 0
|
|
movs r6, 0x1
|
|
_080BB72C:
|
|
movs r1, 0x26
|
|
ldrsh r0, [r4, r1]
|
|
asrs r0, r5
|
|
ands r0, r6
|
|
cmp r0, 0
|
|
beq _080BB746
|
|
lsls r0, r5, 20
|
|
lsrs r0, 16
|
|
ldrb r2, [r4, 0xC]
|
|
movs r1, 0x10
|
|
ldr r3, _080BB780 @ =0x0000ffff
|
|
bl BlendPalette
|
|
_080BB746:
|
|
movs r1, 0x24
|
|
ldrsh r0, [r4, r1]
|
|
asrs r0, r5
|
|
ands r0, r6
|
|
cmp r0, 0
|
|
beq _080BB766
|
|
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
|
|
_080BB766:
|
|
adds r0, r5, 0x1
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
cmp r5, 0xF
|
|
bls _080BB72C
|
|
movs r1, 0xC
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080BB78A
|
|
_080BB778:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080BB78A
|
|
.align 2, 0
|
|
_080BB780: .4byte 0x0000ffff
|
|
_080BB784:
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
_080BB78A:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80BB6CC
|
|
|
|
thumb_func_start sub_80BB790
|
|
sub_80BB790: @ 80BB790
|
|
push {r4-r6,lr}
|
|
adds r3, r0, 0
|
|
lsls r1, 16
|
|
lsrs r6, r1, 16
|
|
movs r2, 0
|
|
_080BB79A:
|
|
movs r0, 0x1
|
|
ands r0, r3
|
|
lsrs r4, r3, 1
|
|
adds r5, r2, 0x1
|
|
cmp r0, 0
|
|
beq _080BB7C6
|
|
lsls r0, r2, 20
|
|
lsrs r2, r0, 16
|
|
adds r0, r2, 0
|
|
adds r0, 0x10
|
|
cmp r2, r0
|
|
bge _080BB7C6
|
|
ldr r1, _080BB7D8 @ =gPlttBufferFaded
|
|
adds r3, r0, 0
|
|
_080BB7B6:
|
|
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 _080BB7B6
|
|
_080BB7C6:
|
|
adds r3, r4, 0
|
|
lsls r0, r5, 16
|
|
lsrs r2, r0, 16
|
|
cmp r2, 0x1F
|
|
bls _080BB79A
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BB7D8: .4byte gPlttBufferFaded
|
|
thumb_func_end sub_80BB790
|
|
|
|
thumb_func_start sub_80BB7DC
|
|
sub_80BB7DC: @ 80BB7DC
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
movs r4, 0
|
|
movs r2, 0
|
|
ldr r0, _080BB824 @ =gBattleAnimAttacker
|
|
ldrb r3, [r0]
|
|
movs r5, 0x1
|
|
_080BB7EC:
|
|
cmp r3, r2
|
|
beq _080BB7FA
|
|
adds r1, r2, 0
|
|
adds r1, 0x10
|
|
adds r0, r5, 0
|
|
lsls r0, r1
|
|
orrs r4, r0
|
|
_080BB7FA:
|
|
adds r2, 0x1
|
|
cmp r2, 0x3
|
|
bls _080BB7EC
|
|
movs r2, 0x5
|
|
ldr r0, _080BB828 @ =gBattleAnimArgs
|
|
adds r1, r0, 0
|
|
adds r1, 0x8
|
|
_080BB808:
|
|
ldrh r0, [r1]
|
|
strh r0, [r1, 0x2]
|
|
subs r1, 0x2
|
|
subs r2, 0x1
|
|
cmp r2, 0
|
|
bne _080BB808
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl sub_80BAA4C
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BB824: .4byte gBattleAnimAttacker
|
|
_080BB828: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80BB7DC
|
|
|
|
thumb_func_start sub_80BB82C
|
|
sub_80BB82C: @ 80BB82C
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
movs r0, 0
|
|
bl sub_8075458
|
|
ldr r0, _080BB894 @ =sub_80BB8A4
|
|
movs r1, 0x5
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r4, _080BB898 @ =gBattleAnimArgs
|
|
movs r1, 0x4
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080BB868
|
|
ldr r0, _080BB89C @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080BB868
|
|
ldrh r0, [r4]
|
|
negs r0, r0
|
|
strh r0, [r4]
|
|
ldrh r0, [r4, 0x2]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x2]
|
|
_080BB868:
|
|
ldr r0, _080BB8A0 @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r2, _080BB898 @ =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
|
|
_080BB894: .4byte sub_80BB8A4
|
|
_080BB898: .4byte gBattleAnimArgs
|
|
_080BB89C: .4byte gBattleAnimAttacker
|
|
_080BB8A0: .4byte gTasks
|
|
thumb_func_end sub_80BB82C
|
|
|
|
thumb_func_start sub_80BB8A4
|
|
sub_80BB8A4: @ 80BB8A4
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r0, _080BB910 @ =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, _080BB914 @ =gBattle_BG3_X
|
|
lsls r0, r3, 16
|
|
asrs r0, 24
|
|
ldrh r4, [r6]
|
|
adds r0, r4
|
|
strh r0, [r6]
|
|
ldr r4, _080BB918 @ =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, _080BB91C @ =gBattleAnimArgs
|
|
movs r3, 0xE
|
|
ldrsh r2, [r0, r3]
|
|
movs r7, 0xE
|
|
ldrsh r0, [r1, r7]
|
|
cmp r2, r0
|
|
bne _080BB90A
|
|
mov r0, r12
|
|
strh r0, [r6]
|
|
strh r0, [r4]
|
|
movs r0, 0x1
|
|
bl sub_8075458
|
|
adds r0, r5, 0
|
|
bl DestroyTask
|
|
_080BB90A:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BB910: .4byte gTasks
|
|
_080BB914: .4byte gBattle_BG3_X
|
|
_080BB918: .4byte gBattle_BG3_Y
|
|
_080BB91C: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80BB8A4
|
|
|
|
thumb_func_start sub_80BB920
|
|
sub_80BB920: @ 80BB920
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r0, _080BB944 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
ldr r1, _080BB948 @ =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
|
|
_080BB944: .4byte gBattleAnimAttacker
|
|
_080BB948: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80BB920
|
|
|
|
thumb_func_start sub_80BB94C
|
|
sub_80BB94C: @ 80BB94C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r0, _080BB970 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
ldr r1, _080BB974 @ =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
|
|
_080BB970: .4byte gBattleAnimTarget
|
|
_080BB974: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80BB94C
|
|
|
|
thumb_func_start sub_80BB978
|
|
sub_80BB978: @ 80BB978
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
ldr r5, _080BB9A4 @ =gBattleAnimArgs
|
|
movs r4, 0
|
|
ldr r0, _080BB9A8 @ =gBattleAnimAttacker
|
|
ldrb r2, [r0]
|
|
movs r0, 0x2
|
|
ldr r1, _080BB9AC @ =gBattleAnimTarget
|
|
eors r0, r2
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bne _080BB994
|
|
movs r4, 0x1
|
|
_080BB994:
|
|
strh r4, [r5, 0xE]
|
|
adds r0, r3, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BB9A4: .4byte gBattleAnimArgs
|
|
_080BB9A8: .4byte gBattleAnimAttacker
|
|
_080BB9AC: .4byte gBattleAnimTarget
|
|
thumb_func_end sub_80BB978
|
|
|
|
thumb_func_start sub_80BB9B0
|
|
sub_80BB9B0: @ 80BB9B0
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r4, 0
|
|
ldr r6, _080BBA10 @ =gSprites
|
|
_080BB9BA:
|
|
ldr r0, _080BBA14 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
beq _080BB9F8
|
|
lsls r0, r4, 24
|
|
lsrs r0, 24
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080BB9F8
|
|
ldr r0, _080BBA18 @ =gUnknown_2023D44
|
|
adds r0, r4, r0
|
|
ldrb r0, [r0]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r6
|
|
ldr r1, _080BBA1C @ =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]
|
|
_080BB9F8:
|
|
adds r0, r4, 0x1
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
cmp r4, 0x3
|
|
bls _080BB9BA
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BBA10: .4byte gSprites
|
|
_080BBA14: .4byte gBattleAnimAttacker
|
|
_080BBA18: .4byte gUnknown_2023D44
|
|
_080BBA1C: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80BB9B0
|
|
|
|
thumb_func_start sub_80BBA20
|
|
sub_80BBA20: @ 80BBA20
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x24
|
|
ldr r1, [sp, 0x44]
|
|
ldr r4, [sp, 0x48]
|
|
ldr r5, [sp, 0x4C]
|
|
ldr r6, [sp, 0x50]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
str r2, [sp, 0x14]
|
|
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, 0x18]
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
str r5, [sp, 0x1C]
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
mov r10, r6
|
|
movs r0, 0
|
|
str r0, [sp, 0x20]
|
|
movs r0, 0x2
|
|
adds r6, r7, 0
|
|
eors r6, r0
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080BBA82
|
|
mov r1, r8
|
|
cmp r1, 0
|
|
beq _080BBA86
|
|
adds r0, r6, 0
|
|
bl sub_8072DF0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080BBA86
|
|
_080BBA82:
|
|
movs r2, 0
|
|
mov r8, r2
|
|
_080BBA86:
|
|
ldr r0, _080BBB20 @ =gUnknown_2022984
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, _080BBB24 @ =gUnknown_2022986
|
|
strh r1, [r0]
|
|
ldr r1, _080BBB28 @ =0x00003f3f
|
|
movs r0, 0x48
|
|
bl SetGpuReg
|
|
ldr r1, _080BBB2C @ =0x00003f3d
|
|
movs r0, 0x4A
|
|
bl SetGpuReg
|
|
movs r1, 0x80
|
|
lsls r1, 8
|
|
movs r0, 0
|
|
bl SetGpuRegBits
|
|
ldr r1, _080BBB30 @ =0x00003f42
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r0, 0xA
|
|
bl GetGpuReg
|
|
add r4, sp, 0x10
|
|
strh r0, [r4]
|
|
ldrb r1, [r4]
|
|
movs r0, 0x4
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r4]
|
|
mov r2, sp
|
|
adds r2, 0x11
|
|
ldrb r1, [r2]
|
|
movs r0, 0x3F
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
ldrb r0, [r2]
|
|
movs r1, 0x20
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080BBAFC
|
|
ldrb r0, [r4]
|
|
movs r1, 0xD
|
|
negs r1, r1
|
|
ands r1, r0
|
|
movs r0, 0x4
|
|
orrs r1, r0
|
|
strb r1, [r4]
|
|
_080BBAFC:
|
|
ldrh r1, [r4]
|
|
movs r0, 0xA
|
|
bl SetGpuReg
|
|
adds r0, r7, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080BBB3C
|
|
ldr r1, _080BBB34 @ =gBattlerPartyIndexes
|
|
lsls r0, r7, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _080BBB38 @ =gEnemyParty
|
|
b _080BBB4A
|
|
.align 2, 0
|
|
_080BBB20: .4byte gUnknown_2022984
|
|
_080BBB24: .4byte gUnknown_2022986
|
|
_080BBB28: .4byte 0x00003f3f
|
|
_080BBB2C: .4byte 0x00003f3d
|
|
_080BBB30: .4byte 0x00003f42
|
|
_080BBB34: .4byte gBattlerPartyIndexes
|
|
_080BBB38: .4byte gEnemyParty
|
|
_080BBB3C:
|
|
ldr r1, _080BBC10 @ =gBattlerPartyIndexes
|
|
lsls r0, r7, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _080BBC14 @ =gPlayerParty
|
|
_080BBB4A:
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
ldr r5, _080BBC18 @ =gUnknown_2023D44
|
|
adds r0, r7, r5
|
|
ldrb r1, [r0]
|
|
adds r0, r7, 0
|
|
adds r2, r4, 0
|
|
bl sub_8076E34
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
beq _080BBB80
|
|
adds r0, r6, r5
|
|
ldrb r1, [r0]
|
|
adds r0, r6, 0
|
|
adds r2, r4, 0
|
|
bl sub_8076E34
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x20]
|
|
_080BBB80:
|
|
mov r0, sp
|
|
bl sub_80752A0
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, [sp, 0x58]
|
|
bl sub_807543C
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080BBBA8
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x8]
|
|
ldr r1, [sp, 0x4]
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_80730C0
|
|
_080BBBA8:
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
mov r1, sp
|
|
ldrh r2, [r1, 0xA]
|
|
ldr r1, [sp, 0x54]
|
|
bl sub_80753B4
|
|
mov r0, sp
|
|
ldrb r1, [r0, 0x8]
|
|
lsls r1, 4
|
|
ldr r0, [sp, 0x5C]
|
|
movs r2, 0x20
|
|
bl LoadCompressedPalette
|
|
ldr r0, _080BBC1C @ =gBattle_BG1_X
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, _080BBC20 @ =gBattle_BG1_Y
|
|
strh r1, [r0]
|
|
ldr r1, _080BBC24 @ =gTasks
|
|
mov r2, r9
|
|
lsls r0, r2, 2
|
|
add r0, r9
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
mov r1, sp
|
|
ldrh r1, [r1, 0x14]
|
|
strh r1, [r0, 0xA]
|
|
mov r2, sp
|
|
ldrh r2, [r2, 0x18]
|
|
strh r2, [r0, 0x10]
|
|
mov r1, r10
|
|
strh r1, [r0, 0x12]
|
|
mov r2, sp
|
|
ldrh r2, [r2, 0x1C]
|
|
strh r2, [r0, 0x14]
|
|
strh r7, [r0, 0x8]
|
|
mov r1, r8
|
|
strh r1, [r0, 0xC]
|
|
mov r2, sp
|
|
ldrh r2, [r2, 0x20]
|
|
strh r2, [r0, 0xE]
|
|
ldr r1, _080BBC28 @ =sub_80BBC2C
|
|
str r1, [r0]
|
|
add sp, 0x24
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BBC10: .4byte gBattlerPartyIndexes
|
|
_080BBC14: .4byte gPlayerParty
|
|
_080BBC18: .4byte gUnknown_2023D44
|
|
_080BBC1C: .4byte gBattle_BG1_X
|
|
_080BBC20: .4byte gBattle_BG1_Y
|
|
_080BBC24: .4byte gTasks
|
|
_080BBC28: .4byte sub_80BBC2C
|
|
thumb_func_end sub_80BBA20
|
|
|
|
thumb_func_start sub_80BBC2C
|
|
sub_80BBC2C: @ 80BBC2C
|
|
push {r4-r6,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r1, _080BBC68 @ =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 _080BBC4A
|
|
negs r2, r2
|
|
_080BBC4A:
|
|
ldrh r0, [r3, 0x22]
|
|
adds r4, r0, r2
|
|
strh r4, [r3, 0x22]
|
|
movs r1, 0xA
|
|
ldrsh r0, [r3, r1]
|
|
cmp r0, 0
|
|
bge _080BBC70
|
|
ldr r2, _080BBC6C @ =gBattle_BG1_Y
|
|
lsls r1, r4, 16
|
|
asrs r1, 24
|
|
ldrh r0, [r2]
|
|
subs r0, r1
|
|
strh r0, [r2]
|
|
b _080BBC7C
|
|
.align 2, 0
|
|
_080BBC68: .4byte gTasks
|
|
_080BBC6C: .4byte gBattle_BG1_Y
|
|
_080BBC70:
|
|
ldr r1, _080BBCA0 @ =gBattle_BG1_Y
|
|
lsls r0, r4, 16
|
|
asrs r0, 24
|
|
ldrh r2, [r1]
|
|
adds r0, r2
|
|
strh r0, [r1]
|
|
_080BBC7C:
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r5, r0, r5
|
|
ldrh r1, [r5, 0x22]
|
|
movs r0, 0xFF
|
|
ands r0, r1
|
|
movs r2, 0
|
|
strh r0, [r5, 0x22]
|
|
movs r3, 0x26
|
|
ldrsh r0, [r5, r3]
|
|
cmp r0, 0x1
|
|
beq _080BBCE6
|
|
cmp r0, 0x1
|
|
bgt _080BBCA4
|
|
cmp r0, 0
|
|
beq _080BBCAA
|
|
b _080BBDD8
|
|
.align 2, 0
|
|
_080BBCA0: .4byte gBattle_BG1_Y
|
|
_080BBCA4:
|
|
cmp r0, 0x2
|
|
beq _080BBD00
|
|
b _080BBDD8
|
|
_080BBCAA:
|
|
ldrh r0, [r5, 0x1E]
|
|
adds r1, r0, 0x1
|
|
strh r1, [r5, 0x1E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r3, 0x14
|
|
ldrsh r1, [r5, r3]
|
|
cmp r0, r1
|
|
bge _080BBCBE
|
|
b _080BBDD8
|
|
_080BBCBE:
|
|
strh r2, [r5, 0x1E]
|
|
ldrh r1, [r5, 0x20]
|
|
adds r1, 0x1
|
|
strh r1, [r5, 0x20]
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r0, 0x20
|
|
ldrsh r1, [r5, r0]
|
|
movs r2, 0x10
|
|
ldrsh r0, [r5, r2]
|
|
cmp r1, r0
|
|
bne _080BBDD8
|
|
b _080BBCF8
|
|
_080BBCE6:
|
|
ldrh r0, [r5, 0x1C]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x1C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r3, 0x12
|
|
ldrsh r1, [r5, r3]
|
|
cmp r0, r1
|
|
bne _080BBDD8
|
|
_080BBCF8:
|
|
ldrh r0, [r5, 0x26]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x26]
|
|
b _080BBDD8
|
|
_080BBD00:
|
|
ldrh r0, [r5, 0x1E]
|
|
adds r1, r0, 0x1
|
|
strh r1, [r5, 0x1E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r3, 0x14
|
|
ldrsh r1, [r5, r3]
|
|
cmp r0, r1
|
|
blt _080BBDD8
|
|
strh r2, [r5, 0x1E]
|
|
ldrh r1, [r5, 0x20]
|
|
subs r1, 0x1
|
|
strh r1, [r5, 0x20]
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r0, 0x20
|
|
ldrsh r4, [r5, r0]
|
|
cmp r4, 0
|
|
bne _080BBDD8
|
|
movs r0, 0
|
|
bl sub_8073128
|
|
ldr r0, _080BBDE0 @ =gUnknown_2022984
|
|
strh r4, [r0]
|
|
ldr r0, _080BBDE4 @ =gUnknown_2022986
|
|
strh r4, [r0]
|
|
ldr r4, _080BBDE8 @ =0x00003f3f
|
|
movs r0, 0x48
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x4A
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080BBD7E
|
|
movs r0, 0xA
|
|
bl GetGpuReg
|
|
mov r1, sp
|
|
strh r0, [r1]
|
|
mov r2, sp
|
|
ldrb r1, [r2]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
mov r0, sp
|
|
ldrh r1, [r0]
|
|
movs r0, 0xA
|
|
bl SetGpuReg
|
|
_080BBD7E:
|
|
movs r0, 0
|
|
bl GetGpuReg
|
|
adds r1, r0, 0
|
|
movs r2, 0x80
|
|
lsls r2, 8
|
|
adds r0, r2, 0
|
|
eors r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r3, 0x8
|
|
ldrsh r1, [r5, r3]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r4, _080BBDEC @ =gSprites
|
|
adds r0, r4
|
|
bl DestroySprite
|
|
movs r1, 0xC
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
beq _080BBDD2
|
|
movs r2, 0xE
|
|
ldrsh r1, [r5, r2]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
bl DestroySprite
|
|
_080BBDD2:
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
_080BBDD8:
|
|
add sp, 0x4
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BBDE0: .4byte gUnknown_2022984
|
|
_080BBDE4: .4byte gUnknown_2022986
|
|
_080BBDE8: .4byte 0x00003f3f
|
|
_080BBDEC: .4byte gSprites
|
|
thumb_func_end sub_80BBC2C
|
|
|
|
thumb_func_start sub_80BBDF0
|
|
sub_80BBDF0: @ 80BBDF0
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _080BBE08 @ =gBattleAnimArgs
|
|
ldr r1, _080BBE0C @ =gUnknown_2022B50
|
|
ldrb r1, [r1]
|
|
strh r1, [r2]
|
|
bl DestroyAnimVisualTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BBE08: .4byte gBattleAnimArgs
|
|
_080BBE0C: .4byte gUnknown_2022B50
|
|
thumb_func_end sub_80BBDF0
|
|
|
|
thumb_func_start sub_80BBE10
|
|
sub_80BBE10: @ 80BBE10
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r0, 0x80
|
|
lsls r0, 6
|
|
bl AllocZeroed
|
|
ldr r1, _080BBE38 @ =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
movs r2, 0xBE
|
|
lsls r2, 1
|
|
adds r1, r2
|
|
str r0, [r1]
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BBE38: .4byte gMonSpritesGfxPtr
|
|
thumb_func_end sub_80BBE10
|
|
|
|
thumb_func_start sub_80BBE3C
|
|
sub_80BBE3C: @ 80BBE3C
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r6, _080BBE68 @ =gMonSpritesGfxPtr
|
|
ldr r0, [r6]
|
|
movs r5, 0xBE
|
|
lsls r5, 1
|
|
adds r0, r5
|
|
ldr r0, [r0]
|
|
bl Free
|
|
ldr r0, [r6]
|
|
adds r0, r5
|
|
movs r1, 0
|
|
str r1, [r0]
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BBE68: .4byte gMonSpritesGfxPtr
|
|
thumb_func_end sub_80BBE3C
|
|
|
|
thumb_func_start sub_80BBE6C
|
|
sub_80BBE6C: @ 80BBE6C
|
|
push {r4,r5,lr}
|
|
sub sp, 0xC
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r4, 0
|
|
ldr r0, _080BBEAC @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080BBEB0
|
|
str r4, [sp]
|
|
str r4, [sp, 0x4]
|
|
str r4, [sp, 0x8]
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_8075BE8
|
|
adds r1, r0, 0
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080BBEC8
|
|
movs r2, 0x1
|
|
_080BBE9E:
|
|
lsrs r1, 1
|
|
adds r4, 0x1
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _080BBE9E
|
|
b _080BBEC8
|
|
.align 2, 0
|
|
_080BBEAC: .4byte gBattleAnimArgs
|
|
_080BBEB0:
|
|
cmp r0, 0x1
|
|
bne _080BBEBC
|
|
ldr r0, _080BBEB8 @ =gBattleAnimAttacker
|
|
b _080BBEC2
|
|
.align 2, 0
|
|
_080BBEB8: .4byte gBattleAnimAttacker
|
|
_080BBEBC:
|
|
cmp r0, 0x2
|
|
bne _080BBEC8
|
|
ldr r0, _080BBEF8 @ =gBattleAnimTarget
|
|
_080BBEC2:
|
|
ldrb r0, [r0]
|
|
adds r4, r0, 0
|
|
adds r4, 0x10
|
|
_080BBEC8:
|
|
ldr r0, _080BBEFC @ =gMonSpritesGfxPtr
|
|
ldr r1, [r0]
|
|
ldr r0, _080BBF00 @ =gBattleAnimArgs
|
|
movs r2, 0x2
|
|
ldrsh r0, [r0, r2]
|
|
movs r2, 0xBE
|
|
lsls r2, 1
|
|
adds r1, r2
|
|
ldr r1, [r1]
|
|
lsls r0, 5
|
|
adds r0, r1
|
|
lsls r1, r4, 5
|
|
ldr r2, _080BBF04 @ =gPlttBufferUnfaded
|
|
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
|
|
_080BBEF8: .4byte gBattleAnimTarget
|
|
_080BBEFC: .4byte gMonSpritesGfxPtr
|
|
_080BBF00: .4byte gBattleAnimArgs
|
|
_080BBF04: .4byte gPlttBufferUnfaded
|
|
thumb_func_end sub_80BBE6C
|
|
|
|
thumb_func_start sub_80BBF08
|
|
sub_80BBF08: @ 80BBF08
|
|
push {r4,r5,lr}
|
|
sub sp, 0xC
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r4, 0
|
|
ldr r0, _080BBF48 @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080BBF4C
|
|
str r4, [sp]
|
|
str r4, [sp, 0x4]
|
|
str r4, [sp, 0x8]
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_8075BE8
|
|
adds r1, r0, 0
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080BBF64
|
|
movs r2, 0x1
|
|
_080BBF3A:
|
|
lsrs r1, 1
|
|
adds r4, 0x1
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _080BBF3A
|
|
b _080BBF64
|
|
.align 2, 0
|
|
_080BBF48: .4byte gBattleAnimArgs
|
|
_080BBF4C:
|
|
cmp r0, 0x1
|
|
bne _080BBF58
|
|
ldr r0, _080BBF54 @ =gBattleAnimAttacker
|
|
b _080BBF5E
|
|
.align 2, 0
|
|
_080BBF54: .4byte gBattleAnimAttacker
|
|
_080BBF58:
|
|
cmp r0, 0x2
|
|
bne _080BBF64
|
|
ldr r0, _080BBF94 @ =gBattleAnimTarget
|
|
_080BBF5E:
|
|
ldrb r0, [r0]
|
|
adds r4, r0, 0
|
|
adds r4, 0x10
|
|
_080BBF64:
|
|
lsls r0, r4, 5
|
|
ldr r1, _080BBF98 @ =gPlttBufferUnfaded
|
|
adds r0, r1
|
|
ldr r1, _080BBF9C @ =gMonSpritesGfxPtr
|
|
ldr r2, [r1]
|
|
ldr r1, _080BBFA0 @ =gBattleAnimArgs
|
|
movs r3, 0x2
|
|
ldrsh r1, [r1, r3]
|
|
movs r3, 0xBE
|
|
lsls r3, 1
|
|
adds r2, r3
|
|
ldr r2, [r2]
|
|
lsls r1, 5
|
|
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
|
|
_080BBF94: .4byte gBattleAnimTarget
|
|
_080BBF98: .4byte gPlttBufferUnfaded
|
|
_080BBF9C: .4byte gMonSpritesGfxPtr
|
|
_080BBFA0: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80BBF08
|
|
|
|
thumb_func_start sub_80BBFA4
|
|
sub_80BBFA4: @ 80BBFA4
|
|
push {r4,r5,lr}
|
|
sub sp, 0xC
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r4, 0
|
|
ldr r0, _080BBFE4 @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080BBFE8
|
|
str r4, [sp]
|
|
str r4, [sp, 0x4]
|
|
str r4, [sp, 0x8]
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_8075BE8
|
|
adds r1, r0, 0
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080BC000
|
|
movs r2, 0x1
|
|
_080BBFD6:
|
|
lsrs r1, 1
|
|
adds r4, 0x1
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _080BBFD6
|
|
b _080BC000
|
|
.align 2, 0
|
|
_080BBFE4: .4byte gBattleAnimArgs
|
|
_080BBFE8:
|
|
cmp r0, 0x1
|
|
bne _080BBFF4
|
|
ldr r0, _080BBFF0 @ =gBattleAnimAttacker
|
|
b _080BBFFA
|
|
.align 2, 0
|
|
_080BBFF0: .4byte gBattleAnimAttacker
|
|
_080BBFF4:
|
|
cmp r0, 0x2
|
|
bne _080BC000
|
|
ldr r0, _080BC020 @ =gBattleAnimTarget
|
|
_080BBFFA:
|
|
ldrb r0, [r0]
|
|
adds r4, r0, 0
|
|
adds r4, 0x10
|
|
_080BC000:
|
|
lsls r1, r4, 5
|
|
ldr r0, _080BC024 @ =gPlttBufferUnfaded
|
|
adds r0, r1, r0
|
|
ldr r2, _080BC028 @ =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
|
|
_080BC020: .4byte gBattleAnimTarget
|
|
_080BC024: .4byte gPlttBufferUnfaded
|
|
_080BC028: .4byte gPlttBufferFaded
|
|
thumb_func_end sub_80BBFA4
|
|
|
|
thumb_func_start sub_80BC02C
|
|
sub_80BC02C: @ 80BC02C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _080BC04C
|
|
ldr r1, _080BC048 @ =gBattleAnimArgs
|
|
movs r0, 0x1
|
|
strh r0, [r1, 0xE]
|
|
b _080BC050
|
|
.align 2, 0
|
|
_080BC048: .4byte gBattleAnimArgs
|
|
_080BC04C:
|
|
ldr r0, _080BC05C @ =gBattleAnimArgs
|
|
strh r1, [r0, 0xE]
|
|
_080BC050:
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BC05C: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80BC02C
|
|
|
|
thumb_func_start sub_80BC060
|
|
sub_80BC060: @ 80BC060
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _080BC080 @ =gBattleAnimAttacker
|
|
ldr r1, _080BC084 @ =gBattlerTarget
|
|
ldrb r1, [r1]
|
|
strb r1, [r2]
|
|
ldr r2, _080BC088 @ =gBattleAnimTarget
|
|
ldr r1, _080BC08C @ =gUnknown_2023D6E
|
|
ldrb r1, [r1]
|
|
strb r1, [r2]
|
|
bl DestroyAnimVisualTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BC080: .4byte gBattleAnimAttacker
|
|
_080BC084: .4byte gBattlerTarget
|
|
_080BC088: .4byte gBattleAnimTarget
|
|
_080BC08C: .4byte gUnknown_2023D6E
|
|
thumb_func_end sub_80BC060
|
|
|
|
thumb_func_start sub_80BC090
|
|
sub_80BC090: @ 80BC090
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r0, _080BC0B8 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
adds r4, r0, 0
|
|
ldr r0, _080BC0BC @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r4, 24
|
|
lsls r0, 24
|
|
cmp r4, r0
|
|
bne _080BC0C4
|
|
ldr r1, _080BC0C0 @ =gBattleAnimArgs
|
|
movs r0, 0x1
|
|
b _080BC0C8
|
|
.align 2, 0
|
|
_080BC0B8: .4byte gBattleAnimAttacker
|
|
_080BC0BC: .4byte gBattleAnimTarget
|
|
_080BC0C0: .4byte gBattleAnimArgs
|
|
_080BC0C4:
|
|
ldr r1, _080BC0D8 @ =gBattleAnimArgs
|
|
movs r0, 0
|
|
_080BC0C8:
|
|
strh r0, [r1, 0xE]
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BC0D8: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80BC090
|
|
|
|
thumb_func_start sub_80BC0DC
|
|
sub_80BC0DC: @ 80BC0DC
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _080BC0F4 @ =gBattleAnimTarget
|
|
ldr r1, _080BC0F8 @ =gBattlerTarget
|
|
ldrb r1, [r1]
|
|
strb r1, [r2]
|
|
bl DestroyAnimVisualTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BC0F4: .4byte gBattleAnimTarget
|
|
_080BC0F8: .4byte gBattlerTarget
|
|
thumb_func_end sub_80BC0DC
|
|
|
|
thumb_func_start sub_80BC0FC
|
|
sub_80BC0FC: @ 80BC0FC
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _080BC11C @ =gBattleAnimAttacker
|
|
ldr r1, _080BC120 @ =sBattler_AI
|
|
ldrb r1, [r1]
|
|
strb r1, [r2]
|
|
ldr r2, _080BC124 @ =gBattleAnimTarget
|
|
ldr r1, _080BC128 @ =gUnknown_2023D6E
|
|
ldrb r1, [r1]
|
|
strb r1, [r2]
|
|
bl DestroyAnimVisualTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BC11C: .4byte gBattleAnimAttacker
|
|
_080BC120: .4byte sBattler_AI
|
|
_080BC124: .4byte gBattleAnimTarget
|
|
_080BC128: .4byte gUnknown_2023D6E
|
|
thumb_func_end sub_80BC0FC
|
|
|
|
thumb_func_start sub_80BC12C
|
|
sub_80BC12C: @ 80BC12C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl sub_8073788
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080BC144
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
b _080BC180
|
|
_080BC144:
|
|
ldr r0, _080BC188 @ =gTasks
|
|
lsls r3, r4, 2
|
|
adds r3, r4
|
|
lsls r3, 3
|
|
adds r3, r0
|
|
ldr r0, _080BC18C @ =gUnknown_2024018
|
|
ldr r4, [r0]
|
|
ldr r2, _080BC190 @ =gBattleAnimAttacker
|
|
ldrb r0, [r2]
|
|
ldr r1, [r4]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
lsls r0, 31
|
|
lsrs r0, 31
|
|
strh r0, [r3, 0x8]
|
|
ldrb r1, [r2]
|
|
ldr r0, [r4]
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
movs r2, 0x1
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
ldr r0, _080BC194 @ =sub_80BC19C
|
|
str r0, [r3]
|
|
ldr r1, _080BC198 @ =gUnknown_2037EE2
|
|
ldrb r0, [r1]
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
_080BC180:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BC188: .4byte gTasks
|
|
_080BC18C: .4byte gUnknown_2024018
|
|
_080BC190: .4byte gBattleAnimAttacker
|
|
_080BC194: .4byte sub_80BC19C
|
|
_080BC198: .4byte gUnknown_2037EE2
|
|
thumb_func_end sub_80BC12C
|
|
|
|
thumb_func_start sub_80BC19C
|
|
sub_80BC19C: @ 80BC19C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _080BC1E8 @ =gBattleAnimArgs
|
|
movs r2, 0xE
|
|
ldrsh r1, [r0, r2]
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
cmp r1, r0
|
|
bne _080BC1E0
|
|
ldr r0, _080BC1EC @ =gUnknown_2024018
|
|
ldr r1, [r0]
|
|
ldr r0, _080BC1F0 @ =gBattleAnimAttacker
|
|
ldrb r3, [r0]
|
|
ldr r0, [r1]
|
|
lsls r3, 2
|
|
adds r3, r0
|
|
ldr r1, _080BC1F4 @ =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
|
|
_080BC1E0:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BC1E8: .4byte gBattleAnimArgs
|
|
_080BC1EC: .4byte gUnknown_2024018
|
|
_080BC1F0: .4byte gBattleAnimAttacker
|
|
_080BC1F4: .4byte gTasks
|
|
thumb_func_end sub_80BC19C
|
|
|
|
thumb_func_start SetAnimBgAttribute
|
|
SetAnimBgAttribute: @ 80BC1F8
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
lsls r2, 24
|
|
lsrs r4, r2, 24
|
|
cmp r6, 0x3
|
|
bls _080BC20C
|
|
b _080BC2FE
|
|
_080BC20C:
|
|
ldr r0, _080BC228 @ =gUnknown_83E7CCA
|
|
adds r0, r6, r0
|
|
ldrb r0, [r0]
|
|
bl GetGpuReg
|
|
ldr r1, _080BC22C @ =gUnknown_20399B8
|
|
strh r0, [r1]
|
|
cmp r5, 0x6
|
|
bhi _080BC2F0
|
|
lsls r0, r5, 2
|
|
ldr r1, _080BC230 @ =_080BC234
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080BC228: .4byte gUnknown_83E7CCA
|
|
_080BC22C: .4byte gUnknown_20399B8
|
|
_080BC230: .4byte _080BC234
|
|
.align 2, 0
|
|
_080BC234:
|
|
.4byte _080BC250
|
|
.4byte _080BC264
|
|
.4byte _080BC27C
|
|
.4byte _080BC294
|
|
.4byte _080BC2AC
|
|
.4byte _080BC2C8
|
|
.4byte _080BC2DC
|
|
_080BC250:
|
|
ldr r2, _080BC260 @ =gUnknown_20399B8
|
|
lsls r3, r4, 6
|
|
ldrb r1, [r2, 0x1]
|
|
movs r0, 0x3F
|
|
ands r0, r1
|
|
orrs r0, r3
|
|
strb r0, [r2, 0x1]
|
|
b _080BC2F0
|
|
.align 2, 0
|
|
_080BC260: .4byte gUnknown_20399B8
|
|
_080BC264:
|
|
ldr r3, _080BC278 @ =gUnknown_20399B8
|
|
movs r0, 0x1
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
lsls r1, 5
|
|
ldrb r2, [r3, 0x1]
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
b _080BC2EA
|
|
.align 2, 0
|
|
_080BC278: .4byte gUnknown_20399B8
|
|
_080BC27C:
|
|
ldr r3, _080BC290 @ =gUnknown_20399B8
|
|
movs r0, 0x1
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
lsls r1, 6
|
|
ldrb r2, [r3]
|
|
movs r0, 0x41
|
|
negs r0, r0
|
|
b _080BC2BA
|
|
.align 2, 0
|
|
_080BC290: .4byte gUnknown_20399B8
|
|
_080BC294:
|
|
ldr r3, _080BC2A8 @ =gUnknown_20399B8
|
|
movs r0, 0x3
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r3]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
b _080BC2BA
|
|
.align 2, 0
|
|
_080BC2A8: .4byte gUnknown_20399B8
|
|
_080BC2AC:
|
|
ldr r3, _080BC2C4 @ =gUnknown_20399B8
|
|
movs r0, 0x3
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
ldrb r2, [r3]
|
|
movs r0, 0x4
|
|
negs r0, r0
|
|
_080BC2BA:
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
b _080BC2F0
|
|
.align 2, 0
|
|
_080BC2C4: .4byte gUnknown_20399B8
|
|
_080BC2C8:
|
|
ldr r2, _080BC2D8 @ =gUnknown_20399B8
|
|
lsls r3, r4, 7
|
|
ldrb r1, [r2]
|
|
movs r0, 0x7F
|
|
ands r0, r1
|
|
orrs r0, r3
|
|
strb r0, [r2]
|
|
b _080BC2F0
|
|
.align 2, 0
|
|
_080BC2D8: .4byte gUnknown_20399B8
|
|
_080BC2DC:
|
|
ldr r3, _080BC304 @ =gUnknown_20399B8
|
|
movs r0, 0x1F
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
ldrb r2, [r3, 0x1]
|
|
movs r0, 0x20
|
|
negs r0, r0
|
|
_080BC2EA:
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3, 0x1]
|
|
_080BC2F0:
|
|
ldr r0, _080BC308 @ =gUnknown_83E7CCA
|
|
adds r0, r6, r0
|
|
ldrb r0, [r0]
|
|
ldr r1, _080BC304 @ =gUnknown_20399B8
|
|
ldrh r1, [r1]
|
|
bl SetGpuReg
|
|
_080BC2FE:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BC304: .4byte gUnknown_20399B8
|
|
_080BC308: .4byte gUnknown_83E7CCA
|
|
thumb_func_end SetAnimBgAttribute
|
|
|
|
thumb_func_start sub_80BC30C
|
|
sub_80BC30C: @ 80BC30C
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r1, 24
|
|
lsrs r4, r1, 24
|
|
cmp r2, 0x3
|
|
bhi _080BC394
|
|
ldr r0, _080BC338 @ =gUnknown_83E7CCE
|
|
adds r0, r2, r0
|
|
ldrb r0, [r0]
|
|
bl GetGpuReg
|
|
mov r1, sp
|
|
strh r0, [r1]
|
|
cmp r4, 0x6
|
|
bhi _080BC394
|
|
lsls r0, r4, 2
|
|
ldr r1, _080BC33C @ =_080BC340
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080BC338: .4byte gUnknown_83E7CCE
|
|
_080BC33C: .4byte _080BC340
|
|
.align 2, 0
|
|
_080BC340:
|
|
.4byte _080BC35C
|
|
.4byte _080BC364
|
|
.4byte _080BC36C
|
|
.4byte _080BC374
|
|
.4byte _080BC37C
|
|
.4byte _080BC384
|
|
.4byte _080BC38C
|
|
_080BC35C:
|
|
ldr r0, [sp]
|
|
lsls r0, 16
|
|
lsrs r0, 30
|
|
b _080BC396
|
|
_080BC364:
|
|
ldr r0, [sp]
|
|
lsls r0, 18
|
|
lsrs r0, 31
|
|
b _080BC396
|
|
_080BC36C:
|
|
ldr r0, [sp]
|
|
lsls r0, 25
|
|
lsrs r0, 31
|
|
b _080BC396
|
|
_080BC374:
|
|
ldr r0, [sp]
|
|
lsls r0, 28
|
|
lsrs r0, 30
|
|
b _080BC396
|
|
_080BC37C:
|
|
ldr r0, [sp]
|
|
lsls r0, 30
|
|
lsrs r0, 30
|
|
b _080BC396
|
|
_080BC384:
|
|
ldr r0, [sp]
|
|
lsls r0, 24
|
|
lsrs r0, 31
|
|
b _080BC396
|
|
_080BC38C:
|
|
ldr r0, [sp]
|
|
lsls r0, 19
|
|
lsrs r0, 27
|
|
b _080BC396
|
|
_080BC394:
|
|
movs r0, 0
|
|
_080BC396:
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80BC30C
|
|
|
|
thumb_func_start sub_80BC3A0
|
|
sub_80BC3A0: @ 80BC3A0
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _080BC3B8 @ =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BC3C0
|
|
ldr r0, _080BC3BC @ =sub_80BCC4C
|
|
b _080BC3E8
|
|
.align 2, 0
|
|
_080BC3B8: .4byte gBattleTypeFlags
|
|
_080BC3BC: .4byte sub_80BCC4C
|
|
_080BC3C0:
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080BC3E0
|
|
ldr r0, _080BC3D8 @ =gGameVersion
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x2
|
|
beq _080BC3E0
|
|
movs r4, 0x3
|
|
ldr r0, _080BC3DC @ =task00_battle_intro_80BC6C8
|
|
b _080BC3E8
|
|
.align 2, 0
|
|
_080BC3D8: .4byte gGameVersion
|
|
_080BC3DC: .4byte task00_battle_intro_80BC6C8
|
|
_080BC3E0:
|
|
ldr r1, _080BC414 @ =gUnknown_83E7CD4
|
|
lsls r0, r4, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
_080BC3E8:
|
|
movs r1, 0
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r0, _080BC418 @ =gTasks
|
|
lsls r1, r2, 2
|
|
adds r1, r2
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
movs r0, 0
|
|
strh r0, [r1, 0x8]
|
|
strh r4, [r1, 0xA]
|
|
strh r0, [r1, 0xC]
|
|
strh r0, [r1, 0xE]
|
|
strh r0, [r1, 0x10]
|
|
strh r0, [r1, 0x12]
|
|
strh r0, [r1, 0x14]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BC414: .4byte gUnknown_83E7CD4
|
|
_080BC418: .4byte gTasks
|
|
thumb_func_end sub_80BC3A0
|
|
|
|
thumb_func_start sub_80BC41C
|
|
sub_80BC41C: @ 80BC41C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
ldr r0, _080BC468 @ =gBattle_BG1_X
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, _080BC46C @ =gBattle_BG1_Y
|
|
strh r1, [r0]
|
|
ldr r0, _080BC470 @ =gBattle_BG2_X
|
|
strh r1, [r0]
|
|
ldr r0, _080BC474 @ =gBattle_BG2_Y
|
|
strh r1, [r0]
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x54
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldr r4, _080BC478 @ =0x00003f3f
|
|
movs r0, 0x48
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x4A
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BC468: .4byte gBattle_BG1_X
|
|
_080BC46C: .4byte gBattle_BG1_Y
|
|
_080BC470: .4byte gBattle_BG2_X
|
|
_080BC474: .4byte gBattle_BG2_Y
|
|
_080BC478: .4byte 0x00003f3f
|
|
thumb_func_end sub_80BC41C
|
|
|
|
thumb_func_start task_battle_intro_80BC47C
|
|
task_battle_intro_80BC47C: @ 80BC47C
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, _080BC4B4 @ =gBattle_BG1_X
|
|
ldrh r0, [r1]
|
|
adds r0, 0x6
|
|
strh r0, [r1]
|
|
ldr r1, _080BC4B8 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r2, 0x8
|
|
ldrsh r0, [r0, r2]
|
|
mov r8, r1
|
|
cmp r0, 0x4
|
|
bls _080BC4A8
|
|
b _080BC6BA
|
|
_080BC4A8:
|
|
lsls r0, 2
|
|
ldr r1, _080BC4BC @ =_080BC4C0
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080BC4B4: .4byte gBattle_BG1_X
|
|
_080BC4B8: .4byte gTasks
|
|
_080BC4BC: .4byte _080BC4C0
|
|
.align 2, 0
|
|
_080BC4C0:
|
|
.4byte _080BC4D4
|
|
.4byte _080BC504
|
|
.4byte _080BC52C
|
|
.4byte _080BC574
|
|
.4byte _080BC6B4
|
|
_080BC4D4:
|
|
ldr r0, _080BC4EC @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BC4F0
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
add r0, r8
|
|
movs r1, 0x10
|
|
b _080BC4FA
|
|
.align 2, 0
|
|
_080BC4EC: .4byte gBattleTypeFlags
|
|
_080BC4F0:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
add r0, r8
|
|
movs r1, 0x1
|
|
_080BC4FA:
|
|
strh r1, [r0, 0xC]
|
|
ldrh r1, [r0, 0x8]
|
|
adds r1, 0x1
|
|
strh r1, [r0, 0x8]
|
|
b _080BC6BA
|
|
_080BC504:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
mov r3, r8
|
|
adds r1, r0, r3
|
|
ldrh r0, [r1, 0xC]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0xC]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080BC51C
|
|
b _080BC6BA
|
|
_080BC51C:
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0x48
|
|
movs r1, 0x3F
|
|
bl SetGpuReg
|
|
b _080BC6BA
|
|
_080BC52C:
|
|
ldr r1, _080BC568 @ =gUnknown_2022986
|
|
ldrh r0, [r1]
|
|
subs r0, 0xFF
|
|
strh r0, [r1]
|
|
movs r1, 0xFF
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
movs r1, 0xC0
|
|
lsls r1, 6
|
|
cmp r0, r1
|
|
beq _080BC544
|
|
b _080BC6BA
|
|
_080BC544:
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
add r1, r8
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0xF0
|
|
strh r0, [r1, 0xC]
|
|
movs r0, 0x20
|
|
strh r0, [r1, 0xE]
|
|
ldr r2, _080BC56C @ =gUnknown_2023F4C
|
|
ldrh r1, [r2]
|
|
ldr r0, _080BC570 @ =0x0000fffe
|
|
ands r0, r1
|
|
strh r0, [r2]
|
|
b _080BC6BA
|
|
.align 2, 0
|
|
_080BC568: .4byte gUnknown_2022986
|
|
_080BC56C: .4byte gUnknown_2023F4C
|
|
_080BC570: .4byte 0x0000fffe
|
|
_080BC574:
|
|
lsls r0, r4, 2
|
|
adds r1, r0, r4
|
|
lsls r1, 3
|
|
mov r5, r8
|
|
adds r2, r1, r5
|
|
ldrh r3, [r2, 0xE]
|
|
movs r5, 0xE
|
|
ldrsh r1, [r2, r5]
|
|
mov r12, r0
|
|
cmp r1, 0
|
|
beq _080BC590
|
|
subs r0, r3, 0x1
|
|
strh r0, [r2, 0xE]
|
|
b _080BC5BE
|
|
_080BC590:
|
|
movs r1, 0xA
|
|
ldrsh r0, [r2, r1]
|
|
cmp r0, 0x1
|
|
bne _080BC5B0
|
|
ldr r2, _080BC5A8 @ =gBattle_BG1_Y
|
|
ldrh r1, [r2]
|
|
ldr r0, _080BC5AC @ =0x0000ffb0
|
|
cmp r1, r0
|
|
beq _080BC5BE
|
|
subs r0, r1, 0x2
|
|
b _080BC5BC
|
|
.align 2, 0
|
|
_080BC5A8: .4byte gBattle_BG1_Y
|
|
_080BC5AC: .4byte 0x0000ffb0
|
|
_080BC5B0:
|
|
ldr r2, _080BC690 @ =gBattle_BG1_Y
|
|
ldrh r1, [r2]
|
|
ldr r0, _080BC694 @ =0x0000ffc8
|
|
cmp r1, r0
|
|
beq _080BC5BE
|
|
subs r0, r1, 0x1
|
|
_080BC5BC:
|
|
strh r0, [r2]
|
|
_080BC5BE:
|
|
ldr r2, _080BC698 @ =gUnknown_2022986
|
|
ldrh r1, [r2]
|
|
movs r0, 0xFF
|
|
lsls r0, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BC5D2
|
|
ldr r3, _080BC69C @ =0xfffffc04
|
|
adds r0, r1, r3
|
|
strh r0, [r2]
|
|
_080BC5D2:
|
|
mov r5, r12
|
|
adds r0, r5, r4
|
|
lsls r0, 3
|
|
mov r2, r8
|
|
adds r1, r0, r2
|
|
ldrh r2, [r1, 0xC]
|
|
movs r3, 0xC
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
beq _080BC5EA
|
|
subs r0, r2, 0x2
|
|
strh r0, [r1, 0xC]
|
|
_080BC5EA:
|
|
movs r3, 0
|
|
ldr r5, _080BC6A0 @ =gScanlineEffect
|
|
mov r9, r5
|
|
ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers
|
|
mov r6, r9
|
|
adds r5, r1, 0
|
|
_080BC5F6:
|
|
lsls r2, r3, 1
|
|
ldrb r1, [r6, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r2, r0
|
|
adds r2, r7
|
|
ldrh r0, [r5, 0xC]
|
|
strh r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x4F
|
|
ble _080BC5F6
|
|
cmp r3, 0x9F
|
|
bgt _080BC63A
|
|
ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers
|
|
ldr r6, _080BC6A0 @ =gScanlineEffect
|
|
ldr r1, _080BC6A8 @ =gTasks
|
|
mov r2, r12
|
|
adds r0, r2, r4
|
|
lsls r0, 3
|
|
adds r5, r0, r1
|
|
_080BC620:
|
|
lsls r2, r3, 1
|
|
ldrb r1, [r6, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r2, r0
|
|
adds r2, r7
|
|
ldrh r0, [r5, 0xC]
|
|
negs r0, r0
|
|
strh r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x9F
|
|
ble _080BC620
|
|
_080BC63A:
|
|
mov r3, r12
|
|
adds r0, r3, r4
|
|
lsls r0, 3
|
|
mov r5, r8
|
|
adds r1, r0, r5
|
|
movs r0, 0xC
|
|
ldrsh r2, [r1, r0]
|
|
cmp r2, 0
|
|
bne _080BC6BA
|
|
movs r0, 0x3
|
|
mov r3, r9
|
|
strb r0, [r3, 0x15]
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
str r2, [sp]
|
|
ldr r1, _080BC6AC @ =0x0600e000
|
|
ldr r2, _080BC6B0 @ =0x05000200
|
|
mov r0, sp
|
|
bl CpuSet
|
|
movs r0, 0x1
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetBgAttribute
|
|
movs r0, 0x2
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetBgAttribute
|
|
movs r1, 0x9C
|
|
lsls r1, 8
|
|
movs r0, 0xA
|
|
bl SetGpuReg
|
|
movs r1, 0xBC
|
|
lsls r1, 7
|
|
movs r0, 0xC
|
|
bl SetGpuReg
|
|
b _080BC6BA
|
|
.align 2, 0
|
|
_080BC690: .4byte gBattle_BG1_Y
|
|
_080BC694: .4byte 0x0000ffc8
|
|
_080BC698: .4byte gUnknown_2022986
|
|
_080BC69C: .4byte 0xfffffc04
|
|
_080BC6A0: .4byte gScanlineEffect
|
|
_080BC6A4: .4byte gScanlineEffectRegBuffers
|
|
_080BC6A8: .4byte gTasks
|
|
_080BC6AC: .4byte 0x0600e000
|
|
_080BC6B0: .4byte 0x05000200
|
|
_080BC6B4:
|
|
adds r0, r4, 0
|
|
bl sub_80BC41C
|
|
_080BC6BA:
|
|
add sp, 0x4
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end task_battle_intro_80BC47C
|
|
|
|
thumb_func_start task00_battle_intro_80BC6C8
|
|
task00_battle_intro_80BC6C8: @ 80BC6C8
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, _080BC6F4 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r2, 0xA
|
|
ldrsh r0, [r0, r2]
|
|
adds r2, r1, 0
|
|
cmp r0, 0x3
|
|
beq _080BC708
|
|
cmp r0, 0x3
|
|
bgt _080BC6F8
|
|
cmp r0, 0x2
|
|
beq _080BC6FC
|
|
b _080BC710
|
|
.align 2, 0
|
|
_080BC6F4: .4byte gTasks
|
|
_080BC6F8:
|
|
cmp r0, 0x4
|
|
bne _080BC710
|
|
_080BC6FC:
|
|
ldr r1, _080BC704 @ =gBattle_BG1_X
|
|
ldrh r0, [r1]
|
|
adds r0, 0x8
|
|
b _080BC70E
|
|
.align 2, 0
|
|
_080BC704: .4byte gBattle_BG1_X
|
|
_080BC708:
|
|
ldr r1, _080BC74C @ =gBattle_BG1_X
|
|
ldrh r0, [r1]
|
|
adds r0, 0x6
|
|
_080BC70E:
|
|
strh r0, [r1]
|
|
_080BC710:
|
|
lsls r0, r5, 2
|
|
adds r1, r0, r5
|
|
lsls r1, 3
|
|
adds r4, r1, r2
|
|
movs r3, 0xA
|
|
ldrsh r1, [r4, r3]
|
|
adds r6, r0, 0
|
|
cmp r1, 0x4
|
|
bne _080BC774
|
|
ldr r7, _080BC750 @ =gBattle_BG1_Y
|
|
ldrh r0, [r4, 0x14]
|
|
bl Cos2
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0
|
|
bge _080BC736
|
|
ldr r1, _080BC754 @ =0x000001ff
|
|
adds r0, r1
|
|
_080BC736:
|
|
asrs r0, 9
|
|
subs r0, 0x8
|
|
strh r0, [r7]
|
|
ldrh r1, [r4, 0x14]
|
|
movs r2, 0x14
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0xB3
|
|
bgt _080BC758
|
|
adds r0, r1, 0x4
|
|
b _080BC75A
|
|
.align 2, 0
|
|
_080BC74C: .4byte gBattle_BG1_X
|
|
_080BC750: .4byte gBattle_BG1_Y
|
|
_080BC754: .4byte 0x000001ff
|
|
_080BC758:
|
|
adds r0, r1, 0x6
|
|
_080BC75A:
|
|
strh r0, [r4, 0x14]
|
|
ldr r2, _080BC790 @ =gTasks
|
|
adds r0, r6, r5
|
|
lsls r0, 3
|
|
adds r3, r0, r2
|
|
movs r0, 0x14
|
|
ldrsh r1, [r3, r0]
|
|
movs r0, 0xB4
|
|
lsls r0, 1
|
|
cmp r1, r0
|
|
bne _080BC774
|
|
movs r0, 0
|
|
strh r0, [r3, 0x14]
|
|
_080BC774:
|
|
adds r0, r6, r5
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
movs r1, 0x8
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0x4
|
|
bls _080BC784
|
|
b _080BC9AA
|
|
_080BC784:
|
|
lsls r0, 2
|
|
ldr r1, _080BC794 @ =_080BC798
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080BC790: .4byte gTasks
|
|
_080BC794: .4byte _080BC798
|
|
.align 2, 0
|
|
_080BC798:
|
|
.4byte _080BC7AC
|
|
.4byte _080BC7DC
|
|
.4byte _080BC808
|
|
.4byte _080BC858
|
|
.4byte _080BC9A4
|
|
_080BC7AC:
|
|
ldr r1, _080BC7C8 @ =gTasks
|
|
adds r0, r6, r5
|
|
lsls r0, 3
|
|
adds r2, r0, r1
|
|
movs r3, 0x10
|
|
strh r3, [r2, 0x10]
|
|
ldr r0, _080BC7CC @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BC7D0
|
|
strh r3, [r2, 0xC]
|
|
b _080BC7D4
|
|
.align 2, 0
|
|
_080BC7C8: .4byte gTasks
|
|
_080BC7CC: .4byte gBattleTypeFlags
|
|
_080BC7D0:
|
|
movs r0, 0x1
|
|
strh r0, [r2, 0xC]
|
|
_080BC7D4:
|
|
ldrh r0, [r2, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x8]
|
|
b _080BC9AA
|
|
_080BC7DC:
|
|
ldr r0, _080BC804 @ =gTasks
|
|
adds r1, r6, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0xC]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0xC]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080BC7F2
|
|
b _080BC9AA
|
|
_080BC7F2:
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0x48
|
|
movs r1, 0x3F
|
|
bl SetGpuReg
|
|
b _080BC9AA
|
|
.align 2, 0
|
|
_080BC804: .4byte gTasks
|
|
_080BC808:
|
|
ldr r1, _080BC848 @ =gUnknown_2022986
|
|
ldrh r0, [r1]
|
|
subs r0, 0xFF
|
|
strh r0, [r1]
|
|
movs r1, 0xFF
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
movs r1, 0xC0
|
|
lsls r1, 6
|
|
cmp r0, r1
|
|
beq _080BC820
|
|
b _080BC9AA
|
|
_080BC820:
|
|
ldr r0, _080BC84C @ =gTasks
|
|
adds r1, r6, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0xF0
|
|
strh r0, [r1, 0xC]
|
|
movs r0, 0x20
|
|
strh r0, [r1, 0xE]
|
|
movs r0, 0x1
|
|
strh r0, [r1, 0x12]
|
|
ldr r2, _080BC850 @ =gUnknown_2023F4C
|
|
ldrh r1, [r2]
|
|
ldr r0, _080BC854 @ =0x0000fffe
|
|
ands r0, r1
|
|
strh r0, [r2]
|
|
b _080BC9AA
|
|
.align 2, 0
|
|
_080BC848: .4byte gUnknown_2022986
|
|
_080BC84C: .4byte gTasks
|
|
_080BC850: .4byte gUnknown_2023F4C
|
|
_080BC854: .4byte 0x0000fffe
|
|
_080BC858:
|
|
ldr r0, _080BC890 @ =gTasks
|
|
adds r1, r6, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r2, [r1, 0xE]
|
|
movs r3, 0xE
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
beq _080BC898
|
|
subs r0, r2, 0x1
|
|
strh r0, [r1, 0xE]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080BC8B8
|
|
ldr r1, _080BC894 @ =0x00001842
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0xF
|
|
bl SetGpuReg
|
|
movs r0, 0x54
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
b _080BC8B8
|
|
.align 2, 0
|
|
_080BC890: .4byte gTasks
|
|
_080BC894: .4byte 0x00001842
|
|
_080BC898:
|
|
ldrh r2, [r1, 0x10]
|
|
movs r0, 0x1F
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _080BC8B8
|
|
ldrh r0, [r1, 0x12]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0x12]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080BC8B8
|
|
adds r0, r2, 0
|
|
adds r0, 0xFF
|
|
strh r0, [r1, 0x10]
|
|
movs r0, 0x4
|
|
strh r0, [r1, 0x12]
|
|
_080BC8B8:
|
|
ldr r2, _080BC988 @ =gUnknown_2022986
|
|
ldrh r1, [r2]
|
|
movs r0, 0xFF
|
|
lsls r0, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BC8CC
|
|
ldr r3, _080BC98C @ =0xfffffc04
|
|
adds r0, r1, r3
|
|
strh r0, [r2]
|
|
_080BC8CC:
|
|
ldr r0, _080BC990 @ =gTasks
|
|
adds r1, r6, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r2, [r1, 0xC]
|
|
movs r3, 0xC
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
beq _080BC8E2
|
|
subs r0, r2, 0x2
|
|
strh r0, [r1, 0xC]
|
|
_080BC8E2:
|
|
movs r3, 0
|
|
ldr r0, _080BC994 @ =gScanlineEffect
|
|
mov r8, r0
|
|
ldr r2, _080BC998 @ =gScanlineEffectRegBuffers
|
|
mov r12, r2
|
|
mov r7, r8
|
|
adds r4, r1, 0
|
|
_080BC8F0:
|
|
lsls r2, r3, 1
|
|
ldrb r1, [r7, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r2, r0
|
|
add r2, r12
|
|
ldrh r0, [r4, 0xC]
|
|
strh r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x4F
|
|
ble _080BC8F0
|
|
cmp r3, 0x9F
|
|
bgt _080BC934
|
|
ldr r0, _080BC998 @ =gScanlineEffectRegBuffers
|
|
mov r12, r0
|
|
ldr r7, _080BC994 @ =gScanlineEffect
|
|
ldr r1, _080BC990 @ =gTasks
|
|
adds r0, r6, r5
|
|
lsls r0, 3
|
|
adds r4, r0, r1
|
|
_080BC91A:
|
|
lsls r2, r3, 1
|
|
ldrb r1, [r7, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r2, r0
|
|
add r2, r12
|
|
ldrh r0, [r4, 0xC]
|
|
negs r0, r0
|
|
strh r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x9F
|
|
ble _080BC91A
|
|
_080BC934:
|
|
ldr r1, _080BC990 @ =gTasks
|
|
adds r0, r6, r5
|
|
lsls r0, 3
|
|
adds r1, r0, r1
|
|
movs r3, 0xC
|
|
ldrsh r2, [r1, r3]
|
|
cmp r2, 0
|
|
bne _080BC9AA
|
|
movs r0, 0x3
|
|
mov r3, r8
|
|
strb r0, [r3, 0x15]
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
str r2, [sp]
|
|
ldr r1, _080BC99C @ =0x0600e000
|
|
ldr r2, _080BC9A0 @ =0x05000200
|
|
mov r0, sp
|
|
bl CpuSet
|
|
movs r0, 0x1
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetBgAttribute
|
|
movs r0, 0x2
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetBgAttribute
|
|
movs r1, 0x9C
|
|
lsls r1, 8
|
|
movs r0, 0xA
|
|
bl SetGpuReg
|
|
movs r1, 0xBC
|
|
lsls r1, 7
|
|
movs r0, 0xC
|
|
bl SetGpuReg
|
|
b _080BC9AA
|
|
.align 2, 0
|
|
_080BC988: .4byte gUnknown_2022986
|
|
_080BC98C: .4byte 0xfffffc04
|
|
_080BC990: .4byte gTasks
|
|
_080BC994: .4byte gScanlineEffect
|
|
_080BC998: .4byte gScanlineEffectRegBuffers
|
|
_080BC99C: .4byte 0x0600e000
|
|
_080BC9A0: .4byte 0x05000200
|
|
_080BC9A4:
|
|
adds r0, r5, 0
|
|
bl sub_80BC41C
|
|
_080BC9AA:
|
|
ldr r0, _080BC9D0 @ =gTasks
|
|
adds r1, r6, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
movs r2, 0x8
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0x4
|
|
beq _080BC9C2
|
|
ldrh r1, [r1, 0x10]
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
_080BC9C2:
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BC9D0: .4byte gTasks
|
|
thumb_func_end task00_battle_intro_80BC6C8
|
|
|
|
thumb_func_start task_battle_intro_anim
|
|
task_battle_intro_anim: @ 80BC9D4
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, _080BCA08 @ =gBattle_BG1_X
|
|
ldrh r0, [r1]
|
|
adds r0, 0x8
|
|
strh r0, [r1]
|
|
ldr r1, _080BCA0C @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r2, 0x8
|
|
ldrsh r0, [r0, r2]
|
|
adds r4, r1, 0
|
|
cmp r0, 0x4
|
|
bls _080BC9FE
|
|
b _080BCC22
|
|
_080BC9FE:
|
|
lsls r0, 2
|
|
ldr r1, _080BCA10 @ =_080BCA14
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080BCA08: .4byte gBattle_BG1_X
|
|
_080BCA0C: .4byte gTasks
|
|
_080BCA10: .4byte _080BCA14
|
|
.align 2, 0
|
|
_080BCA14:
|
|
.4byte _080BCA28
|
|
.4byte _080BCA7C
|
|
.4byte _080BCAA8
|
|
.4byte _080BCAF8
|
|
.4byte _080BCC1C
|
|
_080BCA28:
|
|
ldr r1, _080BCA60 @ =0x00001842
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
ldr r4, _080BCA64 @ =0x00000808
|
|
movs r0, 0x52
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x54
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldr r1, _080BCA68 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r2, r0, r1
|
|
strh r4, [r2, 0x10]
|
|
ldr r0, _080BCA6C @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BCA70
|
|
movs r0, 0x10
|
|
b _080BCA72
|
|
.align 2, 0
|
|
_080BCA60: .4byte 0x00001842
|
|
_080BCA64: .4byte 0x00000808
|
|
_080BCA68: .4byte gTasks
|
|
_080BCA6C: .4byte gBattleTypeFlags
|
|
_080BCA70:
|
|
movs r0, 0x1
|
|
_080BCA72:
|
|
strh r0, [r2, 0xC]
|
|
ldrh r0, [r2, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x8]
|
|
b _080BCC22
|
|
_080BCA7C:
|
|
ldr r0, _080BCAA4 @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0xC]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0xC]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080BCA94
|
|
b _080BCC22
|
|
_080BCA94:
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0x48
|
|
movs r1, 0x3F
|
|
bl SetGpuReg
|
|
b _080BCC22
|
|
.align 2, 0
|
|
_080BCAA4: .4byte gTasks
|
|
_080BCAA8:
|
|
ldr r1, _080BCAE8 @ =gUnknown_2022986
|
|
ldrh r0, [r1]
|
|
subs r0, 0xFF
|
|
strh r0, [r1]
|
|
movs r1, 0xFF
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
movs r1, 0xC0
|
|
lsls r1, 6
|
|
cmp r0, r1
|
|
beq _080BCAC0
|
|
b _080BCC22
|
|
_080BCAC0:
|
|
ldr r0, _080BCAEC @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0xF0
|
|
strh r0, [r1, 0xC]
|
|
movs r0, 0x20
|
|
strh r0, [r1, 0xE]
|
|
movs r0, 0x1
|
|
strh r0, [r1, 0x12]
|
|
ldr r2, _080BCAF0 @ =gUnknown_2023F4C
|
|
ldrh r1, [r2]
|
|
ldr r0, _080BCAF4 @ =0x0000fffe
|
|
ands r0, r1
|
|
strh r0, [r2]
|
|
b _080BCC22
|
|
.align 2, 0
|
|
_080BCAE8: .4byte gUnknown_2022986
|
|
_080BCAEC: .4byte gTasks
|
|
_080BCAF0: .4byte gUnknown_2023F4C
|
|
_080BCAF4: .4byte 0x0000fffe
|
|
_080BCAF8:
|
|
lsls r0, r5, 2
|
|
adds r1, r0, r5
|
|
lsls r1, 3
|
|
adds r2, r1, r4
|
|
ldrh r3, [r2, 0xE]
|
|
movs r6, 0xE
|
|
ldrsh r1, [r2, r6]
|
|
mov r12, r0
|
|
cmp r1, 0
|
|
beq _080BCB12
|
|
subs r0, r3, 0x1
|
|
strh r0, [r2, 0xE]
|
|
b _080BCB32
|
|
_080BCB12:
|
|
ldrh r1, [r2, 0x10]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BCB32
|
|
ldrh r0, [r2, 0x12]
|
|
subs r0, 0x1
|
|
strh r0, [r2, 0x12]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080BCB32
|
|
adds r0, r1, 0
|
|
adds r0, 0xFF
|
|
strh r0, [r2, 0x10]
|
|
movs r0, 0x6
|
|
strh r0, [r2, 0x12]
|
|
_080BCB32:
|
|
ldr r2, _080BCC00 @ =gUnknown_2022986
|
|
ldrh r1, [r2]
|
|
movs r0, 0xFF
|
|
lsls r0, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BCB46
|
|
ldr r3, _080BCC04 @ =0xfffffc04
|
|
adds r0, r1, r3
|
|
strh r0, [r2]
|
|
_080BCB46:
|
|
mov r6, r12
|
|
adds r0, r6, r5
|
|
lsls r0, 3
|
|
adds r1, r0, r4
|
|
ldrh r2, [r1, 0xC]
|
|
movs r3, 0xC
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
beq _080BCB5C
|
|
subs r0, r2, 0x2
|
|
strh r0, [r1, 0xC]
|
|
_080BCB5C:
|
|
movs r3, 0
|
|
ldr r6, _080BCC08 @ =gScanlineEffect
|
|
mov r8, r6
|
|
ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers
|
|
adds r4, r1, 0
|
|
_080BCB66:
|
|
lsls r2, r3, 1
|
|
ldrb r1, [r6, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r2, r0
|
|
adds r2, r7
|
|
ldrh r0, [r4, 0xC]
|
|
strh r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x4F
|
|
ble _080BCB66
|
|
cmp r3, 0x9F
|
|
bgt _080BCBAA
|
|
ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers
|
|
ldr r6, _080BCC08 @ =gScanlineEffect
|
|
ldr r1, _080BCC10 @ =gTasks
|
|
mov r2, r12
|
|
adds r0, r2, r5
|
|
lsls r0, 3
|
|
adds r4, r0, r1
|
|
_080BCB90:
|
|
lsls r2, r3, 1
|
|
ldrb r1, [r6, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r2, r0
|
|
adds r2, r7
|
|
ldrh r0, [r4, 0xC]
|
|
negs r0, r0
|
|
strh r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x9F
|
|
ble _080BCB90
|
|
_080BCBAA:
|
|
ldr r1, _080BCC10 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r1, r0, r1
|
|
movs r3, 0xC
|
|
ldrsh r2, [r1, r3]
|
|
cmp r2, 0
|
|
bne _080BCC22
|
|
movs r0, 0x3
|
|
mov r6, r8
|
|
strb r0, [r6, 0x15]
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
str r2, [sp]
|
|
ldr r1, _080BCC14 @ =0x0600e000
|
|
ldr r2, _080BCC18 @ =0x05000200
|
|
mov r0, sp
|
|
bl CpuSet
|
|
movs r0, 0x1
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetBgAttribute
|
|
movs r0, 0x2
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetBgAttribute
|
|
movs r1, 0x9C
|
|
lsls r1, 8
|
|
movs r0, 0xA
|
|
bl SetGpuReg
|
|
movs r1, 0xBC
|
|
lsls r1, 7
|
|
movs r0, 0xC
|
|
bl SetGpuReg
|
|
b _080BCC22
|
|
.align 2, 0
|
|
_080BCC00: .4byte gUnknown_2022986
|
|
_080BCC04: .4byte 0xfffffc04
|
|
_080BCC08: .4byte gScanlineEffect
|
|
_080BCC0C: .4byte gScanlineEffectRegBuffers
|
|
_080BCC10: .4byte gTasks
|
|
_080BCC14: .4byte 0x0600e000
|
|
_080BCC18: .4byte 0x05000200
|
|
_080BCC1C:
|
|
adds r0, r5, 0
|
|
bl sub_80BC41C
|
|
_080BCC22:
|
|
ldr r0, _080BCC48 @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
movs r2, 0x8
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0x4
|
|
beq _080BCC3C
|
|
ldrh r1, [r1, 0x10]
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
_080BCC3C:
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BCC48: .4byte gTasks
|
|
thumb_func_end task_battle_intro_anim
|
|
|
|
thumb_func_start sub_80BCC4C
|
|
sub_80BCC4C: @ 80BCC4C
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x8
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r1, _080BCC98 @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r7, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r7, r1]
|
|
cmp r0, 0x1
|
|
ble _080BCCC2
|
|
movs r2, 0x10
|
|
ldrsh r0, [r7, r2]
|
|
cmp r0, 0
|
|
bne _080BCCC2
|
|
ldr r2, _080BCC9C @ =gBattle_BG1_X
|
|
ldrh r1, [r2]
|
|
movs r0, 0x80
|
|
lsls r0, 8
|
|
ands r0, r1
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
cmp r5, 0
|
|
bne _080BCC8A
|
|
cmp r1, 0x4F
|
|
bhi _080BCCA4
|
|
_080BCC8A:
|
|
adds r0, r1, 0x3
|
|
strh r0, [r2]
|
|
ldr r1, _080BCCA0 @ =gBattle_BG2_X
|
|
ldrh r0, [r1]
|
|
subs r0, 0x3
|
|
strh r0, [r1]
|
|
b _080BCCC2
|
|
.align 2, 0
|
|
_080BCC98: .4byte gTasks
|
|
_080BCC9C: .4byte gBattle_BG1_X
|
|
_080BCCA0: .4byte gBattle_BG2_X
|
|
_080BCCA4:
|
|
str r5, [sp]
|
|
ldr r1, _080BCCE4 @ =0x0600e000
|
|
ldr r4, _080BCCE8 @ =0x05000200
|
|
mov r0, sp
|
|
adds r2, r4, 0
|
|
bl CpuSet
|
|
str r5, [sp, 0x4]
|
|
add r0, sp, 0x4
|
|
ldr r1, _080BCCEC @ =0x0600f000
|
|
adds r2, r4, 0
|
|
bl CpuSet
|
|
movs r0, 0x1
|
|
strh r0, [r7, 0x10]
|
|
_080BCCC2:
|
|
ldr r0, _080BCCF0 @ =gTasks
|
|
lsls r2, r6, 2
|
|
adds r1, r2, r6
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
movs r3, 0x8
|
|
ldrsh r1, [r1, r3]
|
|
mov r9, r0
|
|
adds r5, r2, 0
|
|
cmp r1, 0x4
|
|
bls _080BCCDA
|
|
b _080BCEE6
|
|
_080BCCDA:
|
|
lsls r0, r1, 2
|
|
ldr r1, _080BCCF4 @ =_080BCCF8
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080BCCE4: .4byte 0x0600e000
|
|
_080BCCE8: .4byte 0x05000200
|
|
_080BCCEC: .4byte 0x0600f000
|
|
_080BCCF0: .4byte gTasks
|
|
_080BCCF4: .4byte _080BCCF8
|
|
.align 2, 0
|
|
_080BCCF8:
|
|
.4byte _080BCD0C
|
|
.4byte _080BCD1E
|
|
.4byte _080BCDC4
|
|
.4byte _080BCE08
|
|
.4byte _080BCEE0
|
|
_080BCD0C:
|
|
adds r0, r5, r6
|
|
lsls r0, 3
|
|
add r0, r9
|
|
movs r1, 0x20
|
|
strh r1, [r0, 0xC]
|
|
ldrh r1, [r0, 0x8]
|
|
adds r1, 0x1
|
|
strh r1, [r0, 0x8]
|
|
b _080BCEE6
|
|
_080BCD1E:
|
|
adds r0, r5, r6
|
|
lsls r0, 3
|
|
mov r2, r9
|
|
adds r1, r0, r2
|
|
ldrh r0, [r1, 0xC]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0xC]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080BCD34
|
|
b _080BCEE6
|
|
_080BCD34:
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
ldr r4, _080BCDB4 @ =gSprites
|
|
ldr r5, _080BCDB8 @ =gBattleStruct
|
|
ldr r0, [r5]
|
|
adds r0, 0x7D
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r4
|
|
ldrb r3, [r1, 0x1]
|
|
movs r2, 0xD
|
|
negs r2, r2
|
|
adds r0, r2, 0
|
|
ands r0, r3
|
|
movs r3, 0x8
|
|
mov r9, r3
|
|
mov r3, r9
|
|
orrs r0, r3
|
|
strb r0, [r1, 0x1]
|
|
ldr r3, [r5]
|
|
adds r0, r3, 0
|
|
adds r0, 0x7D
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
movs r1, 0x1C
|
|
adds r1, r4
|
|
mov r8, r1
|
|
add r0, r8
|
|
ldr r6, _080BCDBC @ =sub_801182C
|
|
str r6, [r0]
|
|
adds r3, 0x7E
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldrb r1, [r0, 0x1]
|
|
ands r2, r1
|
|
mov r3, r9
|
|
orrs r2, r3
|
|
strb r2, [r0, 0x1]
|
|
ldr r0, [r5]
|
|
adds r0, 0x7E
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
add r0, r8
|
|
str r6, [r0]
|
|
movs r0, 0x48
|
|
movs r1, 0x3F
|
|
bl SetGpuReg
|
|
ldr r1, _080BCDC0 @ =0x00003f06
|
|
movs r0, 0x4A
|
|
bl SetGpuReg
|
|
b _080BCEE6
|
|
.align 2, 0
|
|
_080BCDB4: .4byte gSprites
|
|
_080BCDB8: .4byte gBattleStruct
|
|
_080BCDBC: .4byte sub_801182C
|
|
_080BCDC0: .4byte 0x00003f06
|
|
_080BCDC4:
|
|
ldr r1, _080BCDFC @ =gUnknown_2022986
|
|
ldrh r0, [r1]
|
|
subs r0, 0xFF
|
|
strh r0, [r1]
|
|
movs r1, 0xFF
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
movs r1, 0xC0
|
|
lsls r1, 6
|
|
cmp r0, r1
|
|
beq _080BCDDC
|
|
b _080BCEE6
|
|
_080BCDDC:
|
|
adds r1, r5, r6
|
|
lsls r1, 3
|
|
add r1, r9
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0xF0
|
|
strh r0, [r1, 0xC]
|
|
movs r0, 0x20
|
|
strh r0, [r1, 0xE]
|
|
ldr r2, _080BCE00 @ =gUnknown_2023F4C
|
|
ldrh r1, [r2]
|
|
ldr r0, _080BCE04 @ =0x0000fffe
|
|
ands r0, r1
|
|
strh r0, [r2]
|
|
b _080BCEE6
|
|
.align 2, 0
|
|
_080BCDFC: .4byte gUnknown_2022986
|
|
_080BCE00: .4byte gUnknown_2023F4C
|
|
_080BCE04: .4byte 0x0000fffe
|
|
_080BCE08:
|
|
ldr r2, _080BCECC @ =gUnknown_2022986
|
|
ldrh r1, [r2]
|
|
movs r0, 0xFF
|
|
lsls r0, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BCE1C
|
|
ldr r3, _080BCED0 @ =0xfffffc04
|
|
adds r0, r1, r3
|
|
strh r0, [r2]
|
|
_080BCE1C:
|
|
adds r0, r5, r6
|
|
lsls r0, 3
|
|
mov r2, r9
|
|
adds r1, r0, r2
|
|
ldrh r2, [r1, 0xC]
|
|
movs r3, 0xC
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
beq _080BCE32
|
|
subs r0, r2, 0x2
|
|
strh r0, [r1, 0xC]
|
|
_080BCE32:
|
|
movs r3, 0
|
|
ldr r0, _080BCED4 @ =gScanlineEffect
|
|
mov r12, r0
|
|
ldr r2, _080BCED8 @ =gScanlineEffectRegBuffers
|
|
mov r8, r2
|
|
mov r7, r12
|
|
adds r4, r1, 0
|
|
_080BCE40:
|
|
lsls r2, r3, 1
|
|
ldrb r1, [r7, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r2, r0
|
|
add r2, r8
|
|
ldrh r0, [r4, 0xC]
|
|
strh r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x4F
|
|
ble _080BCE40
|
|
cmp r3, 0x9F
|
|
bgt _080BCE84
|
|
ldr r0, _080BCED8 @ =gScanlineEffectRegBuffers
|
|
mov r8, r0
|
|
ldr r7, _080BCED4 @ =gScanlineEffect
|
|
ldr r1, _080BCEDC @ =gTasks
|
|
adds r0, r5, r6
|
|
lsls r0, 3
|
|
adds r4, r0, r1
|
|
_080BCE6A:
|
|
lsls r2, r3, 1
|
|
ldrb r1, [r7, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r2, r0
|
|
add r2, r8
|
|
ldrh r0, [r4, 0xC]
|
|
negs r0, r0
|
|
strh r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x9F
|
|
ble _080BCE6A
|
|
_080BCE84:
|
|
adds r0, r5, r6
|
|
lsls r0, 3
|
|
mov r2, r9
|
|
adds r1, r0, r2
|
|
movs r3, 0xC
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
bne _080BCEE6
|
|
movs r0, 0x3
|
|
mov r2, r12
|
|
strb r0, [r2, 0x15]
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0x1
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetBgAttribute
|
|
movs r0, 0x2
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetBgAttribute
|
|
movs r1, 0x9C
|
|
lsls r1, 8
|
|
movs r0, 0xA
|
|
bl SetGpuReg
|
|
movs r1, 0xBC
|
|
lsls r1, 7
|
|
movs r0, 0xC
|
|
bl SetGpuReg
|
|
b _080BCEE6
|
|
.align 2, 0
|
|
_080BCECC: .4byte gUnknown_2022986
|
|
_080BCED0: .4byte 0xfffffc04
|
|
_080BCED4: .4byte gScanlineEffect
|
|
_080BCED8: .4byte gScanlineEffectRegBuffers
|
|
_080BCEDC: .4byte gTasks
|
|
_080BCEE0:
|
|
adds r0, r6, 0
|
|
bl sub_80BC41C
|
|
_080BCEE6:
|
|
add sp, 0x8
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80BCC4C
|
|
|
|
thumb_func_start sub_80BCEF4
|
|
sub_80BCEF4: @ 80BCEF4
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
str r0, [sp]
|
|
adds r6, r2, 0
|
|
adds r4, r3, 0
|
|
ldr r0, [sp, 0x24]
|
|
ldr r7, [sp, 0x28]
|
|
ldr r2, [sp, 0x2C]
|
|
mov r9, r2
|
|
ldr r5, [sp, 0x30]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r8, r1
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r10, r0
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
adds r0, r4, 0
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _080BCFC4 @ =gMonSpritesGfxPtr
|
|
ldr r2, [r1]
|
|
lsls r4, 2
|
|
adds r2, 0x4
|
|
adds r2, r4
|
|
ldr r1, _080BCFC8 @ =gBattleMonForms
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
lsls r1, 11
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
movs r2, 0x80
|
|
lsls r2, 3
|
|
adds r1, r7, 0
|
|
bl CpuSet
|
|
ldr r1, [sp]
|
|
lsls r0, r1, 24
|
|
lsrs r0, 24
|
|
movs r2, 0x80
|
|
lsls r2, 5
|
|
adds r1, r7, 0
|
|
adds r3, r5, 0
|
|
bl LoadBgTiles
|
|
adds r0, r6, 0
|
|
adds r0, 0x8
|
|
cmp r6, r0
|
|
bge _080BCFA0
|
|
mov r12, r0
|
|
mov r2, r8
|
|
lsls r7, r2, 1
|
|
_080BCF72:
|
|
mov r1, r8
|
|
adds r2, r1, 0
|
|
adds r2, 0x8
|
|
adds r4, r6, 0x1
|
|
cmp r1, r2
|
|
bge _080BCF9A
|
|
mov r0, r10
|
|
lsls r3, r0, 12
|
|
lsls r0, r6, 6
|
|
add r0, r9
|
|
adds r6, r7, r0
|
|
subs r1, r2, r1
|
|
_080BCF8A:
|
|
adds r0, r5, 0
|
|
orrs r0, r3
|
|
strh r0, [r6]
|
|
adds r5, 0x1
|
|
adds r6, 0x2
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bne _080BCF8A
|
|
_080BCF9A:
|
|
adds r6, r4, 0
|
|
cmp r6, r12
|
|
blt _080BCF72
|
|
_080BCFA0:
|
|
ldr r1, [sp]
|
|
lsls r0, r1, 24
|
|
lsrs r0, 24
|
|
movs r2, 0x80
|
|
lsls r2, 4
|
|
mov r1, r9
|
|
movs r3, 0
|
|
bl LoadBgTilemap
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BCFC4: .4byte gMonSpritesGfxPtr
|
|
_080BCFC8: .4byte gBattleMonForms
|
|
thumb_func_end sub_80BCEF4
|
|
|
|
thumb_func_start sub_80BCFCC
|
|
sub_80BCFCC: @ 80BCFCC
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
ldr r4, [sp, 0x24]
|
|
ldr r5, [sp, 0x28]
|
|
mov r8, r5
|
|
ldr r5, [sp, 0x2C]
|
|
ldr r6, [sp, 0x30]
|
|
mov r9, r6
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r12, r0
|
|
lsls r1, 24
|
|
lsls r2, 24
|
|
lsls r3, 24
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
mov r10, r4
|
|
mov r7, r8
|
|
lsls r7, 16
|
|
lsrs r6, r7, 16
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
mov r0, r9
|
|
lsls r0, 24
|
|
mov r9, r0
|
|
ldr r4, _080BD090 @ =0x040000d4
|
|
ldr r0, _080BD094 @ =gMonSpritesGfxPtr
|
|
ldr r0, [r0]
|
|
lsrs r2, 22
|
|
adds r0, 0x4
|
|
adds r0, r2
|
|
lsrs r3, 13
|
|
ldr r0, [r0]
|
|
adds r0, r3
|
|
str r0, [r4]
|
|
movs r0, 0xC0
|
|
lsls r0, 19
|
|
adds r6, r0
|
|
str r6, [r4, 0x4]
|
|
ldr r0, _080BD098 @ =0x80000400
|
|
str r0, [r4, 0x8]
|
|
ldr r0, [r4, 0x8]
|
|
adds r2, r7, 0
|
|
lsrs r2, 21
|
|
mov r6, r9
|
|
lsrs r6, 15
|
|
subs r4, r2, r6
|
|
lsrs r0, r1, 24
|
|
adds r1, r0, 0
|
|
adds r1, 0x8
|
|
cmp r0, r1
|
|
bge _080BD080
|
|
mov r9, r1
|
|
mov r7, r12
|
|
lsls r7, 1
|
|
mov r8, r7
|
|
lsls r5, 11
|
|
str r5, [sp]
|
|
_080BD048:
|
|
mov r2, r12
|
|
adds r3, r2, 0
|
|
adds r3, 0x8
|
|
adds r5, r0, 0x1
|
|
cmp r2, r3
|
|
bge _080BD07A
|
|
mov r1, r10
|
|
lsls r6, r1, 12
|
|
lsls r0, 6
|
|
movs r7, 0xC0
|
|
lsls r7, 19
|
|
adds r0, r7
|
|
ldr r1, [sp]
|
|
adds r0, r1, r0
|
|
mov r7, r8
|
|
adds r1, r7, r0
|
|
subs r2, r3, r2
|
|
_080BD06A:
|
|
adds r0, r4, 0
|
|
orrs r0, r6
|
|
strh r0, [r1]
|
|
adds r4, 0x1
|
|
adds r1, 0x2
|
|
subs r2, 0x1
|
|
cmp r2, 0
|
|
bne _080BD06A
|
|
_080BD07A:
|
|
adds r0, r5, 0
|
|
cmp r0, r9
|
|
blt _080BD048
|
|
_080BD080:
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BD090: .4byte 0x040000d4
|
|
_080BD094: .4byte gMonSpritesGfxPtr
|
|
_080BD098: .4byte 0x80000400
|
|
thumb_func_end sub_80BCFCC
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|