pokefirered/asm/battle_controller_link_partner.s
2018-10-10 00:47:44 -04:00

5930 lines
105 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start nullsub_77
nullsub_77: @ 80D4200
bx lr
thumb_func_end nullsub_77
thumb_func_start sub_80D4204
sub_80D4204: @ 80D4204
ldr r1, _080D4214 @ =gUnknown_3004FE0
ldr r0, _080D4218 @ =gActiveBattler
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r1, _080D421C @ =LinkPartnerBufferRunCommand
str r1, [r0]
bx lr
.align 2, 0
_080D4214: .4byte gUnknown_3004FE0
_080D4218: .4byte gActiveBattler
_080D421C: .4byte LinkPartnerBufferRunCommand
thumb_func_end sub_80D4204
thumb_func_start LinkPartnerBufferRunCommand
LinkPartnerBufferRunCommand: @ 80D4220
push {lr}
ldr r2, _080D4254 @ =gUnknown_2023BC8
ldr r1, _080D4258 @ =gBitTable
ldr r0, _080D425C @ =gActiveBattler
ldrb r3, [r0]
lsls r0, r3, 2
adds r0, r1
ldr r1, [r2]
ldr r0, [r0]
ands r1, r0
cmp r1, 0
beq _080D426C
ldr r0, _080D4260 @ =gUnknown_2022BC4
lsls r1, r3, 9
adds r1, r0
ldrb r0, [r1]
cmp r0, 0x38
bhi _080D4268
ldr r0, _080D4264 @ =gUnknown_83FB134
ldrb r1, [r1]
lsls r1, 2
adds r1, r0
ldr r0, [r1]
bl _call_via_r0
b _080D426C
.align 2, 0
_080D4254: .4byte gUnknown_2023BC8
_080D4258: .4byte gBitTable
_080D425C: .4byte gActiveBattler
_080D4260: .4byte gUnknown_2022BC4
_080D4264: .4byte gUnknown_83FB134
_080D4268:
bl sub_80D49E8
_080D426C:
pop {r0}
bx r0
thumb_func_end LinkPartnerBufferRunCommand
thumb_func_start sub_80D4270
sub_80D4270: @ 80D4270
push {lr}
ldr r2, _080D4298 @ =gSprites
ldr r1, _080D429C @ =gUnknown_2023D44
ldr r0, _080D42A0 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r2, 0x1C
adds r0, r2
ldr r1, [r0]
ldr r0, _080D42A4 @ =SpriteCallbackDummy
cmp r1, r0
bne _080D4294
bl sub_80D49E8
_080D4294:
pop {r0}
bx r0
.align 2, 0
_080D4298: .4byte gSprites
_080D429C: .4byte gUnknown_2023D44
_080D42A0: .4byte gActiveBattler
_080D42A4: .4byte SpriteCallbackDummy
thumb_func_end sub_80D4270
thumb_func_start sub_80D42A8
sub_80D42A8: @ 80D42A8
push {r4-r6,lr}
ldr r6, _080D4300 @ =gSprites
ldr r5, _080D4304 @ =gUnknown_2023D44
ldr r4, _080D4308 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r6, 0
adds r1, 0x1C
adds r0, r1
ldr r1, [r0]
ldr r0, _080D430C @ =SpriteCallbackDummy
cmp r1, r0
bne _080D42F8
movs r0, 0
bl nullsub_16
ldrb r0, [r4]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
bl FreeSpriteOamMatrix
ldrb r0, [r4]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
bl DestroySprite
bl sub_80D49E8
_080D42F8:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080D4300: .4byte gSprites
_080D4304: .4byte gUnknown_2023D44
_080D4308: .4byte gActiveBattler
_080D430C: .4byte SpriteCallbackDummy
thumb_func_end sub_80D42A8
thumb_func_start sub_80D4310
sub_80D4310: @ 80D4310
push {r4,lr}
ldr r4, _080D4350 @ =gUnknown_2024018
ldr r1, [r4]
ldr r3, _080D4354 @ =gActiveBattler
ldrb r0, [r3]
ldr r2, [r1, 0x4]
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
adds r1, r2
ldrb r0, [r1, 0x9]
subs r0, 0x1
strb r0, [r1, 0x9]
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
bne _080D4348
ldr r0, [r4]
ldrb r1, [r3]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0
strb r1, [r0, 0x9]
bl sub_80D49E8
_080D4348:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080D4350: .4byte gUnknown_2024018
_080D4354: .4byte gActiveBattler
thumb_func_end sub_80D4310
thumb_func_start sub_80D4358
sub_80D4358: @ 80D4358
push {r4-r6,lr}
movs r6, 0
bl sub_8075290
lsls r0, 24
cmp r0, 0
beq _080D437C
bl sub_8075290
lsls r0, 24
cmp r0, 0
beq _080D43B0
ldr r0, _080D439C @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x40
ands r0, r1
cmp r0, 0
beq _080D43B0
_080D437C:
ldr r2, _080D43A0 @ =gSprites
ldr r1, _080D43A4 @ =gUnknown_3004FF0
ldr r0, _080D43A8 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r2, 0x1C
adds r0, r2
ldr r1, [r0]
ldr r0, _080D43AC @ =SpriteCallbackDummy
cmp r1, r0
bne _080D43E8
b _080D43E6
.align 2, 0
_080D439C: .4byte gBattleTypeFlags
_080D43A0: .4byte gSprites
_080D43A4: .4byte gUnknown_3004FF0
_080D43A8: .4byte gActiveBattler
_080D43AC: .4byte SpriteCallbackDummy
_080D43B0:
ldr r2, _080D4420 @ =gSprites
ldr r5, _080D4424 @ =gUnknown_3004FF0
ldr r0, _080D4428 @ =gActiveBattler
ldrb r3, [r0]
adds r0, r3, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r4, r2, 0
adds r4, 0x1C
adds r0, r4
ldr r2, [r0]
ldr r0, _080D442C @ =SpriteCallbackDummy
cmp r2, r0
bne _080D43E8
movs r0, 0x2
eors r3, r0
adds r0, r3, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldr r0, [r0]
cmp r0, r2
bne _080D43E8
_080D43E6:
movs r6, 0x1
_080D43E8:
bl IsCryPlayingOrClearCrySongs
lsls r0, 24
cmp r0, 0
beq _080D43F4
movs r6, 0
_080D43F4:
cmp r6, 0
beq _080D441A
ldr r0, _080D4430 @ =gUnknown_2024018
ldr r0, [r0]
ldr r3, _080D4428 @ =gActiveBattler
ldrb r1, [r3]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x3
strb r1, [r0, 0x9]
ldr r1, _080D4434 @ =gUnknown_3004FE0
ldrb r0, [r3]
lsls r0, 2
adds r0, r1
ldr r1, _080D4438 @ =sub_80D4310
str r1, [r0]
_080D441A:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080D4420: .4byte gSprites
_080D4424: .4byte gUnknown_3004FF0
_080D4428: .4byte gActiveBattler
_080D442C: .4byte SpriteCallbackDummy
_080D4430: .4byte gUnknown_2024018
_080D4434: .4byte gUnknown_3004FE0
_080D4438: .4byte sub_80D4310
thumb_func_end sub_80D4358
thumb_func_start sub_80D443C
sub_80D443C: @ 80D443C
push {r4-r7,lr}
ldr r0, _080D4568 @ =gUnknown_2024018
mov r12, r0
ldr r0, [r0]
ldr r6, _080D456C @ =gActiveBattler
ldrb r2, [r6]
ldr r4, [r0, 0x4]
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r3, r0, r4
ldrb r1, [r3]
movs r5, 0x8
adds r0, r5, 0
ands r0, r1
cmp r0, 0
beq _080D4460
b _080D4562
_080D4460:
movs r7, 0x2
adds r1, r7, 0
eors r1, r2
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r4
ldrb r1, [r0]
adds r0, r5, 0
ands r0, r1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
bne _080D4562
ldrb r0, [r3, 0x9]
adds r0, 0x1
strb r0, [r3, 0x9]
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _080D4562
mov r1, r12
ldr r0, [r1]
ldrb r1, [r6]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
strb r4, [r0, 0x9]
bl sub_8075290
lsls r0, 24
cmp r0, 0
beq _080D4500
ldr r0, _080D4570 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x40
ands r0, r1
cmp r0, 0
bne _080D4500
ldr r1, _080D4574 @ =gUnknown_3004FFC
ldrb r0, [r6]
eors r0, r7
adds r0, r1
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080D4578 @ =gSprites
adds r0, r1
bl DestroySprite
ldr r4, _080D457C @ =gUnknown_3004FF0
ldrb r0, [r6]
adds r1, r7, 0
eors r1, r0
adds r0, r1, r4
ldrb r0, [r0]
ldr r2, _080D4580 @ =gBattlerPartyIndexes
lsls r1, 1
adds r1, r2
ldrh r2, [r1]
movs r1, 0x64
muls r1, r2
ldr r2, _080D4584 @ =gPlayerParty
adds r1, r2
movs r2, 0
bl UpdateHealthboxAttribute
ldrb r0, [r6]
eors r0, r7
bl sub_804BD94
ldrb r0, [r6]
eors r0, r7
adds r0, r4
ldrb r0, [r0]
bl SetHealthboxSpriteVisible
_080D4500:
ldr r1, _080D4574 @ =gUnknown_3004FFC
ldr r4, _080D456C @ =gActiveBattler
ldrb r0, [r4]
adds r0, r1
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080D4578 @ =gSprites
adds r0, r1
bl DestroySprite
ldr r5, _080D457C @ =gUnknown_3004FF0
ldrb r1, [r4]
adds r0, r1, r5
ldrb r0, [r0]
ldr r2, _080D4580 @ =gBattlerPartyIndexes
lsls r1, 1
adds r1, r2
ldrh r2, [r1]
movs r1, 0x64
muls r1, r2
ldr r2, _080D4584 @ =gPlayerParty
adds r1, r2
movs r2, 0
bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_804BD94
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
bl SetHealthboxSpriteVisible
ldr r0, _080D4568 @ =gUnknown_2024018
ldr r0, [r0]
ldr r2, [r0, 0x8]
ldrb r1, [r2, 0x9]
movs r0, 0x2
negs r0, r0
ands r0, r1
strb r0, [r2, 0x9]
ldr r1, _080D4588 @ =gUnknown_3004FE0
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r1, _080D458C @ =sub_80D4358
str r1, [r0]
_080D4562:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080D4568: .4byte gUnknown_2024018
_080D456C: .4byte gActiveBattler
_080D4570: .4byte gBattleTypeFlags
_080D4574: .4byte gUnknown_3004FFC
_080D4578: .4byte gSprites
_080D457C: .4byte gUnknown_3004FF0
_080D4580: .4byte gBattlerPartyIndexes
_080D4584: .4byte gPlayerParty
_080D4588: .4byte gUnknown_3004FE0
_080D458C: .4byte sub_80D4358
thumb_func_end sub_80D443C
thumb_func_start sub_80D4590
sub_80D4590: @ 80D4590
push {lr}
ldr r2, _080D45C4 @ =gSprites
ldr r1, _080D45C8 @ =gUnknown_2023D44
ldr r0, _080D45CC @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r0, r2
adds r0, r1, 0
adds r0, 0x3F
ldrb r0, [r0]
lsls r0, 27
cmp r0, 0
bge _080D45BE
movs r2, 0x24
ldrsh r0, [r1, r2]
cmp r0, 0
bne _080D45BE
bl sub_80D49E8
_080D45BE:
pop {r0}
bx r0
.align 2, 0
_080D45C4: .4byte gSprites
_080D45C8: .4byte gUnknown_2023D44
_080D45CC: .4byte gActiveBattler
thumb_func_end sub_80D4590
thumb_func_start sub_80D45D0
sub_80D45D0: @ 80D45D0
push {r4-r6,lr}
ldr r5, _080D4610 @ =gActiveBattler
ldrb r0, [r5]
ldr r6, _080D4614 @ =gUnknown_3004FF0
adds r1, r0, r6
ldrb r1, [r1]
movs r2, 0
movs r3, 0
bl sub_8049FD8
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
ldrb r0, [r5]
adds r0, r6
ldrb r0, [r0]
bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r1, r4, 16
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080D4618
ldrb r0, [r5]
adds r0, r6
ldrb r0, [r0]
movs r2, 0
bl sub_8048440
b _080D4632
.align 2, 0
_080D4610: .4byte gActiveBattler
_080D4614: .4byte gUnknown_3004FF0
_080D4618:
ldr r2, _080D4638 @ =gBattlerPartyIndexes
ldrb r1, [r5]
lsls r0, r1, 1
adds r0, r2
ldrh r2, [r0]
movs r0, 0x64
muls r0, r2
ldr r2, _080D463C @ =gPlayerParty
adds r0, r2
bl HandleLowHpMusicChange
bl sub_80D49E8
_080D4632:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080D4638: .4byte gBattlerPartyIndexes
_080D463C: .4byte gPlayerParty
thumb_func_end sub_80D45D0
thumb_func_start sub_80D4640
sub_80D4640: @ 80D4640
push {r4-r6,lr}
ldr r6, _080D4698 @ =gSprites
ldr r5, _080D469C @ =gUnknown_2023D44
ldr r4, _080D46A0 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r2, r0, r6
movs r1, 0x22
ldrsh r0, [r2, r1]
movs r3, 0x26
ldrsh r1, [r2, r3]
adds r0, r1
cmp r0, 0xA0
ble _080D4690
ldrb r0, [r2, 0x3]
lsls r0, 26
lsrs r0, 27
bl FreeOamMatrix
ldrb r0, [r4]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
bl DestroySprite
ldr r1, _080D46A4 @ =gUnknown_3004FF0
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
bl SetHealthboxSpriteInvisible
bl sub_80D49E8
_080D4690:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080D4698: .4byte gSprites
_080D469C: .4byte gUnknown_2023D44
_080D46A0: .4byte gActiveBattler
_080D46A4: .4byte gUnknown_3004FF0
thumb_func_end sub_80D4640
thumb_func_start sub_80D46A8
sub_80D46A8: @ 80D46A8
push {r4-r6,lr}
ldr r0, _080D4704 @ =gUnknown_2024018
ldr r0, [r0]
ldr r6, _080D4708 @ =gActiveBattler
ldrb r2, [r6]
ldr r1, [r0, 0x4]
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r0, r1
ldrb r1, [r0]
movs r0, 0x40
ands r0, r1
cmp r0, 0
bne _080D46FC
ldr r5, _080D470C @ =gUnknown_2023D44
adds r0, r2, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r4, _080D4710 @ =gSprites
adds r0, r4
bl FreeSpriteOamMatrix
ldrb r0, [r6]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
bl DestroySprite
ldr r1, _080D4714 @ =gUnknown_3004FF0
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
bl SetHealthboxSpriteInvisible
bl sub_80D49E8
_080D46FC:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080D4704: .4byte gUnknown_2024018
_080D4708: .4byte gActiveBattler
_080D470C: .4byte gUnknown_2023D44
_080D4710: .4byte gSprites
_080D4714: .4byte gUnknown_3004FF0
thumb_func_end sub_80D46A8
thumb_func_start sub_80D4718
sub_80D4718: @ 80D4718
push {lr}
movs r0, 0
bl IsTextPrinterActive
lsls r0, 16
cmp r0, 0
bne _080D472A
bl sub_80D49E8
_080D472A:
pop {r0}
bx r0
thumb_func_end sub_80D4718
thumb_func_start sub_80D4730
sub_80D4730: @ 80D4730
push {r4,lr}
ldr r1, _080D476C @ =gUnknown_2023D44
ldr r0, _080D4770 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
ldr r2, _080D4774 @ =gSprites
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r4, r0, r2
movs r1, 0x30
ldrsh r0, [r4, r1]
cmp r0, 0x20
bne _080D477C
movs r3, 0
movs r0, 0
strh r0, [r4, 0x30]
adds r2, r4, 0
adds r2, 0x3E
ldrb r1, [r2]
subs r0, 0x5
ands r0, r1
strb r0, [r2]
ldr r0, _080D4778 @ =gUnknown_2024005
strb r3, [r0]
bl sub_80D49E8
b _080D47A6
.align 2, 0
_080D476C: .4byte gUnknown_2023D44
_080D4770: .4byte gActiveBattler
_080D4774: .4byte gSprites
_080D4778: .4byte gUnknown_2024005
_080D477C:
ldrh r0, [r4, 0x30]
movs r1, 0x3
ands r0, r1
cmp r0, 0
bne _080D47A0
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]
_080D47A0:
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
_080D47A6:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80D4730
thumb_func_start sub_80D47AC
sub_80D47AC: @ 80D47AC
push {r4,lr}
ldr r2, _080D4800 @ =gSprites
ldr r0, _080D4804 @ =gUnknown_3004FF0
ldr r4, _080D4808 @ =gActiveBattler
ldrb r3, [r4]
adds r0, r3, r0
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r2, 0x1C
adds r0, r2
ldr r1, [r0]
ldr r0, _080D480C @ =SpriteCallbackDummy
cmp r1, r0
bne _080D47F8
ldr r0, _080D4810 @ =gUnknown_2024018
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r3, 2
adds r0, r1
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _080D47EC
adds r0, r3, 0
adds r1, r3, 0
adds r2, r3, 0
movs r3, 0x6
bl InitAndLaunchSpecialAnimation
_080D47EC:
ldr r0, _080D4814 @ =gUnknown_3004FE0
ldrb r1, [r4]
lsls r1, 2
adds r1, r0
ldr r0, _080D4818 @ =sub_80D481C
str r0, [r1]
_080D47F8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080D4800: .4byte gSprites
_080D4804: .4byte gUnknown_3004FF0
_080D4808: .4byte gActiveBattler
_080D480C: .4byte SpriteCallbackDummy
_080D4810: .4byte gUnknown_2024018
_080D4814: .4byte gUnknown_3004FE0
_080D4818: .4byte sub_80D481C
thumb_func_end sub_80D47AC
thumb_func_start sub_80D481C
sub_80D481C: @ 80D481C
push {lr}
ldr r0, _080D4844 @ =gUnknown_2024018
ldr r2, [r0]
ldr r0, _080D4848 @ =gActiveBattler
ldrb r1, [r0]
ldr r2, [r2, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r0, 0x40
ands r0, r1
cmp r0, 0
bne _080D483E
bl sub_80D49E8
_080D483E:
pop {r0}
bx r0
.align 2, 0
_080D4844: .4byte gUnknown_2024018
_080D4848: .4byte gActiveBattler
thumb_func_end sub_80D481C
thumb_func_start sub_80D484C
sub_80D484C: @ 80D484C
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r3, _080D4918 @ =gUnknown_2024018
ldr r0, [r3]
ldr r7, _080D491C @ =gActiveBattler
ldrb r1, [r7]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r2, r0, r2
ldrb r1, [r2, 0x1]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080D490E
ldrb r1, [r2]
movs r0, 0x7F
ands r0, r1
strb r0, [r2]
ldr r0, [r3]
ldrb r2, [r7]
ldr r0, [r0, 0x4]
lsls r1, r2, 1
adds r1, r2
lsls r1, 2
adds r1, r0
ldrb r2, [r1, 0x1]
movs r0, 0x2
negs r0, r0
ands r0, r2
strb r0, [r1, 0x1]
ldr r4, _080D4920 @ =0x000027f9
adds r0, r4, 0
bl FreeSpriteTilesByTag
adds r0, r4, 0
bl FreeSpritePaletteByTag
ldr r0, _080D4924 @ =c3_0802FDF4
movs r1, 0xA
bl CreateTask
ldr r0, _080D4928 @ =gBattlerPartyIndexes
mov r8, r0
ldrb r1, [r7]
lsls r0, r1, 1
add r0, r8
ldrh r0, [r0]
movs r6, 0x64
muls r0, r6
ldr r5, _080D492C @ =gPlayerParty
adds r0, r5
bl HandleLowHpMusicChange
ldr r1, _080D4930 @ =gUnknown_2023D44
ldrb r0, [r7]
adds r0, r1
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080D4934 @ =gSprites
adds r0, r1
movs r1, 0
bl StartSpriteAnim
ldr r4, _080D4938 @ =gUnknown_3004FF0
ldrb r1, [r7]
adds r0, r1, r4
ldrb r0, [r0]
lsls r1, 1
add r1, r8
ldrh r1, [r1]
muls r1, r6
adds r1, r5
movs r2, 0
bl UpdateHealthboxAttribute
ldrb r0, [r7]
bl sub_804BD94
ldrb r0, [r7]
adds r0, r4
ldrb r0, [r0]
bl SetHealthboxSpriteVisible
ldrb r0, [r7]
bl CopyBattleSpriteInvisibility
ldr r1, _080D493C @ =gUnknown_3004FE0
ldrb r0, [r7]
lsls r0, 2
adds r0, r1
ldr r1, _080D4940 @ =sub_80D47AC
str r1, [r0]
_080D490E:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080D4918: .4byte gUnknown_2024018
_080D491C: .4byte gActiveBattler
_080D4920: .4byte 0x000027f9
_080D4924: .4byte c3_0802FDF4
_080D4928: .4byte gBattlerPartyIndexes
_080D492C: .4byte gPlayerParty
_080D4930: .4byte gUnknown_2023D44
_080D4934: .4byte gSprites
_080D4938: .4byte gUnknown_3004FF0
_080D493C: .4byte gUnknown_3004FE0
_080D4940: .4byte sub_80D47AC
thumb_func_end sub_80D484C
thumb_func_start sub_80D4944
sub_80D4944: @ 80D4944
push {r4-r6,lr}
ldr r6, _080D49C4 @ =gUnknown_2024018
ldr r0, [r6]
ldr r4, _080D49C8 @ =gActiveBattler
ldrb r2, [r4]
ldr r1, [r0, 0x4]
lsls r3, r2, 1
adds r0, r3, r2
lsls r0, 2
adds r0, r1
ldrb r1, [r0]
movs r0, 0x88
ands r0, r1
cmp r0, 0
bne _080D4976
ldr r0, _080D49CC @ =gBattlerPartyIndexes
adds r0, r3, r0
ldrh r1, [r0]
movs r0, 0x64
muls r1, r0
ldr r0, _080D49D0 @ =gPlayerParty
adds r1, r0
adds r0, r2, 0
bl sub_80F1720
_080D4976:
ldr r5, _080D49D4 @ =gSprites
ldr r0, _080D49D8 @ =gUnknown_3004FFC
ldrb r2, [r4]
adds r0, r2, r0
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r3, r0, 2
adds r0, r5, 0
adds r0, 0x1C
adds r0, r3, r0
ldr r1, [r0]
ldr r0, _080D49DC @ =SpriteCallbackDummy
cmp r1, r0
bne _080D49BC
ldr r0, [r6]
ldr r1, [r0, 0x4]
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r0, r1
ldrb r1, [r0]
movs r0, 0x8
ands r0, r1
cmp r0, 0
bne _080D49BC
adds r0, r3, r5
bl DestroySprite
ldr r1, _080D49E0 @ =gUnknown_3004FE0
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r1, _080D49E4 @ =sub_80D484C
str r1, [r0]
_080D49BC:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080D49C4: .4byte gUnknown_2024018
_080D49C8: .4byte gActiveBattler
_080D49CC: .4byte gBattlerPartyIndexes
_080D49D0: .4byte gPlayerParty
_080D49D4: .4byte gSprites
_080D49D8: .4byte gUnknown_3004FFC
_080D49DC: .4byte SpriteCallbackDummy
_080D49E0: .4byte gUnknown_3004FE0
_080D49E4: .4byte sub_80D484C
thumb_func_end sub_80D4944
thumb_func_start sub_80D49E8
sub_80D49E8: @ 80D49E8
push {r4,lr}
sub sp, 0x4
ldr r1, _080D4A28 @ =gUnknown_3004FE0
ldr r4, _080D4A2C @ =gActiveBattler
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r1, _080D4A30 @ =LinkPartnerBufferRunCommand
str r1, [r0]
ldr r0, _080D4A34 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x2
ands r0, r1
cmp r0, 0
beq _080D4A3C
bl GetMultiplayerId
mov r1, sp
strb r0, [r1]
movs r0, 0x2
movs r1, 0x4
mov r2, sp
bl PrepareBufferDataTransferLink
ldr r1, _080D4A38 @ =gUnknown_2022BC4
ldrb r0, [r4]
lsls r0, 9
adds r0, r1
movs r1, 0x38
strb r1, [r0]
b _080D4A4E
.align 2, 0
_080D4A28: .4byte gUnknown_3004FE0
_080D4A2C: .4byte gActiveBattler
_080D4A30: .4byte LinkPartnerBufferRunCommand
_080D4A34: .4byte gBattleTypeFlags
_080D4A38: .4byte gUnknown_2022BC4
_080D4A3C:
ldr r2, _080D4A58 @ =gUnknown_2023BC8
ldr r1, _080D4A5C @ =gBitTable
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r1, [r0]
ldr r0, [r2]
bics r0, r1
str r0, [r2]
_080D4A4E:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080D4A58: .4byte gUnknown_2023BC8
_080D4A5C: .4byte gBitTable
thumb_func_end sub_80D49E8
thumb_func_start sub_80D4A60
sub_80D4A60: @ 80D4A60
push {lr}
ldr r0, _080D4A88 @ =gUnknown_2024018
ldr r2, [r0]
ldr r0, _080D4A8C @ =gActiveBattler
ldrb r1, [r0]
ldr r2, [r2, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _080D4A82
bl sub_80D49E8
_080D4A82:
pop {r0}
bx r0
.align 2, 0
_080D4A88: .4byte gUnknown_2024018
_080D4A8C: .4byte gActiveBattler
thumb_func_end sub_80D4A60
thumb_func_start sub_80D4A90
sub_80D4A90: @ 80D4A90
push {lr}
ldr r0, _080D4AB8 @ =gUnknown_2024018
ldr r2, [r0]
ldr r0, _080D4ABC @ =gActiveBattler
ldrb r1, [r0]
ldr r2, [r2, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
bne _080D4AB2
bl sub_80D49E8
_080D4AB2:
pop {r0}
bx r0
.align 2, 0
_080D4AB8: .4byte gUnknown_2024018
_080D4ABC: .4byte gActiveBattler
thumb_func_end sub_80D4A90
thumb_func_start LinkPartnerHandleGetAttributes
LinkPartnerHandleGetAttributes: @ 80D4AC0
push {r4-r6,lr}
sub sp, 0x100
movs r6, 0
ldr r1, _080D4AEC @ =gUnknown_2022BC4
ldr r0, _080D4AF0 @ =gActiveBattler
ldrb r2, [r0]
lsls r0, r2, 9
adds r1, 0x2
adds r1, r0, r1
ldrb r0, [r1]
cmp r0, 0
bne _080D4AF8
ldr r0, _080D4AF4 @ =gBattlerPartyIndexes
lsls r1, r2, 1
adds r1, r0
ldrb r0, [r1]
mov r1, sp
bl dp01_getattr_by_ch1_for_player_pokemon
adds r6, r0, 0
b _080D4B1A
.align 2, 0
_080D4AEC: .4byte gUnknown_2022BC4
_080D4AF0: .4byte gActiveBattler
_080D4AF4: .4byte gBattlerPartyIndexes
_080D4AF8:
ldrb r4, [r1]
movs r5, 0
_080D4AFC:
movs r0, 0x1
ands r0, r4
cmp r0, 0
beq _080D4B12
lsls r0, r5, 24
lsrs r0, 24
mov r2, sp
adds r1, r2, r6
bl dp01_getattr_by_ch1_for_player_pokemon
adds r6, r0
_080D4B12:
lsrs r4, 1
adds r5, 0x1
cmp r5, 0x5
ble _080D4AFC
_080D4B1A:
lsls r1, r6, 16
lsrs r1, 16
movs r0, 0x1
mov r2, sp
bl EmitDataTransfer
bl sub_80D49E8
add sp, 0x100
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end LinkPartnerHandleGetAttributes
thumb_func_start dp01_getattr_by_ch1_for_player_pokemon
dp01_getattr_by_ch1_for_player_pokemon: @ 80D4B34
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x90
adds r7, r1, 0
lsls r0, 24
lsrs r5, r0, 24
movs r6, 0
ldr r2, _080D4B68 @ =gUnknown_2022BC4
ldr r3, _080D4B6C @ =gActiveBattler
ldrb r0, [r3]
lsls r0, 9
adds r1, r2, 0x1
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x3B
bls _080D4B5E
bl _080D52CA
_080D4B5E:
lsls r0, 2
ldr r1, _080D4B70 @ =_080D4B74
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080D4B68: .4byte gUnknown_2022BC4
_080D4B6C: .4byte gActiveBattler
_080D4B70: .4byte _080D4B74
.align 2, 0
_080D4B74:
.4byte _080D4C64
.4byte _080D4E88
.4byte _080D4E98
.4byte _080D4EA8
.4byte _080D4F10
.4byte _080D4F10
.4byte _080D4F10
.4byte _080D4F10
.4byte _080D4F2C
.4byte _080D4F68
.4byte _080D4F68
.4byte _080D4F68
.4byte _080D4F68
.4byte _080D52CA
.4byte _080D52CA
.4byte _080D52CA
.4byte _080D52CA
.4byte _080D4F84
.4byte _080D4F94
.4byte _080D4FC4
.4byte _080D4FD4
.4byte _080D4FE4
.4byte _080D4FF4
.4byte _080D5004
.4byte _080D5014
.4byte _080D5024
.4byte _080D5034
.4byte _080D5044
.4byte _080D5054
.4byte _080D5064
.4byte _080D5074
.4byte _080D5084
.4byte _080D50D4
.4byte _080D50E4
.4byte _080D50F4
.4byte _080D5104
.4byte _080D5114
.4byte _080D5124
.4byte _080D5134
.4byte _080D5144
.4byte _080D5154
.4byte _080D5188
.4byte _080D5198
.4byte _080D51A8
.4byte _080D51B8
.4byte _080D51C8
.4byte _080D51D8
.4byte _080D51E8
.4byte _080D51F8
.4byte _080D5218
.4byte _080D5228
.4byte _080D5238
.4byte _080D5248
.4byte _080D5258
.4byte _080D5268
.4byte _080D5278
.4byte _080D5288
.4byte _080D5298
.4byte _080D52A8
.4byte _080D52B8
_080D4C64:
movs r0, 0x64
adds r4, r5, 0
muls r4, r0
ldr r0, _080D4E78 @ =gPlayerParty
adds r4, r0
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
mov r1, sp
strh r0, [r1]
adds r0, r4, 0
movs r1, 0xC
bl GetMonData
mov r1, sp
strh r0, [r1, 0x2E]
movs r6, 0
add r0, sp, 0x24
mov r9, r0
movs r1, 0x3B
add r1, sp
mov r10, r1
mov r2, sp
adds r2, 0x2B
str r2, [sp, 0x80]
mov r0, sp
adds r0, 0x2A
str r0, [sp, 0x7C]
mov r1, sp
adds r1, 0x68
str r1, [sp, 0x8C]
adds r2, 0x5
str r2, [sp, 0x84]
adds r0, 0x12
str r0, [sp, 0x88]
mov r8, r4
add r4, sp, 0xC
_080D4CB0:
adds r1, r6, 0
adds r1, 0xD
mov r0, r8
bl GetMonData
strh r0, [r4]
adds r1, r6, 0
adds r1, 0x11
mov r0, r8
bl GetMonData
mov r2, r9
adds r1, r2, r6
strb r0, [r1]
adds r4, 0x2
adds r6, 0x1
cmp r6, 0x3
ble _080D4CB0
movs r0, 0x64
adds r4, r5, 0
muls r4, r0
ldr r0, _080D4E78 @ =gPlayerParty
adds r4, r0
adds r0, r4, 0
movs r1, 0x15
bl GetMonData
mov r1, r10
strb r0, [r1]
adds r0, r4, 0
movs r1, 0x20
bl GetMonData
ldr r2, [sp, 0x80]
strb r0, [r2]
adds r0, r4, 0
movs r1, 0x19
bl GetMonData
str r0, [sp, 0x44]
adds r0, r4, 0
movs r1, 0x27
bl GetMonData
mov r3, sp
movs r5, 0x1F
ands r0, r5
ldrb r2, [r3, 0x14]
movs r1, 0x20
negs r1, r1
ands r1, r2
orrs r1, r0
strb r1, [r3, 0x14]
adds r0, r4, 0
movs r1, 0x28
bl GetMonData
mov r3, sp
movs r6, 0x1F
ands r0, r6
lsls r0, 5
ldrh r2, [r3, 0x14]
ldr r1, _080D4E7C @ =0xfffffc1f
ands r1, r2
orrs r1, r0
strh r1, [r3, 0x14]
adds r0, r4, 0
movs r1, 0x29
bl GetMonData
mov r3, sp
ands r0, r5
lsls r0, 2
ldrb r2, [r3, 0x15]
movs r1, 0x7D
negs r1, r1
ands r1, r2
orrs r1, r0
strb r1, [r3, 0x15]
adds r0, r4, 0
movs r1, 0x2A
bl GetMonData
movs r1, 0x1F
ands r1, r0
lsls r1, 15
ldr r0, [sp, 0x14]
ldr r2, _080D4E80 @ =0xfff07fff
ands r0, r2
orrs r0, r1
str r0, [sp, 0x14]
adds r0, r4, 0
movs r1, 0x2B
bl GetMonData
mov r3, sp
ands r0, r6
lsls r0, 4
ldrh r2, [r3, 0x16]
ldr r1, _080D4E84 @ =0xfffffe0f
ands r1, r2
orrs r1, r0
strh r1, [r3, 0x16]
adds r0, r4, 0
movs r1, 0x2C
bl GetMonData
mov r3, sp
ands r0, r5
lsls r0, 1
ldrb r2, [r3, 0x17]
movs r1, 0x3F
negs r1, r1
ands r1, r2
orrs r1, r0
strb r1, [r3, 0x17]
adds r0, r4, 0
movs r1, 0
bl GetMonData
str r0, [sp, 0x48]
adds r0, r4, 0
movs r1, 0x37
bl GetMonData
str r0, [sp, 0x4C]
adds r0, r4, 0
movs r1, 0x38
bl GetMonData
ldr r1, [sp, 0x7C]
strb r0, [r1]
adds r0, r4, 0
movs r1, 0x39
bl GetMonData
mov r1, sp
strh r0, [r1, 0x28]
adds r0, r4, 0
movs r1, 0x3A
bl GetMonData
mov r1, sp
strh r0, [r1, 0x2C]
adds r0, r4, 0
movs r1, 0x3B
bl GetMonData
mov r1, sp
strh r0, [r1, 0x2]
adds r0, r4, 0
movs r1, 0x3C
bl GetMonData
mov r1, sp
strh r0, [r1, 0x4]
adds r0, r4, 0
movs r1, 0x3D
bl GetMonData
mov r1, sp
strh r0, [r1, 0x6]
adds r0, r4, 0
movs r1, 0x3E
bl GetMonData
mov r1, sp
strh r0, [r1, 0x8]
adds r0, r4, 0
movs r1, 0x3F
bl GetMonData
mov r1, sp
strh r0, [r1, 0xA]
adds r0, r4, 0
movs r1, 0x2D
bl GetMonData
mov r3, sp
movs r1, 0x1
ands r0, r1
lsls r0, 6
ldrb r2, [r3, 0x17]
movs r1, 0x41
negs r1, r1
ands r1, r2
orrs r1, r0
strb r1, [r3, 0x17]
adds r0, r4, 0
movs r1, 0x2E
bl GetMonData
mov r3, sp
lsls r0, 7
ldrb r2, [r3, 0x17]
movs r1, 0x7F
ands r1, r2
orrs r1, r0
strb r1, [r3, 0x17]
adds r0, r4, 0
movs r1, 0x1
bl GetMonData
str r0, [sp, 0x54]
adds r0, r4, 0
movs r1, 0x2
ldr r2, [sp, 0x8C]
bl GetMonData
ldr r0, [sp, 0x84]
ldr r1, [sp, 0x8C]
bl StringCopy10
adds r0, r4, 0
movs r1, 0x7
ldr r2, [sp, 0x88]
bl GetMonData
mov r2, sp
movs r6, 0
_080D4E68:
adds r0, r7, r6
adds r1, r2, r6
ldrb r1, [r1]
strb r1, [r0]
adds r6, 0x1
cmp r6, 0x57
bls _080D4E68
b _080D52CA
.align 2, 0
_080D4E78: .4byte gPlayerParty
_080D4E7C: .4byte 0xfffffc1f
_080D4E80: .4byte 0xfff07fff
_080D4E84: .4byte 0xfffffe0f
_080D4E88:
movs r0, 0x64
muls r0, r5
ldr r1, _080D4E94 @ =gPlayerParty
adds r0, r1
movs r1, 0xB
b _080D5202
.align 2, 0
_080D4E94: .4byte gPlayerParty
_080D4E98:
movs r0, 0x64
muls r0, r5
ldr r1, _080D4EA4 @ =gPlayerParty
adds r0, r1
movs r1, 0xC
b _080D5202
.align 2, 0
_080D4EA4: .4byte gPlayerParty
_080D4EA8:
movs r6, 0
add r2, sp, 0x58
mov r9, r2
add r0, sp, 0x60
mov r10, r0
movs r0, 0x64
adds r1, r5, 0
muls r1, r0
ldr r0, _080D4F0C @ =gPlayerParty
adds r4, r1, r0
mov r8, r9
_080D4EBE:
adds r1, r6, 0
adds r1, 0xD
adds r0, r4, 0
bl GetMonData
mov r1, r8
strh r0, [r1]
adds r1, r6, 0
adds r1, 0x11
adds r0, r4, 0
bl GetMonData
mov r2, r10
adds r1, r2, r6
strb r0, [r1]
movs r0, 0x2
add r8, r0
adds r6, 0x1
cmp r6, 0x3
ble _080D4EBE
movs r0, 0x64
muls r0, r5
ldr r1, _080D4F0C @ =gPlayerParty
adds r0, r1
movs r1, 0x15
bl GetMonData
mov r1, r9
strb r0, [r1, 0xC]
mov r2, r9
movs r6, 0
_080D4EFC:
adds r0, r7, r6
adds r1, r2, r6
ldrb r1, [r1]
strb r1, [r0]
adds r6, 0x1
cmp r6, 0xF
bls _080D4EFC
b _080D52CA
.align 2, 0
_080D4F0C: .4byte gPlayerParty
_080D4F10:
movs r0, 0x64
muls r0, r5
ldr r1, _080D4F28 @ =gPlayerParty
adds r0, r1
ldrb r1, [r3]
lsls r1, 9
adds r2, 0x1
adds r1, r2
ldrb r1, [r1]
adds r1, 0x9
b _080D5202
.align 2, 0
_080D4F28: .4byte gPlayerParty
_080D4F2C:
movs r6, 0
movs r0, 0x64
adds r4, r5, 0
muls r4, r0
ldr r2, _080D4F64 @ =gPlayerParty
mov r8, r2
_080D4F38:
adds r1, r6, 0
adds r1, 0x11
mov r2, r8
adds r0, r4, r2
bl GetMonData
adds r1, r7, r6
strb r0, [r1]
adds r6, 0x1
cmp r6, 0x3
ble _080D4F38
movs r0, 0x64
muls r0, r5
ldr r1, _080D4F64 @ =gPlayerParty
adds r0, r1
movs r1, 0x15
bl GetMonData
adds r1, r7, r6
strb r0, [r1]
adds r6, 0x1
b _080D52CA
.align 2, 0
_080D4F64: .4byte gPlayerParty
_080D4F68:
movs r0, 0x64
muls r0, r5
ldr r1, _080D4F80 @ =gPlayerParty
adds r0, r1
ldrb r1, [r3]
lsls r1, 9
adds r2, 0x1
adds r1, r2
ldrb r1, [r1]
adds r1, 0x8
b _080D52C2
.align 2, 0
_080D4F80: .4byte gPlayerParty
_080D4F84:
movs r0, 0x64
muls r0, r5
ldr r1, _080D4F90 @ =gPlayerParty
adds r0, r1
movs r1, 0x1
b _080D4F9E
.align 2, 0
_080D4F90: .4byte gPlayerParty
_080D4F94:
movs r0, 0x64
muls r0, r5
ldr r1, _080D4FC0 @ =gPlayerParty
adds r0, r1
movs r1, 0x19
_080D4F9E:
bl GetMonData
adds r1, r0, 0
strb r1, [r7]
movs r0, 0xFF
lsls r0, 8
ands r0, r1
lsrs r0, 8
strb r0, [r7, 0x1]
movs r0, 0xFF
lsls r0, 16
ands r0, r1
lsrs r0, 16
strb r0, [r7, 0x2]
movs r6, 0x3
b _080D52CA
.align 2, 0
_080D4FC0: .4byte gPlayerParty
_080D4FC4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D4FD0 @ =gPlayerParty
adds r0, r1
movs r1, 0x1A
b _080D52C2
.align 2, 0
_080D4FD0: .4byte gPlayerParty
_080D4FD4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D4FE0 @ =gPlayerParty
adds r0, r1
movs r1, 0x1B
b _080D52C2
.align 2, 0
_080D4FE0: .4byte gPlayerParty
_080D4FE4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D4FF0 @ =gPlayerParty
adds r0, r1
movs r1, 0x1C
b _080D52C2
.align 2, 0
_080D4FF0: .4byte gPlayerParty
_080D4FF4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5000 @ =gPlayerParty
adds r0, r1
movs r1, 0x1D
b _080D52C2
.align 2, 0
_080D5000: .4byte gPlayerParty
_080D5004:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5010 @ =gPlayerParty
adds r0, r1
movs r1, 0x1E
b _080D52C2
.align 2, 0
_080D5010: .4byte gPlayerParty
_080D5014:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5020 @ =gPlayerParty
adds r0, r1
movs r1, 0x1F
b _080D52C2
.align 2, 0
_080D5020: .4byte gPlayerParty
_080D5024:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5030 @ =gPlayerParty
adds r0, r1
movs r1, 0x20
b _080D52C2
.align 2, 0
_080D5030: .4byte gPlayerParty
_080D5034:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5040 @ =gPlayerParty
adds r0, r1
movs r1, 0x22
b _080D52C2
.align 2, 0
_080D5040: .4byte gPlayerParty
_080D5044:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5050 @ =gPlayerParty
adds r0, r1
movs r1, 0x23
b _080D52C2
.align 2, 0
_080D5050: .4byte gPlayerParty
_080D5054:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5060 @ =gPlayerParty
adds r0, r1
movs r1, 0x24
b _080D52C2
.align 2, 0
_080D5060: .4byte gPlayerParty
_080D5064:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5070 @ =gPlayerParty
adds r0, r1
movs r1, 0x25
b _080D52C2
.align 2, 0
_080D5070: .4byte gPlayerParty
_080D5074:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5080 @ =gPlayerParty
adds r0, r1
movs r1, 0x26
b _080D52C2
.align 2, 0
_080D5080: .4byte gPlayerParty
_080D5084:
movs r0, 0x64
adds r4, r5, 0
muls r4, r0
ldr r0, _080D50D0 @ =gPlayerParty
adds r4, r0
adds r0, r4, 0
movs r1, 0x27
bl GetMonData
strb r0, [r7]
adds r0, r4, 0
movs r1, 0x28
bl GetMonData
strb r0, [r7, 0x1]
adds r0, r4, 0
movs r1, 0x29
bl GetMonData
strb r0, [r7, 0x2]
adds r0, r4, 0
movs r1, 0x2A
bl GetMonData
strb r0, [r7, 0x3]
adds r0, r4, 0
movs r1, 0x2B
bl GetMonData
strb r0, [r7, 0x4]
adds r0, r4, 0
movs r1, 0x2C
bl GetMonData
strb r0, [r7, 0x5]
movs r6, 0x6
b _080D52CA
.align 2, 0
_080D50D0: .4byte gPlayerParty
_080D50D4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D50E0 @ =gPlayerParty
adds r0, r1
movs r1, 0x27
b _080D52C2
.align 2, 0
_080D50E0: .4byte gPlayerParty
_080D50E4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D50F0 @ =gPlayerParty
adds r0, r1
movs r1, 0x28
b _080D52C2
.align 2, 0
_080D50F0: .4byte gPlayerParty
_080D50F4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5100 @ =gPlayerParty
adds r0, r1
movs r1, 0x29
b _080D52C2
.align 2, 0
_080D5100: .4byte gPlayerParty
_080D5104:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5110 @ =gPlayerParty
adds r0, r1
movs r1, 0x2A
b _080D52C2
.align 2, 0
_080D5110: .4byte gPlayerParty
_080D5114:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5120 @ =gPlayerParty
adds r0, r1
movs r1, 0x2B
b _080D52C2
.align 2, 0
_080D5120: .4byte gPlayerParty
_080D5124:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5130 @ =gPlayerParty
adds r0, r1
movs r1, 0x2C
b _080D52C2
.align 2, 0
_080D5130: .4byte gPlayerParty
_080D5134:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5140 @ =gPlayerParty
adds r0, r1
movs r1, 0
b _080D515E
.align 2, 0
_080D5140: .4byte gPlayerParty
_080D5144:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5150 @ =gPlayerParty
adds r0, r1
movs r1, 0x9
b _080D5202
.align 2, 0
_080D5150: .4byte gPlayerParty
_080D5154:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5184 @ =gPlayerParty
adds r0, r1
movs r1, 0x37
_080D515E:
bl GetMonData
adds r1, r0, 0
strb r1, [r7]
movs r0, 0xFF
lsls r0, 8
ands r0, r1
lsrs r0, 8
strb r0, [r7, 0x1]
movs r0, 0xFF
lsls r0, 16
ands r0, r1
lsrs r0, 16
strb r0, [r7, 0x2]
lsrs r0, r1, 24
strb r0, [r7, 0x3]
movs r6, 0x4
b _080D52CA
.align 2, 0
_080D5184: .4byte gPlayerParty
_080D5188:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5194 @ =gPlayerParty
adds r0, r1
movs r1, 0x38
b _080D52C2
.align 2, 0
_080D5194: .4byte gPlayerParty
_080D5198:
movs r0, 0x64
muls r0, r5
ldr r1, _080D51A4 @ =gPlayerParty
adds r0, r1
movs r1, 0x39
b _080D5202
.align 2, 0
_080D51A4: .4byte gPlayerParty
_080D51A8:
movs r0, 0x64
muls r0, r5
ldr r1, _080D51B4 @ =gPlayerParty
adds r0, r1
movs r1, 0x3A
b _080D5202
.align 2, 0
_080D51B4: .4byte gPlayerParty
_080D51B8:
movs r0, 0x64
muls r0, r5
ldr r1, _080D51C4 @ =gPlayerParty
adds r0, r1
movs r1, 0x3B
b _080D5202
.align 2, 0
_080D51C4: .4byte gPlayerParty
_080D51C8:
movs r0, 0x64
muls r0, r5
ldr r1, _080D51D4 @ =gPlayerParty
adds r0, r1
movs r1, 0x3C
b _080D5202
.align 2, 0
_080D51D4: .4byte gPlayerParty
_080D51D8:
movs r0, 0x64
muls r0, r5
ldr r1, _080D51E4 @ =gPlayerParty
adds r0, r1
movs r1, 0x3D
b _080D5202
.align 2, 0
_080D51E4: .4byte gPlayerParty
_080D51E8:
movs r0, 0x64
muls r0, r5
ldr r1, _080D51F4 @ =gPlayerParty
adds r0, r1
movs r1, 0x3E
b _080D5202
.align 2, 0
_080D51F4: .4byte gPlayerParty
_080D51F8:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5214 @ =gPlayerParty
adds r0, r1
movs r1, 0x3F
_080D5202:
bl GetMonData
lsls r0, 16
lsrs r0, 16
strb r0, [r7]
lsrs r0, 8
strb r0, [r7, 0x1]
movs r6, 0x2
b _080D52CA
.align 2, 0
_080D5214: .4byte gPlayerParty
_080D5218:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5224 @ =gPlayerParty
adds r0, r1
movs r1, 0x16
b _080D52C2
.align 2, 0
_080D5224: .4byte gPlayerParty
_080D5228:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5234 @ =gPlayerParty
adds r0, r1
movs r1, 0x17
b _080D52C2
.align 2, 0
_080D5234: .4byte gPlayerParty
_080D5238:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5244 @ =gPlayerParty
adds r0, r1
movs r1, 0x18
b _080D52C2
.align 2, 0
_080D5244: .4byte gPlayerParty
_080D5248:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5254 @ =gPlayerParty
adds r0, r1
movs r1, 0x21
b _080D52C2
.align 2, 0
_080D5254: .4byte gPlayerParty
_080D5258:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5264 @ =gPlayerParty
adds r0, r1
movs r1, 0x2F
b _080D52C2
.align 2, 0
_080D5264: .4byte gPlayerParty
_080D5268:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5274 @ =gPlayerParty
adds r0, r1
movs r1, 0x30
b _080D52C2
.align 2, 0
_080D5274: .4byte gPlayerParty
_080D5278:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5284 @ =gPlayerParty
adds r0, r1
movs r1, 0x32
b _080D52C2
.align 2, 0
_080D5284: .4byte gPlayerParty
_080D5288:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5294 @ =gPlayerParty
adds r0, r1
movs r1, 0x33
b _080D52C2
.align 2, 0
_080D5294: .4byte gPlayerParty
_080D5298:
movs r0, 0x64
muls r0, r5
ldr r1, _080D52A4 @ =gPlayerParty
adds r0, r1
movs r1, 0x34
b _080D52C2
.align 2, 0
_080D52A4: .4byte gPlayerParty
_080D52A8:
movs r0, 0x64
muls r0, r5
ldr r1, _080D52B4 @ =gPlayerParty
adds r0, r1
movs r1, 0x35
b _080D52C2
.align 2, 0
_080D52B4: .4byte gPlayerParty
_080D52B8:
movs r0, 0x64
muls r0, r5
ldr r1, _080D52DC @ =gPlayerParty
adds r0, r1
movs r1, 0x36
_080D52C2:
bl GetMonData
strb r0, [r7]
movs r6, 0x1
_080D52CA:
adds r0, r6, 0
add sp, 0x90
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080D52DC: .4byte gPlayerParty
thumb_func_end dp01_getattr_by_ch1_for_player_pokemon
thumb_func_start sub_80D52E0
sub_80D52E0: @ 80D52E0
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D52E0
thumb_func_start LinkPartnerHandleSetAttributes
LinkPartnerHandleSetAttributes: @ 80D52EC
push {r4,r5,lr}
ldr r1, _080D5310 @ =gUnknown_2022BC4
ldr r0, _080D5314 @ =gActiveBattler
ldrb r2, [r0]
lsls r0, r2, 9
adds r1, 0x2
adds r1, r0, r1
ldrb r0, [r1]
cmp r0, 0
bne _080D531C
ldr r0, _080D5318 @ =gBattlerPartyIndexes
lsls r1, r2, 1
adds r1, r0
ldrb r0, [r1]
bl sub_80D5344
b _080D533A
.align 2, 0
_080D5310: .4byte gUnknown_2022BC4
_080D5314: .4byte gActiveBattler
_080D5318: .4byte gBattlerPartyIndexes
_080D531C:
ldrb r4, [r1]
movs r5, 0
_080D5320:
movs r0, 0x1
ands r0, r4
cmp r0, 0
beq _080D532E
adds r0, r5, 0
bl sub_80D5344
_080D532E:
lsrs r4, 1
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x5
bls _080D5320
_080D533A:
bl sub_80D49E8
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end LinkPartnerHandleSetAttributes
thumb_func_start sub_80D5344
sub_80D5344: @ 80D5344
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x34
lsls r0, 24
lsrs r5, r0, 24
ldr r0, _080D537C @ =gActiveBattler
ldrb r0, [r0]
lsls r0, 9
ldr r2, _080D5380 @ =gUnknown_2022BC7
adds r3, r0, r2
adds r6, r3, 0
subs r1, r2, 0x2
adds r0, r1
ldrb r0, [r0]
adds r7, r2, 0
cmp r0, 0x3B
bls _080D5370
bl _080D5D0A
_080D5370:
lsls r0, 2
ldr r1, _080D5384 @ =_080D5388
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080D537C: .4byte gActiveBattler
_080D5380: .4byte gUnknown_2022BC7
_080D5384: .4byte _080D5388
.align 2, 0
_080D5388:
.4byte _080D5478
.4byte _080D5610
.4byte _080D5630
.4byte _080D5650
.4byte _080D56A8
.4byte _080D56A8
.4byte _080D56A8
.4byte _080D56A8
.4byte _080D56D0
.4byte _080D5734
.4byte _080D5734
.4byte _080D5734
.4byte _080D5734
.4byte _080D5D0A
.4byte _080D5D0A
.4byte _080D5D0A
.4byte _080D5D0A
.4byte _080D5764
.4byte _080D5784
.4byte _080D57A4
.4byte _080D57C4
.4byte _080D57E4
.4byte _080D5804
.4byte _080D5824
.4byte _080D5844
.4byte _080D5864
.4byte _080D5884
.4byte _080D58A4
.4byte _080D58C4
.4byte _080D58E4
.4byte _080D5904
.4byte _080D5924
.4byte _080D5994
.4byte _080D59B4
.4byte _080D59D4
.4byte _080D59F4
.4byte _080D5A14
.4byte _080D5A34
.4byte _080D5A54
.4byte _080D5A74
.4byte _080D5A94
.4byte _080D5AB4
.4byte _080D5AD4
.4byte _080D5AF4
.4byte _080D5B14
.4byte _080D5B34
.4byte _080D5B54
.4byte _080D5B74
.4byte _080D5B94
.4byte _080D5BB4
.4byte _080D5BD4
.4byte _080D5BF4
.4byte _080D5C14
.4byte _080D5C34
.4byte _080D5C54
.4byte _080D5C74
.4byte _080D5C94
.4byte _080D5CB4
.4byte _080D5CD4
.4byte _080D5CF4
_080D5478:
movs r0, 0x64
adds r4, r5, 0
muls r4, r0
ldr r0, _080D560C @ =gPlayerParty
adds r4, r0
adds r0, r4, 0
movs r1, 0xB
adds r2, r6, 0
bl SetMonData
adds r2, r6, 0
adds r2, 0x2E
adds r0, r4, 0
movs r1, 0xC
bl SetMonData
movs r0, 0
mov r8, r0
movs r0, 0x3B
adds r0, r6
mov r10, r0
adds r0, r6, 0
adds r0, 0x2B
str r0, [sp, 0x20]
adds r0, 0x19
str r0, [sp, 0x28]
adds r0, 0x4
str r0, [sp, 0x2C]
adds r0, 0x4
str r0, [sp, 0x30]
subs r0, 0x22
str r0, [sp, 0x1C]
subs r0, 0x2
str r0, [sp, 0x18]
adds r0, 0x4
str r0, [sp, 0x24]
adds r0, r6, 0x2
str r0, [sp, 0x4]
adds r0, r6, 0x4
str r0, [sp, 0x8]
adds r0, r6, 0x6
str r0, [sp, 0xC]
adds r0, 0x2
str r0, [sp, 0x10]
adds r0, 0x2
str r0, [sp, 0x14]
mov r9, r4
adds r7, r6, 0
adds r7, 0x24
adds r4, r6, 0
adds r4, 0xC
_080D54DE:
mov r1, r8
adds r1, 0xD
mov r0, r9
adds r2, r4, 0
bl SetMonData
mov r1, r8
adds r1, 0x11
mov r0, r9
adds r2, r7, 0
bl SetMonData
adds r7, 0x1
adds r4, 0x2
movs r0, 0x1
add r8, r0
mov r0, r8
cmp r0, 0x3
ble _080D54DE
movs r0, 0x64
adds r4, r5, 0
muls r4, r0
ldr r0, _080D560C @ =gPlayerParty
adds r4, r0
adds r0, r4, 0
movs r1, 0x15
mov r2, r10
bl SetMonData
adds r0, r4, 0
movs r1, 0x20
ldr r2, [sp, 0x20]
bl SetMonData
adds r0, r4, 0
movs r1, 0x19
ldr r2, [sp, 0x28]
bl SetMonData
ldrb r0, [r6, 0x14]
lsls r0, 27
lsrs r0, 27
mov r1, sp
strb r0, [r1]
adds r0, r4, 0
movs r1, 0x27
mov r2, sp
bl SetMonData
mov r1, sp
ldrh r0, [r6, 0x14]
lsls r0, 22
lsrs r0, 27
strb r0, [r1]
adds r0, r4, 0
movs r1, 0x28
mov r2, sp
bl SetMonData
mov r1, sp
ldrb r0, [r6, 0x15]
lsls r0, 25
lsrs r0, 27
strb r0, [r1]
adds r0, r4, 0
movs r1, 0x29
mov r2, sp
bl SetMonData
mov r1, sp
ldr r0, [r6, 0x14]
lsls r0, 12
lsrs r0, 27
strb r0, [r1]
adds r0, r4, 0
movs r1, 0x2A
mov r2, sp
bl SetMonData
mov r1, sp
ldrh r0, [r6, 0x16]
lsls r0, 23
lsrs r0, 27
strb r0, [r1]
adds r0, r4, 0
movs r1, 0x2B
mov r2, sp
bl SetMonData
mov r1, sp
ldrb r0, [r6, 0x17]
lsls r0, 26
lsrs r0, 27
strb r0, [r1]
adds r0, r4, 0
movs r1, 0x2C
mov r2, sp
bl SetMonData
adds r0, r4, 0
movs r1, 0
ldr r2, [sp, 0x2C]
bl SetMonData
adds r0, r4, 0
movs r1, 0x37
ldr r2, [sp, 0x30]
bl SetMonData
adds r0, r4, 0
movs r1, 0x38
ldr r2, [sp, 0x1C]
bl SetMonData
adds r0, r4, 0
movs r1, 0x39
ldr r2, [sp, 0x18]
bl SetMonData
adds r0, r4, 0
movs r1, 0x3A
ldr r2, [sp, 0x24]
bl SetMonData
adds r0, r4, 0
movs r1, 0x3B
ldr r2, [sp, 0x4]
bl SetMonData
adds r0, r4, 0
movs r1, 0x3C
ldr r2, [sp, 0x8]
bl SetMonData
adds r0, r4, 0
movs r1, 0x3D
ldr r2, [sp, 0xC]
bl SetMonData
adds r0, r4, 0
movs r1, 0x3E
ldr r2, [sp, 0x10]
bl SetMonData
adds r0, r4, 0
movs r1, 0x3F
ldr r2, [sp, 0x14]
bl SetMonData
b _080D5D0A
.align 2, 0
_080D560C: .4byte gPlayerParty
_080D5610:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5628 @ =gPlayerParty
adds r0, r1
ldr r1, _080D562C @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0xB
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5628: .4byte gPlayerParty
_080D562C: .4byte gActiveBattler
_080D5630:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5648 @ =gPlayerParty
adds r0, r1
ldr r1, _080D564C @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0xC
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5648: .4byte gPlayerParty
_080D564C: .4byte gActiveBattler
_080D5650:
movs r0, 0
mov r8, r0
movs r0, 0xC
adds r0, r3
mov r9, r0
movs r0, 0x64
adds r1, r5, 0
muls r1, r0
ldr r0, _080D56A4 @ =gPlayerParty
adds r7, r1, r0
adds r6, r3, 0
adds r6, 0x8
adds r4, r3, 0
_080D566A:
mov r1, r8
adds r1, 0xD
adds r0, r7, 0
adds r2, r4, 0
bl SetMonData
mov r1, r8
adds r1, 0x11
adds r0, r7, 0
adds r2, r6, 0
bl SetMonData
adds r6, 0x1
adds r4, 0x2
movs r0, 0x1
add r8, r0
mov r0, r8
cmp r0, 0x3
ble _080D566A
movs r0, 0x64
muls r0, r5
ldr r1, _080D56A4 @ =gPlayerParty
adds r0, r1
movs r1, 0x15
mov r2, r9
bl SetMonData
b _080D5D0A
.align 2, 0
_080D56A4: .4byte gPlayerParty
_080D56A8:
movs r0, 0x64
muls r0, r5
ldr r1, _080D56C4 @ =gPlayerParty
adds r0, r1
ldr r3, _080D56C8 @ =gUnknown_2022BC4
ldr r1, _080D56CC @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r1, r3, 0x1
adds r1, r2, r1
ldrb r1, [r1]
adds r1, 0x9
b _080D574C
.align 2, 0
_080D56C4: .4byte gPlayerParty
_080D56C8: .4byte gUnknown_2022BC4
_080D56CC: .4byte gActiveBattler
_080D56D0:
movs r0, 0x64
adds r4, r5, 0
muls r4, r0
ldr r0, _080D572C @ =gPlayerParty
adds r4, r0
ldr r5, _080D5730 @ =gActiveBattler
ldrb r2, [r5]
lsls r2, 9
adds r2, r7
adds r0, r4, 0
movs r1, 0x11
bl SetMonData
ldrb r2, [r5]
lsls r2, 9
adds r0, r7, 0x1
adds r2, r0
adds r0, r4, 0
movs r1, 0x12
bl SetMonData
ldrb r2, [r5]
lsls r2, 9
adds r0, r7, 0x2
adds r2, r0
adds r0, r4, 0
movs r1, 0x13
bl SetMonData
ldrb r2, [r5]
lsls r2, 9
adds r0, r7, 0x3
adds r2, r0
adds r0, r4, 0
movs r1, 0x14
bl SetMonData
ldrb r2, [r5]
lsls r2, 9
adds r0, r7, 0x4
adds r2, r0
adds r0, r4, 0
movs r1, 0x15
bl SetMonData
b _080D5D0A
.align 2, 0
_080D572C: .4byte gPlayerParty
_080D5730: .4byte gActiveBattler
_080D5734:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5758 @ =gPlayerParty
adds r0, r1
ldr r3, _080D575C @ =gUnknown_2022BC4
ldr r1, _080D5760 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r1, r3, 0x1
adds r1, r2, r1
ldrb r1, [r1]
adds r1, 0x8
_080D574C:
adds r3, 0x3
adds r2, r3
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5758: .4byte gPlayerParty
_080D575C: .4byte gUnknown_2022BC4
_080D5760: .4byte gActiveBattler
_080D5764:
movs r0, 0x64
muls r0, r5
ldr r1, _080D577C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5780 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x1
bl SetMonData
b _080D5D0A
.align 2, 0
_080D577C: .4byte gPlayerParty
_080D5780: .4byte gActiveBattler
_080D5784:
movs r0, 0x64
muls r0, r5
ldr r1, _080D579C @ =gPlayerParty
adds r0, r1
ldr r1, _080D57A0 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x19
bl SetMonData
b _080D5D0A
.align 2, 0
_080D579C: .4byte gPlayerParty
_080D57A0: .4byte gActiveBattler
_080D57A4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D57BC @ =gPlayerParty
adds r0, r1
ldr r1, _080D57C0 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x1A
bl SetMonData
b _080D5D0A
.align 2, 0
_080D57BC: .4byte gPlayerParty
_080D57C0: .4byte gActiveBattler
_080D57C4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D57DC @ =gPlayerParty
adds r0, r1
ldr r1, _080D57E0 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x1B
bl SetMonData
b _080D5D0A
.align 2, 0
_080D57DC: .4byte gPlayerParty
_080D57E0: .4byte gActiveBattler
_080D57E4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D57FC @ =gPlayerParty
adds r0, r1
ldr r1, _080D5800 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x1C
bl SetMonData
b _080D5D0A
.align 2, 0
_080D57FC: .4byte gPlayerParty
_080D5800: .4byte gActiveBattler
_080D5804:
movs r0, 0x64
muls r0, r5
ldr r1, _080D581C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5820 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x1D
bl SetMonData
b _080D5D0A
.align 2, 0
_080D581C: .4byte gPlayerParty
_080D5820: .4byte gActiveBattler
_080D5824:
movs r0, 0x64
muls r0, r5
ldr r1, _080D583C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5840 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x1E
bl SetMonData
b _080D5D0A
.align 2, 0
_080D583C: .4byte gPlayerParty
_080D5840: .4byte gActiveBattler
_080D5844:
movs r0, 0x64
muls r0, r5
ldr r1, _080D585C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5860 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x1F
bl SetMonData
b _080D5D0A
.align 2, 0
_080D585C: .4byte gPlayerParty
_080D5860: .4byte gActiveBattler
_080D5864:
movs r0, 0x64
muls r0, r5
ldr r1, _080D587C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5880 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x20
bl SetMonData
b _080D5D0A
.align 2, 0
_080D587C: .4byte gPlayerParty
_080D5880: .4byte gActiveBattler
_080D5884:
movs r0, 0x64
muls r0, r5
ldr r1, _080D589C @ =gPlayerParty
adds r0, r1
ldr r1, _080D58A0 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x22
bl SetMonData
b _080D5D0A
.align 2, 0
_080D589C: .4byte gPlayerParty
_080D58A0: .4byte gActiveBattler
_080D58A4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D58BC @ =gPlayerParty
adds r0, r1
ldr r1, _080D58C0 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x23
bl SetMonData
b _080D5D0A
.align 2, 0
_080D58BC: .4byte gPlayerParty
_080D58C0: .4byte gActiveBattler
_080D58C4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D58DC @ =gPlayerParty
adds r0, r1
ldr r1, _080D58E0 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x24
bl SetMonData
b _080D5D0A
.align 2, 0
_080D58DC: .4byte gPlayerParty
_080D58E0: .4byte gActiveBattler
_080D58E4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D58FC @ =gPlayerParty
adds r0, r1
ldr r1, _080D5900 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x25
bl SetMonData
b _080D5D0A
.align 2, 0
_080D58FC: .4byte gPlayerParty
_080D5900: .4byte gActiveBattler
_080D5904:
movs r0, 0x64
muls r0, r5
ldr r1, _080D591C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5920 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x26
bl SetMonData
b _080D5D0A
.align 2, 0
_080D591C: .4byte gPlayerParty
_080D5920: .4byte gActiveBattler
_080D5924:
movs r0, 0x64
adds r4, r5, 0
muls r4, r0
ldr r0, _080D598C @ =gPlayerParty
adds r4, r0
ldr r5, _080D5990 @ =gActiveBattler
ldrb r2, [r5]
lsls r2, 9
adds r2, r7
adds r0, r4, 0
movs r1, 0x27
bl SetMonData
ldrb r2, [r5]
lsls r2, 9
adds r0, r7, 0x1
adds r2, r0
adds r0, r4, 0
movs r1, 0x28
bl SetMonData
ldrb r2, [r5]
lsls r2, 9
adds r0, r7, 0x2
adds r2, r0
adds r0, r4, 0
movs r1, 0x29
bl SetMonData
ldrb r2, [r5]
lsls r2, 9
adds r0, r7, 0x3
adds r2, r0
adds r0, r4, 0
movs r1, 0x2A
bl SetMonData
ldrb r2, [r5]
lsls r2, 9
adds r0, r7, 0x4
adds r2, r0
adds r0, r4, 0
movs r1, 0x2B
bl SetMonData
ldrb r2, [r5]
lsls r2, 9
adds r0, r7, 0x5
adds r2, r0
adds r0, r4, 0
b _080D5A44
.align 2, 0
_080D598C: .4byte gPlayerParty
_080D5990: .4byte gActiveBattler
_080D5994:
movs r0, 0x64
muls r0, r5
ldr r1, _080D59AC @ =gPlayerParty
adds r0, r1
ldr r1, _080D59B0 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x27
bl SetMonData
b _080D5D0A
.align 2, 0
_080D59AC: .4byte gPlayerParty
_080D59B0: .4byte gActiveBattler
_080D59B4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D59CC @ =gPlayerParty
adds r0, r1
ldr r1, _080D59D0 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x28
bl SetMonData
b _080D5D0A
.align 2, 0
_080D59CC: .4byte gPlayerParty
_080D59D0: .4byte gActiveBattler
_080D59D4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D59EC @ =gPlayerParty
adds r0, r1
ldr r1, _080D59F0 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x29
bl SetMonData
b _080D5D0A
.align 2, 0
_080D59EC: .4byte gPlayerParty
_080D59F0: .4byte gActiveBattler
_080D59F4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5A0C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5A10 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x2A
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5A0C: .4byte gPlayerParty
_080D5A10: .4byte gActiveBattler
_080D5A14:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5A2C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5A30 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x2B
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5A2C: .4byte gPlayerParty
_080D5A30: .4byte gActiveBattler
_080D5A34:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5A4C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5A50 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
_080D5A44:
movs r1, 0x2C
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5A4C: .4byte gPlayerParty
_080D5A50: .4byte gActiveBattler
_080D5A54:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5A6C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5A70 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5A6C: .4byte gPlayerParty
_080D5A70: .4byte gActiveBattler
_080D5A74:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5A8C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5A90 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x9
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5A8C: .4byte gPlayerParty
_080D5A90: .4byte gActiveBattler
_080D5A94:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5AAC @ =gPlayerParty
adds r0, r1
ldr r1, _080D5AB0 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x37
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5AAC: .4byte gPlayerParty
_080D5AB0: .4byte gActiveBattler
_080D5AB4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5ACC @ =gPlayerParty
adds r0, r1
ldr r1, _080D5AD0 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x38
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5ACC: .4byte gPlayerParty
_080D5AD0: .4byte gActiveBattler
_080D5AD4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5AEC @ =gPlayerParty
adds r0, r1
ldr r1, _080D5AF0 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x39
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5AEC: .4byte gPlayerParty
_080D5AF0: .4byte gActiveBattler
_080D5AF4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5B0C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5B10 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x3A
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5B0C: .4byte gPlayerParty
_080D5B10: .4byte gActiveBattler
_080D5B14:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5B2C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5B30 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x3B
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5B2C: .4byte gPlayerParty
_080D5B30: .4byte gActiveBattler
_080D5B34:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5B4C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5B50 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x3C
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5B4C: .4byte gPlayerParty
_080D5B50: .4byte gActiveBattler
_080D5B54:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5B6C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5B70 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x3D
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5B6C: .4byte gPlayerParty
_080D5B70: .4byte gActiveBattler
_080D5B74:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5B8C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5B90 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x3E
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5B8C: .4byte gPlayerParty
_080D5B90: .4byte gActiveBattler
_080D5B94:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5BAC @ =gPlayerParty
adds r0, r1
ldr r1, _080D5BB0 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x3F
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5BAC: .4byte gPlayerParty
_080D5BB0: .4byte gActiveBattler
_080D5BB4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5BCC @ =gPlayerParty
adds r0, r1
ldr r1, _080D5BD0 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x16
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5BCC: .4byte gPlayerParty
_080D5BD0: .4byte gActiveBattler
_080D5BD4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5BEC @ =gPlayerParty
adds r0, r1
ldr r1, _080D5BF0 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x17
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5BEC: .4byte gPlayerParty
_080D5BF0: .4byte gActiveBattler
_080D5BF4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5C0C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5C10 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x18
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5C0C: .4byte gPlayerParty
_080D5C10: .4byte gActiveBattler
_080D5C14:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5C2C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5C30 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x21
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5C2C: .4byte gPlayerParty
_080D5C30: .4byte gActiveBattler
_080D5C34:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5C4C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5C50 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x2F
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5C4C: .4byte gPlayerParty
_080D5C50: .4byte gActiveBattler
_080D5C54:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5C6C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5C70 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x30
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5C6C: .4byte gPlayerParty
_080D5C70: .4byte gActiveBattler
_080D5C74:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5C8C @ =gPlayerParty
adds r0, r1
ldr r1, _080D5C90 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x32
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5C8C: .4byte gPlayerParty
_080D5C90: .4byte gActiveBattler
_080D5C94:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5CAC @ =gPlayerParty
adds r0, r1
ldr r1, _080D5CB0 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x33
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5CAC: .4byte gPlayerParty
_080D5CB0: .4byte gActiveBattler
_080D5CB4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5CCC @ =gPlayerParty
adds r0, r1
ldr r1, _080D5CD0 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x34
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5CCC: .4byte gPlayerParty
_080D5CD0: .4byte gActiveBattler
_080D5CD4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5CEC @ =gPlayerParty
adds r0, r1
ldr r1, _080D5CF0 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x35
bl SetMonData
b _080D5D0A
.align 2, 0
_080D5CEC: .4byte gPlayerParty
_080D5CF0: .4byte gActiveBattler
_080D5CF4:
movs r0, 0x64
muls r0, r5
ldr r1, _080D5D34 @ =gPlayerParty
adds r0, r1
ldr r1, _080D5D38 @ =gActiveBattler
ldrb r2, [r1]
lsls r2, 9
adds r2, r7
movs r1, 0x36
bl SetMonData
_080D5D0A:
ldr r2, _080D5D3C @ =gBattlerPartyIndexes
ldr r0, _080D5D38 @ =gActiveBattler
ldrb r1, [r0]
lsls r0, r1, 1
adds r0, r2
ldrh r2, [r0]
movs r0, 0x64
muls r0, r2
ldr r2, _080D5D34 @ =gPlayerParty
adds r0, r2
bl HandleLowHpMusicChange
add sp, 0x34
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080D5D34: .4byte gPlayerParty
_080D5D38: .4byte gActiveBattler
_080D5D3C: .4byte gBattlerPartyIndexes
thumb_func_end sub_80D5344
thumb_func_start LinkPartnerHandlecmd3
LinkPartnerHandlecmd3: @ 80D5D40
push {r4-r7,lr}
ldr r1, _080D5DA4 @ =gBattlerPartyIndexes
ldr r7, _080D5DA8 @ =gActiveBattler
ldrb r2, [r7]
lsls r0, r2, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
adds r3, r1, 0
muls r3, r0
ldr r4, _080D5DAC @ =gUnknown_2022BC4
lsls r2, 9
adds r0, r4, 0x1
adds r0, r2, r0
ldrb r0, [r0]
ldr r1, _080D5DB0 @ =gPlayerParty
adds r0, r1
adds r5, r3, r0
movs r3, 0
adds r0, r4, 0x2
adds r2, r0
ldrb r2, [r2]
cmp r3, r2
bcs _080D5D98
adds r6, r4, 0
adds r2, r7, 0
adds r4, r0, 0
_080D5D76:
adds r1, r5, r3
ldrb r0, [r2]
lsls r0, 9
adds r0, 0x3
adds r0, r3, r0
adds r0, r6
ldrb r0, [r0]
strb r0, [r1]
adds r0, r3, 0x1
lsls r0, 24
lsrs r3, r0, 24
ldrb r0, [r2]
lsls r0, 9
adds r0, r4
ldrb r0, [r0]
cmp r3, r0
bcc _080D5D76
_080D5D98:
bl sub_80D49E8
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080D5DA4: .4byte gBattlerPartyIndexes
_080D5DA8: .4byte gActiveBattler
_080D5DAC: .4byte gUnknown_2022BC4
_080D5DB0: .4byte gPlayerParty
thumb_func_end LinkPartnerHandlecmd3
thumb_func_start LinkPartnerHandleLoadPokeSprite
LinkPartnerHandleLoadPokeSprite: @ 80D5DB4
push {r4-r6,lr}
mov r6, r8
push {r6}
ldr r0, _080D5EA8 @ =gBattlerPartyIndexes
mov r8, r0
ldr r6, _080D5EAC @ =gActiveBattler
ldrb r1, [r6]
lsls r0, r1, 1
add r0, r8
ldrh r0, [r0]
movs r5, 0x64
muls r0, r5
ldr r4, _080D5EB0 @ =gPlayerParty
adds r0, r4
bl sub_8034498
ldrb r0, [r6]
lsls r0, 1
add r0, r8
ldrh r0, [r0]
muls r0, r5
adds r0, r4
movs r1, 0xB
bl GetMonData
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
ldrb r0, [r6]
bl GetBattlerPosition
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl sub_803F7D4
ldr r0, _080D5EB4 @ =gMultiuseSpriteTemplate
mov r8, r0
ldrb r0, [r6]
movs r1, 0x2
bl sub_8074480
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
ldrb r0, [r6]
bl GetBankSpriteDefault_Y
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldrb r0, [r6]
bl sub_807685C
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
mov r0, r8
adds r1, r5, 0
adds r2, r4, 0
bl CreateSprite
ldr r4, _080D5EB8 @ =gUnknown_2023D44
ldrb r1, [r6]
adds r1, r4
strb r0, [r1]
ldr r5, _080D5EBC @ =gSprites
ldrb r0, [r6]
adds r0, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
ldr r1, _080D5EC0 @ =0x0000ff10
strh r1, [r0, 0x24]
ldrb r2, [r6]
adds r0, r2, r4
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
strh r2, [r0, 0x2E]
ldrb r3, [r6]
adds r0, r3, r4
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r5
lsls r3, 4
ldrb r2, [r1, 0x5]
movs r0, 0xF
ands r0, r2
orrs r0, r3
strb r0, [r1, 0x5]
ldrb r2, [r6]
adds r4, r2, r4
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
ldr r1, _080D5EC4 @ =gBattleMonForms
adds r2, r1
ldrb r1, [r2]
bl StartSpriteAnim
ldr r1, _080D5EC8 @ =gUnknown_3004FE0
ldrb r0, [r6]
lsls r0, 2
adds r0, r1
ldr r1, _080D5ECC @ =sub_80D4590
str r1, [r0]
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080D5EA8: .4byte gBattlerPartyIndexes
_080D5EAC: .4byte gActiveBattler
_080D5EB0: .4byte gPlayerParty
_080D5EB4: .4byte gMultiuseSpriteTemplate
_080D5EB8: .4byte gUnknown_2023D44
_080D5EBC: .4byte gSprites
_080D5EC0: .4byte 0x0000ff10
_080D5EC4: .4byte gBattleMonForms
_080D5EC8: .4byte gUnknown_3004FE0
_080D5ECC: .4byte sub_80D4590
thumb_func_end LinkPartnerHandleLoadPokeSprite
thumb_func_start LinkPartnerHandleSendOutPoke
LinkPartnerHandleSendOutPoke: @ 80D5ED0
push {r4-r6,lr}
ldr r5, _080D5F28 @ =gActiveBattler
ldrb r0, [r5]
ldr r4, _080D5F2C @ =gUnknown_2022BC4
lsls r1, r0, 9
adds r6, r4, 0x2
adds r1, r6
ldrb r1, [r1]
bl ClearTemporarySpeciesSpriteData
ldr r2, _080D5F30 @ =gBattlerPartyIndexes
ldrb r0, [r5]
lsls r1, r0, 1
adds r1, r2
lsls r0, 9
adds r4, 0x1
adds r0, r4
ldrb r0, [r0]
strh r0, [r1]
ldrb r1, [r5]
lsls r0, r1, 1
adds r0, r2
ldrh r2, [r0]
movs r0, 0x64
muls r0, r2
ldr r2, _080D5F34 @ =gPlayerParty
adds r0, r2
bl sub_8034498
ldrb r0, [r5]
lsls r1, r0, 9
adds r1, r6
ldrb r1, [r1]
bl sub_80D5F40
ldr r1, _080D5F38 @ =gUnknown_3004FE0
ldrb r0, [r5]
lsls r0, 2
adds r0, r1
ldr r1, _080D5F3C @ =sub_80D4944
str r1, [r0]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080D5F28: .4byte gActiveBattler
_080D5F2C: .4byte gUnknown_2022BC4
_080D5F30: .4byte gBattlerPartyIndexes
_080D5F34: .4byte gPlayerParty
_080D5F38: .4byte gUnknown_3004FE0
_080D5F3C: .4byte sub_80D4944
thumb_func_end LinkPartnerHandleSendOutPoke
thumb_func_start sub_80D5F40
sub_80D5F40: @ 80D5F40
push {r4-r6,lr}
mov r6, r10
mov r5, r9
mov r4, r8
push {r4-r6}
adds r6, r0, 0
lsls r6, 24
lsrs r6, 24
lsls r1, 24
lsrs r1, 24
adds r0, r6, 0
bl ClearTemporarySpeciesSpriteData
ldr r0, _080D6084 @ =gBattlerPartyIndexes
lsls r2, r6, 1
adds r2, r0
ldr r0, _080D6088 @ =gUnknown_2022BC4
lsls r1, r6, 9
adds r0, 0x1
adds r1, r0
ldrb r0, [r1]
strh r0, [r2]
ldrh r1, [r2]
movs r0, 0x64
muls r0, r1
ldr r1, _080D608C @ =gPlayerParty
adds r0, r1
movs r1, 0xB
bl GetMonData
mov r8, r0
lsls r0, 16
lsrs r0, 16
mov r8, r0
ldr r0, _080D6090 @ =sub_8033E3C
bl CreateInvisibleSpriteWithCallback
ldr r1, _080D6094 @ =gUnknown_3004FFC
mov r9, r1
add r9, r6
mov r1, r9
strb r0, [r1]
adds r0, r6, 0
bl GetBattlerPosition
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
mov r0, r8
bl sub_803F7D4
ldr r0, _080D6098 @ =gMultiuseSpriteTemplate
mov r10, r0
adds r0, r6, 0
movs r1, 0x2
bl sub_8074480
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
adds r0, r6, 0
bl GetBankSpriteDefault_Y
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r6, 0
bl sub_807685C
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
mov r0, r10
adds r1, r5, 0
adds r2, r4, 0
bl CreateSprite
ldr r4, _080D609C @ =gUnknown_2023D44
adds r4, r6, r4
strb r0, [r4]
ldr r5, _080D60A0 @ =gSprites
mov r0, r9
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
ldrb r1, [r4]
strh r1, [r0, 0x30]
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
strh r6, [r0, 0x2E]
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
mov r1, r8
strh r1, [r0, 0x32]
ldrb r0, [r4]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r5
lsls r3, r6, 4
ldrb r2, [r1, 0x5]
movs r0, 0xF
ands r0, r2
orrs r0, r3
strb r0, [r1, 0x5]
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
ldr r1, _080D60A4 @ =gBattleMonForms
adds r6, r1
ldrb r1, [r6]
bl StartSpriteAnim
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r5, 0
adds r1, 0x1C
adds r0, r1
ldr r1, _080D60A8 @ =SpriteCallbackDummy
str r1, [r0]
movs r0, 0
movs r1, 0xFF
bl DoPokeballSendOutAnimation
mov r1, r9
ldrb r2, [r1]
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
adds r1, r5
lsls r0, 24
lsrs r0, 24
strh r0, [r1, 0x2E]
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080D6084: .4byte gBattlerPartyIndexes
_080D6088: .4byte gUnknown_2022BC4
_080D608C: .4byte gPlayerParty
_080D6090: .4byte sub_8033E3C
_080D6094: .4byte gUnknown_3004FFC
_080D6098: .4byte gMultiuseSpriteTemplate
_080D609C: .4byte gUnknown_2023D44
_080D60A0: .4byte gSprites
_080D60A4: .4byte gBattleMonForms
_080D60A8: .4byte SpriteCallbackDummy
thumb_func_end sub_80D5F40
thumb_func_start LinkPartnerHandleReturnPokeToBall
LinkPartnerHandleReturnPokeToBall: @ 80D60AC
push {r4-r6,lr}
ldr r1, _080D60E0 @ =gUnknown_2022BC4
ldr r6, _080D60E4 @ =gActiveBattler
ldrb r2, [r6]
lsls r0, r2, 9
adds r1, 0x1
adds r0, r1
ldrb r3, [r0]
cmp r3, 0
bne _080D60F4
ldr r0, _080D60E8 @ =gUnknown_2024018
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r0, r1
strb r3, [r0, 0x4]
ldr r1, _080D60EC @ =gUnknown_3004FE0
ldrb r0, [r6]
lsls r0, 2
adds r0, r1
ldr r1, _080D60F0 @ =sub_80D613C
str r1, [r0]
b _080D612A
.align 2, 0
_080D60E0: .4byte gUnknown_2022BC4
_080D60E4: .4byte gActiveBattler
_080D60E8: .4byte gUnknown_2024018
_080D60EC: .4byte gUnknown_3004FE0
_080D60F0: .4byte sub_80D613C
_080D60F4:
ldr r5, _080D6130 @ =gUnknown_2023D44
adds r0, r2, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r4, _080D6134 @ =gSprites
adds r0, r4
bl FreeSpriteOamMatrix
ldrb r0, [r6]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
bl DestroySprite
ldr r1, _080D6138 @ =gUnknown_3004FF0
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
bl SetHealthboxSpriteInvisible
bl sub_80D49E8
_080D612A:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080D6130: .4byte gUnknown_2023D44
_080D6134: .4byte gSprites
_080D6138: .4byte gUnknown_3004FF0
thumb_func_end LinkPartnerHandleReturnPokeToBall
thumb_func_start sub_80D613C
sub_80D613C: @ 80D613C
push {r4-r6,lr}
ldr r6, _080D615C @ =gUnknown_2024018
ldr r4, [r6]
ldr r5, _080D6160 @ =gActiveBattler
ldrb r2, [r5]
ldr r1, [r4, 0x4]
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r3, r0, r1
ldrb r0, [r3, 0x4]
cmp r0, 0
beq _080D6164
cmp r0, 0x1
beq _080D6192
b _080D61BA
.align 2, 0
_080D615C: .4byte gUnknown_2024018
_080D6160: .4byte gActiveBattler
_080D6164:
ldr r1, [r4]
lsls r0, r2, 2
adds r0, r1
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _080D617E
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
bl InitAndLaunchSpecialAnimation
_080D617E:
ldr r0, [r6]
ldrb r1, [r5]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x1
strb r1, [r0, 0x4]
b _080D61BA
_080D6192:
ldrb r1, [r3]
movs r0, 0x40
ands r0, r1
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _080D61BA
strb r0, [r3, 0x4]
ldrb r2, [r5]
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x1
bl InitAndLaunchSpecialAnimation
ldr r1, _080D61C0 @ =gUnknown_3004FE0
ldrb r0, [r5]
lsls r0, 2
adds r0, r1
ldr r1, _080D61C4 @ =sub_80D46A8
str r1, [r0]
_080D61BA:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080D61C0: .4byte gUnknown_3004FE0
_080D61C4: .4byte sub_80D46A8
thumb_func_end sub_80D613C
thumb_func_start sub_80D61C8
sub_80D61C8: @ 80D61C8
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r6, _080D6240 @ =gActiveBattler
ldrb r0, [r6]
bl GetBattlerPosition
movs r1, 0x2
ands r1, r0
movs r7, 0x20
cmp r1, 0
beq _080D61E2
movs r7, 0x5A
_080D61E2:
ldrb r0, [r6]
bl GetBankMultiplayerId
ldr r5, _080D6244 @ =gLinkPlayers
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r5
movs r4, 0xFF
ldrb r0, [r1]
cmp r0, 0x2
beq _080D6228
ldrb r0, [r6]
bl GetBankMultiplayerId
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r5
ldrh r1, [r1]
adds r0, r4, 0
ands r0, r1
cmp r0, 0x1
beq _080D6228
ldrb r0, [r6]
bl GetBankMultiplayerId
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r5
ldrh r0, [r1]
ands r4, r0
cmp r4, 0x3
bne _080D6248
_080D6228:
ldr r0, _080D6240 @ =gActiveBattler
ldrb r0, [r0]
bl GetBankMultiplayerId
ldr r2, _080D6244 @ =gLinkPlayers
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r2
ldrb r0, [r1, 0x13]
adds r4, r0, 0x2
b _080D6258
.align 2, 0
_080D6240: .4byte gActiveBattler
_080D6244: .4byte gLinkPlayers
_080D6248:
ldrb r0, [r6]
bl GetBankMultiplayerId
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r5
ldrb r4, [r1, 0x13]
_080D6258:
ldr r5, _080D6318 @ =gActiveBattler
ldrb r1, [r5]
adds r0, r4, 0
bl sub_8034750
ldrb r0, [r5]
bl GetBattlerPosition
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl SetMultiuseSpriteTemplateToTrainerBack
ldr r6, _080D631C @ =gMultiuseSpriteTemplate
mov r8, r7
ldr r0, _080D6320 @ =gUnknown_8239F8C
lsls r4, 2
adds r4, r0
ldrb r0, [r4]
movs r4, 0x8
subs r4, r0
lsls r4, 18
movs r0, 0xA0
lsls r0, 15
adds r4, r0
asrs r4, 16
ldrb r0, [r5]
bl sub_807685C
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
adds r0, r6, 0
mov r1, r8
adds r2, r4, 0
bl CreateSprite
ldr r6, _080D6324 @ =gUnknown_2023D44
ldrb r1, [r5]
adds r1, r6
strb r0, [r1]
ldr r4, _080D6328 @ =gSprites
ldrb r3, [r5]
adds r0, r3, r6
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r4
lsls r3, 4
ldrb r2, [r1, 0x5]
movs r0, 0xF
ands r0, r2
orrs r0, r3
strb r0, [r1, 0x5]
ldrb r0, [r5]
adds r0, r6
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0xF0
strh r1, [r0, 0x24]
ldrb r0, [r5]
adds r0, r6
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldr r1, _080D632C @ =0x0000fffe
strh r1, [r0, 0x2E]
ldrb r0, [r5]
adds r0, r6
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r4, 0x1C
adds r0, r4
ldr r1, _080D6330 @ =sub_8033EEC
str r1, [r0]
ldr r1, _080D6334 @ =gUnknown_3004FE0
ldrb r0, [r5]
lsls r0, 2
adds r0, r1
ldr r1, _080D6338 @ =sub_80D4270
str r1, [r0]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080D6318: .4byte gActiveBattler
_080D631C: .4byte gMultiuseSpriteTemplate
_080D6320: .4byte gUnknown_8239F8C
_080D6324: .4byte gUnknown_2023D44
_080D6328: .4byte gSprites
_080D632C: .4byte 0x0000fffe
_080D6330: .4byte sub_8033EEC
_080D6334: .4byte gUnknown_3004FE0
_080D6338: .4byte sub_80D4270
thumb_func_end sub_80D61C8
thumb_func_start sub_80D633C
sub_80D633C: @ 80D633C
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D633C
thumb_func_start sub_80D6348
sub_80D6348: @ 80D6348
push {r4-r6,lr}
ldr r6, _080D63D4 @ =gUnknown_2023D44
ldr r4, _080D63D8 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r6
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r5, _080D63DC @ =gSprites
adds r0, r5
bl oamt_add_pos2_onto_pos1
ldrb r0, [r4]
adds r0, r6
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
movs r1, 0x23
strh r1, [r0, 0x2E]
ldrb r0, [r4]
adds r0, r6
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
ldr r1, _080D63E0 @ =0x0000ffd8
strh r1, [r0, 0x32]
ldrb r0, [r4]
adds r0, r6
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
ldrh r1, [r0, 0x22]
strh r1, [r0, 0x36]
ldrb r0, [r4]
adds r0, r6
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r5, 0
adds r1, 0x1C
adds r0, r1
ldr r1, _080D63E4 @ =sub_8075590
str r1, [r0]
ldrb r0, [r4]
adds r0, r6
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r5
ldr r1, _080D63E8 @ =SpriteCallbackDummy
bl StoreSpriteCallbackInData6
ldr r1, _080D63EC @ =gUnknown_3004FE0
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r1, _080D63F0 @ =sub_80D42A8
str r1, [r0]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080D63D4: .4byte gUnknown_2023D44
_080D63D8: .4byte gActiveBattler
_080D63DC: .4byte gSprites
_080D63E0: .4byte 0x0000ffd8
_080D63E4: .4byte sub_8075590
_080D63E8: .4byte SpriteCallbackDummy
_080D63EC: .4byte gUnknown_3004FE0
_080D63F0: .4byte sub_80D42A8
thumb_func_end sub_80D6348
thumb_func_start sub_80D63F4
sub_80D63F4: @ 80D63F4
push {r4-r6,lr}
ldr r6, _080D6440 @ =gUnknown_2024018
ldr r4, [r6]
ldr r5, _080D6444 @ =gActiveBattler
ldrb r2, [r5]
ldr r0, [r4, 0x4]
lsls r1, r2, 1
adds r1, r2
lsls r1, 2
adds r3, r1, r0
ldrb r0, [r3, 0x4]
cmp r0, 0
bne _080D6448
ldr r1, [r4]
lsls r0, r2, 2
adds r0, r1
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _080D6428
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
bl InitAndLaunchSpecialAnimation
_080D6428:
ldr r0, [r6]
ldrb r1, [r5]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0, 0x4]
adds r1, 0x1
strb r1, [r0, 0x4]
b _080D64BE
.align 2, 0
_080D6440: .4byte gUnknown_2024018
_080D6444: .4byte gActiveBattler
_080D6448:
ldrb r1, [r3]
movs r0, 0x40
ands r0, r1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
bne _080D64BE
strb r4, [r3, 0x4]
ldr r2, _080D64C4 @ =gBattlerPartyIndexes
ldrb r1, [r5]
lsls r0, r1, 1
adds r0, r2
ldrh r2, [r0]
movs r0, 0x64
muls r0, r2
ldr r2, _080D64C8 @ =gPlayerParty
adds r0, r2
bl HandleLowHpMusicChange
movs r1, 0x40
negs r1, r1
movs r0, 0x10
bl PlaySE12WithPanning
ldr r2, _080D64CC @ =gSprites
ldr r3, _080D64D0 @ =gUnknown_2023D44
ldrb r0, [r5]
adds r0, r3
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
strh r4, [r0, 0x30]
ldrb r0, [r5]
adds r0, r3
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x5
strh r1, [r0, 0x32]
ldrb r0, [r5]
adds r0, r3
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r2, 0x1C
adds r0, r2
ldr r1, _080D64D4 @ =sub_8012110
str r1, [r0]
ldr r1, _080D64D8 @ =gUnknown_3004FE0
ldrb r0, [r5]
lsls r0, 2
adds r0, r1
ldr r1, _080D64DC @ =sub_80D4640
str r1, [r0]
_080D64BE:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080D64C4: .4byte gBattlerPartyIndexes
_080D64C8: .4byte gPlayerParty
_080D64CC: .4byte gSprites
_080D64D0: .4byte gUnknown_2023D44
_080D64D4: .4byte sub_8012110
_080D64D8: .4byte gUnknown_3004FE0
_080D64DC: .4byte sub_80D4640
thumb_func_end sub_80D63F4
thumb_func_start sub_80D64E0
sub_80D64E0: @ 80D64E0
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D64E0
thumb_func_start sub_80D64EC
sub_80D64EC: @ 80D64EC
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D64EC
thumb_func_start sub_80D64F8
sub_80D64F8: @ 80D64F8
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D64F8
thumb_func_start sub_80D6504
sub_80D6504: @ 80D6504
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D6504
thumb_func_start sub_80D6510
sub_80D6510: @ 80D6510
push {r4-r6,lr}
ldr r6, _080D65F4 @ =gActiveBattler
ldrb r0, [r6]
bl mplay_80342A4
lsls r0, 24
cmp r0, 0
beq _080D6522
b _080D6636
_080D6522:
ldr r0, _080D65F8 @ =gUnknown_2022BC4
mov r12, r0
ldrb r2, [r6]
lsls r2, 9
adds r0, 0x1
adds r0, r2, r0
ldrb r0, [r0]
mov r1, r12
adds r1, 0x2
adds r1, r2, r1
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
ldr r5, _080D65FC @ =gUnknown_2037F16
mov r1, r12
adds r1, 0x3
adds r2, r1
ldrb r1, [r2]
strb r1, [r5]
ldr r4, _080D6600 @ =gUnknown_2037EEC
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
adds r1, 0x4
adds r1, r2, r1
ldrb r3, [r1]
mov r1, r12
adds r1, 0x5
adds r2, r1
ldrb r1, [r2]
lsls r1, 8
orrs r3, r1
strh r3, [r4]
ldr r4, _080D6604 @ =gUnknown_2037EE8
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
adds r1, 0x6
adds r1, r2, r1
ldrb r3, [r1]
mov r1, r12
adds r1, 0x7
adds r1, r2, r1
ldrb r1, [r1]
lsls r1, 8
orrs r3, r1
mov r1, r12
adds r1, 0x8
adds r1, r2, r1
ldrb r1, [r1]
lsls r1, 16
orrs r3, r1
mov r1, r12
adds r1, 0x9
adds r2, r1
ldrb r1, [r2]
lsls r1, 24
orrs r3, r1
str r3, [r4]
ldr r3, _080D6608 @ =gUnknown_2037EFE
ldrb r1, [r6]
lsls r1, 9
mov r2, r12
adds r2, 0xA
adds r1, r2
ldrb r1, [r1]
strb r1, [r3]
ldr r4, _080D660C @ =gUnknown_2037F00
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
adds r1, 0xC
adds r1, r2, r1
ldrb r3, [r1]
mov r1, r12
adds r1, 0xD
adds r2, r1
ldrb r1, [r2]
lsls r1, 8
orrs r3, r1
strh r3, [r4]
ldr r3, _080D6610 @ =gUnknown_2037EE4
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
adds r1, 0x10
adds r2, r1
str r2, [r3]
ldr r3, _080D6614 @ =gUnknown_2024008
ldrb r1, [r6]
lsls r1, 2
adds r1, r3
ldr r2, [r2]
str r2, [r1]
ldrb r1, [r5]
bl IsMoveWithoutAnimation
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0
beq _080D6618
bl sub_80D49E8
b _080D6636
.align 2, 0
_080D65F4: .4byte gActiveBattler
_080D65F8: .4byte gUnknown_2022BC4
_080D65FC: .4byte gUnknown_2037F16
_080D6600: .4byte gUnknown_2037EEC
_080D6604: .4byte gUnknown_2037EE8
_080D6608: .4byte gUnknown_2037EFE
_080D660C: .4byte gUnknown_2037F00
_080D6610: .4byte gUnknown_2037EE4
_080D6614: .4byte gUnknown_2024008
_080D6618:
ldr r0, _080D663C @ =gUnknown_2024018
ldr r0, [r0]
ldrb r1, [r6]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
strb r3, [r0, 0x4]
ldr r1, _080D6640 @ =gUnknown_3004FE0
ldrb r0, [r6]
lsls r0, 2
adds r0, r1
ldr r1, _080D6644 @ =sub_80D6648
str r1, [r0]
_080D6636:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080D663C: .4byte gUnknown_2024018
_080D6640: .4byte gUnknown_3004FE0
_080D6644: .4byte sub_80D6648
thumb_func_end sub_80D6510
thumb_func_start sub_80D6648
sub_80D6648: @ 80D6648
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
ldr r2, _080D6694 @ =gUnknown_2022BC4
ldr r6, _080D6698 @ =gActiveBattler
ldrb r3, [r6]
lsls r1, r3, 9
adds r0, r2, 0x1
mov r10, r0
adds r0, r1, r0
ldrb r4, [r0]
adds r5, r2, 0x2
mov r9, r5
adds r0, r1, r5
ldrb r0, [r0]
lsls r0, 8
orrs r4, r0
adds r2, 0xB
adds r1, r2
ldrb r1, [r1]
mov r8, r1
ldr r7, _080D669C @ =gUnknown_2024018
ldr r5, [r7]
ldr r1, [r5, 0x4]
lsls r0, r3, 1
adds r0, r3
lsls r0, 2
adds r0, r1
ldrb r2, [r0, 0x4]
cmp r2, 0x1
beq _080D66E0
cmp r2, 0x1
bgt _080D66A0
cmp r2, 0
beq _080D66AA
b _080D67BC
.align 2, 0
_080D6694: .4byte gUnknown_2022BC4
_080D6698: .4byte gActiveBattler
_080D669C: .4byte gUnknown_2024018
_080D66A0:
cmp r2, 0x2
beq _080D670A
cmp r2, 0x3
beq _080D6780
b _080D67BC
_080D66AA:
ldr r1, [r5]
lsls r0, r3, 2
adds r1, r0, r1
ldrb r2, [r1]
movs r0, 0xC
ands r0, r2
cmp r0, 0x4
bne _080D66CC
movs r0, 0x8
orrs r0, r2
strb r0, [r1]
ldrb r2, [r6]
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
bl InitAndLaunchSpecialAnimation
_080D66CC:
ldr r0, [r7]
ldrb r1, [r6]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x1
strb r1, [r0, 0x4]
b _080D67BC
_080D66E0:
ldrb r1, [r0]
movs r0, 0x40
ands r0, r1
cmp r0, 0
bne _080D67BC
movs r0, 0
bl sub_8035450
adds r0, r4, 0
bl DoMoveAnim
ldr r0, [r7]
ldrb r1, [r6]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x2
strb r1, [r0, 0x4]
b _080D67BC
_080D670A:
ldr r0, _080D6770 @ =gUnknown_2037EDC
ldr r0, [r0]
bl _call_via_r0
ldr r0, _080D6774 @ =gUnknown_2037EE1
ldrb r0, [r0]
cmp r0, 0
bne _080D67BC
movs r0, 0x1
bl sub_8035450
ldr r0, [r7]
ldrb r2, [r6]
ldr r1, [r0]
lsls r0, r2, 2
adds r0, r1
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _080D6758
mov r0, r8
cmp r0, 0x1
bhi _080D6758
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x6
bl InitAndLaunchSpecialAnimation
ldr r0, [r7]
ldrb r1, [r6]
ldr r0, [r0]
lsls r1, 2
adds r1, r0
ldrb r2, [r1]
movs r0, 0x9
negs r0, r0
ands r0, r2
strb r0, [r1]
_080D6758:
ldr r0, _080D6778 @ =gUnknown_2024018
ldr r2, [r0]
ldr r0, _080D677C @ =gActiveBattler
ldrb r1, [r0]
ldr r2, [r2, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0x3
strb r1, [r0, 0x4]
b _080D67BC
.align 2, 0
_080D6770: .4byte gUnknown_2037EDC
_080D6774: .4byte gUnknown_2037EE1
_080D6778: .4byte gUnknown_2024018
_080D677C: .4byte gActiveBattler
_080D6780:
ldrb r1, [r0]
movs r0, 0x40
ands r0, r1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
bne _080D67BC
bl CopyAllBattleSpritesInvisibilities
ldrb r0, [r6]
lsls r2, r0, 9
mov r3, r10
adds r1, r2, r3
ldrb r1, [r1]
add r2, r9
ldrb r2, [r2]
lsls r2, 8
orrs r1, r2
bl TrySetBehindSubstituteSpriteBit
ldr r0, [r7]
ldrb r1, [r6]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
strb r4, [r0, 0x4]
bl sub_80D49E8
_080D67BC:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80D6648
thumb_func_start sub_80D67CC
sub_80D67CC: @ 80D67CC
push {r4,lr}
ldr r0, _080D6800 @ =gUnknown_2022974
movs r1, 0
strh r1, [r0]
ldr r0, _080D6804 @ =gUnknown_2022976
strh r1, [r0]
ldr r0, _080D6808 @ =gActiveBattler
ldrb r4, [r0]
lsls r4, 9
ldr r0, _080D680C @ =gUnknown_2022BC6
adds r4, r0
ldrh r0, [r4]
bl sub_80D7274
ldrh r0, [r4]
bl sub_80D89B0
lsls r0, 24
cmp r0, 0
beq _080D6814
ldr r0, _080D6810 @ =gDisplayedStringBattle
movs r1, 0x40
bl sub_80D87BC
b _080D681C
.align 2, 0
_080D6800: .4byte gUnknown_2022974
_080D6804: .4byte gUnknown_2022976
_080D6808: .4byte gActiveBattler
_080D680C: .4byte gUnknown_2022BC6
_080D6810: .4byte gDisplayedStringBattle
_080D6814:
ldr r0, _080D6830 @ =gDisplayedStringBattle
movs r1, 0
bl sub_80D87BC
_080D681C:
ldr r1, _080D6834 @ =gUnknown_3004FE0
ldr r0, _080D6838 @ =gActiveBattler
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r1, _080D683C @ =sub_80D4718
str r1, [r0]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080D6830: .4byte gDisplayedStringBattle
_080D6834: .4byte gUnknown_3004FE0
_080D6838: .4byte gActiveBattler
_080D683C: .4byte sub_80D4718
thumb_func_end sub_80D67CC
thumb_func_start sub_80D6840
sub_80D6840: @ 80D6840
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D6840
thumb_func_start sub_80D684C
sub_80D684C: @ 80D684C
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D684C
thumb_func_start sub_80D6858
sub_80D6858: @ 80D6858
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D6858
thumb_func_start sub_80D6864
sub_80D6864: @ 80D6864
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D6864
thumb_func_start sub_80D6870
sub_80D6870: @ 80D6870
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D6870
thumb_func_start sub_80D687C
sub_80D687C: @ 80D687C
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D687C
thumb_func_start sub_80D6888
sub_80D6888: @ 80D6888
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D6888
thumb_func_start sub_80D6894
sub_80D6894: @ 80D6894
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
movs r0, 0
bl LoadBattleBarGfx
ldr r3, _080D690C @ =gUnknown_2022BC4
ldr r0, _080D6910 @ =gActiveBattler
mov r9, r0
ldrb r4, [r0]
lsls r2, r4, 9
adds r0, r3, 0x2
adds r0, r2, r0
ldrb r1, [r0]
adds r3, 0x3
adds r2, r3
ldrb r0, [r2]
lsls r0, 8
orrs r1, r0
lsls r1, 16
asrs r7, r1, 16
ldr r0, _080D6914 @ =0x00007fff
cmp r7, r0
beq _080D6924
ldr r6, _080D6918 @ =gBattlerPartyIndexes
lsls r0, r4, 1
adds r0, r6
ldrh r0, [r0]
movs r5, 0x64
muls r0, r5
ldr r4, _080D691C @ =gPlayerParty
adds r0, r4
movs r1, 0x3A
bl GetMonData
mov r8, r0
mov r1, r9
ldrb r0, [r1]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
muls r0, r5
adds r0, r4
movs r1, 0x39
bl GetMonData
adds r3, r0, 0
mov r1, r9
ldrb r0, [r1]
ldr r1, _080D6920 @ =gUnknown_3004FF0
adds r1, r0, r1
ldrb r1, [r1]
str r7, [sp]
mov r2, r8
bl SetBattleBarStruct
b _080D694E
.align 2, 0
_080D690C: .4byte gUnknown_2022BC4
_080D6910: .4byte gActiveBattler
_080D6914: .4byte 0x00007fff
_080D6918: .4byte gBattlerPartyIndexes
_080D691C: .4byte gPlayerParty
_080D6920: .4byte gUnknown_3004FF0
_080D6924:
ldr r1, _080D696C @ =gBattlerPartyIndexes
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080D6970 @ =gPlayerParty
adds r0, r1
movs r1, 0x3A
bl GetMonData
adds r2, r0, 0
mov r1, r9
ldrb r0, [r1]
ldr r1, _080D6974 @ =gUnknown_3004FF0
adds r1, r0, r1
ldrb r1, [r1]
str r7, [sp]
movs r3, 0
bl SetBattleBarStruct
_080D694E:
ldr r1, _080D6978 @ =gUnknown_3004FE0
ldr r0, _080D697C @ =gActiveBattler
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r1, _080D6980 @ =sub_80D45D0
str r1, [r0]
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080D696C: .4byte gBattlerPartyIndexes
_080D6970: .4byte gPlayerParty
_080D6974: .4byte gUnknown_3004FF0
_080D6978: .4byte gUnknown_3004FE0
_080D697C: .4byte gActiveBattler
_080D6980: .4byte sub_80D45D0
thumb_func_end sub_80D6894
thumb_func_start sub_80D6984
sub_80D6984: @ 80D6984
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D6984
thumb_func_start sub_80D6990
sub_80D6990: @ 80D6990
push {r4,lr}
ldr r4, _080D69EC @ =gActiveBattler
ldrb r0, [r4]
bl mplay_80342A4
lsls r0, 24
cmp r0, 0
bne _080D69E4
ldr r0, _080D69F0 @ =gUnknown_3004FF0
ldrb r1, [r4]
adds r0, r1, r0
ldrb r0, [r0]
ldr r2, _080D69F4 @ =gBattlerPartyIndexes
lsls r1, 1
adds r1, r2
ldrh r2, [r1]
movs r1, 0x64
muls r1, r2
ldr r2, _080D69F8 @ =gPlayerParty
adds r1, r2
movs r2, 0x9
bl UpdateHealthboxAttribute
ldrb r2, [r4]
ldr r0, _080D69FC @ =gUnknown_2024018
ldr r0, [r0]
ldr r0, [r0, 0x4]
lsls r1, r2, 1
adds r1, r2
lsls r1, 2
adds r1, r0
ldrb r2, [r1]
movs r0, 0x11
negs r0, r0
ands r0, r2
strb r0, [r1]
ldr r1, _080D6A00 @ =gUnknown_3004FE0
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r1, _080D6A04 @ =sub_80D4A60
str r1, [r0]
_080D69E4:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080D69EC: .4byte gActiveBattler
_080D69F0: .4byte gUnknown_3004FF0
_080D69F4: .4byte gBattlerPartyIndexes
_080D69F8: .4byte gPlayerParty
_080D69FC: .4byte gUnknown_2024018
_080D6A00: .4byte gUnknown_3004FE0
_080D6A04: .4byte sub_80D4A60
thumb_func_end sub_80D6990
thumb_func_start sub_80D6A08
sub_80D6A08: @ 80D6A08
push {r4,r5,lr}
ldr r5, _080D6A60 @ =gActiveBattler
ldrb r0, [r5]
bl mplay_80342A4
lsls r0, 24
cmp r0, 0
bne _080D6A58
ldr r4, _080D6A64 @ =gUnknown_2022BC4
ldrb r3, [r5]
lsls r3, 9
adds r0, r4, 0x1
adds r0, r3, r0
ldrb r0, [r0]
adds r1, r4, 0x2
adds r1, r3, r1
ldrb r1, [r1]
adds r2, r4, 0x3
adds r2, r3, r2
ldrb r2, [r2]
lsls r2, 8
orrs r1, r2
adds r2, r4, 0x4
adds r2, r3, r2
ldrb r2, [r2]
lsls r2, 16
orrs r1, r2
adds r4, 0x5
adds r3, r4
ldrb r2, [r3]
lsls r2, 24
orrs r1, r2
bl InitAndLaunchChosenStatusAnimation
ldr r1, _080D6A68 @ =gUnknown_3004FE0
ldrb r0, [r5]
lsls r0, 2
adds r0, r1
ldr r1, _080D6A6C @ =sub_80D4A60
str r1, [r0]
_080D6A58:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080D6A60: .4byte gActiveBattler
_080D6A64: .4byte gUnknown_2022BC4
_080D6A68: .4byte gUnknown_3004FE0
_080D6A6C: .4byte sub_80D4A60
thumb_func_end sub_80D6A08
thumb_func_start sub_80D6A70
sub_80D6A70: @ 80D6A70
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D6A70
thumb_func_start sub_80D6A7C
sub_80D6A7C: @ 80D6A7C
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D6A7C
thumb_func_start sub_80D6A88
sub_80D6A88: @ 80D6A88
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D6A88
thumb_func_start sub_80D6A94
sub_80D6A94: @ 80D6A94
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D6A94
thumb_func_start sub_80D6AA0
sub_80D6AA0: @ 80D6AA0
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D6AA0
thumb_func_start sub_80D6AAC
sub_80D6AAC: @ 80D6AAC
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D6AAC
thumb_func_start sub_80D6AB8
sub_80D6AB8: @ 80D6AB8
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D6AB8
thumb_func_start sub_80D6AC4
sub_80D6AC4: @ 80D6AC4
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D6AC4
thumb_func_start sub_80D6AD0
sub_80D6AD0: @ 80D6AD0
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D6AD0
thumb_func_start LinkPartnerHandlecmd37
LinkPartnerHandlecmd37: @ 80D6ADC
push {lr}
ldr r2, _080D6AF4 @ =gUnknown_2022870
ldrb r1, [r2]
movs r0, 0x80
negs r0, r0
ands r0, r1
strb r0, [r2]
bl sub_80D49E8
pop {r0}
bx r0
.align 2, 0
_080D6AF4: .4byte gUnknown_2022870
thumb_func_end LinkPartnerHandlecmd37
thumb_func_start LinkPartnerHandlecmd38
LinkPartnerHandlecmd38: @ 80D6AF8
push {lr}
ldr r3, _080D6B24 @ =gUnknown_2022870
ldr r1, _080D6B28 @ =gUnknown_2022BC4
ldr r0, _080D6B2C @ =gActiveBattler
ldrb r0, [r0]
lsls r0, 9
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
movs r1, 0x7F
ands r1, r0
ldrb r2, [r3]
movs r0, 0x80
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
bl sub_80D49E8
pop {r0}
bx r0
.align 2, 0
_080D6B24: .4byte gUnknown_2022870
_080D6B28: .4byte gUnknown_2022BC4
_080D6B2C: .4byte gActiveBattler
thumb_func_end LinkPartnerHandlecmd38
thumb_func_start LinkPartnerHandlecmd39
LinkPartnerHandlecmd39: @ 80D6B30
push {lr}
ldr r2, _080D6B44 @ =gUnknown_2022870
ldrb r1, [r2]
movs r0, 0x7F
ands r0, r1
strb r0, [r2]
bl sub_80D49E8
pop {r0}
bx r0
.align 2, 0
_080D6B44: .4byte gUnknown_2022870
thumb_func_end LinkPartnerHandlecmd39
thumb_func_start LinkPartnerHandlecmd40
LinkPartnerHandlecmd40: @ 80D6B48
push {lr}
ldr r3, _080D6B6C @ =gUnknown_2022870
ldr r1, [r3]
lsls r1, 24
lsrs r1, 31
movs r0, 0x1
eors r1, r0
lsls r1, 7
ldrb r2, [r3]
movs r0, 0x7F
ands r0, r2
orrs r0, r1
strb r0, [r3]
bl sub_80D49E8
pop {r0}
bx r0
.align 2, 0
_080D6B6C: .4byte gUnknown_2022870
thumb_func_end LinkPartnerHandlecmd40
thumb_func_start LinkPartnerHandleHitAnimation
LinkPartnerHandleHitAnimation: @ 80D6B70
push {r4,lr}
ldr r3, _080D6B98 @ =gSprites
ldr r2, _080D6B9C @ =gUnknown_2023D44
ldr r4, _080D6BA0 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r2
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
adds r0, 0x3E
ldrb r0, [r0]
lsls r0, 29
cmp r0, 0
bge _080D6BA4
bl sub_80D49E8
b _080D6BCE
.align 2, 0
_080D6B98: .4byte gSprites
_080D6B9C: .4byte gUnknown_2023D44
_080D6BA0: .4byte gActiveBattler
_080D6BA4:
ldr r1, _080D6BD4 @ =gUnknown_2024005
movs r0, 0x1
strb r0, [r1]
ldrb r0, [r4]
adds r0, r2
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
movs r1, 0
strh r1, [r0, 0x30]
ldrb r0, [r4]
bl DoHitAnimHealthboxEffect
ldr r1, _080D6BD8 @ =gUnknown_3004FE0
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r1, _080D6BDC @ =sub_80D4730
str r1, [r0]
_080D6BCE:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080D6BD4: .4byte gUnknown_2024005
_080D6BD8: .4byte gUnknown_3004FE0
_080D6BDC: .4byte sub_80D4730
thumb_func_end LinkPartnerHandleHitAnimation
thumb_func_start sub_80D6BE0
sub_80D6BE0: @ 80D6BE0
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D6BE0
thumb_func_start LinkPartnerHandleEffectivenessSound
LinkPartnerHandleEffectivenessSound: @ 80D6BEC
push {r4,lr}
ldr r4, _080D6C28 @ =gActiveBattler
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
movs r3, 0x3F
cmp r0, 0
bne _080D6C00
movs r3, 0xC0
_080D6C00:
ldr r2, _080D6C2C @ =gUnknown_2022BC4
ldrb r1, [r4]
lsls r1, 9
adds r0, r2, 0x1
adds r0, r1, r0
ldrb r0, [r0]
adds r2, 0x2
adds r1, r2
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
lsls r1, r3, 24
asrs r1, 24
bl PlaySE12WithPanning
bl sub_80D49E8
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080D6C28: .4byte gActiveBattler
_080D6C2C: .4byte gUnknown_2022BC4
thumb_func_end LinkPartnerHandleEffectivenessSound
thumb_func_start LinkPartnerHandlecmd44
LinkPartnerHandlecmd44: @ 80D6C30
push {lr}
ldr r2, _080D6C58 @ =gUnknown_2022BC4
ldr r0, _080D6C5C @ =gActiveBattler
ldrb r1, [r0]
lsls r1, 9
adds r0, r2, 0x1
adds r0, r1, r0
ldrb r0, [r0]
adds r2, 0x2
adds r1, r2
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
bl PlayFanfare
bl sub_80D49E8
pop {r0}
bx r0
.align 2, 0
_080D6C58: .4byte gUnknown_2022BC4
_080D6C5C: .4byte gActiveBattler
thumb_func_end LinkPartnerHandlecmd44
thumb_func_start LinkPartnerHandleFaintingCry
LinkPartnerHandleFaintingCry: @ 80D6C60
push {lr}
ldr r1, _080D6C94 @ =gBattlerPartyIndexes
ldr r0, _080D6C98 @ =gActiveBattler
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080D6C9C @ =gPlayerParty
adds r0, r1
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r0, 16
movs r1, 0x19
negs r1, r1
movs r2, 0x5
bl PlayCry3
bl sub_80D49E8
pop {r0}
bx r0
.align 2, 0
_080D6C94: .4byte gBattlerPartyIndexes
_080D6C98: .4byte gActiveBattler
_080D6C9C: .4byte gPlayerParty
thumb_func_end LinkPartnerHandleFaintingCry
thumb_func_start LinkPartnerHandleIntroSlide
LinkPartnerHandleIntroSlide: @ 80D6CA0
push {lr}
ldr r1, _080D6CC8 @ =gUnknown_2022BC4
ldr r0, _080D6CCC @ =gActiveBattler
ldrb r0, [r0]
lsls r0, 9
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
bl sub_80BC3A0
ldr r2, _080D6CD0 @ =gUnknown_2023F4C
ldrh r0, [r2]
movs r1, 0x1
orrs r0, r1
strh r0, [r2]
bl sub_80D49E8
pop {r0}
bx r0
.align 2, 0
_080D6CC8: .4byte gUnknown_2022BC4
_080D6CCC: .4byte gActiveBattler
_080D6CD0: .4byte gUnknown_2023F4C
thumb_func_end LinkPartnerHandleIntroSlide
thumb_func_start sub_80D6CD4
sub_80D6CD4: @ 80D6CD4
push {r4-r7,lr}
ldr r5, _080D6DDC @ =gUnknown_2023D44
ldr r6, _080D6DE0 @ =gActiveBattler
ldrb r0, [r6]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r4, _080D6DE4 @ =gSprites
adds r0, r4
bl oamt_add_pos2_onto_pos1
ldrb r0, [r6]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0x32
strh r1, [r0, 0x2E]
ldrb r0, [r6]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldr r1, _080D6DE8 @ =0x0000ffd8
strh r1, [r0, 0x32]
ldrb r0, [r6]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldrh r1, [r0, 0x22]
strh r1, [r0, 0x36]
ldrb r0, [r6]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r1, r4, 0
adds r1, 0x1C
adds r0, r1
ldr r1, _080D6DEC @ =sub_8075590
str r1, [r0]
ldrb r2, [r6]
adds r0, r2, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
strh r2, [r0, 0x38]
ldrb r0, [r6]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldr r1, _080D6DF0 @ =sub_80335F8
bl StoreSpriteCallbackInData6
ldrb r0, [r6]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0x1
bl StartSpriteAnim
ldr r0, _080D6DF4 @ =0x0000d6f9
bl AllocSpritePalette
lsls r0, 24
lsrs r7, r0, 24
ldrb r0, [r6]
bl GetBankMultiplayerId
ldr r4, _080D6DF8 @ =gLinkPlayers
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r4
movs r5, 0xFF
ldrb r0, [r1]
cmp r0, 0x2
beq _080D6DC2
ldrb r0, [r6]
bl GetBankMultiplayerId
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r4
ldrh r1, [r1]
adds r0, r5, 0
ands r0, r1
cmp r0, 0x1
beq _080D6DC2
ldrb r0, [r6]
bl GetBankMultiplayerId
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r4
ldrh r0, [r1]
ands r5, r0
cmp r5, 0x3
bne _080D6DFC
_080D6DC2:
ldr r0, _080D6DE0 @ =gActiveBattler
ldrb r0, [r0]
bl GetBankMultiplayerId
ldr r2, _080D6DF8 @ =gLinkPlayers
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r2
ldrb r0, [r1, 0x13]
adds r0, 0x2
b _080D6E0C
.align 2, 0
_080D6DDC: .4byte gUnknown_2023D44
_080D6DE0: .4byte gActiveBattler
_080D6DE4: .4byte gSprites
_080D6DE8: .4byte 0x0000ffd8
_080D6DEC: .4byte sub_8075590
_080D6DF0: .4byte sub_80335F8
_080D6DF4: .4byte 0x0000d6f9
_080D6DF8: .4byte gLinkPlayers
_080D6DFC:
ldrb r0, [r6]
bl GetBankMultiplayerId
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r4
ldrb r0, [r1, 0x13]
_080D6E0C:
ldr r1, _080D6EA4 @ =gUnknown_8239FD4
lsls r0, 3
adds r0, r1
ldr r0, [r0]
lsls r4, r7, 4
movs r2, 0x80
lsls r2, 1
adds r1, r4, r2
movs r2, 0x20
bl LoadCompressedPalette
ldr r2, _080D6EA8 @ =gSprites
ldr r1, _080D6EAC @ =gUnknown_2023D44
ldr r5, _080D6EB0 @ =gActiveBattler
ldrb r0, [r5]
adds r0, r1
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
ldrb r2, [r1, 0x5]
movs r0, 0xF
ands r0, r2
orrs r0, r4
strb r0, [r1, 0x5]
ldr r0, _080D6EB4 @ =sub_80D6ED0
movs r1, 0x5
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r4, _080D6EB8 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r4
ldrb r0, [r5]
strh r0, [r1, 0x8]
ldr r3, _080D6EBC @ =gUnknown_2024018
ldr r0, [r3]
ldrb r2, [r5]
ldr r1, [r0, 0x4]
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r0, r1
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080D6E86
ldr r0, _080D6EC0 @ =gUnknown_2024000
adds r0, r2, r0
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r4
ldr r1, _080D6EC4 @ =sub_80491B0
str r1, [r0]
_080D6E86:
ldr r0, [r3]
ldr r2, [r0, 0x8]
ldrb r0, [r2, 0x9]
movs r1, 0x1
orrs r0, r1
strb r0, [r2, 0x9]
ldr r1, _080D6EC8 @ =gUnknown_3004FE0
ldrb r0, [r5]
lsls r0, 2
adds r0, r1
ldr r1, _080D6ECC @ =nullsub_77
str r1, [r0]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080D6EA4: .4byte gUnknown_8239FD4
_080D6EA8: .4byte gSprites
_080D6EAC: .4byte gUnknown_2023D44
_080D6EB0: .4byte gActiveBattler
_080D6EB4: .4byte sub_80D6ED0
_080D6EB8: .4byte gTasks
_080D6EBC: .4byte gUnknown_2024018
_080D6EC0: .4byte gUnknown_2024000
_080D6EC4: .4byte sub_80491B0
_080D6EC8: .4byte gUnknown_3004FE0
_080D6ECC: .4byte nullsub_77
thumb_func_end sub_80D6CD4
thumb_func_start sub_80D6ED0
sub_80D6ED0: @ 80D6ED0
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldr r1, _080D6EF8 @ =gTasks
lsls r0, 2
add r0, r8
lsls r0, 3
adds r1, r0, r1
ldrh r2, [r1, 0xA]
movs r3, 0xA
ldrsh r0, [r1, r3]
cmp r0, 0x17
bgt _080D6EFC
adds r0, r2, 0x1
strh r0, [r1, 0xA]
b _080D6FB8
.align 2, 0
_080D6EF8: .4byte gTasks
_080D6EFC:
ldr r7, _080D6F3C @ =gActiveBattler
ldrb r0, [r7]
mov r9, r0
ldrh r0, [r1, 0x8]
strb r0, [r7]
bl sub_8075290
lsls r0, 24
cmp r0, 0
beq _080D6F1C
ldr r0, _080D6F40 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x40
ands r0, r1
cmp r0, 0
beq _080D6F4C
_080D6F1C:
ldr r0, _080D6F44 @ =gUnknown_2022BC4
ldrb r1, [r7]
lsls r2, r1, 9
adds r0, 0x1
adds r2, r0
ldr r0, _080D6F48 @ =gBattlerPartyIndexes
lsls r1, 1
adds r1, r0
ldrh r0, [r1]
strb r0, [r2]
ldrb r0, [r7]
movs r1, 0
bl sub_80D5F40
b _080D6FA0
.align 2, 0
_080D6F3C: .4byte gActiveBattler
_080D6F40: .4byte gBattleTypeFlags
_080D6F44: .4byte gUnknown_2022BC4
_080D6F48: .4byte gBattlerPartyIndexes
_080D6F4C:
ldr r4, _080D6FC4 @ =gUnknown_2022BC4
ldrb r0, [r7]
lsls r1, r0, 9
adds r4, 0x1
adds r1, r4
ldr r5, _080D6FC8 @ =gBattlerPartyIndexes
lsls r0, 1
adds r0, r5
ldrh r0, [r0]
strb r0, [r1]
ldrb r0, [r7]
movs r1, 0
bl sub_80D5F40
ldrb r0, [r7]
movs r6, 0x2
eors r0, r6
strb r0, [r7]
ldrb r0, [r7]
lsls r1, r0, 9
adds r1, r4
lsls r0, 1
adds r0, r5
ldrh r0, [r0]
strb r0, [r1]
ldrb r1, [r7]
lsls r0, r1, 1
adds r0, r5
ldrh r2, [r0]
movs r0, 0x64
muls r0, r2
ldr r2, _080D6FCC @ =gPlayerParty
adds r0, r2
bl sub_8034498
ldrb r0, [r7]
movs r1, 0
bl sub_80D5F40
ldrb r0, [r7]
eors r0, r6
strb r0, [r7]
_080D6FA0:
ldr r1, _080D6FD0 @ =gUnknown_3004FE0
ldr r2, _080D6FD4 @ =gActiveBattler
ldrb r0, [r2]
lsls r0, 2
adds r0, r1
ldr r1, _080D6FD8 @ =sub_80D443C
str r1, [r0]
mov r3, r9
strb r3, [r2]
mov r0, r8
bl DestroyTask
_080D6FB8:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080D6FC4: .4byte gUnknown_2022BC4
_080D6FC8: .4byte gBattlerPartyIndexes
_080D6FCC: .4byte gPlayerParty
_080D6FD0: .4byte gUnknown_3004FE0
_080D6FD4: .4byte gActiveBattler
_080D6FD8: .4byte sub_80D443C
thumb_func_end sub_80D6ED0
thumb_func_start sub_80D6FDC
sub_80D6FDC: @ 80D6FDC
push {r4-r6,lr}
ldr r1, _080D7004 @ =gUnknown_2022BC4
ldr r0, _080D7008 @ =gActiveBattler
ldrb r2, [r0]
lsls r0, r2, 9
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _080D700C
adds r0, r2, 0
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080D700C
bl sub_80D49E8
b _080D7080
.align 2, 0
_080D7004: .4byte gUnknown_2022BC4
_080D7008: .4byte gActiveBattler
_080D700C:
ldr r6, _080D7088 @ =gUnknown_2024018
ldr r0, [r6]
ldr r5, _080D708C @ =gActiveBattler
ldrb r1, [r5]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r2, 0x1
orrs r1, r2
strb r1, [r0]
ldrb r0, [r5]
lsls r3, r0, 9
ldr r4, _080D7090 @ =gUnknown_2022BC8
adds r1, r3, r4
subs r2, r4, 0x3
adds r2, r3, r2
ldrb r2, [r2]
subs r4, 0x2
adds r3, r4
ldrb r3, [r3]
bl sub_8048D14
ldr r2, _080D7094 @ =gUnknown_2024000
ldrb r1, [r5]
adds r1, r2
movs r3, 0
strb r0, [r1]
ldr r0, [r6]
ldrb r1, [r5]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
strb r3, [r0, 0x5]
ldrb r2, [r5]
lsls r0, r2, 9
adds r0, r4
ldrb r0, [r0]
cmp r0, 0
beq _080D7074
ldr r0, [r6]
ldr r1, [r0, 0x4]
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r0, r1
movs r1, 0x5D
strb r1, [r0, 0x5]
_080D7074:
ldr r0, _080D7098 @ =gUnknown_3004FE0
ldrb r1, [r5]
lsls r1, 2
adds r1, r0
ldr r0, _080D709C @ =sub_80D70A0
str r0, [r1]
_080D7080:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080D7088: .4byte gUnknown_2024018
_080D708C: .4byte gActiveBattler
_080D7090: .4byte gUnknown_2022BC8
_080D7094: .4byte gUnknown_2024000
_080D7098: .4byte gUnknown_3004FE0
_080D709C: .4byte sub_80D70A0
thumb_func_end sub_80D6FDC
thumb_func_start sub_80D70A0
sub_80D70A0: @ 80D70A0
push {r4,lr}
ldr r4, _080D70E0 @ =gUnknown_2024018
ldr r0, [r4]
ldr r3, _080D70E4 @ =gActiveBattler
ldrb r1, [r3]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0, 0x5]
adds r2, r1, 0x1
strb r2, [r0, 0x5]
lsls r1, 24
lsrs r1, 24
cmp r1, 0x5C
bls _080D70D8
ldr r0, [r4]
ldrb r1, [r3]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0
strb r1, [r0, 0x5]
bl sub_80D49E8
_080D70D8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080D70E0: .4byte gUnknown_2024018
_080D70E4: .4byte gActiveBattler
thumb_func_end sub_80D70A0
thumb_func_start sub_80D70E8
sub_80D70E8: @ 80D70E8
push {lr}
ldr r0, _080D7124 @ =gUnknown_2024018
ldr r1, [r0]
ldr r0, _080D7128 @ =gActiveBattler
ldrb r3, [r0]
ldr r1, [r1, 0x4]
lsls r0, r3, 1
adds r0, r3
lsls r0, 2
adds r0, r1
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080D711A
ldr r2, _080D712C @ =gTasks
ldr r0, _080D7130 @ =gUnknown_2024000
adds r0, r3, r0
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
ldr r1, _080D7134 @ =sub_80491B0
str r1, [r0]
_080D711A:
bl sub_80D49E8
pop {r0}
bx r0
.align 2, 0
_080D7124: .4byte gUnknown_2024018
_080D7128: .4byte gActiveBattler
_080D712C: .4byte gTasks
_080D7130: .4byte gUnknown_2024000
_080D7134: .4byte sub_80491B0
thumb_func_end sub_80D70E8
thumb_func_start sub_80D7138
sub_80D7138: @ 80D7138
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D7138
thumb_func_start LinkPartnerHandleSpriteInvisibility
LinkPartnerHandleSpriteInvisibility: @ 80D7144
push {r4,lr}
ldr r4, _080D7194 @ =gActiveBattler
ldrb r0, [r4]
bl sub_8075224
lsls r0, 24
cmp r0, 0
beq _080D718A
ldr r3, _080D7198 @ =gSprites
ldr r0, _080D719C @ =gUnknown_2023D44
ldrb r1, [r4]
adds r0, r1, r0
ldrb r0, [r0]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r3
ldr r0, _080D71A0 @ =gUnknown_2022BC4
lsls r1, 9
adds r0, 0x1
adds r1, r0
adds r2, 0x3E
movs r0, 0x1
ldrb r1, [r1]
ands r1, r0
lsls r1, 2
ldrb r3, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2]
ldrb r0, [r4]
bl CopyBattleSpriteInvisibility
_080D718A:
bl sub_80D49E8
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080D7194: .4byte gActiveBattler
_080D7198: .4byte gSprites
_080D719C: .4byte gUnknown_2023D44
_080D71A0: .4byte gUnknown_2022BC4
thumb_func_end LinkPartnerHandleSpriteInvisibility
thumb_func_start LinkPartnerHandleBattleAnimation
LinkPartnerHandleBattleAnimation: @ 80D71A4
push {r4-r6,lr}
sub sp, 0x4
ldr r6, _080D71E8 @ =gActiveBattler
ldrb r0, [r6]
bl mplay_80342A4
lsls r0, 24
cmp r0, 0
bne _080D71FC
ldr r5, _080D71EC @ =gUnknown_2022BC4
ldrb r2, [r6]
lsls r1, r2, 9
adds r0, r5, 0x1
adds r0, r1, r0
ldrb r3, [r0]
adds r0, r5, 0x2
adds r0, r1, r0
ldrb r4, [r0]
adds r5, 0x3
adds r1, r5
ldrb r0, [r1]
lsls r0, 8
orrs r4, r0
str r4, [sp]
adds r0, r2, 0
adds r1, r2, 0
bl TryHandleLaunchBattleTableAnimation
lsls r0, 24
cmp r0, 0
beq _080D71F0
bl sub_80D49E8
b _080D71FC
.align 2, 0
_080D71E8: .4byte gActiveBattler
_080D71EC: .4byte gUnknown_2022BC4
_080D71F0:
ldr r0, _080D7204 @ =gUnknown_3004FE0
ldrb r1, [r6]
lsls r1, 2
adds r1, r0
ldr r0, _080D7208 @ =sub_80D4A90
str r0, [r1]
_080D71FC:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080D7204: .4byte gUnknown_3004FE0
_080D7208: .4byte sub_80D4A90
thumb_func_end LinkPartnerHandleBattleAnimation
thumb_func_start sub_80D720C
sub_80D720C: @ 80D720C
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D720C
thumb_func_start sub_80D7218
sub_80D7218: @ 80D7218
push {lr}
bl sub_80D49E8
pop {r0}
bx r0
thumb_func_end sub_80D7218
thumb_func_start LinkPartnerHandlecmd55
LinkPartnerHandlecmd55: @ 80D7224
push {r4,lr}
ldr r2, _080D725C @ =gUnknown_2023E8A
ldr r1, _080D7260 @ =gUnknown_2022BC4
ldr r4, _080D7264 @ =gActiveBattler
ldrb r0, [r4]
lsls r0, 9
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
strb r0, [r2]
movs r0, 0x5
bl FadeOutMapMusic
movs r0, 0x3
bl BeginFastPaletteFade
bl sub_80D49E8
ldr r1, _080D7268 @ =gUnknown_3004FE0
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r1, _080D726C @ =sub_802F6A8
str r1, [r0]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080D725C: .4byte gUnknown_2023E8A
_080D7260: .4byte gUnknown_2022BC4
_080D7264: .4byte gActiveBattler
_080D7268: .4byte gUnknown_3004FE0
_080D726C: .4byte sub_802F6A8
thumb_func_end LinkPartnerHandlecmd55
thumb_func_start nullsub_78
nullsub_78: @ 80D7270
bx lr
thumb_func_end nullsub_78
.align 2, 0 @ Don't pad with nop.