mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-11-17 12:07:38 +01:00
7545 lines
117 KiB
ArmAsm
7545 lines
117 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_8103448
|
|
sub_8103448: @ 8103448
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80A6838
|
|
ldr r5, =gBattleAnimArgs
|
|
movs r0, 0
|
|
ldrsh r1, [r5, r0]
|
|
adds r0, r4, 0
|
|
bl sub_80A6864
|
|
ldrh r0, [r5, 0x2]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x22]
|
|
ldrh r0, [r5, 0x4]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r5, 0x8]
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r5, 0xA]
|
|
strh r0, [r4, 0x34]
|
|
ldrh r0, [r5, 0x6]
|
|
strh r0, [r4, 0x36]
|
|
ldr r1, =move_anim_8074EE0
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r1, =sub_80A6450
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8103448
|
|
|
|
thumb_func_start sub_8103498
|
|
sub_8103498: @ 8103498
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _081034B4
|
|
ldr r0, =gBattleAnimAttacker
|
|
b _081034B6
|
|
.pool
|
|
_081034B4:
|
|
ldr r0, =gBattleAnimTarget
|
|
_081034B6:
|
|
ldrb r0, [r0]
|
|
adds r1, r4, 0
|
|
bl sub_810310C
|
|
movs r0, 0
|
|
strh r0, [r4, 0x2E]
|
|
strh r0, [r4, 0x30]
|
|
ldr r0, =sub_81034D8
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8103498
|
|
|
|
thumb_func_start sub_81034D8
|
|
sub_81034D8: @ 81034D8
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0x1
|
|
beq _0810350A
|
|
cmp r0, 0x1
|
|
bgt _081034EE
|
|
cmp r0, 0
|
|
beq _081034F4
|
|
b _08103538
|
|
_081034EE:
|
|
cmp r0, 0x2
|
|
beq _08103524
|
|
b _08103538
|
|
_081034F4:
|
|
ldrh r0, [r1, 0x26]
|
|
subs r0, 0x3
|
|
strh r0, [r1, 0x26]
|
|
ldrh r0, [r1, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x6
|
|
bne _08103538
|
|
b _0810351C
|
|
_0810350A:
|
|
ldrh r0, [r1, 0x26]
|
|
adds r0, 0x3
|
|
strh r0, [r1, 0x26]
|
|
ldrh r0, [r1, 0x30]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0x30]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08103538
|
|
_0810351C:
|
|
ldrh r0, [r1, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x2E]
|
|
b _08103538
|
|
_08103524:
|
|
ldrh r0, [r1, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x40
|
|
bne _08103538
|
|
adds r0, r1, 0
|
|
bl DestroyAnimSprite
|
|
_08103538:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_81034D8
|
|
|
|
thumb_func_start sub_810353C
|
|
sub_810353C: @ 810353C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r3, =gSprites
|
|
movs r0, 0x32
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrh r1, [r4, 0x30]
|
|
ldrh r2, [r0, 0x24]
|
|
adds r1, r2
|
|
strh r1, [r0, 0x24]
|
|
movs r1, 0x30
|
|
ldrsh r0, [r4, r1]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x30]
|
|
movs r0, 0x2E
|
|
ldrsh r2, [r4, r0]
|
|
cmp r2, 0
|
|
bne _0810357A
|
|
movs r0, 0x32
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
strh r2, [r0, 0x24]
|
|
adds r0, r4, 0
|
|
bl move_anim_8074EE0
|
|
_0810357A:
|
|
ldrh r0, [r4, 0x2E]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_810353C
|
|
|
|
thumb_func_start sub_810358C
|
|
sub_810358C: @ 810358C
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
ldr r1, =gBattlerSpriteIds
|
|
ldr r0, =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r6, [r0]
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _081035E4
|
|
ldr r0, =gBattleAnimArgs
|
|
ldrh r1, [r5, 0x20]
|
|
ldrh r2, [r0]
|
|
subs r1, r2
|
|
strh r1, [r5, 0x20]
|
|
adds r1, r0, 0
|
|
b _081035EE
|
|
.pool
|
|
_081035E4:
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
ldrh r2, [r5, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x20]
|
|
_081035EE:
|
|
ldrh r0, [r1, 0x2]
|
|
ldrh r2, [r5, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x22]
|
|
ldrh r0, [r1, 0x4]
|
|
strh r0, [r5, 0x2E]
|
|
ldrh r0, [r1, 0x6]
|
|
strh r0, [r5, 0x30]
|
|
strh r6, [r5, 0x32]
|
|
ldr r0, =sub_810353C
|
|
str r0, [r5, 0x1C]
|
|
adds r2, r5, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_810358C
|
|
|
|
thumb_func_start sub_8103620
|
|
sub_8103620: @ 8103620
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl InitAnimSpritePos
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r1, 0x6]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r1, 0x8]
|
|
strh r0, [r4, 0x38]
|
|
ldr r0, =sub_80A64B0
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, =sub_8103658
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8103620
|
|
|
|
thumb_func_start sub_8103658
|
|
sub_8103658: @ 8103658
|
|
push {lr}
|
|
ldrh r1, [r0, 0x30]
|
|
strh r1, [r0, 0x2E]
|
|
ldrh r1, [r0, 0x20]
|
|
strh r1, [r0, 0x32]
|
|
ldrh r1, [r0, 0x22]
|
|
adds r1, 0xF
|
|
strh r1, [r0, 0x36]
|
|
ldr r1, =StartAnimLinearTranslation
|
|
str r1, [r0, 0x1C]
|
|
ldr r1, =sub_8103680
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8103658
|
|
|
|
thumb_func_start sub_8103680
|
|
sub_8103680: @ 8103680
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
ldrh r2, [r1, 0x38]
|
|
movs r3, 0x38
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
bne _08103696
|
|
adds r0, r1, 0
|
|
bl DestroyAnimSprite
|
|
b _0810369A
|
|
_08103696:
|
|
subs r0, r2, 0x1
|
|
strh r0, [r1, 0x38]
|
|
_0810369A:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8103680
|
|
|
|
thumb_func_start sub_81036A0
|
|
sub_81036A0: @ 81036A0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r1, =gBattlerSpriteIds
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
movs r1, 0
|
|
bl sub_80A7270
|
|
ldr r1, =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, =sub_81036DC
|
|
str r1, [r0]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81036A0
|
|
|
|
thumb_func_start sub_81036DC
|
|
sub_81036DC: @ 81036DC
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, =gBattlerSpriteIds
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
adds r1, r0, r1
|
|
ldrb r4, [r1]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08103718
|
|
ldr r1, =gTasks
|
|
lsls r2, r5, 2
|
|
adds r0, r2, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x8]
|
|
negs r0, r0
|
|
lsls r0, 16
|
|
lsrs r3, r0, 16
|
|
adds r6, r2, 0
|
|
b _08103726
|
|
.pool
|
|
_08103718:
|
|
ldr r2, =gTasks
|
|
lsls r1, r5, 2
|
|
adds r0, r1, r5
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
ldrh r3, [r0, 0x8]
|
|
adds r6, r1, 0
|
|
_08103726:
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r0, r4, 0
|
|
adds r1, r2, 0
|
|
bl obj_id_set_rotscale
|
|
ldr r1, =gTasks
|
|
adds r0, r6, r5
|
|
lsls r0, 3
|
|
adds r1, r0, r1
|
|
movs r2, 0xA
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
bne _08103760
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0xB0
|
|
strh r0, [r1, 0x8]
|
|
ldr r1, =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrh r1, [r0, 0x26]
|
|
adds r1, 0x1
|
|
b _0810378A
|
|
.pool
|
|
_08103760:
|
|
cmp r0, 0x1
|
|
bne _08103776
|
|
ldrh r0, [r1, 0xE]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0xE]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1E
|
|
bne _081037D0
|
|
movs r0, 0x2
|
|
b _081037CE
|
|
_08103776:
|
|
ldrh r0, [r1, 0x8]
|
|
subs r0, 0xB0
|
|
strh r0, [r1, 0x8]
|
|
ldr r1, =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrh r1, [r0, 0x26]
|
|
subs r1, 0x1
|
|
_0810378A:
|
|
strh r1, [r0, 0x26]
|
|
adds r0, r4, 0
|
|
bl sub_80A73A0
|
|
ldr r0, =gTasks
|
|
adds r1, r6, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
movs r3, 0x8
|
|
ldrsh r2, [r1, r3]
|
|
movs r0, 0xF2
|
|
lsls r0, 4
|
|
cmp r2, r0
|
|
beq _081037AA
|
|
cmp r2, 0
|
|
bne _081037D0
|
|
_081037AA:
|
|
ldrh r2, [r1, 0xA]
|
|
movs r3, 0xA
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0x2
|
|
bne _081037CC
|
|
adds r0, r4, 0
|
|
bl sub_80A7344
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
b _081037D0
|
|
.pool
|
|
_081037CC:
|
|
adds r0, r2, 0x1
|
|
_081037CE:
|
|
strh r0, [r1, 0xA]
|
|
_081037D0:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_81036DC
|
|
|
|
thumb_func_start sub_81037D8
|
|
sub_81037D8: @ 81037D8
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80A6838
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08103804
|
|
ldr r0, =gBattleAnimArgs
|
|
ldrh r1, [r4, 0x20]
|
|
ldrh r2, [r0]
|
|
subs r1, r2
|
|
strh r1, [r4, 0x20]
|
|
adds r5, r0, 0
|
|
b _08103810
|
|
.pool
|
|
_08103804:
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x20]
|
|
adds r5, r1, 0
|
|
_08103810:
|
|
ldrh r0, [r5, 0x2]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x22]
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0810384C
|
|
adds r3, r4, 0
|
|
adds r3, 0x3F
|
|
ldrb r0, [r3]
|
|
movs r1, 0x1
|
|
adds r2, r0, 0
|
|
orrs r2, r1
|
|
strb r2, [r3]
|
|
movs r1, 0x4
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
beq _08103860
|
|
movs r0, 0x2
|
|
orrs r2, r0
|
|
strb r2, [r3]
|
|
b _08103860
|
|
.pool
|
|
_0810384C:
|
|
movs r2, 0x4
|
|
ldrsh r0, [r5, r2]
|
|
cmp r0, 0
|
|
beq _08103860
|
|
adds r2, r4, 0
|
|
adds r2, 0x3F
|
|
ldrb r0, [r2]
|
|
movs r1, 0x2
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
_08103860:
|
|
ldr r0, =sub_80A67D8
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81037D8
|
|
|
|
thumb_func_start sub_810387C
|
|
sub_810387C: @ 810387C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0
|
|
bl InitAnimSpritePos
|
|
ldr r0, =sub_80A67BC
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, =sub_81038A0
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_810387C
|
|
|
|
thumb_func_start sub_81038A0
|
|
sub_81038A0: @ 81038A0
|
|
push {lr}
|
|
movs r1, 0x6
|
|
strh r1, [r0, 0x2E]
|
|
ldrh r1, [r0, 0x20]
|
|
strh r1, [r0, 0x32]
|
|
ldrh r1, [r0, 0x22]
|
|
subs r1, 0x20
|
|
strh r1, [r0, 0x36]
|
|
ldr r1, =StartAnimLinearTranslation
|
|
str r1, [r0, 0x1C]
|
|
ldr r1, =DestroyAnimSprite
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81038A0
|
|
|
|
thumb_func_start sub_81038C8
|
|
sub_81038C8: @ 81038C8
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x4
|
|
adds r5, r0, 0
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _081038EC
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x4]
|
|
b _0810390E
|
|
.pool
|
|
_081038EC:
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0810390E
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x4]
|
|
ldrh r0, [r1, 0x2]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x2]
|
|
ldrh r0, [r1, 0x6]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x6]
|
|
_0810390E:
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl InitAnimSpritePos
|
|
ldr r4, =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
ldr r6, =gBattleAnimArgs
|
|
lsrs r0, 24
|
|
ldrh r1, [r6, 0x4]
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r2, [r6, 0x6]
|
|
adds r0, r2
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
adds r7, r0, 0
|
|
ldrh r1, [r5, 0x20]
|
|
mov r2, r8
|
|
lsls r0, r2, 16
|
|
asrs r0, 16
|
|
subs r0, r1
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldrh r2, [r5, 0x22]
|
|
lsls r1, r7, 16
|
|
asrs r1, 16
|
|
subs r1, r2
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl ArcTan2Neg
|
|
lsls r0, 16
|
|
movs r1, 0xF0
|
|
lsls r1, 24
|
|
adds r0, r1
|
|
lsrs r4, r0, 16
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08103980
|
|
ldr r2, =0xffffa000
|
|
adds r0, r4, r2
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
_08103980:
|
|
movs r3, 0x80
|
|
lsls r3, 1
|
|
str r4, [sp]
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
adds r2, r3, 0
|
|
bl sub_80A73E0
|
|
ldrh r0, [r6, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
mov r0, r8
|
|
strh r0, [r5, 0x32]
|
|
strh r7, [r5, 0x36]
|
|
ldr r0, =StartAnimLinearTranslation
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81038C8
|
|
|
|
thumb_func_start sub_81039CC
|
|
sub_81039CC: @ 81039CC
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
ldrh r0, [r3, 0x2E]
|
|
subs r1, r0, 0x1
|
|
strh r1, [r3, 0x2E]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bgt _081039F6
|
|
ldr r2, =gTasks
|
|
movs r0, 0x3C
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
ldrh r1, [r0, 0xA]
|
|
subs r1, 0x1
|
|
strh r1, [r0, 0xA]
|
|
adds r0, r3, 0
|
|
bl DestroySprite
|
|
_081039F6:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81039CC
|
|
|
|
thumb_func_start sub_8103A00
|
|
sub_8103A00: @ 8103A00
|
|
push {r4,lr}
|
|
adds r2, r0, 0
|
|
movs r0, 0x3C
|
|
ldrsh r1, [r2, r0]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r4, r0, r1
|
|
movs r3, 0x2E
|
|
ldrsh r1, [r2, r3]
|
|
movs r3, 0x12
|
|
ldrsh r0, [r4, r3]
|
|
cmp r1, r0
|
|
ble _08103A34
|
|
ldrh r0, [r2, 0x34]
|
|
ldrh r1, [r2, 0x38]
|
|
adds r0, r1
|
|
strh r0, [r2, 0x38]
|
|
ldrh r0, [r2, 0x36]
|
|
ldrh r3, [r2, 0x3A]
|
|
adds r0, r3
|
|
b _08103A42
|
|
.pool
|
|
_08103A34:
|
|
ldrh r0, [r2, 0x38]
|
|
ldrh r1, [r2, 0x34]
|
|
subs r0, r1
|
|
strh r0, [r2, 0x38]
|
|
ldrh r0, [r2, 0x3A]
|
|
ldrh r1, [r2, 0x36]
|
|
subs r0, r1
|
|
_08103A42:
|
|
strh r0, [r2, 0x3A]
|
|
ldrh r0, [r2, 0x38]
|
|
ldrh r1, [r2, 0x30]
|
|
adds r3, r0, r1
|
|
strh r3, [r2, 0x30]
|
|
ldrh r0, [r2, 0x3A]
|
|
ldrh r1, [r2, 0x32]
|
|
adds r0, r1
|
|
strh r0, [r2, 0x32]
|
|
ldrh r1, [r4, 0x16]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08103A66
|
|
lsls r0, r3, 16
|
|
lsrs r0, 24
|
|
negs r0, r0
|
|
b _08103A6A
|
|
_08103A66:
|
|
lsls r0, r3, 16
|
|
lsrs r0, 24
|
|
_08103A6A:
|
|
strh r0, [r2, 0x24]
|
|
ldrh r1, [r4, 0x18]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08103A7E
|
|
ldrh r0, [r2, 0x32]
|
|
lsrs r0, 8
|
|
negs r0, r0
|
|
b _08103A82
|
|
_08103A7E:
|
|
ldrh r0, [r2, 0x32]
|
|
lsrs r0, 8
|
|
_08103A82:
|
|
strh r0, [r2, 0x26]
|
|
ldrh r0, [r2, 0x2E]
|
|
subs r1, r0, 0x1
|
|
strh r1, [r2, 0x2E]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bgt _08103A98
|
|
movs r0, 0x1E
|
|
strh r0, [r2, 0x2E]
|
|
ldr r0, =sub_81039CC
|
|
str r0, [r2, 0x1C]
|
|
_08103A98:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8103A00
|
|
|
|
thumb_func_start sub_8103AA4
|
|
sub_8103AA4: @ 8103AA4
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r7, r0, 0
|
|
movs r0, 0x3C
|
|
ldrsh r1, [r7, r0]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r6, r0, r1
|
|
ldrh r2, [r6, 0x16]
|
|
movs r1, 0x2
|
|
negs r1, r1
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
ldrh r3, [r7, 0x30]
|
|
adds r2, r0, r3
|
|
strh r2, [r7, 0x30]
|
|
ldrh r0, [r6, 0x18]
|
|
ands r1, r0
|
|
ldrh r0, [r7, 0x32]
|
|
adds r1, r0
|
|
strh r1, [r7, 0x32]
|
|
ldrh r1, [r6, 0x16]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08103AEC
|
|
lsls r0, r2, 16
|
|
lsrs r0, 24
|
|
negs r0, r0
|
|
b _08103AF0
|
|
.pool
|
|
_08103AEC:
|
|
lsls r0, r2, 16
|
|
lsrs r0, 24
|
|
_08103AF0:
|
|
strh r0, [r7, 0x24]
|
|
ldrh r1, [r6, 0x18]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08103B04
|
|
ldrh r0, [r7, 0x32]
|
|
lsrs r0, 8
|
|
negs r0, r0
|
|
b _08103B08
|
|
_08103B04:
|
|
ldrh r0, [r7, 0x32]
|
|
lsrs r0, 8
|
|
_08103B08:
|
|
strh r0, [r7, 0x26]
|
|
ldrh r0, [r7, 0x2E]
|
|
subs r1, r0, 0x1
|
|
strh r1, [r7, 0x2E]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bgt _08103BD4
|
|
movs r4, 0
|
|
movs r0, 0x8
|
|
strh r0, [r7, 0x2E]
|
|
movs r0, 0x4
|
|
strh r0, [r6, 0x12]
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
bl sub_8151624
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
ldrh r0, [r7, 0x24]
|
|
ldrh r1, [r7, 0x20]
|
|
adds r2, r0, r1
|
|
strh r2, [r7, 0x20]
|
|
ldrh r0, [r7, 0x26]
|
|
ldrh r3, [r7, 0x22]
|
|
adds r0, r3
|
|
strh r0, [r7, 0x22]
|
|
strh r4, [r7, 0x26]
|
|
strh r4, [r7, 0x24]
|
|
ldrh r3, [r6, 0x1E]
|
|
movs r0, 0x1E
|
|
ldrsh r1, [r6, r0]
|
|
lsls r0, r2, 16
|
|
asrs r0, 16
|
|
cmp r1, r0
|
|
blt _08103B52
|
|
subs r0, r3, r2
|
|
b _08103B54
|
|
_08103B52:
|
|
subs r0, r2, r3
|
|
_08103B54:
|
|
lsls r0, 24
|
|
lsrs r4, r0, 16
|
|
ldrh r3, [r6, 0x20]
|
|
movs r0, 0x20
|
|
ldrsh r1, [r6, r0]
|
|
ldrh r2, [r7, 0x22]
|
|
movs r6, 0x22
|
|
ldrsh r0, [r7, r6]
|
|
cmp r1, r0
|
|
blt _08103B6C
|
|
subs r0, r3, r2
|
|
b _08103B6E
|
|
_08103B6C:
|
|
subs r0, r2, r3
|
|
_08103B6E:
|
|
lsls r0, 24
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
movs r0, 0
|
|
strh r0, [r7, 0x32]
|
|
strh r0, [r7, 0x30]
|
|
strh r0, [r7, 0x3A]
|
|
strh r0, [r7, 0x38]
|
|
lsls r0, r4, 16
|
|
asrs r0, 16
|
|
lsls r5, 16
|
|
asrs r5, 16
|
|
adds r1, r5, 0
|
|
bl sub_8151534
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
movs r6, 0xE0
|
|
lsls r6, 1
|
|
adds r0, r6, 0
|
|
bl sub_8151624
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r4, 0
|
|
bl sub_8151534
|
|
strh r0, [r7, 0x34]
|
|
mov r1, r8
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
adds r1, r5, 0
|
|
bl sub_8151534
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
adds r0, r6, 0
|
|
bl sub_8151624
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r4, 0
|
|
bl sub_8151534
|
|
strh r0, [r7, 0x36]
|
|
ldr r0, =sub_8103A00
|
|
str r0, [r7, 0x1C]
|
|
_08103BD4:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8103AA4
|
|
|
|
thumb_func_start sub_8103BE4
|
|
sub_8103BE4: @ 8103BE4
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r1, =gTasks
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r1, 0xA
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _08103C02
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
_08103C02:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8103BE4
|
|
|
|
thumb_func_start sub_8103C0C
|
|
sub_8103C0C: @ 8103C0C
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r1, =gTasks
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
adds r5, r0, r1
|
|
ldrh r0, [r5, 0x8]
|
|
subs r1, r0, 0x1
|
|
strh r1, [r5, 0x8]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bgt _08103CE0
|
|
ldr r0, =gUnknown_085933B0
|
|
movs r2, 0x1A
|
|
ldrsh r1, [r5, r2]
|
|
movs r3, 0x1C
|
|
ldrsh r2, [r5, r3]
|
|
ldrb r3, [r5, 0xC]
|
|
ldrb r4, [r5, 0xA]
|
|
subs r3, r4
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r12, r0
|
|
lsls r0, 4
|
|
add r0, r12
|
|
lsls r0, 2
|
|
ldr r1, =gSprites
|
|
adds r6, r0, r1
|
|
movs r1, 0x10
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x1
|
|
beq _08103C6C
|
|
cmp r0, 0x2
|
|
beq _08103C82
|
|
b _08103C90
|
|
.pool
|
|
_08103C6C:
|
|
ldrb r2, [r6, 0x3]
|
|
lsls r1, r2, 26
|
|
lsrs r1, 27
|
|
movs r0, 0x18
|
|
orrs r1, r0
|
|
lsls r1, 1
|
|
subs r0, 0x57
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r6, 0x3]
|
|
b _08103C90
|
|
_08103C82:
|
|
ldrb r0, [r6, 0x3]
|
|
movs r1, 0x3F
|
|
negs r1, r1
|
|
ands r1, r0
|
|
movs r0, 0x10
|
|
orrs r1, r0
|
|
strb r1, [r6, 0x3]
|
|
_08103C90:
|
|
ldr r3, =gTasks
|
|
lsls r2, r7, 2
|
|
adds r2, r7
|
|
lsls r2, 3
|
|
adds r4, r2, r3
|
|
ldrh r0, [r4, 0x12]
|
|
ldrh r1, [r4, 0x14]
|
|
subs r0, r1
|
|
strh r0, [r6, 0x2E]
|
|
strh r7, [r6, 0x3C]
|
|
movs r1, 0xA
|
|
ldrsh r0, [r4, r1]
|
|
adds r0, 0xD
|
|
lsls r0, 1
|
|
adds r0, r2
|
|
adds r3, 0x8
|
|
adds r0, r3
|
|
mov r2, r12
|
|
strh r2, [r0]
|
|
ldrh r0, [r4, 0xE]
|
|
strh r0, [r4, 0x8]
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
movs r0, 0x3F
|
|
negs r0, r0
|
|
bl BattleAnimAdjustPanning
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r0, 0x9A
|
|
bl PlaySE12WithPanning
|
|
movs r3, 0xA
|
|
ldrsh r0, [r4, r3]
|
|
cmp r0, 0x2
|
|
ble _08103CE0
|
|
ldr r0, =sub_8103BE4
|
|
str r0, [r4]
|
|
_08103CE0:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8103C0C
|
|
|
|
thumb_func_start sub_8103CF0
|
|
sub_8103CF0: @ 8103CF0
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
movs r0, 0
|
|
mov r9, r0
|
|
movs r5, 0
|
|
mov r0, sp
|
|
mov r1, r9
|
|
strh r1, [r0]
|
|
mov r4, sp
|
|
adds r4, 0x2
|
|
strh r1, [r4]
|
|
bl IsContest
|
|
lsls r0, 24
|
|
mov r10, r4
|
|
cmp r0, 0
|
|
beq _08103D5C
|
|
ldr r1, =gTasks
|
|
lsls r2, r7, 2
|
|
adds r0, r2, r7
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r1, 0x2
|
|
strh r1, [r0, 0x10]
|
|
ldr r3, =gBattleAnimArgs
|
|
ldrh r0, [r3]
|
|
negs r0, r0
|
|
strh r0, [r3]
|
|
ldrh r1, [r3, 0x4]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
mov r8, r2
|
|
cmp r0, 0
|
|
beq _08103D54
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strh r0, [r3, 0x4]
|
|
b _08103DB6
|
|
.pool
|
|
_08103D54:
|
|
movs r0, 0x1
|
|
orrs r0, r1
|
|
strh r0, [r3, 0x4]
|
|
b _08103DB6
|
|
_08103D5C:
|
|
ldr r1, =gBattlerPositions
|
|
ldr r0, =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r3, 0x1
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
lsls r2, r7, 2
|
|
mov r8, r2
|
|
cmp r0, 0
|
|
bne _08103DB6
|
|
ldr r1, =gTasks
|
|
adds r0, r2, r7
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
strh r3, [r0, 0x10]
|
|
ldr r2, =gBattleAnimArgs
|
|
ldrh r0, [r2]
|
|
negs r0, r0
|
|
strh r0, [r2]
|
|
ldrh r0, [r2, 0x2]
|
|
negs r0, r0
|
|
strh r0, [r2, 0x2]
|
|
ldrh r1, [r2, 0x4]
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08103DB0
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
ands r0, r1
|
|
b _08103DB4
|
|
.pool
|
|
_08103DB0:
|
|
movs r0, 0x1
|
|
orrs r0, r1
|
|
_08103DB4:
|
|
strh r0, [r2, 0x4]
|
|
_08103DB6:
|
|
ldr r5, =gBattleAnimAttacker
|
|
ldrb r0, [r5]
|
|
movs r1, 0
|
|
bl GetBattlerSpriteCoord
|
|
ldr r1, =gTasks
|
|
mov r3, r8
|
|
adds r4, r3, r7
|
|
lsls r4, 3
|
|
adds r4, r1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x1A]
|
|
adds r6, r0, 0
|
|
ldrb r0, [r5]
|
|
movs r1, 0x1
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x1C]
|
|
mov r9, r0
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08103E20
|
|
ldr r4, =gBattleAnimTarget
|
|
ldrb r1, [r4]
|
|
movs r0, 0x2
|
|
eors r0, r1
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08103E20
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
mov r2, sp
|
|
mov r3, r10
|
|
bl SetAverageBattlerPositions
|
|
b _08103E42
|
|
.pool
|
|
_08103E20:
|
|
mov r5, sp
|
|
ldr r4, =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r1, r10
|
|
strh r0, [r1]
|
|
_08103E42:
|
|
mov r4, sp
|
|
ldr r0, =gTasks
|
|
mov r2, r8
|
|
adds r1, r2, r7
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
mov r2, sp
|
|
ldr r3, =gBattleAnimArgs
|
|
ldrh r0, [r3]
|
|
ldrh r2, [r2]
|
|
adds r0, r2
|
|
strh r0, [r1, 0x1E]
|
|
strh r0, [r4]
|
|
ldrh r0, [r3, 0x2]
|
|
mov r3, r10
|
|
ldrh r3, [r3]
|
|
adds r0, r3
|
|
strh r0, [r1, 0x20]
|
|
mov r1, r10
|
|
strh r0, [r1]
|
|
mov r0, sp
|
|
ldrh r2, [r0]
|
|
movs r3, 0
|
|
ldrsh r0, [r0, r3]
|
|
adds r1, r6, 0
|
|
cmp r0, r1
|
|
blt _08103E88
|
|
subs r0, r2, r1
|
|
b _08103E8A
|
|
.pool
|
|
_08103E88:
|
|
subs r0, r1, r2
|
|
_08103E8A:
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
lsls r4, r0, 16
|
|
asrs r4, 16
|
|
ldr r5, =gBattleAnimArgs
|
|
ldrh r1, [r5, 0x4]
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
ands r0, r1
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
bl sub_8151624
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r4, 0
|
|
bl sub_8151534
|
|
ldr r2, =gTasks
|
|
mov r3, r8
|
|
adds r1, r3, r7
|
|
lsls r1, 3
|
|
adds r6, r1, r2
|
|
strh r0, [r6, 0x12]
|
|
movs r1, 0x12
|
|
ldrsh r0, [r6, r1]
|
|
movs r1, 0x80
|
|
bl sub_8151534
|
|
strh r0, [r6, 0x14]
|
|
ldrh r0, [r5, 0x4]
|
|
strh r0, [r6, 0x16]
|
|
mov r2, r10
|
|
ldrh r1, [r2]
|
|
movs r3, 0
|
|
ldrsh r0, [r2, r3]
|
|
mov r4, r9
|
|
cmp r0, r4
|
|
blt _08103F08
|
|
subs r4, r1, r4
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
movs r1, 0x12
|
|
ldrsh r0, [r6, r1]
|
|
bl sub_8151624
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r4, 0
|
|
bl sub_8151534
|
|
movs r1, 0x2
|
|
negs r1, r1
|
|
ands r1, r0
|
|
strh r1, [r6, 0x18]
|
|
b _08103F28
|
|
.pool
|
|
_08103F08:
|
|
subs r4, r1
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
movs r2, 0x12
|
|
ldrsh r0, [r6, r2]
|
|
bl sub_8151624
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r4, 0
|
|
bl sub_8151534
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
strh r0, [r6, 0x18]
|
|
_08103F28:
|
|
ldr r1, =gTasks
|
|
mov r3, r8
|
|
adds r0, r3, r7
|
|
lsls r0, 3
|
|
adds r5, r0, r1
|
|
ldr r4, =gBattleAnimArgs
|
|
ldrh r0, [r4, 0x6]
|
|
strh r0, [r5, 0xE]
|
|
ldrh r1, [r4, 0x8]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08103F78
|
|
movs r0, 0x80
|
|
eors r0, r1
|
|
strh r0, [r4, 0x8]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x3F
|
|
ble _08103FA0
|
|
ldr r0, =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl sub_80A82E4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, =0x0000ffc0
|
|
adds r1, r2, 0
|
|
ldrh r4, [r4, 0x8]
|
|
adds r1, r4
|
|
adds r0, r1
|
|
b _08103FB0
|
|
.pool
|
|
_08103F78:
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x3F
|
|
ble _08103FA0
|
|
ldr r0, =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl sub_80A82E4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r3, =0x0000ffc0
|
|
adds r1, r3, 0
|
|
ldrh r4, [r4, 0x8]
|
|
adds r1, r4
|
|
adds r0, r1
|
|
b _08103FB0
|
|
.pool
|
|
_08103FA0:
|
|
ldr r0, =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl sub_80A82E4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x8]
|
|
subs r0, r1
|
|
_08103FB0:
|
|
strh r0, [r5, 0xC]
|
|
ldr r0, =gTasks
|
|
mov r2, r8
|
|
adds r1, r2, r7
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
movs r3, 0xC
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0x2
|
|
bgt _08103FC8
|
|
movs r0, 0x3
|
|
strh r0, [r1, 0xC]
|
|
_08103FC8:
|
|
ldr r0, =sub_8103C0C
|
|
str r0, [r1]
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8103CF0
|
|
|
|
thumb_func_start sub_8103FE8
|
|
sub_8103FE8: @ 8103FE8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0
|
|
bl InitAnimSpritePos
|
|
ldr r0, =gUnknown_085934A0
|
|
ldrh r0, [r0, 0x2]
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 20
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
strh r0, [r4, 0x2E]
|
|
ldr r0, =sub_8104018
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8103FE8
|
|
|
|
thumb_func_start sub_8104018
|
|
sub_8104018: @ 8104018
|
|
push {r4-r7,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x2
|
|
bne _0810407C
|
|
movs r0, 0
|
|
strh r0, [r4, 0x30]
|
|
ldrh r5, [r4, 0x2E]
|
|
ldr r1, =gPlttBufferFaded
|
|
adds r0, r5, 0
|
|
adds r0, 0x8
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r7, [r0]
|
|
adds r6, r1, 0
|
|
adds r1, r5, 0
|
|
adds r1, 0x9
|
|
lsls r0, r5, 1
|
|
adds r0, r6
|
|
adds r2, r0, 0
|
|
adds r2, 0x10
|
|
movs r3, 0x7
|
|
lsls r1, 1
|
|
adds r1, r6
|
|
_08104050:
|
|
ldrh r0, [r1]
|
|
strh r0, [r2]
|
|
adds r1, 0x2
|
|
adds r2, 0x2
|
|
subs r3, 0x1
|
|
cmp r3, 0
|
|
bge _08104050
|
|
adds r0, r5, 0
|
|
adds r0, 0xF
|
|
lsls r0, 1
|
|
adds r0, r6
|
|
strh r7, [r0]
|
|
ldrh r0, [r4, 0x32]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x18
|
|
bne _0810407C
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_0810407C:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104018
|
|
|
|
thumb_func_start sub_8104088
|
|
sub_8104088: @ 8104088
|
|
push {r4-r7,lr}
|
|
sub sp, 0x4
|
|
adds r5, r0, 0
|
|
movs r1, 0x1
|
|
bl InitAnimSpritePos
|
|
ldr r4, =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
ldr r4, =gBattleAnimArgs
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x6]
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _081040CC
|
|
ldrh r0, [r4, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x4]
|
|
_081040CC:
|
|
lsls r0, r6, 16
|
|
asrs r0, 16
|
|
ldrh r1, [r4, 0x4]
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
ldrh r1, [r5, 0x20]
|
|
lsrs r6, r0, 16
|
|
asrs r0, 16
|
|
subs r0, r1
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldrh r2, [r5, 0x22]
|
|
lsls r1, r7, 16
|
|
asrs r1, 16
|
|
subs r1, r2
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl ArcTan2Neg
|
|
lsls r0, 16
|
|
movs r1, 0xC0
|
|
lsls r1, 24
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
movs r3, 0x80
|
|
lsls r3, 1
|
|
str r0, [sp]
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
adds r2, r3, 0
|
|
bl sub_80A73E0
|
|
ldrh r0, [r4, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
strh r6, [r5, 0x32]
|
|
strh r7, [r5, 0x36]
|
|
ldr r0, =sub_80A7000
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104088
|
|
|
|
thumb_func_start sub_810413C
|
|
sub_810413C: @ 810413C
|
|
ldr r1, =0x0000fff0
|
|
strh r1, [r0, 0x32]
|
|
ldrh r1, [r0, 0x22]
|
|
adds r1, 0x8
|
|
strh r1, [r0, 0x22]
|
|
ldr r1, =sub_8104154
|
|
str r1, [r0, 0x1C]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end sub_810413C
|
|
|
|
thumb_func_start sub_8104154
|
|
sub_8104154: @ 8104154
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x80
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
strh r0, [r4, 0x24]
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08104178
|
|
ldrh r0, [r4, 0x24]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x24]
|
|
_08104178:
|
|
movs r1, 0x30
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x32
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x30]
|
|
adds r0, 0x5
|
|
strh r0, [r4, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x7E
|
|
ble _081041B8
|
|
movs r0, 0
|
|
strh r0, [r4, 0x30]
|
|
movs r1, 0x32
|
|
ldrsh r0, [r4, r1]
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r4, 0x34]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x34]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x2
|
|
bne _081041B8
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_081041B8:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104154
|
|
|
|
thumb_func_start sub_81041C4
|
|
sub_81041C4: @ 81041C4
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl InitAnimSpritePos
|
|
movs r0, 0x14
|
|
strh r0, [r4, 0x2E]
|
|
ldr r5, =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x32]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x36]
|
|
ldr r0, =StartAnimLinearTranslation
|
|
str r0, [r4, 0x1C]
|
|
adds r2, r4, 0
|
|
adds r2, 0x2C
|
|
ldrb r0, [r2]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldr r1, =sub_810421C
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81041C4
|
|
|
|
thumb_func_start sub_810421C
|
|
sub_810421C: @ 810421C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x3F
|
|
bl BattleAnimAdjustPanning
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r0, 0xA6
|
|
bl PlaySE12WithPanning
|
|
ldrh r0, [r4, 0x24]
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
movs r1, 0
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r4, 0x26]
|
|
ldrh r2, [r4, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x22]
|
|
strh r1, [r4, 0x26]
|
|
strh r1, [r4, 0x24]
|
|
movs r2, 0
|
|
movs r1, 0x7
|
|
adds r0, r4, 0
|
|
adds r0, 0x3C
|
|
_08104250:
|
|
strh r2, [r0]
|
|
subs r0, 0x2
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bge _08104250
|
|
bl Random2
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x7
|
|
ands r0, r1
|
|
ldr r2, =0x0000fff4
|
|
adds r1, r2, 0
|
|
subs r1, r0
|
|
strh r1, [r4, 0x3A]
|
|
bl Random2
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0xA0
|
|
bl __umodsi3
|
|
adds r0, 0xA0
|
|
strh r0, [r4, 0x3C]
|
|
ldr r0, =sub_81042A0
|
|
str r0, [r4, 0x1C]
|
|
adds r2, r4, 0
|
|
adds r2, 0x2C
|
|
ldrb r1, [r2]
|
|
movs r0, 0x7F
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_810421C
|
|
|
|
thumb_func_start sub_81042A0
|
|
sub_81042A0: @ 81042A0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x3C]
|
|
ldrh r2, [r4, 0x2E]
|
|
adds r0, r1, r2
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, 16
|
|
asrs r2, r0, 24
|
|
strh r2, [r4, 0x24]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _081042BE
|
|
negs r0, r2
|
|
strh r0, [r4, 0x24]
|
|
_081042BE:
|
|
movs r1, 0x30
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x3A
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x30]
|
|
adds r0, 0x8
|
|
strh r0, [r4, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x7E
|
|
ble _081042FE
|
|
movs r0, 0
|
|
strh r0, [r4, 0x30]
|
|
movs r1, 0x32
|
|
ldrsh r0, [r4, r1]
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r4, 0x34]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x34]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
bne _081042FE
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_081042FE:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_81042A0
|
|
|
|
thumb_func_start sub_8104304
|
|
sub_8104304: @ 8104304
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0
|
|
bl InitAnimSpritePos
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08104322
|
|
ldrh r0, [r4, 0x22]
|
|
adds r0, 0x10
|
|
strh r0, [r4, 0x22]
|
|
_08104322:
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x8]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r1, 0x4]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r1, 0xA]
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r1, 0xC]
|
|
strh r0, [r4, 0x34]
|
|
ldrh r0, [r1, 0x6]
|
|
strh r0, [r4, 0x36]
|
|
ldr r0, =sub_80A62EC
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104304
|
|
|
|
thumb_func_start sub_8104364
|
|
sub_8104364: @ 8104364
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r5, r0, 0
|
|
movs r7, 0x20
|
|
ldr r4, =0x0000ffe0
|
|
movs r0, 0x10
|
|
mov r8, r0
|
|
ldr r6, =0x0000fff0
|
|
ldr r0, =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
beq _08104390
|
|
adds r7, r4, 0
|
|
movs r4, 0x20
|
|
mov r8, r6
|
|
movs r6, 0x10
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAnim
|
|
_08104390:
|
|
lsls r0, r7, 16
|
|
asrs r0, 16
|
|
ldrh r1, [r5, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x20]
|
|
lsls r0, r4, 16
|
|
asrs r0, 16
|
|
ldrh r1, [r5, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x22]
|
|
movs r0, 0x6
|
|
strh r0, [r5, 0x2E]
|
|
ldr r4, =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
add r0, r8
|
|
strh r0, [r5, 0x32]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, r6
|
|
strh r0, [r5, 0x36]
|
|
ldr r0, =StartAnimLinearTranslation
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, =sub_81043F8
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104364
|
|
|
|
thumb_func_start sub_81043F8
|
|
sub_81043F8: @ 81043F8
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0810440E
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_0810440E:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_81043F8
|
|
|
|
thumb_func_start sub_8104414
|
|
sub_8104414: @ 8104414
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
adds r5, r0, 0
|
|
movs r0, 0x20
|
|
mov r8, r0
|
|
ldr r4, =0x0000ffe0
|
|
movs r2, 0x10
|
|
mov r9, r2
|
|
ldr r6, =0x0000fff0
|
|
ldr r7, =gBattleAnimArgs
|
|
ldrh r1, [r7]
|
|
movs r2, 0
|
|
ldrsh r0, [r7, r2]
|
|
cmp r0, 0
|
|
beq _08104448
|
|
mov r8, r4
|
|
movs r4, 0x20
|
|
mov r9, r6
|
|
movs r6, 0x10
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r5, 0
|
|
bl StartSpriteAnim
|
|
_08104448:
|
|
mov r0, r8
|
|
lsls r1, r0, 16
|
|
asrs r1, 16
|
|
ldrh r2, [r5, 0x20]
|
|
adds r1, r2
|
|
strh r1, [r5, 0x20]
|
|
lsls r0, r4, 16
|
|
asrs r0, 16
|
|
ldrh r2, [r5, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x22]
|
|
movs r0, 0x6
|
|
strh r0, [r5, 0x2E]
|
|
strh r1, [r5, 0x30]
|
|
ldr r4, =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
add r0, r9
|
|
strh r0, [r5, 0x32]
|
|
ldrh r0, [r5, 0x22]
|
|
strh r0, [r5, 0x34]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, r6
|
|
strh r0, [r5, 0x36]
|
|
adds r0, r5, 0
|
|
bl InitAnimLinearTranslation
|
|
ldrh r0, [r7]
|
|
strh r0, [r5, 0x38]
|
|
ldrh r0, [r5, 0x2E]
|
|
strh r0, [r5, 0x3A]
|
|
ldr r0, =sub_81044BC
|
|
str r0, [r5, 0x1C]
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104414
|
|
|
|
thumb_func_start sub_81044BC
|
|
sub_81044BC: @ 81044BC
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl TranslateAnimLinear
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08104520
|
|
adds r0, r4, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08104520
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl SeekSpriteAnim
|
|
adds r2, r4, 0
|
|
adds r2, 0x2C
|
|
ldrb r0, [r2]
|
|
movs r1, 0x40
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldrh r0, [r4, 0x24]
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
movs r2, 0
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r4, 0x26]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x22]
|
|
movs r0, 0x2
|
|
strh r0, [r4, 0x24]
|
|
ldr r0, =0x0000fffe
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x3A]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x30]
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x32]
|
|
eors r0, r1
|
|
strh r0, [r4, 0x32]
|
|
strh r2, [r4, 0x36]
|
|
strh r2, [r4, 0x34]
|
|
ldr r0, =sub_8104530
|
|
str r0, [r4, 0x1C]
|
|
_08104520:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81044BC
|
|
|
|
thumb_func_start sub_8104530
|
|
sub_8104530: @ 8104530
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _08104548
|
|
ldrh r0, [r4, 0x24]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x24]
|
|
ldrh r0, [r4, 0x26]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x26]
|
|
_08104548:
|
|
ldrh r0, [r4, 0x34]
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
movs r1, 0
|
|
strh r0, [r4, 0x34]
|
|
ldrh r0, [r4, 0x36]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x36]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x33
|
|
bne _0810458A
|
|
strh r1, [r4, 0x26]
|
|
strh r1, [r4, 0x24]
|
|
strh r1, [r4, 0x36]
|
|
strh r1, [r4, 0x34]
|
|
adds r2, r4, 0
|
|
adds r2, 0x2C
|
|
ldrb r1, [r2]
|
|
movs r0, 0x41
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
ldrh r0, [r4, 0x38]
|
|
movs r1, 0x1
|
|
eors r1, r0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl StartSpriteAnim
|
|
ldr r0, =sub_8104594
|
|
str r0, [r4, 0x1C]
|
|
_0810458A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104530
|
|
|
|
thumb_func_start sub_8104594
|
|
sub_8104594: @ 8104594
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl TranslateAnimLinear
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _081045A8
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_081045A8:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8104594
|
|
|
|
thumb_func_start sub_81045B0
|
|
sub_81045B0: @ 81045B0
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
movs r0, 0x1
|
|
bl GetAnimBattlerSpriteId
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl sub_80A7270
|
|
adds r0, r4, 0
|
|
movs r1, 0xD0
|
|
movs r2, 0xD0
|
|
movs r3, 0
|
|
bl obj_id_set_rotscale
|
|
ldr r1, =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x5]
|
|
lsrs r0, 4
|
|
adds r0, 0x10
|
|
movs r1, 0
|
|
bl sub_80A750C
|
|
ldr r1, =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r1, 0x50
|
|
strh r1, [r0, 0x8]
|
|
ldr r1, =sub_8104614
|
|
str r1, [r0]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81045B0
|
|
|
|
thumb_func_start sub_8104614
|
|
sub_8104614: @ 8104614
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldrh r1, [r0, 0x8]
|
|
subs r1, 0x1
|
|
strh r1, [r0, 0x8]
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bne _08104664
|
|
movs r0, 0x1
|
|
bl GetAnimBattlerSpriteId
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
bl sub_80A7344
|
|
ldr r1, =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x5]
|
|
lsrs r0, 4
|
|
adds r0, 0x10
|
|
movs r1, 0x1
|
|
bl sub_80A750C
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_08104664:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104614
|
|
|
|
thumb_func_start sub_8104674
|
|
sub_8104674: @ 8104674
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
ldr r0, =gTasks
|
|
adds r4, r0
|
|
movs r0, 0
|
|
bl GetAnimBattlerSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r5, 0
|
|
strh r0, [r4, 0x8]
|
|
movs r1, 0
|
|
bl sub_80A7270
|
|
strh r5, [r4, 0xA]
|
|
strh r5, [r4, 0xC]
|
|
strh r5, [r4, 0xE]
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
strh r0, [r4, 0x10]
|
|
strh r5, [r4, 0x12]
|
|
strh r5, [r4, 0x14]
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl sub_80A82E4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x16]
|
|
ldr r0, =sub_81046CC
|
|
str r0, [r4]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104674
|
|
|
|
thumb_func_start sub_81046CC
|
|
sub_81046CC: @ 81046CC
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0xA
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x5
|
|
bls _081046E6
|
|
b _081047F6
|
|
_081046E6:
|
|
lsls r0, 2
|
|
ldr r1, =_081046F8
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_081046F8:
|
|
.4byte _08104710
|
|
.4byte _08104758
|
|
.4byte _0810478E
|
|
.4byte _08104794
|
|
.4byte _081047A4
|
|
.4byte _081047D8
|
|
_08104710:
|
|
movs r2, 0xC
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
beq _08104720
|
|
cmp r0, 0x3
|
|
beq _08104720
|
|
cmp r0, 0x6
|
|
bne _08104728
|
|
_08104720:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl sub_8104800
|
|
_08104728:
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
ldrh r0, [r4, 0x10]
|
|
adds r0, 0x28
|
|
strh r0, [r4, 0x10]
|
|
ldrb r0, [r4, 0x8]
|
|
movs r1, 0x10
|
|
ldrsh r2, [r4, r1]
|
|
adds r1, r2, 0
|
|
movs r3, 0
|
|
bl obj_id_set_rotscale
|
|
ldrb r0, [r4, 0x8]
|
|
bl sub_80A7E6C
|
|
movs r2, 0xC
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x20
|
|
bne _081047F6
|
|
ldrh r0, [r4, 0x12]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x12]
|
|
b _081047D0
|
|
_08104758:
|
|
movs r1, 0x14
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _081047F6
|
|
movs r2, 0x12
|
|
ldrsh r1, [r4, r2]
|
|
cmp r1, 0x3
|
|
bne _0810476E
|
|
strh r0, [r4, 0xC]
|
|
strh r1, [r4, 0xA]
|
|
b _081047F6
|
|
_0810476E:
|
|
strh r0, [r4, 0xC]
|
|
strh r0, [r4, 0xE]
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
strh r2, [r4, 0x10]
|
|
ldrb r0, [r4, 0x8]
|
|
adds r1, r2, 0
|
|
movs r3, 0
|
|
bl obj_id_set_rotscale
|
|
ldrb r0, [r4, 0x8]
|
|
bl sub_80A7E6C
|
|
movs r0, 0x2
|
|
strh r0, [r4, 0xA]
|
|
b _081047F6
|
|
_0810478E:
|
|
movs r0, 0
|
|
strh r0, [r4, 0xA]
|
|
b _081047F6
|
|
_08104794:
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x20
|
|
ble _081047F6
|
|
b _081047CC
|
|
_081047A4:
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x2
|
|
strh r0, [r4, 0xC]
|
|
ldrh r0, [r4, 0x10]
|
|
subs r0, 0x50
|
|
strh r0, [r4, 0x10]
|
|
ldrb r0, [r4, 0x8]
|
|
movs r1, 0x10
|
|
ldrsh r2, [r4, r1]
|
|
adds r1, r2, 0
|
|
movs r3, 0
|
|
bl obj_id_set_rotscale
|
|
ldrb r0, [r4, 0x8]
|
|
bl sub_80A7E6C
|
|
movs r2, 0xC
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x20
|
|
bne _081047F6
|
|
_081047CC:
|
|
movs r0, 0
|
|
strh r0, [r4, 0xC]
|
|
_081047D0:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
b _081047F6
|
|
_081047D8:
|
|
ldrb r0, [r4, 0x8]
|
|
bl sub_80A7344
|
|
ldr r2, =gSprites
|
|
movs r0, 0x26
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
movs r1, 0
|
|
strh r1, [r0, 0x26]
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_081047F6:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81046CC
|
|
|
|
thumb_func_start sub_8104800
|
|
sub_8104800: @ 8104800
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
adds r7, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r9, r1
|
|
movs r0, 0
|
|
bl duplicate_obj_of_side_rel2move_in_transparent_mode
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
lsls r0, 16
|
|
asrs r4, r0, 16
|
|
cmp r4, 0
|
|
blt _081048DA
|
|
bl AllocOamMatrix
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
cmp r6, 0xFF
|
|
bne _08104844
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
ldr r1, =gSprites
|
|
adds r0, r1
|
|
bl obj_delete_but_dont_free_vram
|
|
b _081048DA
|
|
.pool
|
|
_08104844:
|
|
ldr r5, =gSprites
|
|
lsls r3, r4, 4
|
|
adds r3, r4
|
|
lsls r3, 2
|
|
adds r4, r3, r5
|
|
ldrb r1, [r4, 0x1]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r1
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
movs r1, 0x3
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x1]
|
|
adds r2, r4, 0
|
|
adds r2, 0x2C
|
|
ldrb r0, [r2]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
movs r0, 0x1F
|
|
ands r6, r0
|
|
lsls r2, r6, 1
|
|
ldrb r1, [r4, 0x3]
|
|
movs r0, 0x3F
|
|
negs r0, r0
|
|
ands r0, r1
|
|
orrs r0, r2
|
|
strb r0, [r4, 0x3]
|
|
ldrb r0, [r7, 0x16]
|
|
ldrb r1, [r7, 0xE]
|
|
subs r0, r1
|
|
adds r1, r4, 0
|
|
adds r1, 0x43
|
|
strb r0, [r1]
|
|
ldrh r0, [r7, 0xE]
|
|
adds r0, 0x1
|
|
strh r0, [r7, 0xE]
|
|
ldrh r0, [r7, 0x14]
|
|
adds r0, 0x1
|
|
strh r0, [r7, 0x14]
|
|
movs r0, 0x10
|
|
strh r0, [r4, 0x2E]
|
|
mov r0, r9
|
|
strh r0, [r4, 0x30]
|
|
movs r0, 0x6
|
|
strh r0, [r4, 0x32]
|
|
adds r5, 0x1C
|
|
adds r3, r5
|
|
ldr r0, =sub_81048F0
|
|
str r0, [r3]
|
|
mov r1, r8
|
|
lsls r0, r1, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x10
|
|
ldrsh r2, [r7, r1]
|
|
adds r1, r2, 0
|
|
movs r3, 0
|
|
bl obj_id_set_rotscale
|
|
ldrb r0, [r4, 0x1]
|
|
movs r3, 0x4
|
|
negs r3, r3
|
|
ands r3, r0
|
|
movs r0, 0x1
|
|
orrs r3, r0
|
|
strb r3, [r4, 0x1]
|
|
lsrs r1, r3, 6
|
|
ldrb r2, [r4, 0x3]
|
|
lsrs r2, 6
|
|
lsls r3, 30
|
|
lsrs r3, 30
|
|
adds r0, r4, 0
|
|
bl CalcCenterToCornerVec
|
|
_081048DA:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104800
|
|
|
|
thumb_func_start sub_81048F0
|
|
sub_81048F0: @ 81048F0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x2E]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _0810492E
|
|
ldr r3, =gTasks
|
|
movs r0, 0x32
|
|
ldrsh r1, [r4, r0]
|
|
lsls r1, 1
|
|
movs r0, 0x30
|
|
ldrsh r2, [r4, r0]
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
adds r1, r0
|
|
adds r3, 0x8
|
|
adds r1, r3
|
|
ldrh r0, [r1]
|
|
subs r0, 0x1
|
|
strh r0, [r1]
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
bl FreeOamMatrix
|
|
adds r0, r4, 0
|
|
bl obj_delete_but_dont_free_vram
|
|
_0810492E:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81048F0
|
|
|
|
thumb_func_start sub_8104938
|
|
sub_8104938: @ 8104938
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r4, r0, r1
|
|
ldr r5, =gBattleAnimArgs
|
|
movs r1, 0x2
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _08104964
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
b _0810498A
|
|
.pool
|
|
_08104964:
|
|
ldrb r0, [r5]
|
|
bl GetAnimBattlerSpriteId
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
movs r2, 0
|
|
strh r1, [r4, 0x8]
|
|
strh r2, [r4, 0xA]
|
|
ldrh r0, [r5, 0x2]
|
|
strh r0, [r4, 0xC]
|
|
strh r2, [r4, 0xE]
|
|
strh r2, [r4, 0x10]
|
|
ldr r2, =gUnknown_085935E8
|
|
adds r0, r4, 0
|
|
bl sub_80A7CFC
|
|
ldr r0, =sub_8104998
|
|
str r0, [r4]
|
|
_0810498A:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104938
|
|
|
|
thumb_func_start sub_8104998
|
|
sub_8104998: @ 8104998
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r4, r0, r1
|
|
movs r0, 0xA
|
|
ldrsh r5, [r4, r0]
|
|
cmp r5, 0x1
|
|
beq _08104A00
|
|
cmp r5, 0x1
|
|
bgt _081049C0
|
|
cmp r5, 0
|
|
beq _081049CA
|
|
b _08104AA8
|
|
.pool
|
|
_081049C0:
|
|
cmp r5, 0x2
|
|
beq _08104A34
|
|
cmp r5, 0x3
|
|
beq _08104A64
|
|
b _08104AA8
|
|
_081049CA:
|
|
adds r0, r4, 0
|
|
bl sub_80A7D34
|
|
ldrh r2, [r4, 0x10]
|
|
adds r2, 0x3
|
|
strh r2, [r4, 0x10]
|
|
ldr r3, =gSprites
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrh r1, [r0, 0x26]
|
|
adds r1, r2
|
|
strh r1, [r0, 0x26]
|
|
ldrh r0, [r4, 0xE]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xE]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x7
|
|
ble _08104AA8
|
|
strh r5, [r4, 0xE]
|
|
b _08104A5C
|
|
.pool
|
|
_08104A00:
|
|
adds r0, r4, 0
|
|
bl sub_80A7D34
|
|
ldr r2, =gSprites
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r4, 0x10]
|
|
ldrh r2, [r0, 0x26]
|
|
adds r1, r2
|
|
strh r1, [r0, 0x26]
|
|
ldrh r0, [r4, 0xE]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xE]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x7
|
|
ble _08104AA8
|
|
movs r0, 0
|
|
strh r0, [r4, 0xE]
|
|
b _08104A5C
|
|
.pool
|
|
_08104A34:
|
|
movs r1, 0x10
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _08104A5C
|
|
ldr r2, =gSprites
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r0, 0x26]
|
|
subs r1, 0x2
|
|
strh r1, [r0, 0x26]
|
|
ldrh r0, [r4, 0x10]
|
|
subs r0, 0x2
|
|
strh r0, [r4, 0x10]
|
|
b _08104AA8
|
|
.pool
|
|
_08104A5C:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
b _08104AA8
|
|
_08104A64:
|
|
adds r0, r4, 0
|
|
bl sub_80A7D34
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0
|
|
bne _08104AA8
|
|
ldrh r0, [r4, 0xC]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08104A9C
|
|
ldr r2, =gSprites
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
strh r5, [r0, 0x26]
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
b _08104AA8
|
|
.pool
|
|
_08104A9C:
|
|
ldrb r1, [r4, 0x8]
|
|
ldr r2, =gUnknown_085935E8
|
|
adds r0, r4, 0
|
|
bl sub_80A7CFC
|
|
strh r5, [r4, 0xA]
|
|
_08104AA8:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104998
|
|
|
|
thumb_func_start sub_8104AB4
|
|
sub_8104AB4: @ 8104AB4
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
ldr r0, =gTasks
|
|
adds r4, r0
|
|
movs r0, 0
|
|
bl GetAnimBattlerSpriteId
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r2, =gUnknown_08593608
|
|
adds r0, r4, 0
|
|
bl sub_80A7CFC
|
|
ldr r0, =sub_8104AF0
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104AB4
|
|
|
|
thumb_func_start sub_8104AF0
|
|
sub_8104AF0: @ 8104AF0
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r0, r1
|
|
bl sub_80A7D34
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08104B10
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_08104B10:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104AF0
|
|
|
|
thumb_func_start sub_8104B1C
|
|
sub_8104B1C: @ 8104B1C
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, =gBattleAnimAttacker
|
|
ldrb r0, [r5]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08104B50
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl StartSpriteAnim
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x20
|
|
strh r0, [r4, 0x20]
|
|
movs r0, 0x40
|
|
b _08104B6A
|
|
.pool
|
|
_08104B50:
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAnim
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
subs r0, 0x20
|
|
strh r0, [r4, 0x20]
|
|
ldr r0, =0x0000ffc0
|
|
_08104B6A:
|
|
strh r0, [r4, 0x30]
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0
|
|
strh r0, [r4, 0x22]
|
|
movs r0, 0x34
|
|
strh r0, [r4, 0x2E]
|
|
strh r1, [r4, 0x32]
|
|
strh r1, [r4, 0x34]
|
|
strh r1, [r4, 0x36]
|
|
ldr r1, =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, =sub_80A656C
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104B1C
|
|
|
|
thumb_func_start sub_8104BAC
|
|
sub_8104BAC: @ 8104BAC
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
ldr r0, =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _08104BC8
|
|
ldr r0, =gBattleAnimAttacker
|
|
b _08104BCA
|
|
.pool
|
|
_08104BC8:
|
|
ldr r0, =gBattleAnimTarget
|
|
_08104BCA:
|
|
ldrb r5, [r0]
|
|
adds r0, r5, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08104BE4
|
|
ldr r1, =gBattleAnimArgs
|
|
movs r2, 0x2
|
|
ldrsh r0, [r1, r2]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x2]
|
|
_08104BE4:
|
|
adds r0, r5, 0
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
ldr r4, =gBattleAnimArgs
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x2]
|
|
adds r0, r1
|
|
strh r0, [r6, 0x20]
|
|
adds r0, r5, 0
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r4, [r4, 0x4]
|
|
adds r0, r4
|
|
strh r0, [r6, 0x22]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x7
|
|
bgt _08104C16
|
|
movs r0, 0x8
|
|
strh r0, [r6, 0x22]
|
|
_08104C16:
|
|
ldr r1, =move_anim_8074EE0
|
|
adds r0, r6, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, =sub_80A67BC
|
|
str r0, [r6, 0x1C]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104BAC
|
|
|
|
thumb_func_start sub_8104C38
|
|
sub_8104C38: @ 8104C38
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
ldr r0, =gTasks
|
|
adds r4, r0
|
|
movs r0, 0
|
|
bl GetAnimBattlerSpriteId
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
movs r0, 0
|
|
strh r1, [r4, 0x8]
|
|
strh r0, [r4, 0xA]
|
|
ldr r2, =gUnknown_085936A4
|
|
adds r0, r4, 0
|
|
bl sub_80A7CFC
|
|
ldr r0, =sub_8104C78
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104C38
|
|
|
|
thumb_func_start sub_8104C78
|
|
sub_8104C78: @ 8104C78
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r0, r1
|
|
bl sub_80A7D34
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08104C98
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_08104C98:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104C78
|
|
|
|
thumb_func_start sub_8104CA4
|
|
sub_8104CA4: @ 8104CA4
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, =gTasks
|
|
adds r4, r1, r0
|
|
movs r0, 0
|
|
bl GetAnimBattlerSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r2, 0
|
|
strh r0, [r4, 0x8]
|
|
strh r2, [r4, 0xA]
|
|
movs r0, 0x4
|
|
strh r0, [r4, 0xC]
|
|
movs r0, 0x7
|
|
strh r0, [r4, 0xE]
|
|
movs r0, 0x3
|
|
strh r0, [r4, 0x10]
|
|
ldr r3, =gSprites
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrh r0, [r0, 0x20]
|
|
strh r0, [r4, 0x12]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrh r0, [r0, 0x22]
|
|
strh r0, [r4, 0x14]
|
|
strh r2, [r4, 0x16]
|
|
strh r2, [r4, 0x18]
|
|
movs r0, 0x2
|
|
strh r0, [r4, 0x1A]
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08104D0E
|
|
movs r1, 0xC
|
|
ldrsh r0, [r4, r1]
|
|
negs r0, r0
|
|
strh r0, [r4, 0xC]
|
|
_08104D0E:
|
|
ldr r0, =sub_8104D28
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104CA4
|
|
|
|
thumb_func_start sub_8104D28
|
|
sub_8104D28: @ 8104D28
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r3, r0, r1
|
|
ldrh r0, [r3, 0x16]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x16]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x2
|
|
ble _08104D8E
|
|
movs r0, 0
|
|
strh r0, [r3, 0x16]
|
|
ldrh r0, [r3, 0x18]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x18]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08104D78
|
|
ldr r2, =gSprites
|
|
movs r0, 0x8
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r3, 0x1A]
|
|
ldrh r2, [r0, 0x22]
|
|
adds r1, r2
|
|
b _08104D8C
|
|
.pool
|
|
_08104D78:
|
|
ldr r2, =gSprites
|
|
movs r5, 0x8
|
|
ldrsh r1, [r3, r5]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r0, 0x22]
|
|
ldrh r2, [r3, 0x1A]
|
|
subs r1, r2
|
|
_08104D8C:
|
|
strh r1, [r0, 0x22]
|
|
_08104D8E:
|
|
movs r1, 0xA
|
|
ldrsh r0, [r3, r1]
|
|
cmp r0, 0x1
|
|
beq _08104DDC
|
|
cmp r0, 0x1
|
|
bgt _08104DA4
|
|
cmp r0, 0
|
|
beq _08104DAA
|
|
b _08104E6C
|
|
.pool
|
|
_08104DA4:
|
|
cmp r0, 0x2
|
|
beq _08104E0C
|
|
b _08104E6C
|
|
_08104DAA:
|
|
ldr r2, =gSprites
|
|
movs r5, 0x8
|
|
ldrsh r1, [r3, r5]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r3, 0xC]
|
|
ldrh r2, [r0, 0x20]
|
|
adds r1, r2
|
|
strh r1, [r0, 0x20]
|
|
ldrh r0, [r3, 0xE]
|
|
subs r0, 0x1
|
|
strh r0, [r3, 0xE]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08104E6C
|
|
movs r0, 0xE
|
|
strh r0, [r3, 0xE]
|
|
movs r0, 0x1
|
|
strh r0, [r3, 0xA]
|
|
b _08104E6C
|
|
.pool
|
|
_08104DDC:
|
|
ldr r2, =gSprites
|
|
movs r5, 0x8
|
|
ldrsh r1, [r3, r5]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r0, 0x20]
|
|
ldrh r2, [r3, 0xC]
|
|
subs r1, r2
|
|
strh r1, [r0, 0x20]
|
|
ldrh r0, [r3, 0xE]
|
|
subs r0, 0x1
|
|
strh r0, [r3, 0xE]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08104E6C
|
|
movs r0, 0x7
|
|
strh r0, [r3, 0xE]
|
|
movs r0, 0x2
|
|
strh r0, [r3, 0xA]
|
|
b _08104E6C
|
|
.pool
|
|
_08104E0C:
|
|
ldr r2, =gSprites
|
|
movs r0, 0x8
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r3, 0xC]
|
|
ldrh r5, [r0, 0x20]
|
|
adds r1, r5
|
|
strh r1, [r0, 0x20]
|
|
ldrh r0, [r3, 0xE]
|
|
subs r0, 0x1
|
|
strh r0, [r3, 0xE]
|
|
lsls r0, 16
|
|
asrs r1, r0, 16
|
|
cmp r1, 0
|
|
bne _08104E6C
|
|
ldrh r0, [r3, 0x10]
|
|
subs r0, 0x1
|
|
strh r0, [r3, 0x10]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _08104E48
|
|
movs r0, 0x7
|
|
strh r0, [r3, 0xE]
|
|
strh r1, [r3, 0xA]
|
|
b _08104E6C
|
|
.pool
|
|
_08104E48:
|
|
ldrh r1, [r3, 0x18]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08104E66
|
|
movs r0, 0x8
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r0, 0x22]
|
|
ldrh r2, [r3, 0x1A]
|
|
subs r1, r2
|
|
strh r1, [r0, 0x22]
|
|
_08104E66:
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_08104E6C:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8104D28
|
|
|
|
thumb_func_start sub_8104E74
|
|
sub_8104E74: @ 8104E74
|
|
push {r4-r6,lr}
|
|
sub sp, 0xC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, =gTasks
|
|
adds r5, r1, r0
|
|
ldr r4, =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
bl GetBattlerYCoordWithElevation
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x20
|
|
movs r1, 0
|
|
strh r0, [r5, 0x8]
|
|
movs r0, 0x4
|
|
strh r0, [r5, 0xA]
|
|
strh r1, [r5, 0xC]
|
|
strh r1, [r5, 0xE]
|
|
strh r1, [r5, 0x10]
|
|
strh r1, [r5, 0x12]
|
|
ldrb r0, [r4]
|
|
bl sub_80A861C
|
|
strh r0, [r5, 0x26]
|
|
ldrb r0, [r4]
|
|
bl sub_80A8364
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08104ED4
|
|
ldr r0, =gBattle_BG1_X
|
|
ldrh r0, [r0]
|
|
strh r0, [r5, 0x14]
|
|
ldr r0, =0x04000014
|
|
b _08104EDC
|
|
.pool
|
|
_08104ED4:
|
|
ldr r0, =gBattle_BG2_X
|
|
ldrh r0, [r0]
|
|
strh r0, [r5, 0x14]
|
|
ldr r0, =0x04000018
|
|
_08104EDC:
|
|
str r0, [sp]
|
|
ldrh r0, [r5, 0x8]
|
|
adds r1, r0, 0
|
|
subs r1, 0x40
|
|
lsls r2, r1, 16
|
|
lsls r0, 16
|
|
cmp r2, r0
|
|
bgt _08104F1A
|
|
ldr r4, =gScanlineEffectRegBuffers
|
|
movs r0, 0xF0
|
|
lsls r0, 3
|
|
adds r6, r4, r0
|
|
_08104EF4:
|
|
asrs r3, r2, 16
|
|
cmp r3, 0
|
|
blt _08104F0C
|
|
lsls r1, r3, 1
|
|
adds r2, r1, r4
|
|
ldrh r0, [r5, 0x14]
|
|
adds r0, 0xF0
|
|
strh r0, [r2]
|
|
adds r1, r6
|
|
ldrh r0, [r5, 0x14]
|
|
adds r0, 0xF0
|
|
strh r0, [r1]
|
|
_08104F0C:
|
|
adds r0, r3, 0x1
|
|
lsls r2, r0, 16
|
|
asrs r1, r2, 16
|
|
movs r3, 0x8
|
|
ldrsh r0, [r5, r3]
|
|
cmp r1, r0
|
|
ble _08104EF4
|
|
_08104F1A:
|
|
ldr r0, =0xa2600001
|
|
str r0, [sp, 0x4]
|
|
mov r1, sp
|
|
movs r2, 0
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x8]
|
|
mov r0, sp
|
|
strb r2, [r0, 0x9]
|
|
ldr r0, [sp]
|
|
ldr r1, [sp, 0x4]
|
|
ldr r2, [sp, 0x8]
|
|
bl ScanlineEffect_SetParams
|
|
ldr r0, =sub_8104F54
|
|
str r0, [r5]
|
|
add sp, 0xC
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104E74
|
|
|
|
thumb_func_start sub_8104F54
|
|
sub_8104F54: @ 8104F54
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r3, r0, r1
|
|
movs r1, 0x10
|
|
ldrsh r0, [r3, r1]
|
|
cmp r0, 0
|
|
beq _08104F78
|
|
cmp r0, 0x1
|
|
beq _08104F8E
|
|
b _0810500E
|
|
.pool
|
|
_08104F78:
|
|
ldrh r0, [r3, 0x12]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x12]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x14
|
|
ble _0810500E
|
|
ldrh r0, [r3, 0x10]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x10]
|
|
b _0810500E
|
|
_08104F8E:
|
|
ldrh r0, [r3, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x3
|
|
ble _0810500E
|
|
movs r0, 0
|
|
strh r0, [r3, 0xA]
|
|
ldrh r1, [r3, 0xE]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
strh r0, [r3, 0xC]
|
|
ldrh r0, [r3, 0x8]
|
|
subs r0, r1
|
|
strh r0, [r3, 0x12]
|
|
movs r2, 0xC
|
|
ldrsh r1, [r3, r2]
|
|
cmp r1, 0x1
|
|
beq _08104FC4
|
|
cmp r1, 0x1
|
|
ble _08104FCC
|
|
cmp r1, 0x2
|
|
beq _08104FC8
|
|
cmp r1, 0x3
|
|
beq _08104FC8
|
|
b _08104FCC
|
|
_08104FC4:
|
|
subs r0, 0x2
|
|
b _08104FCA
|
|
_08104FC8:
|
|
adds r0, 0x1
|
|
_08104FCA:
|
|
strh r0, [r3, 0x12]
|
|
_08104FCC:
|
|
movs r1, 0x12
|
|
ldrsh r0, [r3, r1]
|
|
cmp r0, 0
|
|
blt _08104FF0
|
|
ldr r2, =gScanlineEffectRegBuffers
|
|
lsls r0, 1
|
|
adds r0, r2
|
|
ldrh r1, [r3, 0x14]
|
|
strh r1, [r0]
|
|
movs r1, 0x12
|
|
ldrsh r0, [r3, r1]
|
|
lsls r0, 1
|
|
movs r1, 0xF0
|
|
lsls r1, 3
|
|
adds r2, r1
|
|
adds r0, r2
|
|
ldrh r1, [r3, 0x14]
|
|
strh r1, [r0]
|
|
_08104FF0:
|
|
ldrh r0, [r3, 0xE]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0xE]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r2, 0x26
|
|
ldrsh r1, [r3, r2]
|
|
cmp r0, r1
|
|
blt _0810500E
|
|
ldr r1, =gScanlineEffect
|
|
movs r0, 0x3
|
|
strb r0, [r1, 0x15]
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_0810500E:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8104F54
|
|
|
|
thumb_func_start sub_810501C
|
|
sub_810501C: @ 810501C
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
ldr r6, =gBattleAnimTarget
|
|
ldrb r0, [r6]
|
|
movs r1, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
subs r0, 0x10
|
|
movs r5, 0
|
|
strh r0, [r4, 0x20]
|
|
ldrb r0, [r6]
|
|
bl GetBattlerYCoordWithElevation
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x10
|
|
strh r0, [r4, 0x22]
|
|
strh r5, [r4, 0x2E]
|
|
strh r5, [r4, 0x30]
|
|
strh r5, [r4, 0x32]
|
|
movs r0, 0x10
|
|
strh r0, [r4, 0x34]
|
|
strh r5, [r4, 0x36]
|
|
ldrb r0, [r6]
|
|
movs r1, 0
|
|
bl sub_80A861C
|
|
adds r0, 0x2
|
|
strh r0, [r4, 0x38]
|
|
movs r0, 0x3F
|
|
bl BattleAnimAdjustPanning
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
strh r0, [r4, 0x3A]
|
|
ldr r0, =sub_8105078
|
|
str r0, [r4, 0x1C]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_810501C
|
|
|
|
thumb_func_start sub_8105078
|
|
sub_8105078: @ 8105078
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r4, r0]
|
|
cmp r1, 0x1
|
|
beq _081050DC
|
|
cmp r1, 0x1
|
|
bgt _0810508E
|
|
cmp r1, 0
|
|
beq _08105094
|
|
b _081051BC
|
|
_0810508E:
|
|
cmp r1, 0x2
|
|
beq _0810516E
|
|
b _081051BC
|
|
_08105094:
|
|
ldrh r0, [r4, 0x32]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _081050BE
|
|
strh r1, [r4, 0x32]
|
|
adds r3, r4, 0
|
|
adds r3, 0x3E
|
|
ldrb r2, [r3]
|
|
lsrs r1, r2, 2
|
|
movs r0, 0x1
|
|
eors r1, r0
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
_081050BE:
|
|
ldrh r0, [r4, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x10
|
|
ble _081051BC
|
|
adds r2, r4, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x5
|
|
negs r1, r1
|
|
ands r1, r0
|
|
strb r1, [r2]
|
|
b _08105166
|
|
_081050DC:
|
|
ldrh r0, [r4, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x3
|
|
ble _08105122
|
|
ldrh r2, [r4, 0x32]
|
|
movs r3, 0x32
|
|
ldrsh r1, [r4, r3]
|
|
movs r3, 0x38
|
|
ldrsh r0, [r4, r3]
|
|
cmp r1, r0
|
|
bge _08105122
|
|
movs r0, 0
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x22]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x22]
|
|
adds r0, r2, 0x1
|
|
strh r0, [r4, 0x32]
|
|
movs r1, 0x32
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0xA
|
|
bl __modsi3
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08105122
|
|
ldrh r1, [r4, 0x3A]
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r0, 0xCD
|
|
bl PlaySE12WithPanning
|
|
_08105122:
|
|
ldrh r0, [r4, 0x34]
|
|
ldrh r2, [r4, 0x36]
|
|
adds r1, r0, r2
|
|
strh r1, [r4, 0x36]
|
|
lsls r0, r1, 16
|
|
asrs r2, r0, 16
|
|
cmp r2, 0x1F
|
|
ble _08105136
|
|
movs r0, 0x40
|
|
b _08105144
|
|
_08105136:
|
|
movs r0, 0x20
|
|
negs r0, r0
|
|
cmp r2, r0
|
|
bgt _08105150
|
|
movs r2, 0x40
|
|
negs r2, r2
|
|
adds r0, r2, 0
|
|
_08105144:
|
|
subs r0, r1
|
|
strh r0, [r4, 0x36]
|
|
movs r3, 0x34
|
|
ldrsh r0, [r4, r3]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x34]
|
|
_08105150:
|
|
ldrh r0, [r4, 0x36]
|
|
movs r2, 0
|
|
strh r0, [r4, 0x24]
|
|
movs r0, 0x38
|
|
ldrsh r1, [r4, r0]
|
|
movs r3, 0x32
|
|
ldrsh r0, [r4, r3]
|
|
cmp r1, r0
|
|
bne _081051BC
|
|
strh r2, [r4, 0x30]
|
|
strh r2, [r4, 0x32]
|
|
_08105166:
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _081051BC
|
|
_0810516E:
|
|
ldrh r0, [r4, 0x32]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _0810519A
|
|
movs r0, 0
|
|
strh r0, [r4, 0x32]
|
|
adds r3, r4, 0
|
|
adds r3, 0x3E
|
|
ldrb r2, [r3]
|
|
lsrs r1, r2, 2
|
|
movs r0, 0x1
|
|
eors r1, r0
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
_0810519A:
|
|
ldrh r0, [r4, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x10
|
|
ble _081051BC
|
|
adds r2, r4, 0
|
|
adds r2, 0x3E
|
|
ldrb r1, [r2]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_081051BC:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8105078
|
|
|
|
thumb_func_start sub_81051C4
|
|
sub_81051C4: @ 81051C4
|
|
push {r4-r7,lr}
|
|
sub sp, 0x4
|
|
adds r6, r0, 0
|
|
movs r5, 0
|
|
mov r0, sp
|
|
strh r5, [r0]
|
|
mov r1, sp
|
|
adds r1, 0x2
|
|
strh r5, [r1]
|
|
ldr r0, =gBattleAnimArgs
|
|
movs r3, 0x4
|
|
ldrsh r2, [r0, r3]
|
|
adds r7, r1, 0
|
|
adds r1, r0, 0
|
|
cmp r2, 0
|
|
bne _081051F0
|
|
ldr r0, =gBattleAnimAttacker
|
|
b _081051F2
|
|
.pool
|
|
_081051F0:
|
|
ldr r0, =gBattleAnimTarget
|
|
_081051F2:
|
|
ldrb r5, [r0]
|
|
ldrb r1, [r1, 0x6]
|
|
movs r0, 0x1
|
|
adds r4, r0, 0
|
|
eors r4, r1
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0810526A
|
|
movs r1, 0x2
|
|
adds r0, r5, 0
|
|
eors r0, r1
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0810526A
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
mov r2, sp
|
|
adds r3, r7, 0
|
|
bl SetAverageBattlerPositions
|
|
cmp r4, 0
|
|
bne _08105230
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
b _08105234
|
|
.pool
|
|
_08105230:
|
|
adds r0, r5, 0
|
|
movs r1, 0x2
|
|
_08105234:
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r5, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08105260
|
|
ldr r2, =gBattleAnimArgs
|
|
mov r0, sp
|
|
ldrh r1, [r0]
|
|
subs r1, r4
|
|
ldrh r0, [r2]
|
|
subs r1, r0
|
|
subs r0, r1
|
|
strh r0, [r2]
|
|
b _0810526A
|
|
.pool
|
|
_08105260:
|
|
ldr r1, =gBattleAnimArgs
|
|
mov r0, sp
|
|
ldrh r0, [r0]
|
|
subs r0, r4
|
|
strh r0, [r1]
|
|
_0810526A:
|
|
ldr r1, =sub_80A77C8
|
|
str r1, [r6, 0x1C]
|
|
adds r0, r6, 0
|
|
bl _call_via_r1
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81051C4
|
|
|
|
thumb_func_start sub_8105284
|
|
sub_8105284: @ 8105284
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl TranslateAnimLinear
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0810529E
|
|
adds r0, r4, 0
|
|
bl FreeSpriteOamMatrix
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_0810529E:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8105284
|
|
|
|
thumb_func_start sub_81052A4
|
|
sub_81052A4: @ 81052A4
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
adds r5, r0, 0
|
|
movs r6, 0
|
|
mov r0, sp
|
|
strh r6, [r0]
|
|
mov r1, sp
|
|
adds r1, 0x2
|
|
strh r6, [r1]
|
|
ldr r0, =gBattleAnimArgs
|
|
movs r2, 0xA
|
|
ldrsh r0, [r0, r2]
|
|
cmp r0, 0
|
|
bne _081052DC
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r7, [r0]
|
|
ldr r0, =gBattleAnimTarget
|
|
b _081052E2
|
|
.pool
|
|
_081052DC:
|
|
ldr r0, =gBattleAnimTarget
|
|
ldrb r7, [r0]
|
|
ldr r0, =gBattleAnimAttacker
|
|
_081052E2:
|
|
ldrb r0, [r0]
|
|
mov r8, r0
|
|
ldr r0, =gBattleAnimArgs
|
|
movs r3, 0xC
|
|
ldrsh r0, [r0, r3]
|
|
cmp r0, 0
|
|
bne _08105308
|
|
movs r0, 0
|
|
mov r10, r0
|
|
movs r1, 0x1
|
|
str r1, [sp, 0x4]
|
|
b _08105310
|
|
.pool
|
|
_08105308:
|
|
movs r2, 0x2
|
|
mov r10, r2
|
|
movs r3, 0x3
|
|
str r3, [sp, 0x4]
|
|
_08105310:
|
|
adds r0, r7, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0810536C
|
|
adds r0, r7, 0
|
|
mov r1, r10
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
ldr r1, =gBattleAnimArgs
|
|
lsrs r0, 24
|
|
ldrh r1, [r1]
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r9, r0
|
|
movs r0, 0x2
|
|
mov r4, r8
|
|
eors r4, r0
|
|
adds r0, r4, 0
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0810535C
|
|
ldr r2, =gSprites
|
|
ldr r0, =gBattlerSpriteIds
|
|
adds r0, r4, r0
|
|
b _081053EA
|
|
.pool
|
|
_0810535C:
|
|
ldr r2, =gSprites
|
|
ldr r0, =gBattlerSpriteIds
|
|
add r0, r8
|
|
b _081053EA
|
|
.pool
|
|
_0810536C:
|
|
adds r0, r7, 0
|
|
mov r1, r10
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r1, [r1]
|
|
subs r0, r1
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r9, r0
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _081053E4
|
|
movs r0, 0x2
|
|
adds r4, r7, 0
|
|
eors r4, r0
|
|
adds r0, r4, 0
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _081053E4
|
|
ldr r3, =gSprites
|
|
ldr r2, =gBattlerSpriteIds
|
|
adds r0, r7, r2
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r6, r0, r3
|
|
adds r2, r4, r2
|
|
ldrb r1, [r2]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r2, r0, r3
|
|
movs r0, 0x20
|
|
ldrsh r1, [r6, r0]
|
|
movs r3, 0x20
|
|
ldrsh r0, [r2, r3]
|
|
cmp r1, r0
|
|
bge _081053E0
|
|
adds r0, r2, 0
|
|
adds r0, 0x43
|
|
ldrb r0, [r0]
|
|
adds r0, 0x1
|
|
b _081053FA
|
|
.pool
|
|
_081053E0:
|
|
adds r0, r6, 0
|
|
b _081053F4
|
|
_081053E4:
|
|
ldr r2, =gSprites
|
|
ldr r0, =gBattlerSpriteIds
|
|
adds r0, r7, r0
|
|
_081053EA:
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
_081053F4:
|
|
adds r0, 0x43
|
|
ldrb r0, [r0]
|
|
subs r0, 0x1
|
|
_081053FA:
|
|
adds r1, r5, 0
|
|
adds r1, 0x43
|
|
strb r0, [r1]
|
|
adds r0, r7, 0
|
|
ldr r1, [sp, 0x4]
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
ldr r4, =gBattleAnimArgs
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x2]
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0810544C
|
|
movs r1, 0x2
|
|
mov r0, r8
|
|
eors r0, r1
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0810544C
|
|
ldrb r1, [r4, 0xC]
|
|
mov r0, r8
|
|
mov r2, sp
|
|
mov r3, sp
|
|
adds r3, 0x2
|
|
bl SetAverageBattlerPositions
|
|
b _0810546C
|
|
.pool
|
|
_0810544C:
|
|
mov r4, sp
|
|
mov r0, r8
|
|
mov r1, r10
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4]
|
|
mov r0, r8
|
|
ldr r1, [sp, 0x4]
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r2, sp
|
|
strh r0, [r2, 0x2]
|
|
_0810546C:
|
|
mov r0, r8
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08105490
|
|
mov r3, sp
|
|
mov r2, sp
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x6]
|
|
ldrh r2, [r2]
|
|
adds r0, r2
|
|
strh r0, [r3]
|
|
adds r2, r1, 0
|
|
b _0810549E
|
|
.pool
|
|
_08105490:
|
|
mov r3, sp
|
|
mov r0, sp
|
|
ldr r2, =gBattleAnimArgs
|
|
ldrh r0, [r0]
|
|
ldrh r1, [r2, 0x6]
|
|
subs r0, r1
|
|
strh r0, [r3]
|
|
_0810549E:
|
|
ldrh r1, [r2, 0x8]
|
|
mov r3, sp
|
|
ldrh r3, [r3, 0x2]
|
|
adds r1, r3
|
|
mov r0, sp
|
|
strh r1, [r0, 0x2]
|
|
mov r3, r9
|
|
strh r3, [r5, 0x30]
|
|
strh r3, [r5, 0x20]
|
|
strh r6, [r5, 0x34]
|
|
strh r6, [r5, 0x22]
|
|
ldrh r0, [r0]
|
|
strh r0, [r5, 0x32]
|
|
strh r1, [r5, 0x36]
|
|
ldrh r0, [r2]
|
|
strh r0, [r5, 0x2E]
|
|
adds r0, r5, 0
|
|
bl InitAnimLinearTranslation
|
|
ldr r1, =sub_8105284
|
|
str r1, [r5, 0x1C]
|
|
adds r0, r5, 0
|
|
bl _call_via_r1
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81052A4
|
|
|
|
thumb_func_start sub_81054E8
|
|
sub_81054E8: @ 81054E8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, =0x000027db
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0xFF
|
|
beq _0810550E
|
|
lsls r0, 20
|
|
ldr r1, =0x01010000
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrb r2, [r1, 0xA]
|
|
ldrh r3, [r1, 0x8]
|
|
movs r1, 0xF
|
|
bl BlendPalette
|
|
_0810550E:
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
ldr r1, =sub_80A77C8
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81054E8
|
|
|
|
thumb_func_start sub_8105538
|
|
sub_8105538: @ 8105538
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0
|
|
bl InitAnimSpritePos
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
movs r1, 0xA0
|
|
cmp r0, 0
|
|
beq _08105554
|
|
ldr r1, =0x0000ff60
|
|
_08105554:
|
|
movs r0, 0xE0
|
|
lsls r0, 2
|
|
strh r0, [r4, 0x2E]
|
|
strh r1, [r4, 0x30]
|
|
ldr r0, =gBattleAnimArgs
|
|
ldrh r0, [r0, 0x4]
|
|
strh r0, [r4, 0x3C]
|
|
ldr r0, =sub_810557C
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8105538
|
|
|
|
thumb_func_start sub_810557C
|
|
sub_810557C: @ 810557C
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldrh r2, [r4, 0x2E]
|
|
lsls r0, r2, 16
|
|
asrs r0, 24
|
|
ldrh r1, [r4, 0x26]
|
|
subs r1, r0
|
|
movs r5, 0
|
|
strh r1, [r4, 0x26]
|
|
ldrh r0, [r4, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
strh r0, [r4, 0x24]
|
|
subs r2, 0x20
|
|
strh r2, [r4, 0x2E]
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
movs r1, 0xA0
|
|
cmp r0, 0
|
|
beq _081055AC
|
|
ldr r1, =0x0000ff60
|
|
_081055AC:
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
ldrh r1, [r4, 0x30]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x30]
|
|
ldrh r1, [r4, 0x26]
|
|
movs r2, 0x26
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
ble _081055E0
|
|
ldrh r2, [r4, 0x22]
|
|
adds r0, r1, r2
|
|
strh r0, [r4, 0x22]
|
|
ldrh r0, [r4, 0x24]
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x20]
|
|
strh r5, [r4, 0x26]
|
|
strh r5, [r4, 0x24]
|
|
strh r5, [r4, 0x2E]
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
ldr r0, =sub_81055F4
|
|
str r0, [r4, 0x1C]
|
|
_081055E0:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_810557C
|
|
|
|
thumb_func_start sub_81055F4
|
|
sub_81055F4: @ 81055F4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r1, r0, 0x1
|
|
strh r1, [r4, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x13
|
|
ble _08105612
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
bl StartSpriteAffineAnim
|
|
ldr r0, =sub_810561C
|
|
str r0, [r4, 0x1C]
|
|
_08105612:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81055F4
|
|
|
|
thumb_func_start sub_810561C
|
|
sub_810561C: @ 810561C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08105682
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
movs r0, 0
|
|
strh r0, [r4, 0x2E]
|
|
movs r1, 0x3C
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08105668
|
|
ldrh r2, [r4, 0x4]
|
|
lsls r1, r2, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x10
|
|
ldr r3, =0x000003ff
|
|
adds r0, r3, 0
|
|
ands r1, r0
|
|
ldr r0, =0xfffffc00
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r4, 0x4]
|
|
ldr r0, =sub_8105694
|
|
b _08105680
|
|
.pool
|
|
_08105668:
|
|
ldrh r2, [r4, 0x4]
|
|
lsls r1, r2, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x20
|
|
ldr r3, =0x000003ff
|
|
adds r0, r3, 0
|
|
ands r1, r0
|
|
ldr r0, =0xfffffc00
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r4, 0x4]
|
|
ldr r0, =sub_810571C
|
|
_08105680:
|
|
str r0, [r4, 0x1C]
|
|
_08105682:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_810561C
|
|
|
|
thumb_func_start sub_8105694
|
|
sub_8105694: @ 8105694
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x26]
|
|
subs r0, 0x2
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x9
|
|
bne _081056CA
|
|
movs r0, 0x10
|
|
strh r0, [r4, 0x2E]
|
|
movs r0, 0
|
|
strh r0, [r4, 0x30]
|
|
movs r1, 0xFD
|
|
lsls r1, 6
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
ldrh r1, [r4, 0x2E]
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
ldr r0, =sub_81056D4
|
|
str r0, [r4, 0x1C]
|
|
_081056CA:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8105694
|
|
|
|
thumb_func_start sub_81056D4
|
|
sub_81056D4: @ 81056D4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x30]
|
|
adds r1, r0, 0x1
|
|
strh r1, [r4, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x3
|
|
bl __modsi3
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08105712
|
|
ldrh r1, [r4, 0x2E]
|
|
subs r1, 0x1
|
|
strh r1, [r4, 0x2E]
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08105712
|
|
ldr r0, =sub_810571C
|
|
str r0, [r4, 0x1C]
|
|
_08105712:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81056D4
|
|
|
|
thumb_func_start sub_810571C
|
|
sub_810571C: @ 810571C
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
ldr r0, =gBattleAnimArgs
|
|
ldrh r1, [r0, 0xE]
|
|
ldr r0, =0x0000ffff
|
|
cmp r1, r0
|
|
bne _08105754
|
|
adds r2, r3, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
movs r1, 0x3C
|
|
ldrsh r0, [r3, r1]
|
|
cmp r0, 0
|
|
bne _08105750
|
|
ldr r0, =sub_810575C
|
|
b _08105752
|
|
.pool
|
|
_08105750:
|
|
ldr r0, =DestroyAnimSprite
|
|
_08105752:
|
|
str r0, [r3, 0x1C]
|
|
_08105754:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_810571C
|
|
|
|
thumb_func_start sub_810575C
|
|
sub_810575C: @ 810575C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_810575C
|
|
|
|
thumb_func_start sub_810577C
|
|
sub_810577C: @ 810577C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
ldr r0, =gTasks
|
|
adds r4, r0
|
|
movs r0, 0
|
|
bl GetAnimBattlerSpriteId
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
strh r1, [r4, 0x8]
|
|
ldr r2, =gUnknown_085938B0
|
|
adds r0, r4, 0
|
|
bl sub_80A7CFC
|
|
ldr r0, =sub_81057B8
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_810577C
|
|
|
|
thumb_func_start sub_81057B8
|
|
sub_81057B8: @ 81057B8
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r4, r0, r1
|
|
adds r0, r4, 0
|
|
bl sub_80A7D34
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
cmp r3, 0
|
|
bne _08105802
|
|
ldr r2, =gSprites
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
strh r3, [r0, 0x26]
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
adds r0, 0x3E
|
|
ldrb r1, [r0]
|
|
movs r2, 0x4
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_08105802:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81057B8
|
|
|
|
thumb_func_start sub_8105810
|
|
sub_8105810: @ 8105810
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, =gTasks
|
|
adds r4, r1, r0
|
|
movs r0, 0
|
|
strh r0, [r4, 0x8]
|
|
strh r0, [r4, 0xA]
|
|
strh r0, [r4, 0xC]
|
|
strh r0, [r4, 0xE]
|
|
movs r0, 0x3
|
|
strh r0, [r4, 0x20]
|
|
ldr r0, =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08105850
|
|
ldr r0, =0x0000ffff
|
|
strh r0, [r4, 0x22]
|
|
movs r0, 0x8
|
|
b _08105856
|
|
.pool
|
|
_08105850:
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x22]
|
|
ldr r0, =0x0000fff8
|
|
_08105856:
|
|
strh r0, [r4, 0x24]
|
|
movs r0, 0x1
|
|
bl GetAnimBattlerSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x26]
|
|
ldr r0, =sub_8105878
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8105810
|
|
|
|
thumb_func_start sub_8105878
|
|
sub_8105878: @ 8105878
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r3, r0, r1
|
|
movs r0, 0x8
|
|
ldrsh r4, [r3, r0]
|
|
cmp r4, 0x1
|
|
beq _081058CC
|
|
cmp r4, 0x1
|
|
bgt _081058A0
|
|
cmp r4, 0
|
|
beq _081058AA
|
|
b _08105992
|
|
.pool
|
|
_081058A0:
|
|
cmp r4, 0x2
|
|
beq _08105948
|
|
cmp r4, 0x3
|
|
beq _08105962
|
|
b _08105992
|
|
_081058AA:
|
|
ldr r2, =gSprites
|
|
movs r0, 0x26
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r3, 0x24]
|
|
ldrh r2, [r0, 0x24]
|
|
adds r1, r2
|
|
strh r1, [r0, 0x24]
|
|
strh r4, [r3, 0xA]
|
|
strh r4, [r3, 0xC]
|
|
strh r4, [r3, 0xE]
|
|
b _0810595A
|
|
.pool
|
|
_081058CC:
|
|
ldrh r0, [r3, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _08105992
|
|
movs r0, 0
|
|
strh r0, [r3, 0xA]
|
|
ldrh r0, [r3, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0xC]
|
|
ands r0, r4
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _08105904
|
|
ldr r2, =gSprites
|
|
movs r4, 0x26
|
|
ldrsh r1, [r3, r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r0, 0x24]
|
|
adds r1, 0x6
|
|
b _08105916
|
|
.pool
|
|
_08105904:
|
|
ldr r2, =gSprites
|
|
movs r0, 0x26
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r0, 0x24]
|
|
subs r1, 0x6
|
|
_08105916:
|
|
strh r1, [r0, 0x24]
|
|
ldrh r0, [r3, 0xE]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0xE]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
ble _08105992
|
|
ldrh r1, [r3, 0xC]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0810595A
|
|
movs r1, 0x26
|
|
ldrsh r0, [r3, r1]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrh r0, [r1, 0x24]
|
|
subs r0, 0x6
|
|
strh r0, [r1, 0x24]
|
|
b _0810595A
|
|
.pool
|
|
_08105948:
|
|
ldrh r0, [r3, 0x20]
|
|
subs r0, 0x1
|
|
strh r0, [r3, 0x20]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _0810595A
|
|
movs r0, 0
|
|
strh r0, [r3, 0x8]
|
|
b _08105992
|
|
_0810595A:
|
|
ldrh r0, [r3, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x8]
|
|
b _08105992
|
|
_08105962:
|
|
ldr r2, =gSprites
|
|
movs r4, 0x26
|
|
ldrsh r1, [r3, r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r3, 0x22]
|
|
ldrh r4, [r0, 0x24]
|
|
adds r1, r4
|
|
strh r1, [r0, 0x24]
|
|
movs r0, 0x26
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
movs r1, 0x24
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _08105992
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_08105992:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8105878
|
|
|
|
thumb_func_start sub_810599C
|
|
sub_810599C: @ 810599C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
ldr r0, =gTasks
|
|
adds r4, r0
|
|
movs r0, 0
|
|
strh r0, [r4, 0x8]
|
|
strh r0, [r4, 0xA]
|
|
strh r0, [r4, 0xC]
|
|
strh r0, [r4, 0xE]
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x10]
|
|
movs r0, 0xE
|
|
strh r0, [r4, 0x22]
|
|
movs r0, 0x2
|
|
strh r0, [r4, 0x24]
|
|
movs r0, 0
|
|
bl GetAnimBattlerSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x26]
|
|
ldr r0, =sub_81059E0
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_810599C
|
|
|
|
thumb_func_start sub_81059E0
|
|
sub_81059E0: @ 81059E0
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r4, r0, r1
|
|
movs r0, 0x8
|
|
ldrsh r2, [r4, r0]
|
|
cmp r2, 0
|
|
bne _08105AA6
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r3, 0x10
|
|
ldrsh r1, [r4, r3]
|
|
cmp r0, r1
|
|
ble _08105AA6
|
|
strh r2, [r4, 0xA]
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08105A3C
|
|
ldr r3, =gSprites
|
|
movs r6, 0x26
|
|
ldrsh r1, [r4, r6]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
adds r0, 0x3E
|
|
ldrb r2, [r0]
|
|
movs r1, 0x5
|
|
negs r1, r1
|
|
ands r1, r2
|
|
b _08105A52
|
|
.pool
|
|
_08105A3C:
|
|
ldr r3, =gSprites
|
|
movs r0, 0x26
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
adds r0, 0x3E
|
|
ldrb r1, [r0]
|
|
movs r2, 0x4
|
|
orrs r1, r2
|
|
_08105A52:
|
|
strb r1, [r0]
|
|
ldrh r0, [r4, 0xE]
|
|
adds r0, 0x1
|
|
movs r2, 0
|
|
strh r0, [r4, 0xE]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r6, 0x22
|
|
ldrsh r1, [r4, r6]
|
|
cmp r0, r1
|
|
blt _08105AA6
|
|
ldrh r0, [r4, 0x10]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x10]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r6, 0x24
|
|
ldrsh r1, [r4, r6]
|
|
cmp r0, r1
|
|
bge _08105A88
|
|
strh r2, [r4, 0xA]
|
|
strh r2, [r4, 0xC]
|
|
strh r2, [r4, 0xE]
|
|
b _08105AA6
|
|
.pool
|
|
_08105A88:
|
|
movs r0, 0x26
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
adds r0, 0x3E
|
|
ldrb r2, [r0]
|
|
movs r1, 0x5
|
|
negs r1, r1
|
|
ands r1, r2
|
|
strb r1, [r0]
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_08105AA6:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_81059E0
|
|
|
|
thumb_func_start sub_8105AAC
|
|
sub_8105AAC: @ 8105AAC
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
ldr r0, =gTasks
|
|
adds r4, r0
|
|
movs r0, 0
|
|
strh r0, [r4, 0x8]
|
|
movs r1, 0x4
|
|
strh r1, [r4, 0xA]
|
|
strh r0, [r4, 0xC]
|
|
strh r0, [r4, 0xE]
|
|
strh r0, [r4, 0x10]
|
|
strh r0, [r4, 0x12]
|
|
strh r0, [r4, 0x14]
|
|
strh r0, [r4, 0x16]
|
|
strh r0, [r4, 0x18]
|
|
strh r0, [r4, 0x22]
|
|
ldr r5, =gBattleAnimAttacker
|
|
ldrb r0, [r5]
|
|
movs r1, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x24]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x1
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x26]
|
|
ldr r0, =sub_8105B08
|
|
str r0, [r4]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8105AAC
|
|
|
|
thumb_func_start sub_8105B08
|
|
sub_8105B08: @ 8105B08
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r4, r0, r1
|
|
movs r0, 0x18
|
|
ldrsh r2, [r4, r0]
|
|
cmp r2, 0x1
|
|
beq _08105B74
|
|
cmp r2, 0x1
|
|
bgt _08105B30
|
|
cmp r2, 0
|
|
beq _08105B36
|
|
b _08105B90
|
|
.pool
|
|
_08105B30:
|
|
cmp r2, 0x2
|
|
beq _08105B8C
|
|
b _08105B90
|
|
_08105B36:
|
|
ldrh r0, [r4, 0x10]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x10]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _08105B90
|
|
strh r2, [r4, 0x10]
|
|
ldrh r0, [r4, 0x12]
|
|
adds r0, 0x1
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
strh r0, [r4, 0x12]
|
|
ldrh r0, [r4, 0x14]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x14]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x14
|
|
ble _08105B90
|
|
movs r1, 0x16
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08105B6E
|
|
strh r2, [r4, 0x14]
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x18]
|
|
b _08105B90
|
|
_08105B6E:
|
|
movs r0, 0x2
|
|
strh r0, [r4, 0x18]
|
|
b _08105B90
|
|
_08105B74:
|
|
movs r1, 0
|
|
strh r1, [r4, 0x12]
|
|
ldrh r0, [r4, 0x10]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x10]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x14
|
|
ble _08105B90
|
|
strh r2, [r4, 0x16]
|
|
strh r1, [r4, 0x18]
|
|
b _08105B90
|
|
_08105B8C:
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x12]
|
|
_08105B90:
|
|
movs r2, 0x8
|
|
ldrsh r5, [r4, r2]
|
|
cmp r5, 0
|
|
beq _08105B9E
|
|
cmp r5, 0x1
|
|
beq _08105C34
|
|
b _08105C42
|
|
_08105B9E:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
ble _08105C42
|
|
strh r5, [r4, 0xA]
|
|
ldr r0, =gUnknown_085938DC
|
|
movs r3, 0x24
|
|
ldrsh r1, [r4, r3]
|
|
movs r3, 0x26
|
|
ldrsh r2, [r4, r3]
|
|
movs r3, 0
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0x40
|
|
beq _08105C42
|
|
ldr r0, =gSprites
|
|
lsls r1, r2, 4
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
strh r6, [r1, 0x2E]
|
|
movs r0, 0xD
|
|
strh r0, [r1, 0x30]
|
|
ldr r2, =gUnknown_085938F4
|
|
movs r3, 0xC
|
|
ldrsh r0, [r4, r3]
|
|
lsls r0, 1
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
strh r0, [r1, 0x24]
|
|
movs r3, 0xC
|
|
ldrsh r0, [r4, r3]
|
|
lsls r0, 1
|
|
adds r2, 0x1
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
strh r0, [r1, 0x26]
|
|
ldrh r0, [r4, 0x22]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x22]
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x3
|
|
ble _08105C42
|
|
strh r5, [r4, 0xC]
|
|
ldrh r0, [r4, 0xE]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xE]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x5
|
|
ble _08105C42
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _08105C42
|
|
.pool
|
|
_08105C34:
|
|
movs r1, 0x22
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08105C42
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
_08105C42:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8105B08
|
|
|
|
thumb_func_start sub_8105C48
|
|
sub_8105C48: @ 8105C48
|
|
push {r4,lr}
|
|
adds r3, r0, 0
|
|
ldr r4, =gTasks
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
adds r0, r4
|
|
movs r1, 0x3E
|
|
adds r1, r3
|
|
mov r12, r1
|
|
movs r2, 0x1
|
|
ldrb r1, [r0, 0x12]
|
|
ands r1, r2
|
|
lsls r1, 2
|
|
mov r0, r12
|
|
ldrb r2, [r0]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
mov r1, r12
|
|
strb r0, [r1]
|
|
adds r0, r3, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08105CAA
|
|
movs r0, 0x30
|
|
ldrsh r1, [r3, r0]
|
|
lsls r1, 1
|
|
movs r0, 0x2E
|
|
ldrsh r2, [r3, r0]
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
adds r1, r0
|
|
adds r0, r4, 0
|
|
adds r0, 0x8
|
|
adds r1, r0
|
|
ldrh r0, [r1]
|
|
subs r0, 0x1
|
|
strh r0, [r1]
|
|
adds r0, r3, 0
|
|
bl DestroySprite
|
|
_08105CAA:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8105C48
|
|
|
|
thumb_func_start sub_8105CB4
|
|
sub_8105CB4: @ 8105CB4
|
|
push {r4-r6,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r0, =0x000027de
|
|
bl IndexOfSpritePaletteTag
|
|
mov r1, sp
|
|
strb r0, [r1]
|
|
movs r4, 0x1
|
|
ldr r0, =0x00002710
|
|
adds r5, r0, 0
|
|
_08105CCC:
|
|
subs r0, r5, r4
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
bl AllocSpritePalette
|
|
mov r2, sp
|
|
adds r1, r2, r4
|
|
strb r0, [r1]
|
|
adds r4, 0x1
|
|
cmp r4, 0x2
|
|
ble _08105CCC
|
|
movs r0, 0x80
|
|
lsls r0, 6
|
|
bl AllocZeroed
|
|
adds r1, r0, 0
|
|
ldr r0, =gMonSpritesGfxPtr
|
|
ldr r0, [r0]
|
|
movs r2, 0xBE
|
|
lsls r2, 1
|
|
adds r0, r2
|
|
str r1, [r0]
|
|
ldr r0, =gBattleAnimSpritePalette_206
|
|
bl LZDecompressWram
|
|
movs r4, 0
|
|
_08105D00:
|
|
ldr r5, =gMonSpritesGfxPtr
|
|
ldr r0, [r5]
|
|
movs r1, 0xBE
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
lsls r1, r4, 6
|
|
ldr r0, [r0]
|
|
adds r0, r1
|
|
mov r2, sp
|
|
adds r1, r2, r4
|
|
ldrb r1, [r1]
|
|
lsls r1, 20
|
|
movs r2, 0x80
|
|
lsls r2, 17
|
|
adds r1, r2
|
|
lsrs r1, 16
|
|
movs r2, 0x20
|
|
bl LoadPalette
|
|
adds r4, 0x1
|
|
cmp r4, 0x2
|
|
ble _08105D00
|
|
ldr r0, [r5]
|
|
movs r4, 0xBE
|
|
lsls r4, 1
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
bl Free
|
|
ldr r0, [r5]
|
|
adds r0, r4
|
|
movs r1, 0
|
|
str r1, [r0]
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
add sp, 0x4
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8105CB4
|
|
|
|
thumb_func_start sub_8105D60
|
|
sub_8105D60: @ 8105D60
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r5, =gUnknown_08593950
|
|
movs r4, 0x2
|
|
_08105D6A:
|
|
ldrh r0, [r5]
|
|
bl FreeSpritePaletteByTag
|
|
adds r5, 0x2
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bge _08105D6A
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8105D60
|
|
|
|
thumb_func_start sub_8105D88
|
|
sub_8105D88: @ 8105D88
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r1, 24
|
|
lsls r2, 24
|
|
lsrs r3, r2, 24
|
|
movs r0, 0x1
|
|
ands r3, r0
|
|
negs r0, r3
|
|
orrs r0, r3
|
|
asrs r0, 31
|
|
movs r3, 0x20
|
|
ands r0, r3
|
|
ldrh r4, [r5, 0x4]
|
|
lsls r3, r4, 22
|
|
lsrs r3, 22
|
|
lsrs r1, 22
|
|
adds r0, r1
|
|
adds r3, r0
|
|
ldr r1, =0x000003ff
|
|
adds r0, r1, 0
|
|
ands r3, r0
|
|
ldr r0, =0xfffffc00
|
|
ands r0, r4
|
|
orrs r0, r3
|
|
strh r0, [r5, 0x4]
|
|
ldr r0, =gUnknown_08593950
|
|
lsrs r2, 25
|
|
lsls r2, 1
|
|
adds r2, r0
|
|
ldrh r0, [r2]
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 4
|
|
ldrb r2, [r5, 0x5]
|
|
movs r1, 0xF
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r5, 0x5]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8105D88
|
|
|
|
thumb_func_start sub_8105DE8
|
|
sub_8105DE8: @ 8105DE8
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
movs r1, 0
|
|
bl InitAnimSpritePos
|
|
ldr r6, =gBattleAnimAttacker
|
|
ldrb r0, [r6]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08105E08
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x4]
|
|
_08105E08:
|
|
ldr r4, =gBattleAnimArgs
|
|
ldrh r0, [r4, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
ldrb r0, [r6]
|
|
movs r1, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x4]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x32]
|
|
ldrb r0, [r6]
|
|
movs r1, 0x1
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x6]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x36]
|
|
ldr r0, =StartAnimLinearTranslation
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldrb r1, [r4, 0xA]
|
|
ldrb r2, [r4, 0xC]
|
|
adds r0, r5, 0
|
|
bl sub_8105D88
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8105DE8
|
|
|
|
thumb_func_start sub_8105E60
|
|
sub_8105E60: @ 8105E60
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
bne _08105E7A
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl InitAnimSpritePos
|
|
_08105E7A:
|
|
movs r1, 0x30
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x8
|
|
bl Sin
|
|
strh r0, [r4, 0x24]
|
|
ldrh r2, [r4, 0x32]
|
|
lsls r0, r2, 16
|
|
asrs r0, 24
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x30]
|
|
adds r0, 0x7
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x30]
|
|
subs r2, 0x80
|
|
strh r2, [r4, 0x32]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x3C
|
|
bne _08105EAA
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_08105EAA:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8105E60
|
|
|
|
thumb_func_start sub_8105EB0
|
|
sub_8105EB0: @ 8105EB0
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
bl IsContest
|
|
lsls r0, 24
|
|
movs r6, 0xF0
|
|
cmp r0, 0
|
|
beq _08105EC4
|
|
movs r6, 0x98
|
|
_08105EC4:
|
|
movs r5, 0
|
|
ldr r1, =gBattle_WIN0H
|
|
strh r6, [r1]
|
|
ldr r4, =gBattle_WIN0V
|
|
movs r0, 0xA0
|
|
strh r0, [r4]
|
|
ldrh r1, [r1]
|
|
movs r0, 0x40
|
|
bl SetGpuReg
|
|
ldrh r1, [r4]
|
|
movs r0, 0x44
|
|
bl SetGpuReg
|
|
ldr r1, =0x00003f1f
|
|
movs r0, 0x48
|
|
bl SetGpuReg
|
|
ldr r1, =0x00003f3f
|
|
movs r0, 0x4A
|
|
bl SetGpuReg
|
|
movs r0, 0x50
|
|
movs r1, 0xC8
|
|
bl SetGpuReg
|
|
movs r0, 0x54
|
|
movs r1, 0x10
|
|
bl SetGpuReg
|
|
ldr r1, =gTasks
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
strh r5, [r0, 0x8]
|
|
strh r6, [r0, 0xA]
|
|
ldr r1, =sub_8105F30
|
|
str r1, [r0]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8105EB0
|
|
|
|
thumb_func_start sub_8105F30
|
|
sub_8105F30: @ 8105F30
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r3, r1, r2
|
|
ldrh r0, [r3, 0x8]
|
|
adds r4, r0, 0
|
|
adds r4, 0xD
|
|
strh r4, [r3, 0x8]
|
|
ldrh r0, [r3, 0xA]
|
|
adds r2, r0, 0
|
|
subs r2, 0xD
|
|
strh r2, [r3, 0xA]
|
|
lsls r1, r4, 16
|
|
lsls r0, r2, 16
|
|
cmp r1, r0
|
|
blt _08105F70
|
|
ldr r0, =gBattle_WIN0H
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, =sub_8105F84
|
|
str r0, [r3]
|
|
b _08105F78
|
|
.pool
|
|
_08105F70:
|
|
ldr r1, =gBattle_WIN0H
|
|
lsls r0, r4, 8
|
|
orrs r2, r0
|
|
strh r2, [r1]
|
|
_08105F78:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8105F30
|
|
|
|
thumb_func_start sub_8105F84
|
|
sub_8105F84: @ 8105F84
|
|
push {r4,r5,lr}
|
|
sub sp, 0xC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r5, r0, 0
|
|
ldr r1, =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x1C]
|
|
adds r0, 0x1
|
|
movs r4, 0
|
|
strh r0, [r1, 0x1C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x5
|
|
bne _08105FD8
|
|
movs r0, 0x88
|
|
strh r0, [r1, 0x1E]
|
|
movs r0, 0x50
|
|
movs r1, 0x88
|
|
bl SetGpuReg
|
|
str r4, [sp]
|
|
str r4, [sp, 0x4]
|
|
str r4, [sp, 0x8]
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_80A75AC
|
|
ldr r2, =0x00007fff
|
|
movs r1, 0x10
|
|
bl BlendPalettes
|
|
b _0810600C
|
|
.pool
|
|
_08105FD8:
|
|
cmp r0, 0x4
|
|
ble _0810600C
|
|
ldr r0, =gBattle_WIN0H
|
|
strh r4, [r0]
|
|
ldr r0, =gBattle_WIN0V
|
|
strh r4, [r0]
|
|
ldr r4, =0x00003f3f
|
|
movs r0, 0x48
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x4A
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x54
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_0810600C:
|
|
add sp, 0xC
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8105F84
|
|
|
|
thumb_func_start sub_8106020
|
|
sub_8106020: @ 8106020
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r6, r0, 0
|
|
movs r0, 0x1
|
|
bl GetAnimBattlerSpriteId
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r5, r0, r1
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
bne _0810607C
|
|
movs r0, 0x1
|
|
bl GetAnimBattlerSpriteId
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r2, =gUnknown_08593988
|
|
adds r0, r5, 0
|
|
bl sub_80A7CFC
|
|
ldr r1, =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
movs r1, 0x4
|
|
strh r1, [r0, 0x24]
|
|
b _081060A4
|
|
.pool
|
|
_0810607C:
|
|
ldr r1, =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r4, r0, r1
|
|
ldrh r0, [r4, 0x24]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x24]
|
|
adds r0, r5, 0
|
|
bl sub_80A7D34
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
bne _081060A4
|
|
strh r0, [r4, 0x24]
|
|
strh r0, [r4, 0x26]
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
_081060A4:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8106020
|
|
|
|
thumb_func_start sub_81060B0
|
|
sub_81060B0: @ 81060B0
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r6, r0, 0
|
|
movs r0, 0
|
|
bl GetAnimBattlerSpriteId
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r5, r0, r1
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
bne _0810610C
|
|
movs r0, 0
|
|
bl GetAnimBattlerSpriteId
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r2, =gUnknown_08593988
|
|
adds r0, r5, 0
|
|
bl sub_80A7CFC
|
|
ldr r1, =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
movs r1, 0x4
|
|
strh r1, [r0, 0x24]
|
|
b _08106134
|
|
.pool
|
|
_0810610C:
|
|
ldr r1, =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r4, r0, r1
|
|
ldrh r0, [r4, 0x24]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x24]
|
|
adds r0, r5, 0
|
|
bl sub_80A7D34
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
bne _08106134
|
|
strh r0, [r4, 0x24]
|
|
strh r0, [r4, 0x26]
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
_08106134:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81060B0
|
|
|
|
thumb_func_start sub_8106140
|
|
sub_8106140: @ 8106140
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl InitAnimSpritePos
|
|
movs r0, 0x5F
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
ldr r5, =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x36]
|
|
adds r0, r4, 0
|
|
bl InitAnimLinearTranslation
|
|
ldr r0, =sub_810618C
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8106140
|
|
|
|
thumb_func_start sub_810618C
|
|
sub_810618C: @ 810618C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl TranslateAnimLinear
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _081061B6
|
|
movs r1, 0x38
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0xE
|
|
bl Sin
|
|
ldrh r1, [r4, 0x26]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x38]
|
|
adds r0, 0x4
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x38]
|
|
b _081061BC
|
|
_081061B6:
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_081061BC:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_810618C
|
|
|
|
thumb_func_start sub_81061C4
|
|
sub_81061C4: @ 81061C4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r2, [r4, 0x2E]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _081061E8
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r1, 0x2]
|
|
strh r0, [r4, 0x32]
|
|
adds r0, r2, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _08106244
|
|
.pool
|
|
_081061E8:
|
|
ldrh r0, [r4, 0x30]
|
|
ldrh r2, [r4, 0x36]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x36]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x32
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x34]
|
|
adds r0, 0x3
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x34]
|
|
cmp r0, 0x64
|
|
ble _08106236
|
|
movs r0, 0x34
|
|
ldrsh r1, [r4, r0]
|
|
lsrs r0, r1, 31
|
|
adds r0, r1, r0
|
|
asrs r0, 1
|
|
lsls r0, 1
|
|
subs r1, r0
|
|
adds r3, r4, 0
|
|
adds r3, 0x3E
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r3]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
_08106236:
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x78
|
|
ble _08106244
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_08106244:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_81061C4
|
|
|
|
thumb_func_start sub_810624C
|
|
sub_810624C: @ 810624C
|
|
push {lr}
|
|
ldr r2, =gBattleAnimArgs
|
|
ldrh r1, [r2]
|
|
strh r1, [r0, 0x20]
|
|
movs r1, 0xA0
|
|
strh r1, [r0, 0x22]
|
|
ldrh r1, [r2, 0x4]
|
|
strh r1, [r0, 0x2E]
|
|
ldrh r1, [r2, 0x2]
|
|
strh r1, [r0, 0x30]
|
|
ldr r1, =sub_80A64B0
|
|
str r1, [r0, 0x1C]
|
|
ldr r1, =sub_810627C
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_810624C
|
|
|
|
thumb_func_start sub_810627C
|
|
sub_810627C: @ 810627C
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x30]
|
|
ldrh r1, [r4, 0x32]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x32]
|
|
lsls r0, 16
|
|
lsrs r0, 24
|
|
negs r0, r0
|
|
strh r0, [r4, 0x26]
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x4
|
|
bl Sin
|
|
strh r0, [r4, 0x24]
|
|
ldrh r0, [r4, 0x34]
|
|
adds r0, 0x3
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x34]
|
|
ldrh r0, [r4, 0x26]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
asrs r5, r0, 16
|
|
cmp r5, 0x48
|
|
bgt _081062E2
|
|
movs r0, 0x34
|
|
ldrsh r1, [r4, r0]
|
|
lsrs r0, r1, 31
|
|
adds r0, r1, r0
|
|
asrs r0, 1
|
|
lsls r0, 1
|
|
subs r1, r0
|
|
adds r3, r4, 0
|
|
adds r3, 0x3E
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r3]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
cmp r5, 0x40
|
|
bgt _081062E2
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_081062E2:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_810627C
|
|
|
|
thumb_func_start sub_81062E8
|
|
sub_81062E8: @ 81062E8
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, =0x00003f42
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r0, 0x1
|
|
movs r1, 0x4
|
|
movs r2, 0x3
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0810632A
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
_0810632A:
|
|
ldr r0, =gBattle_BG1_X
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r4, =gBattle_BG1_Y
|
|
strh r1, [r4]
|
|
movs r0, 0x14
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldrh r1, [r4]
|
|
movs r0, 0x16
|
|
bl SetGpuReg
|
|
mov r0, sp
|
|
bl sub_80A6B30
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, =gUnknown_08C232E0
|
|
mov r2, sp
|
|
ldrh r2, [r2, 0xA]
|
|
bl sub_80A6CC0
|
|
ldr r1, =gUnknown_08C23D78
|
|
mov r0, sp
|
|
movs r2, 0
|
|
bl sub_80A6D60
|
|
ldr r0, =gUnknown_08C23D50
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x8]
|
|
lsls r1, 4
|
|
movs r2, 0x20
|
|
bl LoadCompressedPalette
|
|
ldr r1, =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, =sub_81063A8
|
|
str r1, [r0]
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81062E8
|
|
|
|
thumb_func_start sub_81063A8
|
|
sub_81063A8: @ 81063A8
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r2, 0x20
|
|
ldrsh r0, [r0, r2]
|
|
adds r2, r1, 0
|
|
cmp r0, 0x4
|
|
bls _081063C6
|
|
b _081064F0
|
|
_081063C6:
|
|
lsls r0, 2
|
|
ldr r1, =_081063D8
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_081063D8:
|
|
.4byte _081063EC
|
|
.4byte _08106430
|
|
.4byte _08106452
|
|
.4byte _08106496
|
|
.4byte _081064BC
|
|
_081063EC:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r4, r0, r2
|
|
ldrh r0, [r4, 0x1C]
|
|
adds r0, 0x1
|
|
movs r5, 0
|
|
strh r0, [r4, 0x1C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
bne _081064F0
|
|
strh r5, [r4, 0x1C]
|
|
ldrh r1, [r4, 0x1E]
|
|
adds r1, 0x1
|
|
strh r1, [r4, 0x1E]
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r1, 0x1E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x10
|
|
bne _081064F0
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x20]
|
|
strh r5, [r4, 0x1E]
|
|
b _081064F0
|
|
_08106430:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r1, r0, r2
|
|
ldrh r0, [r1, 0x1E]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x1E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x8D
|
|
bne _081064F0
|
|
movs r0, 0x10
|
|
strh r0, [r1, 0x1E]
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x20]
|
|
b _081064F0
|
|
_08106452:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r4, r0, r2
|
|
ldrh r0, [r4, 0x1C]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x1C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
bne _081064F0
|
|
movs r0, 0
|
|
strh r0, [r4, 0x1C]
|
|
ldrh r1, [r4, 0x1E]
|
|
subs r1, 0x1
|
|
strh r1, [r4, 0x1E]
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r2, 0x1E
|
|
ldrsh r1, [r4, r2]
|
|
cmp r1, 0
|
|
bne _081064F0
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x20]
|
|
strh r1, [r4, 0x1E]
|
|
b _081064F0
|
|
_08106496:
|
|
mov r0, sp
|
|
bl sub_80A6B30
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
bl sub_80A6C68
|
|
ldr r1, =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldrh r1, [r0, 0x20]
|
|
adds r1, 0x1
|
|
strh r1, [r0, 0x20]
|
|
b _081064F0
|
|
.pool
|
|
_081064BC:
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _081064D0
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
_081064D0:
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x1
|
|
movs r1, 0x4
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_081064F0:
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_81063A8
|
|
|
|
thumb_func_start sub_81064F8
|
|
sub_81064F8: @ 81064F8
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, =0x00003f42
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r0, 0x1
|
|
movs r1, 0x4
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0810653A
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
_0810653A:
|
|
ldr r0, =gBattle_BG1_X
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r4, =gBattle_BG1_Y
|
|
strh r1, [r4]
|
|
movs r0, 0x14
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldrh r1, [r4]
|
|
movs r0, 0x16
|
|
bl SetGpuReg
|
|
mov r0, sp
|
|
bl sub_80A6B30
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08106578
|
|
ldr r1, =gBattleAnimBackgroundTilemap_ScaryFaceContest
|
|
b _0810658A
|
|
.pool
|
|
_08106578:
|
|
ldr r0, =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0810659C
|
|
ldr r1, =gBattleAnimBackgroundTilemap_ScaryFacePlayer
|
|
_0810658A:
|
|
mov r0, sp
|
|
movs r2, 0
|
|
bl sub_80A6D60
|
|
b _081065A6
|
|
.pool
|
|
_0810659C:
|
|
ldr r1, =gBattleAnimBackgroundTilemap_ScaryFaceOpponent
|
|
mov r0, sp
|
|
movs r2, 0
|
|
bl sub_80A6D60
|
|
_081065A6:
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, =gUnknown_08C249F8
|
|
mov r2, sp
|
|
ldrh r2, [r2, 0xA]
|
|
bl sub_80A6CC0
|
|
ldr r0, =gUnknown_08C249D0
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x8]
|
|
lsls r1, 4
|
|
movs r2, 0x20
|
|
bl LoadCompressedPalette
|
|
ldr r1, =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, =sub_81065EC
|
|
str r1, [r0]
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81064F8
|
|
|
|
thumb_func_start sub_81065EC
|
|
sub_81065EC: @ 81065EC
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r2, 0x20
|
|
ldrsh r0, [r0, r2]
|
|
adds r2, r1, 0
|
|
cmp r0, 0x4
|
|
bls _0810660A
|
|
b _08106730
|
|
_0810660A:
|
|
lsls r0, 2
|
|
ldr r1, =_0810661C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_0810661C:
|
|
.4byte _08106630
|
|
.4byte _08106674
|
|
.4byte _08106696
|
|
.4byte _081066DA
|
|
.4byte _081066FC
|
|
_08106630:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r4, r0, r2
|
|
ldrh r0, [r4, 0x1C]
|
|
adds r0, 0x1
|
|
movs r5, 0
|
|
strh r0, [r4, 0x1C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x2
|
|
bne _08106730
|
|
strh r5, [r4, 0x1C]
|
|
ldrh r1, [r4, 0x1E]
|
|
adds r1, 0x1
|
|
strh r1, [r4, 0x1E]
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r1, 0x1E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0xE
|
|
bne _08106730
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x20]
|
|
strh r5, [r4, 0x1E]
|
|
b _08106730
|
|
_08106674:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r1, r0, r2
|
|
ldrh r0, [r1, 0x1E]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x1E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x15
|
|
bne _08106730
|
|
movs r0, 0xE
|
|
strh r0, [r1, 0x1E]
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x20]
|
|
b _08106730
|
|
_08106696:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r4, r0, r2
|
|
ldrh r0, [r4, 0x1C]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x1C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x2
|
|
bne _08106730
|
|
movs r0, 0
|
|
strh r0, [r4, 0x1C]
|
|
ldrh r1, [r4, 0x1E]
|
|
subs r1, 0x1
|
|
strh r1, [r4, 0x1E]
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r2, 0x1E
|
|
ldrsh r1, [r4, r2]
|
|
cmp r1, 0
|
|
bne _08106730
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x20]
|
|
strh r1, [r4, 0x1E]
|
|
b _08106730
|
|
_081066DA:
|
|
mov r0, sp
|
|
bl sub_80A6B30
|
|
movs r0, 0x1
|
|
bl sub_80A6C68
|
|
movs r0, 0x2
|
|
bl sub_80A6C68
|
|
ldr r0, =gTasks
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x20]
|
|
_081066FC:
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08106710
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
_08106710:
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x1
|
|
movs r1, 0x4
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_08106730:
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81065EC
|
|
|
|
thumb_func_start sub_810673C
|
|
sub_810673C: @ 810673C
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, =gBattleAnimAttacker
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x20]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x22]
|
|
adds r2, r4, 0
|
|
adds r2, 0x2C
|
|
ldrb r0, [r2]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r1, 0x2]
|
|
strh r0, [r4, 0x30]
|
|
ldrb r0, [r5]
|
|
bl sub_80A82E4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x3C]
|
|
ldr r1, =sub_810679C
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_810673C
|
|
|
|
thumb_func_start sub_810679C
|
|
sub_810679C: @ 810679C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x30]
|
|
subs r0, 0x40
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x7F
|
|
bhi _081067B2
|
|
ldrh r0, [r4, 0x3C]
|
|
adds r0, 0x1
|
|
b _081067B6
|
|
_081067B2:
|
|
ldrh r0, [r4, 0x3C]
|
|
subs r0, 0x1
|
|
_081067B6:
|
|
adds r1, r4, 0
|
|
adds r1, 0x43
|
|
strb r0, [r1]
|
|
movs r1, 0x30
|
|
ldrsh r0, [r4, r1]
|
|
ldrh r1, [r4, 0x32]
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
bl Sin
|
|
strh r0, [r4, 0x24]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r4, r2]
|
|
ldrh r1, [r4, 0x34]
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
bl Cos
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x30]
|
|
adds r0, 0x9
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x30]
|
|
movs r3, 0x38
|
|
ldrsh r2, [r4, r3]
|
|
cmp r2, 0
|
|
beq _08106828
|
|
cmp r2, 0x1
|
|
bne _08106858
|
|
ldr r1, =0xfffffc00
|
|
adds r0, r1, 0
|
|
ldrh r2, [r4, 0x32]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x32]
|
|
ldr r3, =0xffffff00
|
|
adds r0, r3, 0
|
|
ldrh r1, [r4, 0x34]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x34]
|
|
ldrh r0, [r4, 0x36]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x36]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r2, 0x2E
|
|
ldrsh r1, [r4, r2]
|
|
cmp r0, r1
|
|
bne _08106858
|
|
movs r0, 0x2
|
|
strh r0, [r4, 0x38]
|
|
b _08106868
|
|
.pool
|
|
_08106828:
|
|
movs r3, 0x80
|
|
lsls r3, 3
|
|
adds r0, r3, 0
|
|
ldrh r1, [r4, 0x32]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x32]
|
|
movs r3, 0x80
|
|
lsls r3, 1
|
|
adds r0, r3, 0
|
|
ldrh r1, [r4, 0x34]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x34]
|
|
ldrh r0, [r4, 0x36]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x36]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r3, 0x2E
|
|
ldrsh r1, [r4, r3]
|
|
cmp r0, r1
|
|
bne _08106858
|
|
strh r2, [r4, 0x36]
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x38]
|
|
_08106858:
|
|
ldr r0, =gBattleAnimArgs
|
|
ldrh r1, [r0, 0xE]
|
|
ldr r0, =0x0000ffff
|
|
cmp r1, r0
|
|
bne _08106868
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_08106868:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_810679C
|
|
|
|
thumb_func_start sub_8106878
|
|
sub_8106878: @ 8106878
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
ldr r4, =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0xA
|
|
bl Sin
|
|
strh r0, [r5, 0x2E]
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x7
|
|
bl Cos
|
|
strh r0, [r5, 0x30]
|
|
ldr r0, =sub_81068CC
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8106878
|
|
|
|
thumb_func_start sub_81068CC
|
|
sub_81068CC: @ 81068CC
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldrh r0, [r2, 0x2E]
|
|
ldrh r1, [r2, 0x24]
|
|
adds r0, r1
|
|
strh r0, [r2, 0x24]
|
|
ldrh r0, [r2, 0x30]
|
|
ldrh r3, [r2, 0x26]
|
|
adds r0, r3
|
|
strh r0, [r2, 0x26]
|
|
movs r1, 0x20
|
|
ldrsh r0, [r2, r1]
|
|
movs r3, 0x24
|
|
ldrsh r1, [r2, r3]
|
|
adds r0, r1
|
|
adds r0, 0x10
|
|
movs r1, 0x88
|
|
lsls r1, 1
|
|
cmp r0, r1
|
|
bhi _0810690A
|
|
movs r0, 0x22
|
|
ldrsh r1, [r2, r0]
|
|
movs r3, 0x26
|
|
ldrsh r0, [r2, r3]
|
|
adds r1, r0
|
|
cmp r1, 0xA0
|
|
bgt _0810690A
|
|
movs r0, 0x10
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bge _08106910
|
|
_0810690A:
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_08106910:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_81068CC
|
|
|
|
thumb_func_start sub_8106914
|
|
sub_8106914: @ 8106914
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldrh r0, [r2, 0x2E]
|
|
ldrh r1, [r2, 0x24]
|
|
adds r0, r1
|
|
strh r0, [r2, 0x24]
|
|
ldrh r0, [r2, 0x30]
|
|
ldrh r3, [r2, 0x26]
|
|
adds r0, r3
|
|
strh r0, [r2, 0x26]
|
|
ldrh r0, [r2, 0x34]
|
|
adds r1, r0, 0x1
|
|
strh r1, [r2, 0x34]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r3, 0x32
|
|
ldrsh r1, [r2, r3]
|
|
cmp r0, r1
|
|
blt _08106940
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_08106940:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8106914
|
|
|
|
thumb_func_start sub_8106944
|
|
sub_8106944: @ 8106944
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
ldr r4, =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0xA
|
|
bl Sin
|
|
strh r0, [r5, 0x2E]
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x7
|
|
bl Cos
|
|
strh r0, [r5, 0x30]
|
|
ldrh r0, [r4, 0x2]
|
|
strh r0, [r5, 0x32]
|
|
ldr r0, =sub_8106914
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8106944
|
|
|
|
thumb_func_start sub_810699C
|
|
sub_810699C: @ 810699C
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _081069B2
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_081069B2:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_810699C
|
|
|
|
thumb_func_start sub_81069B8
|
|
sub_81069B8: @ 81069B8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl InitAnimSpritePos
|
|
ldr r0, =sub_810699C
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81069B8
|
|
|
|
thumb_func_start sub_81069D0
|
|
sub_81069D0: @ 81069D0
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _081069EE
|
|
ldr r0, =gBattleAnimArgs
|
|
ldrh r1, [r0]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r1, r2
|
|
strh r1, [r4, 0x20]
|
|
ldrh r0, [r0, 0x2]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x22]
|
|
_081069EE:
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
movs r2, 0x2E
|
|
ldrsh r1, [r4, r2]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r5, r0, 1
|
|
movs r0, 0xFF
|
|
ands r5, r0
|
|
adds r0, r5, 0
|
|
movs r1, 0x50
|
|
bl Sin
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x4F
|
|
bgt _08106A32
|
|
adds r0, r5, 0
|
|
movs r1, 0x50
|
|
bl Cos
|
|
movs r2, 0x2E
|
|
ldrsh r1, [r4, r2]
|
|
lsrs r2, r1, 31
|
|
adds r1, r2
|
|
asrs r1, 1
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
adds r1, r0
|
|
strh r1, [r4, 0x26]
|
|
_08106A32:
|
|
movs r0, 0x2E
|
|
ldrsh r2, [r4, r0]
|
|
cmp r2, 0x5A
|
|
ble _08106A50
|
|
ldrh r0, [r4, 0x32]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x32]
|
|
movs r0, 0x32
|
|
ldrsh r1, [r4, r0]
|
|
lsrs r0, r1, 31
|
|
adds r1, r0
|
|
asrs r1, 1
|
|
ldrh r0, [r4, 0x24]
|
|
subs r0, r1
|
|
strh r0, [r4, 0x24]
|
|
_08106A50:
|
|
cmp r2, 0x64
|
|
ble _08106A5A
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_08106A5A:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81069D0
|
|
|
|
thumb_func_start sub_8106A64
|
|
sub_8106A64: @ 8106A64
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x38]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x38]
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0x5
|
|
bl Sin
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x38
|
|
ldrsh r0, [r4, r1]
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x34]
|
|
adds r0, 0x3
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x34]
|
|
movs r1, 0x38
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x14
|
|
ble _08106ABA
|
|
adds r1, r0, 0
|
|
lsrs r0, r1, 31
|
|
adds r0, r1, r0
|
|
asrs r0, 1
|
|
lsls r0, 1
|
|
subs r1, r0
|
|
adds r3, r4, 0
|
|
adds r3, 0x3E
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r3]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
_08106ABA:
|
|
movs r1, 0x38
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1E
|
|
ble _08106AC8
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_08106AC8:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8106A64
|
|
|
|
thumb_func_start sub_8106AD0
|
|
sub_8106AD0: @ 8106AD0
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldrh r2, [r4, 0x2E]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08106AF4
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r1, 0x2]
|
|
strh r0, [r4, 0x32]
|
|
adds r0, r2, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _08106B48
|
|
.pool
|
|
_08106AF4:
|
|
ldrh r0, [r4, 0x30]
|
|
ldrh r2, [r4, 0x36]
|
|
adds r0, r2
|
|
movs r5, 0
|
|
strh r0, [r4, 0x36]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x32
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
adds r2, r0, 0
|
|
strh r2, [r4, 0x26]
|
|
ldrh r0, [r4, 0x34]
|
|
adds r0, 0x3
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x34]
|
|
cmp r0, 0x46
|
|
ble _08106B48
|
|
ldr r0, =sub_8106A64
|
|
str r0, [r4, 0x1C]
|
|
ldrh r0, [r4, 0x24]
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x20]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r2, r1
|
|
strh r0, [r4, 0x22]
|
|
strh r5, [r4, 0x24]
|
|
strh r5, [r4, 0x26]
|
|
bl Random2
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0xB4
|
|
bl __umodsi3
|
|
strh r0, [r4, 0x34]
|
|
_08106B48:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8106AD0
|
|
|
|
thumb_func_start sub_8106B54
|
|
sub_8106B54: @ 8106B54
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08106B8E
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r1, 0x2]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x22]
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl StartSpriteAnim
|
|
ldr r0, =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl sub_80A82E4
|
|
subs r0, 0x1
|
|
adds r1, r4, 0
|
|
adds r1, 0x43
|
|
strb r0, [r1]
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x32]
|
|
_08106B8E:
|
|
ldrh r0, [r4, 0x32]
|
|
ldrh r2, [r4, 0x2E]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x2E]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
lsls r1, r0, 2
|
|
adds r0, r1, 0
|
|
cmp r1, 0
|
|
bge _08106BA4
|
|
adds r0, 0xFF
|
|
_08106BA4:
|
|
asrs r0, 8
|
|
lsls r0, 8
|
|
subs r0, r1, r0
|
|
strh r0, [r4, 0x30]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bge _08106BB6
|
|
movs r0, 0
|
|
strh r0, [r4, 0x30]
|
|
_08106BB6:
|
|
movs r0, 0x30
|
|
ldrsh r2, [r4, r0]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bge _08106BC4
|
|
adds r0, 0x3
|
|
_08106BC4:
|
|
asrs r0, 2
|
|
movs r1, 0x1E
|
|
subs r1, r0
|
|
adds r0, r2, 0
|
|
bl Cos
|
|
strh r0, [r4, 0x24]
|
|
movs r0, 0x30
|
|
ldrsh r2, [r4, r0]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bge _08106BE0
|
|
adds r0, 0x7
|
|
_08106BE0:
|
|
asrs r0, 3
|
|
movs r1, 0xA
|
|
subs r1, r0
|
|
adds r0, r2, 0
|
|
bl Sin
|
|
strh r0, [r4, 0x26]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x80
|
|
ble _08106C04
|
|
ldrh r1, [r4, 0x32]
|
|
movs r2, 0x32
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
ble _08106C04
|
|
ldr r0, =0x0000ffff
|
|
strh r0, [r4, 0x32]
|
|
_08106C04:
|
|
movs r1, 0x30
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08106C18
|
|
movs r2, 0x32
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bge _08106C18
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x32]
|
|
_08106C18:
|
|
ldrh r0, [r4, 0x34]
|
|
adds r1, r0, 0x1
|
|
strh r1, [r4, 0x34]
|
|
subs r0, 0x9
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x46
|
|
bls _08106C5C
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r4, r0]
|
|
lsrs r0, r1, 31
|
|
adds r0, r1, r0
|
|
asrs r0, 1
|
|
lsls r0, 1
|
|
subs r1, r0
|
|
adds r3, r4, 0
|
|
adds r3, 0x3E
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r3]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
b _08106C6A
|
|
.pool
|
|
_08106C5C:
|
|
adds r2, r4, 0
|
|
adds r2, 0x3E
|
|
ldrb r1, [r2]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
_08106C6A:
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x5A
|
|
ble _08106C78
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_08106C78:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8106B54
|
|
|
|
thumb_func_start sub_8106C80
|
|
sub_8106C80: @ 8106C80
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08106CB4
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r1, 0x2]
|
|
ldrh r2, [r4, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x22]
|
|
ldrb r1, [r1, 0x4]
|
|
adds r0, r4, 0
|
|
bl StartSpriteAnim
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _08106CC8
|
|
.pool
|
|
_08106CB4:
|
|
adds r0, r4, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08106CC8
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_08106CC8:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8106C80
|
|
|
|
thumb_func_start sub_8106CD0
|
|
sub_8106CD0: @ 8106CD0
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r1, =gBattleAnimArgs
|
|
movs r2, 0x4
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
bne _08106CEC
|
|
adds r0, r5, 0
|
|
bl DestroyAnimSprite
|
|
b _08106D50
|
|
.pool
|
|
_08106CEC:
|
|
movs r2, 0
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
bne _08106CFC
|
|
ldr r4, =gBattleAnimAttacker
|
|
b _08106CFE
|
|
.pool
|
|
_08106CFC:
|
|
ldr r4, =gBattleAnimTarget
|
|
_08106CFE:
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
ldr r0, =gBattleAnimArgs
|
|
movs r2, 0x2
|
|
ldrsh r1, [r0, r2]
|
|
adds r2, r0, 0
|
|
cmp r1, 0
|
|
bne _08106D34
|
|
ldrh r0, [r5, 0x20]
|
|
adds r0, 0x20
|
|
b _08106D38
|
|
.pool
|
|
_08106D34:
|
|
ldrh r0, [r5, 0x20]
|
|
subs r0, 0x20
|
|
_08106D38:
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r2, 0x4]
|
|
strh r0, [r5, 0x2E]
|
|
ldrh r1, [r2, 0x2]
|
|
strh r1, [r5, 0x30]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r5, 0
|
|
bl StartSpriteAnim
|
|
ldr r0, =sub_8106D5C
|
|
str r0, [r5, 0x1C]
|
|
_08106D50:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8106CD0
|
|
|
|
thumb_func_start sub_8106D5C
|
|
sub_8106D5C: @ 8106D5C
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08106D8C
|
|
ldrh r0, [r2, 0x2E]
|
|
subs r0, 0x1
|
|
strh r0, [r2, 0x2E]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _08106D86
|
|
ldrh r1, [r2, 0x30]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r2, 0
|
|
bl StartSpriteAnim
|
|
b _08106D8C
|
|
_08106D86:
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_08106D8C:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8106D5C
|
|
|
|
thumb_func_start sub_8106D90
|
|
sub_8106D90: @ 8106D90
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldr r0, =gBattleAnimArgs
|
|
ldrb r0, [r0]
|
|
bl GetAnimBattlerSpriteId
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r4, r5, 2
|
|
adds r4, r5
|
|
lsls r4, 3
|
|
ldr r0, =gTasks
|
|
adds r4, r0
|
|
ldr r2, =gUnknown_08593B98
|
|
adds r0, r4, 0
|
|
bl sub_80A7CFC
|
|
ldr r0, =sub_8106DD4
|
|
str r0, [r4]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8106D90
|
|
|
|
thumb_func_start sub_8106DD4
|
|
sub_8106DD4: @ 8106DD4
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r0, r1
|
|
bl sub_80A7D34
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08106DF4
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_08106DF4:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8106DD4
|
|
|
|
thumb_func_start sub_8106E00
|
|
sub_8106E00: @ 8106E00
|
|
push {r4-r7,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _08106E1C
|
|
ldr r0, =gBattleAnimAttacker
|
|
b _08106E1E
|
|
.pool
|
|
_08106E1C:
|
|
ldr r0, =gBattleAnimTarget
|
|
_08106E1E:
|
|
ldrb r6, [r0]
|
|
adds r0, r6, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08106E38
|
|
ldr r1, =gBattleAnimArgs
|
|
movs r2, 0x2
|
|
ldrsh r0, [r1, r2]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x2]
|
|
_08106E38:
|
|
adds r0, r6, 0
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
ldr r7, =gBattleAnimArgs
|
|
lsrs r0, 24
|
|
ldrh r3, [r7, 0x2]
|
|
adds r0, r3
|
|
movs r4, 0
|
|
strh r0, [r5, 0x20]
|
|
adds r0, r6, 0
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r7, 0x4]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x22]
|
|
strh r4, [r5, 0x2E]
|
|
ldrh r1, [r5, 0x20]
|
|
lsls r1, 3
|
|
strh r1, [r5, 0x30]
|
|
lsls r0, 3
|
|
strh r0, [r5, 0x32]
|
|
movs r2, 0x2
|
|
ldrsh r0, [r7, r2]
|
|
lsls r0, 3
|
|
cmp r0, 0
|
|
bge _08106E78
|
|
adds r0, 0x7
|
|
_08106E78:
|
|
asrs r0, 3
|
|
strh r0, [r5, 0x34]
|
|
movs r3, 0x4
|
|
ldrsh r0, [r7, r3]
|
|
lsls r0, 3
|
|
cmp r0, 0
|
|
bge _08106E88
|
|
adds r0, 0x7
|
|
_08106E88:
|
|
asrs r0, 3
|
|
strh r0, [r5, 0x36]
|
|
ldrh r2, [r5, 0x4]
|
|
lsls r1, r2, 22
|
|
lsrs r1, 22
|
|
movs r3, 0x6
|
|
ldrsh r0, [r7, r3]
|
|
lsls r0, 4
|
|
adds r1, r0
|
|
ldr r3, =0x000003ff
|
|
adds r0, r3, 0
|
|
ands r1, r0
|
|
ldr r0, =0xfffffc00
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r5, 0x4]
|
|
ldr r0, =sub_8106EC8
|
|
str r0, [r5, 0x1C]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8106E00
|
|
|
|
thumb_func_start sub_8106EC8
|
|
sub_8106EC8: @ 8106EC8
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldrh r0, [r2, 0x34]
|
|
ldrh r1, [r2, 0x30]
|
|
adds r0, r1
|
|
strh r0, [r2, 0x30]
|
|
ldrh r1, [r2, 0x36]
|
|
ldrh r3, [r2, 0x32]
|
|
adds r1, r3
|
|
strh r1, [r2, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 19
|
|
strh r0, [r2, 0x20]
|
|
lsls r1, 16
|
|
asrs r1, 19
|
|
strh r1, [r2, 0x22]
|
|
ldrh r0, [r2, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x10
|
|
ble _08106EFC
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_08106EFC:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8106EC8
|
|
|
|
thumb_func_start sub_8106F00
|
|
sub_8106F00: @ 8106F00
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _08106F22
|
|
ldr r0, =gBattleAnimArgs
|
|
ldrh r1, [r0]
|
|
movs r0, 0x78
|
|
subs r0, r1
|
|
strh r0, [r4, 0x30]
|
|
adds r2, r4, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
_08106F22:
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r2, 0x30
|
|
ldrsh r1, [r4, r2]
|
|
cmp r0, r1
|
|
bne _08106F40
|
|
ldrb r0, [r4, 0x5]
|
|
lsrs r0, 4
|
|
adds r0, 0x10
|
|
movs r1, 0
|
|
bl sub_80A750C
|
|
_08106F40:
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r4, r2]
|
|
adds r0, 0x50
|
|
cmp r1, r0
|
|
bne _08106F54
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_08106F54:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8106F00
|
|
|
|
thumb_func_start sub_8106F60
|
|
sub_8106F60: @ 8106F60
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
bne _08106F8E
|
|
movs r5, 0x78
|
|
strh r5, [r6, 0x20]
|
|
ldr r4, =gBattleAnimArgs
|
|
movs r2, 0
|
|
ldrsh r0, [r4, r2]
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
subs r0, 0xF
|
|
strh r0, [r6, 0x22]
|
|
ldrb r1, [r4, 0x2]
|
|
adds r0, r6, 0
|
|
bl StartSpriteAnim
|
|
strh r5, [r6, 0x38]
|
|
ldrh r0, [r4, 0x4]
|
|
strh r0, [r6, 0x34]
|
|
_08106F8E:
|
|
ldrh r0, [r6, 0x2E]
|
|
adds r0, 0x1
|
|
movs r5, 0
|
|
strh r0, [r6, 0x2E]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r6, r1]
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
strh r0, [r6, 0x30]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r6, r2]
|
|
lsls r4, r0, 1
|
|
adds r4, r0
|
|
ldrh r0, [r6, 0x34]
|
|
adds r4, r0
|
|
movs r2, 0xFF
|
|
ldrh r0, [r6, 0x3A]
|
|
adds r0, 0xA
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r6, 0x3A]
|
|
ands r4, r2
|
|
adds r0, r4, 0
|
|
movs r1, 0x64
|
|
bl Cos
|
|
strh r0, [r6, 0x24]
|
|
adds r0, r4, 0
|
|
movs r1, 0xA
|
|
bl Sin
|
|
adds r4, r0, 0
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r6, r1]
|
|
movs r1, 0x4
|
|
bl Cos
|
|
ldrh r2, [r6, 0x30]
|
|
adds r4, r2
|
|
adds r0, r4
|
|
strh r0, [r6, 0x26]
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r6, r0]
|
|
movs r2, 0x38
|
|
ldrsh r0, [r6, r2]
|
|
cmp r1, r0
|
|
ble _0810700A
|
|
ldr r0, =sub_8107018
|
|
str r0, [r6, 0x1C]
|
|
strh r5, [r6, 0x2E]
|
|
adds r0, r6, 0
|
|
bl oamt_add_pos2_onto_pos1
|
|
movs r0, 0x5
|
|
strh r0, [r6, 0x32]
|
|
strh r5, [r6, 0x36]
|
|
strh r5, [r6, 0x34]
|
|
adds r0, r6, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
_0810700A:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8106F60
|
|
|
|
thumb_func_start sub_8107018
|
|
sub_8107018: @ 8107018
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
ldrh r0, [r1, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x2E]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xA
|
|
ble _08107032
|
|
movs r0, 0
|
|
strh r0, [r1, 0x2E]
|
|
ldr r0, =sub_810703C
|
|
str r0, [r1, 0x1C]
|
|
_08107032:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8107018
|
|
|
|
thumb_func_start sub_810703C
|
|
sub_810703C: @ 810703C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x32]
|
|
ldrh r2, [r4, 0x34]
|
|
adds r0, r1, r2
|
|
strh r0, [r4, 0x34]
|
|
strh r0, [r4, 0x26]
|
|
adds r1, 0x1
|
|
strh r1, [r4, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x30
|
|
ble _08107066
|
|
lsls r0, r1, 16
|
|
cmp r0, 0
|
|
ble _08107066
|
|
ldrh r0, [r4, 0x36]
|
|
subs r1, r0, 0x5
|
|
strh r1, [r4, 0x32]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x36]
|
|
_08107066:
|
|
movs r1, 0x36
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x3
|
|
ble _08107098
|
|
movs r2, 0x32
|
|
ldrsh r1, [r4, r2]
|
|
lsrs r0, r1, 31
|
|
adds r0, r1, r0
|
|
asrs r0, 1
|
|
lsls r0, 1
|
|
subs r1, r0
|
|
adds r3, r4, 0
|
|
adds r3, 0x3E
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r3]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_08107098:
|
|
movs r1, 0x36
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x4
|
|
bne _081070A6
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_081070A6:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_810703C
|
|
|
|
thumb_func_start sub_81070AC
|
|
sub_81070AC: @ 81070AC
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _081070F8
|
|
ldr r4, =gBattleAnimAttacker
|
|
ldrb r1, [r4]
|
|
movs r0, 0x2
|
|
eors r0, r1
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _081070F8
|
|
ldrb r0, [r4]
|
|
adds r2, r5, 0
|
|
adds r2, 0x20
|
|
adds r3, r5, 0
|
|
adds r3, 0x22
|
|
movs r1, 0
|
|
bl SetAverageBattlerPositions
|
|
ldrh r0, [r5, 0x22]
|
|
adds r0, 0x28
|
|
strh r0, [r5, 0x22]
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
b _08107118
|
|
.pool
|
|
_081070F8:
|
|
ldr r4, =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x28
|
|
strh r0, [r5, 0x22]
|
|
_08107118:
|
|
movs r0, 0xD
|
|
strh r0, [r5, 0x2E]
|
|
ldrh r0, [r5, 0x20]
|
|
strh r0, [r5, 0x32]
|
|
ldrh r0, [r5, 0x22]
|
|
subs r0, 0x48
|
|
strh r0, [r5, 0x36]
|
|
ldr r0, =StartAnimLinearTranslation
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81070AC
|
|
|
|
thumb_func_start AnimTask_IsFuryCutterHitRight
|
|
AnimTask_IsFuryCutterHitRight: @ 8107144
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r3, =gBattleAnimArgs
|
|
ldr r1, =gAnimDisableStructPtr
|
|
ldr r1, [r1]
|
|
ldrb r2, [r1, 0x10]
|
|
movs r1, 0x1
|
|
ands r1, r2
|
|
strh r1, [r3, 0xE]
|
|
bl DestroyAnimVisualTask
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end AnimTask_IsFuryCutterHitRight
|
|
|
|
thumb_func_start AnimTask_GetFuryCutterHitCount
|
|
AnimTask_GetFuryCutterHitCount: @ 8107168
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, =gBattleAnimArgs
|
|
ldr r1, =gAnimDisableStructPtr
|
|
ldr r1, [r1]
|
|
ldrb r1, [r1, 0x10]
|
|
strh r1, [r2, 0xE]
|
|
bl DestroyAnimVisualTask
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end AnimTask_GetFuryCutterHitCount
|
|
|
|
.align 2, 0
|