mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-06 13:47:12 -05:00
2181 lines
36 KiB
ArmAsm
2181 lines
36 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_80B2ECC
|
|
sub_80B2ECC: @ 80B2ECC
|
|
push {r4-r7,lr}
|
|
adds r6, r0, 0
|
|
ldr r0, _080B2F84 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B2EE8
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B2EFE
|
|
_080B2EE8:
|
|
ldrb r1, [r6, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r1
|
|
movs r1, 0x8
|
|
orrs r0, r1
|
|
strb r0, [r6, 0x5]
|
|
adds r1, r6, 0
|
|
adds r1, 0x43
|
|
movs r0, 0xC8
|
|
strb r0, [r1]
|
|
_080B2EFE:
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B2F5A
|
|
movs r0, 0x1
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r7, r4, 0
|
|
adds r0, r4, 0
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
negs r1, r0
|
|
orrs r1, r0
|
|
lsrs r5, r1, 31
|
|
adds r0, r4, 0
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B2F3C
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl sub_8072E48
|
|
_080B2F3C:
|
|
movs r0, 0x2
|
|
adds r4, r0, 0
|
|
eors r4, r7
|
|
adds r0, r4, 0
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B2F5A
|
|
movs r0, 0x1
|
|
eors r5, r0
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl sub_8072E48
|
|
_080B2F5A:
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B2F90
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B2F90
|
|
ldr r0, _080B2F84 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B2F88
|
|
movs r0, 0x48
|
|
strh r0, [r6, 0x20]
|
|
movs r0, 0x50
|
|
b _080B2FCA
|
|
.align 2, 0
|
|
_080B2F84: .4byte gBattleAnimAttacker
|
|
_080B2F88:
|
|
movs r0, 0xB0
|
|
strh r0, [r6, 0x20]
|
|
movs r0, 0x28
|
|
b _080B2FCA
|
|
_080B2F90:
|
|
ldr r5, _080B3000 @ =gBattleAnimAttacker
|
|
ldrb r0, [r5]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B2FA6
|
|
ldr r1, _080B3004 @ =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
negs r0, r0
|
|
strh r0, [r1]
|
|
_080B2FA6:
|
|
ldrb r0, [r5]
|
|
movs r1, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
ldr r4, _080B3004 @ =gBattleAnimArgs
|
|
lsrs r0, 24
|
|
ldrh r1, [r4]
|
|
adds r0, r1
|
|
strh r0, [r6, 0x20]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x1
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r4, [r4, 0x2]
|
|
adds r0, r4
|
|
_080B2FCA:
|
|
strh r0, [r6, 0x22]
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B2FDC
|
|
ldrh r0, [r6, 0x22]
|
|
adds r0, 0x9
|
|
strh r0, [r6, 0x22]
|
|
_080B2FDC:
|
|
ldr r0, _080B3004 @ =gBattleAnimArgs
|
|
ldrh r0, [r0, 0x4]
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r0, 20
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
strh r0, [r6, 0x2E]
|
|
ldr r1, _080B3008 @ =sub_80B300C
|
|
str r1, [r6, 0x1C]
|
|
adds r0, r6, 0
|
|
bl _call_via_r1
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B3000: .4byte gBattleAnimAttacker
|
|
_080B3004: .4byte gBattleAnimArgs
|
|
_080B3008: .4byte sub_80B300C
|
|
thumb_func_end sub_80B2ECC
|
|
|
|
thumb_func_start sub_80B300C
|
|
sub_80B300C: @ 80B300C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x34]
|
|
movs r1, 0x10
|
|
subs r1, r0
|
|
lsls r1, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
ldrh r1, [r4, 0x34]
|
|
movs r2, 0x34
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0xD
|
|
bne _080B3038
|
|
ldr r0, _080B3034 @ =sub_80B3044
|
|
str r0, [r4, 0x1C]
|
|
b _080B303C
|
|
.align 2, 0
|
|
_080B3034: .4byte sub_80B3044
|
|
_080B3038:
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0x34]
|
|
_080B303C:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B300C
|
|
|
|
thumb_func_start sub_80B3044
|
|
sub_80B3044: @ 80B3044
|
|
push {r4-r7,lr}
|
|
adds r3, r0, 0
|
|
ldrh r0, [r3, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x2
|
|
bne _080B30A2
|
|
movs r0, 0
|
|
strh r0, [r3, 0x30]
|
|
ldrh r4, [r3, 0x2E]
|
|
ldr r1, _080B30A8 @ =gPlttBufferFaded
|
|
adds r0, r4, 0
|
|
adds r0, 0x8
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r7, [r0]
|
|
movs r5, 0x8
|
|
adds r6, r1, 0
|
|
adds r1, r4, 0x7
|
|
lsls r0, r4, 1
|
|
adds r0, r6
|
|
adds r2, r0, 0
|
|
adds r2, 0x10
|
|
lsls r1, 1
|
|
adds r1, r6
|
|
_080B307A:
|
|
ldrh r0, [r1]
|
|
strh r0, [r2]
|
|
subs r1, 0x2
|
|
subs r2, 0x2
|
|
subs r5, 0x1
|
|
cmp r5, 0
|
|
bgt _080B307A
|
|
adds r0, r4, 0x1
|
|
lsls r0, 1
|
|
adds r0, r6
|
|
strh r7, [r0]
|
|
ldrh r0, [r3, 0x32]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x10
|
|
bne _080B30A2
|
|
ldr r0, _080B30AC @ =sub_80B30B0
|
|
str r0, [r3, 0x1C]
|
|
_080B30A2:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B30A8: .4byte gPlttBufferFaded
|
|
_080B30AC: .4byte sub_80B30B0
|
|
thumb_func_end sub_80B3044
|
|
|
|
thumb_func_start sub_80B30B0
|
|
sub_80B30B0: @ 80B30B0
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldrh r0, [r5, 0x34]
|
|
movs r1, 0x10
|
|
subs r1, r0
|
|
lsls r1, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
ldrh r0, [r5, 0x34]
|
|
subs r0, 0x1
|
|
strh r0, [r5, 0x34]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bne _080B3156
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B3146
|
|
movs r0, 0x1
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r6, r4, 0
|
|
adds r0, r4, 0
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B3118
|
|
ldr r2, _080B315C @ =gSprites
|
|
ldr r0, _080B3160 @ =gBattlerSpriteIds
|
|
adds r0, r4, r0
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
adds r0, 0x3E
|
|
ldrb r2, [r0]
|
|
movs r1, 0x5
|
|
negs r1, r1
|
|
ands r1, r2
|
|
strb r1, [r0]
|
|
_080B3118:
|
|
movs r0, 0x2
|
|
adds r4, r0, 0
|
|
eors r4, r6
|
|
adds r0, r4, 0
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B3146
|
|
ldr r2, _080B315C @ =gSprites
|
|
ldr r0, _080B3160 @ =gBattlerSpriteIds
|
|
adds r0, r4, r0
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
adds r0, 0x3E
|
|
ldrb r2, [r0]
|
|
movs r1, 0x5
|
|
negs r1, r1
|
|
ands r1, r2
|
|
strb r1, [r0]
|
|
_080B3146:
|
|
adds r2, r5, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, _080B3164 @ =sub_80B3168
|
|
str r0, [r5, 0x1C]
|
|
_080B3156:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B315C: .4byte gSprites
|
|
_080B3160: .4byte gBattlerSpriteIds
|
|
_080B3164: .4byte sub_80B3168
|
|
thumb_func_end sub_80B30B0
|
|
|
|
thumb_func_start sub_80B3168
|
|
sub_80B3168: @ 80B3168
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B31C0
|
|
movs r0, 0x1
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r4, r0, 0
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
negs r1, r0
|
|
orrs r1, r0
|
|
lsrs r5, r1, 31
|
|
adds r0, r4, 0
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B31A6
|
|
adds r0, r5, 0
|
|
bl sub_8073128
|
|
_080B31A6:
|
|
movs r0, 0x2
|
|
eors r4, r0
|
|
adds r0, r4, 0
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B31C0
|
|
movs r0, 0x1
|
|
eors r5, r0
|
|
adds r0, r5, 0
|
|
bl sub_8073128
|
|
_080B31C0:
|
|
ldr r0, _080B31CC @ =DestroyAnimSprite
|
|
str r0, [r6, 0x1C]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B31CC: .4byte DestroyAnimSprite
|
|
thumb_func_end sub_80B3168
|
|
|
|
thumb_func_start sub_80B31D0
|
|
sub_80B31D0: @ 80B31D0
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080B325C
|
|
ldr r5, _080B321C @ =gBattleAnimArgs
|
|
movs r1, 0x6
|
|
ldrsh r0, [r5, r1]
|
|
movs r6, 0
|
|
cmp r0, 0
|
|
bne _080B31EA
|
|
movs r6, 0x1
|
|
_080B31EA:
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B3232
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B3232
|
|
ldr r0, _080B3220 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B3224
|
|
ldrh r0, [r5]
|
|
movs r1, 0x48
|
|
subs r1, r0
|
|
strh r1, [r4, 0x20]
|
|
ldrh r0, [r5, 0x2]
|
|
adds r0, 0x50
|
|
strh r0, [r4, 0x22]
|
|
b _080B3254
|
|
.align 2, 0
|
|
_080B321C: .4byte gBattleAnimArgs
|
|
_080B3220: .4byte gBattleAnimAttacker
|
|
_080B3224:
|
|
ldrh r0, [r5]
|
|
adds r0, 0xB0
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r5, 0x2]
|
|
adds r0, 0x28
|
|
strh r0, [r4, 0x22]
|
|
b _080B3254
|
|
_080B3232:
|
|
ldr r0, _080B3248 @ =gBattleAnimArgs
|
|
movs r1, 0x4
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080B324C
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl sub_8075160
|
|
b _080B3254
|
|
.align 2, 0
|
|
_080B3248: .4byte gBattleAnimArgs
|
|
_080B324C:
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl sub_8075114
|
|
_080B3254:
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _080B3270
|
|
_080B325C:
|
|
adds r0, r4, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x30
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B3270
|
|
adds r0, r4, 0
|
|
bl move_anim_8074EE0
|
|
_080B3270:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B31D0
|
|
|
|
thumb_func_start sub_80B3278
|
|
sub_80B3278: @ 80B3278
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, _080B32C0 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl 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]
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B32C8
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAnim
|
|
ldrh r0, [r5, 0x20]
|
|
subs r0, 0x28
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r5, 0x22]
|
|
adds r0, 0xA
|
|
strh r0, [r5, 0x22]
|
|
ldr r0, _080B32C4 @ =0x0000ffff
|
|
b _080B32D6
|
|
.align 2, 0
|
|
_080B32C0: .4byte gBattleAnimAttacker
|
|
_080B32C4: .4byte 0x0000ffff
|
|
_080B32C8:
|
|
ldrh r0, [r5, 0x20]
|
|
adds r0, 0x28
|
|
strh r0, [r5, 0x20]
|
|
ldrh r0, [r5, 0x22]
|
|
subs r0, 0xA
|
|
strh r0, [r5, 0x22]
|
|
movs r0, 0x1
|
|
_080B32D6:
|
|
strh r0, [r5, 0x30]
|
|
ldr r1, _080B32EC @ =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, _080B32F0 @ =sub_8074F6C
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B32EC: .4byte DestroyAnimSprite
|
|
_080B32F0: .4byte sub_8074F6C
|
|
thumb_func_end sub_80B3278
|
|
|
|
thumb_func_start sub_80B32F4
|
|
sub_80B32F4: @ 80B32F4
|
|
push {r4-r7,lr}
|
|
adds r5, r0, 0
|
|
ldr r6, _080B3378 @ =gBattleAnimAttacker
|
|
ldrb r0, [r6]
|
|
movs r1, 0x1
|
|
bl sub_8076B2C
|
|
lsls r0, 16
|
|
asrs r1, r0, 16
|
|
lsrs r0, 31
|
|
adds r1, r0
|
|
lsls r1, 15
|
|
lsrs r4, r1, 16
|
|
ldrb r0, [r6]
|
|
movs r1, 0
|
|
bl sub_8076B2C
|
|
lsls r0, 16
|
|
asrs r1, r0, 16
|
|
lsrs r0, 31
|
|
adds r1, r0
|
|
asrs r1, 1
|
|
negs r1, r1
|
|
lsls r1, 16
|
|
lsrs r7, r1, 16
|
|
ldrb r0, [r6]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080B333A
|
|
lsls r0, r4, 16
|
|
negs r0, r0
|
|
lsrs r4, r0, 16
|
|
_080B333A:
|
|
ldrb r0, [r6]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, r4
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r6]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, r7
|
|
strh r0, [r5, 0x22]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xF
|
|
bgt _080B3366
|
|
movs r0, 0x10
|
|
strh r0, [r5, 0x22]
|
|
_080B3366:
|
|
ldr r1, _080B337C @ =sub_80B3384
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, _080B3380 @ =sub_8074F6C
|
|
str r0, [r5, 0x1C]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B3378: .4byte gBattleAnimAttacker
|
|
_080B337C: .4byte sub_80B3384
|
|
_080B3380: .4byte sub_8074F6C
|
|
thumb_func_end sub_80B32F4
|
|
|
|
thumb_func_start sub_80B3384
|
|
sub_80B3384: @ 80B3384
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrb r1, [r4, 0x1]
|
|
movs r0, 0x4
|
|
negs r0, r0
|
|
ands r0, r1
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x1]
|
|
ldr r0, _080B33B0 @ =gUnknown_83E6FF0
|
|
str r0, [r4, 0x10]
|
|
movs r0, 0
|
|
strh r0, [r4, 0x2E]
|
|
adds r0, r4, 0
|
|
bl InitSpriteAffineAnim
|
|
ldr r0, _080B33B4 @ =sub_80B33B8
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B33B0: .4byte gUnknown_83E6FF0
|
|
_080B33B4: .4byte sub_80B33B8
|
|
thumb_func_end sub_80B3384
|
|
|
|
thumb_func_start sub_80B33B8
|
|
sub_80B33B8: @ 80B33B8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080B33CA
|
|
cmp r0, 0x1
|
|
beq _080B33F8
|
|
b _080B3410
|
|
_080B33CA:
|
|
adds r0, r4, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B3410
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
bl FreeOamMatrix
|
|
ldrb r1, [r4, 0x1]
|
|
movs r0, 0x4
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r4, 0x1]
|
|
movs r0, 0x12
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _080B3410
|
|
_080B33F8:
|
|
ldrh r0, [r4, 0x30]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bne _080B3410
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B3410:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B33B8
|
|
|
|
thumb_func_start sub_80B3418
|
|
sub_80B3418: @ 80B3418
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r4, r0, 2
|
|
adds r4, r0
|
|
lsls r4, 3
|
|
ldr r0, _080B3448 @ =gTasks
|
|
adds r4, r0
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
strh r1, [r4, 0x8]
|
|
ldr r2, _080B344C @ =gUnknown_83E700C
|
|
adds r0, r4, 0
|
|
bl sub_80762D0
|
|
ldr r0, _080B3450 @ =sub_80B3454
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B3448: .4byte gTasks
|
|
_080B344C: .4byte gUnknown_83E700C
|
|
_080B3450: .4byte sub_80B3454
|
|
thumb_func_end sub_80B3418
|
|
|
|
thumb_func_start sub_80B3454
|
|
sub_80B3454: @ 80B3454
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, _080B347C @ =gTasks
|
|
adds r0, r1
|
|
bl sub_8076308
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080B3474
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B3474:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B347C: .4byte gTasks
|
|
thumb_func_end sub_80B3454
|
|
|
|
thumb_func_start sub_80B3480
|
|
sub_80B3480: @ 80B3480
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080B34CC @ =gTasks
|
|
adds r4, r1, r0
|
|
movs r0, 0
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0
|
|
strh r0, [r4, 0x8]
|
|
strh r1, [r4, 0xA]
|
|
strh r1, [r4, 0xC]
|
|
ldr r0, _080B34D0 @ =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
movs r1, 0x8
|
|
cmp r0, 0
|
|
beq _080B34B4
|
|
movs r1, 0x4
|
|
_080B34B4:
|
|
strh r1, [r4, 0xE]
|
|
ldrb r1, [r4, 0x8]
|
|
ldr r2, _080B34D4 @ =gUnknown_83E702C
|
|
adds r0, r4, 0
|
|
bl sub_80762D0
|
|
ldr r0, _080B34D8 @ =sub_80B34DC
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B34CC: .4byte gTasks
|
|
_080B34D0: .4byte gBattleAnimAttacker
|
|
_080B34D4: .4byte gUnknown_83E702C
|
|
_080B34D8: .4byte sub_80B34DC
|
|
thumb_func_end sub_80B3480
|
|
|
|
thumb_func_start sub_80B34DC
|
|
sub_80B34DC: @ 80B34DC
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _080B34FC @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0xA
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080B3500
|
|
cmp r0, 0x1
|
|
beq _080B351C
|
|
b _080B357A
|
|
.align 2, 0
|
|
_080B34FC: .4byte gTasks
|
|
_080B3500:
|
|
adds r0, r4, 0
|
|
bl sub_8076308
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x13
|
|
ble _080B357A
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
b _080B357A
|
|
_080B351C:
|
|
movs r1, 0xE
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080B3544
|
|
ldr r2, _080B3540 @ =gSprites
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r0, 0x26]
|
|
subs r1, 0x8
|
|
strh r1, [r0, 0x26]
|
|
ldrh r0, [r4, 0xE]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0xE]
|
|
b _080B357A
|
|
.align 2, 0
|
|
_080B3540: .4byte gSprites
|
|
_080B3544:
|
|
ldr r3, _080B3580 @ =gSprites
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
adds r0, 0x3E
|
|
ldrb r1, [r0]
|
|
movs r2, 0x4
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
movs r1, 0x88
|
|
lsls r1, 1
|
|
strh r1, [r0, 0x20]
|
|
ldrb r0, [r4, 0x8]
|
|
bl ResetSpriteRotScale
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B357A:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B3580: .4byte gSprites
|
|
thumb_func_end sub_80B34DC
|
|
|
|
thumb_func_start sub_80B3584
|
|
sub_80B3584: @ 80B3584
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080B360C @ =gTasks
|
|
adds r5, r1, r0
|
|
movs r1, 0
|
|
movs r0, 0x10
|
|
strh r0, [r5, 0xE]
|
|
strh r1, [r5, 0x10]
|
|
ldr r4, _080B3610 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x24]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8076B2C
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x3
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8076B2C
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r1, 0x3
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
adds r1, r0, 0
|
|
cmp r0, r6
|
|
bcs _080B35EE
|
|
adds r1, r6, 0
|
|
_080B35EE:
|
|
strh r1, [r5, 0x20]
|
|
movs r1, 0xFD
|
|
lsls r1, 6
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0x10
|
|
bl SetGpuReg
|
|
ldr r0, _080B3614 @ =sub_80B3618
|
|
str r0, [r5]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B360C: .4byte gTasks
|
|
_080B3610: .4byte gBattleAnimAttacker
|
|
_080B3614: .4byte sub_80B3618
|
|
thumb_func_end sub_80B3584
|
|
|
|
thumb_func_start sub_80B3618
|
|
sub_80B3618: @ 80B3618
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _080B363C @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
cmp r1, 0x1
|
|
beq _080B3718
|
|
cmp r1, 0x1
|
|
bgt _080B3640
|
|
cmp r1, 0
|
|
beq _080B364E
|
|
b _080B379E
|
|
.align 2, 0
|
|
_080B363C: .4byte gTasks
|
|
_080B3640:
|
|
cmp r1, 0x2
|
|
bne _080B3646
|
|
b _080B377A
|
|
_080B3646:
|
|
cmp r1, 0x3
|
|
bne _080B364C
|
|
b _080B3788
|
|
_080B364C:
|
|
b _080B379E
|
|
_080B364E:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x8
|
|
bgt _080B365E
|
|
b _080B379E
|
|
_080B365E:
|
|
strh r1, [r4, 0xA]
|
|
ldr r0, _080B369C @ =gUnknown_83E7044
|
|
movs r2, 0x22
|
|
ldrsh r1, [r4, r2]
|
|
movs r3, 0x24
|
|
ldrsh r2, [r4, r3]
|
|
movs r3, 0
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
movs r0, 0xC
|
|
ldrsh r1, [r4, r0]
|
|
adds r1, 0x8
|
|
lsls r1, 1
|
|
adds r0, r4, 0
|
|
adds r0, 0x8
|
|
adds r0, r1
|
|
strh r2, [r0]
|
|
cmp r2, 0x40
|
|
beq _080B3702
|
|
movs r1, 0xC
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _080B36BC
|
|
cmp r0, 0x1
|
|
bgt _080B36A0
|
|
cmp r0, 0
|
|
beq _080B36AA
|
|
b _080B3702
|
|
.align 2, 0
|
|
_080B369C: .4byte gUnknown_83E7044
|
|
_080B36A0:
|
|
cmp r0, 0x2
|
|
beq _080B36D4
|
|
cmp r0, 0x3
|
|
beq _080B36EC
|
|
b _080B3702
|
|
_080B36AA:
|
|
ldr r0, _080B36B8 @ =gSprites
|
|
lsls r1, r2, 4
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrh r0, [r4, 0x20]
|
|
b _080B36FA
|
|
.align 2, 0
|
|
_080B36B8: .4byte gSprites
|
|
_080B36BC:
|
|
ldr r0, _080B36D0 @ =gSprites
|
|
lsls r1, r2, 4
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrh r0, [r4, 0x20]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x24]
|
|
ldrh r0, [r4, 0x20]
|
|
b _080B3700
|
|
.align 2, 0
|
|
_080B36D0: .4byte gSprites
|
|
_080B36D4:
|
|
ldr r1, _080B36E8 @ =gSprites
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrh r1, [r4, 0x20]
|
|
strh r1, [r0, 0x24]
|
|
ldrh r1, [r4, 0x20]
|
|
strh r1, [r0, 0x26]
|
|
b _080B3702
|
|
.align 2, 0
|
|
_080B36E8: .4byte gSprites
|
|
_080B36EC:
|
|
ldr r0, _080B3714 @ =gSprites
|
|
lsls r1, r2, 4
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrh r0, [r4, 0x20]
|
|
negs r0, r0
|
|
_080B36FA:
|
|
strh r0, [r1, 0x24]
|
|
ldrh r0, [r4, 0x20]
|
|
negs r0, r0
|
|
_080B3700:
|
|
strh r0, [r1, 0x26]
|
|
_080B3702:
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x5
|
|
bne _080B379E
|
|
b _080B377A
|
|
.align 2, 0
|
|
_080B3714: .4byte gSprites
|
|
_080B3718:
|
|
ldrh r0, [r4, 0xA]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080B3728
|
|
ldrh r0, [r4, 0xE]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0xE]
|
|
b _080B372E
|
|
_080B3728:
|
|
ldrh r0, [r4, 0x10]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x10]
|
|
_080B372E:
|
|
ldrh r1, [r4, 0x10]
|
|
lsls r1, 8
|
|
ldrh r0, [r4, 0xE]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x20
|
|
bne _080B379E
|
|
movs r5, 0x8
|
|
adds r6, r4, 0
|
|
adds r6, 0x8
|
|
_080B3754:
|
|
lsls r0, r5, 1
|
|
adds r1, r6, r0
|
|
movs r2, 0
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0x40
|
|
beq _080B3770
|
|
adds r1, r0, 0
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _080B3784 @ =gSprites
|
|
adds r0, r1
|
|
bl DestroySprite
|
|
_080B3770:
|
|
adds r0, r5, 0x1
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
cmp r5, 0xC
|
|
bls _080B3754
|
|
_080B377A:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080B379E
|
|
.align 2, 0
|
|
_080B3784: .4byte gSprites
|
|
_080B3788:
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B379E:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B3618
|
|
|
|
thumb_func_start sub_80B37A4
|
|
sub_80B37A4: @ 80B37A4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x30
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
subs r0, 0xA
|
|
cmp r1, r0
|
|
ble _080B37CE
|
|
ldrh r0, [r4, 0x30]
|
|
movs r1, 0x1
|
|
ands r1, r0
|
|
adds r3, r4, 0
|
|
adds r3, 0x3E
|
|
lsls r1, 2
|
|
ldrb r2, [r3]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
_080B37CE:
|
|
movs r0, 0x30
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
cmp r1, r0
|
|
bne _080B37E0
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080B37E0:
|
|
ldrh r0, [r4, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x30]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B37A4
|
|
|
|
thumb_func_start sub_80B37EC
|
|
sub_80B37EC: @ 80B37EC
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldr r6, _080B3828 @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
bne _080B3818
|
|
ldr r4, _080B382C @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl 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]
|
|
_080B3818:
|
|
ldrh r0, [r6, 0x2]
|
|
strh r0, [r5, 0x2E]
|
|
ldr r0, _080B3830 @ =sub_80B37A4
|
|
str r0, [r5, 0x1C]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B3828: .4byte gBattleAnimArgs
|
|
_080B382C: .4byte gBattleAnimAttacker
|
|
_080B3830: .4byte sub_80B37A4
|
|
thumb_func_end sub_80B37EC
|
|
|
|
thumb_func_start sub_80B3834
|
|
sub_80B3834: @ 80B3834
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080B3890 @ =gTasks
|
|
adds r5, r1, r0
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B38D8
|
|
ldr r0, _080B3894 @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0x1
|
|
bne _080B38A4
|
|
ldr r0, _080B3898 @ =0x0000fff6
|
|
strh r0, [r5, 0x1C]
|
|
ldr r4, _080B389C @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x5
|
|
bl sub_8076B2C
|
|
subs r0, 0x8
|
|
strh r0, [r5, 0x1E]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
strh r0, [r5, 0x20]
|
|
ldr r4, _080B38A0 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x5
|
|
bl sub_8076B2C
|
|
subs r0, 0x8
|
|
strh r0, [r5, 0x22]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
b _080B3962
|
|
.align 2, 0
|
|
_080B3890: .4byte gTasks
|
|
_080B3894: .4byte gBattleAnimArgs
|
|
_080B3898: .4byte 0x0000fff6
|
|
_080B389C: .4byte gBattleAnimTarget
|
|
_080B38A0: .4byte gBattleAnimAttacker
|
|
_080B38A4:
|
|
movs r0, 0xA
|
|
strh r0, [r5, 0x1C]
|
|
ldr r4, _080B38D0 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x4
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
strh r0, [r5, 0x1E]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8076B2C
|
|
subs r0, 0x8
|
|
strh r0, [r5, 0x20]
|
|
ldr r4, _080B38D4 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x4
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
b _080B3956
|
|
.align 2, 0
|
|
_080B38D0: .4byte gBattleAnimAttacker
|
|
_080B38D4: .4byte gBattleAnimTarget
|
|
_080B38D8:
|
|
ldr r0, _080B391C @ =gBattleAnimArgs
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0x1
|
|
bne _080B392C
|
|
ldr r0, _080B3920 @ =0x0000fff6
|
|
strh r0, [r5, 0x1C]
|
|
ldr r4, _080B3924 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x4
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
strh r0, [r5, 0x1E]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
strh r0, [r5, 0x20]
|
|
ldr r4, _080B3928 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x4
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
strh r0, [r5, 0x22]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_8076B2C
|
|
adds r0, 0x8
|
|
b _080B3962
|
|
.align 2, 0
|
|
_080B391C: .4byte gBattleAnimArgs
|
|
_080B3920: .4byte 0x0000fff6
|
|
_080B3924: .4byte gBattleAnimTarget
|
|
_080B3928: .4byte gBattleAnimAttacker
|
|
_080B392C:
|
|
movs r0, 0xA
|
|
strh r0, [r5, 0x1C]
|
|
ldr r4, _080B3974 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x5
|
|
bl sub_8076B2C
|
|
subs r0, 0x8
|
|
strh r0, [r5, 0x1E]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8076B2C
|
|
subs r0, 0x8
|
|
strh r0, [r5, 0x20]
|
|
ldr r4, _080B3978 @ =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x5
|
|
bl sub_8076B2C
|
|
subs r0, 0x8
|
|
_080B3956:
|
|
strh r0, [r5, 0x22]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl sub_8076B2C
|
|
subs r0, 0x8
|
|
_080B3962:
|
|
strh r0, [r5, 0x24]
|
|
movs r0, 0x6
|
|
strh r0, [r5, 0xA]
|
|
ldr r0, _080B397C @ =sub_80B3980
|
|
str r0, [r5]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B3974: .4byte gBattleAnimAttacker
|
|
_080B3978: .4byte gBattleAnimTarget
|
|
_080B397C: .4byte sub_80B3980
|
|
thumb_func_end sub_80B3834
|
|
|
|
thumb_func_start sub_80B3980
|
|
sub_80B3980: @ 80B3980
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _080B39A0 @ =gTasks
|
|
adds r5, r0, r1
|
|
movs r0, 0x8
|
|
ldrsh r1, [r5, r0]
|
|
cmp r1, 0
|
|
beq _080B39A4
|
|
cmp r1, 0x1
|
|
beq _080B3A18
|
|
b _080B3A2C
|
|
.align 2, 0
|
|
_080B39A0: .4byte gTasks
|
|
_080B39A4:
|
|
ldrh r0, [r5, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x6
|
|
ble _080B3A2C
|
|
strh r1, [r5, 0xA]
|
|
ldr r0, _080B3A10 @ =gUnknown_83E7114
|
|
movs r2, 0x1E
|
|
ldrsh r1, [r5, r2]
|
|
movs r3, 0x20
|
|
ldrsh r2, [r5, r3]
|
|
movs r3, 0
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0x40
|
|
beq _080B39F8
|
|
ldr r0, _080B3A14 @ =gSprites
|
|
lsls r4, r1, 4
|
|
adds r4, r1
|
|
lsls r4, 2
|
|
adds r4, r0
|
|
movs r0, 0x10
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r5, 0x22]
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r5, 0x24]
|
|
strh r0, [r4, 0x36]
|
|
ldrh r0, [r5, 0x1C]
|
|
strh r0, [r4, 0x38]
|
|
adds r0, r4, 0
|
|
bl sub_8075068
|
|
ldrb r0, [r5, 0xC]
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
adds r0, r4, 0
|
|
bl StartSpriteAffineAnim
|
|
_080B39F8:
|
|
ldrh r0, [r5, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0xC]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xC
|
|
bne _080B3A2C
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
b _080B3A2C
|
|
.align 2, 0
|
|
_080B3A10: .4byte gUnknown_83E7114
|
|
_080B3A14: .4byte gSprites
|
|
_080B3A18:
|
|
ldrh r0, [r5, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x11
|
|
ble _080B3A2C
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B3A2C:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B3980
|
|
|
|
thumb_func_start sub_80B3A34
|
|
sub_80B3A34: @ 80B3A34
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl AnimateBallThrow
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B3A52
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
bl FreeOamMatrix
|
|
adds r0, r4, 0
|
|
bl DestroySprite
|
|
_080B3A52:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B3A34
|
|
|
|
thumb_func_start sub_80B3A58
|
|
sub_80B3A58: @ 80B3A58
|
|
push {r4-r6,lr}
|
|
sub sp, 0xC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, _080B3A90 @ =gTasks
|
|
adds r4, r1, r0
|
|
ldr r0, _080B3A94 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl sub_807492C
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
adds r0, r1, 0
|
|
subs r0, 0x20
|
|
strh r0, [r4, 0x24]
|
|
ldr r0, _080B3A98 @ =gBattleAnimArgs
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
cmp r0, 0x1
|
|
beq _080B3AAE
|
|
cmp r0, 0x1
|
|
bgt _080B3A9C
|
|
cmp r0, 0
|
|
beq _080B3AA2
|
|
b _080B3ACA
|
|
.align 2, 0
|
|
_080B3A90: .4byte gTasks
|
|
_080B3A94: .4byte gBattleAnimTarget
|
|
_080B3A98: .4byte gBattleAnimArgs
|
|
_080B3A9C:
|
|
cmp r0, 0x2
|
|
beq _080B3ABA
|
|
b _080B3ACA
|
|
_080B3AA2:
|
|
movs r0, 0x2
|
|
strh r0, [r4, 0x1E]
|
|
movs r0, 0x5
|
|
strh r0, [r4, 0x20]
|
|
movs r0, 0x40
|
|
b _080B3AC2
|
|
_080B3AAE:
|
|
movs r0, 0x2
|
|
strh r0, [r4, 0x1E]
|
|
movs r0, 0x5
|
|
strh r0, [r4, 0x20]
|
|
movs r0, 0xC0
|
|
b _080B3AC2
|
|
_080B3ABA:
|
|
movs r0, 0x4
|
|
strh r0, [r4, 0x1E]
|
|
strh r0, [r4, 0x20]
|
|
movs r0, 0
|
|
_080B3AC2:
|
|
strh r0, [r4, 0x22]
|
|
adds r0, r1, 0
|
|
adds r0, 0x20
|
|
strh r0, [r4, 0x26]
|
|
_080B3ACA:
|
|
movs r1, 0x24
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bge _080B3AD6
|
|
movs r0, 0
|
|
strh r0, [r4, 0x24]
|
|
_080B3AD6:
|
|
ldr r0, _080B3AF0 @ =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl sub_80768B0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080B3AFC
|
|
ldr r0, _080B3AF4 @ =gBattle_BG1_X
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, 0x1C]
|
|
ldr r0, _080B3AF8 @ =0x04000014
|
|
b _080B3B04
|
|
.align 2, 0
|
|
_080B3AF0: .4byte gBattleAnimTarget
|
|
_080B3AF4: .4byte gBattle_BG1_X
|
|
_080B3AF8: .4byte 0x04000014
|
|
_080B3AFC:
|
|
ldr r0, _080B3B64 @ =gBattle_BG2_X
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, 0x1C]
|
|
ldr r0, _080B3B68 @ =0x04000018
|
|
_080B3B04:
|
|
str r0, [sp]
|
|
ldrh r1, [r4, 0x24]
|
|
lsls r3, r1, 16
|
|
asrs r1, r3, 16
|
|
movs r2, 0x24
|
|
ldrsh r0, [r4, r2]
|
|
adds r0, 0x40
|
|
cmp r1, r0
|
|
bgt _080B3B3E
|
|
ldr r5, _080B3B6C @ =gScanlineEffectRegBuffers
|
|
movs r0, 0xF0
|
|
lsls r0, 3
|
|
adds r6, r5, r0
|
|
_080B3B1E:
|
|
asrs r3, 16
|
|
lsls r1, r3, 1
|
|
adds r2, r1, r5
|
|
ldrh r0, [r4, 0x1C]
|
|
strh r0, [r2]
|
|
adds r1, r6
|
|
ldrh r0, [r4, 0x1C]
|
|
strh r0, [r1]
|
|
adds r3, 0x1
|
|
lsls r3, 16
|
|
asrs r1, r3, 16
|
|
movs r2, 0x24
|
|
ldrsh r0, [r4, r2]
|
|
adds r0, 0x40
|
|
cmp r1, r0
|
|
ble _080B3B1E
|
|
_080B3B3E:
|
|
ldr r0, _080B3B70 @ =0xa2600001
|
|
str r0, [sp, 0x4]
|
|
mov r1, sp
|
|
movs r2, 0
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x8]
|
|
mov r0, sp
|
|
strb r2, [r0, 0x9]
|
|
ldr r0, [sp]
|
|
ldr r1, [sp, 0x4]
|
|
ldr r2, [sp, 0x8]
|
|
bl ScanlineEffect_SetParams
|
|
ldr r0, _080B3B74 @ =sub_80B3B78
|
|
str r0, [r4]
|
|
add sp, 0xC
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B3B64: .4byte gBattle_BG2_X
|
|
_080B3B68: .4byte 0x04000018
|
|
_080B3B6C: .4byte gScanlineEffectRegBuffers
|
|
_080B3B70: .4byte 0xa2600001
|
|
_080B3B74: .4byte sub_80B3B78
|
|
thumb_func_end sub_80B3A58
|
|
|
|
thumb_func_start sub_80B3B78
|
|
sub_80B3B78: @ 80B3B78
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
ldr r1, _080B3BA0 @ =gTasks
|
|
adds r5, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x1
|
|
beq _080B3C52
|
|
cmp r0, 0x1
|
|
bgt _080B3BA4
|
|
cmp r0, 0
|
|
beq _080B3BAA
|
|
b _080B3C6A
|
|
.align 2, 0
|
|
_080B3BA0: .4byte gTasks
|
|
_080B3BA4:
|
|
cmp r0, 0x2
|
|
beq _080B3C64
|
|
b _080B3C6A
|
|
_080B3BAA:
|
|
ldrh r3, [r5, 0x22]
|
|
ldrh r4, [r5, 0x24]
|
|
movs r2, 0x24
|
|
ldrsh r1, [r5, r2]
|
|
movs r2, 0x26
|
|
ldrsh r0, [r5, r2]
|
|
cmp r1, r0
|
|
bgt _080B3C42
|
|
ldr r0, _080B3BF4 @ =gSineTable
|
|
mov r9, r0
|
|
movs r7, 0x3
|
|
ldr r1, _080B3BF8 @ =gScanlineEffectRegBuffers
|
|
mov r12, r1
|
|
movs r2, 0xF0
|
|
lsls r2, 3
|
|
add r2, r12
|
|
mov r8, r2
|
|
_080B3BCC:
|
|
lsls r2, r3, 16
|
|
asrs r0, r2, 15
|
|
add r0, r9
|
|
movs r3, 0
|
|
ldrsh r0, [r0, r3]
|
|
movs r3, 0x20
|
|
ldrsh r1, [r5, r3]
|
|
asrs r0, r1
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
asrs r3, r0, 16
|
|
adds r6, r2, 0
|
|
cmp r3, 0
|
|
ble _080B3BFC
|
|
ldrh r1, [r5, 0xA]
|
|
adds r0, r7, 0
|
|
ands r0, r1
|
|
adds r0, r3, r0
|
|
b _080B3C08
|
|
.align 2, 0
|
|
_080B3BF4: .4byte gSineTable
|
|
_080B3BF8: .4byte gScanlineEffectRegBuffers
|
|
_080B3BFC:
|
|
cmp r3, 0
|
|
bge _080B3C0C
|
|
ldrh r1, [r5, 0xA]
|
|
adds r0, r7, 0
|
|
ands r0, r1
|
|
subs r0, r3, r0
|
|
_080B3C08:
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
_080B3C0C:
|
|
lsls r2, r4, 16
|
|
asrs r2, 16
|
|
lsls r3, r2, 1
|
|
mov r0, r12
|
|
adds r4, r3, r0
|
|
ldrh r0, [r5, 0x1C]
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
adds r0, r1, r0
|
|
strh r0, [r4]
|
|
add r3, r8
|
|
ldrh r0, [r5, 0x1C]
|
|
adds r1, r0
|
|
strh r1, [r3]
|
|
asrs r0, r6, 16
|
|
ldrh r1, [r5, 0x1E]
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
lsrs r3, r0, 16
|
|
adds r2, 0x1
|
|
lsls r2, 16
|
|
lsrs r4, r2, 16
|
|
asrs r2, 16
|
|
movs r1, 0x26
|
|
ldrsh r0, [r5, r1]
|
|
cmp r2, r0
|
|
ble _080B3BCC
|
|
_080B3C42:
|
|
ldrh r0, [r5, 0xA]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0xA]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x17
|
|
ble _080B3C6A
|
|
b _080B3C58
|
|
_080B3C52:
|
|
ldr r1, _080B3C60 @ =gScanlineEffect
|
|
movs r0, 0x3
|
|
strb r0, [r1, 0x15]
|
|
_080B3C58:
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
b _080B3C6A
|
|
.align 2, 0
|
|
_080B3C60: .4byte gScanlineEffect
|
|
_080B3C64:
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B3C6A:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B3B78
|
|
|
|
thumb_func_start sub_80B3C78
|
|
sub_80B3C78: @ 80B3C78
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
mov r8, r4
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
ldr r1, _080B3CAC @ =gTasks
|
|
adds r7, r0, r1
|
|
bl AllocOamMatrix
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
mov r10, r5
|
|
adds r6, r5, 0
|
|
cmp r6, 0xFF
|
|
bne _080B3CB0
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
b _080B3D5A
|
|
.align 2, 0
|
|
_080B3CAC: .4byte gTasks
|
|
_080B3CB0:
|
|
ldr r1, _080B3CD4 @ =gBattleAnimArgs
|
|
ldrb r0, [r1]
|
|
bl duplicate_obj_of_side_rel2move_in_transparent_mode
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
mov r9, r1
|
|
asrs r0, 16
|
|
cmp r0, 0
|
|
bge _080B3CD8
|
|
adds r0, r5, 0
|
|
bl FreeOamMatrix
|
|
mov r0, r8
|
|
bl DestroyAnimVisualTask
|
|
b _080B3D5A
|
|
.align 2, 0
|
|
_080B3CD4: .4byte gBattleAnimArgs
|
|
_080B3CD8:
|
|
ldr r2, _080B3D68 @ =gSprites
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
adds r0, r2, 0
|
|
adds r0, 0x1C
|
|
adds r0, r4, r0
|
|
ldr r1, _080B3D6C @ =SpriteCallbackDummy
|
|
str r1, [r0]
|
|
adds r4, r2
|
|
ldrb r0, [r4, 0x1]
|
|
movs r1, 0x3
|
|
orrs r0, r1
|
|
strb r0, [r4, 0x1]
|
|
movs r0, 0x1F
|
|
ands r6, r0
|
|
lsls r2, r6, 1
|
|
ldrb r1, [r4, 0x3]
|
|
movs r0, 0x3F
|
|
negs r0, r0
|
|
ands r0, r1
|
|
orrs r0, r2
|
|
strb r0, [r4, 0x3]
|
|
adds r2, r4, 0
|
|
adds r2, 0x2C
|
|
ldrb r0, [r2]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
adds r1, r4, 0
|
|
adds r1, 0x43
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
mov r1, r9
|
|
lsls r0, r1, 24
|
|
lsrs r0, 24
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r1, r2, 0
|
|
movs r3, 0
|
|
bl SetSpriteRotScale
|
|
ldrb r3, [r4, 0x1]
|
|
lsrs r1, r3, 6
|
|
ldrb r2, [r4, 0x3]
|
|
lsrs r2, 6
|
|
lsls r3, 30
|
|
lsrs r3, 30
|
|
adds r0, r4, 0
|
|
bl CalcCenterToCornerVec
|
|
ldr r1, _080B3D70 @ =gBattleAnimArgs
|
|
ldrb r0, [r1]
|
|
bl GetAnimBankSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r7, 0x22]
|
|
mov r0, r10
|
|
strh r0, [r7, 0x24]
|
|
mov r1, r9
|
|
strh r1, [r7, 0x26]
|
|
ldr r0, _080B3D74 @ =sub_80B3D78
|
|
str r0, [r7]
|
|
_080B3D5A:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080B3D68: .4byte gSprites
|
|
_080B3D6C: .4byte SpriteCallbackDummy
|
|
_080B3D70: .4byte gBattleAnimArgs
|
|
_080B3D74: .4byte sub_80B3D78
|
|
thumb_func_end sub_80B3C78
|
|
|
|
thumb_func_start sub_80B3D78
|
|
sub_80B3D78: @ 80B3D78
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, _080B3D9C @ =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _080B3DFC
|
|
cmp r0, 0x1
|
|
bgt _080B3DA0
|
|
cmp r0, 0
|
|
beq _080B3DAA
|
|
b _080B3E7C
|
|
.align 2, 0
|
|
_080B3D9C: .4byte gTasks
|
|
_080B3DA0:
|
|
cmp r0, 0x2
|
|
beq _080B3E4C
|
|
cmp r0, 0x3
|
|
beq _080B3E6C
|
|
b _080B3E7C
|
|
_080B3DAA:
|
|
ldrh r0, [r4, 0xA]
|
|
adds r0, 0x4
|
|
strh r0, [r4, 0xA]
|
|
ldr r1, _080B3DF8 @ =gSineTable
|
|
movs r2, 0xA
|
|
ldrsh r0, [r4, r2]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
lsls r1, 16
|
|
asrs r1, 17
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r0, r2, 0
|
|
subs r0, r1
|
|
strh r0, [r4, 0xC]
|
|
ldrh r0, [r4, 0x26]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0xC
|
|
ldrsh r2, [r4, r1]
|
|
adds r1, r2, 0
|
|
movs r3, 0
|
|
bl SetSpriteRotScale
|
|
ldrh r0, [r4, 0x26]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x22]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
bl sub_8076494
|
|
movs r2, 0xA
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0x30
|
|
bne _080B3E7C
|
|
b _080B3E5E
|
|
.align 2, 0
|
|
_080B3DF8: .4byte gSineTable
|
|
_080B3DFC:
|
|
ldrh r0, [r4, 0xA]
|
|
subs r0, 0x4
|
|
strh r0, [r4, 0xA]
|
|
ldr r1, _080B3E48 @ =gSineTable
|
|
movs r2, 0xA
|
|
ldrsh r0, [r4, r2]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
lsls r1, 16
|
|
asrs r1, 17
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r0, r2, 0
|
|
subs r0, r1
|
|
strh r0, [r4, 0xC]
|
|
ldrh r0, [r4, 0x26]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0xC
|
|
ldrsh r2, [r4, r1]
|
|
adds r1, r2, 0
|
|
movs r3, 0
|
|
bl SetSpriteRotScale
|
|
ldrh r0, [r4, 0x26]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x22]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
bl sub_8076494
|
|
movs r2, 0xA
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bne _080B3E7C
|
|
b _080B3E5E
|
|
.align 2, 0
|
|
_080B3E48: .4byte gSineTable
|
|
_080B3E4C:
|
|
movs r0, 0x26
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _080B3E68 @ =gSprites
|
|
adds r0, r1
|
|
bl obj_delete_but_dont_free_vram
|
|
_080B3E5E:
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
b _080B3E7C
|
|
.align 2, 0
|
|
_080B3E68: .4byte gSprites
|
|
_080B3E6C:
|
|
ldrh r0, [r4, 0x24]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl FreeOamMatrix
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080B3E7C:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B3D78
|
|
|
|
thumb_func_start sub_80B3E84
|
|
sub_80B3E84: @ 80B3E84
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0x1
|
|
beq _080B3EFC
|
|
cmp r0, 0x1
|
|
bgt _080B3E9A
|
|
cmp r0, 0
|
|
beq _080B3EA4
|
|
b _080B3FA4
|
|
_080B3E9A:
|
|
cmp r0, 0x2
|
|
beq _080B3F2E
|
|
cmp r0, 0x3
|
|
beq _080B3F8E
|
|
b _080B3FA4
|
|
_080B3EA4:
|
|
ldr r4, _080B3EF8 @ =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl 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
|
|
strh r0, [r5, 0x22]
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080B3ED2
|
|
ldrh r0, [r5, 0x22]
|
|
adds r0, 0xC
|
|
strh r0, [r5, 0x22]
|
|
_080B3ED2:
|
|
movs r0, 0x8
|
|
strh r0, [r5, 0x30]
|
|
movs r1, 0xFD
|
|
lsls r1, 6
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
ldrh r0, [r5, 0x30]
|
|
movs r1, 0x10
|
|
subs r1, r0
|
|
lsls r1, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
b _080B3F26
|
|
.align 2, 0
|
|
_080B3EF8: .4byte gBattleAnimAttacker
|
|
_080B3EFC:
|
|
adds r0, r5, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080B3FA4
|
|
movs r0, 0x40
|
|
negs r0, r0
|
|
bl sub_8073A44
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
movs r0, 0xC4
|
|
bl PlaySE12WithPanning
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl ChangeSpriteAffineAnim
|
|
_080B3F26:
|
|
ldrh r0, [r5, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
b _080B3FA4
|
|
_080B3F2E:
|
|
ldrh r0, [r5, 0x32]
|
|
adds r1, r0, 0x1
|
|
strh r1, [r5, 0x32]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x1
|
|
ble _080B3F72
|
|
movs r0, 0
|
|
strh r0, [r5, 0x32]
|
|
ldrh r1, [r5, 0x30]
|
|
subs r1, 0x1
|
|
strh r1, [r5, 0x30]
|
|
movs r0, 0x10
|
|
subs r0, r1
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
movs r1, 0x30
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
bne _080B3F72
|
|
ldrh r0, [r5, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r5, 0x2E]
|
|
adds r2, r5, 0
|
|
adds r2, 0x3E
|
|
ldrb r0, [r2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
_080B3F72:
|
|
movs r0, 0xE0
|
|
lsls r0, 2
|
|
adds r2, r0, 0
|
|
ldrh r1, [r5, 0x34]
|
|
adds r2, r1
|
|
lsls r1, r2, 16
|
|
asrs r1, 24
|
|
ldrh r0, [r5, 0x26]
|
|
subs r0, r1
|
|
strh r0, [r5, 0x26]
|
|
movs r0, 0xFF
|
|
ands r2, r0
|
|
strh r2, [r5, 0x34]
|
|
b _080B3FA4
|
|
_080B3F8E:
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
adds r0, r5, 0
|
|
bl DestroyAnimSprite
|
|
_080B3FA4:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80B3E84
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|