mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-02-23 20:55:30 +01:00
1264 lines
21 KiB
ArmAsm
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.
|