mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-25 19:24:16 +01:00
4e63a52832
decompile battle_anim_sound_tasks
6527 lines
100 KiB
ArmAsm
6527 lines
100 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start GetBattlerSpriteCoord
|
|
GetBattlerSpriteCoord: @ 80A5C6C
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r1, 24
|
|
lsrs r4, r1, 24
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A5C8A
|
|
cmp r4, 0x3
|
|
bne _080A5C8A
|
|
cmp r5, 0x3
|
|
bne _080A5C8A
|
|
movs r4, 0x1
|
|
_080A5C8A:
|
|
cmp r4, 0x4
|
|
bhi _080A5D00
|
|
lsls r0, r4, 2
|
|
ldr r1, =_080A5C9C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_080A5C9C:
|
|
.4byte _080A5CB0
|
|
.4byte _080A5CD8
|
|
.4byte _080A5CB0
|
|
.4byte _080A5D00
|
|
.4byte _080A5D00
|
|
_080A5CB0:
|
|
ldr r4, =gUnknown_08525F58
|
|
adds r0, r5, 0
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
lsrs r0, 22
|
|
ldr r1, =gBattleTypeFlags
|
|
ldr r1, [r1]
|
|
movs r2, 0x1
|
|
ands r1, r2
|
|
lsls r1, 4
|
|
adds r0, r1
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
b _080A5DB0
|
|
.pool
|
|
_080A5CD8:
|
|
ldr r4, =gUnknown_08525F58
|
|
adds r0, r5, 0
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
lsrs r0, 22
|
|
ldr r1, =gBattleTypeFlags
|
|
ldr r1, [r1]
|
|
movs r2, 0x1
|
|
ands r1, r2
|
|
lsls r1, 4
|
|
adds r0, r1
|
|
adds r0, r4
|
|
ldrb r0, [r0, 0x1]
|
|
b _080A5DB0
|
|
.pool
|
|
_080A5D00:
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A5D28
|
|
ldr r0, =gContestResources
|
|
ldr r0, [r0]
|
|
ldr r2, [r0, 0x18]
|
|
ldrb r1, [r2, 0x4]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A5D24
|
|
ldrh r1, [r2, 0x2]
|
|
b _080A5D9A
|
|
.pool
|
|
_080A5D24:
|
|
ldrh r1, [r2]
|
|
b _080A5D9A
|
|
_080A5D28:
|
|
adds r0, r5, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A5D60
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r5, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _080A5D98
|
|
ldr r1, =gBattlerPartyIndexes
|
|
lsls r0, r5, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, =gEnemyParty
|
|
b _080A5D7E
|
|
.pool
|
|
_080A5D60:
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r5, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _080A5D98
|
|
ldr r1, =gBattlerPartyIndexes
|
|
lsls r0, r5, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, =gPlayerParty
|
|
_080A5D7E:
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
b _080A5D9A
|
|
.pool
|
|
_080A5D98:
|
|
ldrh r1, [r1, 0x2]
|
|
_080A5D9A:
|
|
cmp r4, 0x3
|
|
bne _080A5DA4
|
|
adds r0, r5, 0
|
|
movs r2, 0x1
|
|
b _080A5DA8
|
|
_080A5DA4:
|
|
adds r0, r5, 0
|
|
movs r2, 0
|
|
_080A5DA8:
|
|
bl sub_80A600C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
_080A5DB0:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetBattlerSpriteCoord
|
|
|
|
thumb_func_start sub_80A5DB8
|
|
sub_80A5DB8: @ 80A5DB8
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r1, 16
|
|
lsrs r5, r1, 16
|
|
adds r0, r4, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A5DDA
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A5DDA
|
|
b _080A5EC8
|
|
_080A5DDA:
|
|
cmp r5, 0xC9
|
|
bne _080A5E90
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A5E04
|
|
ldr r0, =gContestResources
|
|
ldr r0, [r0]
|
|
ldr r2, [r0, 0x18]
|
|
ldrb r1, [r2, 0x4]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A5E00
|
|
ldr r2, [r2, 0x10]
|
|
b _080A5E42
|
|
.pool
|
|
_080A5E00:
|
|
ldr r2, [r2, 0x8]
|
|
b _080A5E42
|
|
_080A5E04:
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
lsls r1, r4, 2
|
|
adds r0, r1, r0
|
|
ldrh r0, [r0, 0x2]
|
|
cmp r0, 0
|
|
bne _080A5E3C
|
|
ldr r1, =gBattlerPartyIndexes
|
|
lsls r0, r4, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0
|
|
bl GetMonData
|
|
adds r2, r0, 0
|
|
b _080A5E42
|
|
.pool
|
|
_080A5E3C:
|
|
ldr r0, =gTransformedPersonalities
|
|
adds r0, r1, r0
|
|
ldr r2, [r0]
|
|
_080A5E42:
|
|
movs r0, 0xC0
|
|
lsls r0, 18
|
|
ands r0, r2
|
|
lsrs r0, 18
|
|
movs r1, 0xC0
|
|
lsls r1, 10
|
|
ands r1, r2
|
|
lsrs r1, 12
|
|
orrs r0, r1
|
|
movs r1, 0xC0
|
|
lsls r1, 2
|
|
ands r1, r2
|
|
lsrs r1, 6
|
|
orrs r0, r1
|
|
movs r1, 0x3
|
|
ands r1, r2
|
|
orrs r0, r1
|
|
movs r1, 0x1C
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0
|
|
bne _080A5E7C
|
|
adds r0, r5, 0
|
|
b _080A5E86
|
|
.pool
|
|
_080A5E7C:
|
|
movs r1, 0xCE
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
_080A5E86:
|
|
ldr r1, =gUnknown_083021D8
|
|
lsls r0, 2
|
|
b _080A5F90
|
|
.pool
|
|
_080A5E90:
|
|
ldr r0, =0x00000181
|
|
cmp r5, r0
|
|
bne _080A5EB0
|
|
ldr r0, =gUnknown_08525F8C
|
|
ldr r1, =gBattleMonForms
|
|
adds r1, r4, r1
|
|
ldrb r1, [r1]
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
b _080A5F94
|
|
.pool
|
|
_080A5EB0:
|
|
movs r0, 0xCE
|
|
lsls r0, 1
|
|
cmp r5, r0
|
|
bls _080A5EC0
|
|
ldr r0, =gUnknown_083021D8
|
|
b _080A5F92
|
|
.pool
|
|
_080A5EC0:
|
|
ldr r1, =gUnknown_083021D8
|
|
b _080A5F8E
|
|
.pool
|
|
_080A5EC8:
|
|
cmp r5, 0xC9
|
|
bne _080A5F58
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
lsls r1, r4, 2
|
|
adds r0, r1, r0
|
|
ldrh r0, [r0, 0x2]
|
|
cmp r0, 0
|
|
bne _080A5F04
|
|
ldr r1, =gBattlerPartyIndexes
|
|
lsls r0, r4, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0
|
|
bl GetMonData
|
|
adds r2, r0, 0
|
|
b _080A5F0A
|
|
.pool
|
|
_080A5F04:
|
|
ldr r0, =gTransformedPersonalities
|
|
adds r0, r1, r0
|
|
ldr r2, [r0]
|
|
_080A5F0A:
|
|
movs r0, 0xC0
|
|
lsls r0, 18
|
|
ands r0, r2
|
|
lsrs r0, 18
|
|
movs r1, 0xC0
|
|
lsls r1, 10
|
|
ands r1, r2
|
|
lsrs r1, 12
|
|
orrs r0, r1
|
|
movs r1, 0xC0
|
|
lsls r1, 2
|
|
ands r1, r2
|
|
lsrs r1, 6
|
|
orrs r0, r1
|
|
movs r1, 0x3
|
|
ands r1, r2
|
|
orrs r0, r1
|
|
movs r1, 0x1C
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0
|
|
bne _080A5F44
|
|
adds r0, r5, 0
|
|
b _080A5F4E
|
|
.pool
|
|
_080A5F44:
|
|
movs r1, 0xCE
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
_080A5F4E:
|
|
ldr r1, =gMonFrontPicCoords
|
|
lsls r0, 2
|
|
b _080A5F90
|
|
.pool
|
|
_080A5F58:
|
|
ldr r0, =0x00000181
|
|
cmp r5, r0
|
|
bne _080A5F7C
|
|
ldr r0, =gCastformFrontSpriteCoords
|
|
ldr r1, =gBattleMonForms
|
|
adds r1, r4, r1
|
|
ldrb r1, [r1]
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
b _080A5F94
|
|
.pool
|
|
_080A5F7C:
|
|
movs r0, 0xCE
|
|
lsls r0, 1
|
|
cmp r5, r0
|
|
bls _080A5F8C
|
|
ldr r0, =gMonFrontPicCoords
|
|
b _080A5F92
|
|
.pool
|
|
_080A5F8C:
|
|
ldr r1, =gMonFrontPicCoords
|
|
_080A5F8E:
|
|
lsls r0, r5, 2
|
|
_080A5F90:
|
|
adds r0, r1
|
|
_080A5F92:
|
|
ldrb r0, [r0, 0x1]
|
|
_080A5F94:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_80A5DB8
|
|
|
|
thumb_func_start sub_80A5FA0
|
|
sub_80A5FA0: @ 80A5FA0
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r1, 16
|
|
lsrs r4, r1, 16
|
|
adds r7, r4, 0
|
|
movs r5, 0
|
|
adds r0, r6, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080A5FFE
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A5FFE
|
|
ldr r0, =0x00000181
|
|
cmp r4, r0
|
|
bne _080A5FE8
|
|
ldr r0, =gUnknown_08525F88
|
|
ldr r1, =gBattleMonForms
|
|
adds r1, r6, r1
|
|
ldrb r1, [r1]
|
|
adds r1, r0
|
|
ldrb r5, [r1]
|
|
b _080A5FFE
|
|
.pool
|
|
_080A5FE8:
|
|
movs r0, 0xCE
|
|
lsls r0, 1
|
|
cmp r4, r0
|
|
bls _080A5FF8
|
|
ldr r0, =gEnemyMonElevation
|
|
b _080A5FFC
|
|
.pool
|
|
_080A5FF8:
|
|
ldr r0, =gEnemyMonElevation
|
|
adds r0, r7, r0
|
|
_080A5FFC:
|
|
ldrb r5, [r0]
|
|
_080A5FFE:
|
|
adds r0, r5, 0
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_80A5FA0
|
|
|
|
thumb_func_start sub_80A600C
|
|
sub_80A600C: @ 80A600C
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r1, 16
|
|
lsrs r5, r1, 16
|
|
lsls r2, 24
|
|
lsrs r7, r2, 24
|
|
adds r0, r6, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A6030
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A603E
|
|
_080A6030:
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl sub_80A5DB8
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
b _080A605C
|
|
_080A603E:
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl sub_80A5DB8
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl sub_80A5FA0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
subs r0, r4, r0
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
_080A605C:
|
|
adds r0, r6, 0
|
|
bl GetBattlerPosition
|
|
ldr r3, =gUnknown_08525F58
|
|
lsls r0, 24
|
|
lsrs r0, 22
|
|
ldr r1, =gBattleTypeFlags
|
|
ldr r1, [r1]
|
|
movs r2, 0x1
|
|
ands r1, r2
|
|
lsls r1, 4
|
|
adds r0, r1
|
|
adds r0, r3
|
|
ldrb r0, [r0, 0x1]
|
|
adds r0, r4
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r7, 0
|
|
beq _080A609C
|
|
adds r0, r6, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A6096
|
|
adds r0, r4, 0
|
|
adds r0, 0x8
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
_080A6096:
|
|
cmp r4, 0x68
|
|
bls _080A609C
|
|
movs r4, 0x68
|
|
_080A609C:
|
|
adds r0, r4, 0
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_80A600C
|
|
|
|
thumb_func_start sub_80A60AC
|
|
sub_80A60AC: @ 80A60AC
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
movs r0, 0xFD
|
|
lsls r0, 24
|
|
adds r1, r0
|
|
lsrs r1, 24
|
|
cmp r1, 0x1
|
|
bhi _080A6126
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A60E8
|
|
ldr r0, =gContestResources
|
|
ldr r0, [r0]
|
|
ldr r2, [r0, 0x18]
|
|
ldrb r1, [r2, 0x4]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A60E4
|
|
ldrh r1, [r2, 0x2]
|
|
b _080A610E
|
|
.pool
|
|
_080A60E4:
|
|
ldrh r1, [r2]
|
|
b _080A610E
|
|
_080A60E8:
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r4, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _080A610C
|
|
ldr r1, =gAnimBattlerSpecies
|
|
lsls r0, r4, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
b _080A610E
|
|
.pool
|
|
_080A610C:
|
|
ldrh r1, [r1, 0x2]
|
|
_080A610E:
|
|
cmp r5, 0x3
|
|
bne _080A611C
|
|
adds r0, r4, 0
|
|
movs r2, 0x1
|
|
bl sub_80A600C
|
|
b _080A612E
|
|
_080A611C:
|
|
adds r0, r4, 0
|
|
movs r2, 0
|
|
bl sub_80A600C
|
|
b _080A612E
|
|
_080A6126:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl GetBattlerSpriteCoord
|
|
_080A612E:
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A60AC
|
|
|
|
thumb_func_start GetBattlerSpriteDefault_Y
|
|
GetBattlerSpriteDefault_Y: @ 80A6138
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x4
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetBattlerSpriteDefault_Y
|
|
|
|
thumb_func_start GetSubstituteSpriteDefault_Y
|
|
GetSubstituteSpriteDefault_Y: @ 80A614C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r4, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A6170
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 8
|
|
movs r1, 0x80
|
|
lsls r1, 13
|
|
b _080A6180
|
|
_080A6170:
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 8
|
|
movs r1, 0x88
|
|
lsls r1, 13
|
|
_080A6180:
|
|
adds r0, r1
|
|
lsrs r0, 16
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetSubstituteSpriteDefault_Y
|
|
|
|
thumb_func_start sub_80A6190
|
|
sub_80A6190: @ 80A6190
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A6238
|
|
adds r0, r5, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A61E4
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r5, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _080A621C
|
|
ldr r1, =gBattlerPartyIndexes
|
|
lsls r0, r5, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, =gEnemyParty
|
|
b _080A6202
|
|
.pool
|
|
_080A61E4:
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r5, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _080A621C
|
|
ldr r1, =gBattlerPartyIndexes
|
|
lsls r0, r5, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, =gPlayerParty
|
|
_080A6202:
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
b _080A621E
|
|
.pool
|
|
_080A621C:
|
|
ldrh r4, [r1, 0x2]
|
|
_080A621E:
|
|
adds r0, r5, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A6238
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl sub_80A5FA0
|
|
subs r0, r6, r0
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
_080A6238:
|
|
adds r0, r6, 0
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A6190
|
|
|
|
thumb_func_start GetAnimBattlerSpriteId
|
|
GetAnimBattlerSpriteId: @ 80A6240
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r0, 0
|
|
cmp r0, 0
|
|
bne _080A6268
|
|
ldr r4, =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
bl IsBattlerSpritePresent
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A62B6
|
|
ldr r1, =gBattlerSpriteIds
|
|
ldrb r0, [r4]
|
|
b _080A62C6
|
|
.pool
|
|
_080A6268:
|
|
cmp r0, 0x1
|
|
bne _080A6288
|
|
ldr r4, =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
bl IsBattlerSpritePresent
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A62B6
|
|
ldr r1, =gBattlerSpriteIds
|
|
ldrb r0, [r4]
|
|
b _080A62C6
|
|
.pool
|
|
_080A6288:
|
|
cmp r1, 0x2
|
|
bne _080A62A4
|
|
ldr r5, =gBattleAnimAttacker
|
|
ldrb r0, [r5]
|
|
movs r4, 0x2
|
|
eors r0, r4
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A62B6
|
|
b _080A62C0
|
|
.pool
|
|
_080A62A4:
|
|
ldr r5, =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
movs r4, 0x2
|
|
eors r0, r4
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A62C0
|
|
_080A62B6:
|
|
movs r0, 0xFF
|
|
b _080A62CA
|
|
.pool
|
|
_080A62C0:
|
|
ldr r1, =gBattlerSpriteIds
|
|
ldrb r0, [r5]
|
|
eors r0, r4
|
|
_080A62C6:
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
_080A62CA:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end GetAnimBattlerSpriteId
|
|
|
|
thumb_func_start StoreSpriteCallbackInData6
|
|
StoreSpriteCallbackInData6: @ 80A62D4
|
|
strh r1, [r0, 0x3A]
|
|
lsrs r1, 16
|
|
strh r1, [r0, 0x3C]
|
|
bx lr
|
|
thumb_func_end StoreSpriteCallbackInData6
|
|
|
|
thumb_func_start sub_80A62DC
|
|
sub_80A62DC: @ 80A62DC
|
|
ldrh r2, [r0, 0x3A]
|
|
movs r3, 0x3C
|
|
ldrsh r1, [r0, r3]
|
|
lsls r1, 16
|
|
orrs r2, r1
|
|
str r2, [r0, 0x1C]
|
|
bx lr
|
|
thumb_func_end sub_80A62DC
|
|
|
|
thumb_func_start sub_80A62EC
|
|
sub_80A62EC: @ 80A62EC
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080A6340
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
movs r2, 0x30
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x30
|
|
ldrsh r1, [r4, r2]
|
|
bl Cos
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x32]
|
|
ldrh r2, [r4, 0x2E]
|
|
adds r1, r0, r2
|
|
strh r1, [r4, 0x2E]
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xFF
|
|
ble _080A632C
|
|
ldr r2, =0xffffff00
|
|
b _080A6334
|
|
.pool
|
|
_080A632C:
|
|
cmp r0, 0
|
|
bge _080A6338
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
_080A6334:
|
|
adds r0, r1, r2
|
|
strh r0, [r4, 0x2E]
|
|
_080A6338:
|
|
ldrh r0, [r4, 0x34]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x34]
|
|
b _080A6346
|
|
_080A6340:
|
|
adds r0, r4, 0
|
|
bl sub_80A62DC
|
|
_080A6346:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A62EC
|
|
|
|
thumb_func_start sub_80A634C
|
|
sub_80A634C: @ 80A634C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080A63BC
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
ldrh r1, [r4, 0x38]
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
ldrh r2, [r4, 0x30]
|
|
adds r1, r2
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl Sin
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
ldrh r1, [r4, 0x38]
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
ldrh r2, [r4, 0x30]
|
|
adds r1, r2
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl Cos
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x32]
|
|
ldrh r2, [r4, 0x2E]
|
|
adds r1, r0, r2
|
|
strh r1, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x36]
|
|
ldrh r2, [r4, 0x38]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x38]
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xFF
|
|
ble _080A63A8
|
|
ldr r2, =0xffffff00
|
|
b _080A63B0
|
|
.pool
|
|
_080A63A8:
|
|
cmp r0, 0
|
|
bge _080A63B4
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
_080A63B0:
|
|
adds r0, r1, r2
|
|
strh r0, [r4, 0x2E]
|
|
_080A63B4:
|
|
ldrh r0, [r4, 0x34]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x34]
|
|
b _080A63C2
|
|
_080A63BC:
|
|
adds r0, r4, 0
|
|
bl sub_80A62DC
|
|
_080A63C2:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A634C
|
|
|
|
thumb_func_start sub_80A63C8
|
|
sub_80A63C8: @ 80A63C8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080A6444
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
movs r2, 0x30
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x36
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x30
|
|
ldrsh r1, [r4, r2]
|
|
bl Cos
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x32]
|
|
ldrh r2, [r4, 0x2E]
|
|
adds r1, r0, r2
|
|
strh r1, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x38]
|
|
ldrh r2, [r4, 0x36]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x36]
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xFF
|
|
ble _080A6410
|
|
ldr r2, =0xffffff00
|
|
b _080A6418
|
|
.pool
|
|
_080A6410:
|
|
cmp r0, 0
|
|
bge _080A641C
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
_080A6418:
|
|
adds r0, r1, r2
|
|
strh r0, [r4, 0x2E]
|
|
_080A641C:
|
|
ldrh r1, [r4, 0x36]
|
|
movs r2, 0x36
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0xFF
|
|
ble _080A6430
|
|
ldr r2, =0xffffff00
|
|
b _080A6438
|
|
.pool
|
|
_080A6430:
|
|
cmp r0, 0
|
|
bge _080A643C
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
_080A6438:
|
|
adds r0, r1, r2
|
|
strh r0, [r4, 0x36]
|
|
_080A643C:
|
|
ldrh r0, [r4, 0x34]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x34]
|
|
b _080A644A
|
|
_080A6444:
|
|
adds r0, r4, 0
|
|
bl sub_80A62DC
|
|
_080A644A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A63C8
|
|
|
|
thumb_func_start sub_80A6450
|
|
sub_80A6450: @ 80A6450
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x34
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080A64A4
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
movs r2, 0x30
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
strh r0, [r4, 0x24]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x36
|
|
ldrsh r1, [r4, r2]
|
|
bl Cos
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x32]
|
|
ldrh r2, [r4, 0x2E]
|
|
adds r1, r0, r2
|
|
strh r1, [r4, 0x2E]
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
cmp r0, 0xFF
|
|
ble _080A6490
|
|
ldr r2, =0xffffff00
|
|
b _080A6498
|
|
.pool
|
|
_080A6490:
|
|
cmp r0, 0
|
|
bge _080A649C
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
_080A6498:
|
|
adds r0, r1, r2
|
|
strh r0, [r4, 0x2E]
|
|
_080A649C:
|
|
ldrh r0, [r4, 0x34]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x34]
|
|
b _080A64AA
|
|
_080A64A4:
|
|
adds r0, r4, 0
|
|
bl sub_80A62DC
|
|
_080A64AA:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A6450
|
|
|
|
thumb_func_start sub_80A64B0
|
|
sub_80A64B0: @ 80A64B0
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
ldrh r2, [r1, 0x2E]
|
|
movs r3, 0x2E
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
ble _080A64C4
|
|
subs r0, r2, 0x1
|
|
strh r0, [r1, 0x2E]
|
|
b _080A64CA
|
|
_080A64C4:
|
|
adds r0, r1, 0
|
|
bl sub_80A62DC
|
|
_080A64CA:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A64B0
|
|
|
|
thumb_func_start sub_80A64D0
|
|
sub_80A64D0: @ 80A64D0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80A64EC
|
|
ldr r1, =sub_80A653C
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A64D0
|
|
|
|
thumb_func_start sub_80A64EC
|
|
sub_80A64EC: @ 80A64EC
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x30
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x32
|
|
ldrsh r0, [r4, r2]
|
|
cmp r1, r0
|
|
ble _080A6502
|
|
ldrh r0, [r4, 0x2E]
|
|
negs r0, r0
|
|
strh r0, [r4, 0x2E]
|
|
_080A6502:
|
|
movs r1, 0x32
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x30
|
|
ldrsh r1, [r4, r2]
|
|
subs r0, r1
|
|
ldrh r5, [r4, 0x2E]
|
|
movs r2, 0x2E
|
|
ldrsh r1, [r4, r2]
|
|
bl __divsi3
|
|
cmp r0, 0
|
|
bge _080A651C
|
|
negs r0, r0
|
|
_080A651C:
|
|
strh r0, [r4, 0x2E]
|
|
movs r1, 0x36
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x34
|
|
ldrsh r1, [r4, r2]
|
|
subs r0, r1
|
|
movs r2, 0x2E
|
|
ldrsh r1, [r4, r2]
|
|
bl __divsi3
|
|
strh r0, [r4, 0x32]
|
|
strh r5, [r4, 0x30]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A64EC
|
|
|
|
thumb_func_start sub_80A653C
|
|
sub_80A653C: @ 80A653C
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
ldrh r2, [r1, 0x2E]
|
|
movs r3, 0x2E
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
ble _080A6560
|
|
subs r0, r2, 0x1
|
|
strh r0, [r1, 0x2E]
|
|
ldrh r0, [r1, 0x30]
|
|
ldrh r2, [r1, 0x24]
|
|
adds r0, r2
|
|
strh r0, [r1, 0x24]
|
|
ldrh r0, [r1, 0x32]
|
|
ldrh r3, [r1, 0x26]
|
|
adds r0, r3
|
|
strh r0, [r1, 0x26]
|
|
b _080A6566
|
|
_080A6560:
|
|
adds r0, r1, 0
|
|
bl sub_80A62DC
|
|
_080A6566:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A653C
|
|
|
|
thumb_func_start sub_80A656C
|
|
sub_80A656C: @ 80A656C
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldrh r1, [r2, 0x2E]
|
|
movs r3, 0x2E
|
|
ldrsh r0, [r2, r3]
|
|
cmp r0, 0
|
|
ble _080A659C
|
|
subs r0, r1, 0x1
|
|
strh r0, [r2, 0x2E]
|
|
ldrh r0, [r2, 0x30]
|
|
ldrh r1, [r2, 0x34]
|
|
adds r0, r1
|
|
strh r0, [r2, 0x34]
|
|
ldrh r1, [r2, 0x32]
|
|
ldrh r3, [r2, 0x36]
|
|
adds r1, r3
|
|
strh r1, [r2, 0x36]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
strh r0, [r2, 0x24]
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
strh r1, [r2, 0x26]
|
|
b _080A65A2
|
|
_080A659C:
|
|
adds r0, r2, 0
|
|
bl sub_80A62DC
|
|
_080A65A2:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A656C
|
|
|
|
thumb_func_start sub_80A65A8
|
|
sub_80A65A8: @ 80A65A8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x2E]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
ble _080A65D8
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r4, 0x30]
|
|
ldrh r1, [r4, 0x34]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x34]
|
|
ldrh r1, [r4, 0x32]
|
|
ldrh r2, [r4, 0x36]
|
|
adds r1, r2
|
|
strh r1, [r4, 0x36]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
strh r0, [r4, 0x24]
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
strh r1, [r4, 0x26]
|
|
b _080A65DE
|
|
_080A65D8:
|
|
adds r0, r4, 0
|
|
bl sub_80A62DC
|
|
_080A65DE:
|
|
adds r0, r4, 0
|
|
bl UpdateMonIconFrame
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A65A8
|
|
|
|
thumb_func_start sub_80A65EC
|
|
sub_80A65EC: @ 80A65EC
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x24]
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x26]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x34]
|
|
ldr r5, =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x32]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r4, 0x36]
|
|
ldr r0, =sub_80A64D0
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A65EC
|
|
|
|
thumb_func_start sub_80A6630
|
|
sub_80A6630: @ 80A6630
|
|
push {r4,lr}
|
|
adds r3, r0, 0
|
|
ldrh r1, [r3, 0x2E]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r3, r2]
|
|
cmp r0, 0
|
|
ble _080A6674
|
|
subs r0, r1, 0x1
|
|
strh r0, [r3, 0x2E]
|
|
ldr r2, =gSprites
|
|
movs r4, 0x34
|
|
ldrsh r1, [r3, r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r3, 0x30]
|
|
ldrh r4, [r0, 0x24]
|
|
adds r1, r4
|
|
strh r1, [r0, 0x24]
|
|
movs r0, 0x34
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r3, 0x32]
|
|
ldrh r2, [r0, 0x26]
|
|
adds r1, r2
|
|
strh r1, [r0, 0x26]
|
|
b _080A667A
|
|
.pool
|
|
_080A6674:
|
|
adds r0, r3, 0
|
|
bl sub_80A62DC
|
|
_080A667A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A6630
|
|
|
|
thumb_func_start sub_80A6680
|
|
sub_80A6680: @ 80A6680
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x2E]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
ble _080A66D0
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r1, [r4, 0x30]
|
|
ldrh r0, [r4, 0x34]
|
|
adds r1, r0
|
|
strh r1, [r4, 0x34]
|
|
ldrh r0, [r4, 0x32]
|
|
ldrh r2, [r4, 0x36]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x36]
|
|
ldr r3, =gSprites
|
|
movs r0, 0x38
|
|
ldrsh r2, [r4, r0]
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
lsls r1, 16
|
|
asrs r1, 24
|
|
strh r1, [r0, 0x24]
|
|
movs r1, 0x38
|
|
ldrsh r0, [r4, r1]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldrh r0, [r4, 0x36]
|
|
lsls r0, 16
|
|
asrs r0, 24
|
|
strh r0, [r1, 0x26]
|
|
b _080A66D6
|
|
.pool
|
|
_080A66D0:
|
|
adds r0, r4, 0
|
|
bl sub_80A62DC
|
|
_080A66D6:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A6680
|
|
|
|
thumb_func_start sub_80A66DC
|
|
sub_80A66DC: @ 80A66DC
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x2E]
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
ble _080A673E
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r1, [r4, 0x32]
|
|
lsls r0, r1, 16
|
|
asrs r0, 24
|
|
strh r0, [r4, 0x24]
|
|
ldrh r0, [r4, 0x30]
|
|
adds r1, r0
|
|
strh r1, [r4, 0x32]
|
|
ldrh r1, [r4, 0x36]
|
|
lsls r0, r1, 16
|
|
asrs r0, 24
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x34]
|
|
adds r1, r0
|
|
strh r1, [r4, 0x36]
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x38
|
|
ldrsh r1, [r4, r2]
|
|
bl __modsi3
|
|
cmp r0, 0
|
|
bne _080A6744
|
|
movs r1, 0x38
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
beq _080A6744
|
|
adds r3, r4, 0
|
|
adds r3, 0x3E
|
|
ldrb r2, [r3]
|
|
lsls r0, r2, 29
|
|
lsrs r0, 31
|
|
movs r1, 0x1
|
|
eors r1, r0
|
|
lsls r1, 2
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
b _080A6744
|
|
_080A673E:
|
|
adds r0, r4, 0
|
|
bl sub_80A62DC
|
|
_080A6744:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A66DC
|
|
|
|
thumb_func_start move_anim_8074EE0
|
|
move_anim_8074EE0: @ 80A674C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl FreeSpriteOamMatrix
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end move_anim_8074EE0
|
|
|
|
thumb_func_start sub_80A6760
|
|
sub_80A6760: @ 80A6760
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x24]
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x26]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x34]
|
|
ldr r5, =gBattleAnimAttacker
|
|
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, =sub_80A64D0
|
|
str r0, [r4, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A6760
|
|
|
|
thumb_func_start sub_80A67A4
|
|
sub_80A67A4: @ 80A67A4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x38]
|
|
bl ResetPaletteStructByUid
|
|
adds r0, r4, 0
|
|
bl move_anim_8074EE0
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A67A4
|
|
|
|
thumb_func_start sub_80A67BC
|
|
sub_80A67BC: @ 80A67BC
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A67D2
|
|
adds r0, r2, 0
|
|
bl sub_80A62DC
|
|
_080A67D2:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A67BC
|
|
|
|
thumb_func_start sub_80A67D8
|
|
sub_80A67D8: @ 80A67D8
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A67EE
|
|
adds r0, r2, 0
|
|
bl sub_80A62DC
|
|
_080A67EE:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A67D8
|
|
|
|
thumb_func_start sub_80A67F4
|
|
sub_80A67F4: @ 80A67F4
|
|
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_80A67F4
|
|
|
|
thumb_func_start sub_80A6814
|
|
sub_80A6814: @ 80A6814
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A6814
|
|
|
|
thumb_func_start sub_80A6838
|
|
sub_80A6838: @ 80A6838
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A6838
|
|
|
|
thumb_func_start sub_80A6864
|
|
sub_80A6864: @ 80A6864
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r4, r0, 0
|
|
lsls r1, 16
|
|
lsrs r5, r1, 16
|
|
mov r8, r5
|
|
ldr r7, =gBattleAnimAttacker
|
|
ldrb r0, [r7]
|
|
movs r1, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r0, =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
movs r1, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r6, r0
|
|
bhi _080A68B0
|
|
cmp r6, r0
|
|
bcs _080A68A4
|
|
lsls r0, r5, 16
|
|
b _080A68C0
|
|
.pool
|
|
_080A68A4:
|
|
ldrb r0, [r7]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A68BC
|
|
_080A68B0:
|
|
ldrh r1, [r4, 0x20]
|
|
lsls r0, r5, 16
|
|
asrs r0, 16
|
|
subs r1, r0
|
|
strh r1, [r4, 0x20]
|
|
b _080A68C8
|
|
_080A68BC:
|
|
mov r1, r8
|
|
lsls r0, r1, 16
|
|
_080A68C0:
|
|
asrs r0, 16
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x20]
|
|
_080A68C8:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A6864
|
|
|
|
thumb_func_start sub_80A68D4
|
|
sub_80A68D4: @ 80A68D4
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x20]
|
|
movs r5, 0
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
adds r0, r4, 0
|
|
bl obj_translate_based_on_private_1_2_3_4
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r4, r0]
|
|
movs r0, 0x80
|
|
lsls r0, 8
|
|
bl __divsi3
|
|
strh r0, [r4, 0x3A]
|
|
strh r5, [r4, 0x3C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A68D4
|
|
|
|
thumb_func_start AnimateBallThrow
|
|
AnimateBallThrow: @ 80A6900
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80A6F3C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A692C
|
|
ldrh r0, [r4, 0x3A]
|
|
ldrh r1, [r4, 0x3C]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x3C]
|
|
lsls r0, 16
|
|
lsrs r0, 24
|
|
movs r2, 0x38
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
ldrh r1, [r4, 0x26]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x26]
|
|
movs r0, 0
|
|
b _080A692E
|
|
_080A692C:
|
|
movs r0, 0x1
|
|
_080A692E:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end AnimateBallThrow
|
|
|
|
thumb_func_start sub_80A6934
|
|
sub_80A6934: @ 80A6934
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80A6F3C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A6960
|
|
ldrh r0, [r4, 0x3A]
|
|
ldrh r1, [r4, 0x3C]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x3C]
|
|
lsls r0, 16
|
|
lsrs r0, 24
|
|
movs r2, 0x38
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
ldrh r1, [r4, 0x24]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x24]
|
|
movs r0, 0
|
|
b _080A6962
|
|
_080A6960:
|
|
movs r0, 0x1
|
|
_080A6962:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A6934
|
|
|
|
thumb_func_start oamt_add_pos2_onto_pos1
|
|
oamt_add_pos2_onto_pos1: @ 80A6968
|
|
ldrh r1, [r0, 0x24]
|
|
ldrh r2, [r0, 0x20]
|
|
adds r1, r2
|
|
movs r2, 0
|
|
strh r1, [r0, 0x20]
|
|
ldrh r1, [r0, 0x26]
|
|
ldrh r3, [r0, 0x22]
|
|
adds r1, r3
|
|
strh r1, [r0, 0x22]
|
|
strh r2, [r0, 0x24]
|
|
strh r2, [r0, 0x26]
|
|
bx lr
|
|
thumb_func_end oamt_add_pos2_onto_pos1
|
|
|
|
thumb_func_start sub_80A6980
|
|
sub_80A6980: @ 80A6980
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r1, 24
|
|
cmp r1, 0
|
|
bne _080A69A8
|
|
ldr r4, =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_80A60AC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_80A60AC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
_080A69A8:
|
|
ldr r4, =gBattleAnimArgs
|
|
movs r0, 0
|
|
ldrsh r1, [r4, r0]
|
|
adds r0, r5, 0
|
|
bl sub_80A6864
|
|
ldrh r0, [r4, 0x2]
|
|
ldrh r1, [r5, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x22]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A6980
|
|
|
|
thumb_func_start sub_80A69CC
|
|
sub_80A69CC: @ 80A69CC
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r1, 24
|
|
cmp r1, 0
|
|
bne _080A69F0
|
|
ldr r4, =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0
|
|
bl sub_80A60AC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
b _080A6A04
|
|
.pool
|
|
_080A69F0:
|
|
ldr r4, =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl sub_80A60AC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
_080A6A04:
|
|
bl sub_80A60AC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
ldr r4, =gBattleAnimArgs
|
|
movs r0, 0
|
|
ldrsh r1, [r4, r0]
|
|
adds r0, r5, 0
|
|
bl sub_80A6864
|
|
ldrh r0, [r4, 0x2]
|
|
ldrh r1, [r5, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x22]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A69CC
|
|
|
|
thumb_func_start GetBattlerSide
|
|
GetBattlerSide: @ 80A6A30
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gBattlerPositions
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
bx lr
|
|
.pool
|
|
thumb_func_end GetBattlerSide
|
|
|
|
thumb_func_start GetBattlerPosition
|
|
GetBattlerPosition: @ 80A6A44
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gBattlerPositions
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end GetBattlerPosition
|
|
|
|
thumb_func_start GetBattlerAtPosition
|
|
GetBattlerAtPosition: @ 80A6A54
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
movs r1, 0
|
|
ldr r0, =gBattlersCount
|
|
ldrb r2, [r0]
|
|
cmp r1, r2
|
|
bcs _080A6A7E
|
|
ldr r4, =gBattlerPositions
|
|
ldrb r0, [r4]
|
|
cmp r0, r3
|
|
beq _080A6A7E
|
|
_080A6A6C:
|
|
adds r0, r1, 0x1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, r2
|
|
bcs _080A6A7E
|
|
adds r0, r1, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, r3
|
|
bne _080A6A6C
|
|
_080A6A7E:
|
|
adds r0, r1, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end GetBattlerAtPosition
|
|
|
|
thumb_func_start IsBattlerSpritePresent
|
|
IsBattlerSpritePresent: @ 80A6A90
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r5, r4, 0
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A6ABC
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
cmp r0, r4
|
|
beq _080A6B0A
|
|
ldr r0, =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
cmp r0, r4
|
|
beq _080A6B0A
|
|
b _080A6B18
|
|
.pool
|
|
_080A6ABC:
|
|
ldr r0, =gBattlerPositions
|
|
adds r0, r4, r0
|
|
ldrb r0, [r0]
|
|
cmp r0, 0xFF
|
|
beq _080A6B18
|
|
adds r0, r4, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A6AF0
|
|
ldr r1, =gBattlerPartyIndexes
|
|
lsls r0, r4, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, =gEnemyParty
|
|
b _080A6AFE
|
|
.pool
|
|
_080A6AF0:
|
|
ldr r1, =gBattlerPartyIndexes
|
|
lsls r0, r5, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, =gPlayerParty
|
|
_080A6AFE:
|
|
adds r0, r1
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _080A6B18
|
|
_080A6B0A:
|
|
movs r0, 0x1
|
|
b _080A6B1A
|
|
.pool
|
|
_080A6B18:
|
|
movs r0, 0
|
|
_080A6B1A:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end IsBattlerSpritePresent
|
|
|
|
thumb_func_start IsDoubleBattle
|
|
IsDoubleBattle: @ 80A6B20
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
bx lr
|
|
.pool
|
|
thumb_func_end IsDoubleBattle
|
|
|
|
thumb_func_start sub_80A6B30
|
|
sub_80A6B30: @ 80A6B30
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl IsContest
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _080A6B64
|
|
ldr r0, =gUnknown_0202305C
|
|
ldr r0, [r0]
|
|
str r0, [r4]
|
|
ldr r0, =gUnknown_02023060
|
|
ldr r0, [r0]
|
|
str r0, [r4, 0x4]
|
|
movs r1, 0
|
|
movs r0, 0xE
|
|
strb r0, [r4, 0x8]
|
|
movs r0, 0x1
|
|
strb r0, [r4, 0x9]
|
|
strh r1, [r4, 0xA]
|
|
b _080A6B7E
|
|
.pool
|
|
_080A6B64:
|
|
ldr r0, =gUnknown_0202305C
|
|
ldr r0, [r0]
|
|
str r0, [r4]
|
|
ldr r0, =gUnknown_02023060
|
|
ldr r0, [r0]
|
|
str r0, [r4, 0x4]
|
|
movs r0, 0x8
|
|
strb r0, [r4, 0x8]
|
|
movs r0, 0x1
|
|
strb r0, [r4, 0x9]
|
|
movs r0, 0x80
|
|
lsls r0, 2
|
|
strh r0, [r4, 0xA]
|
|
_080A6B7E:
|
|
strh r1, [r4, 0xC]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A6B30
|
|
|
|
thumb_func_start sub_80A6B90
|
|
sub_80A6B90: @ 80A6B90
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
bl IsContest
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _080A6BC4
|
|
ldr r0, =gUnknown_0202305C
|
|
ldr r0, [r0]
|
|
str r0, [r4]
|
|
ldr r0, =gUnknown_02023060
|
|
ldr r0, [r0]
|
|
str r0, [r4, 0x4]
|
|
movs r1, 0
|
|
movs r0, 0xE
|
|
strb r0, [r4, 0x8]
|
|
movs r0, 0x1
|
|
strb r0, [r4, 0x9]
|
|
strh r1, [r4, 0xA]
|
|
b _080A6BEA
|
|
.pool
|
|
_080A6BC4:
|
|
cmp r5, 0x1
|
|
bne _080A6BD0
|
|
adds r0, r4, 0
|
|
bl sub_80A6B30
|
|
b _080A6BEC
|
|
_080A6BD0:
|
|
ldr r0, =gUnknown_0202305C
|
|
ldr r0, [r0]
|
|
str r0, [r4]
|
|
ldr r0, =gUnknown_02023060
|
|
ldr r0, [r0]
|
|
str r0, [r4, 0x4]
|
|
movs r0, 0x9
|
|
strb r0, [r4, 0x8]
|
|
movs r0, 0x2
|
|
strb r0, [r4, 0x9]
|
|
movs r0, 0xC0
|
|
lsls r0, 2
|
|
strh r0, [r4, 0xA]
|
|
_080A6BEA:
|
|
strh r1, [r4, 0xC]
|
|
_080A6BEC:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A6B90
|
|
|
|
thumb_func_start sub_80A6BFC
|
|
sub_80A6BFC: @ 80A6BFC
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, =gUnknown_0202305C
|
|
ldr r0, [r0]
|
|
str r0, [r4]
|
|
ldr r0, =gUnknown_02023060
|
|
ldr r0, [r0]
|
|
str r0, [r4, 0x4]
|
|
bl IsContest
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0
|
|
beq _080A6C30
|
|
movs r0, 0
|
|
movs r1, 0xE
|
|
strb r1, [r4, 0x8]
|
|
movs r1, 0x1
|
|
strb r1, [r4, 0x9]
|
|
strh r0, [r4, 0xA]
|
|
strh r0, [r4, 0xC]
|
|
b _080A6C60
|
|
.pool
|
|
_080A6C30:
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl sub_80A8364
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0x1
|
|
bne _080A6C50
|
|
movs r0, 0x8
|
|
strb r0, [r4, 0x8]
|
|
strb r1, [r4, 0x9]
|
|
movs r0, 0x80
|
|
lsls r0, 2
|
|
b _080A6C5C
|
|
.pool
|
|
_080A6C50:
|
|
movs r0, 0x9
|
|
strb r0, [r4, 0x8]
|
|
movs r0, 0x2
|
|
strb r0, [r4, 0x9]
|
|
movs r0, 0xC0
|
|
lsls r0, 2
|
|
_080A6C5C:
|
|
strh r0, [r4, 0xA]
|
|
strh r5, [r4, 0xC]
|
|
_080A6C60:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A6BFC
|
|
|
|
thumb_func_start sub_80A6C68
|
|
sub_80A6C68: @ 80A6C68
|
|
push {lr}
|
|
sub sp, 0x20
|
|
adds r1, r0, 0
|
|
add r0, sp, 0xC
|
|
bl sub_80A6B90
|
|
movs r0, 0
|
|
str r0, [sp, 0x1C]
|
|
add r0, sp, 0x1C
|
|
ldr r1, [sp, 0xC]
|
|
ldr r2, =0x05000800
|
|
bl CpuSet
|
|
add r0, sp, 0xC
|
|
ldrb r0, [r0, 0x9]
|
|
ldr r1, [sp, 0xC]
|
|
movs r2, 0x80
|
|
lsls r2, 6
|
|
add r3, sp, 0xC
|
|
ldrh r3, [r3, 0xA]
|
|
bl LoadBgTiles
|
|
add r0, sp, 0xC
|
|
ldrb r0, [r0, 0x9]
|
|
movs r1, 0x20
|
|
str r1, [sp]
|
|
movs r1, 0x40
|
|
str r1, [sp, 0x4]
|
|
movs r1, 0x11
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl FillBgTilemapBufferRect
|
|
add r0, sp, 0xC
|
|
ldrb r0, [r0, 0x9]
|
|
bl CopyBgTilemapBufferToVram
|
|
add sp, 0x20
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A6C68
|
|
|
|
thumb_func_start sub_80A6CC0
|
|
sub_80A6CC0: @ 80A6CC0
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
sub sp, 0x4
|
|
adds r5, r0, 0
|
|
mov r8, r1
|
|
adds r6, r2, 0
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
ldr r4, =gUnknown_0202305C
|
|
ldr r1, [r4]
|
|
ldr r2, =0x05000800
|
|
mov r0, sp
|
|
bl CpuSet
|
|
ldr r1, [r4]
|
|
mov r0, r8
|
|
bl LZDecompressWram
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldr r1, [r4]
|
|
movs r2, 0x80
|
|
lsls r2, 6
|
|
lsls r6, 16
|
|
lsrs r6, 16
|
|
adds r0, r5, 0
|
|
adds r3, r6, 0
|
|
bl LoadBgTiles
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A6CC0
|
|
|
|
thumb_func_start sub_80A6D10
|
|
sub_80A6D10: @ 80A6D10
|
|
push {r4,r5,lr}
|
|
sub sp, 0xC
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r0, 0x20
|
|
str r0, [sp]
|
|
movs r0, 0x40
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0x11
|
|
str r0, [sp, 0x8]
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl FillBgTilemapBufferRect
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl CopyToBgTilemapBuffer
|
|
add sp, 0xC
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A6D10
|
|
|
|
thumb_func_start sub_80A6D48
|
|
sub_80A6D48: @ 80A6D48
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80A6D10
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
bl CopyBgTilemapBufferToVram
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A6D48
|
|
|
|
thumb_func_start sub_80A6D60
|
|
sub_80A6D60: @ 80A6D60
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r2, 0
|
|
ldrb r0, [r4, 0x9]
|
|
bl sub_80A6D10
|
|
bl IsContest
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080A6D86
|
|
ldrb r0, [r4, 0x8]
|
|
ldr r1, [r4, 0x4]
|
|
lsls r3, r5, 24
|
|
lsrs r3, 24
|
|
movs r2, 0
|
|
bl sub_80A4720
|
|
_080A6D86:
|
|
ldrb r0, [r4, 0x9]
|
|
bl CopyBgTilemapBufferToVram
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A6D60
|
|
|
|
thumb_func_start sub_80A6D94
|
|
sub_80A6D94: @ 80A6D94
|
|
push {lr}
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A6DA4
|
|
movs r0, 0x2
|
|
b _080A6DA6
|
|
_080A6DA4:
|
|
movs r0, 0x1
|
|
_080A6DA6:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A6D94
|
|
|
|
thumb_func_start sub_80A6DAC
|
|
sub_80A6DAC: @ 80A6DAC
|
|
push {lr}
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A6DBE
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A6DD4
|
|
_080A6DBE:
|
|
movs r0, 0x3
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0x3
|
|
movs r1, 0x1
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
b _080A6DE8
|
|
_080A6DD4:
|
|
movs r0, 0x3
|
|
movs r1, 0
|
|
movs r2, 0x1
|
|
bl SetAnimBgAttribute
|
|
movs r0, 0x3
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetAnimBgAttribute
|
|
_080A6DE8:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A6DAC
|
|
|
|
thumb_func_start sub_80A6DEC
|
|
sub_80A6DEC: @ 80A6DEC
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
adds r0, r4, 0
|
|
bl sub_80A6E14
|
|
ldr r1, =sub_80A65A8
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A6DEC
|
|
|
|
thumb_func_start sub_80A6E14
|
|
sub_80A6E14: @ 80A6E14
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldrh r0, [r5, 0x32]
|
|
ldrh r1, [r5, 0x30]
|
|
subs r0, r1
|
|
ldrh r4, [r5, 0x36]
|
|
ldrh r1, [r5, 0x34]
|
|
subs r4, r1
|
|
lsls r4, 24
|
|
lsrs r4, 16
|
|
lsls r0, 24
|
|
asrs r0, 16
|
|
movs r2, 0x2E
|
|
ldrsh r1, [r5, r2]
|
|
bl __divsi3
|
|
movs r6, 0
|
|
strh r0, [r5, 0x30]
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r5, r0]
|
|
adds r0, r4, 0
|
|
bl __divsi3
|
|
strh r0, [r5, 0x32]
|
|
strh r6, [r5, 0x36]
|
|
strh r6, [r5, 0x34]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A6E14
|
|
|
|
thumb_func_start obj_translate_based_on_private_1_2_3_4
|
|
obj_translate_based_on_private_1_2_3_4: @ 80A6E54
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
adds r7, r0, 0
|
|
movs r0, 0x32
|
|
ldrsh r1, [r7, r0]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r7, r2]
|
|
subs r1, r0
|
|
movs r3, 0x36
|
|
ldrsh r2, [r7, r3]
|
|
movs r3, 0x34
|
|
ldrsh r0, [r7, r3]
|
|
subs r2, r0
|
|
lsrs r0, r1, 31
|
|
mov r8, r0
|
|
lsrs r3, r2, 31
|
|
mov r9, r3
|
|
cmp r1, 0
|
|
bge _080A6E80
|
|
negs r1, r1
|
|
_080A6E80:
|
|
lsls r0, r1, 24
|
|
lsrs r6, r0, 16
|
|
adds r0, r2, 0
|
|
cmp r0, 0
|
|
bge _080A6E8C
|
|
negs r0, r0
|
|
_080A6E8C:
|
|
lsls r0, 24
|
|
lsrs r5, r0, 16
|
|
movs r0, 0x2E
|
|
ldrsh r4, [r7, r0]
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
mov r2, r8
|
|
cmp r2, 0
|
|
beq _080A6EB8
|
|
movs r0, 0x1
|
|
orrs r6, r0
|
|
b _080A6EBC
|
|
_080A6EB8:
|
|
ldr r0, =0x0000fffe
|
|
ands r6, r0
|
|
_080A6EBC:
|
|
mov r3, r9
|
|
cmp r3, 0
|
|
beq _080A6ECC
|
|
movs r0, 0x1
|
|
orrs r5, r0
|
|
b _080A6ED0
|
|
.pool
|
|
_080A6ECC:
|
|
ldr r0, =0x0000fffe
|
|
ands r5, r0
|
|
_080A6ED0:
|
|
movs r0, 0
|
|
strh r6, [r7, 0x30]
|
|
strh r5, [r7, 0x32]
|
|
strh r0, [r7, 0x36]
|
|
strh r0, [r7, 0x34]
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end obj_translate_based_on_private_1_2_3_4
|
|
|
|
thumb_func_start sub_80A6EEC
|
|
sub_80A6EEC: @ 80A6EEC
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
adds r0, r4, 0
|
|
bl obj_translate_based_on_private_1_2_3_4
|
|
ldr r1, =sub_80A6F98
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A6EEC
|
|
|
|
thumb_func_start sub_80A6F14
|
|
sub_80A6F14: @ 80A6F14
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
adds r0, r4, 0
|
|
bl obj_translate_based_on_private_1_2_3_4
|
|
ldr r1, =sub_80A6FB4
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A6F14
|
|
|
|
thumb_func_start sub_80A6F3C
|
|
sub_80A6F3C: @ 80A6F3C
|
|
push {r4-r6,lr}
|
|
adds r2, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r2, r1]
|
|
cmp r0, 0
|
|
bne _080A6F4C
|
|
movs r0, 0x1
|
|
b _080A6F90
|
|
_080A6F4C:
|
|
ldrh r1, [r2, 0x30]
|
|
ldrh r4, [r2, 0x32]
|
|
ldrh r6, [r2, 0x34]
|
|
ldrh r5, [r2, 0x36]
|
|
adds r0, r6, r1
|
|
lsls r3, r0, 16
|
|
lsrs r6, r3, 16
|
|
adds r0, r5, r4
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080A6F6E
|
|
lsrs r0, r3, 24
|
|
negs r0, r0
|
|
b _080A6F70
|
|
_080A6F6E:
|
|
lsrs r0, r3, 24
|
|
_080A6F70:
|
|
strh r0, [r2, 0x24]
|
|
movs r0, 0x1
|
|
ands r4, r0
|
|
cmp r4, 0
|
|
beq _080A6F80
|
|
lsrs r0, r5, 8
|
|
negs r0, r0
|
|
b _080A6F82
|
|
_080A6F80:
|
|
lsrs r0, r5, 8
|
|
_080A6F82:
|
|
strh r0, [r2, 0x26]
|
|
strh r6, [r2, 0x34]
|
|
strh r5, [r2, 0x36]
|
|
ldrh r0, [r2, 0x2E]
|
|
subs r0, 0x1
|
|
strh r0, [r2, 0x2E]
|
|
movs r0, 0
|
|
_080A6F90:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A6F3C
|
|
|
|
thumb_func_start sub_80A6F98
|
|
sub_80A6F98: @ 80A6F98
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80A6F3C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A6FAC
|
|
adds r0, r4, 0
|
|
bl sub_80A62DC
|
|
_080A6FAC:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A6F98
|
|
|
|
thumb_func_start sub_80A6FB4
|
|
sub_80A6FB4: @ 80A6FB4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_8039E9C
|
|
adds r0, r4, 0
|
|
bl sub_80A6F3C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A6FCE
|
|
adds r0, r4, 0
|
|
bl sub_80A62DC
|
|
_080A6FCE:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A6FB4
|
|
|
|
thumb_func_start sub_80A6FD4
|
|
sub_80A6FD4: @ 80A6FD4
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x32
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r4, r2]
|
|
subs r0, r1, r0
|
|
cmp r0, 0
|
|
bge _080A6FE8
|
|
negs r0, r0
|
|
_080A6FE8:
|
|
lsls r0, 8
|
|
movs r2, 0x2E
|
|
ldrsh r1, [r4, r2]
|
|
bl __divsi3
|
|
strh r0, [r4, 0x2E]
|
|
adds r0, r4, 0
|
|
bl obj_translate_based_on_private_1_2_3_4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A6FD4
|
|
|
|
thumb_func_start sub_80A7000
|
|
sub_80A7000: @ 80A7000
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
adds r0, r4, 0
|
|
bl sub_80A6FD4
|
|
ldr r1, =sub_80A6F98
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A7000
|
|
|
|
thumb_func_start sub_80A7028
|
|
sub_80A7028: @ 80A7028
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
adds r7, r0, 0
|
|
movs r0, 0x32
|
|
ldrsh r1, [r7, r0]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r7, r2]
|
|
subs r1, r0
|
|
movs r3, 0x36
|
|
ldrsh r2, [r7, r3]
|
|
movs r3, 0x34
|
|
ldrsh r0, [r7, r3]
|
|
subs r2, r0
|
|
lsrs r0, r1, 31
|
|
mov r8, r0
|
|
lsrs r3, r2, 31
|
|
mov r9, r3
|
|
cmp r1, 0
|
|
bge _080A7054
|
|
negs r1, r1
|
|
_080A7054:
|
|
lsls r0, r1, 20
|
|
lsrs r6, r0, 16
|
|
adds r0, r2, 0
|
|
cmp r0, 0
|
|
bge _080A7060
|
|
negs r0, r0
|
|
_080A7060:
|
|
lsls r0, 20
|
|
lsrs r5, r0, 16
|
|
movs r0, 0x2E
|
|
ldrsh r4, [r7, r0]
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl __divsi3
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
mov r2, r8
|
|
cmp r2, 0
|
|
beq _080A708C
|
|
movs r0, 0x1
|
|
orrs r6, r0
|
|
b _080A7090
|
|
_080A708C:
|
|
ldr r0, =0x0000fffe
|
|
ands r6, r0
|
|
_080A7090:
|
|
mov r3, r9
|
|
cmp r3, 0
|
|
beq _080A70A0
|
|
movs r0, 0x1
|
|
orrs r5, r0
|
|
b _080A70A4
|
|
.pool
|
|
_080A70A0:
|
|
ldr r0, =0x0000fffe
|
|
ands r5, r0
|
|
_080A70A4:
|
|
movs r0, 0
|
|
strh r6, [r7, 0x30]
|
|
strh r5, [r7, 0x32]
|
|
strh r0, [r7, 0x36]
|
|
strh r0, [r7, 0x34]
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A7028
|
|
|
|
thumb_func_start sub_80A70C0
|
|
sub_80A70C0: @ 80A70C0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
adds r0, r4, 0
|
|
bl sub_80A7028
|
|
ldr r1, =sub_80A7144
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A70C0
|
|
|
|
thumb_func_start sub_80A70E8
|
|
sub_80A70E8: @ 80A70E8
|
|
push {r4-r6,lr}
|
|
adds r2, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r2, r1]
|
|
cmp r0, 0
|
|
bne _080A70F8
|
|
movs r0, 0x1
|
|
b _080A713C
|
|
_080A70F8:
|
|
ldrh r1, [r2, 0x30]
|
|
ldrh r4, [r2, 0x32]
|
|
ldrh r6, [r2, 0x34]
|
|
ldrh r5, [r2, 0x36]
|
|
adds r0, r6, r1
|
|
lsls r3, r0, 16
|
|
lsrs r6, r3, 16
|
|
adds r0, r5, r4
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080A711A
|
|
lsrs r0, r3, 20
|
|
negs r0, r0
|
|
b _080A711C
|
|
_080A711A:
|
|
lsrs r0, r3, 20
|
|
_080A711C:
|
|
strh r0, [r2, 0x24]
|
|
movs r0, 0x1
|
|
ands r4, r0
|
|
cmp r4, 0
|
|
beq _080A712C
|
|
lsrs r0, r5, 4
|
|
negs r0, r0
|
|
b _080A712E
|
|
_080A712C:
|
|
lsrs r0, r5, 4
|
|
_080A712E:
|
|
strh r0, [r2, 0x26]
|
|
strh r6, [r2, 0x34]
|
|
strh r5, [r2, 0x36]
|
|
ldrh r0, [r2, 0x2E]
|
|
subs r0, 0x1
|
|
strh r0, [r2, 0x2E]
|
|
movs r0, 0
|
|
_080A713C:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A70E8
|
|
|
|
thumb_func_start sub_80A7144
|
|
sub_80A7144: @ 80A7144
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80A70E8
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A7158
|
|
adds r0, r4, 0
|
|
bl sub_80A62DC
|
|
_080A7158:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A7144
|
|
|
|
thumb_func_start sub_80A7160
|
|
sub_80A7160: @ 80A7160
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r0, 0x32
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x30
|
|
ldrsh r0, [r4, r2]
|
|
subs r0, r1, r0
|
|
cmp r0, 0
|
|
bge _080A7174
|
|
negs r0, r0
|
|
_080A7174:
|
|
lsls r0, 4
|
|
movs r2, 0x2E
|
|
ldrsh r1, [r4, r2]
|
|
bl __divsi3
|
|
strh r0, [r4, 0x2E]
|
|
adds r0, r4, 0
|
|
bl sub_80A7028
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A7160
|
|
|
|
thumb_func_start sub_80A718C
|
|
sub_80A718C: @ 80A718C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x20]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x34]
|
|
adds r0, r4, 0
|
|
bl sub_80A7160
|
|
ldr r1, =sub_80A7144
|
|
str r1, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
bl _call_via_r1
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A718C
|
|
|
|
thumb_func_start obj_id_set_rotscale
|
|
obj_id_set_rotscale: @ 80A71B4
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r1, 16
|
|
lsls r3, 16
|
|
lsrs r3, 16
|
|
ldr r5, =0xffff0000
|
|
lsls r2, 16
|
|
lsrs r1, 16
|
|
orrs r1, r2
|
|
str r1, [sp]
|
|
ldr r0, [sp, 0x4]
|
|
ands r0, r5
|
|
orrs r0, r3
|
|
str r0, [sp, 0x4]
|
|
bl sub_80A7238
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A71F0
|
|
mov r0, sp
|
|
ldrh r0, [r0]
|
|
negs r0, r0
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r1, [sp]
|
|
ands r1, r5
|
|
orrs r1, r0
|
|
str r1, [sp]
|
|
_080A71F0:
|
|
ldr r1, =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r4, [r0, 0x3]
|
|
lsls r4, 26
|
|
lsrs r4, 27
|
|
add r5, sp, 0x8
|
|
mov r0, sp
|
|
adds r1, r5, 0
|
|
movs r2, 0x1
|
|
movs r3, 0x2
|
|
bl ObjAffineSet
|
|
ldr r0, =gOamMatrices
|
|
lsls r4, 3
|
|
adds r4, r0
|
|
ldrh r0, [r5]
|
|
strh r0, [r4]
|
|
ldrh r0, [r5, 0x2]
|
|
strh r0, [r4, 0x2]
|
|
ldrh r0, [r5, 0x4]
|
|
strh r0, [r4, 0x4]
|
|
ldrh r0, [r5, 0x6]
|
|
strh r0, [r4, 0x6]
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end obj_id_set_rotscale
|
|
|
|
thumb_func_start sub_80A7238
|
|
sub_80A7238: @ 80A7238
|
|
push {r4,lr}
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A7268
|
|
ldr r4, =gSprites
|
|
movs r0, 0
|
|
bl GetAnimBattlerSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r4
|
|
movs r2, 0x32
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0xC9
|
|
beq _080A7268
|
|
movs r0, 0x1
|
|
b _080A726A
|
|
.pool
|
|
_080A7268:
|
|
movs r0, 0
|
|
_080A726A:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A7238
|
|
|
|
thumb_func_start sub_80A7270
|
|
sub_80A7270: @ 80A7270
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r8, r1
|
|
ldr r1, =gSprites
|
|
lsls r0, r6, 4
|
|
adds r0, r6
|
|
lsls r0, 2
|
|
adds r4, r0, r1
|
|
ldrh r0, [r4, 0x2E]
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A72A6
|
|
adds r0, r7, 0
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A72B4
|
|
_080A72A6:
|
|
adds r2, r4, 0
|
|
adds r2, 0x3E
|
|
ldrb r1, [r2]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
_080A72B4:
|
|
ldr r1, =gSprites
|
|
lsls r4, r6, 4
|
|
adds r0, r4, r6
|
|
lsls r0, 2
|
|
adds r5, r0, r1
|
|
movs r0, 0x3
|
|
mov r1, r8
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r5, 0x1]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x1]
|
|
adds r2, r5, 0
|
|
adds r2, 0x2C
|
|
ldrb r0, [r2]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A7312
|
|
ldrb r0, [r5, 0x1]
|
|
lsls r0, 30
|
|
cmp r0, 0
|
|
bne _080A7312
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0, 0x4]
|
|
lsls r0, r7, 1
|
|
adds r0, r7
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x6]
|
|
movs r0, 0x1F
|
|
ands r1, r0
|
|
lsls r1, 1
|
|
ldrb r2, [r5, 0x3]
|
|
movs r0, 0x3F
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x3]
|
|
_080A7312:
|
|
ldr r1, =gSprites
|
|
adds r0, r4, r6
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r3, [r0, 0x1]
|
|
movs r1, 0x3
|
|
orrs r3, r1
|
|
strb r3, [r0, 0x1]
|
|
lsrs r1, r3, 6
|
|
ldrb r2, [r0, 0x3]
|
|
lsrs r2, 6
|
|
lsls r3, 30
|
|
lsrs r3, 30
|
|
bl CalcCenterToCornerVec
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A7270
|
|
|
|
thumb_func_start sub_80A7344
|
|
sub_80A7344: @ 80A7344
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r0, r4, 0
|
|
adds r1, r2, 0
|
|
movs r3, 0
|
|
bl obj_id_set_rotscale
|
|
ldr r1, =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r2, [r0, 0x1]
|
|
movs r1, 0x4
|
|
negs r1, r1
|
|
ands r1, r2
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
movs r2, 0xD
|
|
negs r2, r2
|
|
ands r1, r2
|
|
strb r1, [r0, 0x1]
|
|
adds r3, r0, 0
|
|
adds r3, 0x2C
|
|
ldrb r2, [r3]
|
|
movs r1, 0x7F
|
|
ands r1, r2
|
|
strb r1, [r3]
|
|
ldrb r3, [r0, 0x1]
|
|
lsrs r1, r3, 6
|
|
ldrb r2, [r0, 0x3]
|
|
lsrs r2, 6
|
|
lsls r3, 30
|
|
lsrs r3, 30
|
|
bl CalcCenterToCornerVec
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A7344
|
|
|
|
thumb_func_start sub_80A73A0
|
|
sub_80A73A0: @ 80A73A0
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, =gSprites
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r2, r1, r2
|
|
ldrb r0, [r2, 0x3]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
ldr r1, =gOamMatrices
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldrh r1, [r0, 0x4]
|
|
movs r3, 0x4
|
|
ldrsh r0, [r0, r3]
|
|
cmp r0, 0
|
|
bge _080A73CC
|
|
negs r0, r0
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
_080A73CC:
|
|
lsls r0, r1, 16
|
|
asrs r0, 19
|
|
strh r0, [r2, 0x26]
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A73A0
|
|
|
|
thumb_func_start sub_80A73E0
|
|
sub_80A73E0: @ 80A73E0
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x10
|
|
adds r4, r0, 0
|
|
ldr r0, [sp, 0x28]
|
|
lsls r1, 24
|
|
lsrs r6, r1, 24
|
|
lsls r2, 16
|
|
lsrs r5, r2, 16
|
|
lsls r3, 16
|
|
lsrs r7, r3, 16
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
ldrb r0, [r4, 0x1]
|
|
lsls r0, 30
|
|
lsrs r0, 30
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A7486
|
|
adds r0, r4, 0
|
|
adds r0, 0x2C
|
|
ldrb r1, [r0]
|
|
movs r2, 0x80
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
cmp r6, 0
|
|
beq _080A742E
|
|
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
|
|
_080A742E:
|
|
ldr r6, =0xffff0000
|
|
lsls r0, r7, 16
|
|
orrs r5, r0
|
|
str r5, [sp]
|
|
ldr r0, [sp, 0x4]
|
|
ands r0, r6
|
|
mov r1, r8
|
|
orrs r0, r1
|
|
str r0, [sp, 0x4]
|
|
bl sub_80A7238
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A745C
|
|
mov r0, sp
|
|
ldrh r0, [r0]
|
|
negs r0, r0
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r1, [sp]
|
|
ands r1, r6
|
|
orrs r1, r0
|
|
str r1, [sp]
|
|
_080A745C:
|
|
ldrb r4, [r4, 0x3]
|
|
lsls r4, 26
|
|
lsrs r4, 27
|
|
add r5, sp, 0x8
|
|
mov r0, sp
|
|
adds r1, r5, 0
|
|
movs r2, 0x1
|
|
movs r3, 0x2
|
|
bl ObjAffineSet
|
|
ldr r0, =gOamMatrices
|
|
lsls r4, 3
|
|
adds r4, r0
|
|
ldrh r0, [r5]
|
|
strh r0, [r4]
|
|
ldrh r0, [r5, 0x2]
|
|
strh r0, [r4, 0x2]
|
|
ldrh r0, [r5, 0x4]
|
|
strh r0, [r4, 0x4]
|
|
ldrh r0, [r5, 0x6]
|
|
strh r0, [r4, 0x6]
|
|
_080A7486:
|
|
add sp, 0x10
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A73E0
|
|
|
|
thumb_func_start sub_80A749C
|
|
sub_80A749C: @ 80A749C
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
adds r4, r0, 0
|
|
movs r3, 0x80
|
|
lsls r3, 1
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
adds r2, r3, 0
|
|
bl sub_80A73E0
|
|
adds r2, r4, 0
|
|
adds r2, 0x2C
|
|
ldrb r1, [r2]
|
|
movs r0, 0x7F
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
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
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A749C
|
|
|
|
thumb_func_start sub_80A74DC
|
|
sub_80A74DC: @ 80A74DC
|
|
push {lr}
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl ArcTan2
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A74DC
|
|
|
|
thumb_func_start sub_80A74F4
|
|
sub_80A74F4: @ 80A74F4
|
|
push {lr}
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
bl sub_80A74DC
|
|
lsls r0, 16
|
|
negs r0, r0
|
|
lsrs r0, 16
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A74F4
|
|
|
|
thumb_func_start sub_80A750C
|
|
sub_80A750C: @ 80A750C
|
|
push {r4-r7,lr}
|
|
lsls r1, 24
|
|
lsls r0, 20
|
|
lsrs r0, 16
|
|
cmp r1, 0
|
|
bne _080A7588
|
|
ldr r2, =gPlttBufferUnfaded
|
|
ldr r1, =gPlttBufferFaded
|
|
lsls r0, 1
|
|
adds r4, r0, r1
|
|
adds r5, r0, r2
|
|
movs r6, 0xF
|
|
_080A7524:
|
|
ldr r0, [r5]
|
|
lsls r2, r0, 27
|
|
lsrs r2, 27
|
|
lsls r1, r0, 22
|
|
lsrs r1, 27
|
|
adds r2, r1
|
|
lsls r0, 17
|
|
lsrs r0, 27
|
|
adds r0, r2
|
|
movs r1, 0x3
|
|
bl __udivsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x1F
|
|
ands r0, r1
|
|
ldrb r1, [r4]
|
|
movs r3, 0x20
|
|
negs r3, r3
|
|
adds r2, r3, 0
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r4]
|
|
lsls r3, r0, 5
|
|
ldrh r1, [r4]
|
|
ldr r7, =0xfffffc1f
|
|
adds r2, r7, 0
|
|
ands r1, r2
|
|
orrs r1, r3
|
|
strh r1, [r4]
|
|
lsls r0, 2
|
|
ldrb r1, [r4, 0x1]
|
|
movs r3, 0x7D
|
|
negs r3, r3
|
|
adds r2, r3, 0
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r4, 0x1]
|
|
adds r4, 0x2
|
|
adds r5, 0x2
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bge _080A7524
|
|
b _080A7598
|
|
.pool
|
|
_080A7588:
|
|
lsls r1, r0, 1
|
|
ldr r0, =gPlttBufferUnfaded
|
|
adds r0, r1, r0
|
|
ldr r2, =gPlttBufferFaded
|
|
adds r1, r2
|
|
ldr r2, =0x04000008
|
|
bl CpuSet
|
|
_080A7598:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A750C
|
|
|
|
thumb_func_start sub_80A75AC
|
|
sub_80A75AC: @ 80A75AC
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
ldr r4, [sp, 0x28]
|
|
ldr r5, [sp, 0x2C]
|
|
ldr r6, [sp, 0x30]
|
|
lsls r0, 24
|
|
lsls r1, 24
|
|
lsrs r7, r1, 24
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
mov r8, r2
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
mov r9, r3
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
mov r10, r4
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
str r5, [sp]
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
str r6, [sp, 0x4]
|
|
movs r4, 0
|
|
cmp r0, 0
|
|
beq _080A7602
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A75F6
|
|
movs r4, 0xE
|
|
b _080A7602
|
|
_080A75F6:
|
|
bl sub_80A6D94
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r4, 0x1
|
|
lsls r4, r0
|
|
_080A7602:
|
|
cmp r7, 0
|
|
beq _080A7614
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
adds r1, r0, 0
|
|
adds r1, 0x10
|
|
movs r0, 0x1
|
|
lsls r0, r1
|
|
orrs r4, r0
|
|
_080A7614:
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
beq _080A7628
|
|
ldr r0, =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
adds r1, r0, 0
|
|
adds r1, 0x10
|
|
movs r0, 0x1
|
|
lsls r0, r1
|
|
orrs r4, r0
|
|
_080A7628:
|
|
mov r0, r9
|
|
cmp r0, 0
|
|
beq _080A764E
|
|
ldr r6, =gBattleAnimAttacker
|
|
ldrb r0, [r6]
|
|
movs r5, 0x2
|
|
eors r0, r5
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A764E
|
|
ldrb r0, [r6]
|
|
eors r0, r5
|
|
adds r1, r0, 0
|
|
adds r1, 0x10
|
|
movs r0, 0x1
|
|
lsls r0, r1
|
|
orrs r4, r0
|
|
_080A764E:
|
|
mov r0, r10
|
|
cmp r0, 0
|
|
beq _080A7674
|
|
ldr r6, =gBattleAnimTarget
|
|
ldrb r0, [r6]
|
|
movs r5, 0x2
|
|
eors r0, r5
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A7674
|
|
ldrb r0, [r6]
|
|
eors r0, r5
|
|
adds r1, r0, 0
|
|
adds r1, 0x10
|
|
movs r0, 0x1
|
|
lsls r0, r1
|
|
orrs r4, r0
|
|
_080A7674:
|
|
ldr r0, [sp]
|
|
cmp r0, 0
|
|
beq _080A769A
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A7694
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
b _080A7698
|
|
.pool
|
|
_080A7694:
|
|
movs r0, 0x80
|
|
lsls r0, 7
|
|
_080A7698:
|
|
orrs r4, r0
|
|
_080A769A:
|
|
ldr r0, [sp, 0x4]
|
|
cmp r0, 0
|
|
beq _080A76B0
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A76B0
|
|
movs r0, 0x80
|
|
lsls r0, 2
|
|
orrs r4, r0
|
|
_080A76B0:
|
|
adds r0, r4, 0
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A75AC
|
|
|
|
thumb_func_start sub_80A76C4
|
|
sub_80A76C4: @ 80A76C4
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r1, 24
|
|
lsrs r6, r1, 24
|
|
lsls r2, 24
|
|
lsrs r7, r2, 24
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
mov r8, r3
|
|
movs r4, 0
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A76F2
|
|
cmp r5, 0
|
|
beq _080A77A0
|
|
movs r4, 0x80
|
|
lsls r4, 11
|
|
b _080A77A0
|
|
_080A76F2:
|
|
cmp r5, 0
|
|
beq _080A771A
|
|
movs r0, 0
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A771A
|
|
movs r0, 0
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x10
|
|
movs r4, 0x1
|
|
lsls r4, r0
|
|
_080A771A:
|
|
cmp r6, 0
|
|
beq _080A7746
|
|
movs r0, 0x2
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A7746
|
|
movs r0, 0x2
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r0, 0
|
|
adds r1, 0x10
|
|
movs r0, 0x1
|
|
lsls r0, r1
|
|
orrs r4, r0
|
|
_080A7746:
|
|
cmp r7, 0
|
|
beq _080A7772
|
|
movs r0, 0x1
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A7772
|
|
movs r0, 0x1
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r0, 0
|
|
adds r1, 0x10
|
|
movs r0, 0x1
|
|
lsls r0, r1
|
|
orrs r4, r0
|
|
_080A7772:
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
beq _080A77A0
|
|
movs r0, 0x3
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A77A0
|
|
movs r0, 0x3
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r0, 0
|
|
adds r1, 0x10
|
|
movs r0, 0x1
|
|
lsls r0, r1
|
|
orrs r4, r0
|
|
_080A77A0:
|
|
adds r0, r4, 0
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A76C4
|
|
|
|
thumb_func_start sub_80A77AC
|
|
sub_80A77AC: @ 80A77AC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bx lr
|
|
thumb_func_end sub_80A77AC
|
|
|
|
thumb_func_start sub_80A77B4
|
|
sub_80A77B4: @ 80A77B4
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A77B4
|
|
|
|
thumb_func_start sub_80A77C8
|
|
sub_80A77C8: @ 80A77C8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080A7806
|
|
ldr r2, =gBattleAnimArgs
|
|
movs r3, 0x6
|
|
ldrsh r0, [r2, r3]
|
|
movs r1, 0
|
|
cmp r0, 0
|
|
bne _080A77E2
|
|
movs r1, 0x1
|
|
_080A77E2:
|
|
movs r3, 0x4
|
|
ldrsh r0, [r2, r3]
|
|
cmp r0, 0
|
|
bne _080A77F8
|
|
adds r0, r4, 0
|
|
bl sub_80A69CC
|
|
b _080A77FE
|
|
.pool
|
|
_080A77F8:
|
|
adds r0, r4, 0
|
|
bl sub_80A6980
|
|
_080A77FE:
|
|
ldrh r0, [r4, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x2E]
|
|
b _080A781A
|
|
_080A7806:
|
|
adds r0, r4, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x30
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A781A
|
|
adds r0, r4, 0
|
|
bl move_anim_8074EE0
|
|
_080A781A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A77C8
|
|
|
|
thumb_func_start sub_80A7820
|
|
sub_80A7820: @ 80A7820
|
|
push {r4-r7,lr}
|
|
adds r5, r0, 0
|
|
ldr r6, =gBattleAnimArgs
|
|
movs r1, 0xA
|
|
ldrsh r0, [r6, r1]
|
|
movs r1, 0xFF
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
movs r1, 0
|
|
cmp r0, 0
|
|
bne _080A7838
|
|
movs r1, 0x1
|
|
_080A7838:
|
|
ldrb r0, [r6, 0xA]
|
|
movs r7, 0x1
|
|
cmp r0, 0
|
|
bne _080A7842
|
|
movs r7, 0x3
|
|
_080A7842:
|
|
adds r0, r5, 0
|
|
bl sub_80A69CC
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A785C
|
|
ldrh r0, [r6, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r6, 0x4]
|
|
_080A785C:
|
|
ldrh r0, [r6, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
ldr r4, =gBattleAnimTarget
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r6, 0x4]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x32]
|
|
ldrb r0, [r4]
|
|
adds r1, r7, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r6, [r6, 0x6]
|
|
adds r0, r6
|
|
strh r0, [r5, 0x36]
|
|
ldr r0, =sub_80A6EEC
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A7820
|
|
|
|
thumb_func_start sub_80A78AC
|
|
sub_80A78AC: @ 80A78AC
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
movs r1, 0x1
|
|
bl sub_80A69CC
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A78CC
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x4]
|
|
_080A78CC:
|
|
ldr r4, =gBattleAnimArgs
|
|
ldrh r0, [r4, 0x8]
|
|
strh r0, [r6, 0x2E]
|
|
ldr r5, =gBattleAnimTarget
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x4]
|
|
adds r0, r1
|
|
strh r0, [r6, 0x32]
|
|
ldrb r0, [r5]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r1, [r4, 0x6]
|
|
adds r0, r1
|
|
strh r0, [r6, 0x36]
|
|
ldrh r0, [r4, 0xA]
|
|
strh r0, [r6, 0x38]
|
|
adds r0, r6, 0
|
|
bl sub_80A68D4
|
|
ldr r0, =sub_80A791C
|
|
str r0, [r6, 0x1C]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A78AC
|
|
|
|
thumb_func_start sub_80A791C
|
|
sub_80A791C: @ 80A791C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl AnimateBallThrow
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A7930
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080A7930:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A791C
|
|
|
|
thumb_func_start sub_80A7938
|
|
sub_80A7938: @ 80A7938
|
|
push {r4-r7,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, =gBattleAnimArgs
|
|
movs r2, 0xC
|
|
ldrsh r1, [r0, r2]
|
|
cmp r1, 0
|
|
bne _080A7950
|
|
movs r4, 0x1
|
|
movs r7, 0x3
|
|
b _080A7954
|
|
.pool
|
|
_080A7950:
|
|
movs r4, 0
|
|
movs r7, 0x1
|
|
_080A7954:
|
|
movs r1, 0xA
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _080A796C
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl sub_80A69CC
|
|
ldr r0, =gBattleAnimAttacker
|
|
b _080A7976
|
|
.pool
|
|
_080A796C:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl sub_80A6980
|
|
ldr r0, =gBattleAnimTarget
|
|
_080A7976:
|
|
ldrb r6, [r0]
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A798E
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r0, [r1, 0x4]
|
|
negs r0, r0
|
|
strh r0, [r1, 0x4]
|
|
_080A798E:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl sub_80A6980
|
|
ldr r4, =gBattleAnimArgs
|
|
ldrh r0, [r4, 0x8]
|
|
strh r0, [r5, 0x2E]
|
|
adds r0, r6, 0
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r2, [r4, 0x4]
|
|
adds r0, r2
|
|
strh r0, [r5, 0x32]
|
|
adds r0, r6, 0
|
|
adds r1, r7, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrh r4, [r4, 0x6]
|
|
adds r0, r4
|
|
strh r0, [r5, 0x36]
|
|
ldr r0, =sub_80A6EEC
|
|
str r0, [r5, 0x1C]
|
|
ldr r1, =DestroyAnimSprite
|
|
adds r0, r5, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A7938
|
|
|
|
thumb_func_start duplicate_obj_of_side_rel2move_in_transparent_mode
|
|
duplicate_obj_of_side_rel2move_in_transparent_mode: @ 80A79E8
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetAnimBattlerSpriteId
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0xFF
|
|
beq _080A7A52
|
|
movs r6, 0
|
|
ldr r2, =gSprites
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r1, r0, 2
|
|
_080A7A04:
|
|
lsls r0, r6, 4
|
|
adds r0, r6
|
|
lsls r0, 2
|
|
adds r4, r0, r2
|
|
adds r5, r4, 0
|
|
adds r5, 0x3E
|
|
ldrb r0, [r5]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
bne _080A7A48
|
|
adds r0, r4, 0
|
|
adds r1, r2
|
|
movs r2, 0x44
|
|
bl memcpy
|
|
ldrb r1, [r4, 0x1]
|
|
movs r2, 0xD
|
|
negs r2, r2
|
|
adds r0, r2, 0
|
|
ands r1, r0
|
|
movs r0, 0x4
|
|
orrs r1, r0
|
|
strb r1, [r4, 0x1]
|
|
ldrb r0, [r5]
|
|
adds r2, 0x8
|
|
adds r1, r2, 0
|
|
ands r0, r1
|
|
strb r0, [r5]
|
|
lsls r0, r6, 16
|
|
asrs r0, 16
|
|
b _080A7A56
|
|
.pool
|
|
_080A7A48:
|
|
adds r0, r6, 0x1
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
cmp r6, 0x3F
|
|
bls _080A7A04
|
|
_080A7A52:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
_080A7A56:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end duplicate_obj_of_side_rel2move_in_transparent_mode
|
|
|
|
thumb_func_start obj_delete_but_dont_free_vram
|
|
obj_delete_but_dont_free_vram: @ 80A7A5C
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
adds r3, 0x3F
|
|
ldrb r1, [r3]
|
|
movs r2, 0x40
|
|
orrs r1, r2
|
|
strb r1, [r3]
|
|
bl DestroySprite
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end obj_delete_but_dont_free_vram
|
|
|
|
thumb_func_start sub_80A7A74
|
|
sub_80A7A74: @ 80A7A74
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r6, 0
|
|
movs r3, 0
|
|
ldr r2, =gBattleAnimArgs
|
|
movs r0, 0x4
|
|
ldrsh r1, [r2, r0]
|
|
movs r4, 0
|
|
ldrsh r0, [r2, r4]
|
|
cmp r1, r0
|
|
ble _080A7A8E
|
|
movs r3, 0x1
|
|
_080A7A8E:
|
|
cmp r1, r0
|
|
bge _080A7A94
|
|
ldr r3, =0x0000ffff
|
|
_080A7A94:
|
|
movs r0, 0x6
|
|
ldrsh r1, [r2, r0]
|
|
movs r4, 0x2
|
|
ldrsh r0, [r2, r4]
|
|
cmp r1, r0
|
|
ble _080A7AA2
|
|
movs r6, 0x1
|
|
_080A7AA2:
|
|
cmp r1, r0
|
|
bge _080A7AA8
|
|
ldr r6, =0x0000ffff
|
|
_080A7AA8:
|
|
ldr r0, =gTasks
|
|
lsls r4, r5, 2
|
|
adds r4, r5
|
|
lsls r4, 3
|
|
adds r4, r0
|
|
movs r1, 0
|
|
strh r1, [r4, 0x8]
|
|
ldrh r0, [r2, 0x8]
|
|
strh r0, [r4, 0xA]
|
|
strh r1, [r4, 0xC]
|
|
ldrh r0, [r2]
|
|
strh r0, [r4, 0xE]
|
|
ldrh r0, [r2, 0x2]
|
|
strh r0, [r4, 0x10]
|
|
strh r3, [r4, 0x12]
|
|
strh r6, [r4, 0x14]
|
|
ldrh r0, [r2, 0x4]
|
|
strh r0, [r4, 0x16]
|
|
ldrh r0, [r2, 0x6]
|
|
strh r0, [r4, 0x18]
|
|
ldrh r1, [r2, 0x2]
|
|
lsls r1, 8
|
|
ldrh r0, [r2]
|
|
orrs r1, r0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
ldr r0, =sub_80A7AFC
|
|
str r0, [r4]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A7A74
|
|
|
|
thumb_func_start sub_80A7AFC
|
|
sub_80A7AFC: @ 80A7AFC
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r4, r0, r1
|
|
ldrh r0, [r4, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x8]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r2, 0xA
|
|
ldrsh r1, [r4, r2]
|
|
cmp r0, r1
|
|
ble _080A7B90
|
|
movs r0, 0
|
|
strh r0, [r4, 0x8]
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A7B4C
|
|
ldrh r2, [r4, 0xE]
|
|
movs r3, 0xE
|
|
ldrsh r1, [r4, r3]
|
|
movs r3, 0x16
|
|
ldrsh r0, [r4, r3]
|
|
cmp r1, r0
|
|
beq _080A7B60
|
|
ldrh r0, [r4, 0x12]
|
|
adds r0, r2, r0
|
|
strh r0, [r4, 0xE]
|
|
b _080A7B60
|
|
.pool
|
|
_080A7B4C:
|
|
ldrh r2, [r4, 0x10]
|
|
movs r0, 0x10
|
|
ldrsh r1, [r4, r0]
|
|
movs r3, 0x18
|
|
ldrsh r0, [r4, r3]
|
|
cmp r1, r0
|
|
beq _080A7B60
|
|
ldrh r0, [r4, 0x14]
|
|
adds r0, r2, r0
|
|
strh r0, [r4, 0x10]
|
|
_080A7B60:
|
|
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
|
|
movs r0, 0xE
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, 0x16
|
|
ldrsh r0, [r4, r2]
|
|
cmp r1, r0
|
|
bne _080A7B90
|
|
movs r3, 0x10
|
|
ldrsh r1, [r4, r3]
|
|
movs r2, 0x18
|
|
ldrsh r0, [r4, r2]
|
|
cmp r1, r0
|
|
bne _080A7B90
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080A7B90:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A7AFC
|
|
|
|
thumb_func_start sub_80A7B98
|
|
sub_80A7B98: @ 80A7B98
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, =gBattleAnimArgs
|
|
ldrb r0, [r0]
|
|
bl GetAnimBattlerSpriteId
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
cmp r3, 0xFF
|
|
bne _080A7BBC
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
b _080A7BE2
|
|
.pool
|
|
_080A7BBC:
|
|
ldr r1, =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldr r2, =gSprites
|
|
lsls r1, r3, 4
|
|
adds r1, r3
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrb r1, [r1, 0x5]
|
|
lsrs r1, 4
|
|
lsls r1, 4
|
|
ldr r3, =0x00000101
|
|
adds r2, r3, 0
|
|
adds r1, r2
|
|
strh r1, [r0, 0x8]
|
|
bl sub_80A7BF4
|
|
_080A7BE2:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A7B98
|
|
|
|
thumb_func_start sub_80A7BF4
|
|
sub_80A7BF4: @ 80A7BF4
|
|
ldr r3, =gBattleAnimArgs
|
|
ldrh r1, [r3, 0x2]
|
|
movs r2, 0
|
|
strh r1, [r0, 0xA]
|
|
strh r2, [r0, 0xC]
|
|
ldrh r1, [r3, 0x4]
|
|
strh r1, [r0, 0xE]
|
|
strh r2, [r0, 0x10]
|
|
ldrh r1, [r3, 0x6]
|
|
strh r1, [r0, 0x12]
|
|
strh r2, [r0, 0x14]
|
|
ldrh r1, [r3, 0x8]
|
|
strh r1, [r0, 0x16]
|
|
ldr r1, =sub_80A7C1C
|
|
str r1, [r0]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end sub_80A7BF4
|
|
|
|
thumb_func_start sub_80A7C1C
|
|
sub_80A7C1C: @ 80A7C1C
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r5, r0, 0
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r4, r0, r1
|
|
ldrh r0, [r4, 0x10]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x10]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
movs r2, 0x12
|
|
ldrsh r1, [r4, r2]
|
|
cmp r0, r1
|
|
blt _080A7CAC
|
|
movs r0, 0
|
|
strh r0, [r4, 0x10]
|
|
movs r1, 0x14
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0
|
|
bne _080A7C78
|
|
ldrh r2, [r4, 0xC]
|
|
adds r2, 0x1
|
|
strh r2, [r4, 0xC]
|
|
ldrh r0, [r4, 0x8]
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
ldrh r3, [r4, 0xA]
|
|
movs r1, 0xF
|
|
bl BlendPalette
|
|
movs r2, 0xC
|
|
ldrsh r1, [r4, r2]
|
|
movs r2, 0xE
|
|
ldrsh r0, [r4, r2]
|
|
cmp r1, r0
|
|
bne _080A7CAC
|
|
movs r0, 0x1
|
|
strh r0, [r4, 0x14]
|
|
b _080A7CAC
|
|
.pool
|
|
_080A7C78:
|
|
ldrh r2, [r4, 0xC]
|
|
subs r2, 0x1
|
|
strh r2, [r4, 0xC]
|
|
ldrh r0, [r4, 0x8]
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
ldrh r3, [r4, 0xA]
|
|
movs r1, 0xF
|
|
bl BlendPalette
|
|
movs r0, 0xC
|
|
ldrsh r1, [r4, r0]
|
|
cmp r1, 0
|
|
bne _080A7CAC
|
|
ldrh r0, [r4, 0x16]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x16]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080A7CA6
|
|
strh r1, [r4, 0x10]
|
|
strh r1, [r4, 0x14]
|
|
b _080A7CAC
|
|
_080A7CA6:
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080A7CAC:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A7C1C
|
|
|
|
thumb_func_start sub_80A7CB4
|
|
sub_80A7CB4: @ 80A7CB4
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, =gBattleAnimArgs
|
|
ldrh r0, [r0]
|
|
bl IndexOfSpritePaletteTag
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, 0xFF
|
|
bne _080A7CD8
|
|
adds r0, r4, 0
|
|
bl DestroyAnimVisualTask
|
|
b _080A7CEE
|
|
.pool
|
|
_080A7CD8:
|
|
ldr r1, =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
lsls r1, r2, 4
|
|
ldr r2, =0x00000101
|
|
adds r1, r2
|
|
strh r1, [r0, 0x8]
|
|
bl sub_80A7BF4
|
|
_080A7CEE:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A7CB4
|
|
|
|
thumb_func_start sub_80A7CFC
|
|
sub_80A7CFC: @ 80A7CFC
|
|
push {r4,lr}
|
|
adds r3, r0, 0
|
|
adds r4, r1, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
movs r1, 0
|
|
strh r1, [r3, 0x16]
|
|
strh r1, [r3, 0x18]
|
|
strh r1, [r3, 0x1A]
|
|
strh r4, [r3, 0x26]
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
strh r0, [r3, 0x1C]
|
|
strh r0, [r3, 0x1E]
|
|
strh r1, [r3, 0x20]
|
|
adds r0, r3, 0
|
|
adds r0, 0x22
|
|
adds r3, 0x24
|
|
adds r1, r3, 0
|
|
bl sub_80A8048
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl sub_80A7270
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A7CFC
|
|
|
|
thumb_func_start sub_80A7D34
|
|
sub_80A7D34: @ 80A7D34
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, =gUnknown_02038444
|
|
movs r1, 0x22
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x24
|
|
ldrsh r1, [r4, r2]
|
|
bl sub_80A8050
|
|
movs r3, 0x16
|
|
ldrsh r1, [r4, r3]
|
|
lsls r1, 3
|
|
adds r1, r0, r1
|
|
str r1, [r5]
|
|
movs r6, 0
|
|
ldrsh r2, [r1, r6]
|
|
ldr r0, =0x00007ffe
|
|
cmp r2, r0
|
|
beq _080A7DDC
|
|
cmp r2, r0
|
|
bgt _080A7E3C
|
|
subs r0, 0x1
|
|
cmp r2, r0
|
|
beq _080A7DE2
|
|
ldrb r0, [r1, 0x5]
|
|
cmp r0, 0
|
|
bne _080A7D82
|
|
ldrh r0, [r1]
|
|
strh r0, [r4, 0x1C]
|
|
ldrh r0, [r1, 0x2]
|
|
strh r0, [r4, 0x1E]
|
|
ldrb r0, [r1, 0x4]
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r4, 0x16]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x16]
|
|
adds r0, r1, 0
|
|
adds r0, 0x8
|
|
str r0, [r5]
|
|
_080A7D82:
|
|
ldr r1, [r5]
|
|
ldrh r0, [r1]
|
|
ldrh r2, [r4, 0x1C]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x1C]
|
|
ldrh r0, [r1, 0x2]
|
|
ldrh r3, [r4, 0x1E]
|
|
adds r0, r3
|
|
strh r0, [r4, 0x1E]
|
|
ldrh r0, [r4, 0x20]
|
|
ldrb r1, [r1, 0x4]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r4, 0x26]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r6, 0x1C
|
|
ldrsh r1, [r4, r6]
|
|
movs r3, 0x1E
|
|
ldrsh r2, [r4, r3]
|
|
ldrh r3, [r4, 0x20]
|
|
bl obj_id_set_rotscale
|
|
ldrh r0, [r4, 0x26]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_80A7E6C
|
|
ldrh r0, [r4, 0x18]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x18]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
ldr r1, [r5]
|
|
ldrb r1, [r1, 0x5]
|
|
cmp r0, r1
|
|
blt _080A7E62
|
|
movs r0, 0
|
|
strh r0, [r4, 0x18]
|
|
b _080A7E34
|
|
.pool
|
|
_080A7DDC:
|
|
ldrh r0, [r1, 0x2]
|
|
strh r0, [r4, 0x16]
|
|
b _080A7E62
|
|
_080A7DE2:
|
|
ldrh r2, [r1, 0x2]
|
|
movs r6, 0x2
|
|
ldrsh r0, [r1, r6]
|
|
cmp r0, 0
|
|
beq _080A7E34
|
|
ldrh r1, [r4, 0x1A]
|
|
movs r3, 0x1A
|
|
ldrsh r0, [r4, r3]
|
|
cmp r0, 0
|
|
beq _080A7E02
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x1A]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080A7E04
|
|
b _080A7E34
|
|
_080A7E02:
|
|
strh r2, [r4, 0x1A]
|
|
_080A7E04:
|
|
movs r6, 0x16
|
|
ldrsh r0, [r4, r6]
|
|
cmp r0, 0
|
|
beq _080A7E62
|
|
ldr r3, =gUnknown_02038444
|
|
ldr r5, =0x00007ffd
|
|
_080A7E10:
|
|
ldrh r2, [r4, 0x16]
|
|
subs r1, r2, 0x1
|
|
strh r1, [r4, 0x16]
|
|
ldr r0, [r3]
|
|
subs r0, 0x8
|
|
str r0, [r3]
|
|
movs r6, 0
|
|
ldrsh r0, [r0, r6]
|
|
cmp r0, r5
|
|
beq _080A7E60
|
|
lsls r0, r1, 16
|
|
cmp r0, 0
|
|
bne _080A7E10
|
|
b _080A7E62
|
|
.pool
|
|
_080A7E34:
|
|
ldrh r0, [r4, 0x16]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x16]
|
|
b _080A7E62
|
|
_080A7E3C:
|
|
ldr r2, =gSprites
|
|
movs r0, 0x26
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
movs r1, 0
|
|
strh r1, [r0, 0x26]
|
|
ldrh r0, [r4, 0x26]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_80A7344
|
|
movs r0, 0
|
|
b _080A7E64
|
|
.pool
|
|
_080A7E60:
|
|
strh r2, [r4, 0x16]
|
|
_080A7E62:
|
|
movs r0, 0x1
|
|
_080A7E64:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A7D34
|
|
|
|
thumb_func_start sub_80A7E6C
|
|
sub_80A7E6C: @ 80A7E6C
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
bl sub_80A7F18
|
|
lsls r0, 16
|
|
lsrs r0, 15
|
|
movs r1, 0x40
|
|
subs r5, r1, r0
|
|
ldr r1, =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r4, r0, r1
|
|
ldrb r1, [r4, 0x3]
|
|
lsls r1, 26
|
|
lsrs r1, 27
|
|
lsls r0, r5, 8
|
|
ldr r2, =gOamMatrices
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
movs r2, 0x6
|
|
ldrsh r1, [r1, r2]
|
|
bl __divsi3
|
|
cmp r0, 0x80
|
|
ble _080A7EA8
|
|
movs r0, 0x80
|
|
_080A7EA8:
|
|
subs r0, r5, r0
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
strh r0, [r4, 0x26]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A7E6C
|
|
|
|
thumb_func_start sub_80A7EC0
|
|
sub_80A7EC0: @ 80A7EC0
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
adds r0, r1, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_80A7F18
|
|
lsls r0, 16
|
|
lsrs r0, 15
|
|
movs r1, 0x40
|
|
subs r5, r1, r0
|
|
ldr r1, =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r4, r0, r1
|
|
ldrb r1, [r4, 0x3]
|
|
lsls r1, 26
|
|
lsrs r1, 27
|
|
lsls r0, r5, 8
|
|
ldr r2, =gOamMatrices
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
movs r2, 0x6
|
|
ldrsh r1, [r1, r2]
|
|
bl __divsi3
|
|
cmp r0, 0x80
|
|
ble _080A7F00
|
|
movs r0, 0x80
|
|
_080A7F00:
|
|
subs r0, r5, r0
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
strh r0, [r4, 0x26]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A7EC0
|
|
|
|
thumb_func_start sub_80A7F18
|
|
sub_80A7F18: @ 80A7F18
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r1, =gSprites
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x2E]
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r4, 0
|
|
ldr r1, =gBattlerSpriteIds
|
|
ldr r7, =0x00000181
|
|
ldr r0, =gBattleMonForms
|
|
adds r6, r5, r0
|
|
_080A7F38:
|
|
adds r0, r4, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, r2
|
|
beq _080A7F42
|
|
b _080A8034
|
|
_080A7F42:
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A7F78
|
|
ldr r0, =gContestResources
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, 0x18]
|
|
ldrh r2, [r0]
|
|
ldr r1, =gUnknown_083021D8
|
|
lsls r0, r2, 2
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x1]
|
|
b _080A8042
|
|
.pool
|
|
_080A7F78:
|
|
lsls r0, r4, 24
|
|
lsrs r0, 24
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A7FD8
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r5, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _080A7FC0
|
|
ldr r1, =gBattlerPartyIndexes
|
|
lsls r0, r4, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r2, r0, 16
|
|
b _080A7FC2
|
|
.pool
|
|
_080A7FC0:
|
|
ldrh r2, [r1, 0x2]
|
|
_080A7FC2:
|
|
cmp r2, r7
|
|
bne _080A7FD0
|
|
ldr r0, =gUnknown_08525F8C
|
|
b _080A8018
|
|
.pool
|
|
_080A7FD0:
|
|
ldr r0, =gUnknown_083021D8
|
|
b _080A8026
|
|
.pool
|
|
_080A7FD8:
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r5, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _080A8010
|
|
ldr r1, =gBattlerPartyIndexes
|
|
lsls r0, r4, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r2, r0, 16
|
|
b _080A8012
|
|
.pool
|
|
_080A8010:
|
|
ldrh r2, [r1, 0x2]
|
|
_080A8012:
|
|
cmp r2, r7
|
|
bne _080A8024
|
|
ldr r0, =gUnknown_08525F88
|
|
_080A8018:
|
|
ldrb r1, [r6]
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
b _080A8042
|
|
.pool
|
|
_080A8024:
|
|
ldr r0, =gMonFrontPicCoords
|
|
_080A8026:
|
|
lsls r1, r2, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
b _080A8042
|
|
.pool
|
|
_080A8034:
|
|
adds r0, r4, 0x1
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
cmp r4, 0x3
|
|
bhi _080A8040
|
|
b _080A7F38
|
|
_080A8040:
|
|
movs r0, 0x40
|
|
_080A8042:
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A7F18
|
|
|
|
thumb_func_start sub_80A8048
|
|
sub_80A8048: @ 80A8048
|
|
strh r2, [r0]
|
|
asrs r2, 16
|
|
strh r2, [r1]
|
|
bx lr
|
|
thumb_func_end sub_80A8048
|
|
|
|
thumb_func_start sub_80A8050
|
|
sub_80A8050: @ 80A8050
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
lsls r1, 16
|
|
orrs r0, r1
|
|
bx lr
|
|
thumb_func_end sub_80A8050
|
|
|
|
thumb_func_start sub_80A805C
|
|
sub_80A805C: @ 80A805C
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
mov r8, r0
|
|
adds r5, r3, 0
|
|
ldr r0, [sp, 0x14]
|
|
ldr r4, [sp, 0x18]
|
|
ldr r6, [sp, 0x1C]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r6, 16
|
|
lsrs r6, 16
|
|
mov r3, r8
|
|
strh r6, [r3, 0x18]
|
|
strh r1, [r3, 0x26]
|
|
strh r2, [r3, 0x1A]
|
|
strh r5, [r3, 0x1C]
|
|
strh r0, [r3, 0x22]
|
|
strh r4, [r3, 0x24]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
lsls r2, 16
|
|
asrs r2, 16
|
|
subs r0, r2
|
|
adds r1, r6, 0
|
|
bl __divsi3
|
|
mov r1, r8
|
|
strh r0, [r1, 0x1E]
|
|
lsls r4, 16
|
|
asrs r4, 16
|
|
lsls r5, 16
|
|
asrs r5, 16
|
|
subs r4, r5
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl __divsi3
|
|
mov r3, r8
|
|
strh r0, [r3, 0x20]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A805C
|
|
|
|
thumb_func_start sub_80A80C8
|
|
sub_80A80C8: @ 80A80C8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r1, [r4, 0x18]
|
|
movs r2, 0x18
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bne _080A80DA
|
|
movs r0, 0
|
|
b _080A8136
|
|
_080A80DA:
|
|
subs r0, r1, 0x1
|
|
strh r0, [r4, 0x18]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080A80F4
|
|
ldrh r0, [r4, 0x1E]
|
|
ldrh r3, [r4, 0x1A]
|
|
adds r0, r3
|
|
strh r0, [r4, 0x1A]
|
|
ldrh r0, [r4, 0x20]
|
|
ldrh r1, [r4, 0x1C]
|
|
adds r0, r1
|
|
b _080A80FA
|
|
_080A80F4:
|
|
ldrh r0, [r4, 0x22]
|
|
strh r0, [r4, 0x1A]
|
|
ldrh r0, [r4, 0x24]
|
|
_080A80FA:
|
|
strh r0, [r4, 0x1C]
|
|
ldrh r0, [r4, 0x26]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r2, 0x1A
|
|
ldrsh r1, [r4, r2]
|
|
movs r3, 0x1C
|
|
ldrsh r2, [r4, r3]
|
|
movs r3, 0
|
|
bl obj_id_set_rotscale
|
|
movs r0, 0x18
|
|
ldrsh r3, [r4, r0]
|
|
cmp r3, 0
|
|
beq _080A8124
|
|
ldrh r0, [r4, 0x26]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_80A7E6C
|
|
b _080A8134
|
|
_080A8124:
|
|
ldr r2, =gSprites
|
|
movs r0, 0x26
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
strh r3, [r0, 0x26]
|
|
_080A8134:
|
|
ldrb r0, [r4, 0x18]
|
|
_080A8136:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_80A80C8
|
|
|
|
thumb_func_start sub_80A8140
|
|
sub_80A8140: @ 80A8140
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r0, =gAnimFriendship
|
|
ldrb r0, [r0]
|
|
movs r1, 0
|
|
cmp r0, 0x1E
|
|
bls _080A815E
|
|
movs r1, 0x1
|
|
cmp r0, 0x64
|
|
bls _080A815E
|
|
movs r1, 0x3
|
|
cmp r0, 0xC8
|
|
bhi _080A815E
|
|
movs r1, 0x2
|
|
_080A815E:
|
|
ldr r0, =gBattleAnimArgs
|
|
strh r1, [r0, 0xE]
|
|
adds r0, r2, 0
|
|
bl DestroyAnimVisualTask
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A8140
|
|
|
|
thumb_func_start sub_80A8174
|
|
sub_80A8174: @ 80A8174
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r7, r4, 0
|
|
ldr r6, =gBattleAnimTarget
|
|
ldrb r0, [r6]
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A81B4
|
|
ldr r2, =gSprites
|
|
ldr r1, =gBattlerSpriteIds
|
|
ldrb r0, [r6]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
movs r0, 0x3
|
|
adds r2, r4, 0
|
|
ands r2, r0
|
|
lsls r2, 2
|
|
ldrb r3, [r1, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r3
|
|
orrs r0, r2
|
|
strb r0, [r1, 0x5]
|
|
_080A81B4:
|
|
ldr r0, =gBattleAnimAttacker
|
|
mov r8, r0
|
|
ldrb r0, [r0]
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A81EC
|
|
ldr r2, =gSprites
|
|
ldr r1, =gBattlerSpriteIds
|
|
mov r3, r8
|
|
ldrb r0, [r3]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
movs r0, 0x3
|
|
adds r2, r4, 0
|
|
ands r2, r0
|
|
lsls r2, 2
|
|
ldrb r3, [r1, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r3
|
|
orrs r0, r2
|
|
strb r0, [r1, 0x5]
|
|
_080A81EC:
|
|
ldrb r0, [r6]
|
|
movs r5, 0x2
|
|
eors r0, r5
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8224
|
|
ldr r2, =gSprites
|
|
ldr r1, =gBattlerSpriteIds
|
|
ldrb r0, [r6]
|
|
eors r0, r5
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
movs r0, 0x3
|
|
adds r2, r4, 0
|
|
ands r2, r0
|
|
lsls r2, 2
|
|
ldrb r3, [r1, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r3
|
|
orrs r0, r2
|
|
strb r0, [r1, 0x5]
|
|
_080A8224:
|
|
mov r1, r8
|
|
ldrb r0, [r1]
|
|
eors r0, r5
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A825C
|
|
ldr r2, =gSprites
|
|
ldr r1, =gBattlerSpriteIds
|
|
mov r3, r8
|
|
ldrb r0, [r3]
|
|
eors r0, r5
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
movs r0, 0x3
|
|
ands r7, r0
|
|
lsls r3, r7, 2
|
|
ldrb r2, [r1, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r3
|
|
strb r0, [r1, 0x5]
|
|
_080A825C:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A8174
|
|
|
|
thumb_func_start sub_80A8278
|
|
sub_80A8278: @ 80A8278
|
|
push {r4-r6,lr}
|
|
movs r5, 0
|
|
ldr r0, =gBattlersCount
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
bge _080A82D2
|
|
ldr r6, =gSprites
|
|
_080A8286:
|
|
lsls r0, r5, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r4, 0
|
|
bl IsBattlerSpriteVisible
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A82C8
|
|
adds r0, r4, 0
|
|
bl sub_80A82E4
|
|
ldr r3, =gBattlerSpriteIds
|
|
adds r3, r5, r3
|
|
ldrb r2, [r3]
|
|
lsls r1, r2, 4
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
adds r1, 0x43
|
|
strb r0, [r1]
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
ldrb r2, [r0, 0x5]
|
|
movs r3, 0xD
|
|
negs r3, r3
|
|
adds r1, r3, 0
|
|
ands r2, r1
|
|
movs r1, 0x8
|
|
orrs r2, r1
|
|
strb r2, [r0, 0x5]
|
|
_080A82C8:
|
|
adds r5, 0x1
|
|
ldr r0, =gBattlersCount
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _080A8286
|
|
_080A82D2:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A8278
|
|
|
|
thumb_func_start sub_80A82E4
|
|
sub_80A82E4: @ 80A82E4
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8300
|
|
cmp r4, 0x2
|
|
bne _080A82FC
|
|
movs r0, 0x1E
|
|
b _080A8320
|
|
_080A82FC:
|
|
movs r0, 0x28
|
|
b _080A8320
|
|
_080A8300:
|
|
adds r0, r4, 0
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x1E
|
|
cmp r0, 0
|
|
beq _080A831E
|
|
movs r1, 0x14
|
|
cmp r0, 0x2
|
|
beq _080A831E
|
|
movs r1, 0x32
|
|
cmp r0, 0x1
|
|
bne _080A831E
|
|
movs r1, 0x28
|
|
_080A831E:
|
|
adds r0, r1, 0
|
|
_080A8320:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A82E4
|
|
|
|
thumb_func_start sub_80A8328
|
|
sub_80A8328: @ 80A8328
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8344
|
|
movs r0, 0x2
|
|
b _080A835C
|
|
_080A8344:
|
|
cmp r4, 0
|
|
beq _080A834C
|
|
cmp r4, 0x3
|
|
bne _080A8350
|
|
_080A834C:
|
|
movs r0, 0x2
|
|
b _080A8352
|
|
_080A8350:
|
|
movs r0, 0x1
|
|
_080A8352:
|
|
movs r1, 0x4
|
|
bl sub_8118140
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
_080A835C:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A8328
|
|
|
|
thumb_func_start sub_80A8364
|
|
sub_80A8364: @ 80A8364
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A838A
|
|
adds r0, r4, 0
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _080A8386
|
|
cmp r0, 0x3
|
|
bne _080A838A
|
|
_080A8386:
|
|
movs r0, 0x2
|
|
b _080A838C
|
|
_080A838A:
|
|
movs r0, 0x1
|
|
_080A838C:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A8364
|
|
|
|
thumb_func_start sub_80A8394
|
|
sub_80A8394: @ 80A8394
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x10
|
|
ldr r4, [sp, 0x30]
|
|
ldr r5, [sp, 0x34]
|
|
ldr r6, [sp, 0x38]
|
|
mov r8, r6
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r9, r1
|
|
lsls r2, 24
|
|
lsrs r7, r2, 24
|
|
lsls r3, 16
|
|
lsrs r3, 16
|
|
mov r10, r3
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
str r4, [sp, 0x4]
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
str r5, [sp, 0x8]
|
|
lsls r0, r7, 3
|
|
ldr r1, =gUnknown_08525FC0
|
|
adds r0, r1
|
|
bl LoadSpriteSheet
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0xC]
|
|
ldr r1, =gUnknown_08525F90
|
|
lsls r0, r7, 1
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x2]
|
|
bl AllocSpritePalette
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r4, =gMonSpritesGfxPtr
|
|
ldr r0, [r4]
|
|
cmp r0, 0
|
|
beq _080A8412
|
|
movs r1, 0xBE
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _080A8412
|
|
movs r0, 0x80
|
|
lsls r0, 6
|
|
bl AllocZeroed
|
|
ldr r1, [r4]
|
|
movs r2, 0xBE
|
|
lsls r2, 1
|
|
adds r1, r2
|
|
str r0, [r1]
|
|
_080A8412:
|
|
mov r3, r9
|
|
cmp r3, 0
|
|
bne _080A84B0
|
|
adds r0, r6, 0
|
|
ldr r1, [sp, 0x3C]
|
|
mov r2, r8
|
|
bl GetFrontSpritePalFromSpeciesAndPersonality
|
|
lsls r1, r5, 20
|
|
movs r2, 0x80
|
|
lsls r2, 17
|
|
adds r1, r2
|
|
lsrs r1, 16
|
|
movs r2, 0x20
|
|
bl LoadCompressedPalette
|
|
ldr r3, [sp, 0x44]
|
|
cmp r3, 0x1
|
|
beq _080A845E
|
|
ldr r0, [sp, 0x40]
|
|
lsls r1, r0, 24
|
|
lsrs r1, 24
|
|
movs r0, 0x5
|
|
bl sub_80688F8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _080A845E
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
ldr r2, [sp, 0x40]
|
|
lsls r0, r2, 2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x2]
|
|
cmp r0, 0
|
|
beq _080A8488
|
|
_080A845E:
|
|
lsls r0, r6, 3
|
|
ldr r1, =gMonFrontPicTable
|
|
adds r0, r1
|
|
ldr r1, =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
movs r3, 0xBE
|
|
lsls r3, 1
|
|
adds r1, r3
|
|
ldr r1, [r1]
|
|
movs r2, 0x1
|
|
b _080A850A
|
|
.pool
|
|
_080A8488:
|
|
lsls r0, r6, 3
|
|
ldr r1, =gMonFrontPicTable
|
|
adds r0, r1
|
|
ldr r1, =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
movs r2, 0xBE
|
|
lsls r2, 1
|
|
adds r1, r2
|
|
ldr r1, [r1]
|
|
movs r2, 0x1
|
|
str r2, [sp]
|
|
adds r2, r6, 0
|
|
mov r3, r8
|
|
bl LoadSpecialPokePic_2
|
|
b _080A8540
|
|
.pool
|
|
_080A84B0:
|
|
adds r0, r6, 0
|
|
ldr r1, [sp, 0x3C]
|
|
mov r2, r8
|
|
bl GetFrontSpritePalFromSpeciesAndPersonality
|
|
lsls r1, r5, 20
|
|
movs r3, 0x80
|
|
lsls r3, 17
|
|
adds r1, r3
|
|
lsrs r1, 16
|
|
movs r2, 0x20
|
|
bl LoadCompressedPalette
|
|
ldr r0, [sp, 0x44]
|
|
cmp r0, 0x1
|
|
beq _080A84F6
|
|
ldr r2, [sp, 0x40]
|
|
lsls r1, r2, 24
|
|
lsrs r1, 24
|
|
movs r0, 0x5
|
|
bl sub_80688F8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _080A84F6
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
ldr r3, [sp, 0x40]
|
|
lsls r0, r3, 2
|
|
adds r0, r1
|
|
ldrh r2, [r0, 0x2]
|
|
cmp r2, 0
|
|
beq _080A8524
|
|
_080A84F6:
|
|
lsls r0, r6, 3
|
|
ldr r1, =gMonBackPicTable
|
|
adds r0, r1
|
|
ldr r1, =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
movs r2, 0xBE
|
|
lsls r2, 1
|
|
adds r1, r2
|
|
ldr r1, [r1]
|
|
movs r2, 0
|
|
_080A850A:
|
|
str r2, [sp]
|
|
adds r2, r6, 0
|
|
mov r3, r8
|
|
bl LoadSpecialPokePic_DontHandleDeoxys
|
|
b _080A8540
|
|
.pool
|
|
_080A8524:
|
|
lsls r0, r6, 3
|
|
ldr r1, =gMonBackPicTable
|
|
adds r0, r1
|
|
ldr r1, =gMonSpritesGfxPtr
|
|
ldr r1, [r1]
|
|
movs r3, 0xBE
|
|
lsls r3, 1
|
|
adds r1, r3
|
|
ldr r1, [r1]
|
|
str r2, [sp]
|
|
adds r2, r6, 0
|
|
mov r3, r8
|
|
bl LoadSpecialPokePic_2
|
|
_080A8540:
|
|
ldr r5, =gMonSpritesGfxPtr
|
|
ldr r0, [r5]
|
|
movs r4, 0xBE
|
|
lsls r4, 1
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
ldr r2, [sp, 0xC]
|
|
lsls r1, r2, 5
|
|
ldr r3, =0x06010000
|
|
adds r1, r3
|
|
movs r2, 0x80
|
|
lsls r2, 4
|
|
movs r3, 0x1
|
|
bl RequestDma3Copy
|
|
ldr r0, [r5]
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
bl Free
|
|
ldr r0, [r5]
|
|
adds r0, r4
|
|
movs r1, 0
|
|
str r1, [r0]
|
|
mov r0, r9
|
|
cmp r0, 0
|
|
bne _080A85A0
|
|
lsls r0, r7, 1
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
ldr r1, =gUnknown_08525F90
|
|
adds r0, r1
|
|
mov r2, r10
|
|
lsls r1, r2, 16
|
|
asrs r1, 16
|
|
ldr r3, =gMonFrontPicCoords
|
|
b _080A85B2
|
|
.pool
|
|
_080A85A0:
|
|
lsls r0, r7, 1
|
|
adds r0, r7
|
|
lsls r0, 3
|
|
ldr r1, =gUnknown_08525F90
|
|
adds r0, r1
|
|
mov r2, r10
|
|
lsls r1, r2, 16
|
|
asrs r1, 16
|
|
ldr r3, =gUnknown_083021D8
|
|
_080A85B2:
|
|
lsls r2, r6, 2
|
|
adds r2, r3
|
|
ldrb r2, [r2, 0x1]
|
|
ldr r3, [sp, 0x4]
|
|
adds r2, r3
|
|
lsls r2, 16
|
|
asrs r2, 16
|
|
ldr r3, [sp, 0x8]
|
|
bl CreateSprite
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A85EE
|
|
ldr r3, =gSprites
|
|
lsls r0, r4, 4
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r1, r3, 0
|
|
adds r1, 0x10
|
|
adds r1, r0, r1
|
|
ldr r2, =gUnknown_082FF6C0
|
|
str r2, [r1]
|
|
adds r0, r3
|
|
movs r1, 0
|
|
bl StartSpriteAffineAnim
|
|
_080A85EE:
|
|
adds r0, r4, 0
|
|
add sp, 0x10
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_80A8394
|
|
|
|
thumb_func_start sub_80A8610
|
|
sub_80A8610: @ 80A8610
|
|
push {lr}
|
|
bl DestroySpriteAndFreeResources
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A8610
|
|
|
|
thumb_func_start sub_80A861C
|
|
sub_80A861C: @ 80A861C
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r9, r1
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A86C4
|
|
ldr r0, =gContestResources
|
|
ldr r0, [r0]
|
|
ldr r2, [r0, 0x18]
|
|
ldrb r1, [r2, 0x4]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080A8654
|
|
ldrh r7, [r2, 0x2]
|
|
ldr r2, [r2, 0x10]
|
|
b _080A8658
|
|
.pool
|
|
_080A8654:
|
|
ldrh r7, [r2]
|
|
ldr r2, [r2, 0x8]
|
|
_080A8658:
|
|
cmp r7, 0xC9
|
|
bne _080A86A4
|
|
movs r0, 0xC0
|
|
lsls r0, 18
|
|
ands r0, r2
|
|
lsrs r0, 18
|
|
movs r1, 0xC0
|
|
lsls r1, 10
|
|
ands r1, r2
|
|
lsrs r1, 12
|
|
orrs r0, r1
|
|
movs r1, 0xC0
|
|
lsls r1, 2
|
|
ands r1, r2
|
|
lsrs r1, 6
|
|
orrs r0, r1
|
|
movs r1, 0x3
|
|
ands r1, r2
|
|
orrs r0, r1
|
|
movs r1, 0x1C
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0
|
|
bne _080A8690
|
|
movs r0, 0xC9
|
|
b _080A869A
|
|
_080A8690:
|
|
movs r1, 0xCE
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
_080A869A:
|
|
lsls r1, r0, 2
|
|
ldr r0, =gUnknown_083021D8
|
|
b _080A8864
|
|
.pool
|
|
_080A86A4:
|
|
ldr r0, =0x00000181
|
|
cmp r7, r0
|
|
bne _080A86AC
|
|
b _080A8834
|
|
_080A86AC:
|
|
movs r0, 0xCE
|
|
lsls r0, 1
|
|
cmp r7, r0
|
|
bhi _080A877C
|
|
lsls r1, r7, 2
|
|
ldr r0, =gUnknown_083021D8
|
|
b _080A8864
|
|
.pool
|
|
_080A86C4:
|
|
mov r0, r8
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A8790
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
mov r1, r8
|
|
lsls r2, r1, 2
|
|
adds r1, r2, r0
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _080A871C
|
|
ldr r0, =gBattlerPartyIndexes
|
|
mov r1, r8
|
|
lsls r4, r1, 1
|
|
adds r4, r0
|
|
ldrh r0, [r4]
|
|
movs r6, 0x64
|
|
muls r0, r6
|
|
ldr r5, =gPlayerParty
|
|
adds r0, r5
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
ldrh r0, [r4]
|
|
muls r0, r6
|
|
adds r0, r5
|
|
movs r1, 0
|
|
bl GetMonData
|
|
adds r2, r0, 0
|
|
b _080A8724
|
|
.pool
|
|
_080A871C:
|
|
ldrh r7, [r1, 0x2]
|
|
ldr r0, =gTransformedPersonalities
|
|
adds r0, r2, r0
|
|
ldr r2, [r0]
|
|
_080A8724:
|
|
cmp r7, 0xC9
|
|
bne _080A8774
|
|
movs r0, 0xC0
|
|
lsls r0, 18
|
|
ands r0, r2
|
|
lsrs r0, 18
|
|
movs r1, 0xC0
|
|
lsls r1, 10
|
|
ands r1, r2
|
|
lsrs r1, 12
|
|
orrs r0, r1
|
|
movs r1, 0xC0
|
|
lsls r1, 2
|
|
ands r1, r2
|
|
lsrs r1, 6
|
|
orrs r0, r1
|
|
movs r1, 0x3
|
|
ands r1, r2
|
|
orrs r0, r1
|
|
movs r1, 0x1C
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0
|
|
bne _080A8760
|
|
movs r0, 0xC9
|
|
b _080A876A
|
|
.pool
|
|
_080A8760:
|
|
movs r1, 0xCE
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
_080A876A:
|
|
lsls r1, r0, 2
|
|
ldr r0, =gUnknown_083021D8
|
|
b _080A8864
|
|
.pool
|
|
_080A8774:
|
|
movs r0, 0xCE
|
|
lsls r0, 1
|
|
cmp r7, r0
|
|
bls _080A8784
|
|
_080A877C:
|
|
ldr r4, =gUnknown_083021D8
|
|
b _080A8866
|
|
.pool
|
|
_080A8784:
|
|
lsls r1, r7, 2
|
|
ldr r0, =gUnknown_083021D8
|
|
b _080A8864
|
|
.pool
|
|
_080A8790:
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
mov r1, r8
|
|
lsls r2, r1, 2
|
|
adds r1, r2, r0
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _080A87DC
|
|
ldr r0, =gBattlerPartyIndexes
|
|
mov r1, r8
|
|
lsls r4, r1, 1
|
|
adds r4, r0
|
|
ldrh r0, [r4]
|
|
movs r6, 0x64
|
|
muls r0, r6
|
|
ldr r5, =gEnemyParty
|
|
adds r0, r5
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
ldrh r0, [r4]
|
|
muls r0, r6
|
|
adds r0, r5
|
|
movs r1, 0
|
|
bl GetMonData
|
|
adds r2, r0, 0
|
|
b _080A87E4
|
|
.pool
|
|
_080A87DC:
|
|
ldrh r7, [r1, 0x2]
|
|
ldr r0, =gTransformedPersonalities
|
|
adds r0, r2, r0
|
|
ldr r2, [r0]
|
|
_080A87E4:
|
|
cmp r7, 0xC9
|
|
bne _080A882E
|
|
movs r0, 0xC0
|
|
lsls r0, 18
|
|
ands r0, r2
|
|
lsrs r0, 18
|
|
movs r1, 0xC0
|
|
lsls r1, 10
|
|
ands r1, r2
|
|
lsrs r1, 12
|
|
orrs r0, r1
|
|
movs r1, 0xC0
|
|
lsls r1, 2
|
|
ands r1, r2
|
|
lsrs r1, 6
|
|
orrs r0, r1
|
|
movs r1, 0x3
|
|
ands r1, r2
|
|
orrs r0, r1
|
|
movs r1, 0x1C
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0
|
|
bne _080A8820
|
|
movs r0, 0xC9
|
|
b _080A882A
|
|
.pool
|
|
_080A8820:
|
|
movs r1, 0xCE
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
_080A882A:
|
|
lsls r1, r0, 2
|
|
b _080A8862
|
|
_080A882E:
|
|
ldr r0, =0x00000181
|
|
cmp r7, r0
|
|
bne _080A8850
|
|
_080A8834:
|
|
ldr r0, =gBattleMonForms
|
|
add r0, r8
|
|
ldrb r0, [r0]
|
|
lsls r0, 2
|
|
ldr r1, =gCastformFrontSpriteCoords
|
|
adds r4, r0, r1
|
|
b _080A8866
|
|
.pool
|
|
_080A8850:
|
|
movs r0, 0xCE
|
|
lsls r0, 1
|
|
cmp r7, r0
|
|
bls _080A8860
|
|
ldr r4, =gMonFrontPicCoords
|
|
b _080A8866
|
|
.pool
|
|
_080A8860:
|
|
lsls r1, r7, 2
|
|
_080A8862:
|
|
ldr r0, =gMonFrontPicCoords
|
|
_080A8864:
|
|
adds r4, r1, r0
|
|
_080A8866:
|
|
mov r0, r9
|
|
cmp r0, 0x6
|
|
bhi _080A8916
|
|
lsls r0, 2
|
|
ldr r1, =_080A8880
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_080A8880:
|
|
.4byte _080A889C
|
|
.4byte _080A88A6
|
|
.4byte _080A88D2
|
|
.4byte _080A88EA
|
|
.4byte _080A88AE
|
|
.4byte _080A88C0
|
|
.4byte _080A8902
|
|
_080A889C:
|
|
ldrb r1, [r4]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
lsls r0, 3
|
|
b _080A8918
|
|
_080A88A6:
|
|
ldrb r0, [r4]
|
|
lsrs r0, 4
|
|
lsls r0, 3
|
|
b _080A8918
|
|
_080A88AE:
|
|
mov r0, r8
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r4]
|
|
lsrs r1, 4
|
|
b _080A88E4
|
|
_080A88C0:
|
|
mov r0, r8
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r4]
|
|
lsrs r1, 4
|
|
b _080A88FC
|
|
_080A88D2:
|
|
mov r0, r8
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r2, [r4]
|
|
movs r1, 0xF
|
|
ands r1, r2
|
|
_080A88E4:
|
|
lsls r1, 2
|
|
subs r0, r1
|
|
b _080A8918
|
|
_080A88EA:
|
|
mov r0, r8
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r2, [r4]
|
|
movs r1, 0xF
|
|
ands r1, r2
|
|
_080A88FC:
|
|
lsls r1, 2
|
|
adds r0, r1
|
|
b _080A8918
|
|
_080A8902:
|
|
mov r0, r8
|
|
movs r1, 0x1
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, 0x1F
|
|
ldrb r1, [r4, 0x1]
|
|
subs r0, r1
|
|
b _080A8918
|
|
_080A8916:
|
|
movs r0, 0
|
|
_080A8918:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A861C
|
|
|
|
thumb_func_start sub_80A8924
|
|
sub_80A8924: @ 80A8924
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
mov r9, r2
|
|
mov r10, r3
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r1, 24
|
|
cmp r1, 0
|
|
bne _080A8942
|
|
movs r5, 0
|
|
movs r6, 0x1
|
|
b _080A8946
|
|
_080A8942:
|
|
movs r5, 0x2
|
|
movs r6, 0x3
|
|
_080A8946:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
bl IsDoubleBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8998
|
|
bl IsContest
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A8998
|
|
movs r0, 0x2
|
|
eors r4, r0
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
mov r0, r8
|
|
lsls r1, r0, 16
|
|
lsls r2, r7, 16
|
|
b _080A89A4
|
|
_080A8998:
|
|
mov r0, r8
|
|
lsls r1, r0, 16
|
|
lsrs r5, r1, 16
|
|
lsls r0, r7, 16
|
|
lsrs r3, r0, 16
|
|
adds r2, r0, 0
|
|
_080A89A4:
|
|
asrs r0, r1, 16
|
|
adds r0, r5
|
|
asrs r0, 1
|
|
mov r1, r9
|
|
strh r0, [r1]
|
|
asrs r0, r2, 16
|
|
adds r0, r3
|
|
asrs r0, 1
|
|
mov r1, r10
|
|
strh r0, [r1]
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A8924
|
|
|
|
thumb_func_start sub_80A89C8
|
|
sub_80A89C8: @ 80A89C8
|
|
push {r4-r6,lr}
|
|
mov r6, r10
|
|
mov r5, r9
|
|
mov r4, r8
|
|
push {r4-r6}
|
|
sub sp, 0x4
|
|
lsls r6, r1, 24
|
|
lsrs r6, 24
|
|
ldr r0, =SpriteCallbackDummy
|
|
mov r10, r0
|
|
bl CreateInvisibleSpriteWithCallback
|
|
mov r8, r0
|
|
mov r0, r8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
ldr r0, =gSprites
|
|
mov r9, r0
|
|
mov r0, r8
|
|
lsls r3, r0, 4
|
|
add r3, r8
|
|
lsls r3, 2
|
|
mov r0, r9
|
|
adds r5, r3, r0
|
|
lsls r4, r6, 4
|
|
adds r4, r6
|
|
lsls r4, 2
|
|
add r4, r9
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
movs r2, 0x44
|
|
str r3, [sp]
|
|
bl memcpy
|
|
adds r2, r5, 0
|
|
adds r2, 0x3F
|
|
ldrb r0, [r2]
|
|
movs r1, 0x40
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldrb r2, [r5, 0x5]
|
|
movs r1, 0xD
|
|
negs r1, r1
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
strb r0, [r5, 0x5]
|
|
ldrb r0, [r5, 0x1]
|
|
ands r1, r0
|
|
movs r0, 0x8
|
|
orrs r1, r0
|
|
strb r1, [r5, 0x1]
|
|
ldrh r1, [r4, 0x4]
|
|
lsls r1, 22
|
|
lsrs r1, 22
|
|
ldrh r2, [r5, 0x4]
|
|
ldr r0, =0xfffffc00
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r5, 0x4]
|
|
movs r0, 0x1C
|
|
add r9, r0
|
|
ldr r3, [sp]
|
|
add r3, r9
|
|
mov r0, r10
|
|
str r0, [r3]
|
|
mov r0, r8
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_80A89C8
|
|
|
|
thumb_func_start sub_80A8A6C
|
|
sub_80A8A6C: @ 80A8A6C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80A6838
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8AAC
|
|
ldr r2, =gBattleAnimArgs
|
|
ldrh r0, [r4, 0x20]
|
|
ldrh r1, [r2]
|
|
subs r0, r1
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r2, 0x6]
|
|
negs r0, r0
|
|
strh r0, [r2, 0x6]
|
|
adds r3, r4, 0
|
|
adds r3, 0x3F
|
|
ldrb r0, [r3]
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
adds r1, r2, 0
|
|
b _080A8AB6
|
|
.pool
|
|
_080A8AAC:
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x20]
|
|
_080A8AB6:
|
|
ldrh r0, [r1, 0x2]
|
|
ldrh r2, [r4, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x22]
|
|
ldrh r0, [r1, 0x4]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r1, 0x6]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r1, 0x8]
|
|
strh r0, [r4, 0x34]
|
|
ldrh r0, [r1, 0xA]
|
|
strh r0, [r4, 0x38]
|
|
ldr r1, =move_anim_8074EE0
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, =sub_80A66DC
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A8A6C
|
|
|
|
thumb_func_start sub_80A8AEC
|
|
sub_80A8AEC: @ 80A8AEC
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8B1C
|
|
ldr r2, =gBattleAnimArgs
|
|
ldrh r0, [r4, 0x20]
|
|
ldrh r1, [r2]
|
|
subs r0, r1
|
|
strh r0, [r4, 0x20]
|
|
movs r1, 0x6
|
|
ldrsh r0, [r2, r1]
|
|
negs r0, r0
|
|
strh r0, [r2, 0x6]
|
|
adds r1, r2, 0
|
|
b _080A8B26
|
|
.pool
|
|
_080A8B1C:
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x20]
|
|
_080A8B26:
|
|
ldrh r0, [r1, 0x2]
|
|
ldrh r2, [r4, 0x22]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x22]
|
|
ldrh r0, [r1, 0x4]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r1, 0x6]
|
|
strh r0, [r4, 0x30]
|
|
ldrh r0, [r1, 0x8]
|
|
strh r0, [r4, 0x34]
|
|
ldrh r0, [r1, 0xA]
|
|
strh r0, [r4, 0x38]
|
|
ldrb r1, [r1, 0xC]
|
|
adds r0, r4, 0
|
|
bl StartSpriteAnim
|
|
ldr r1, =move_anim_8074EE0
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, =sub_80A66DC
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A8AEC
|
|
|
|
thumb_func_start sub_80A8B64
|
|
sub_80A8B64: @ 80A8B64
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_80A6838
|
|
ldr r0, =gBattleAnimAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A8B90
|
|
ldr r0, =gBattleAnimArgs
|
|
ldrh r1, [r4, 0x20]
|
|
ldrh r2, [r0]
|
|
subs r1, r2
|
|
strh r1, [r4, 0x20]
|
|
b _080A8B9C
|
|
.pool
|
|
_080A8B90:
|
|
ldr r1, =gBattleAnimArgs
|
|
ldrh r0, [r1]
|
|
ldrh r2, [r4, 0x20]
|
|
adds r0, r2
|
|
strh r0, [r4, 0x20]
|
|
adds r0, r1, 0
|
|
_080A8B9C:
|
|
ldrh r0, [r0, 0x2]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x22]
|
|
ldr r0, =sub_80A67D8
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A8B64
|
|
|
|
thumb_func_start sub_80A8BC4
|
|
sub_80A8BC4: @ 80A8BC4
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
ldr r0, =gTasks
|
|
adds r5, r1, r0
|
|
movs r0, 0
|
|
bl GetAnimBattlerSpriteId
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r6, 0
|
|
strh r0, [r5, 0x8]
|
|
ldr r7, =gBattleAnimAttacker
|
|
ldrb r0, [r7]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
movs r1, 0x8
|
|
cmp r0, 0
|
|
beq _080A8BF8
|
|
movs r0, 0x8
|
|
negs r0, r0
|
|
adds r1, r0, 0
|
|
_080A8BF8:
|
|
strh r1, [r5, 0xA]
|
|
strh r6, [r5, 0xC]
|
|
strh r6, [r5, 0xE]
|
|
ldr r4, =gSprites
|
|
movs r0, 0x8
|
|
ldrsh r1, [r5, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldrh r1, [r0, 0x24]
|
|
ldrh r2, [r5, 0x8]
|
|
subs r1, r2
|
|
strh r1, [r0, 0x24]
|
|
ldr r0, =0x00002771
|
|
bl AllocSpritePalette
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x10]
|
|
strh r6, [r5, 0x12]
|
|
movs r1, 0x10
|
|
ldrsh r0, [r5, r1]
|
|
adds r0, 0x10
|
|
lsls r0, 20
|
|
lsrs r6, r0, 16
|
|
movs r0, 0x8
|
|
ldrsh r1, [r5, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldrb r0, [r0, 0x5]
|
|
lsrs r0, 4
|
|
adds r0, 0x10
|
|
lsls r4, r0, 4
|
|
ldrb r0, [r7]
|
|
bl sub_80A82E4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x14]
|
|
cmp r0, 0x14
|
|
beq _080A8C54
|
|
cmp r0, 0x28
|
|
bne _080A8C68
|
|
_080A8C54:
|
|
movs r0, 0x2
|
|
b _080A8C6A
|
|
.pool
|
|
_080A8C68:
|
|
movs r0, 0x3
|
|
_080A8C6A:
|
|
strh r0, [r5, 0x14]
|
|
lsls r0, r4, 1
|
|
ldr r1, =gPlttBufferUnfaded
|
|
adds r0, r1
|
|
lsls r1, r6, 1
|
|
ldr r2, =gPlttBufferFaded
|
|
adds r1, r2
|
|
ldr r2, =0x04000008
|
|
bl CpuSet
|
|
ldr r0, =gBattleAnimArgs
|
|
ldrb r2, [r0, 0x2]
|
|
ldrh r3, [r0]
|
|
adds r0, r6, 0
|
|
movs r1, 0x10
|
|
bl BlendPalette
|
|
ldr r0, =sub_80A8CAC
|
|
str r0, [r5]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A8BC4
|
|
|
|
thumb_func_start sub_80A8CAC
|
|
sub_80A8CAC: @ 80A8CAC
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
ldr r1, =gTasks
|
|
adds r4, r0, r1
|
|
movs r1, 0xC
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
beq _080A8D10
|
|
cmp r0, 0x1
|
|
bgt _080A8CD4
|
|
cmp r0, 0
|
|
beq _080A8CDA
|
|
b _080A8D6C
|
|
.pool
|
|
_080A8CD4:
|
|
cmp r0, 0x2
|
|
beq _080A8D58
|
|
b _080A8D6C
|
|
_080A8CDA:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl sub_80A8D78
|
|
ldr r2, =gSprites
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r4, 0xA]
|
|
ldrh r2, [r0, 0x24]
|
|
adds r1, r2
|
|
strh r1, [r0, 0x24]
|
|
ldrh r1, [r4, 0xE]
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4, 0xE]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x5
|
|
bne _080A8D6C
|
|
strh r1, [r4, 0xE]
|
|
b _080A8D4A
|
|
.pool
|
|
_080A8D10:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl sub_80A8D78
|
|
ldr r3, =gSprites
|
|
movs r0, 0x8
|
|
ldrsh r1, [r4, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrh r1, [r0, 0x24]
|
|
ldrh r2, [r4, 0xA]
|
|
subs r1, r2
|
|
strh r1, [r0, 0x24]
|
|
ldrh r0, [r4, 0xE]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0xE]
|
|
lsls r0, 16
|
|
asrs r2, r0, 16
|
|
cmp r2, 0
|
|
bne _080A8D6C
|
|
movs r1, 0x8
|
|
ldrsh r0, [r4, r1]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
strh r2, [r1, 0x24]
|
|
_080A8D4A:
|
|
ldrh r0, [r4, 0xC]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0xC]
|
|
b _080A8D6C
|
|
.pool
|
|
_080A8D58:
|
|
movs r2, 0x12
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0
|
|
bne _080A8D6C
|
|
ldr r0, =0x00002771
|
|
bl FreeSpritePaletteByTag
|
|
adds r0, r5, 0
|
|
bl DestroyAnimVisualTask
|
|
_080A8D6C:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A8CAC
|
|
|
|
thumb_func_start sub_80A8D78
|
|
sub_80A8D78: @ 80A8D78
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r6, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r8, r1
|
|
movs r0, 0
|
|
bl duplicate_obj_of_side_rel2move_in_transparent_mode
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0
|
|
blt _080A8DE8
|
|
ldr r5, =gSprites
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
adds r3, r4, r5
|
|
movs r0, 0x3
|
|
ldrb r1, [r6, 0x14]
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r3, 0x5]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3, 0x5]
|
|
ldrb r1, [r6, 0x10]
|
|
lsls r1, 4
|
|
movs r2, 0xF
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3, 0x5]
|
|
movs r0, 0x8
|
|
strh r0, [r3, 0x2E]
|
|
mov r0, r8
|
|
strh r0, [r3, 0x30]
|
|
strh r7, [r3, 0x32]
|
|
movs r0, 0x8
|
|
ldrsh r1, [r6, r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldrh r0, [r0, 0x24]
|
|
strh r0, [r3, 0x24]
|
|
adds r5, 0x1C
|
|
adds r4, r5
|
|
ldr r0, =sub_80A8DFC
|
|
str r0, [r4]
|
|
ldrh r0, [r6, 0x12]
|
|
adds r0, 0x1
|
|
strh r0, [r6, 0x12]
|
|
_080A8DE8:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A8D78
|
|
|
|
thumb_func_start sub_80A8DFC
|
|
sub_80A8DFC: @ 80A8DFC
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
ldrh r0, [r3, 0x2E]
|
|
subs r0, 0x1
|
|
strh r0, [r3, 0x2E]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080A8E26
|
|
ldr r2, =gTasks
|
|
movs r0, 0x30
|
|
ldrsh r1, [r3, r0]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
ldrh r1, [r0, 0x12]
|
|
subs r1, 0x1
|
|
strh r1, [r0, 0x12]
|
|
adds r0, r3, 0
|
|
bl obj_delete_but_dont_free_vram
|
|
_080A8E26:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A8DFC
|
|
|
|
thumb_func_start sub_80A8E30
|
|
sub_80A8E30: @ 80A8E30
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, =gBattleAnimAttacker
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x20]
|
|
ldrb r0, [r4]
|
|
movs r1, 0x3
|
|
bl GetBattlerSpriteCoord
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
strh r0, [r5, 0x22]
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A8E68
|
|
movs r0, 0x5
|
|
b _080A8E6A
|
|
.pool
|
|
_080A8E68:
|
|
ldr r0, =0x0000fff6
|
|
_080A8E6A:
|
|
strh r0, [r5, 0x2E]
|
|
ldr r0, =0x0000ffd8
|
|
strh r0, [r5, 0x30]
|
|
ldr r0, =sub_80A8E88
|
|
str r0, [r5, 0x1C]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A8E30
|
|
|
|
thumb_func_start sub_80A8E88
|
|
sub_80A8E88: @ 80A8E88
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x2E]
|
|
ldrh r1, [r4, 0x32]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x32]
|
|
ldrh r5, [r4, 0x30]
|
|
ldrh r2, [r4, 0x34]
|
|
adds r0, r5, r2
|
|
strh r0, [r4, 0x34]
|
|
movs r1, 0x32
|
|
ldrsh r0, [r4, r1]
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
strh r0, [r4, 0x24]
|
|
movs r2, 0x34
|
|
ldrsh r0, [r4, r2]
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
strh r0, [r4, 0x26]
|
|
lsls r0, r5, 16
|
|
asrs r0, 16
|
|
movs r1, 0x14
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bge _080A8EC4
|
|
adds r0, r5, 0x1
|
|
strh r0, [r4, 0x30]
|
|
_080A8EC4:
|
|
movs r1, 0x22
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x26
|
|
ldrsh r1, [r4, r2]
|
|
adds r0, r1
|
|
movs r1, 0x20
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
bge _080A8EDC
|
|
adds r0, r4, 0
|
|
bl DestroyAnimSprite
|
|
_080A8EDC:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80A8E88
|
|
|
|
thumb_func_start sub_80A8EE4
|
|
sub_80A8EE4: @ 80A8EE4
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, =gBattleAnimArgs
|
|
ldrh r0, [r5, 0x4]
|
|
strh r0, [r4, 0x2E]
|
|
ldrh r0, [r5, 0x8]
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x32]
|
|
ldrh r0, [r5, 0xA]
|
|
ldrh r1, [r4, 0x22]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x36]
|
|
ldr r0, =gBattleAnimTarget
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A8F24
|
|
ldrh r0, [r5, 0x8]
|
|
adds r0, 0x1E
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r5, 0xA]
|
|
subs r0, 0x14
|
|
b _080A8F32
|
|
.pool
|
|
_080A8F24:
|
|
ldrh r0, [r5, 0x8]
|
|
subs r0, 0x1E
|
|
ldrh r1, [r4, 0x20]
|
|
adds r0, r1
|
|
strh r0, [r4, 0x20]
|
|
ldrh r0, [r5, 0xA]
|
|
subs r0, 0x50
|
|
_080A8F32:
|
|
strh r0, [r4, 0x22]
|
|
ldr r0, =sub_80A6EEC
|
|
str r0, [r4, 0x1C]
|
|
ldr r1, =DestroyAnimSprite
|
|
adds r0, r4, 0
|
|
bl StoreSpriteCallbackInData6
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A8EE4
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|