mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-06 22:28:44 -05:00
7947 lines
136 KiB
ArmAsm
7947 lines
136 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_80A6E48
|
|
sub_80A6E48: @ 80A6E48
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
bl sub_8074FCC
|
|
ldr r5, _080A6E8C @ =gBattleAnimArgs
|
|
movs r0, 0
|
|
ldrsh r1, [r5, r0]
|
|
adds r0, r4, 0
|
|
bl sub_8074FF8
|
|
ldrh r0, [r5, 0x2]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x22]
|
|
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, _080A6E90 @ =move_anim_8074EE0
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r1, _080A6E94 @ =sub_8074BE4
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A6E8C: .4byte gBattleAnimArgs
|
|
_080A6E90: .4byte move_anim_8074EE0
|
|
_080A6E94: .4byte sub_8074BE4
|
|
thumb_func_end sub_80A6E48
|
|
|
|
thumb_func_start sub_80A6E98
|
|
sub_80A6E98: @ 80A6E98
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _080A6EAC @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080A6EB4
|
|
ldr r0, _080A6EB0 @ =gBattleAnimAttacker
|
|
b _080A6EB6
|
|
.align 2, 0
|
|
_080A6EAC: .4byte gBattleAnimArgs
|
|
_080A6EB0: .4byte gBattleAnimAttacker
|
|
_080A6EB4:
|
|
ldr r0, _080A6ED0 @ =gBattleAnimTarget
|
|
_080A6EB6:
|
|
ldrb r0, [r0]
|
|
adds r1, r4, 0
|
|
bl sub_80A6B0C
|
|
movs r0, 0
|
|
strh r0, [r4, 0x2E]
|
|
strh r0, [r4, 0x30]
|
|
ldr r0, _080A6ED4 @ =sub_80A6ED8
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A6ED0: .4byte gBattleAnimTarget
|
|
_080A6ED4: .4byte sub_80A6ED8
|
|
thumb_func_end sub_80A6E98
|
|
|
|
thumb_func_start sub_80A6ED8
|
|
sub_80A6ED8: @ 80A6ED8
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0x1
|
|
beq _080A6F0A
|
|
cmp r0, 0x1
|
|
bgt _080A6EEE
|
|
cmp r0, 0
|
|
beq _080A6EF4
|
|
b _080A6F38
|
|
_080A6EEE:
|
|
cmp r0, 0x2
|
|
beq _080A6F24
|
|
b _080A6F38
|
|
_080A6EF4:
|
|
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 _080A6F38
|
|
b _080A6F1C
|
|
_080A6F0A:
|
|
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 _080A6F38
|
|
_080A6F1C:
|
|
ldrh r0, [r1, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x2E]
|
|
b _080A6F38
|
|
_080A6F24:
|
|
ldrh r0, [r1, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x40
|
|
bne _080A6F38
|
|
adds r0, r1, 0
|
|
bl DestroyAnimSprite
|
|
_080A6F38:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A6ED8
|
|
|
|
thumb_func_start sub_80A6F3C
|
|
sub_80A6F3C: @ 80A6F3C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r3, _080A6F88 @ =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 _080A6F7A
|
|
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
|
|
_080A6F7A:
|
|
ldrh r0, [r4, 0x2E]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A6F88: .4byte gSprites
|
|
thumb_func_end sub_80A6F3C
|
|
|
|
thumb_func_start sub_80A6F8C
|
|
sub_80A6F8C: @ 80A6F8C
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080A6FD4 @ =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, _080A6FD8 @ =gBattlerSpriteIds
|
|
ldr r0, _080A6FDC @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r6, [r0]
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A6FE4
|
|
ldr r0, _080A6FE0 @ =gBattleAnimArgs
|
|
ldrh r1, [r5, 0x20]
|
|
ldrh r2, [r0]
|
|
subs r1, r2
|
|
strh r1, [r5, 0x20]
|
|
adds r1, r0, 0
|
|
b _080A6FEE
|
|
.align 2, 0
|
|
_080A6FD4: .4byte gBattleAnimAttacker
|
|
_080A6FD8: .4byte gBattlerSpriteIds
|
|
_080A6FDC: .4byte gBattleAnimTarget
|
|
_080A6FE0: .4byte gBattleAnimArgs
|
|
_080A6FE4:
|
|
ldr r1, _080A7018 @ =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
ldrh r2, [r5, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x20]
|
|
_080A6FEE:
|
|
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, _080A701C @ =sub_80A6F3C
|
|
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
|
|
.align 2, 0
|
|
_080A7018: .4byte gBattleAnimArgs
|
|
_080A701C: .4byte sub_80A6F3C
|
|
thumb_func_end sub_80A6F8C
|
|
|
|
thumb_func_start sub_80A7020
|
|
sub_80A7020: @ 80A7020
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r1, _080A704C @ =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, _080A7050 @ =sub_8074C44
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, _080A7054 @ =sub_80A7058
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A704C: .4byte gBattleAnimArgs
|
|
_080A7050: .4byte sub_8074C44
|
|
_080A7054: .4byte sub_80A7058
|
|
thumb_func_end sub_80A7020
|
|
|
|
thumb_func_start sub_80A7058
|
|
sub_80A7058: @ 80A7058
|
|
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, _080A7078 @ =StartAnimLinearTranslation
|
|
str r1, [r0, 0x1C]
|
|
ldr r1, _080A707C @ =sub_80A7080
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A7078: .4byte StartAnimLinearTranslation
|
|
_080A707C: .4byte sub_80A7080
|
|
thumb_func_end sub_80A7058
|
|
|
|
thumb_func_start sub_80A7080
|
|
sub_80A7080: @ 80A7080
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
ldrh r2, [r1, 0x38]
|
|
movs r3, 0x38
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
bne _080A7096
|
|
adds r0, r1, 0
|
|
bl DestroyAnimSprite
|
|
b _080A709A
|
|
_080A7096:
|
|
subs r0, r2, 0x1
|
|
strh r0, [r1, 0x38]
|
|
_080A709A:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A7080
|
|
|
|
thumb_func_start sub_80A70A0
|
|
sub_80A70A0: @ 80A70A0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r1, _080A70CC @ =gBattlerSpriteIds
|
|
ldr r0, _080A70D0 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
movs r1, 0
|
|
bl PrepareBattlerSpriteForRotScale
|
|
ldr r1, _080A70D4 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r1, _080A70D8 @ =sub_80A70DC
|
|
str r1, [r0]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A70CC: .4byte gBattlerSpriteIds
|
|
_080A70D0: .4byte gBattleAnimAttacker
|
|
_080A70D4: .4byte gTasks
|
|
_080A70D8: .4byte sub_80A70DC
|
|
thumb_func_end sub_80A70A0
|
|
|
|
thumb_func_start sub_80A70DC
|
|
sub_80A70DC: @ 80A70DC
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, _080A710C @ =gBattlerSpriteIds
|
|
ldr r0, _080A7110 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
adds r1, r0, r1
|
|
ldrb r4, [r1]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A7118
|
|
ldr r1, _080A7114 @ =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 _080A7126
|
|
.align 2, 0
|
|
_080A710C: .4byte gBattlerSpriteIds
|
|
_080A7110: .4byte gBattleAnimAttacker
|
|
_080A7114: .4byte gTasks
|
|
_080A7118:
|
|
ldr r2, _080A7158 @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r0, r1, r5
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
ldrh r3, [r0, 0x8]
|
|
adds r6, r1, 0
|
|
_080A7126:
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r0, r4, 0
|
|
adds r1, r2, 0
|
|
bl SetSpriteRotScale
|
|
ldr r1, _080A7158 @ =gTasks
|
|
adds r0, r6, r5
|
|
lsls r0, 3
|
|
adds r1, r0, r1
|
|
movs r2, 0xA
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
bne _080A7160
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0xB0
|
|
strh r0, [r1, 0x8]
|
|
ldr r1, _080A715C @ =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrh r1, [r0, 0x26]
|
|
adds r1, 0x1
|
|
b _080A718A
|
|
.align 2, 0
|
|
_080A7158: .4byte gTasks
|
|
_080A715C: .4byte gSprites
|
|
_080A7160:
|
|
cmp r0, 0x1
|
|
bne _080A7176
|
|
ldrh r0, [r1, 0xE]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0xE]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1E
|
|
bne _080A71D0
|
|
movs r0, 0x2
|
|
b _080A71CE
|
|
_080A7176:
|
|
ldrh r0, [r1, 0x8]
|
|
subs r0, 0xB0
|
|
strh r0, [r1, 0x8]
|
|
ldr r1, _080A71C4 @ =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrh r1, [r0, 0x26]
|
|
subs r1, 0x1
|
|
_080A718A:
|
|
strh r1, [r0, 0x26]
|
|
adds r0, r4, 0
|
|
bl sub_80759DC
|
|
ldr r0, _080A71C8 @ =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 _080A71AA
|
|
cmp r2, 0
|
|
bne _080A71D0
|
|
_080A71AA:
|
|
ldrh r2, [r1, 0xA]
|
|
movs r3, 0xA
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0x2
|
|
bne _080A71CC
|
|
adds r0, r4, 0
|
|
bl ResetSpriteRotScale
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
b _080A71D0
|
|
.align 2, 0
|
|
_080A71C4: .4byte gSprites
|
|
_080A71C8: .4byte gTasks
|
|
_080A71CC:
|
|
adds r0, r2, 0x1
|
|
_080A71CE:
|
|
strh r0, [r1, 0xA]
|
|
_080A71D0:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A70DC
|
|
|
|
thumb_func_start sub_80A71D8
|
|
sub_80A71D8: @ 80A71D8
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
bl sub_8074FCC
|
|
ldr r0, _080A71FC @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A7204
|
|
ldr r0, _080A7200 @ =gBattleAnimArgs
|
|
ldrh r1, [r4, 0x20]
|
|
ldrh r2, [r0]
|
|
subs r1, r2
|
|
strh r1, [r4, 0x20]
|
|
adds r5, r0, 0
|
|
b _080A7210
|
|
.align 2, 0
|
|
_080A71FC: .4byte gBattleAnimAttacker
|
|
_080A7200: .4byte gBattleAnimArgs
|
|
_080A7204:
|
|
ldr r1, _080A7244 @ =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x20]
|
|
adds r5, r1, 0
|
|
_080A7210:
|
|
ldrh r0, [r5, 0x2]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x22]
|
|
ldr r0, _080A7248 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A724C
|
|
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 _080A7260
|
|
movs r0, 0x2
|
|
orrs r2, r0
|
|
strb r2, [r3]
|
|
b _080A7260
|
|
.align 2, 0
|
|
_080A7244: .4byte gBattleAnimArgs
|
|
_080A7248: .4byte gBattleAnimAttacker
|
|
_080A724C:
|
|
movs r2, 0x4
|
|
ldrsh r0, [r5, r2]
|
|
cmp r0, 0
|
|
beq _080A7260
|
|
adds r2, r4, 0
|
|
adds r2, 0x3F
|
|
ldrb r0, [r2]
|
|
movs r1, 0x2
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
_080A7260:
|
|
ldr r0, _080A7274 @ =sub_8074F6C
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, _080A7278 @ =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A7274: .4byte sub_8074F6C
|
|
_080A7278: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80A71D8
|
|
|
|
thumb_func_start sub_80A727C
|
|
sub_80A727C: @ 80A727C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0
|
|
bl sub_8075160
|
|
ldr r0, _080A7298 @ =sub_8074F50
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, _080A729C @ =sub_80A72A0
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A7298: .4byte sub_8074F50
|
|
_080A729C: .4byte sub_80A72A0
|
|
thumb_func_end sub_80A727C
|
|
|
|
thumb_func_start sub_80A72A0
|
|
sub_80A72A0: @ 80A72A0
|
|
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, _080A72C0 @ =StartAnimLinearTranslation
|
|
str r1, [r0, 0x1C]
|
|
ldr r1, _080A72C4 @ =DestroyAnimSprite
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A72C0: .4byte StartAnimLinearTranslation
|
|
_080A72C4: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80A72A0
|
|
|
|
thumb_func_start sub_80A72C8
|
|
sub_80A72C8: @ 80A72C8
|
|
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 _080A72EC
|
|
ldr r1, _080A72E8 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x4]
|
|
b _080A730E
|
|
.align 2, 0
|
|
_080A72E8: .4byte gBattleAnimArgs
|
|
_080A72EC:
|
|
ldr r0, _080A73B4 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A730E
|
|
ldr r1, _080A73B8 @ =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]
|
|
_080A730E:
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r4, _080A73BC @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
ldr r6, _080A73B8 @ =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 sub_8075B30
|
|
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 _080A7380
|
|
ldr r2, _080A73C0 @ =0xffffa000
|
|
adds r0, r4, r2
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
_080A7380:
|
|
movs r3, 0x80
|
|
lsls r3, 1
|
|
str r4, [sp]
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
adds r2, r3, 0
|
|
bl sub_8075A1C
|
|
ldrh r0, [r6, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
mov r0, r8
|
|
strh r0, [r5, 0x32]
|
|
strh r7, [r5, 0x36]
|
|
ldr r0, _080A73C4 @ =StartAnimLinearTranslation
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, _080A73C8 @ =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A73B4: .4byte gBattleAnimAttacker
|
|
_080A73B8: .4byte gBattleAnimArgs
|
|
_080A73BC: .4byte gBattleAnimTarget
|
|
_080A73C0: .4byte 0xffffa000
|
|
_080A73C4: .4byte StartAnimLinearTranslation
|
|
_080A73C8: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80A72C8
|
|
|
|
thumb_func_start sub_80A73CC
|
|
sub_80A73CC: @ 80A73CC
|
|
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 _080A73F6
|
|
ldr r2, _080A73FC @ =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
|
|
_080A73F6:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A73FC: .4byte gTasks
|
|
thumb_func_end sub_80A73CC
|
|
|
|
thumb_func_start sub_80A7400
|
|
sub_80A7400: @ 80A7400
|
|
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, _080A7430 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r3, 0x2E
|
|
ldrsh r1, [r2, r3]
|
|
movs r3, 0x12
|
|
ldrsh r0, [r4, r3]
|
|
cmp r1, r0
|
|
ble _080A7434
|
|
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 _080A7442
|
|
.align 2, 0
|
|
_080A7430: .4byte gTasks
|
|
_080A7434:
|
|
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
|
|
_080A7442:
|
|
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 _080A7466
|
|
lsls r0, r3, 16
|
|
lsrs r0, 24
|
|
negs r0, r0
|
|
b _080A746A
|
|
_080A7466:
|
|
lsls r0, r3, 16
|
|
lsrs r0, 24
|
|
_080A746A:
|
|
strh r0, [r2, 0x24]
|
|
ldrh r1, [r4, 0x18]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A747E
|
|
ldrh r0, [r2, 0x32]
|
|
lsrs r0, 8
|
|
negs r0, r0
|
|
b _080A7482
|
|
_080A747E:
|
|
ldrh r0, [r2, 0x32]
|
|
lsrs r0, 8
|
|
_080A7482:
|
|
strh r0, [r2, 0x26]
|
|
ldrh r0, [r2, 0x2E]
|
|
subs r1, r0, 0x1
|
|
strh r1, [r2, 0x2E]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bgt _080A7498
|
|
movs r0, 0x1E
|
|
strh r0, [r2, 0x2E]
|
|
ldr r0, _080A74A0 @ =sub_80A73CC
|
|
str r0, [r2, 0x1C]
|
|
_080A7498:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A74A0: .4byte sub_80A73CC
|
|
thumb_func_end sub_80A7400
|
|
|
|
thumb_func_start sub_80A74A4
|
|
sub_80A74A4: @ 80A74A4
|
|
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, _080A74E8 @ =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 _080A74EC
|
|
lsls r0, r2, 16
|
|
lsrs r0, 24
|
|
negs r0, r0
|
|
b _080A74F0
|
|
.align 2, 0
|
|
_080A74E8: .4byte gTasks
|
|
_080A74EC:
|
|
lsls r0, r2, 16
|
|
lsrs r0, 24
|
|
_080A74F0:
|
|
strh r0, [r7, 0x24]
|
|
ldrh r1, [r6, 0x18]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A7504
|
|
ldrh r0, [r7, 0x32]
|
|
lsrs r0, 8
|
|
negs r0, r0
|
|
b _080A7508
|
|
_080A7504:
|
|
ldrh r0, [r7, 0x32]
|
|
lsrs r0, 8
|
|
_080A7508:
|
|
strh r0, [r7, 0x26]
|
|
ldrh r0, [r7, 0x2E]
|
|
subs r1, r0, 0x1
|
|
strh r1, [r7, 0x2E]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bgt _080A75D4
|
|
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_80D8B90
|
|
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 _080A7552
|
|
subs r0, r3, r2
|
|
b _080A7554
|
|
_080A7552:
|
|
subs r0, r2, r3
|
|
_080A7554:
|
|
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 _080A756C
|
|
subs r0, r3, r2
|
|
b _080A756E
|
|
_080A756C:
|
|
subs r0, r2, r3
|
|
_080A756E:
|
|
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_80D8AA0
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
movs r6, 0xE0
|
|
lsls r6, 1
|
|
adds r0, r6, 0
|
|
bl sub_80D8B90
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r4, 0
|
|
bl sub_80D8AA0
|
|
strh r0, [r7, 0x34]
|
|
mov r1, r8
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
adds r1, r5, 0
|
|
bl sub_80D8AA0
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
adds r0, r6, 0
|
|
bl sub_80D8B90
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r4, 0
|
|
bl sub_80D8AA0
|
|
strh r0, [r7, 0x36]
|
|
ldr r0, _080A75E0 @ =sub_80A7400
|
|
str r0, [r7, 0x1C]
|
|
_080A75D4:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A75E0: .4byte sub_80A7400
|
|
thumb_func_end sub_80A74A4
|
|
|
|
thumb_func_start sub_80A75E4
|
|
sub_80A75E4: @ 80A75E4
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r1, _080A7608 @ =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 _080A7602
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
_080A7602:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A7608: .4byte gTasks
|
|
thumb_func_end sub_80A75E4
|
|
|
|
thumb_func_start sub_80A760C
|
|
sub_80A760C: @ 80A760C
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r1, _080A7660 @ =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 _080A76E0
|
|
ldr r0, _080A7664 @ =gUnknown_83E3C28
|
|
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, _080A7668 @ =gSprites
|
|
adds r6, r0, r1
|
|
movs r1, 0x10
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x1
|
|
beq _080A766C
|
|
cmp r0, 0x2
|
|
beq _080A7682
|
|
b _080A7690
|
|
.align 2, 0
|
|
_080A7660: .4byte gTasks
|
|
_080A7664: .4byte gUnknown_83E3C28
|
|
_080A7668: .4byte gSprites
|
|
_080A766C:
|
|
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 _080A7690
|
|
_080A7682:
|
|
ldrb r0, [r6, 0x3]
|
|
movs r1, 0x3F
|
|
negs r1, r1
|
|
ands r1, r0
|
|
movs r0, 0x10
|
|
orrs r1, r0
|
|
strb r1, [r6, 0x3]
|
|
_080A7690:
|
|
ldr r3, _080A76E8 @ =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 sub_8073A44
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r0, 0x93
|
|
bl PlaySE12WithPanning
|
|
movs r3, 0xA
|
|
ldrsh r0, [r4, r3]
|
|
cmp r0, 0x2
|
|
ble _080A76E0
|
|
ldr r0, _080A76EC @ =sub_80A75E4
|
|
str r0, [r4]
|
|
_080A76E0:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A76E8: .4byte gTasks
|
|
_080A76EC: .4byte sub_80A75E4
|
|
thumb_func_end sub_80A760C
|
|
|
|
thumb_func_start sub_80A76F0
|
|
sub_80A76F0: @ 80A76F0
|
|
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 _080A775C
|
|
ldr r1, _080A774C @ =gTasks
|
|
lsls r2, r7, 2
|
|
adds r0, r2, r7
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r1, 0x2
|
|
strh r1, [r0, 0x10]
|
|
ldr r3, _080A7750 @ =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 _080A7754
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strh r0, [r3, 0x4]
|
|
b _080A77B6
|
|
.align 2, 0
|
|
_080A774C: .4byte gTasks
|
|
_080A7750: .4byte gBattleAnimArgs
|
|
_080A7754:
|
|
movs r0, 0x1
|
|
orrs r0, r1
|
|
strh r0, [r3, 0x4]
|
|
b _080A77B6
|
|
_080A775C:
|
|
ldr r1, _080A77A0 @ =gBattlerPositions
|
|
ldr r0, _080A77A4 @ =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 _080A77B6
|
|
ldr r1, _080A77A8 @ =gTasks
|
|
adds r0, r2, r7
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
strh r3, [r0, 0x10]
|
|
ldr r2, _080A77AC @ =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 _080A77B0
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
ands r0, r1
|
|
b _080A77B4
|
|
.align 2, 0
|
|
_080A77A0: .4byte gBattlerPositions
|
|
_080A77A4: .4byte gBattleAnimTarget
|
|
_080A77A8: .4byte gTasks
|
|
_080A77AC: .4byte gBattleAnimArgs
|
|
_080A77B0:
|
|
movs r0, 0x1
|
|
orrs r0, r1
|
|
_080A77B4:
|
|
strh r0, [r2, 0x4]
|
|
_080A77B6:
|
|
ldr r5, _080A7810 @ =gBattleAnimAttacker
|
|
ldrb r0, [r5]
|
|
movs r1, 0
|
|
bl GetBattlerSpriteCoord
|
|
ldr r1, _080A7814 @ =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, _080A7818 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A7820
|
|
ldr r4, _080A781C @ =gBattleAnimTarget
|
|
ldrb r1, [r4]
|
|
movs r0, 0x2
|
|
eors r0, r1
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A7820
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
mov r2, sp
|
|
mov r3, r10
|
|
bl sub_8076D9C
|
|
b _080A7842
|
|
.align 2, 0
|
|
_080A7810: .4byte gBattleAnimAttacker
|
|
_080A7814: .4byte gTasks
|
|
_080A7818: .4byte gBattleTypeFlags
|
|
_080A781C: .4byte gBattleAnimTarget
|
|
_080A7820:
|
|
mov r5, sp
|
|
ldr r4, _080A787C @ =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]
|
|
_080A7842:
|
|
mov r4, sp
|
|
ldr r0, _080A7880 @ =gTasks
|
|
mov r2, r8
|
|
adds r1, r2, r7
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
mov r2, sp
|
|
ldr r3, _080A7884 @ =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 _080A7888
|
|
subs r0, r2, r1
|
|
b _080A788A
|
|
.align 2, 0
|
|
_080A787C: .4byte gBattleAnimTarget
|
|
_080A7880: .4byte gTasks
|
|
_080A7884: .4byte gBattleAnimArgs
|
|
_080A7888:
|
|
subs r0, r1, r2
|
|
_080A788A:
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
lsls r4, r0, 16
|
|
asrs r4, 16
|
|
ldr r5, _080A7900 @ =gBattleAnimArgs
|
|
ldrh r1, [r5, 0x4]
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
ands r0, r1
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
bl sub_80D8B90
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r4, 0
|
|
bl sub_80D8AA0
|
|
ldr r2, _080A7904 @ =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_80D8AA0
|
|
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 _080A7908
|
|
subs r4, r1, r4
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
movs r1, 0x12
|
|
ldrsh r0, [r6, r1]
|
|
bl sub_80D8B90
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r4, 0
|
|
bl sub_80D8AA0
|
|
movs r1, 0x2
|
|
negs r1, r1
|
|
ands r1, r0
|
|
strh r1, [r6, 0x18]
|
|
b _080A7928
|
|
.align 2, 0
|
|
_080A7900: .4byte gBattleAnimArgs
|
|
_080A7904: .4byte gTasks
|
|
_080A7908:
|
|
subs r4, r1
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
movs r2, 0x12
|
|
ldrsh r0, [r6, r2]
|
|
bl sub_80D8B90
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r4, 0
|
|
bl sub_80D8AA0
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
strh r0, [r6, 0x18]
|
|
_080A7928:
|
|
ldr r1, _080A7968 @ =gTasks
|
|
mov r3, r8
|
|
adds r0, r3, r7
|
|
lsls r0, 3
|
|
adds r5, r0, r1
|
|
ldr r4, _080A796C @ =gBattleAnimArgs
|
|
ldrh r0, [r4, 0x6]
|
|
strh r0, [r5, 0xE]
|
|
ldrh r1, [r4, 0x8]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A7978
|
|
movs r0, 0x80
|
|
eors r0, r1
|
|
strh r0, [r4, 0x8]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x3F
|
|
ble _080A79A0
|
|
ldr r0, _080A7970 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSpriteSubpriority
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _080A7974 @ =0x0000ffc0
|
|
adds r1, r2, 0
|
|
ldrh r4, [r4, 0x8]
|
|
adds r1, r4
|
|
adds r0, r1
|
|
b _080A79B0
|
|
.align 2, 0
|
|
_080A7968: .4byte gTasks
|
|
_080A796C: .4byte gBattleAnimArgs
|
|
_080A7970: .4byte gBattleAnimTarget
|
|
_080A7974: .4byte 0x0000ffc0
|
|
_080A7978:
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x3F
|
|
ble _080A79A0
|
|
ldr r0, _080A7998 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSpriteSubpriority
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r3, _080A799C @ =0x0000ffc0
|
|
adds r1, r3, 0
|
|
ldrh r4, [r4, 0x8]
|
|
adds r1, r4
|
|
adds r0, r1
|
|
b _080A79B0
|
|
.align 2, 0
|
|
_080A7998: .4byte gBattleAnimTarget
|
|
_080A799C: .4byte 0x0000ffc0
|
|
_080A79A0:
|
|
ldr r0, _080A79DC @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSpriteSubpriority
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x8]
|
|
subs r0, r1
|
|
_080A79B0:
|
|
strh r0, [r5, 0xC]
|
|
ldr r0, _080A79E0 @ =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 _080A79C8
|
|
movs r0, 0x3
|
|
strh r0, [r1, 0xC]
|
|
_080A79C8:
|
|
ldr r0, _080A79E4 @ =sub_80A760C
|
|
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
|
|
.align 2, 0
|
|
_080A79DC: .4byte gBattleAnimTarget
|
|
_080A79E0: .4byte gTasks
|
|
_080A79E4: .4byte sub_80A760C
|
|
thumb_func_end sub_80A76F0
|
|
|
|
thumb_func_start sub_80A79E8
|
|
sub_80A79E8: @ 80A79E8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0
|
|
bl sub_8075160
|
|
ldr r0, _080A7A10 @ =gUnknown_83E3D18
|
|
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, _080A7A14 @ =sub_80A7A18
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A7A10: .4byte gUnknown_83E3D18
|
|
_080A7A14: .4byte sub_80A7A18
|
|
thumb_func_end sub_80A79E8
|
|
|
|
thumb_func_start sub_80A7A18
|
|
sub_80A7A18: @ 80A7A18
|
|
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 _080A7A7C
|
|
movs r0, 0
|
|
strh r0, [r4, 0x30]
|
|
ldrh r5, [r4, 0x2E]
|
|
ldr r1, _080A7A84 @ =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
|
|
_080A7A50:
|
|
ldrh r0, [r1]
|
|
strh r0, [r2]
|
|
adds r1, 0x2
|
|
adds r2, 0x2
|
|
subs r3, 0x1
|
|
cmp r3, 0
|
|
bge _080A7A50
|
|
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 _080A7A7C
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080A7A7C:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A7A84: .4byte gPlttBufferFaded
|
|
thumb_func_end sub_80A7A18
|
|
|
|
thumb_func_start sub_80A7A88
|
|
sub_80A7A88: @ 80A7A88
|
|
push {r4-r7,lr}
|
|
sub sp, 0x4
|
|
adds r5, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r4, _080A7B28 @ =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, _080A7B2C @ =gBattleAnimArgs
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x6]
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
ldr r0, _080A7B30 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A7ACC
|
|
ldrh r0, [r4, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x4]
|
|
_080A7ACC:
|
|
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 sub_8075B30
|
|
lsls r0, 16
|
|
movs r1, 0xC0
|
|
lsls r1, 24
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
movs r3, 0x80
|
|
lsls r3, 1
|
|
str r0, [sp]
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
adds r2, r3, 0
|
|
bl sub_8075A1C
|
|
ldrh r0, [r4, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
strh r6, [r5, 0x32]
|
|
strh r7, [r5, 0x36]
|
|
ldr r0, _080A7B34 @ =sub_80756A4
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, _080A7B38 @ =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A7B28: .4byte gBattleAnimTarget
|
|
_080A7B2C: .4byte gBattleAnimArgs
|
|
_080A7B30: .4byte gBattleAnimAttacker
|
|
_080A7B34: .4byte sub_80756A4
|
|
_080A7B38: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80A7A88
|
|
|
|
thumb_func_start sub_80A7B3C
|
|
sub_80A7B3C: @ 80A7B3C
|
|
ldr r1, _080A7B4C @ =0x0000fff0
|
|
strh r1, [r0, 0x32]
|
|
ldrh r1, [r0, 0x22]
|
|
adds r1, 0x8
|
|
strh r1, [r0, 0x22]
|
|
ldr r1, _080A7B50 @ =sub_80A7B54
|
|
str r1, [r0, 0x1C]
|
|
bx lr
|
|
.align 2, 0
|
|
_080A7B4C: .4byte 0x0000fff0
|
|
_080A7B50: .4byte sub_80A7B54
|
|
thumb_func_end sub_80A7B3C
|
|
|
|
thumb_func_start sub_80A7B54
|
|
sub_80A7B54: @ 80A7B54
|
|
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, _080A7BC0 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A7B78
|
|
ldrh r0, [r4, 0x24]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x24]
|
|
_080A7B78:
|
|
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 _080A7BB8
|
|
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 _080A7BB8
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080A7BB8:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A7BC0: .4byte gBattleAnimAttacker
|
|
thumb_func_end sub_80A7B54
|
|
|
|
thumb_func_start sub_80A7BC4
|
|
sub_80A7BC4: @ 80A7BC4
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
movs r0, 0x14
|
|
strh r0, [r4, 0x2E]
|
|
ldr r5, _080A7C10 @ =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, _080A7C14 @ =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, _080A7C18 @ =sub_80A7C1C
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A7C10: .4byte gBattleAnimTarget
|
|
_080A7C14: .4byte StartAnimLinearTranslation
|
|
_080A7C18: .4byte sub_80A7C1C
|
|
thumb_func_end sub_80A7BC4
|
|
|
|
thumb_func_start sub_80A7C1C
|
|
sub_80A7C1C: @ 80A7C1C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x3F
|
|
bl sub_8073A44
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r0, 0x9F
|
|
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
|
|
_080A7C50:
|
|
strh r2, [r0]
|
|
subs r0, 0x2
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bge _080A7C50
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x7
|
|
ands r0, r1
|
|
ldr r2, _080A7C98 @ =0x0000fff4
|
|
adds r1, r2, 0
|
|
subs r1, r0
|
|
strh r1, [r4, 0x3A]
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0xA0
|
|
bl __umodsi3
|
|
adds r0, 0xA0
|
|
strh r0, [r4, 0x3C]
|
|
ldr r0, _080A7C9C @ =sub_80A7CA0
|
|
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
|
|
.align 2, 0
|
|
_080A7C98: .4byte 0x0000fff4
|
|
_080A7C9C: .4byte sub_80A7CA0
|
|
thumb_func_end sub_80A7C1C
|
|
|
|
thumb_func_start sub_80A7CA0
|
|
sub_80A7CA0: @ 80A7CA0
|
|
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 _080A7CBE
|
|
negs r0, r2
|
|
strh r0, [r4, 0x24]
|
|
_080A7CBE:
|
|
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 _080A7CFE
|
|
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 _080A7CFE
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080A7CFE:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A7CA0
|
|
|
|
thumb_func_start sub_80A7D04
|
|
sub_80A7D04: @ 80A7D04
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0
|
|
bl sub_8075160
|
|
ldr r0, _080A7D54 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A7D22
|
|
ldrh r0, [r4, 0x22]
|
|
adds r0, 0x10
|
|
strh r0, [r4, 0x22]
|
|
_080A7D22:
|
|
ldr r1, _080A7D58 @ =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, _080A7D5C @ =sub_8074A80
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, _080A7D60 @ =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
|
|
.align 2, 0
|
|
_080A7D54: .4byte gBattleAnimAttacker
|
|
_080A7D58: .4byte gBattleAnimArgs
|
|
_080A7D5C: .4byte sub_8074A80
|
|
_080A7D60: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80A7D04
|
|
|
|
thumb_func_start sub_80A7D64
|
|
sub_80A7D64: @ 80A7D64
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r5, r0, 0
|
|
movs r7, 0x20
|
|
ldr r4, _080A7DE0 @ =0x0000ffe0
|
|
movs r0, 0x10
|
|
mov r8, r0
|
|
ldr r6, _080A7DE4 @ =0x0000fff0
|
|
ldr r0, _080A7DE8 @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
beq _080A7D90
|
|
adds r7, r4, 0
|
|
movs r4, 0x20
|
|
mov r8, r6
|
|
movs r6, 0x10
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAnim
|
|
_080A7D90:
|
|
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, _080A7DEC @ =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, _080A7DF0 @ =StartAnimLinearTranslation
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, _080A7DF4 @ =sub_80A7DF8
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A7DE0: .4byte 0x0000ffe0
|
|
_080A7DE4: .4byte 0x0000fff0
|
|
_080A7DE8: .4byte gBattleAnimArgs
|
|
_080A7DEC: .4byte gBattleAnimTarget
|
|
_080A7DF0: .4byte StartAnimLinearTranslation
|
|
_080A7DF4: .4byte sub_80A7DF8
|
|
thumb_func_end sub_80A7D64
|
|
|
|
thumb_func_start sub_80A7DF8
|
|
sub_80A7DF8: @ 80A7DF8
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A7E0E
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_080A7E0E:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A7DF8
|
|
|
|
thumb_func_start sub_80A7E14
|
|
sub_80A7E14: @ 80A7E14
|
|
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, _080A7EA8 @ =0x0000ffe0
|
|
movs r2, 0x10
|
|
mov r9, r2
|
|
ldr r6, _080A7EAC @ =0x0000fff0
|
|
ldr r7, _080A7EB0 @ =gBattleAnimArgs
|
|
ldrh r1, [r7]
|
|
movs r2, 0
|
|
ldrsh r0, [r7, r2]
|
|
cmp r0, 0
|
|
beq _080A7E48
|
|
mov r8, r4
|
|
movs r4, 0x20
|
|
mov r9, r6
|
|
movs r6, 0x10
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r5, 0
|
|
bl StartSpriteAnim
|
|
_080A7E48:
|
|
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, _080A7EB4 @ =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 obj_translate_based_on_private_1_2_3_4
|
|
ldrh r0, [r7]
|
|
strh r0, [r5, 0x38]
|
|
ldrh r0, [r5, 0x2E]
|
|
strh r0, [r5, 0x3A]
|
|
ldr r0, _080A7EB8 @ =sub_80A7EBC
|
|
str r0, [r5, 0x1C]
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A7EA8: .4byte 0x0000ffe0
|
|
_080A7EAC: .4byte 0x0000fff0
|
|
_080A7EB0: .4byte gBattleAnimArgs
|
|
_080A7EB4: .4byte gBattleAnimTarget
|
|
_080A7EB8: .4byte sub_80A7EBC
|
|
thumb_func_end sub_80A7E14
|
|
|
|
thumb_func_start sub_80A7EBC
|
|
sub_80A7EBC: @ 80A7EBC
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80755E0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A7F20
|
|
adds r0, r4, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A7F20
|
|
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, _080A7F28 @ =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, _080A7F2C @ =sub_80A7F30
|
|
str r0, [r4, 0x1C]
|
|
_080A7F20:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A7F28: .4byte 0x0000fffe
|
|
_080A7F2C: .4byte sub_80A7F30
|
|
thumb_func_end sub_80A7EBC
|
|
|
|
thumb_func_start sub_80A7F30
|
|
sub_80A7F30: @ 80A7F30
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080A7F48
|
|
ldrh r0, [r4, 0x24]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x24]
|
|
ldrh r0, [r4, 0x26]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x26]
|
|
_080A7F48:
|
|
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 _080A7F8A
|
|
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, _080A7F90 @ =sub_80A7F94
|
|
str r0, [r4, 0x1C]
|
|
_080A7F8A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A7F90: .4byte sub_80A7F94
|
|
thumb_func_end sub_80A7F30
|
|
|
|
thumb_func_start sub_80A7F94
|
|
sub_80A7F94: @ 80A7F94
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80755E0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A7FA8
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080A7FA8:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A7F94
|
|
|
|
thumb_func_start sub_80A7FB0
|
|
sub_80A7FB0: @ 80A7FB0
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
movs r0, 0x1
|
|
bl GetAnimBankSpriteId
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl PrepareBattlerSpriteForRotScale
|
|
adds r0, r4, 0
|
|
movs r1, 0xD0
|
|
movs r2, 0xD0
|
|
movs r3, 0
|
|
bl SetSpriteRotScale
|
|
ldr r1, _080A8008 @ =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_8075B48
|
|
ldr r1, _080A800C @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r1, 0x50
|
|
strh r1, [r0, 0x8]
|
|
ldr r1, _080A8010 @ =sub_80A8014
|
|
str r1, [r0]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A8008: .4byte gSprites
|
|
_080A800C: .4byte gTasks
|
|
_080A8010: .4byte sub_80A8014
|
|
thumb_func_end sub_80A7FB0
|
|
|
|
thumb_func_start sub_80A8014
|
|
sub_80A8014: @ 80A8014
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, _080A806C @ =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 _080A8064
|
|
movs r0, 0x1
|
|
bl GetAnimBankSpriteId
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
bl ResetSpriteRotScale
|
|
ldr r1, _080A8070 @ =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_8075B48
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080A8064:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A806C: .4byte gTasks
|
|
_080A8070: .4byte gSprites
|
|
thumb_func_end sub_80A8014
|
|
|
|
thumb_func_start sub_80A8074
|
|
sub_80A8074: @ 80A8074
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
ldr r0, _080A80C0 @ =gTasks
|
|
adds r4, r0
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r5, 0
|
|
strh r0, [r4, 0x8]
|
|
movs r1, 0
|
|
bl PrepareBattlerSpriteForRotScale
|
|
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, _080A80C4 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSpriteSubpriority
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x16]
|
|
ldr r0, _080A80C8 @ =sub_80A80CC
|
|
str r0, [r4]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A80C0: .4byte gTasks
|
|
_080A80C4: .4byte gBattleAnimAttacker
|
|
_080A80C8: .4byte sub_80A80CC
|
|
thumb_func_end sub_80A8074
|
|
|
|
thumb_func_start sub_80A80CC
|
|
sub_80A80CC: @ 80A80CC
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _080A80F0 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0xA
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x5
|
|
bls _080A80E6
|
|
b _080A81F6
|
|
_080A80E6:
|
|
lsls r0, 2
|
|
ldr r1, _080A80F4 @ =_080A80F8
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080A80F0: .4byte gTasks
|
|
_080A80F4: .4byte _080A80F8
|
|
.align 2, 0
|
|
_080A80F8:
|
|
.4byte _080A8110
|
|
.4byte _080A8158
|
|
.4byte _080A818E
|
|
.4byte _080A8194
|
|
.4byte _080A81A4
|
|
.4byte _080A81D8
|
|
_080A8110:
|
|
movs r2, 0xC
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
beq _080A8120
|
|
cmp r0, 0x3
|
|
beq _080A8120
|
|
cmp r0, 0x6
|
|
bne _080A8128
|
|
_080A8120:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl sub_80A8200
|
|
_080A8128:
|
|
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 SetSpriteRotScale
|
|
ldrb r0, [r4, 0x8]
|
|
bl sub_8076440
|
|
movs r2, 0xC
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x20
|
|
bne _080A81F6
|
|
ldrh r0, [r4, 0x12]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x12]
|
|
b _080A81D0
|
|
_080A8158:
|
|
movs r1, 0x14
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080A81F6
|
|
movs r2, 0x12
|
|
ldrsh r1, [r4, r2]
|
|
cmp r1, 0x3
|
|
bne _080A816E
|
|
strh r0, [r4, 0xC]
|
|
strh r1, [r4, 0xA]
|
|
b _080A81F6
|
|
_080A816E:
|
|
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 SetSpriteRotScale
|
|
ldrb r0, [r4, 0x8]
|
|
bl sub_8076440
|
|
movs r0, 0x2
|
|
strh r0, [r4, 0xA]
|
|
b _080A81F6
|
|
_080A818E:
|
|
movs r0, 0
|
|
strh r0, [r4, 0xA]
|
|
b _080A81F6
|
|
_080A8194:
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x20
|
|
ble _080A81F6
|
|
b _080A81CC
|
|
_080A81A4:
|
|
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 SetSpriteRotScale
|
|
ldrb r0, [r4, 0x8]
|
|
bl sub_8076440
|
|
movs r2, 0xC
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x20
|
|
bne _080A81F6
|
|
_080A81CC:
|
|
movs r0, 0
|
|
strh r0, [r4, 0xC]
|
|
_080A81D0:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
b _080A81F6
|
|
_080A81D8:
|
|
ldrb r0, [r4, 0x8]
|
|
bl ResetSpriteRotScale
|
|
ldr r2, _080A81FC @ =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
|
|
_080A81F6:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A81FC: .4byte gSprites
|
|
thumb_func_end sub_80A80CC
|
|
|
|
thumb_func_start sub_80A8200
|
|
sub_80A8200: @ 80A8200
|
|
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 _080A82DA
|
|
bl AllocOamMatrix
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
cmp r6, 0xFF
|
|
bne _080A8244
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
ldr r1, _080A8240 @ =gSprites
|
|
adds r0, r1
|
|
bl obj_delete_but_dont_free_vram
|
|
b _080A82DA
|
|
.align 2, 0
|
|
_080A8240: .4byte gSprites
|
|
_080A8244:
|
|
ldr r5, _080A82E8 @ =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, _080A82EC @ =sub_80A82F0
|
|
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 SetSpriteRotScale
|
|
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
|
|
_080A82DA:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A82E8: .4byte gSprites
|
|
_080A82EC: .4byte sub_80A82F0
|
|
thumb_func_end sub_80A8200
|
|
|
|
thumb_func_start sub_80A82F0
|
|
sub_80A82F0: @ 80A82F0
|
|
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 _080A832E
|
|
ldr r3, _080A8334 @ =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
|
|
_080A832E:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A8334: .4byte gTasks
|
|
thumb_func_end sub_80A82F0
|
|
|
|
thumb_func_start sub_80A8338
|
|
sub_80A8338: @ 80A8338
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _080A835C @ =gTasks
|
|
adds r4, r0, r1
|
|
ldr r5, _080A8360 @ =gBattleAnimArgs
|
|
movs r1, 0x2
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _080A8364
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
b _080A838A
|
|
.align 2, 0
|
|
_080A835C: .4byte gTasks
|
|
_080A8360: .4byte gBattleAnimArgs
|
|
_080A8364:
|
|
ldrb r0, [r5]
|
|
bl GetAnimBankSpriteId
|
|
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, _080A8390 @ =gUnknown_83E3E60
|
|
adds r0, r4, 0
|
|
bl sub_80762D0
|
|
ldr r0, _080A8394 @ =sub_80A8398
|
|
str r0, [r4]
|
|
_080A838A:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A8390: .4byte gUnknown_83E3E60
|
|
_080A8394: .4byte sub_80A8398
|
|
thumb_func_end sub_80A8338
|
|
|
|
thumb_func_start sub_80A8398
|
|
sub_80A8398: @ 80A8398
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
ldr r1, _080A83BC @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r0, 0xA
|
|
ldrsh r5, [r4, r0]
|
|
cmp r5, 0x1
|
|
beq _080A8400
|
|
cmp r5, 0x1
|
|
bgt _080A83C0
|
|
cmp r5, 0
|
|
beq _080A83CA
|
|
b _080A84A8
|
|
.align 2, 0
|
|
_080A83BC: .4byte gTasks
|
|
_080A83C0:
|
|
cmp r5, 0x2
|
|
beq _080A8434
|
|
cmp r5, 0x3
|
|
beq _080A8464
|
|
b _080A84A8
|
|
_080A83CA:
|
|
adds r0, r4, 0
|
|
bl sub_8076308
|
|
ldrh r2, [r4, 0x10]
|
|
adds r2, 0x3
|
|
strh r2, [r4, 0x10]
|
|
ldr r3, _080A83FC @ =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 _080A84A8
|
|
strh r5, [r4, 0xE]
|
|
b _080A845C
|
|
.align 2, 0
|
|
_080A83FC: .4byte gSprites
|
|
_080A8400:
|
|
adds r0, r4, 0
|
|
bl sub_8076308
|
|
ldr r2, _080A8430 @ =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 _080A84A8
|
|
movs r0, 0
|
|
strh r0, [r4, 0xE]
|
|
b _080A845C
|
|
.align 2, 0
|
|
_080A8430: .4byte gSprites
|
|
_080A8434:
|
|
movs r1, 0x10
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080A845C
|
|
ldr r2, _080A8458 @ =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 _080A84A8
|
|
.align 2, 0
|
|
_080A8458: .4byte gSprites
|
|
_080A845C:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
b _080A84A8
|
|
_080A8464:
|
|
adds r0, r4, 0
|
|
bl sub_8076308
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0
|
|
bne _080A84A8
|
|
ldrh r0, [r4, 0xC]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080A849C
|
|
ldr r2, _080A8498 @ =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 _080A84A8
|
|
.align 2, 0
|
|
_080A8498: .4byte gSprites
|
|
_080A849C:
|
|
ldrb r1, [r4, 0x8]
|
|
ldr r2, _080A84B0 @ =gUnknown_83E3E60
|
|
adds r0, r4, 0
|
|
bl sub_80762D0
|
|
strh r5, [r4, 0xA]
|
|
_080A84A8:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A84B0: .4byte gUnknown_83E3E60
|
|
thumb_func_end sub_80A8398
|
|
|
|
thumb_func_start sub_80A84B4
|
|
sub_80A84B4: @ 80A84B4
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
ldr r0, _080A84E4 @ =gTasks
|
|
adds r4, r0
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r2, _080A84E8 @ =gUnknown_83E3E80
|
|
adds r0, r4, 0
|
|
bl sub_80762D0
|
|
ldr r0, _080A84EC @ =sub_80A84F0
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A84E4: .4byte gTasks
|
|
_080A84E8: .4byte gUnknown_83E3E80
|
|
_080A84EC: .4byte sub_80A84F0
|
|
thumb_func_end sub_80A84B4
|
|
|
|
thumb_func_start sub_80A84F0
|
|
sub_80A84F0: @ 80A84F0
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, _080A8518 @ =gTasks
|
|
adds r0, r1
|
|
bl sub_8076308
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A8510
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_080A8510:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A8518: .4byte gTasks
|
|
thumb_func_end sub_80A84F0
|
|
|
|
thumb_func_start sub_80A851C
|
|
sub_80A851C: @ 80A851C
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080A854C @ =gBattleAnimAttacker
|
|
ldrb r0, [r5]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A8550
|
|
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 _080A856A
|
|
.align 2, 0
|
|
_080A854C: .4byte gBattleAnimAttacker
|
|
_080A8550:
|
|
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, _080A859C @ =0x0000ffc0
|
|
_080A856A:
|
|
strh r0, [r4, 0x30]
|
|
ldr r0, _080A85A0 @ =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, _080A85A4 @ =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, _080A85A8 @ =sub_8074D00
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A859C: .4byte 0x0000ffc0
|
|
_080A85A0: .4byte gBattleAnimAttacker
|
|
_080A85A4: .4byte DestroyAnimSprite
|
|
_080A85A8: .4byte sub_8074D00
|
|
thumb_func_end sub_80A851C
|
|
|
|
thumb_func_start sub_80A85AC
|
|
sub_80A85AC: @ 80A85AC
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
ldr r0, _080A85C0 @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080A85C8
|
|
ldr r0, _080A85C4 @ =gBattleAnimAttacker
|
|
b _080A85CA
|
|
.align 2, 0
|
|
_080A85C0: .4byte gBattleAnimArgs
|
|
_080A85C4: .4byte gBattleAnimAttacker
|
|
_080A85C8:
|
|
ldr r0, _080A8628 @ =gBattleAnimTarget
|
|
_080A85CA:
|
|
ldrb r5, [r0]
|
|
adds r0, r5, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080A85E4
|
|
ldr r1, _080A862C @ =gBattleAnimArgs
|
|
movs r2, 0x2
|
|
ldrsh r0, [r1, r2]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x2]
|
|
_080A85E4:
|
|
adds r0, r5, 0
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
ldr r4, _080A862C @ =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 _080A8616
|
|
movs r0, 0x8
|
|
strh r0, [r6, 0x22]
|
|
_080A8616:
|
|
ldr r1, _080A8630 @ =move_anim_8074EE0
|
|
adds r0, r6, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, _080A8634 @ =sub_8074F50
|
|
str r0, [r6, 0x1C]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A8628: .4byte gBattleAnimTarget
|
|
_080A862C: .4byte gBattleAnimArgs
|
|
_080A8630: .4byte move_anim_8074EE0
|
|
_080A8634: .4byte sub_8074F50
|
|
thumb_func_end sub_80A85AC
|
|
|
|
thumb_func_start sub_80A8638
|
|
sub_80A8638: @ 80A8638
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
ldr r0, _080A866C @ =gTasks
|
|
adds r4, r0
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
movs r0, 0
|
|
strh r1, [r4, 0x8]
|
|
strh r0, [r4, 0xA]
|
|
ldr r2, _080A8670 @ =gUnknown_83E3F1C
|
|
adds r0, r4, 0
|
|
bl sub_80762D0
|
|
ldr r0, _080A8674 @ =sub_80A8678
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A866C: .4byte gTasks
|
|
_080A8670: .4byte gUnknown_83E3F1C
|
|
_080A8674: .4byte sub_80A8678
|
|
thumb_func_end sub_80A8638
|
|
|
|
thumb_func_start sub_80A8678
|
|
sub_80A8678: @ 80A8678
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, _080A86A0 @ =gTasks
|
|
adds r0, r1
|
|
bl sub_8076308
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A8698
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_080A8698:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A86A0: .4byte gTasks
|
|
thumb_func_end sub_80A8678
|
|
|
|
thumb_func_start sub_80A86A4
|
|
sub_80A86A4: @ 80A86A4
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080A8718 @ =gTasks
|
|
adds r4, r1, r0
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
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, _080A871C @ =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, _080A8720 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080A870E
|
|
movs r1, 0xC
|
|
ldrsh r0, [r4, r1]
|
|
negs r0, r0
|
|
strh r0, [r4, 0xC]
|
|
_080A870E:
|
|
ldr r0, _080A8724 @ =sub_80A8728
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A8718: .4byte gTasks
|
|
_080A871C: .4byte gSprites
|
|
_080A8720: .4byte gBattleAnimAttacker
|
|
_080A8724: .4byte sub_80A8728
|
|
thumb_func_end sub_80A86A4
|
|
|
|
thumb_func_start sub_80A8728
|
|
sub_80A8728: @ 80A8728
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, _080A8770 @ =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 _080A878E
|
|
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 _080A8778
|
|
ldr r2, _080A8774 @ =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 _080A878C
|
|
.align 2, 0
|
|
_080A8770: .4byte gTasks
|
|
_080A8774: .4byte gSprites
|
|
_080A8778:
|
|
ldr r2, _080A87A0 @ =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
|
|
_080A878C:
|
|
strh r1, [r0, 0x22]
|
|
_080A878E:
|
|
movs r1, 0xA
|
|
ldrsh r0, [r3, r1]
|
|
cmp r0, 0x1
|
|
beq _080A87DC
|
|
cmp r0, 0x1
|
|
bgt _080A87A4
|
|
cmp r0, 0
|
|
beq _080A87AA
|
|
b _080A886C
|
|
.align 2, 0
|
|
_080A87A0: .4byte gSprites
|
|
_080A87A4:
|
|
cmp r0, 0x2
|
|
beq _080A880C
|
|
b _080A886C
|
|
_080A87AA:
|
|
ldr r2, _080A87D8 @ =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 _080A886C
|
|
movs r0, 0xE
|
|
strh r0, [r3, 0xE]
|
|
movs r0, 0x1
|
|
strh r0, [r3, 0xA]
|
|
b _080A886C
|
|
.align 2, 0
|
|
_080A87D8: .4byte gSprites
|
|
_080A87DC:
|
|
ldr r2, _080A8808 @ =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 _080A886C
|
|
movs r0, 0x7
|
|
strh r0, [r3, 0xE]
|
|
movs r0, 0x2
|
|
strh r0, [r3, 0xA]
|
|
b _080A886C
|
|
.align 2, 0
|
|
_080A8808: .4byte gSprites
|
|
_080A880C:
|
|
ldr r2, _080A8844 @ =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 _080A886C
|
|
ldrh r0, [r3, 0x10]
|
|
subs r0, 0x1
|
|
strh r0, [r3, 0x10]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080A8848
|
|
movs r0, 0x7
|
|
strh r0, [r3, 0xE]
|
|
strh r1, [r3, 0xA]
|
|
b _080A886C
|
|
.align 2, 0
|
|
_080A8844: .4byte gSprites
|
|
_080A8848:
|
|
ldrh r1, [r3, 0x18]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A8866
|
|
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]
|
|
_080A8866:
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_080A886C:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A8728
|
|
|
|
thumb_func_start sub_80A8874
|
|
sub_80A8874: @ 80A8874
|
|
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, _080A88C4 @ =gTasks
|
|
adds r5, r1, r0
|
|
ldr r4, _080A88C8 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
bl sub_807492C
|
|
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_8076B2C
|
|
strh r0, [r5, 0x26]
|
|
ldrb r0, [r4]
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080A88D4
|
|
ldr r0, _080A88CC @ =gBattle_BG1_X
|
|
ldrh r0, [r0]
|
|
strh r0, [r5, 0x14]
|
|
ldr r0, _080A88D0 @ =0x04000014
|
|
b _080A88DC
|
|
.align 2, 0
|
|
_080A88C4: .4byte gTasks
|
|
_080A88C8: .4byte gBattleAnimTarget
|
|
_080A88CC: .4byte gBattle_BG1_X
|
|
_080A88D0: .4byte 0x04000014
|
|
_080A88D4:
|
|
ldr r0, _080A8940 @ =gBattle_BG2_X
|
|
ldrh r0, [r0]
|
|
strh r0, [r5, 0x14]
|
|
ldr r0, _080A8944 @ =0x04000018
|
|
_080A88DC:
|
|
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 _080A891A
|
|
ldr r4, _080A8948 @ =gScanlineEffectRegBuffers
|
|
movs r0, 0xF0
|
|
lsls r0, 3
|
|
adds r6, r4, r0
|
|
_080A88F4:
|
|
asrs r3, r2, 16
|
|
cmp r3, 0
|
|
blt _080A890C
|
|
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]
|
|
_080A890C:
|
|
adds r0, r3, 0x1
|
|
lsls r2, r0, 16
|
|
asrs r1, r2, 16
|
|
movs r3, 0x8
|
|
ldrsh r0, [r5, r3]
|
|
cmp r1, r0
|
|
ble _080A88F4
|
|
_080A891A:
|
|
ldr r0, _080A894C @ =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, _080A8950 @ =sub_80A8954
|
|
str r0, [r5]
|
|
add sp, 0xC
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A8940: .4byte gBattle_BG2_X
|
|
_080A8944: .4byte 0x04000018
|
|
_080A8948: .4byte gScanlineEffectRegBuffers
|
|
_080A894C: .4byte 0xa2600001
|
|
_080A8950: .4byte sub_80A8954
|
|
thumb_func_end sub_80A8874
|
|
|
|
thumb_func_start sub_80A8954
|
|
sub_80A8954: @ 80A8954
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, _080A8974 @ =gTasks
|
|
adds r3, r0, r1
|
|
movs r1, 0x10
|
|
ldrsh r0, [r3, r1]
|
|
cmp r0, 0
|
|
beq _080A8978
|
|
cmp r0, 0x1
|
|
beq _080A898E
|
|
b _080A8A0E
|
|
.align 2, 0
|
|
_080A8974: .4byte gTasks
|
|
_080A8978:
|
|
ldrh r0, [r3, 0x12]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x12]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x14
|
|
ble _080A8A0E
|
|
ldrh r0, [r3, 0x10]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x10]
|
|
b _080A8A0E
|
|
_080A898E:
|
|
ldrh r0, [r3, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x3
|
|
ble _080A8A0E
|
|
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 _080A89C4
|
|
cmp r1, 0x1
|
|
ble _080A89CC
|
|
cmp r1, 0x2
|
|
beq _080A89C8
|
|
cmp r1, 0x3
|
|
beq _080A89C8
|
|
b _080A89CC
|
|
_080A89C4:
|
|
subs r0, 0x2
|
|
b _080A89CA
|
|
_080A89C8:
|
|
adds r0, 0x1
|
|
_080A89CA:
|
|
strh r0, [r3, 0x12]
|
|
_080A89CC:
|
|
movs r1, 0x12
|
|
ldrsh r0, [r3, r1]
|
|
cmp r0, 0
|
|
blt _080A89F0
|
|
ldr r2, _080A8A14 @ =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]
|
|
_080A89F0:
|
|
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 _080A8A0E
|
|
ldr r1, _080A8A18 @ =gScanlineEffect
|
|
movs r0, 0x3
|
|
strb r0, [r1, 0x15]
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_080A8A0E:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A8A14: .4byte gScanlineEffectRegBuffers
|
|
_080A8A18: .4byte gScanlineEffect
|
|
thumb_func_end sub_80A8954
|
|
|
|
thumb_func_start sub_80A8A1C
|
|
sub_80A8A1C: @ 80A8A1C
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
ldr r6, _080A8A70 @ =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 sub_807492C
|
|
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_8076B2C
|
|
adds r0, 0x2
|
|
strh r0, [r4, 0x38]
|
|
movs r0, 0x3F
|
|
bl sub_8073A44
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
strh r0, [r4, 0x3A]
|
|
ldr r0, _080A8A74 @ =sub_80A8A78
|
|
str r0, [r4, 0x1C]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A8A70: .4byte gBattleAnimTarget
|
|
_080A8A74: .4byte sub_80A8A78
|
|
thumb_func_end sub_80A8A1C
|
|
|
|
thumb_func_start sub_80A8A78
|
|
sub_80A8A78: @ 80A8A78
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r4, r0]
|
|
cmp r1, 0x1
|
|
beq _080A8ADC
|
|
cmp r1, 0x1
|
|
bgt _080A8A8E
|
|
cmp r1, 0
|
|
beq _080A8A94
|
|
b _080A8BBC
|
|
_080A8A8E:
|
|
cmp r1, 0x2
|
|
beq _080A8B6E
|
|
b _080A8BBC
|
|
_080A8A94:
|
|
ldrh r0, [r4, 0x32]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080A8ABE
|
|
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]
|
|
_080A8ABE:
|
|
ldrh r0, [r4, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x10
|
|
ble _080A8BBC
|
|
adds r2, r4, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x5
|
|
negs r1, r1
|
|
ands r1, r0
|
|
strb r1, [r2]
|
|
b _080A8B66
|
|
_080A8ADC:
|
|
ldrh r0, [r4, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x3
|
|
ble _080A8B22
|
|
ldrh r2, [r4, 0x32]
|
|
movs r3, 0x32
|
|
ldrsh r1, [r4, r3]
|
|
movs r3, 0x38
|
|
ldrsh r0, [r4, r3]
|
|
cmp r1, r0
|
|
bge _080A8B22
|
|
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 _080A8B22
|
|
ldrh r1, [r4, 0x3A]
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r0, 0xC6
|
|
bl PlaySE12WithPanning
|
|
_080A8B22:
|
|
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 _080A8B36
|
|
movs r0, 0x40
|
|
b _080A8B44
|
|
_080A8B36:
|
|
movs r0, 0x20
|
|
negs r0, r0
|
|
cmp r2, r0
|
|
bgt _080A8B50
|
|
movs r2, 0x40
|
|
negs r2, r2
|
|
adds r0, r2, 0
|
|
_080A8B44:
|
|
subs r0, r1
|
|
strh r0, [r4, 0x36]
|
|
movs r3, 0x34
|
|
ldrsh r0, [r4, r3]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x34]
|
|
_080A8B50:
|
|
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 _080A8BBC
|
|
strh r2, [r4, 0x30]
|
|
strh r2, [r4, 0x32]
|
|
_080A8B66:
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _080A8BBC
|
|
_080A8B6E:
|
|
ldrh r0, [r4, 0x32]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080A8B9A
|
|
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]
|
|
_080A8B9A:
|
|
ldrh r0, [r4, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x10
|
|
ble _080A8BBC
|
|
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
|
|
_080A8BBC:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A8A78
|
|
|
|
thumb_func_start sub_80A8BC4
|
|
sub_80A8BC4: @ 80A8BC4
|
|
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, _080A8BE8 @ =gBattleAnimArgs
|
|
movs r3, 0x4
|
|
ldrsh r2, [r0, r3]
|
|
adds r7, r1, 0
|
|
adds r1, r0, 0
|
|
cmp r2, 0
|
|
bne _080A8BF0
|
|
ldr r0, _080A8BEC @ =gBattleAnimAttacker
|
|
b _080A8BF2
|
|
.align 2, 0
|
|
_080A8BE8: .4byte gBattleAnimArgs
|
|
_080A8BEC: .4byte gBattleAnimAttacker
|
|
_080A8BF0:
|
|
ldr r0, _080A8C2C @ =gBattleAnimTarget
|
|
_080A8BF2:
|
|
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 _080A8C6A
|
|
movs r1, 0x2
|
|
adds r0, r5, 0
|
|
eors r0, r1
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8C6A
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
mov r2, sp
|
|
adds r3, r7, 0
|
|
bl sub_8076D9C
|
|
cmp r4, 0
|
|
bne _080A8C30
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
b _080A8C34
|
|
.align 2, 0
|
|
_080A8C2C: .4byte gBattleAnimTarget
|
|
_080A8C30:
|
|
adds r0, r5, 0
|
|
movs r1, 0x2
|
|
_080A8C34:
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r5, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8C60
|
|
ldr r2, _080A8C5C @ =gBattleAnimArgs
|
|
mov r0, sp
|
|
ldrh r1, [r0]
|
|
subs r1, r4
|
|
ldrh r0, [r2]
|
|
subs r1, r0
|
|
subs r0, r1
|
|
strh r0, [r2]
|
|
b _080A8C6A
|
|
.align 2, 0
|
|
_080A8C5C: .4byte gBattleAnimArgs
|
|
_080A8C60:
|
|
ldr r1, _080A8C7C @ =gBattleAnimArgs
|
|
mov r0, sp
|
|
ldrh r0, [r0]
|
|
subs r0, r4
|
|
strh r0, [r1]
|
|
_080A8C6A:
|
|
ldr r1, _080A8C80 @ =sub_8075D9C
|
|
str r1, [r6, 0x1C]
|
|
adds r0, r6, 0
|
|
bl _call_via_r1
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A8C7C: .4byte gBattleAnimArgs
|
|
_080A8C80: .4byte sub_8075D9C
|
|
thumb_func_end sub_80A8BC4
|
|
|
|
thumb_func_start sub_80A8C84
|
|
sub_80A8C84: @ 80A8C84
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80755E0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8C9E
|
|
adds r0, r4, 0
|
|
bl FreeSpriteOamMatrix
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080A8C9E:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A8C84
|
|
|
|
thumb_func_start sub_80A8CA4
|
|
sub_80A8CA4: @ 80A8CA4
|
|
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, _080A8CD0 @ =gBattleAnimArgs
|
|
movs r2, 0xA
|
|
ldrsh r0, [r0, r2]
|
|
cmp r0, 0
|
|
bne _080A8CDC
|
|
ldr r0, _080A8CD4 @ =gBattleAnimAttacker
|
|
ldrb r7, [r0]
|
|
ldr r0, _080A8CD8 @ =gBattleAnimTarget
|
|
b _080A8CE2
|
|
.align 2, 0
|
|
_080A8CD0: .4byte gBattleAnimArgs
|
|
_080A8CD4: .4byte gBattleAnimAttacker
|
|
_080A8CD8: .4byte gBattleAnimTarget
|
|
_080A8CDC:
|
|
ldr r0, _080A8CFC @ =gBattleAnimTarget
|
|
ldrb r7, [r0]
|
|
ldr r0, _080A8D00 @ =gBattleAnimAttacker
|
|
_080A8CE2:
|
|
ldrb r0, [r0]
|
|
mov r8, r0
|
|
ldr r0, _080A8D04 @ =gBattleAnimArgs
|
|
movs r3, 0xC
|
|
ldrsh r0, [r0, r3]
|
|
cmp r0, 0
|
|
bne _080A8D08
|
|
movs r0, 0
|
|
mov r10, r0
|
|
movs r1, 0x1
|
|
str r1, [sp, 0x4]
|
|
b _080A8D10
|
|
.align 2, 0
|
|
_080A8CFC: .4byte gBattleAnimTarget
|
|
_080A8D00: .4byte gBattleAnimAttacker
|
|
_080A8D04: .4byte gBattleAnimArgs
|
|
_080A8D08:
|
|
movs r2, 0x2
|
|
mov r10, r2
|
|
movs r3, 0x3
|
|
str r3, [sp, 0x4]
|
|
_080A8D10:
|
|
adds r0, r7, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8D6C
|
|
adds r0, r7, 0
|
|
mov r1, r10
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
ldr r1, _080A8D50 @ =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 _080A8D5C
|
|
ldr r2, _080A8D54 @ =gSprites
|
|
ldr r0, _080A8D58 @ =gBattlerSpriteIds
|
|
adds r0, r4, r0
|
|
b _080A8DEA
|
|
.align 2, 0
|
|
_080A8D50: .4byte gBattleAnimArgs
|
|
_080A8D54: .4byte gSprites
|
|
_080A8D58: .4byte gBattlerSpriteIds
|
|
_080A8D5C:
|
|
ldr r2, _080A8D64 @ =gSprites
|
|
ldr r0, _080A8D68 @ =gBattlerSpriteIds
|
|
add r0, r8
|
|
b _080A8DEA
|
|
.align 2, 0
|
|
_080A8D64: .4byte gSprites
|
|
_080A8D68: .4byte gBattlerSpriteIds
|
|
_080A8D6C:
|
|
adds r0, r7, 0
|
|
mov r1, r10
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _080A8DD4 @ =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 _080A8DE4
|
|
movs r0, 0x2
|
|
adds r4, r7, 0
|
|
eors r4, r0
|
|
adds r0, r4, 0
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8DE4
|
|
ldr r3, _080A8DD8 @ =gSprites
|
|
ldr r2, _080A8DDC @ =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 _080A8DE0
|
|
adds r0, r2, 0
|
|
adds r0, 0x43
|
|
ldrb r0, [r0]
|
|
adds r0, 0x1
|
|
b _080A8DFA
|
|
.align 2, 0
|
|
_080A8DD4: .4byte gBattleAnimArgs
|
|
_080A8DD8: .4byte gSprites
|
|
_080A8DDC: .4byte gBattlerSpriteIds
|
|
_080A8DE0:
|
|
adds r0, r6, 0
|
|
b _080A8DF4
|
|
_080A8DE4:
|
|
ldr r2, _080A8E40 @ =gSprites
|
|
ldr r0, _080A8E44 @ =gBattlerSpriteIds
|
|
adds r0, r7, r0
|
|
_080A8DEA:
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
_080A8DF4:
|
|
adds r0, 0x43
|
|
ldrb r0, [r0]
|
|
subs r0, 0x1
|
|
_080A8DFA:
|
|
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, _080A8E48 @ =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 _080A8E4C
|
|
movs r1, 0x2
|
|
mov r0, r8
|
|
eors r0, r1
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8E4C
|
|
ldrb r1, [r4, 0xC]
|
|
mov r0, r8
|
|
mov r2, sp
|
|
mov r3, sp
|
|
adds r3, 0x2
|
|
bl sub_8076D9C
|
|
b _080A8E6C
|
|
.align 2, 0
|
|
_080A8E40: .4byte gSprites
|
|
_080A8E44: .4byte gBattlerSpriteIds
|
|
_080A8E48: .4byte gBattleAnimArgs
|
|
_080A8E4C:
|
|
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]
|
|
_080A8E6C:
|
|
mov r0, r8
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8E90
|
|
mov r3, sp
|
|
mov r2, sp
|
|
ldr r1, _080A8E8C @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x6]
|
|
ldrh r2, [r2]
|
|
adds r0, r2
|
|
strh r0, [r3]
|
|
adds r2, r1, 0
|
|
b _080A8E9E
|
|
.align 2, 0
|
|
_080A8E8C: .4byte gBattleAnimArgs
|
|
_080A8E90:
|
|
mov r3, sp
|
|
mov r0, sp
|
|
ldr r2, _080A8EE0 @ =gBattleAnimArgs
|
|
ldrh r0, [r0]
|
|
ldrh r1, [r2, 0x6]
|
|
subs r0, r1
|
|
strh r0, [r3]
|
|
_080A8E9E:
|
|
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 obj_translate_based_on_private_1_2_3_4
|
|
ldr r1, _080A8EE4 @ =sub_80A8C84
|
|
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
|
|
.align 2, 0
|
|
_080A8EE0: .4byte gBattleAnimArgs
|
|
_080A8EE4: .4byte sub_80A8C84
|
|
thumb_func_end sub_80A8CA4
|
|
|
|
thumb_func_start sub_80A8EE8
|
|
sub_80A8EE8: @ 80A8EE8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _080A8F28 @ =0x000027db
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0xFF
|
|
beq _080A8F0E
|
|
lsls r0, 20
|
|
ldr r1, _080A8F2C @ =0x01010000
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
ldr r1, _080A8F30 @ =gBattleAnimArgs
|
|
ldrb r2, [r1, 0xA]
|
|
ldrh r3, [r1, 0x8]
|
|
movs r1, 0xF
|
|
bl BlendPalette
|
|
_080A8F0E:
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
ldr r1, _080A8F34 @ =sub_8075D9C
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A8F28: .4byte 0x000027db
|
|
_080A8F2C: .4byte 0x01010000
|
|
_080A8F30: .4byte gBattleAnimArgs
|
|
_080A8F34: .4byte sub_8075D9C
|
|
thumb_func_end sub_80A8EE8
|
|
|
|
thumb_func_start sub_80A8F38
|
|
sub_80A8F38: @ 80A8F38
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0
|
|
bl sub_8075160
|
|
ldr r0, _080A8F6C @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
movs r1, 0xA0
|
|
cmp r0, 0
|
|
beq _080A8F54
|
|
ldr r1, _080A8F70 @ =0x0000ff60
|
|
_080A8F54:
|
|
movs r0, 0xE0
|
|
lsls r0, 2
|
|
strh r0, [r4, 0x2E]
|
|
strh r1, [r4, 0x30]
|
|
ldr r0, _080A8F74 @ =gBattleAnimArgs
|
|
ldrh r0, [r0, 0x4]
|
|
strh r0, [r4, 0x3C]
|
|
ldr r0, _080A8F78 @ =sub_80A8F7C
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A8F6C: .4byte gBattleAnimAttacker
|
|
_080A8F70: .4byte 0x0000ff60
|
|
_080A8F74: .4byte gBattleAnimArgs
|
|
_080A8F78: .4byte sub_80A8F7C
|
|
thumb_func_end sub_80A8F38
|
|
|
|
thumb_func_start sub_80A8F7C
|
|
sub_80A8F7C: @ 80A8F7C
|
|
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, _080A8FE8 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
movs r1, 0xA0
|
|
cmp r0, 0
|
|
beq _080A8FAC
|
|
ldr r1, _080A8FEC @ =0x0000ff60
|
|
_080A8FAC:
|
|
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 _080A8FE0
|
|
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, _080A8FF0 @ =sub_80A8FF4
|
|
str r0, [r4, 0x1C]
|
|
_080A8FE0:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A8FE8: .4byte gBattleAnimAttacker
|
|
_080A8FEC: .4byte 0x0000ff60
|
|
_080A8FF0: .4byte sub_80A8FF4
|
|
thumb_func_end sub_80A8F7C
|
|
|
|
thumb_func_start sub_80A8FF4
|
|
sub_80A8FF4: @ 80A8FF4
|
|
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 _080A9012
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
bl StartSpriteAffineAnim
|
|
ldr r0, _080A9018 @ =sub_80A901C
|
|
str r0, [r4, 0x1C]
|
|
_080A9012:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A9018: .4byte sub_80A901C
|
|
thumb_func_end sub_80A8FF4
|
|
|
|
thumb_func_start sub_80A901C
|
|
sub_80A901C: @ 80A901C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A9082
|
|
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 _080A9068
|
|
ldrh r2, [r4, 0x4]
|
|
lsls r1, r2, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x10
|
|
ldr r3, _080A905C @ =0x000003ff
|
|
adds r0, r3, 0
|
|
ands r1, r0
|
|
ldr r0, _080A9060 @ =0xfffffc00
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r4, 0x4]
|
|
ldr r0, _080A9064 @ =sub_80A9094
|
|
b _080A9080
|
|
.align 2, 0
|
|
_080A905C: .4byte 0x000003ff
|
|
_080A9060: .4byte 0xfffffc00
|
|
_080A9064: .4byte sub_80A9094
|
|
_080A9068:
|
|
ldrh r2, [r4, 0x4]
|
|
lsls r1, r2, 22
|
|
lsrs r1, 22
|
|
adds r1, 0x20
|
|
ldr r3, _080A9088 @ =0x000003ff
|
|
adds r0, r3, 0
|
|
ands r1, r0
|
|
ldr r0, _080A908C @ =0xfffffc00
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r4, 0x4]
|
|
ldr r0, _080A9090 @ =sub_80A911C
|
|
_080A9080:
|
|
str r0, [r4, 0x1C]
|
|
_080A9082:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A9088: .4byte 0x000003ff
|
|
_080A908C: .4byte 0xfffffc00
|
|
_080A9090: .4byte sub_80A911C
|
|
thumb_func_end sub_80A901C
|
|
|
|
thumb_func_start sub_80A9094
|
|
sub_80A9094: @ 80A9094
|
|
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 _080A90CA
|
|
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, _080A90D0 @ =sub_80A90D4
|
|
str r0, [r4, 0x1C]
|
|
_080A90CA:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A90D0: .4byte sub_80A90D4
|
|
thumb_func_end sub_80A9094
|
|
|
|
thumb_func_start sub_80A90D4
|
|
sub_80A90D4: @ 80A90D4
|
|
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 _080A9112
|
|
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 _080A9112
|
|
ldr r0, _080A9118 @ =sub_80A911C
|
|
str r0, [r4, 0x1C]
|
|
_080A9112:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A9118: .4byte sub_80A911C
|
|
thumb_func_end sub_80A90D4
|
|
|
|
thumb_func_start sub_80A911C
|
|
sub_80A911C: @ 80A911C
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
ldr r0, _080A9144 @ =gBattleAnimArgs
|
|
ldrh r1, [r0, 0xE]
|
|
ldr r0, _080A9148 @ =0x0000ffff
|
|
cmp r1, r0
|
|
bne _080A9154
|
|
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 _080A9150
|
|
ldr r0, _080A914C @ =sub_80A915C
|
|
b _080A9152
|
|
.align 2, 0
|
|
_080A9144: .4byte gBattleAnimArgs
|
|
_080A9148: .4byte 0x0000ffff
|
|
_080A914C: .4byte sub_80A915C
|
|
_080A9150:
|
|
ldr r0, _080A9158 @ =DestroyAnimSprite
|
|
_080A9152:
|
|
str r0, [r3, 0x1C]
|
|
_080A9154:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A9158: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80A911C
|
|
|
|
thumb_func_start sub_80A915C
|
|
sub_80A915C: @ 80A915C
|
|
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_80A915C
|
|
|
|
thumb_func_start sub_80A917C
|
|
sub_80A917C: @ 80A917C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
ldr r0, _080A91AC @ =gTasks
|
|
adds r4, r0
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
strh r1, [r4, 0x8]
|
|
ldr r2, _080A91B0 @ =gUnknown_83E4128
|
|
adds r0, r4, 0
|
|
bl sub_80762D0
|
|
ldr r0, _080A91B4 @ =sub_80A91B8
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A91AC: .4byte gTasks
|
|
_080A91B0: .4byte gUnknown_83E4128
|
|
_080A91B4: .4byte sub_80A91B8
|
|
thumb_func_end sub_80A917C
|
|
|
|
thumb_func_start sub_80A91B8
|
|
sub_80A91B8: @ 80A91B8
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _080A9208 @ =gTasks
|
|
adds r4, r0, r1
|
|
adds r0, r4, 0
|
|
bl sub_8076308
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
cmp r3, 0
|
|
bne _080A9202
|
|
ldr r2, _080A920C @ =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
|
|
_080A9202:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A9208: .4byte gTasks
|
|
_080A920C: .4byte gSprites
|
|
thumb_func_end sub_80A91B8
|
|
|
|
thumb_func_start sub_80A9210
|
|
sub_80A9210: @ 80A9210
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080A9244 @ =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, _080A9248 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A9250
|
|
ldr r0, _080A924C @ =0x0000ffff
|
|
strh r0, [r4, 0x22]
|
|
movs r0, 0x8
|
|
b _080A9256
|
|
.align 2, 0
|
|
_080A9244: .4byte gTasks
|
|
_080A9248: .4byte gBattleAnimTarget
|
|
_080A924C: .4byte 0x0000ffff
|
|
_080A9250:
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x22]
|
|
ldr r0, _080A9270 @ =0x0000fff8
|
|
_080A9256:
|
|
strh r0, [r4, 0x24]
|
|
movs r0, 0x1
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x26]
|
|
ldr r0, _080A9274 @ =sub_80A9278
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A9270: .4byte 0x0000fff8
|
|
_080A9274: .4byte sub_80A9278
|
|
thumb_func_end sub_80A9210
|
|
|
|
thumb_func_start sub_80A9278
|
|
sub_80A9278: @ 80A9278
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _080A929C @ =gTasks
|
|
adds r3, r0, r1
|
|
movs r0, 0x8
|
|
ldrsh r4, [r3, r0]
|
|
cmp r4, 0x1
|
|
beq _080A92CC
|
|
cmp r4, 0x1
|
|
bgt _080A92A0
|
|
cmp r4, 0
|
|
beq _080A92AA
|
|
b _080A9392
|
|
.align 2, 0
|
|
_080A929C: .4byte gTasks
|
|
_080A92A0:
|
|
cmp r4, 0x2
|
|
beq _080A9348
|
|
cmp r4, 0x3
|
|
beq _080A9362
|
|
b _080A9392
|
|
_080A92AA:
|
|
ldr r2, _080A92C8 @ =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 _080A935A
|
|
.align 2, 0
|
|
_080A92C8: .4byte gSprites
|
|
_080A92CC:
|
|
ldrh r0, [r3, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080A9392
|
|
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 _080A9304
|
|
ldr r2, _080A9300 @ =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 _080A9316
|
|
.align 2, 0
|
|
_080A9300: .4byte gSprites
|
|
_080A9304:
|
|
ldr r2, _080A9344 @ =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
|
|
_080A9316:
|
|
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 _080A9392
|
|
ldrh r1, [r3, 0xC]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A935A
|
|
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 _080A935A
|
|
.align 2, 0
|
|
_080A9344: .4byte gSprites
|
|
_080A9348:
|
|
ldrh r0, [r3, 0x20]
|
|
subs r0, 0x1
|
|
strh r0, [r3, 0x20]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080A935A
|
|
movs r0, 0
|
|
strh r0, [r3, 0x8]
|
|
b _080A9392
|
|
_080A935A:
|
|
ldrh r0, [r3, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x8]
|
|
b _080A9392
|
|
_080A9362:
|
|
ldr r2, _080A9398 @ =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 _080A9392
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080A9392:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A9398: .4byte gSprites
|
|
thumb_func_end sub_80A9278
|
|
|
|
thumb_func_start sub_80A939C
|
|
sub_80A939C: @ 80A939C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
ldr r0, _080A93D8 @ =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 GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x26]
|
|
ldr r0, _080A93DC @ =sub_80A93E0
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A93D8: .4byte gTasks
|
|
_080A93DC: .4byte sub_80A93E0
|
|
thumb_func_end sub_80A939C
|
|
|
|
thumb_func_start sub_80A93E0
|
|
sub_80A93E0: @ 80A93E0
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _080A9434 @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r0, 0x8
|
|
ldrsh r2, [r4, r0]
|
|
cmp r2, 0
|
|
bne _080A94A6
|
|
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 _080A94A6
|
|
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 _080A943C
|
|
ldr r3, _080A9438 @ =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 _080A9452
|
|
.align 2, 0
|
|
_080A9434: .4byte gTasks
|
|
_080A9438: .4byte gSprites
|
|
_080A943C:
|
|
ldr r3, _080A9484 @ =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
|
|
_080A9452:
|
|
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 _080A94A6
|
|
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 _080A9488
|
|
strh r2, [r4, 0xA]
|
|
strh r2, [r4, 0xC]
|
|
strh r2, [r4, 0xE]
|
|
b _080A94A6
|
|
.align 2, 0
|
|
_080A9484: .4byte gSprites
|
|
_080A9488:
|
|
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
|
|
_080A94A6:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A93E0
|
|
|
|
thumb_func_start sub_80A94AC
|
|
sub_80A94AC: @ 80A94AC
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
ldr r0, _080A94FC @ =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, _080A9500 @ =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, _080A9504 @ =sub_80A9508
|
|
str r0, [r4]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A94FC: .4byte gTasks
|
|
_080A9500: .4byte gBattleAnimAttacker
|
|
_080A9504: .4byte sub_80A9508
|
|
thumb_func_end sub_80A94AC
|
|
|
|
thumb_func_start sub_80A9508
|
|
sub_80A9508: @ 80A9508
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
ldr r1, _080A952C @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r0, 0x18
|
|
ldrsh r2, [r4, r0]
|
|
cmp r2, 0x1
|
|
beq _080A9574
|
|
cmp r2, 0x1
|
|
bgt _080A9530
|
|
cmp r2, 0
|
|
beq _080A9536
|
|
b _080A9590
|
|
.align 2, 0
|
|
_080A952C: .4byte gTasks
|
|
_080A9530:
|
|
cmp r2, 0x2
|
|
beq _080A958C
|
|
b _080A9590
|
|
_080A9536:
|
|
ldrh r0, [r4, 0x10]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x10]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080A9590
|
|
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 _080A9590
|
|
movs r1, 0x16
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080A956E
|
|
strh r2, [r4, 0x14]
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x18]
|
|
b _080A9590
|
|
_080A956E:
|
|
movs r0, 0x2
|
|
strh r0, [r4, 0x18]
|
|
b _080A9590
|
|
_080A9574:
|
|
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 _080A9590
|
|
strh r2, [r4, 0x16]
|
|
strh r1, [r4, 0x18]
|
|
b _080A9590
|
|
_080A958C:
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x12]
|
|
_080A9590:
|
|
movs r2, 0x8
|
|
ldrsh r5, [r4, r2]
|
|
cmp r5, 0
|
|
beq _080A959E
|
|
cmp r5, 0x1
|
|
beq _080A9634
|
|
b _080A9642
|
|
_080A959E:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
ble _080A9642
|
|
strh r5, [r4, 0xA]
|
|
ldr r0, _080A9628 @ =gUnknown_83E4154
|
|
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 _080A9642
|
|
ldr r0, _080A962C @ =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, _080A9630 @ =gUnknown_83E416C
|
|
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 _080A9642
|
|
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 _080A9642
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080A9642
|
|
.align 2, 0
|
|
_080A9628: .4byte gUnknown_83E4154
|
|
_080A962C: .4byte gSprites
|
|
_080A9630: .4byte gUnknown_83E416C
|
|
_080A9634:
|
|
movs r1, 0x22
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080A9642
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
_080A9642:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A9508
|
|
|
|
thumb_func_start sub_80A9648
|
|
sub_80A9648: @ 80A9648
|
|
push {r4,lr}
|
|
adds r3, r0, 0
|
|
ldr r4, _080A96B0 @ =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 _080A96AA
|
|
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
|
|
_080A96AA:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A96B0: .4byte gTasks
|
|
thumb_func_end sub_80A9648
|
|
|
|
thumb_func_start sub_80A96B4
|
|
sub_80A96B4: @ 80A96B4
|
|
push {r4-r6,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r0, _080A9750 @ =0x000027de
|
|
bl IndexOfSpritePaletteTag
|
|
mov r1, sp
|
|
strb r0, [r1]
|
|
movs r4, 0x1
|
|
ldr r0, _080A9754 @ =0x00002710
|
|
adds r5, r0, 0
|
|
_080A96CC:
|
|
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 _080A96CC
|
|
movs r0, 0x80
|
|
lsls r0, 6
|
|
bl AllocZeroed
|
|
adds r1, r0, 0
|
|
ldr r0, _080A9758 @ =gMonSpritesGfxPtr
|
|
ldr r0, [r0]
|
|
movs r2, 0xBE
|
|
lsls r2, 1
|
|
adds r0, r2
|
|
str r1, [r0]
|
|
ldr r0, _080A975C @ =gFile_graphics_battle_anims_sprites_206_palette
|
|
bl LZDecompressWram
|
|
movs r4, 0
|
|
_080A9700:
|
|
ldr r5, _080A9758 @ =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 _080A9700
|
|
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
|
|
.align 2, 0
|
|
_080A9750: .4byte 0x000027de
|
|
_080A9754: .4byte 0x00002710
|
|
_080A9758: .4byte gMonSpritesGfxPtr
|
|
_080A975C: .4byte gFile_graphics_battle_anims_sprites_206_palette
|
|
thumb_func_end sub_80A96B4
|
|
|
|
thumb_func_start sub_80A9760
|
|
sub_80A9760: @ 80A9760
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r5, _080A9784 @ =gUnknown_83E41C8
|
|
movs r4, 0x2
|
|
_080A976A:
|
|
ldrh r0, [r5]
|
|
bl FreeSpritePaletteByTag
|
|
adds r5, 0x2
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bge _080A976A
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A9784: .4byte gUnknown_83E41C8
|
|
thumb_func_end sub_80A9760
|
|
|
|
thumb_func_start sub_80A9788
|
|
sub_80A9788: @ 80A9788
|
|
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, _080A97DC @ =0x000003ff
|
|
adds r0, r1, 0
|
|
ands r3, r0
|
|
ldr r0, _080A97E0 @ =0xfffffc00
|
|
ands r0, r4
|
|
orrs r0, r3
|
|
strh r0, [r5, 0x4]
|
|
ldr r0, _080A97E4 @ =gUnknown_83E41C8
|
|
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
|
|
.align 2, 0
|
|
_080A97DC: .4byte 0x000003ff
|
|
_080A97E0: .4byte 0xfffffc00
|
|
_080A97E4: .4byte gUnknown_83E41C8
|
|
thumb_func_end sub_80A9788
|
|
|
|
thumb_func_start sub_80A97E8
|
|
sub_80A97E8: @ 80A97E8
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
movs r1, 0
|
|
bl sub_8075160
|
|
ldr r6, _080A9850 @ =gBattleAnimAttacker
|
|
ldrb r0, [r6]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A9808
|
|
ldr r1, _080A9854 @ =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x4]
|
|
_080A9808:
|
|
ldr r4, _080A9854 @ =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, _080A9858 @ =StartAnimLinearTranslation
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, _080A985C @ =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldrb r1, [r4, 0xA]
|
|
ldrb r2, [r4, 0xC]
|
|
adds r0, r5, 0
|
|
bl sub_80A9788
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A9850: .4byte gBattleAnimAttacker
|
|
_080A9854: .4byte gBattleAnimArgs
|
|
_080A9858: .4byte StartAnimLinearTranslation
|
|
_080A985C: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80A97E8
|
|
|
|
thumb_func_start sub_80A9860
|
|
sub_80A9860: @ 80A9860
|
|
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 _080A987A
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl sub_8075160
|
|
_080A987A:
|
|
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 _080A98AA
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080A98AA:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A9860
|
|
|
|
thumb_func_start sub_80A98B0
|
|
sub_80A98B0: @ 80A98B0
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
bl IsContest
|
|
lsls r0, 24
|
|
movs r6, 0xF0
|
|
cmp r0, 0
|
|
beq _080A98C4
|
|
movs r6, 0x98
|
|
_080A98C4:
|
|
movs r5, 0
|
|
ldr r1, _080A9918 @ =gUnknown_2022984
|
|
strh r6, [r1]
|
|
ldr r4, _080A991C @ =gUnknown_2022986
|
|
movs r0, 0xA0
|
|
strh r0, [r4]
|
|
ldrh r1, [r1]
|
|
movs r0, 0x40
|
|
bl SetGpuReg
|
|
ldrh r1, [r4]
|
|
movs r0, 0x44
|
|
bl SetGpuReg
|
|
ldr r1, _080A9920 @ =0x00003f1f
|
|
movs r0, 0x48
|
|
bl SetGpuReg
|
|
ldr r1, _080A9924 @ =0x00003f3f
|
|
movs r0, 0x4A
|
|
bl SetGpuReg
|
|
movs r0, 0x50
|
|
movs r1, 0xC8
|
|
bl SetGpuReg
|
|
movs r0, 0x54
|
|
movs r1, 0x10
|
|
bl SetGpuReg
|
|
ldr r1, _080A9928 @ =gTasks
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
strh r5, [r0, 0x8]
|
|
strh r6, [r0, 0xA]
|
|
ldr r1, _080A992C @ =sub_80A9930
|
|
str r1, [r0]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A9918: .4byte gUnknown_2022984
|
|
_080A991C: .4byte gUnknown_2022986
|
|
_080A9920: .4byte 0x00003f1f
|
|
_080A9924: .4byte 0x00003f3f
|
|
_080A9928: .4byte gTasks
|
|
_080A992C: .4byte sub_80A9930
|
|
thumb_func_end sub_80A98B0
|
|
|
|
thumb_func_start sub_80A9930
|
|
sub_80A9930: @ 80A9930
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _080A9964 @ =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 _080A9970
|
|
ldr r0, _080A9968 @ =gUnknown_2022984
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, _080A996C @ =sub_80A9984
|
|
str r0, [r3]
|
|
b _080A9978
|
|
.align 2, 0
|
|
_080A9964: .4byte gTasks
|
|
_080A9968: .4byte gUnknown_2022984
|
|
_080A996C: .4byte sub_80A9984
|
|
_080A9970:
|
|
ldr r1, _080A9980 @ =gUnknown_2022984
|
|
lsls r0, r4, 8
|
|
orrs r2, r0
|
|
strh r2, [r1]
|
|
_080A9978:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A9980: .4byte gUnknown_2022984
|
|
thumb_func_end sub_80A9930
|
|
|
|
thumb_func_start sub_80A9984
|
|
sub_80A9984: @ 80A9984
|
|
push {r4,r5,lr}
|
|
sub sp, 0xC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r5, r0, 0
|
|
ldr r1, _080A99D0 @ =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 _080A99D8
|
|
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_8075BE8
|
|
ldr r2, _080A99D4 @ =0x00007fff
|
|
movs r1, 0x10
|
|
bl BlendPalettes
|
|
b _080A9A0C
|
|
.align 2, 0
|
|
_080A99D0: .4byte gTasks
|
|
_080A99D4: .4byte 0x00007fff
|
|
_080A99D8:
|
|
cmp r0, 0x4
|
|
ble _080A9A0C
|
|
ldr r0, _080A9A14 @ =gUnknown_2022984
|
|
strh r4, [r0]
|
|
ldr r0, _080A9A18 @ =gUnknown_2022986
|
|
strh r4, [r0]
|
|
ldr r4, _080A9A1C @ =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
|
|
_080A9A0C:
|
|
add sp, 0xC
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A9A14: .4byte gUnknown_2022984
|
|
_080A9A18: .4byte gUnknown_2022986
|
|
_080A9A1C: .4byte 0x00003f3f
|
|
thumb_func_end sub_80A9984
|
|
|
|
thumb_func_start sub_80A9A20
|
|
sub_80A9A20: @ 80A9A20
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r6, r0, 0
|
|
movs r0, 0x1
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, _080A9A70 @ =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 _080A9A7C
|
|
movs r0, 0x1
|
|
bl GetAnimBankSpriteId
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r2, _080A9A74 @ =gUnknown_83E4200
|
|
adds r0, r5, 0
|
|
bl sub_80762D0
|
|
ldr r1, _080A9A78 @ =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
movs r1, 0x4
|
|
strh r1, [r0, 0x24]
|
|
b _080A9AA4
|
|
.align 2, 0
|
|
_080A9A70: .4byte gTasks
|
|
_080A9A74: .4byte gUnknown_83E4200
|
|
_080A9A78: .4byte gSprites
|
|
_080A9A7C:
|
|
ldr r1, _080A9AAC @ =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_8076308
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
bne _080A9AA4
|
|
strh r0, [r4, 0x24]
|
|
strh r0, [r4, 0x26]
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
_080A9AA4:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A9AAC: .4byte gSprites
|
|
thumb_func_end sub_80A9A20
|
|
|
|
thumb_func_start sub_80A9AB0
|
|
sub_80A9AB0: @ 80A9AB0
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r6, r0, 0
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, _080A9B00 @ =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 _080A9B0C
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r2, _080A9B04 @ =gUnknown_83E4200
|
|
adds r0, r5, 0
|
|
bl sub_80762D0
|
|
ldr r1, _080A9B08 @ =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
movs r1, 0x4
|
|
strh r1, [r0, 0x24]
|
|
b _080A9B34
|
|
.align 2, 0
|
|
_080A9B00: .4byte gTasks
|
|
_080A9B04: .4byte gUnknown_83E4200
|
|
_080A9B08: .4byte gSprites
|
|
_080A9B0C:
|
|
ldr r1, _080A9B3C @ =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_8076308
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
bne _080A9B34
|
|
strh r0, [r4, 0x24]
|
|
strh r0, [r4, 0x26]
|
|
adds r0, r6, 0
|
|
bl DestroyAnimVisualTask
|
|
_080A9B34:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A9B3C: .4byte gSprites
|
|
thumb_func_end sub_80A9AB0
|
|
|
|
thumb_func_start sub_80A9B40
|
|
sub_80A9B40: @ 80A9B40
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
movs r0, 0x5F
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
ldr r5, _080A9B84 @ =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 obj_translate_based_on_private_1_2_3_4
|
|
ldr r0, _080A9B88 @ =sub_80A9B8C
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A9B84: .4byte gBattleAnimTarget
|
|
_080A9B88: .4byte sub_80A9B8C
|
|
thumb_func_end sub_80A9B40
|
|
|
|
thumb_func_start sub_80A9B8C
|
|
sub_80A9B8C: @ 80A9B8C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80755E0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A9BB6
|
|
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 _080A9BBC
|
|
_080A9BB6:
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080A9BBC:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A9B8C
|
|
|
|
thumb_func_start sub_80A9BC4
|
|
sub_80A9BC4: @ 80A9BC4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r2, [r4, 0x2E]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080A9BE8
|
|
ldr r1, _080A9BE4 @ =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 _080A9C44
|
|
.align 2, 0
|
|
_080A9BE4: .4byte gBattleAnimArgs
|
|
_080A9BE8:
|
|
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 _080A9C36
|
|
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]
|
|
_080A9C36:
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x78
|
|
ble _080A9C44
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080A9C44:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A9BC4
|
|
|
|
thumb_func_start sub_80A9C4C
|
|
sub_80A9C4C: @ 80A9C4C
|
|
push {lr}
|
|
ldr r2, _080A9C70 @ =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, _080A9C74 @ =sub_8074C44
|
|
str r1, [r0, 0x1C]
|
|
ldr r1, _080A9C78 @ =sub_80A9C7C
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A9C70: .4byte gBattleAnimArgs
|
|
_080A9C74: .4byte sub_8074C44
|
|
_080A9C78: .4byte sub_80A9C7C
|
|
thumb_func_end sub_80A9C4C
|
|
|
|
thumb_func_start sub_80A9C7C
|
|
sub_80A9C7C: @ 80A9C7C
|
|
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 _080A9CE2
|
|
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 _080A9CE2
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080A9CE2:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A9C7C
|
|
|
|
thumb_func_start sub_80A9CE8
|
|
sub_80A9CE8: @ 80A9CE8
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, _080A9DA0 @ =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 _080A9D2A
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
_080A9D2A:
|
|
ldr r0, _080A9DA4 @ =gBattle_BG1_X
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r4, _080A9DA8 @ =gBattle_BG1_Y
|
|
strh r1, [r4]
|
|
movs r0, 0x14
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldrh r1, [r4]
|
|
movs r0, 0x16
|
|
bl SetGpuReg
|
|
mov r0, sp
|
|
bl sub_80752A0
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080A9DAC @ =gFile_graphics_battle_anims_backgrounds_attract_tilemap
|
|
bl sub_807543C
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080A9DB0 @ =gFile_graphics_battle_anims_backgrounds_attract_sheet
|
|
mov r2, sp
|
|
ldrh r2, [r2, 0xA]
|
|
bl sub_80753B4
|
|
ldr r0, _080A9DB4 @ =gFile_graphics_battle_anims_backgrounds_attract_palette
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x8]
|
|
lsls r1, 4
|
|
movs r2, 0x20
|
|
bl LoadCompressedPalette
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A9D88
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x8]
|
|
ldr r1, [sp, 0x4]
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_80730C0
|
|
_080A9D88:
|
|
ldr r0, _080A9DB8 @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _080A9DBC @ =sub_80A9DC0
|
|
str r0, [r1]
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A9DA0: .4byte 0x00003f42
|
|
_080A9DA4: .4byte gBattle_BG1_X
|
|
_080A9DA8: .4byte gBattle_BG1_Y
|
|
_080A9DAC: .4byte gFile_graphics_battle_anims_backgrounds_attract_tilemap
|
|
_080A9DB0: .4byte gFile_graphics_battle_anims_backgrounds_attract_sheet
|
|
_080A9DB4: .4byte gFile_graphics_battle_anims_backgrounds_attract_palette
|
|
_080A9DB8: .4byte gTasks
|
|
_080A9DBC: .4byte sub_80A9DC0
|
|
thumb_func_end sub_80A9CE8
|
|
|
|
thumb_func_start sub_80A9DC0
|
|
sub_80A9DC0: @ 80A9DC0
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, _080A9DE8 @ =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 _080A9DDE
|
|
b _080A9F08
|
|
_080A9DDE:
|
|
lsls r0, 2
|
|
ldr r1, _080A9DEC @ =_080A9DF0
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080A9DE8: .4byte gTasks
|
|
_080A9DEC: .4byte _080A9DF0
|
|
.align 2, 0
|
|
_080A9DF0:
|
|
.4byte _080A9E04
|
|
.4byte _080A9E48
|
|
.4byte _080A9E6A
|
|
.4byte _080A9EAE
|
|
.4byte _080A9ED4
|
|
_080A9E04:
|
|
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 _080A9F08
|
|
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 _080A9F08
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x20]
|
|
strh r5, [r4, 0x1E]
|
|
b _080A9F08
|
|
_080A9E48:
|
|
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 _080A9F08
|
|
movs r0, 0x10
|
|
strh r0, [r1, 0x1E]
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x20]
|
|
b _080A9F08
|
|
_080A9E6A:
|
|
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 _080A9F08
|
|
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 _080A9F08
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x20]
|
|
strh r1, [r4, 0x1E]
|
|
b _080A9F08
|
|
_080A9EAE:
|
|
mov r0, sp
|
|
bl sub_80752A0
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
bl sub_8075358
|
|
ldr r1, _080A9ED0 @ =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 _080A9F08
|
|
.align 2, 0
|
|
_080A9ED0: .4byte gTasks
|
|
_080A9ED4:
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A9EE8
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
_080A9EE8:
|
|
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
|
|
_080A9F08:
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A9DC0
|
|
|
|
thumb_func_start sub_80A9F10
|
|
sub_80A9F10: @ 80A9F10
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, _080A9F88 @ =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 _080A9F52
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
_080A9F52:
|
|
ldr r0, _080A9F8C @ =gBattle_BG1_X
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r4, _080A9F90 @ =gBattle_BG1_Y
|
|
strh r1, [r4]
|
|
movs r0, 0x14
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldrh r1, [r4]
|
|
movs r0, 0x16
|
|
bl SetGpuReg
|
|
mov r0, sp
|
|
bl sub_80752A0
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A9F98
|
|
ldr r0, _080A9F94 @ =gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap
|
|
ldr r1, [sp, 0x4]
|
|
bl LZDecompressVram
|
|
b _080A9FC6
|
|
.align 2, 0
|
|
_080A9F88: .4byte 0x00003f42
|
|
_080A9F8C: .4byte gBattle_BG1_X
|
|
_080A9F90: .4byte gBattle_BG1_Y
|
|
_080A9F94: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap
|
|
_080A9F98:
|
|
ldr r0, _080A9FB4 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080A9FBC
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080A9FB8 @ =gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap
|
|
bl sub_807543C
|
|
b _080A9FC6
|
|
.align 2, 0
|
|
_080A9FB4: .4byte gBattleAnimTarget
|
|
_080A9FB8: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap
|
|
_080A9FBC:
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080AA010 @ =gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap
|
|
bl sub_807543C
|
|
_080A9FC6:
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, _080AA014 @ =gFile_graphics_battle_anims_backgrounds_scary_face_sheet
|
|
mov r2, sp
|
|
ldrh r2, [r2, 0xA]
|
|
bl sub_80753B4
|
|
ldr r0, _080AA018 @ =gFile_graphics_battle_anims_backgrounds_scary_face_palette
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x8]
|
|
lsls r1, 4
|
|
movs r2, 0x20
|
|
bl LoadCompressedPalette
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A9FFA
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x8]
|
|
ldr r1, [sp, 0x4]
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_80730C0
|
|
_080A9FFA:
|
|
ldr r0, _080AA01C @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldr r0, _080AA020 @ =sub_80AA024
|
|
str r0, [r1]
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AA010: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap
|
|
_080AA014: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_sheet
|
|
_080AA018: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_palette
|
|
_080AA01C: .4byte gTasks
|
|
_080AA020: .4byte sub_80AA024
|
|
thumb_func_end sub_80A9F10
|
|
|
|
thumb_func_start sub_80AA024
|
|
sub_80AA024: @ 80AA024
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, _080AA04C @ =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 _080AA042
|
|
b _080AA168
|
|
_080AA042:
|
|
lsls r0, 2
|
|
ldr r1, _080AA050 @ =_080AA054
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080AA04C: .4byte gTasks
|
|
_080AA050: .4byte _080AA054
|
|
.align 2, 0
|
|
_080AA054:
|
|
.4byte _080AA068
|
|
.4byte _080AA0AC
|
|
.4byte _080AA0CE
|
|
.4byte _080AA112
|
|
.4byte _080AA134
|
|
_080AA068:
|
|
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 _080AA168
|
|
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 _080AA168
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x20]
|
|
strh r5, [r4, 0x1E]
|
|
b _080AA168
|
|
_080AA0AC:
|
|
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 _080AA168
|
|
movs r0, 0xE
|
|
strh r0, [r1, 0x1E]
|
|
ldrh r0, [r1, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x20]
|
|
b _080AA168
|
|
_080AA0CE:
|
|
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 _080AA168
|
|
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 _080AA168
|
|
ldrh r0, [r4, 0x20]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x20]
|
|
strh r1, [r4, 0x1E]
|
|
b _080AA168
|
|
_080AA112:
|
|
mov r0, sp
|
|
bl sub_80752A0
|
|
movs r0, 0x1
|
|
bl sub_8075358
|
|
movs r0, 0x2
|
|
bl sub_8075358
|
|
ldr r0, _080AA170 @ =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]
|
|
_080AA134:
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080AA148
|
|
movs r0, 0x1
|
|
movs r1, 0x3
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
_080AA148:
|
|
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
|
|
_080AA168:
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AA170: .4byte gTasks
|
|
thumb_func_end sub_80AA024
|
|
|
|
thumb_func_start sub_80AA174
|
|
sub_80AA174: @ 80AA174
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _080AA1C8 @ =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, _080AA1CC @ =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r1, 0x2]
|
|
strh r0, [r4, 0x30]
|
|
ldrb r0, [r5]
|
|
bl GetBattlerSpriteSubpriority
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x3C]
|
|
ldr r1, _080AA1D0 @ =sub_80AA1D4
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AA1C8: .4byte gBattleAnimAttacker
|
|
_080AA1CC: .4byte gBattleAnimArgs
|
|
_080AA1D0: .4byte sub_80AA1D4
|
|
thumb_func_end sub_80AA174
|
|
|
|
thumb_func_start sub_80AA1D4
|
|
sub_80AA1D4: @ 80AA1D4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x30]
|
|
subs r0, 0x40
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x7F
|
|
bhi _080AA1EA
|
|
ldrh r0, [r4, 0x3C]
|
|
adds r0, 0x1
|
|
b _080AA1EE
|
|
_080AA1EA:
|
|
ldrh r0, [r4, 0x3C]
|
|
subs r0, 0x1
|
|
_080AA1EE:
|
|
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 _080AA260
|
|
cmp r2, 0x1
|
|
bne _080AA290
|
|
ldr r1, _080AA258 @ =0xfffffc00
|
|
adds r0, r1, 0
|
|
ldrh r2, [r4, 0x32]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x32]
|
|
ldr r3, _080AA25C @ =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 _080AA290
|
|
movs r0, 0x2
|
|
strh r0, [r4, 0x38]
|
|
b _080AA2A0
|
|
.align 2, 0
|
|
_080AA258: .4byte 0xfffffc00
|
|
_080AA25C: .4byte 0xffffff00
|
|
_080AA260:
|
|
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 _080AA290
|
|
strh r2, [r4, 0x36]
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x38]
|
|
_080AA290:
|
|
ldr r0, _080AA2A8 @ =gBattleAnimArgs
|
|
ldrh r1, [r0, 0xE]
|
|
ldr r0, _080AA2AC @ =0x0000ffff
|
|
cmp r1, r0
|
|
bne _080AA2A0
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080AA2A0:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AA2A8: .4byte gBattleAnimArgs
|
|
_080AA2AC: .4byte 0x0000ffff
|
|
thumb_func_end sub_80AA1D4
|
|
|
|
thumb_func_start sub_80AA2B0
|
|
sub_80AA2B0: @ 80AA2B0
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080AA2F8 @ =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, _080AA2FC @ =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, _080AA300 @ =sub_80AA304
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AA2F8: .4byte gBattleAnimAttacker
|
|
_080AA2FC: .4byte gBattleAnimArgs
|
|
_080AA300: .4byte sub_80AA304
|
|
thumb_func_end sub_80AA2B0
|
|
|
|
thumb_func_start sub_80AA304
|
|
sub_80AA304: @ 80AA304
|
|
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 _080AA342
|
|
movs r0, 0x22
|
|
ldrsh r1, [r2, r0]
|
|
movs r3, 0x26
|
|
ldrsh r0, [r2, r3]
|
|
adds r1, r0
|
|
cmp r1, 0xA0
|
|
bgt _080AA342
|
|
movs r0, 0x10
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bge _080AA348
|
|
_080AA342:
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_080AA348:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80AA304
|
|
|
|
thumb_func_start sub_80AA34C
|
|
sub_80AA34C: @ 80AA34C
|
|
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 _080AA378
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_080AA378:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80AA34C
|
|
|
|
thumb_func_start sub_80AA37C
|
|
sub_80AA37C: @ 80AA37C
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080AA3C8 @ =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, _080AA3CC @ =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, _080AA3D0 @ =sub_80AA34C
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AA3C8: .4byte gBattleAnimAttacker
|
|
_080AA3CC: .4byte gBattleAnimArgs
|
|
_080AA3D0: .4byte sub_80AA34C
|
|
thumb_func_end sub_80AA37C
|
|
|
|
thumb_func_start sub_80AA3D4
|
|
sub_80AA3D4: @ 80AA3D4
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080AA3EA
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_080AA3EA:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80AA3D4
|
|
|
|
thumb_func_start sub_80AA3F0
|
|
sub_80AA3F0: @ 80AA3F0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_8075160
|
|
ldr r0, _080AA404 @ =sub_80AA3D4
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AA404: .4byte sub_80AA3D4
|
|
thumb_func_end sub_80AA3F0
|
|
|
|
thumb_func_start sub_80AA408
|
|
sub_80AA408: @ 80AA408
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080AA426
|
|
ldr r0, _080AA498 @ =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]
|
|
_080AA426:
|
|
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 _080AA46A
|
|
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]
|
|
_080AA46A:
|
|
movs r0, 0x2E
|
|
ldrsh r2, [r4, r0]
|
|
cmp r2, 0x5A
|
|
ble _080AA488
|
|
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]
|
|
_080AA488:
|
|
cmp r2, 0x64
|
|
ble _080AA492
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080AA492:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AA498: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80AA408
|
|
|
|
thumb_func_start sub_80AA49C
|
|
sub_80AA49C: @ 80AA49C
|
|
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 _080AA4F2
|
|
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]
|
|
_080AA4F2:
|
|
movs r1, 0x38
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1E
|
|
ble _080AA500
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080AA500:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80AA49C
|
|
|
|
thumb_func_start sub_80AA508
|
|
sub_80AA508: @ 80AA508
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldrh r2, [r4, 0x2E]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080AA52C
|
|
ldr r1, _080AA528 @ =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 _080AA580
|
|
.align 2, 0
|
|
_080AA528: .4byte gBattleAnimArgs
|
|
_080AA52C:
|
|
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 _080AA580
|
|
ldr r0, _080AA588 @ =sub_80AA49C
|
|
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 Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0xB4
|
|
bl __umodsi3
|
|
strh r0, [r4, 0x34]
|
|
_080AA580:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AA588: .4byte sub_80AA49C
|
|
thumb_func_end sub_80AA508
|
|
|
|
thumb_func_start sub_80AA58C
|
|
sub_80AA58C: @ 80AA58C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080AA5C6
|
|
ldr r1, _080AA688 @ =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, _080AA68C @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSpriteSubpriority
|
|
subs r0, 0x1
|
|
adds r1, r4, 0
|
|
adds r1, 0x43
|
|
strb r0, [r1]
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x32]
|
|
_080AA5C6:
|
|
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 _080AA5DC
|
|
adds r0, 0xFF
|
|
_080AA5DC:
|
|
asrs r0, 8
|
|
lsls r0, 8
|
|
subs r0, r1, r0
|
|
strh r0, [r4, 0x30]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bge _080AA5EE
|
|
movs r0, 0
|
|
strh r0, [r4, 0x30]
|
|
_080AA5EE:
|
|
movs r0, 0x30
|
|
ldrsh r2, [r4, r0]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bge _080AA5FC
|
|
adds r0, 0x3
|
|
_080AA5FC:
|
|
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 _080AA618
|
|
adds r0, 0x7
|
|
_080AA618:
|
|
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 _080AA63C
|
|
ldrh r1, [r4, 0x32]
|
|
movs r2, 0x32
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
ble _080AA63C
|
|
ldr r0, _080AA690 @ =0x0000ffff
|
|
strh r0, [r4, 0x32]
|
|
_080AA63C:
|
|
movs r1, 0x30
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080AA650
|
|
movs r2, 0x32
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bge _080AA650
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x32]
|
|
_080AA650:
|
|
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 _080AA694
|
|
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 _080AA6A2
|
|
.align 2, 0
|
|
_080AA688: .4byte gBattleAnimArgs
|
|
_080AA68C: .4byte gBattleAnimTarget
|
|
_080AA690: .4byte 0x0000ffff
|
|
_080AA694:
|
|
adds r2, r4, 0
|
|
adds r2, 0x3E
|
|
ldrb r1, [r2]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
_080AA6A2:
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x5A
|
|
ble _080AA6B0
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080AA6B0:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80AA58C
|
|
|
|
thumb_func_start sub_80AA6B8
|
|
sub_80AA6B8: @ 80AA6B8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080AA6EC
|
|
ldr r1, _080AA6E8 @ =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 _080AA700
|
|
.align 2, 0
|
|
_080AA6E8: .4byte gBattleAnimArgs
|
|
_080AA6EC:
|
|
adds r0, r4, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080AA700
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080AA700:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80AA6B8
|
|
|
|
thumb_func_start sub_80AA708
|
|
sub_80AA708: @ 80AA708
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r1, _080AA720 @ =gBattleAnimArgs
|
|
movs r2, 0x4
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
bne _080AA724
|
|
adds r0, r5, 0
|
|
bl DestroyAnimSprite
|
|
b _080AA788
|
|
.align 2, 0
|
|
_080AA720: .4byte gBattleAnimArgs
|
|
_080AA724:
|
|
movs r2, 0
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
bne _080AA734
|
|
ldr r4, _080AA730 @ =gBattleAnimAttacker
|
|
b _080AA736
|
|
.align 2, 0
|
|
_080AA730: .4byte gBattleAnimAttacker
|
|
_080AA734:
|
|
ldr r4, _080AA764 @ =gBattleAnimTarget
|
|
_080AA736:
|
|
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, _080AA768 @ =gBattleAnimArgs
|
|
movs r2, 0x2
|
|
ldrsh r1, [r0, r2]
|
|
adds r2, r0, 0
|
|
cmp r1, 0
|
|
bne _080AA76C
|
|
ldrh r0, [r5, 0x20]
|
|
adds r0, 0x20
|
|
b _080AA770
|
|
.align 2, 0
|
|
_080AA764: .4byte gBattleAnimTarget
|
|
_080AA768: .4byte gBattleAnimArgs
|
|
_080AA76C:
|
|
ldrh r0, [r5, 0x20]
|
|
subs r0, 0x20
|
|
_080AA770:
|
|
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, _080AA790 @ =sub_80AA794
|
|
str r0, [r5, 0x1C]
|
|
_080AA788:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AA790: .4byte sub_80AA794
|
|
thumb_func_end sub_80AA708
|
|
|
|
thumb_func_start sub_80AA794
|
|
sub_80AA794: @ 80AA794
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080AA7C4
|
|
ldrh r0, [r2, 0x2E]
|
|
subs r0, 0x1
|
|
strh r0, [r2, 0x2E]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080AA7BE
|
|
ldrh r1, [r2, 0x30]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r2, 0
|
|
bl StartSpriteAnim
|
|
b _080AA7C4
|
|
_080AA7BE:
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_080AA7C4:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80AA794
|
|
|
|
thumb_func_start sub_80AA7C8
|
|
sub_80AA7C8: @ 80AA7C8
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldr r0, _080AA7FC @ =gBattleAnimArgs
|
|
ldrb r0, [r0]
|
|
bl GetAnimBankSpriteId
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r4, r5, 2
|
|
adds r4, r5
|
|
lsls r4, 3
|
|
ldr r0, _080AA800 @ =gTasks
|
|
adds r4, r0
|
|
ldr r2, _080AA804 @ =gUnknown_83E4410
|
|
adds r0, r4, 0
|
|
bl sub_80762D0
|
|
ldr r0, _080AA808 @ =sub_80AA80C
|
|
str r0, [r4]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AA7FC: .4byte gBattleAnimArgs
|
|
_080AA800: .4byte gTasks
|
|
_080AA804: .4byte gUnknown_83E4410
|
|
_080AA808: .4byte sub_80AA80C
|
|
thumb_func_end sub_80AA7C8
|
|
|
|
thumb_func_start sub_80AA80C
|
|
sub_80AA80C: @ 80AA80C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, _080AA834 @ =gTasks
|
|
adds r0, r1
|
|
bl sub_8076308
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080AA82C
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_080AA82C:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AA834: .4byte gTasks
|
|
thumb_func_end sub_80AA80C
|
|
|
|
thumb_func_start sub_80AA838
|
|
sub_80AA838: @ 80AA838
|
|
push {r4-r7,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _080AA84C @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080AA854
|
|
ldr r0, _080AA850 @ =gBattleAnimAttacker
|
|
b _080AA856
|
|
.align 2, 0
|
|
_080AA84C: .4byte gBattleAnimArgs
|
|
_080AA850: .4byte gBattleAnimAttacker
|
|
_080AA854:
|
|
ldr r0, _080AA8EC @ =gBattleAnimTarget
|
|
_080AA856:
|
|
ldrb r6, [r0]
|
|
adds r0, r6, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080AA870
|
|
ldr r1, _080AA8F0 @ =gBattleAnimArgs
|
|
movs r2, 0x2
|
|
ldrsh r0, [r1, r2]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x2]
|
|
_080AA870:
|
|
adds r0, r6, 0
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
ldr r7, _080AA8F0 @ =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 _080AA8B0
|
|
adds r0, 0x7
|
|
_080AA8B0:
|
|
asrs r0, 3
|
|
strh r0, [r5, 0x34]
|
|
movs r3, 0x4
|
|
ldrsh r0, [r7, r3]
|
|
lsls r0, 3
|
|
cmp r0, 0
|
|
bge _080AA8C0
|
|
adds r0, 0x7
|
|
_080AA8C0:
|
|
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, _080AA8F4 @ =0x000003ff
|
|
adds r0, r3, 0
|
|
ands r1, r0
|
|
ldr r0, _080AA8F8 @ =0xfffffc00
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r5, 0x4]
|
|
ldr r0, _080AA8FC @ =sub_80AA900
|
|
str r0, [r5, 0x1C]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AA8EC: .4byte gBattleAnimTarget
|
|
_080AA8F0: .4byte gBattleAnimArgs
|
|
_080AA8F4: .4byte 0x000003ff
|
|
_080AA8F8: .4byte 0xfffffc00
|
|
_080AA8FC: .4byte sub_80AA900
|
|
thumb_func_end sub_80AA838
|
|
|
|
thumb_func_start sub_80AA900
|
|
sub_80AA900: @ 80AA900
|
|
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 _080AA934
|
|
adds r0, r2, 0
|
|
bl DestroyAnimSprite
|
|
_080AA934:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80AA900
|
|
|
|
thumb_func_start sub_80AA938
|
|
sub_80AA938: @ 80AA938
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080AA95A
|
|
ldr r0, _080AA994 @ =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]
|
|
_080AA95A:
|
|
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 _080AA978
|
|
ldrb r0, [r4, 0x5]
|
|
lsrs r0, 4
|
|
adds r0, 0x10
|
|
movs r1, 0
|
|
bl sub_8075B48
|
|
_080AA978:
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r4, r2]
|
|
adds r0, 0x50
|
|
cmp r1, r0
|
|
bne _080AA98C
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080AA98C:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AA994: .4byte gBattleAnimArgs
|
|
thumb_func_end sub_80AA938
|
|
|
|
thumb_func_start sub_80AA998
|
|
sub_80AA998: @ 80AA998
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
bne _080AA9C6
|
|
movs r5, 0x78
|
|
strh r5, [r6, 0x20]
|
|
ldr r4, _080AAA48 @ =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]
|
|
_080AA9C6:
|
|
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 _080AAA42
|
|
ldr r0, _080AAA4C @ =sub_80AAA50
|
|
str r0, [r6, 0x1C]
|
|
strh r5, [r6, 0x2E]
|
|
adds r0, r6, 0
|
|
bl SetSpritePrimaryCoordsFromSecondaryCoords
|
|
movs r0, 0x5
|
|
strh r0, [r6, 0x32]
|
|
strh r5, [r6, 0x36]
|
|
strh r5, [r6, 0x34]
|
|
adds r0, r6, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
_080AAA42:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AAA48: .4byte gBattleAnimArgs
|
|
_080AAA4C: .4byte sub_80AAA50
|
|
thumb_func_end sub_80AA998
|
|
|
|
thumb_func_start sub_80AAA50
|
|
sub_80AAA50: @ 80AAA50
|
|
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 _080AAA6A
|
|
movs r0, 0
|
|
strh r0, [r1, 0x2E]
|
|
ldr r0, _080AAA70 @ =sub_80AAA74
|
|
str r0, [r1, 0x1C]
|
|
_080AAA6A:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AAA70: .4byte sub_80AAA74
|
|
thumb_func_end sub_80AAA50
|
|
|
|
thumb_func_start sub_80AAA74
|
|
sub_80AAA74: @ 80AAA74
|
|
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 _080AAA9E
|
|
lsls r0, r1, 16
|
|
cmp r0, 0
|
|
ble _080AAA9E
|
|
ldrh r0, [r4, 0x36]
|
|
subs r1, r0, 0x5
|
|
strh r1, [r4, 0x32]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x36]
|
|
_080AAA9E:
|
|
movs r1, 0x36
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x3
|
|
ble _080AAAD0
|
|
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
|
|
_080AAAD0:
|
|
movs r1, 0x36
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x4
|
|
bne _080AAADE
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080AAADE:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80AAA74
|
|
|
|
thumb_func_start sub_80AAAE4
|
|
sub_80AAAE4: @ 80AAAE4
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _080AAB28 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080AAB30
|
|
ldr r4, _080AAB2C @ =gBattleAnimAttacker
|
|
ldrb r1, [r4]
|
|
movs r0, 0x2
|
|
eors r0, r1
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080AAB30
|
|
ldrb r0, [r4]
|
|
adds r2, r5, 0
|
|
adds r2, 0x20
|
|
adds r3, r5, 0
|
|
adds r3, 0x22
|
|
movs r1, 0
|
|
bl sub_8076D9C
|
|
ldrh r0, [r5, 0x22]
|
|
adds r0, 0x28
|
|
strh r0, [r5, 0x22]
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
b _080AAB50
|
|
.align 2, 0
|
|
_080AAB28: .4byte gBattleTypeFlags
|
|
_080AAB2C: .4byte gBattleAnimAttacker
|
|
_080AAB30:
|
|
ldr r4, _080AAB70 @ =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]
|
|
_080AAB50:
|
|
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, _080AAB74 @ =StartAnimLinearTranslation
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, _080AAB78 @ =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AAB70: .4byte gBattleAnimAttacker
|
|
_080AAB74: .4byte StartAnimLinearTranslation
|
|
_080AAB78: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80AAAE4
|
|
|
|
thumb_func_start sub_80AAB7C
|
|
sub_80AAB7C: @ 80AAB7C
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r3, _080AAB98 @ =gBattleAnimArgs
|
|
ldr r1, _080AAB9C @ =gAnimDisableStructPtr
|
|
ldr r1, [r1]
|
|
ldrb r2, [r1, 0x10]
|
|
movs r1, 0x1
|
|
ands r1, r2
|
|
strh r1, [r3, 0xE]
|
|
bl DestroyAnimVisualTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AAB98: .4byte gBattleAnimArgs
|
|
_080AAB9C: .4byte gAnimDisableStructPtr
|
|
thumb_func_end sub_80AAB7C
|
|
|
|
thumb_func_start update_fury_cutter_counter_copy
|
|
update_fury_cutter_counter_copy: @ 80AABA0
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _080AABB8 @ =gBattleAnimArgs
|
|
ldr r1, _080AABBC @ =gAnimDisableStructPtr
|
|
ldr r1, [r1]
|
|
ldrb r1, [r1, 0x10]
|
|
strh r1, [r2, 0xE]
|
|
bl DestroyAnimVisualTask
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AABB8: .4byte gBattleAnimArgs
|
|
_080AABBC: .4byte gAnimDisableStructPtr
|
|
thumb_func_end update_fury_cutter_counter_copy
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|