pokeemerald/asm/battle_controller_opponent.s
2017-10-25 21:57:28 +02:00

1264 lines
21 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start OpponentHandleOpenBag
OpponentHandleOpenBag: @ 806215C
push {lr}
ldr r0, =gActiveBank
ldrb r0, [r0]
lsrs r0, 1
ldr r1, =gBattleStruct
ldr r1, [r1]
lsls r0, 1
adds r0, r1
adds r0, 0xC0
ldrb r1, [r0]
movs r0, 0x1
bl EmitOneReturnValue
bl OpponentBufferExecCompleted
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleOpenBag
thumb_func_start OpponentHandleChoosePokemon
OpponentHandleChoosePokemon: @ 8062188
push {r4-r7,lr}
ldr r0, =gActiveBank
ldrb r0, [r0]
ldr r1, =gBattleStruct
ldr r1, [r1]
adds r0, r1
movs r2, 0xA5
lsls r2, 2
adds r1, r0, r2
ldrb r0, [r1]
cmp r0, 0x6
bne _08062254
bl GetMostSuitableMonToSwitchInto
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x6
bne _0806225A
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
cmp r0, 0
bne _080621D4
movs r0, 0x1
bl GetBankByIdentity
lsls r0, 24
lsrs r5, r0, 24
adds r7, r5, 0
b _080621E8
.pool
_080621D4:
movs r0, 0x1
bl GetBankByIdentity
lsls r0, 24
lsrs r7, r0, 24
movs r0, 0x3
bl GetBankByIdentity
lsls r0, 24
lsrs r5, r0, 24
_080621E8:
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
ldr r1, =0x00808000
ands r0, r1
cmp r0, 0
beq _08062214
ldr r0, =gActiveBank
ldrb r0, [r0]
cmp r0, 0x1
bne _08062210
movs r0, 0
movs r6, 0x3
b _08062218
.pool
_08062210:
movs r0, 0x3
b _08062216
_08062214:
movs r0, 0
_08062216:
movs r6, 0x6
_08062218:
adds r4, r0, 0
b _0806221E
_0806221C:
adds r4, 0x1
_0806221E:
cmp r4, r6
bge _0806225A
movs r0, 0x64
muls r0, r4
ldr r1, =gEnemyParty
adds r0, r1
movs r1, 0x39
bl GetMonData
cmp r0, 0
beq _0806221C
ldr r1, =gBattlePartyID
lsls r0, r7, 1
adds r0, r1
ldrh r0, [r0]
cmp r4, r0
beq _0806221C
lsls r0, r5, 1
adds r0, r1
ldrh r0, [r0]
cmp r4, r0
beq _0806221C
b _0806225A
.pool
_08062254:
ldrb r4, [r1]
movs r0, 0x6
strb r0, [r1]
_0806225A:
ldr r0, =gActiveBank
ldrb r0, [r0]
ldr r1, =gBattleStruct
ldr r1, [r1]
adds r0, r1
adds r0, 0x5C
strb r4, [r0]
lsls r1, r4, 24
lsrs r1, 24
movs r0, 0x1
movs r2, 0
bl EmitChosenMonReturnValue
bl OpponentBufferExecCompleted
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleChoosePokemon
thumb_func_start OpponentHandleCmd23
OpponentHandleCmd23: @ 8062288
push {lr}
bl OpponentBufferExecCompleted
pop {r0}
bx r0
thumb_func_end OpponentHandleCmd23
thumb_func_start OpponentHandleHealthBarUpdate
OpponentHandleHealthBarUpdate: @ 8062294
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
movs r0, 0
bl LoadBattleBarGfx
ldr r3, =gBattleBufferA
ldr r0, =gActiveBank
mov r9, r0
ldrb r4, [r0]
lsls r2, r4, 9
adds r0, r3, 0x3
adds r0, r2, r0
ldrb r1, [r0]
lsls r1, 8
adds r3, 0x2
adds r2, r3
ldrb r0, [r2]
orrs r0, r1
lsls r0, 16
asrs r7, r0, 16
ldr r0, =0x00007fff
cmp r7, r0
beq _08062324
ldr r6, =gBattlePartyID
lsls r0, r4, 1
adds r0, r6
ldrh r0, [r0]
movs r5, 0x64
muls r0, r5
ldr r4, =gEnemyParty
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, =gHealthBoxesIds
adds r1, r0, r1
ldrb r1, [r1]
str r7, [sp]
mov r2, r8
bl SetBattleBarStruct
b _0806234E
.pool
_08062324:
ldr r1, =gBattlePartyID
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, =gEnemyParty
adds r0, r1
movs r1, 0x3A
bl GetMonData
adds r2, r0, 0
mov r1, r9
ldrb r0, [r1]
ldr r1, =gHealthBoxesIds
adds r1, r0, r1
ldrb r1, [r1]
str r7, [sp]
movs r3, 0
bl SetBattleBarStruct
_0806234E:
ldr r1, =gBattleBankFunc
ldr r0, =gActiveBank
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r1, =sub_805FA70
str r1, [r0]
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleHealthBarUpdate
thumb_func_start OpponentHandleExpUpdate
OpponentHandleExpUpdate: @ 8062384
push {lr}
bl OpponentBufferExecCompleted
pop {r0}
bx r0
thumb_func_end OpponentHandleExpUpdate
thumb_func_start OpponentHandleStatusIconUpdate
OpponentHandleStatusIconUpdate: @ 8062390
push {r4,lr}
ldr r4, =gActiveBank
ldrb r0, [r4]
bl mplay_80342A4
lsls r0, 24
cmp r0, 0
bne _080623E4
ldr r0, =gHealthBoxesIds
ldrb r1, [r4]
adds r0, r1, r0
ldrb r0, [r0]
ldr r2, =gBattlePartyID
lsls r1, 1
adds r1, r2
ldrh r2, [r1]
movs r1, 0x64
muls r1, r2
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0x9
bl UpdateHealthboxAttribute
ldrb r2, [r4]
ldr r0, =gBattleSpritesDataPtr
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, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r1, =sub_805FEB8
str r1, [r0]
_080623E4:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleStatusIconUpdate
thumb_func_start OpponentHandleStatusAnimation
OpponentHandleStatusAnimation: @ 8062408
push {r4,r5,lr}
ldr r5, =gActiveBank
ldrb r0, [r5]
bl mplay_80342A4
lsls r0, 24
cmp r0, 0
bne _08062458
ldr r4, =gBattleBufferA
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 DoStatusAnimation
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
adds r0, r1
ldr r1, =sub_805FEB8
str r1, [r0]
_08062458:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleStatusAnimation
thumb_func_start OpponentHandleStatusXor
OpponentHandleStatusXor: @ 8062470
push {lr}
bl OpponentBufferExecCompleted
pop {r0}
bx r0
thumb_func_end OpponentHandleStatusXor
thumb_func_start OpponentHandleDataTransfer
OpponentHandleDataTransfer: @ 806247C
push {lr}
bl OpponentBufferExecCompleted
pop {r0}
bx r0
thumb_func_end OpponentHandleDataTransfer
thumb_func_start OpponentHandleDMA3Transfer
OpponentHandleDMA3Transfer: @ 8062488
push {lr}
bl OpponentBufferExecCompleted
pop {r0}
bx r0
thumb_func_end OpponentHandleDMA3Transfer
thumb_func_start OpponentHandlePlayBGM
OpponentHandlePlayBGM: @ 8062494
push {lr}
bl OpponentBufferExecCompleted
pop {r0}
bx r0
thumb_func_end OpponentHandlePlayBGM
thumb_func_start OpponentHandleCmd32
OpponentHandleCmd32: @ 80624A0
push {lr}
bl OpponentBufferExecCompleted
pop {r0}
bx r0
thumb_func_end OpponentHandleCmd32
thumb_func_start OpponentHandleCmd33
OpponentHandleCmd33: @ 80624AC
push {lr}
bl OpponentBufferExecCompleted
pop {r0}
bx r0
thumb_func_end OpponentHandleCmd33
thumb_func_start OpponentHandleCmd34
OpponentHandleCmd34: @ 80624B8
push {lr}
bl OpponentBufferExecCompleted
pop {r0}
bx r0
thumb_func_end OpponentHandleCmd34
thumb_func_start OpponentHandleCmd35
OpponentHandleCmd35: @ 80624C4
push {lr}
bl OpponentBufferExecCompleted
pop {r0}
bx r0
thumb_func_end OpponentHandleCmd35
thumb_func_start OpponentHandleCmd36
OpponentHandleCmd36: @ 80624D0
push {lr}
bl OpponentBufferExecCompleted
pop {r0}
bx r0
thumb_func_end OpponentHandleCmd36
thumb_func_start OpponentHandleCmd37
OpponentHandleCmd37: @ 80624DC
push {lr}
ldr r2, =gUnknown_02022D0C
ldrb r1, [r2]
movs r0, 0x80
negs r0, r0
ands r0, r1
strb r0, [r2]
bl OpponentBufferExecCompleted
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleCmd37
thumb_func_start OpponentHandleCmd38
OpponentHandleCmd38: @ 80624F8
push {lr}
ldr r3, =gUnknown_02022D0C
ldr r1, =gBattleBufferA
ldr r0, =gActiveBank
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 OpponentBufferExecCompleted
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleCmd38
thumb_func_start OpponentHandleCmd39
OpponentHandleCmd39: @ 8062530
push {lr}
ldr r2, =gUnknown_02022D0C
ldrb r1, [r2]
movs r0, 0x7F
ands r0, r1
strb r0, [r2]
bl OpponentBufferExecCompleted
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleCmd39
thumb_func_start OpponentHandleCmd40
OpponentHandleCmd40: @ 8062548
push {lr}
ldr r3, =gUnknown_02022D0C
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 OpponentBufferExecCompleted
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleCmd40
thumb_func_start OpponentHandleHitAnimation
OpponentHandleHitAnimation: @ 8062570
push {r4,lr}
ldr r3, =gSprites
ldr r2, =gBankSpriteIds
ldr r4, =gActiveBank
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 _080625A4
bl OpponentBufferExecCompleted
b _080625CE
.pool
_080625A4:
ldr r1, =gDoingBattleAnim
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, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r1, =bx_blink_t7
str r1, [r0]
_080625CE:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleHitAnimation
thumb_func_start OpponentHandleCmd42
OpponentHandleCmd42: @ 80625E0
push {lr}
bl OpponentBufferExecCompleted
pop {r0}
bx r0
thumb_func_end OpponentHandleCmd42
thumb_func_start OpponentHandleEffectivenessSound
OpponentHandleEffectivenessSound: @ 80625EC
push {r4,lr}
ldr r4, =gActiveBank
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
movs r3, 0x3F
cmp r0, 0
bne _08062600
movs r3, 0xC0
_08062600:
ldr r2, =gBattleBufferA
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 OpponentBufferExecCompleted
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleEffectivenessSound
thumb_func_start OpponentHandlePlayFanfareOrBGM
OpponentHandlePlayFanfareOrBGM: @ 8062630
push {r4,r5,lr}
ldr r4, =gBattleBufferA
ldr r5, =gActiveBank
ldrb r0, [r5]
lsls r3, r0, 9
adds r0, r4, 0x3
adds r0, r3, r0
ldrb r0, [r0]
cmp r0, 0
beq _0806266C
bl BattleMusicStop
ldrb r1, [r5]
lsls r1, 9
adds r0, r4, 0x1
adds r0, r1, r0
ldrb r0, [r0]
adds r2, r4, 0x2
adds r1, r2
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
bl PlayBGM
b _08062680
.pool
_0806266C:
adds r0, r4, 0x1
adds r0, r3, r0
ldrb r0, [r0]
adds r1, r4, 0x2
adds r1, r3, r1
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
bl PlayFanfare
_08062680:
bl OpponentBufferExecCompleted
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end OpponentHandlePlayFanfareOrBGM
thumb_func_start OpponentHandleFaintingCry
OpponentHandleFaintingCry: @ 806268C
push {lr}
ldr r1, =gBattlePartyID
ldr r0, =gActiveBank
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, =gEnemyParty
adds r0, r1
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r0, 16
movs r1, 0x19
movs r2, 0x5
bl PlayCry3
bl OpponentBufferExecCompleted
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleFaintingCry
thumb_func_start OpponentHandleIntroSlide
OpponentHandleIntroSlide: @ 80626C8
push {lr}
ldr r1, =gBattleBufferA
ldr r0, =gActiveBank
ldrb r0, [r0]
lsls r0, 9
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
bl HandleIntroSlide
ldr r2, =gUnknown_020243FC
ldrh r0, [r2]
movs r1, 0x1
orrs r0, r1
strh r0, [r2]
bl OpponentBufferExecCompleted
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleIntroSlide
thumb_func_start OpponentHandleIntroTrainerBallThrow
OpponentHandleIntroTrainerBallThrow: @ 80626FC
push {r4-r6,lr}
ldr r5, =gBankSpriteIds
ldr r6, =gActiveBank
ldrb r0, [r6]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r4, =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, 0x23
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
movs r1, 0x8C
lsls r1, 1
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, =sub_80A6EEC
str r1, [r0]
ldrb r0, [r6]
adds r0, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldr r1, =sub_806280C
bl StoreSpriteCallbackInData6
ldr r0, =sub_8062828
movs r1, 0x5
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r4, =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r4
ldrb r0, [r6]
strh r0, [r1, 0x8]
ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
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, 0x1
ands r0, r1
cmp r0, 0
beq _080627BE
ldr r0, =gUnknown_020244B4
adds r0, r2, r0
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r4
ldr r1, =sub_8073C30
str r1, [r0]
_080627BE:
ldr r0, [r3]
ldr r2, [r0, 0x8]
ldrb r0, [r2, 0x9]
movs r1, 0x1
orrs r0, r1
strb r0, [r2, 0x9]
ldr r1, =gBattleBankFunc
ldrb r0, [r6]
lsls r0, 2
adds r0, r1
ldr r1, =nullsub_26
str r1, [r0]
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleIntroTrainerBallThrow
thumb_func_start sub_806280C
sub_806280C: @ 806280C
push {r4,lr}
adds r4, r0, 0
ldrh r0, [r4, 0x6]
bl FreeTrainerFrontPicPalette
adds r0, r4, 0
bl FreeSpriteOamMatrix
adds r0, r4, 0
bl DestroySprite
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_806280C
thumb_func_start sub_8062828
sub_8062828: @ 8062828
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldr r7, =gActiveBank
ldrb r0, [r7]
mov r9, r0
ldr r1, =gTasks
mov r2, r8
lsls r0, r2, 2
add r0, r8
lsls r0, 3
adds r0, r1
ldrh r0, [r0, 0x8]
strb r0, [r7]
bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0806286C
ldr r0, =gBattleTypeFlags
ldr r1, [r0]
movs r0, 0x40
ands r0, r1
cmp r0, 0
bne _0806286C
movs r0, 0x80
lsls r0, 8
ands r1, r0
cmp r1, 0
beq _080628A0
_0806286C:
ldr r0, =gBattleBufferA
ldrb r1, [r7]
lsls r2, r1, 9
adds r0, 0x1
adds r2, r0
ldr r0, =gBattlePartyID
lsls r1, 1
adds r1, r0
ldrh r0, [r1]
strb r0, [r2]
ldrb r0, [r7]
movs r1, 0
bl sub_80613DC
b _080628E0
.pool
_080628A0:
ldr r4, =gBattleBufferA
ldrb r0, [r7]
lsls r1, r0, 9
adds r4, 0x1
adds r1, r4
ldr r6, =gBattlePartyID
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
strb r0, [r1]
ldrb r0, [r7]
movs r1, 0
bl sub_80613DC
ldrb r0, [r7]
movs r5, 0x2
eors r0, r5
strb r0, [r7]
ldrb r0, [r7]
lsls r1, r0, 9
adds r1, r4
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
strb r0, [r1]
ldrb r0, [r7]
movs r1, 0
bl sub_80613DC
ldrb r0, [r7]
eors r0, r5
strb r0, [r7]
_080628E0:
ldr r1, =gBattleBankFunc
ldr r2, =gActiveBank
ldrb r0, [r2]
lsls r0, 2
adds r0, r1
ldr r1, =sub_805F560
str r1, [r0]
mov r0, r9
strb r0, [r2]
mov r0, r8
bl DestroyTask
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_8062828
thumb_func_start OpponentHandleDrawPartyStatusSummary
OpponentHandleDrawPartyStatusSummary: @ 8062918
push {r4-r7,lr}
ldr r1, =gBattleBufferA
ldr r0, =gActiveBank
ldrb r2, [r0]
lsls r0, r2, 9
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _08062948
adds r0, r2, 0
bl GetBankSide
lsls r0, 24
cmp r0, 0
bne _08062948
bl OpponentBufferExecCompleted
b _08062A12
.pool
_08062948:
ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r3, =gActiveBank
ldrb r1, [r3]
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]
ldr r1, =gBattleBufferA
ldrb r2, [r3]
lsls r0, r2, 9
adds r1, 0x2
adds r0, r1
ldrb r0, [r0]
adds r7, r3, 0
cmp r0, 0
beq _080629B4
ldr r0, [r4]
ldr r1, [r0, 0x4]
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r3, r0, r1
ldrb r2, [r3, 0x1]
lsls r1, r2, 27
lsrs r0, r1, 28
cmp r0, 0x1
bhi _080629AC
adds r0, 0x1
movs r1, 0xF
ands r0, r1
lsls r0, 1
movs r1, 0x1F
negs r1, r1
ands r1, r2
orrs r1, r0
strb r1, [r3, 0x1]
b _08062A12
.pool
_080629AC:
movs r0, 0x1F
negs r0, r0
ands r0, r2
strb r0, [r3, 0x1]
_080629B4:
adds r5, r7, 0
ldrb r0, [r5]
lsls r3, r0, 9
ldr r4, =gBattleBufferA + 4
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 CreatePartyStatusSummarySprites
ldr r2, =gUnknown_020244B4
ldrb r1, [r5]
adds r1, r2
movs r3, 0
strb r0, [r1]
ldr r6, =gBattleSpritesDataPtr
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 _08062A06
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]
_08062A06:
ldr r0, =gBattleBankFunc
ldrb r1, [r7]
lsls r1, 2
adds r1, r0
ldr r0, =bx_0803D790_t7
str r0, [r1]
_08062A12:
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleDrawPartyStatusSummary
thumb_func_start bx_0803D790_t7
bx_0803D790_t7: @ 8062A2C
push {r4,lr}
ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r3, =gActiveBank
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 _08062A64
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 OpponentBufferExecCompleted
_08062A64:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end bx_0803D790_t7
thumb_func_start OpponentHandleCmd49
OpponentHandleCmd49: @ 8062A74
push {lr}
ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
ldr r0, =gActiveBank
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 _08062AA6
ldr r2, =gTasks
ldr r0, =gUnknown_020244B4
adds r0, r3, r0
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
ldr r1, =sub_8073C30
str r1, [r0]
_08062AA6:
bl OpponentBufferExecCompleted
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleCmd49
thumb_func_start OpponentHandleCmd50
OpponentHandleCmd50: @ 8062AC4
push {lr}
bl OpponentBufferExecCompleted
pop {r0}
bx r0
thumb_func_end OpponentHandleCmd50
thumb_func_start OpponentHandleSpriteInvisibility
OpponentHandleSpriteInvisibility: @ 8062AD0
push {r4,lr}
ldr r4, =gActiveBank
ldrb r0, [r4]
bl AnimBankSpriteExists
lsls r0, 24
cmp r0, 0
beq _08062B16
ldr r3, =gSprites
ldr r0, =gBankSpriteIds
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, =gBattleBufferA
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 SetBattleSpriteInvisibilityBitToSpriteInvisibility
_08062B16:
bl OpponentBufferExecCompleted
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleSpriteInvisibility
thumb_func_start OpponentHandleBattleAnimation
OpponentHandleBattleAnimation: @ 8062B30
push {r4-r6,lr}
sub sp, 0x4
ldr r6, =gActiveBank
ldrb r0, [r6]
bl mplay_80342A4
lsls r0, 24
cmp r0, 0
bne _08062B88
ldr r5, =gBattleBufferA
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 DoBattleAnimationFromTable
lsls r0, 24
cmp r0, 0
beq _08062B7C
bl OpponentBufferExecCompleted
b _08062B88
.pool
_08062B7C:
ldr r0, =gBattleBankFunc
ldrb r1, [r6]
lsls r1, 2
adds r1, r0
ldr r0, =bx_803B0F4
str r0, [r1]
_08062B88:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleBattleAnimation
thumb_func_start OpponentHandleLinkStandbyMsg
OpponentHandleLinkStandbyMsg: @ 8062B98
push {lr}
bl OpponentBufferExecCompleted
pop {r0}
bx r0
thumb_func_end OpponentHandleLinkStandbyMsg
thumb_func_start OpponentHandleResetActionMoveSelection
OpponentHandleResetActionMoveSelection: @ 8062BA4
push {lr}
bl OpponentBufferExecCompleted
pop {r0}
bx r0
thumb_func_end OpponentHandleResetActionMoveSelection
thumb_func_start OpponentHandleCmd55
OpponentHandleCmd55: @ 8062BB0
push {lr}
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x6
ands r0, r1
cmp r0, 0x2
bne _08062BDA
ldr r2, =gMain
ldr r0, =0x00000439
adds r3, r2, r0
ldrb r1, [r3]
movs r0, 0x3
negs r0, r0
ands r0, r1
strb r0, [r3]
ldr r0, =gPreBattleCallback1
ldr r0, [r0]
str r0, [r2]
ldr r0, [r2, 0x8]
bl SetMainCallback2
_08062BDA:
bl OpponentBufferExecCompleted
pop {r0}
bx r0
.pool
thumb_func_end OpponentHandleCmd55
thumb_func_start nullsub_91
nullsub_91: @ 8062BF4
bx lr
thumb_func_end nullsub_91
.align 2, 0 @ Don't pad with nop.