mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-11-16 19:47:35 +01:00
6267 lines
94 KiB
ArmAsm
6267 lines
94 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
|
|
thumb_func_start nullsub_28
|
|
nullsub_28: @ 8064390
|
|
bx lr
|
|
thumb_func_end nullsub_28
|
|
|
|
thumb_func_start SetBankFuncToLinkOpponentBufferRunCommand
|
|
SetBankFuncToLinkOpponentBufferRunCommand: @ 8064394
|
|
ldr r1, =gBattleBankFunc
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =LinkOpponentBufferRunCommand
|
|
str r1, [r0]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end SetBankFuncToLinkOpponentBufferRunCommand
|
|
|
|
thumb_func_start LinkOpponentBufferRunCommand
|
|
LinkOpponentBufferRunCommand: @ 80643B0
|
|
push {lr}
|
|
ldr r2, =gBattleExecBuffer
|
|
ldr r1, =gBitTable
|
|
ldr r0, =gActiveBank
|
|
ldrb r3, [r0]
|
|
lsls r0, r3, 2
|
|
adds r0, r1
|
|
ldr r1, [r2]
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080643FC
|
|
ldr r0, =gBattleBufferA
|
|
lsls r1, r3, 9
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x38
|
|
bhi _080643F8
|
|
ldr r0, =gLinkOpponentBufferCommands
|
|
ldrb r1, [r1]
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldr r0, [r1]
|
|
bl _call_via_r0
|
|
b _080643FC
|
|
.pool
|
|
_080643F8:
|
|
bl LinkOpponentBufferExecCompleted
|
|
_080643FC:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end LinkOpponentBufferRunCommand
|
|
|
|
thumb_func_start sub_8064400
|
|
sub_8064400: @ 8064400
|
|
push {lr}
|
|
ldr r2, =gSprites
|
|
ldr r1, =gBankSpriteIds
|
|
ldr r0, =gActiveBank
|
|
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, =SpriteCallbackDummy
|
|
cmp r1, r0
|
|
bne _08064424
|
|
bl LinkOpponentBufferExecCompleted
|
|
_08064424:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8064400
|
|
|
|
thumb_func_start sub_8064438
|
|
sub_8064438: @ 8064438
|
|
push {lr}
|
|
ldr r2, =gSprites
|
|
ldr r1, =gBankSpriteIds
|
|
ldr r0, =gActiveBank
|
|
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, =SpriteCallbackDummy
|
|
cmp r1, r0
|
|
bne _0806445C
|
|
bl LinkOpponentBufferExecCompleted
|
|
_0806445C:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8064438
|
|
|
|
thumb_func_start sub_8064470
|
|
sub_8064470: @ 8064470
|
|
push {r4-r6,lr}
|
|
ldr r5, =gSprites
|
|
ldr r6, =gBankSpriteIds
|
|
ldr r4, =gActiveBank
|
|
ldrb r0, [r4]
|
|
adds r0, r6
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r2, r0, 2
|
|
adds r0, r5, 0
|
|
adds r0, 0x1C
|
|
adds r0, r2, r0
|
|
ldr r1, [r0]
|
|
ldr r0, =SpriteCallbackDummy
|
|
cmp r1, r0
|
|
bne _080644C2
|
|
adds r0, r2, r5
|
|
ldrh r0, [r0, 0x6]
|
|
bl sub_805DFE4
|
|
ldrb r0, [r4]
|
|
adds r0, r6
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
bl FreeSpriteOamMatrix
|
|
ldrb r0, [r4]
|
|
adds r0, r6
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
bl DestroySprite
|
|
bl LinkOpponentBufferExecCompleted
|
|
_080644C2:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8064470
|
|
|
|
thumb_func_start sub_80644D8
|
|
sub_80644D8: @ 80644D8
|
|
push {r4,lr}
|
|
ldr r4, =gBattleSpritesDataPtr
|
|
ldr r1, [r4]
|
|
ldr r3, =gActiveBank
|
|
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 _08064510
|
|
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 LinkOpponentBufferExecCompleted
|
|
_08064510:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80644D8
|
|
|
|
thumb_func_start sub_8064520
|
|
sub_8064520: @ 8064520
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
movs r0, 0
|
|
mov r8, r0
|
|
movs r4, 0
|
|
bl battle_type_is_double
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806454C
|
|
bl battle_type_is_double
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08064584
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08064584
|
|
_0806454C:
|
|
ldr r2, =gSprites
|
|
ldr r1, =gHealthBoxesIds
|
|
ldr r3, =gActiveBank
|
|
ldrb r0, [r3]
|
|
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, =SpriteCallbackDummy
|
|
adds r7, r3, 0
|
|
cmp r1, r0
|
|
bne _080645C2
|
|
b _080645CA
|
|
.pool
|
|
_08064584:
|
|
ldr r3, =gSprites
|
|
ldr r6, =gHealthBoxesIds
|
|
ldr r2, =gActiveBank
|
|
ldrb r4, [r2]
|
|
adds r0, r4, r6
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r5, r3, 0
|
|
adds r5, 0x1C
|
|
adds r0, r5
|
|
ldr r3, [r0]
|
|
ldr r0, =SpriteCallbackDummy
|
|
adds r7, r2, 0
|
|
cmp r3, r0
|
|
bne _080645C0
|
|
movs r0, 0x2
|
|
eors r4, r0
|
|
adds r0, r4, r6
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldr r0, [r0]
|
|
cmp r0, r3
|
|
bne _080645C0
|
|
movs r1, 0x1
|
|
mov r8, r1
|
|
_080645C0:
|
|
movs r4, 0x1
|
|
_080645C2:
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
bne _080645CA
|
|
b _08064714
|
|
_080645CA:
|
|
cmp r4, 0
|
|
bne _080645DE
|
|
ldrb r1, [r7]
|
|
movs r0, 0x2
|
|
eors r0, r1
|
|
bl b_side_obj__get_some_boolean
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806469C
|
|
_080645DE:
|
|
ldr r1, =gBattleSpritesDataPtr
|
|
mov r12, r1
|
|
ldr r0, [r1]
|
|
ldr r7, =gActiveBank
|
|
ldrb r2, [r7]
|
|
ldr r3, [r0, 0x4]
|
|
lsls r0, r2, 1
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r4, r0, r3
|
|
ldrb r1, [r4, 0x1]
|
|
movs r5, 0x1
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08064600
|
|
b _08064714
|
|
_08064600:
|
|
movs r6, 0x2
|
|
adds r1, r6, 0
|
|
eors r1, r2
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrb r1, [r0, 0x1]
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08064714
|
|
ldrb r1, [r4]
|
|
movs r3, 0x7F
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
strb r0, [r4]
|
|
mov r1, r12
|
|
ldr r0, [r1]
|
|
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 r4, 0x2
|
|
negs r4, r4
|
|
adds r0, r4, 0
|
|
ands r0, r2
|
|
strb r0, [r1, 0x1]
|
|
mov r0, r12
|
|
ldr r2, [r0]
|
|
ldrb r0, [r7]
|
|
adds r1, r6, 0
|
|
eors r1, r0
|
|
ldr r2, [r2, 0x4]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
ands r3, r1
|
|
strb r3, [r0]
|
|
mov r1, r12
|
|
ldr r2, [r1]
|
|
ldrb r0, [r7]
|
|
adds r1, r6, 0
|
|
eors r1, r0
|
|
ldr r2, [r2, 0x4]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r1, [r0, 0x1]
|
|
ands r4, r1
|
|
strb r4, [r0, 0x1]
|
|
ldr r4, =0x000027f9
|
|
adds r0, r4, 0
|
|
bl FreeSpriteTilesByTag
|
|
adds r0, r4, 0
|
|
bl FreeSpritePaletteByTag
|
|
b _080646F2
|
|
.pool
|
|
_0806469C:
|
|
ldr r3, =gBattleSpritesDataPtr
|
|
ldr r0, [r3]
|
|
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 _08064714
|
|
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]
|
|
ldrb r0, [r7]
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x3
|
|
bne _080646F2
|
|
ldr r4, =0x000027f9
|
|
adds r0, r4, 0
|
|
bl FreeSpriteTilesByTag
|
|
adds r0, r4, 0
|
|
bl FreeSpritePaletteByTag
|
|
_080646F2:
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r3, =gActiveBank
|
|
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, =gBattleBankFunc
|
|
ldrb r0, [r3]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_80644D8
|
|
str r1, [r0]
|
|
_08064714:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8064520
|
|
|
|
thumb_func_start sub_8064734
|
|
sub_8064734: @ 8064734
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
movs r0, 0
|
|
mov r10, r0
|
|
ldr r5, =gBattleSpritesDataPtr
|
|
ldr r0, [r5]
|
|
ldr r4, =gActiveBank
|
|
ldrb r2, [r4]
|
|
ldr r1, [r0, 0x4]
|
|
lsls r3, r2, 1
|
|
adds r0, r3, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r6, 0xC4
|
|
lsls r6, 1
|
|
adds r0, r6, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08064776
|
|
ldr r0, =gBattlePartyID
|
|
adds r0, r3, r0
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, =gEnemyParty
|
|
adds r1, r0
|
|
adds r0, r2, 0
|
|
bl sub_8172EF0
|
|
_08064776:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080647B4
|
|
ldr r2, [r5]
|
|
ldrb r1, [r4]
|
|
movs r0, 0x2
|
|
adds r3, r0, 0
|
|
eors r3, r1
|
|
ldr r1, [r2, 0x4]
|
|
lsls r2, r3, 1
|
|
adds r0, r2, r3
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
adds r0, r6, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080647B4
|
|
ldr r0, =gBattlePartyID
|
|
adds r0, r2, r0
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, =gEnemyParty
|
|
adds r1, r0
|
|
adds r0, r3, 0
|
|
bl sub_8172EF0
|
|
_080647B4:
|
|
ldr r3, =gBattleSpritesDataPtr
|
|
ldr r0, [r3]
|
|
ldr r2, =gActiveBank
|
|
ldrb r5, [r2]
|
|
ldr r4, [r0, 0x4]
|
|
lsls r0, r5, 1
|
|
adds r0, r5
|
|
lsls r0, 2
|
|
adds r6, r0, r4
|
|
ldrb r1, [r6]
|
|
movs r0, 0x8
|
|
mov r12, r0
|
|
ands r0, r1
|
|
mov r8, r3
|
|
mov r9, r2
|
|
cmp r0, 0
|
|
bne _08064898
|
|
movs r7, 0x2
|
|
adds r1, r7, 0
|
|
eors r1, r5
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldrb r1, [r0]
|
|
mov r0, r12
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08064898
|
|
ldrb r1, [r6, 0x1]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0806487A
|
|
bl battle_type_is_double
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806484A
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0806484A
|
|
ldr r4, =gHealthBoxesIds
|
|
mov r1, r9
|
|
ldrb r0, [r1]
|
|
adds r1, r7, 0
|
|
eors r1, r0
|
|
adds r0, r1, r4
|
|
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, 0
|
|
bl healthbar_draw_field_maybe
|
|
mov r1, r9
|
|
ldrb r0, [r1]
|
|
eors r0, r7
|
|
bl sub_8076918
|
|
mov r1, r9
|
|
ldrb r0, [r1]
|
|
eors r0, r7
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
bl sub_80729D0
|
|
_0806484A:
|
|
ldr r5, =gHealthBoxesIds
|
|
ldr r4, =gActiveBank
|
|
ldrb r1, [r4]
|
|
adds r0, r1, r5
|
|
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, 0
|
|
bl healthbar_draw_field_maybe
|
|
ldrb r0, [r4]
|
|
bl sub_8076918
|
|
ldrb r0, [r4]
|
|
adds r0, r5
|
|
ldrb r0, [r0]
|
|
bl sub_80729D0
|
|
_0806487A:
|
|
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, 0x1]
|
|
movs r2, 0x80
|
|
orrs r1, r2
|
|
strb r1, [r0, 0x1]
|
|
mov r8, r4
|
|
mov r9, r3
|
|
_08064898:
|
|
mov r1, r8
|
|
ldr r0, [r1]
|
|
mov r1, r9
|
|
ldrb r2, [r1]
|
|
ldr r3, [r0, 0x4]
|
|
lsls r0, r2, 1
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrb r1, [r0, 0x1]
|
|
movs r0, 0xC0
|
|
ands r0, r1
|
|
cmp r0, 0x80
|
|
bne _0806495A
|
|
movs r1, 0x2
|
|
eors r1, r2
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrb r1, [r0, 0x1]
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0806495A
|
|
bl IsCryPlayingOrClearCrySongs
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806495A
|
|
mov r1, r8
|
|
ldr r0, [r1]
|
|
mov r1, r9
|
|
ldrb r2, [r1]
|
|
ldr r1, [r0, 0x4]
|
|
lsls r0, r2, 1
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x1]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0806493C
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x42
|
|
ands r0, r1
|
|
cmp r0, 0x42
|
|
bne _08064930
|
|
adds r0, r2, 0
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0806493C
|
|
ldr r0, =gMPlay_BGM
|
|
bl m4aMPlayContinue
|
|
b _0806493C
|
|
.pool
|
|
_08064930:
|
|
ldr r0, =gMPlay_BGM
|
|
ldr r1, =0x0000ffff
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
bl m4aMPlayVolumeControl
|
|
_0806493C:
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r2, [r0]
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
ldr r2, [r2, 0x4]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r1, [r0, 0x1]
|
|
movs r2, 0x20
|
|
orrs r1, r2
|
|
strb r1, [r0, 0x1]
|
|
movs r0, 0x1
|
|
mov r10, r0
|
|
_0806495A:
|
|
mov r1, r10
|
|
cmp r1, 0
|
|
bne _08064962
|
|
b _08064AC0
|
|
_08064962:
|
|
ldr r2, =gSprites
|
|
ldr r0, =gUnknown_03005D7C
|
|
ldr r5, =gActiveBank
|
|
ldrb r3, [r5]
|
|
adds r0, r3, r0
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r2, 0x1C
|
|
adds r0, r2
|
|
ldr r4, [r0]
|
|
ldr r0, =SpriteCallbackDummy
|
|
cmp r4, r0
|
|
beq _08064982
|
|
b _08064AC0
|
|
_08064982:
|
|
ldr r0, =gBankSpriteIds
|
|
adds r0, r3, r0
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
cmp r0, r4
|
|
beq _08064998
|
|
b _08064AC0
|
|
_08064998:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080649E2
|
|
adds r0, r3, 0
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x3
|
|
bne _080649E2
|
|
ldr r3, =gBattleSpritesDataPtr
|
|
ldr r0, [r3]
|
|
ldrb r2, [r5]
|
|
ldr r0, [r0, 0x4]
|
|
lsls r1, r2, 1
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x9]
|
|
adds r0, 0x1
|
|
strb r0, [r1, 0x9]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _08064AC0
|
|
ldr r0, [r3]
|
|
ldrb r1, [r5]
|
|
ldr r2, [r0, 0x4]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
movs r1, 0
|
|
strb r1, [r0, 0x9]
|
|
_080649E2:
|
|
bl battle_type_is_double
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08064A3A
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08064A3A
|
|
ldr r1, =gUnknown_03005D7C
|
|
ldr r5, =gActiveBank
|
|
ldrb r0, [r5]
|
|
movs r4, 0x2
|
|
eors r0, r4
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, =gSprites
|
|
adds r0, r1
|
|
bl DestroySprite
|
|
ldrb r0, [r5]
|
|
eors r4, r0
|
|
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, 0xB
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
adds r0, r4, 0
|
|
bl sub_805EE54
|
|
_08064A3A:
|
|
ldr r1, =gUnknown_03005D7C
|
|
ldr r4, =gActiveBank
|
|
ldrb r0, [r4]
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, =gSprites
|
|
adds r0, r1
|
|
bl DestroySprite
|
|
ldrb r5, [r4]
|
|
ldr r1, =gBattlePartyID
|
|
lsls r0, r5, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
adds r0, r5, 0
|
|
bl sub_805EE54
|
|
ldr r3, =gBattleSpritesDataPtr
|
|
ldr r0, [r3]
|
|
ldr r2, [r0, 0x8]
|
|
ldrb r1, [r2, 0x9]
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r2, 0x9]
|
|
ldr r0, [r3]
|
|
ldrb r2, [r4]
|
|
ldr r0, [r0, 0x4]
|
|
lsls r1, r2, 1
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r2, [r1, 0x1]
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1, 0x1]
|
|
ldr r0, [r3]
|
|
ldrb r2, [r4]
|
|
ldr r0, [r0, 0x4]
|
|
lsls r1, r2, 1
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r2, [r1, 0x1]
|
|
movs r0, 0x7F
|
|
ands r0, r2
|
|
strb r0, [r1, 0x1]
|
|
ldr r1, =gBattleBankFunc
|
|
ldrb r0, [r4]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_8064520
|
|
str r1, [r0]
|
|
_08064AC0:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8064734
|
|
|
|
thumb_func_start sub_8064B04
|
|
sub_8064B04: @ 8064B04
|
|
push {r4-r7,lr}
|
|
ldr r4, =gSprites
|
|
ldr r0, =gBankSpriteIds
|
|
ldr r7, =gActiveBank
|
|
ldrb r3, [r7]
|
|
adds r0, r3, r0
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r2, r0, 2
|
|
adds r0, r4, 0
|
|
adds r0, 0x1C
|
|
adds r0, r2, r0
|
|
ldr r1, [r0]
|
|
ldr r0, =SpriteCallbackDummy
|
|
cmp r1, r0
|
|
bne _08064BB6
|
|
adds r0, r2, r4
|
|
movs r1, 0x24
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
bne _08064BB6
|
|
ldr r6, =gBattleSpritesDataPtr
|
|
ldr r0, [r6]
|
|
ldr r1, [r0, 0x4]
|
|
lsls r4, r3, 1
|
|
adds r0, r4, r3
|
|
lsls r0, 2
|
|
adds r2, r0, r1
|
|
ldrb r5, [r2]
|
|
movs r0, 0x80
|
|
ands r0, r5
|
|
cmp r0, 0
|
|
bne _08064B7C
|
|
ldr r0, =gBattlePartyID
|
|
adds r0, r4, r0
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, =gEnemyParty
|
|
adds r1, r0
|
|
adds r0, r3, 0
|
|
bl sub_8172EF0
|
|
b _08064BB6
|
|
.pool
|
|
_08064B7C:
|
|
ldrb r1, [r2, 0x1]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08064BB6
|
|
movs r0, 0x7F
|
|
ands r0, r5
|
|
strb r0, [r2]
|
|
ldr r0, [r6]
|
|
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, =0x000027f9
|
|
adds r0, r4, 0
|
|
bl FreeSpriteTilesByTag
|
|
adds r0, r4, 0
|
|
bl FreeSpritePaletteByTag
|
|
bl LinkOpponentBufferExecCompleted
|
|
_08064BB6:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8064B04
|
|
|
|
thumb_func_start sub_8064BC0
|
|
sub_8064BC0: @ 8064BC0
|
|
push {r4-r6,lr}
|
|
ldr r6, =gActiveBank
|
|
ldrb r0, [r6]
|
|
ldr r5, =gHealthBoxesIds
|
|
adds r1, r0, r5
|
|
ldrb r1, [r1]
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_8074AA0
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
ldrb r0, [r6]
|
|
adds r0, r5
|
|
ldrb r0, [r0]
|
|
bl sub_80729D0
|
|
lsls r4, 16
|
|
asrs r1, r4, 16
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _08064C08
|
|
ldrb r0, [r6]
|
|
adds r0, r5
|
|
ldrb r0, [r0]
|
|
movs r2, 0
|
|
bl heathbar_draw_hp
|
|
b _08064C0C
|
|
.pool
|
|
_08064C08:
|
|
bl LinkOpponentBufferExecCompleted
|
|
_08064C0C:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8064BC0
|
|
|
|
thumb_func_start sub_8064C14
|
|
sub_8064C14: @ 8064C14
|
|
push {lr}
|
|
ldr r2, =gSprites
|
|
ldr r0, =gBankSpriteIds
|
|
ldr r1, =gActiveBank
|
|
ldrb r3, [r1]
|
|
adds r0, r3, r0
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
adds r0, 0x3E
|
|
ldrb r0, [r0]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
bne _08064C42
|
|
ldr r0, =gHealthBoxesIds
|
|
adds r0, r3, r0
|
|
ldrb r0, [r0]
|
|
bl sub_8072984
|
|
bl LinkOpponentBufferExecCompleted
|
|
_08064C42:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8064C14
|
|
|
|
thumb_func_start sub_8064C58
|
|
sub_8064C58: @ 8064C58
|
|
push {r4-r6,lr}
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r6, =gActiveBank
|
|
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 _08064CB2
|
|
ldr r5, =gBankSpriteIds
|
|
adds r0, r2, r5
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r4, =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
|
|
ldrb r0, [r6]
|
|
bl sub_805EEE0
|
|
ldr r1, =gHealthBoxesIds
|
|
ldrb r0, [r6]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
bl sub_8072984
|
|
bl LinkOpponentBufferExecCompleted
|
|
_08064CB2:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8064C58
|
|
|
|
thumb_func_start sub_8064CCC
|
|
sub_8064CCC: @ 8064CCC
|
|
push {lr}
|
|
movs r0, 0
|
|
bl IsTextPrinterActive
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08064CDE
|
|
bl LinkOpponentBufferExecCompleted
|
|
_08064CDE:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8064CCC
|
|
|
|
thumb_func_start sub_8064CE4
|
|
sub_8064CE4: @ 8064CE4
|
|
push {r4,lr}
|
|
ldr r1, =gBankSpriteIds
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
ldr r2, =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 _08064D30
|
|
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, =gDoingBattleAnim
|
|
strb r3, [r0]
|
|
bl LinkOpponentBufferExecCompleted
|
|
b _08064D5A
|
|
.pool
|
|
_08064D30:
|
|
ldrh r0, [r4, 0x30]
|
|
movs r1, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08064D54
|
|
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]
|
|
_08064D54:
|
|
ldrh r0, [r4, 0x30]
|
|
adds r0, 0x1
|
|
strh r0, [r4, 0x30]
|
|
_08064D5A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8064CE4
|
|
|
|
thumb_func_start sub_8064D60
|
|
sub_8064D60: @ 8064D60
|
|
push {r4,lr}
|
|
ldr r2, =gSprites
|
|
ldr r0, =gHealthBoxesIds
|
|
ldr r4, =gActiveBank
|
|
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, =SpriteCallbackDummy
|
|
cmp r1, r0
|
|
bne _08064DAC
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
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 _08064DA0
|
|
adds r0, r3, 0
|
|
adds r1, r3, 0
|
|
adds r2, r3, 0
|
|
movs r3, 0x6
|
|
bl move_anim_start_t4
|
|
_08064DA0:
|
|
ldr r0, =gBattleBankFunc
|
|
ldrb r1, [r4]
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldr r0, =sub_8064DD0
|
|
str r0, [r1]
|
|
_08064DAC:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8064D60
|
|
|
|
thumb_func_start sub_8064DD0
|
|
sub_8064DD0: @ 8064DD0
|
|
push {r4,lr}
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldr r4, =gActiveBank
|
|
ldrb r1, [r4]
|
|
ldr r2, [r0, 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 _08064E2A
|
|
bl IsCryPlayingOrClearCrySongs
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08064E2A
|
|
ldr r2, =gSprites
|
|
ldr r1, =gBankSpriteIds
|
|
ldrb r0, [r4]
|
|
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, =SpriteCallbackDummy
|
|
cmp r1, r0
|
|
beq _08064E1A
|
|
ldr r0, =SpriteCallbackDummy_2
|
|
cmp r1, r0
|
|
bne _08064E2A
|
|
_08064E1A:
|
|
ldr r0, =gMPlay_BGM
|
|
ldr r1, =0x0000ffff
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
bl m4aMPlayVolumeControl
|
|
bl LinkOpponentBufferExecCompleted
|
|
_08064E2A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8064DD0
|
|
|
|
thumb_func_start sub_8064E50
|
|
sub_8064E50: @ 8064E50
|
|
push {r4-r7,lr}
|
|
ldr r4, =gBattleSpritesDataPtr
|
|
ldr r0, [r4]
|
|
ldr r5, =gActiveBank
|
|
ldrb r2, [r5]
|
|
ldr r1, [r0, 0x4]
|
|
lsls r0, r2, 1
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r3, r0, r1
|
|
ldrb r1, [r3, 0x1]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08064F0C
|
|
ldr r7, =gSprites
|
|
ldr r6, =gBankSpriteIds
|
|
adds r0, r2, r6
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r1, r7, 0
|
|
adds r1, 0x1C
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
ldr r0, =SpriteCallbackDummy
|
|
cmp r1, r0
|
|
bne _08064F0C
|
|
ldrb r1, [r3]
|
|
movs r0, 0x7F
|
|
ands r0, r1
|
|
strb r0, [r3]
|
|
ldr r0, [r4]
|
|
ldrb r2, [r5]
|
|
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, =0x000027f9
|
|
adds r0, r4, 0
|
|
bl FreeSpriteTilesByTag
|
|
adds r0, r4, 0
|
|
bl FreeSpritePaletteByTag
|
|
ldrb r0, [r5]
|
|
adds r0, r6
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r7
|
|
movs r1, 0
|
|
bl StartSpriteAnim
|
|
ldr r4, =gHealthBoxesIds
|
|
ldrb r1, [r5]
|
|
adds r0, r1, r4
|
|
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, 0
|
|
bl healthbar_draw_field_maybe
|
|
ldrb r0, [r5]
|
|
bl sub_8076918
|
|
ldrb r0, [r5]
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
bl sub_80729D0
|
|
ldrb r0, [r5]
|
|
bl sub_805E408
|
|
ldr r1, =gBattleBankFunc
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_8064D60
|
|
str r1, [r0]
|
|
_08064F0C:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8064E50
|
|
|
|
thumb_func_start sub_8064F40
|
|
sub_8064F40: @ 8064F40
|
|
push {r4-r6,lr}
|
|
ldr r6, =gBattleSpritesDataPtr
|
|
ldr r0, [r6]
|
|
ldr r5, =gActiveBank
|
|
ldrb r2, [r5]
|
|
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 _08064F72
|
|
ldr r0, =gBattlePartyID
|
|
adds r0, r3, r0
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, =gEnemyParty
|
|
adds r1, r0
|
|
adds r0, r2, 0
|
|
bl sub_8172EF0
|
|
_08064F72:
|
|
ldr r4, =gSprites
|
|
ldr r0, =gUnknown_03005D7C
|
|
ldrb r2, [r5]
|
|
adds r0, r2, r0
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r3, r0, 2
|
|
adds r0, r4, 0
|
|
adds r0, 0x1C
|
|
adds r0, r3, r0
|
|
ldr r1, [r0]
|
|
ldr r0, =SpriteCallbackDummy
|
|
cmp r1, r0
|
|
bne _08064FDC
|
|
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 _08064FDC
|
|
adds r0, r3, r4
|
|
bl DestroySprite
|
|
ldrb r4, [r5]
|
|
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, 0xB
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
adds r0, r4, 0
|
|
bl sub_805EE54
|
|
ldr r1, =gBattleBankFunc
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_8064E50
|
|
str r1, [r0]
|
|
_08064FDC:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8064F40
|
|
|
|
thumb_func_start sub_8065008
|
|
sub_8065008: @ 8065008
|
|
push {lr}
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r2, [r0]
|
|
ldr r0, =gActiveBank
|
|
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 _0806502A
|
|
bl LinkOpponentBufferExecCompleted
|
|
_0806502A:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8065008
|
|
|
|
thumb_func_start sub_8065038
|
|
sub_8065038: @ 8065038
|
|
push {lr}
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r2, [r0]
|
|
ldr r0, =gActiveBank
|
|
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 _0806505A
|
|
bl LinkOpponentBufferExecCompleted
|
|
_0806505A:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8065038
|
|
|
|
thumb_func_start LinkOpponentBufferExecCompleted
|
|
LinkOpponentBufferExecCompleted: @ 8065068
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
ldr r1, =gBattleBankFunc
|
|
ldr r4, =gActiveBank
|
|
ldrb r0, [r4]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =LinkOpponentBufferRunCommand
|
|
str r1, [r0]
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080650BC
|
|
bl GetMultiplayerId
|
|
mov r1, sp
|
|
strb r0, [r1]
|
|
movs r0, 0x2
|
|
movs r1, 0x4
|
|
mov r2, sp
|
|
bl PrepareBufferDataTransferLink
|
|
ldr r1, =gBattleBufferA
|
|
ldrb r0, [r4]
|
|
lsls r0, 9
|
|
adds r0, r1
|
|
movs r1, 0x38
|
|
strb r1, [r0]
|
|
b _080650CE
|
|
.pool
|
|
_080650BC:
|
|
ldr r2, =gBattleExecBuffer
|
|
ldr r1, =gBitTable
|
|
ldrb r0, [r4]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
ldr r0, [r2]
|
|
bics r0, r1
|
|
str r0, [r2]
|
|
_080650CE:
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end LinkOpponentBufferExecCompleted
|
|
|
|
thumb_func_start dp01t_00_2_getattr
|
|
dp01t_00_2_getattr: @ 80650E0
|
|
push {r4-r6,lr}
|
|
sub sp, 0x100
|
|
movs r6, 0
|
|
ldr r1, =gBattleBufferA
|
|
ldr r0, =gActiveBank
|
|
ldrb r2, [r0]
|
|
lsls r0, r2, 9
|
|
adds r1, 0x2
|
|
adds r1, r0, r1
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
bne _08065118
|
|
ldr r0, =gBattlePartyID
|
|
lsls r1, r2, 1
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
mov r1, sp
|
|
bl dp01_getattr_by_ch1_for_opponent_pokemon
|
|
adds r6, r0, 0
|
|
b _0806513A
|
|
.pool
|
|
_08065118:
|
|
ldrb r4, [r1]
|
|
movs r5, 0
|
|
_0806511C:
|
|
movs r0, 0x1
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _08065132
|
|
lsls r0, r5, 24
|
|
lsrs r0, 24
|
|
mov r2, sp
|
|
adds r1, r2, r6
|
|
bl dp01_getattr_by_ch1_for_opponent_pokemon
|
|
adds r6, r0
|
|
_08065132:
|
|
lsrs r4, 1
|
|
adds r5, 0x1
|
|
cmp r5, 0x5
|
|
ble _0806511C
|
|
_0806513A:
|
|
lsls r1, r6, 16
|
|
lsrs r1, 16
|
|
movs r0, 0x1
|
|
mov r2, sp
|
|
bl dp01_build_cmdbuf_x1D_1D_numargs_varargs
|
|
bl LinkOpponentBufferExecCompleted
|
|
add sp, 0x100
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end dp01t_00_2_getattr
|
|
|
|
thumb_func_start dp01_getattr_by_ch1_for_opponent_pokemon
|
|
dp01_getattr_by_ch1_for_opponent_pokemon: @ 8065154
|
|
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, =gBattleBufferA
|
|
ldr r3, =gActiveBank
|
|
ldrb r0, [r3]
|
|
lsls r0, 9
|
|
adds r1, r2, 0x1
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x3B
|
|
bls _0806517E
|
|
bl _080658EA
|
|
_0806517E:
|
|
lsls r0, 2
|
|
ldr r1, =_08065194
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_08065194:
|
|
.4byte _08065284
|
|
.4byte _080654A8
|
|
.4byte _080654B8
|
|
.4byte _080654C8
|
|
.4byte _08065530
|
|
.4byte _08065530
|
|
.4byte _08065530
|
|
.4byte _08065530
|
|
.4byte _0806554C
|
|
.4byte _08065588
|
|
.4byte _08065588
|
|
.4byte _08065588
|
|
.4byte _08065588
|
|
.4byte _080658EA
|
|
.4byte _080658EA
|
|
.4byte _080658EA
|
|
.4byte _080658EA
|
|
.4byte _080655A4
|
|
.4byte _080655B4
|
|
.4byte _080655E4
|
|
.4byte _080655F4
|
|
.4byte _08065604
|
|
.4byte _08065614
|
|
.4byte _08065624
|
|
.4byte _08065634
|
|
.4byte _08065644
|
|
.4byte _08065654
|
|
.4byte _08065664
|
|
.4byte _08065674
|
|
.4byte _08065684
|
|
.4byte _08065694
|
|
.4byte _080656A4
|
|
.4byte _080656F4
|
|
.4byte _08065704
|
|
.4byte _08065714
|
|
.4byte _08065724
|
|
.4byte _08065734
|
|
.4byte _08065744
|
|
.4byte _08065754
|
|
.4byte _08065764
|
|
.4byte _08065774
|
|
.4byte _080657A8
|
|
.4byte _080657B8
|
|
.4byte _080657C8
|
|
.4byte _080657D8
|
|
.4byte _080657E8
|
|
.4byte _080657F8
|
|
.4byte _08065808
|
|
.4byte _08065818
|
|
.4byte _08065838
|
|
.4byte _08065848
|
|
.4byte _08065858
|
|
.4byte _08065868
|
|
.4byte _08065878
|
|
.4byte _08065888
|
|
.4byte _08065898
|
|
.4byte _080658A8
|
|
.4byte _080658B8
|
|
.4byte _080658C8
|
|
.4byte _080658D8
|
|
_08065284:
|
|
movs r0, 0x64
|
|
adds r4, r5, 0
|
|
muls r4, r0
|
|
ldr r0, =gEnemyParty
|
|
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
|
|
_080652D0:
|
|
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 _080652D0
|
|
movs r0, 0x64
|
|
adds r4, r5, 0
|
|
muls r4, r0
|
|
ldr r0, =gEnemyParty
|
|
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, =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, =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, =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
|
|
_08065488:
|
|
adds r0, r7, r6
|
|
adds r1, r2, r6
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r6, 0x1
|
|
cmp r6, 0x57
|
|
bls _08065488
|
|
b _080658EA
|
|
.pool
|
|
_080654A8:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
b _08065822
|
|
.pool
|
|
_080654B8:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0xC
|
|
b _08065822
|
|
.pool
|
|
_080654C8:
|
|
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, =gEnemyParty
|
|
adds r4, r1, r0
|
|
mov r8, r9
|
|
_080654DE:
|
|
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 _080654DE
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x15
|
|
bl GetMonData
|
|
mov r1, r9
|
|
strb r0, [r1, 0xC]
|
|
mov r2, r9
|
|
movs r6, 0
|
|
_0806551C:
|
|
adds r0, r7, r6
|
|
adds r1, r2, r6
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r6, 0x1
|
|
cmp r6, 0xF
|
|
bls _0806551C
|
|
b _080658EA
|
|
.pool
|
|
_08065530:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r1, [r3]
|
|
lsls r1, 9
|
|
adds r2, 0x1
|
|
adds r1, r2
|
|
ldrb r1, [r1]
|
|
adds r1, 0x9
|
|
b _08065822
|
|
.pool
|
|
_0806554C:
|
|
movs r6, 0
|
|
movs r0, 0x64
|
|
adds r4, r5, 0
|
|
muls r4, r0
|
|
ldr r2, =gEnemyParty
|
|
mov r8, r2
|
|
_08065558:
|
|
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 _08065558
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x15
|
|
bl GetMonData
|
|
adds r1, r7, r6
|
|
strb r0, [r1]
|
|
adds r6, 0x1
|
|
b _080658EA
|
|
.pool
|
|
_08065588:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r1, [r3]
|
|
lsls r1, 9
|
|
adds r2, 0x1
|
|
adds r1, r2
|
|
ldrb r1, [r1]
|
|
adds r1, 0x8
|
|
b _080658E2
|
|
.pool
|
|
_080655A4:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x1
|
|
b _080655BE
|
|
.pool
|
|
_080655B4:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x19
|
|
_080655BE:
|
|
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 _080658EA
|
|
.pool
|
|
_080655E4:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x1A
|
|
b _080658E2
|
|
.pool
|
|
_080655F4:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x1B
|
|
b _080658E2
|
|
.pool
|
|
_08065604:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x1C
|
|
b _080658E2
|
|
.pool
|
|
_08065614:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x1D
|
|
b _080658E2
|
|
.pool
|
|
_08065624:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x1E
|
|
b _080658E2
|
|
.pool
|
|
_08065634:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x1F
|
|
b _080658E2
|
|
.pool
|
|
_08065644:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x20
|
|
b _080658E2
|
|
.pool
|
|
_08065654:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x22
|
|
b _080658E2
|
|
.pool
|
|
_08065664:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x23
|
|
b _080658E2
|
|
.pool
|
|
_08065674:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x24
|
|
b _080658E2
|
|
.pool
|
|
_08065684:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x25
|
|
b _080658E2
|
|
.pool
|
|
_08065694:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x26
|
|
b _080658E2
|
|
.pool
|
|
_080656A4:
|
|
movs r0, 0x64
|
|
adds r4, r5, 0
|
|
muls r4, r0
|
|
ldr r0, =gEnemyParty
|
|
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 _080658EA
|
|
.pool
|
|
_080656F4:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x27
|
|
b _080658E2
|
|
.pool
|
|
_08065704:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x28
|
|
b _080658E2
|
|
.pool
|
|
_08065714:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x29
|
|
b _080658E2
|
|
.pool
|
|
_08065724:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x2A
|
|
b _080658E2
|
|
.pool
|
|
_08065734:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x2B
|
|
b _080658E2
|
|
.pool
|
|
_08065744:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x2C
|
|
b _080658E2
|
|
.pool
|
|
_08065754:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0
|
|
b _0806577E
|
|
.pool
|
|
_08065764:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x9
|
|
b _08065822
|
|
.pool
|
|
_08065774:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x37
|
|
_0806577E:
|
|
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 _080658EA
|
|
.pool
|
|
_080657A8:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x38
|
|
b _080658E2
|
|
.pool
|
|
_080657B8:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x39
|
|
b _08065822
|
|
.pool
|
|
_080657C8:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x3A
|
|
b _08065822
|
|
.pool
|
|
_080657D8:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x3B
|
|
b _08065822
|
|
.pool
|
|
_080657E8:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x3C
|
|
b _08065822
|
|
.pool
|
|
_080657F8:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x3D
|
|
b _08065822
|
|
.pool
|
|
_08065808:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x3E
|
|
b _08065822
|
|
.pool
|
|
_08065818:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x3F
|
|
_08065822:
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
strb r0, [r7]
|
|
lsrs r0, 8
|
|
strb r0, [r7, 0x1]
|
|
movs r6, 0x2
|
|
b _080658EA
|
|
.pool
|
|
_08065838:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x16
|
|
b _080658E2
|
|
.pool
|
|
_08065848:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x17
|
|
b _080658E2
|
|
.pool
|
|
_08065858:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x18
|
|
b _080658E2
|
|
.pool
|
|
_08065868:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x21
|
|
b _080658E2
|
|
.pool
|
|
_08065878:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x2F
|
|
b _080658E2
|
|
.pool
|
|
_08065888:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x30
|
|
b _080658E2
|
|
.pool
|
|
_08065898:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x32
|
|
b _080658E2
|
|
.pool
|
|
_080658A8:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x33
|
|
b _080658E2
|
|
.pool
|
|
_080658B8:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x34
|
|
b _080658E2
|
|
.pool
|
|
_080658C8:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x35
|
|
b _080658E2
|
|
.pool
|
|
_080658D8:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x36
|
|
_080658E2:
|
|
bl GetMonData
|
|
strb r0, [r7]
|
|
movs r6, 0x1
|
|
_080658EA:
|
|
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
|
|
.pool
|
|
thumb_func_end dp01_getattr_by_ch1_for_opponent_pokemon
|
|
|
|
thumb_func_start sub_8065900
|
|
sub_8065900: @ 8065900
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8065900
|
|
|
|
thumb_func_start sub_806590C
|
|
sub_806590C: @ 806590C
|
|
push {r4,r5,lr}
|
|
ldr r1, =gBattleBufferA
|
|
ldr r0, =gActiveBank
|
|
ldrb r2, [r0]
|
|
lsls r0, r2, 9
|
|
adds r1, 0x2
|
|
adds r1, r0, r1
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
bne _0806593C
|
|
ldr r0, =gBattlePartyID
|
|
lsls r1, r2, 1
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
bl sub_8065964
|
|
b _0806595A
|
|
.pool
|
|
_0806593C:
|
|
ldrb r4, [r1]
|
|
movs r5, 0
|
|
_08065940:
|
|
movs r0, 0x1
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _0806594E
|
|
adds r0, r5, 0
|
|
bl sub_8065964
|
|
_0806594E:
|
|
lsrs r4, 1
|
|
adds r0, r5, 0x1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0x5
|
|
bls _08065940
|
|
_0806595A:
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_806590C
|
|
|
|
thumb_func_start sub_8065964
|
|
sub_8065964: @ 8065964
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x38
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r3, =gActiveBank
|
|
ldrb r0, [r3]
|
|
lsls r0, 9
|
|
ldr r2, =gBattleBufferA + 3
|
|
adds r4, r0, r2
|
|
adds r7, r4, 0
|
|
subs r1, r2, 0x2
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
adds r6, r3, 0
|
|
adds r3, r2, 0
|
|
cmp r0, 0x3B
|
|
bls _08065992
|
|
bl _08066270
|
|
_08065992:
|
|
lsls r0, 2
|
|
ldr r1, =_080659A8
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_080659A8:
|
|
.4byte _08065A98
|
|
.4byte _08065C30
|
|
.4byte _08065C4C
|
|
.4byte _08065C68
|
|
.4byte _08065CBC
|
|
.4byte _08065CBC
|
|
.4byte _08065CBC
|
|
.4byte _08065CBC
|
|
.4byte _08065CDC
|
|
.4byte _08065D44
|
|
.4byte _08065D44
|
|
.4byte _08065D44
|
|
.4byte _08065D44
|
|
.4byte _08066270
|
|
.4byte _08066270
|
|
.4byte _08066270
|
|
.4byte _08066270
|
|
.4byte _08065D6C
|
|
.4byte _08065D88
|
|
.4byte _08065DA4
|
|
.4byte _08065DC0
|
|
.4byte _08065DDC
|
|
.4byte _08065DF8
|
|
.4byte _08065E14
|
|
.4byte _08065E30
|
|
.4byte _08065E4C
|
|
.4byte _08065E68
|
|
.4byte _08065E84
|
|
.4byte _08065EA0
|
|
.4byte _08065EBC
|
|
.4byte _08065ED8
|
|
.4byte _08065EF4
|
|
.4byte _08065F68
|
|
.4byte _08065F84
|
|
.4byte _08065FA0
|
|
.4byte _08065FBC
|
|
.4byte _08065FD8
|
|
.4byte _08065FF4
|
|
.4byte _08066010
|
|
.4byte _0806602C
|
|
.4byte _08066048
|
|
.4byte _08066064
|
|
.4byte _08066080
|
|
.4byte _0806609C
|
|
.4byte _080660B8
|
|
.4byte _080660D4
|
|
.4byte _080660F0
|
|
.4byte _0806610C
|
|
.4byte _08066128
|
|
.4byte _08066144
|
|
.4byte _08066160
|
|
.4byte _0806617C
|
|
.4byte _08066198
|
|
.4byte _080661B4
|
|
.4byte _080661D0
|
|
.4byte _080661EC
|
|
.4byte _08066208
|
|
.4byte _08066224
|
|
.4byte _08066240
|
|
.4byte _0806625C
|
|
_08065A98:
|
|
movs r0, 0x64
|
|
adds r4, r5, 0
|
|
muls r4, r0
|
|
ldr r0, =gEnemyParty
|
|
adds r4, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
adds r2, r7, 0
|
|
bl SetMonData
|
|
adds r2, r7, 0
|
|
adds r2, 0x2E
|
|
adds r0, r4, 0
|
|
movs r1, 0xC
|
|
bl SetMonData
|
|
movs r0, 0
|
|
mov r8, r0
|
|
movs r0, 0x3B
|
|
adds r0, r7
|
|
mov r10, r0
|
|
adds r0, r7, 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, r7, 0x2
|
|
str r0, [sp, 0x4]
|
|
adds r0, r7, 0x4
|
|
str r0, [sp, 0x8]
|
|
adds r0, r7, 0x6
|
|
str r0, [sp, 0xC]
|
|
adds r0, 0x2
|
|
str r0, [sp, 0x10]
|
|
adds r0, 0x2
|
|
str r0, [sp, 0x14]
|
|
mov r9, r4
|
|
adds r6, r7, 0
|
|
adds r6, 0x24
|
|
adds r4, r7, 0
|
|
adds r4, 0xC
|
|
_08065AFE:
|
|
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, r6, 0
|
|
bl SetMonData
|
|
adds r6, 0x1
|
|
adds r4, 0x2
|
|
movs r0, 0x1
|
|
add r8, r0
|
|
mov r0, r8
|
|
cmp r0, 0x3
|
|
ble _08065AFE
|
|
movs r0, 0x64
|
|
adds r4, r5, 0
|
|
muls r4, r0
|
|
ldr r0, =gEnemyParty
|
|
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, [r7, 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, [r7, 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, [r7, 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, [r7, 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, [r7, 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, [r7, 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 _08066270
|
|
.pool
|
|
_08065C30:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0xB
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065C4C:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0xC
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065C68:
|
|
movs r0, 0
|
|
mov r8, r0
|
|
movs r0, 0xC
|
|
adds r0, r4
|
|
mov r9, r0
|
|
movs r0, 0x64
|
|
adds r1, r5, 0
|
|
muls r1, r0
|
|
ldr r0, =gEnemyParty
|
|
adds r7, r1, r0
|
|
adds r6, r4, 0
|
|
adds r6, 0x8
|
|
_08065C80:
|
|
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 _08065C80
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x15
|
|
mov r2, r9
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065CBC:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldr r3, =gBattleBufferA
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r1, r3, 0x1
|
|
adds r1, r2, r1
|
|
ldrb r1, [r1]
|
|
adds r1, 0x9
|
|
b _08065D5A
|
|
.pool
|
|
_08065CDC:
|
|
movs r0, 0x64
|
|
adds r4, r5, 0
|
|
muls r4, r0
|
|
ldr r0, =gEnemyParty
|
|
adds r4, r0
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
adds r0, r4, 0
|
|
movs r1, 0x11
|
|
str r3, [sp, 0x34]
|
|
bl SetMonData
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
ldr r3, [sp, 0x34]
|
|
adds r0, r3, 0x1
|
|
adds r2, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x12
|
|
bl SetMonData
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
ldr r3, [sp, 0x34]
|
|
adds r0, r3, 0x2
|
|
adds r2, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x13
|
|
bl SetMonData
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
ldr r3, [sp, 0x34]
|
|
adds r0, r3, 0x3
|
|
adds r2, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x14
|
|
bl SetMonData
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
ldr r3, [sp, 0x34]
|
|
adds r0, r3, 0x4
|
|
adds r2, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x15
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065D44:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldr r3, =gBattleBufferA
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r1, r3, 0x1
|
|
adds r1, r2, r1
|
|
ldrb r1, [r1]
|
|
adds r1, 0x8
|
|
_08065D5A:
|
|
adds r3, 0x3
|
|
adds r2, r3
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065D6C:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x1
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065D88:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x19
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065DA4:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x1A
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065DC0:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x1B
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065DDC:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x1C
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065DF8:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x1D
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065E14:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x1E
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065E30:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x1F
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065E4C:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x20
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065E68:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x22
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065E84:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x23
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065EA0:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x24
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065EBC:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x25
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065ED8:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x26
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065EF4:
|
|
movs r0, 0x64
|
|
adds r4, r5, 0
|
|
muls r4, r0
|
|
ldr r0, =gEnemyParty
|
|
adds r4, r0
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
adds r0, r4, 0
|
|
movs r1, 0x27
|
|
str r3, [sp, 0x34]
|
|
bl SetMonData
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
ldr r3, [sp, 0x34]
|
|
adds r0, r3, 0x1
|
|
adds r2, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x28
|
|
bl SetMonData
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
ldr r3, [sp, 0x34]
|
|
adds r0, r3, 0x2
|
|
adds r2, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x29
|
|
bl SetMonData
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
ldr r3, [sp, 0x34]
|
|
adds r0, r3, 0x3
|
|
adds r2, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x2A
|
|
bl SetMonData
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
ldr r3, [sp, 0x34]
|
|
adds r0, r3, 0x4
|
|
adds r2, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x2B
|
|
bl SetMonData
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
ldr r3, [sp, 0x34]
|
|
adds r0, r3, 0x5
|
|
adds r2, r0
|
|
adds r0, r4, 0
|
|
b _08066002
|
|
.pool
|
|
_08065F68:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x27
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065F84:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x28
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065FA0:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x29
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065FBC:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x2A
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065FD8:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x2B
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08065FF4:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
_08066002:
|
|
movs r1, 0x2C
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08066010:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_0806602C:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x9
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08066048:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x37
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08066064:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x38
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08066080:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x39
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_0806609C:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x3A
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_080660B8:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x3B
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_080660D4:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x3C
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_080660F0:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x3D
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_0806610C:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x3E
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08066128:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x3F
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08066144:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x16
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08066160:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x17
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_0806617C:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x18
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08066198:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x21
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_080661B4:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x2F
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_080661D0:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x30
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_080661EC:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x32
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08066208:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x33
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08066224:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x34
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_08066240:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x35
|
|
bl SetMonData
|
|
b _08066270
|
|
.pool
|
|
_0806625C:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldrb r2, [r6]
|
|
lsls r2, 9
|
|
adds r2, r3
|
|
movs r1, 0x36
|
|
bl SetMonData
|
|
_08066270:
|
|
add sp, 0x38
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8065964
|
|
|
|
thumb_func_start sub_8066284
|
|
sub_8066284: @ 8066284
|
|
push {r4-r7,lr}
|
|
ldr r1, =gBattlePartyID
|
|
ldr r7, =gActiveBank
|
|
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, =gBattleBufferA
|
|
lsls r2, 9
|
|
adds r0, r4, 0x1
|
|
adds r0, r2, r0
|
|
ldrb r0, [r0]
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
adds r5, r3, r0
|
|
movs r3, 0
|
|
adds r0, r4, 0x2
|
|
adds r2, r0
|
|
ldrb r2, [r2]
|
|
cmp r3, r2
|
|
bcs _080662DC
|
|
adds r6, r4, 0
|
|
adds r2, r7, 0
|
|
adds r4, r0, 0
|
|
_080662BA:
|
|
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 _080662BA
|
|
_080662DC:
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8066284
|
|
|
|
thumb_func_start sub_80662F8
|
|
sub_80662F8: @ 80662F8
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
ldr r7, =gBattlePartyID
|
|
ldr r6, =gActiveBank
|
|
ldrb r0, [r6]
|
|
lsls r0, 1
|
|
adds r0, r7
|
|
ldrh r0, [r0]
|
|
movs r1, 0x64
|
|
mov r10, r1
|
|
mov r2, r10
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
ldr r1, =gEnemyParty
|
|
mov r9, r1
|
|
add r0, r9
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
ldrb r1, [r6]
|
|
lsls r0, r1, 1
|
|
adds r0, r7
|
|
ldrh r0, [r0]
|
|
mov r2, r10
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
add r0, r9
|
|
bl sub_805DC0C
|
|
ldrb r0, [r6]
|
|
bl GetBankIdentity
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl sub_806A068
|
|
ldr r0, =gUnknown_0202499C
|
|
mov r8, r0
|
|
ldrb r0, [r6]
|
|
movs r1, 0x2
|
|
bl sub_80A5C6C
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldrb r0, [r6]
|
|
bl sub_80A6138
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldrb r0, [r6]
|
|
bl sub_80A82E4
|
|
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, =gBankSpriteIds
|
|
ldrb r1, [r6]
|
|
adds r1, r4
|
|
strb r0, [r1]
|
|
ldr r5, =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, =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, =gBattleMonForms
|
|
adds r2, r1
|
|
ldrb r1, [r2]
|
|
bl StartSpriteAnim
|
|
ldrb r4, [r6]
|
|
lsls r0, r4, 1
|
|
adds r0, r7
|
|
ldrh r0, [r0]
|
|
mov r1, r10
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
add r0, r9
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
adds r0, r4, 0
|
|
bl sub_805EE54
|
|
ldr r1, =gBattleBankFunc
|
|
ldrb r0, [r6]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_8064B04
|
|
str r1, [r0]
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80662F8
|
|
|
|
thumb_func_start sub_8066448
|
|
sub_8066448: @ 8066448
|
|
push {r4,lr}
|
|
ldr r1, =gBattlePartyID
|
|
ldr r4, =gActiveBank
|
|
ldrb r0, [r4]
|
|
lsls r2, r0, 1
|
|
adds r2, r1
|
|
ldr r3, =gBattleBufferA
|
|
lsls r0, 9
|
|
adds r1, r3, 0x1
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strh r0, [r2]
|
|
ldrb r0, [r4]
|
|
lsls r1, r0, 9
|
|
adds r3, 0x2
|
|
adds r1, r3
|
|
ldrb r1, [r1]
|
|
bl sub_8066494
|
|
ldr r1, =gBattleBankFunc
|
|
ldrb r0, [r4]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_8064F40
|
|
str r1, [r0]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8066448
|
|
|
|
thumb_func_start sub_8066494
|
|
sub_8066494: @ 8066494
|
|
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 sub_805EF84
|
|
ldr r0, =gBattlePartyID
|
|
lsls r4, r6, 1
|
|
adds r4, r0
|
|
ldr r0, =gBattleBufferA
|
|
lsls r1, r6, 9
|
|
adds r0, 0x1
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
strh r0, [r4]
|
|
ldrh r0, [r4]
|
|
movs r1, 0x64
|
|
mov r9, r1
|
|
mov r1, r9
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
ldr r5, =gEnemyParty
|
|
adds r0, r5
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
mov r8, r0
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
ldr r0, =sub_805D714
|
|
bl CreateInvisibleSpriteWithCallback
|
|
ldr r1, =gUnknown_03005D7C
|
|
mov r10, r1
|
|
add r10, r6
|
|
mov r1, r10
|
|
strb r0, [r1]
|
|
ldrh r0, [r4]
|
|
mov r1, r9
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
adds r0, r5
|
|
adds r1, r6, 0
|
|
bl sub_805DC0C
|
|
adds r0, r6, 0
|
|
bl GetBankIdentity
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r0, r8
|
|
bl sub_806A068
|
|
ldr r0, =gUnknown_0202499C
|
|
mov r9, r0
|
|
adds r0, r6, 0
|
|
movs r1, 0x2
|
|
bl sub_80A5C6C
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
adds r0, r6, 0
|
|
bl sub_80A6138
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r6, 0
|
|
bl sub_80A82E4
|
|
adds r3, r0, 0
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
mov r0, r9
|
|
adds r1, r5, 0
|
|
adds r2, r4, 0
|
|
bl CreateSprite
|
|
ldr r4, =gBankSpriteIds
|
|
adds r4, r6, r4
|
|
strb r0, [r4]
|
|
ldr r5, =gSprites
|
|
mov r0, r10
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldrb r1, [r4]
|
|
strh r1, [r0, 0x30]
|
|
mov r0, r10
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
strh r6, [r0, 0x32]
|
|
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, =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, =SpriteCallbackDummy
|
|
str r1, [r0]
|
|
movs r0, 0
|
|
movs r1, 0xFE
|
|
bl sub_80753E8
|
|
mov r1, r10
|
|
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
|
|
.pool
|
|
thumb_func_end sub_8066494
|
|
|
|
thumb_func_start sub_8066624
|
|
sub_8066624: @ 8066624
|
|
push {r4-r6,lr}
|
|
ldr r1, =gBattleBufferA
|
|
ldr r6, =gActiveBank
|
|
ldrb r2, [r6]
|
|
lsls r0, r2, 9
|
|
adds r1, 0x1
|
|
adds r0, r1
|
|
ldrb r3, [r0]
|
|
cmp r3, 0
|
|
bne _0806666C
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
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, =gBattleBankFunc
|
|
ldrb r0, [r6]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_80666BC
|
|
str r1, [r0]
|
|
b _080666A8
|
|
.pool
|
|
_0806666C:
|
|
ldr r5, =gBankSpriteIds
|
|
adds r0, r2, r5
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r4, =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
|
|
ldrb r0, [r6]
|
|
bl sub_805EEE0
|
|
ldr r1, =gHealthBoxesIds
|
|
ldrb r0, [r6]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
bl sub_8072984
|
|
bl LinkOpponentBufferExecCompleted
|
|
_080666A8:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8066624
|
|
|
|
thumb_func_start sub_80666BC
|
|
sub_80666BC: @ 80666BC
|
|
push {r4-r6,lr}
|
|
ldr r6, =gBattleSpritesDataPtr
|
|
ldr r4, [r6]
|
|
ldr r5, =gActiveBank
|
|
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 _080666E4
|
|
cmp r0, 0x1
|
|
beq _08066712
|
|
b _0806673A
|
|
.pool
|
|
_080666E4:
|
|
ldr r1, [r4]
|
|
lsls r0, r2, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080666FE
|
|
adds r0, r2, 0
|
|
adds r1, r2, 0
|
|
movs r3, 0x5
|
|
bl move_anim_start_t4
|
|
_080666FE:
|
|
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 _0806673A
|
|
_08066712:
|
|
ldrb r1, [r3]
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
bne _0806673A
|
|
strb r0, [r3, 0x4]
|
|
ldrb r2, [r5]
|
|
adds r0, r2, 0
|
|
adds r1, r2, 0
|
|
movs r3, 0x2
|
|
bl move_anim_start_t4
|
|
ldr r1, =gBattleBankFunc
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_8064C58
|
|
str r1, [r0]
|
|
_0806673A:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80666BC
|
|
|
|
thumb_func_start sub_8066748
|
|
sub_8066748: @ 8066748
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
ldr r4, =gBattleTypeFlags
|
|
ldr r0, [r4]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08066840
|
|
ldr r5, =gActiveBank
|
|
ldrb r0, [r5]
|
|
bl GetBankIdentity
|
|
movs r1, 0x2
|
|
ands r1, r0
|
|
movs r7, 0xC8
|
|
cmp r1, 0
|
|
beq _08066770
|
|
movs r7, 0x98
|
|
_08066770:
|
|
ldr r0, [r4]
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080667A8
|
|
ldrb r0, [r5]
|
|
cmp r0, 0x1
|
|
bne _08066794
|
|
ldr r0, =gTrainerBattleOpponent_A
|
|
b _08066796
|
|
.pool
|
|
_08066794:
|
|
ldr r0, =gTrainerBattleOpponent_B
|
|
_08066796:
|
|
ldrh r0, [r0]
|
|
bl sub_8162AA0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
b _0806694C
|
|
.pool
|
|
_080667A8:
|
|
ldrb r0, [r5]
|
|
bl sub_806D864
|
|
ldr r6, =gLinkPlayers
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
movs r4, 0xFF
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x4
|
|
beq _080667D8
|
|
ldrb r0, [r5]
|
|
bl sub_806D864
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
ldrh r1, [r1]
|
|
adds r0, r4, 0
|
|
ands r0, r1
|
|
cmp r0, 0x5
|
|
bne _080667F4
|
|
_080667D8:
|
|
ldrb r0, [r5]
|
|
bl sub_806D864
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
ldrb r0, [r1, 0x13]
|
|
cmp r0, 0
|
|
bne _080668AA
|
|
b _080668BC
|
|
.pool
|
|
_080667F4:
|
|
ldrb r0, [r5]
|
|
bl sub_806D864
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
ldrh r1, [r1]
|
|
adds r0, r4, 0
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
beq _08066822
|
|
ldrb r0, [r5]
|
|
bl sub_806D864
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
ldrh r0, [r1]
|
|
ands r4, r0
|
|
cmp r4, 0x1
|
|
bne _08066838
|
|
_08066822:
|
|
ldrb r0, [r5]
|
|
bl sub_806D864
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
ldrb r0, [r1, 0x13]
|
|
cmp r0, 0
|
|
bne _08066916
|
|
b _08066924
|
|
_08066838:
|
|
ldrb r0, [r5]
|
|
bl sub_806D864
|
|
b _0806693A
|
|
_08066840:
|
|
movs r7, 0xB0
|
|
ldr r0, =gTrainerBattleOpponent_A
|
|
ldrh r1, [r0]
|
|
movs r0, 0xC0
|
|
lsls r0, 4
|
|
cmp r1, r0
|
|
bne _08066858
|
|
bl sub_8068B48
|
|
b _08066948
|
|
.pool
|
|
_08066858:
|
|
bl GetMultiplayerId
|
|
ldr r6, =gLinkPlayers
|
|
movs r5, 0x1
|
|
eors r0, r5
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
movs r4, 0xFF
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x4
|
|
beq _08066892
|
|
bl GetMultiplayerId
|
|
eors r0, r5
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
ldrh r1, [r1]
|
|
adds r0, r4, 0
|
|
ands r0, r1
|
|
cmp r0, 0x5
|
|
bne _080668C8
|
|
_08066892:
|
|
bl GetMultiplayerId
|
|
eors r0, r5
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
ldrb r0, [r1, 0x13]
|
|
cmp r0, 0
|
|
beq _080668BC
|
|
_080668AA:
|
|
ldr r0, =gUnknown_0831F578
|
|
adds r0, 0x4F
|
|
ldrb r0, [r0]
|
|
b _0806694C
|
|
.pool
|
|
_080668BC:
|
|
ldr r0, =gUnknown_0831F578
|
|
adds r0, 0x4E
|
|
ldrb r0, [r0]
|
|
b _0806694C
|
|
.pool
|
|
_080668C8:
|
|
bl GetMultiplayerId
|
|
eors r0, r5
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
ldrh r1, [r1]
|
|
adds r0, r4, 0
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
beq _080668FE
|
|
bl GetMultiplayerId
|
|
eors r0, r5
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
ldrh r0, [r1]
|
|
ands r4, r0
|
|
cmp r4, 0x1
|
|
bne _08066930
|
|
_080668FE:
|
|
bl GetMultiplayerId
|
|
eors r0, r5
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
ldrb r0, [r1, 0x13]
|
|
cmp r0, 0
|
|
beq _08066924
|
|
_08066916:
|
|
ldr r0, =gUnknown_0831F578
|
|
adds r0, 0x51
|
|
ldrb r0, [r0]
|
|
b _0806694C
|
|
.pool
|
|
_08066924:
|
|
ldr r0, =gUnknown_0831F578
|
|
adds r0, 0x50
|
|
ldrb r0, [r0]
|
|
b _0806694C
|
|
.pool
|
|
_08066930:
|
|
bl GetMultiplayerId
|
|
eors r0, r5
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
_0806693A:
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r6
|
|
ldrb r0, [r1, 0x13]
|
|
bl sub_806F000
|
|
_08066948:
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
_0806694C:
|
|
mov r8, r0
|
|
ldr r5, =gActiveBank
|
|
ldrb r1, [r5]
|
|
bl sub_805DF38
|
|
ldrb r0, [r5]
|
|
bl GetBankIdentity
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r0, r8
|
|
bl sub_806A12C
|
|
ldr r6, =gUnknown_0202499C
|
|
mov r9, r7
|
|
ldr r1, =gUnknown_083054E0
|
|
mov r2, r8
|
|
lsls r0, r2, 2
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
movs r4, 0x8
|
|
subs r4, r0
|
|
lsls r4, 18
|
|
movs r0, 0xA0
|
|
lsls r0, 14
|
|
adds r4, r0
|
|
asrs r4, 16
|
|
ldrb r0, [r5]
|
|
bl sub_80A82E4
|
|
adds r3, r0, 0
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
adds r0, r6, 0
|
|
mov r1, r9
|
|
adds r2, r4, 0
|
|
bl CreateSprite
|
|
ldr r6, =gBankSpriteIds
|
|
ldrb r1, [r5]
|
|
adds r1, r6
|
|
strb r0, [r1]
|
|
ldr r4, =gSprites
|
|
ldrb r0, [r5]
|
|
adds r0, r6
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldr r1, =0x0000ff10
|
|
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
|
|
movs r1, 0x2
|
|
strh r1, [r0, 0x2E]
|
|
ldr r1, =gTrainerFrontPicPaletteTable
|
|
mov r2, r8
|
|
lsls r0, r2, 3
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x4]
|
|
bl IndexOfSpritePaletteTag
|
|
ldrb r1, [r5]
|
|
adds r1, r6
|
|
ldrb r1, [r1]
|
|
lsls r2, r1, 4
|
|
adds r2, r1
|
|
lsls r2, 2
|
|
adds r2, r4
|
|
lsls r0, 4
|
|
ldrb r3, [r2, 0x5]
|
|
movs r1, 0xF
|
|
ands r1, r3
|
|
orrs r1, r0
|
|
strb r1, [r2, 0x5]
|
|
ldrb r0, [r5]
|
|
adds r0, r6
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
mov r1, r8
|
|
strh r1, [r0, 0x6]
|
|
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, =sub_805D7AC
|
|
str r1, [r0]
|
|
ldr r1, =gBattleBankFunc
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_8064400
|
|
str r1, [r0]
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8066748
|
|
|
|
thumb_func_start sub_8066A58
|
|
sub_8066A58: @ 8066A58
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
bne _08066A74
|
|
ldr r0, =gTrainerBattleOpponent_A
|
|
b _08066A76
|
|
.pool
|
|
_08066A74:
|
|
ldr r0, =gTrainerBattleOpponent_B
|
|
_08066A76:
|
|
ldrh r0, [r0]
|
|
bl sub_8162AA0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
ldr r6, =gActiveBank
|
|
ldrb r1, [r6]
|
|
bl sub_805DF38
|
|
ldrb r0, [r6]
|
|
bl GetBankIdentity
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r0, r8
|
|
bl sub_806A12C
|
|
ldr r0, =gUnknown_0202499C
|
|
ldr r2, =gUnknown_083054E0
|
|
mov r3, r8
|
|
lsls r1, r3, 2
|
|
adds r1, r2
|
|
ldrb r1, [r1]
|
|
movs r2, 0x8
|
|
subs r2, r1
|
|
lsls r2, 18
|
|
movs r1, 0xA0
|
|
lsls r1, 14
|
|
adds r2, r1
|
|
asrs r2, 16
|
|
movs r1, 0xB0
|
|
movs r3, 0x1E
|
|
bl CreateSprite
|
|
ldr r5, =gBankSpriteIds
|
|
ldrb r1, [r6]
|
|
adds r1, r5
|
|
strb r0, [r1]
|
|
ldr r4, =gSprites
|
|
ldrb r0, [r6]
|
|
adds r0, r5
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
movs r1, 0x60
|
|
strh r1, [r0, 0x24]
|
|
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, 0x20]
|
|
adds r1, 0x20
|
|
strh r1, [r0, 0x20]
|
|
ldrb r0, [r6]
|
|
adds r0, r5
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldr r1, =0x0000fffe
|
|
strh r1, [r0, 0x2E]
|
|
ldr r1, =gTrainerFrontPicPaletteTable
|
|
mov r2, r8
|
|
lsls r0, r2, 3
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x4]
|
|
bl IndexOfSpritePaletteTag
|
|
ldrb r1, [r6]
|
|
adds r1, r5
|
|
ldrb r1, [r1]
|
|
lsls r2, r1, 4
|
|
adds r2, r1
|
|
lsls r2, 2
|
|
adds r2, r4
|
|
lsls r0, 4
|
|
ldrb r3, [r2, 0x5]
|
|
movs r1, 0xF
|
|
ands r1, r3
|
|
orrs r1, r0
|
|
strb r1, [r2, 0x5]
|
|
ldrb r0, [r6]
|
|
adds r0, r5
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
mov r3, r8
|
|
strh r3, [r0, 0x6]
|
|
ldrb r0, [r6]
|
|
adds r0, r5
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r4, 0x1C
|
|
adds r0, r4
|
|
ldr r1, =sub_805D7AC
|
|
str r1, [r0]
|
|
ldr r1, =gBattleBankFunc
|
|
ldrb r0, [r6]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_8064438
|
|
str r1, [r0]
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8066A58
|
|
|
|
thumb_func_start sub_8066B94
|
|
sub_8066B94: @ 8066B94
|
|
push {r4-r6,lr}
|
|
ldr r6, =gBankSpriteIds
|
|
ldr r4, =gActiveBank
|
|
ldrb r0, [r4]
|
|
adds r0, r6
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r5, =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
|
|
movs r1, 0x8C
|
|
lsls r1, 1
|
|
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, =sub_80A6EEC
|
|
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, =SpriteCallbackDummy
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r1, =gBattleBankFunc
|
|
ldrb r0, [r4]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_8064470
|
|
str r1, [r0]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8066B94
|
|
|
|
thumb_func_start sub_8066C40
|
|
sub_8066C40: @ 8066C40
|
|
push {r4-r6,lr}
|
|
ldr r6, =gBattleSpritesDataPtr
|
|
ldr r4, [r6]
|
|
ldr r5, =gActiveBank
|
|
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 _08066C94
|
|
ldr r1, [r4]
|
|
lsls r0, r2, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08066C74
|
|
adds r0, r2, 0
|
|
adds r1, r2, 0
|
|
movs r3, 0x5
|
|
bl move_anim_start_t4
|
|
_08066C74:
|
|
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 _08066CD0
|
|
.pool
|
|
_08066C94:
|
|
ldrb r1, [r3]
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
bne _08066CD0
|
|
strb r0, [r3, 0x4]
|
|
movs r0, 0x10
|
|
movs r1, 0x3F
|
|
bl PlaySE12WithPanning
|
|
ldr r2, =gSprites
|
|
ldr r1, =gBankSpriteIds
|
|
ldrb r0, [r5]
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r2, 0x1C
|
|
adds r0, r2
|
|
ldr r1, =sub_8039934
|
|
str r1, [r0]
|
|
ldr r1, =gBattleBankFunc
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_8064C14
|
|
str r1, [r0]
|
|
_08066CD0:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8066C40
|
|
|
|
thumb_func_start sub_8066CEC
|
|
sub_8066CEC: @ 8066CEC
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8066CEC
|
|
|
|
thumb_func_start sub_8066CF8
|
|
sub_8066CF8: @ 8066CF8
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8066CF8
|
|
|
|
thumb_func_start sub_8066D04
|
|
sub_8066D04: @ 8066D04
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8066D04
|
|
|
|
thumb_func_start sub_8066D10
|
|
sub_8066D10: @ 8066D10
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8066D10
|
|
|
|
thumb_func_start sub_8066D1C
|
|
sub_8066D1C: @ 8066D1C
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
ldr r5, =gActiveBank
|
|
ldrb r0, [r5]
|
|
bl mplay_80342A4
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08066D32
|
|
b _08066E58
|
|
_08066D32:
|
|
ldr r0, =gBattleBufferA
|
|
mov r12, r0
|
|
ldrb r1, [r5]
|
|
lsls r1, 9
|
|
adds r0, 0x1
|
|
adds r0, r1, r0
|
|
ldrb r6, [r0]
|
|
mov r0, r12
|
|
adds r0, 0x2
|
|
adds r0, r1, r0
|
|
ldrb r0, [r0]
|
|
lsls r0, 8
|
|
orrs r6, r0
|
|
ldr r0, =gUnknown_02038432
|
|
mov r8, r0
|
|
mov r0, r12
|
|
adds r0, 0x3
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
mov r1, r8
|
|
strb r0, [r1]
|
|
ldr r3, =gMovePowerMoveAnim
|
|
ldrb r1, [r5]
|
|
lsls r1, 9
|
|
mov r0, r12
|
|
adds r0, 0x4
|
|
adds r0, r1, r0
|
|
ldrb r2, [r0]
|
|
mov r0, r12
|
|
adds r0, 0x5
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
lsls r0, 8
|
|
orrs r2, r0
|
|
strh r2, [r3]
|
|
ldr r3, =gMoveDmgMoveAnim
|
|
ldrb r1, [r5]
|
|
lsls r1, 9
|
|
mov r0, r12
|
|
adds r0, 0x6
|
|
adds r0, r1, r0
|
|
ldrb r2, [r0]
|
|
mov r0, r12
|
|
adds r0, 0x7
|
|
adds r0, r1, r0
|
|
ldrb r0, [r0]
|
|
lsls r0, 8
|
|
orrs r2, r0
|
|
mov r0, r12
|
|
adds r0, 0x8
|
|
adds r0, r1, r0
|
|
ldrb r0, [r0]
|
|
lsls r0, 16
|
|
orrs r2, r0
|
|
mov r0, r12
|
|
adds r0, 0x9
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
lsls r0, 24
|
|
orrs r2, r0
|
|
str r2, [r3]
|
|
ldr r2, =gHappinessMoveAnim
|
|
ldrb r0, [r5]
|
|
lsls r0, 9
|
|
mov r1, r12
|
|
adds r1, 0xA
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
ldr r4, =gWeatherMoveAnim
|
|
ldrb r1, [r5]
|
|
lsls r1, 9
|
|
mov r0, r12
|
|
adds r0, 0xC
|
|
adds r0, r1, r0
|
|
ldrb r2, [r0]
|
|
mov r0, r12
|
|
adds r0, 0xD
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
lsls r0, 8
|
|
orrs r2, r0
|
|
strh r2, [r4]
|
|
ldr r7, =gDisableStructMoveAnim
|
|
ldrb r1, [r5]
|
|
lsls r1, 9
|
|
mov r0, r12
|
|
adds r0, 0x10
|
|
adds r1, r0
|
|
str r1, [r7]
|
|
ldr r2, =gUnknown_020244BC
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldr r1, [r1]
|
|
str r1, [r0]
|
|
mov r0, r8
|
|
ldrb r1, [r0]
|
|
adds r0, r6, 0
|
|
bl sub_805DB8C
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
cmp r3, 0
|
|
beq _08066E30
|
|
bl LinkOpponentBufferExecCompleted
|
|
b _08066E58
|
|
.pool
|
|
_08066E30:
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r0, [r0]
|
|
ldrb r1, [r5]
|
|
ldr r2, [r0, 0x4]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
strb r3, [r0, 0x4]
|
|
ldr r1, =gBattleBankFunc
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_8066E70
|
|
str r1, [r0]
|
|
ldrh r1, [r4]
|
|
ldr r2, [r7]
|
|
adds r0, r6, 0
|
|
bl sub_817E0FC
|
|
_08066E58:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8066D1C
|
|
|
|
thumb_func_start sub_8066E70
|
|
sub_8066E70: @ 8066E70
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
ldr r2, =gBattleBufferA
|
|
ldr r6, =gActiveBank
|
|
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, =gBattleSpritesDataPtr
|
|
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 _08066F08
|
|
cmp r2, 0x1
|
|
bgt _08066EC8
|
|
cmp r2, 0
|
|
beq _08066ED2
|
|
b _08066FE4
|
|
.pool
|
|
_08066EC8:
|
|
cmp r2, 0x2
|
|
beq _08066F32
|
|
cmp r2, 0x3
|
|
beq _08066FA8
|
|
b _08066FE4
|
|
_08066ED2:
|
|
ldr r1, [r5]
|
|
lsls r0, r3, 2
|
|
adds r1, r0, r1
|
|
ldrb r2, [r1]
|
|
movs r0, 0xC
|
|
ands r0, r2
|
|
cmp r0, 0x4
|
|
bne _08066EF4
|
|
movs r0, 0x8
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
ldrb r2, [r6]
|
|
adds r0, r2, 0
|
|
adds r1, r2, 0
|
|
movs r3, 0x5
|
|
bl move_anim_start_t4
|
|
_08066EF4:
|
|
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 _08066FE4
|
|
_08066F08:
|
|
ldrb r1, [r0]
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08066FE4
|
|
movs r0, 0
|
|
bl sub_805EB9C
|
|
adds r0, r4, 0
|
|
bl move_anim_start_t1
|
|
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 _08066FE4
|
|
_08066F32:
|
|
ldr r0, =gAnimScriptCallback
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
ldr r0, =gAnimScriptActive
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08066FE4
|
|
movs r0, 0x1
|
|
bl sub_805EB9C
|
|
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 _08066F80
|
|
mov r0, r8
|
|
cmp r0, 0x1
|
|
bhi _08066F80
|
|
adds r0, r2, 0
|
|
adds r1, r2, 0
|
|
movs r3, 0x6
|
|
bl move_anim_start_t4
|
|
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]
|
|
_08066F80:
|
|
ldr r0, =gBattleSpritesDataPtr
|
|
ldr r2, [r0]
|
|
ldr r0, =gActiveBank
|
|
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 _08066FE4
|
|
.pool
|
|
_08066FA8:
|
|
ldrb r1, [r0]
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0
|
|
bne _08066FE4
|
|
bl sub_805E394
|
|
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 sub_805E94C
|
|
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 LinkOpponentBufferExecCompleted
|
|
_08066FE4:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8066E70
|
|
|
|
thumb_func_start sub_8066FF4
|
|
sub_8066FF4: @ 8066FF4
|
|
push {r4,r5,lr}
|
|
ldr r0, =gBattle_BG0_X
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, =gBattle_BG0_Y
|
|
strh r1, [r0]
|
|
ldr r5, =gActiveBank
|
|
ldrb r4, [r5]
|
|
lsls r4, 9
|
|
ldr r0, =gBattleBufferA + 2
|
|
adds r4, r0
|
|
ldrh r0, [r4]
|
|
bl BufferStringBattle
|
|
ldr r0, =gDisplayedStringBattle
|
|
movs r1, 0
|
|
bl sub_814F9EC
|
|
ldr r1, =gBattleBankFunc
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_8064CCC
|
|
str r1, [r0]
|
|
ldrh r0, [r4]
|
|
bl sub_817C95C
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8066FF4
|
|
|
|
thumb_func_start sub_806704C
|
|
sub_806704C: @ 806704C
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_806704C
|
|
|
|
thumb_func_start sub_8067058
|
|
sub_8067058: @ 8067058
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8067058
|
|
|
|
thumb_func_start sub_8067064
|
|
sub_8067064: @ 8067064
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8067064
|
|
|
|
thumb_func_start sub_8067070
|
|
sub_8067070: @ 8067070
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8067070
|
|
|
|
thumb_func_start sub_806707C
|
|
sub_806707C: @ 806707C
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_806707C
|
|
|
|
thumb_func_start sub_8067088
|
|
sub_8067088: @ 8067088
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8067088
|
|
|
|
thumb_func_start sub_8067094
|
|
sub_8067094: @ 8067094
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8067094
|
|
|
|
thumb_func_start sub_80670A0
|
|
sub_80670A0: @ 80670A0
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x4
|
|
movs r0, 0
|
|
bl load_gfxc_health_bar
|
|
ldr r3, =gBattleBufferA
|
|
ldr r0, =gActiveBank
|
|
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, =0x00007fff
|
|
cmp r7, r0
|
|
beq _08067130
|
|
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 sub_807294C
|
|
b _0806715A
|
|
.pool
|
|
_08067130:
|
|
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 sub_807294C
|
|
_0806715A:
|
|
ldr r1, =gBattleBankFunc
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_8064BC0
|
|
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 sub_80670A0
|
|
|
|
thumb_func_start sub_8067190
|
|
sub_8067190: @ 8067190
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8067190
|
|
|
|
thumb_func_start sub_806719C
|
|
sub_806719C: @ 806719C
|
|
push {r4,lr}
|
|
ldr r4, =gActiveBank
|
|
ldrb r0, [r4]
|
|
bl mplay_80342A4
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080671F0
|
|
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 healthbar_draw_field_maybe
|
|
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_8065008
|
|
str r1, [r0]
|
|
_080671F0:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_806719C
|
|
|
|
thumb_func_start sub_8067214
|
|
sub_8067214: @ 8067214
|
|
push {r4,r5,lr}
|
|
ldr r5, =gActiveBank
|
|
ldrb r0, [r5]
|
|
bl mplay_80342A4
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08067264
|
|
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 move_anim_start_t2_for_situation
|
|
ldr r1, =gBattleBankFunc
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_8065008
|
|
str r1, [r0]
|
|
_08067264:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8067214
|
|
|
|
thumb_func_start sub_806727C
|
|
sub_806727C: @ 806727C
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_806727C
|
|
|
|
thumb_func_start sub_8067288
|
|
sub_8067288: @ 8067288
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8067288
|
|
|
|
thumb_func_start sub_8067294
|
|
sub_8067294: @ 8067294
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8067294
|
|
|
|
thumb_func_start sub_80672A0
|
|
sub_80672A0: @ 80672A0
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80672A0
|
|
|
|
thumb_func_start sub_80672AC
|
|
sub_80672AC: @ 80672AC
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80672AC
|
|
|
|
thumb_func_start sub_80672B8
|
|
sub_80672B8: @ 80672B8
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80672B8
|
|
|
|
thumb_func_start sub_80672C4
|
|
sub_80672C4: @ 80672C4
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80672C4
|
|
|
|
thumb_func_start sub_80672D0
|
|
sub_80672D0: @ 80672D0
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80672D0
|
|
|
|
thumb_func_start sub_80672DC
|
|
sub_80672DC: @ 80672DC
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80672DC
|
|
|
|
thumb_func_start sub_80672E8
|
|
sub_80672E8: @ 80672E8
|
|
push {lr}
|
|
ldr r2, =gUnknown_02022D0C
|
|
ldrb r1, [r2]
|
|
movs r0, 0x80
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80672E8
|
|
|
|
thumb_func_start sub_8067304
|
|
sub_8067304: @ 8067304
|
|
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 LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8067304
|
|
|
|
thumb_func_start sub_806733C
|
|
sub_806733C: @ 806733C
|
|
push {lr}
|
|
ldr r2, =gUnknown_02022D0C
|
|
ldrb r1, [r2]
|
|
movs r0, 0x7F
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_806733C
|
|
|
|
thumb_func_start sub_8067354
|
|
sub_8067354: @ 8067354
|
|
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 LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8067354
|
|
|
|
thumb_func_start sub_806737C
|
|
sub_806737C: @ 806737C
|
|
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 _080673B0
|
|
bl LinkOpponentBufferExecCompleted
|
|
b _080673DA
|
|
.pool
|
|
_080673B0:
|
|
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 sub_80769F4
|
|
ldr r1, =gBattleBankFunc
|
|
ldrb r0, [r4]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_8064CE4
|
|
str r1, [r0]
|
|
_080673DA:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_806737C
|
|
|
|
thumb_func_start sub_80673EC
|
|
sub_80673EC: @ 80673EC
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80673EC
|
|
|
|
thumb_func_start sub_80673F8
|
|
sub_80673F8: @ 80673F8
|
|
push {r4,lr}
|
|
ldr r4, =gActiveBank
|
|
ldrb r0, [r4]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
movs r3, 0x3F
|
|
cmp r0, 0
|
|
bne _0806740C
|
|
movs r3, 0xC0
|
|
_0806740C:
|
|
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 LinkOpponentBufferExecCompleted
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80673F8
|
|
|
|
thumb_func_start sub_806743C
|
|
sub_806743C: @ 806743C
|
|
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 _08067478
|
|
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 _0806748C
|
|
.pool
|
|
_08067478:
|
|
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
|
|
_0806748C:
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_806743C
|
|
|
|
thumb_func_start sub_8067498
|
|
sub_8067498: @ 8067498
|
|
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 LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8067498
|
|
|
|
thumb_func_start sub_80674D4
|
|
sub_80674D4: @ 80674D4
|
|
push {lr}
|
|
ldr r1, =gBattleBufferA
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
lsls r0, 9
|
|
adds r1, 0x1
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
bl battle_intro_launch
|
|
ldr r2, =gUnknown_020243FC
|
|
ldrh r0, [r2]
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80674D4
|
|
|
|
thumb_func_start sub_8067508
|
|
sub_8067508: @ 8067508
|
|
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_80676FC
|
|
bl StoreSpriteCallbackInData6
|
|
ldr r0, =c3_08038DC4
|
|
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 _080675CA
|
|
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]
|
|
_080675CA:
|
|
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_28
|
|
str r1, [r0]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8067508
|
|
|
|
thumb_func_start c3_08038DC4
|
|
c3_08038DC4: @ 8067618
|
|
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 battle_type_is_double
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08067652
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08067684
|
|
_08067652:
|
|
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_8066494
|
|
b _080676C4
|
|
.pool
|
|
_08067684:
|
|
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_8066494
|
|
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_8066494
|
|
ldrb r0, [r7]
|
|
eors r0, r5
|
|
strb r0, [r7]
|
|
_080676C4:
|
|
ldr r1, =gBattleBankFunc
|
|
ldr r2, =gActiveBank
|
|
ldrb r0, [r2]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_8064734
|
|
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 c3_08038DC4
|
|
|
|
thumb_func_start sub_80676FC
|
|
sub_80676FC: @ 80676FC
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x6]
|
|
bl sub_805DFE4
|
|
adds r0, r4, 0
|
|
bl FreeSpriteOamMatrix
|
|
adds r0, r4, 0
|
|
bl DestroySprite
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80676FC
|
|
|
|
thumb_func_start sub_8067718
|
|
sub_8067718: @ 8067718
|
|
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 _08067748
|
|
adds r0, r2, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08067748
|
|
bl LinkOpponentBufferExecCompleted
|
|
b _08067812
|
|
.pool
|
|
_08067748:
|
|
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 _080677B4
|
|
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 _080677AC
|
|
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 _08067812
|
|
.pool
|
|
_080677AC:
|
|
movs r0, 0x1F
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r3, 0x1]
|
|
_080677B4:
|
|
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 sub_80735DC
|
|
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 _08067806
|
|
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]
|
|
_08067806:
|
|
ldr r0, =gBattleBankFunc
|
|
ldrb r1, [r7]
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldr r0, =sub_806782C
|
|
str r0, [r1]
|
|
_08067812:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8067718
|
|
|
|
thumb_func_start sub_806782C
|
|
sub_806782C: @ 806782C
|
|
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 _08067864
|
|
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 LinkOpponentBufferExecCompleted
|
|
_08067864:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_806782C
|
|
|
|
thumb_func_start sub_8067874
|
|
sub_8067874: @ 8067874
|
|
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 _080678A6
|
|
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]
|
|
_080678A6:
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8067874
|
|
|
|
thumb_func_start sub_80678C4
|
|
sub_80678C4: @ 80678C4
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80678C4
|
|
|
|
thumb_func_start sub_80678D0
|
|
sub_80678D0: @ 80678D0
|
|
push {r4,lr}
|
|
ldr r4, =gActiveBank
|
|
ldrb r0, [r4]
|
|
bl sub_80A6A90
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08067916
|
|
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 sub_805E408
|
|
_08067916:
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80678D0
|
|
|
|
thumb_func_start sub_8067930
|
|
sub_8067930: @ 8067930
|
|
push {r4-r6,lr}
|
|
sub sp, 0x4
|
|
ldr r5, =gActiveBank
|
|
ldrb r0, [r5]
|
|
bl mplay_80342A4
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08067992
|
|
ldr r4, =gBattleBufferA
|
|
ldrb r2, [r5]
|
|
lsls r1, r2, 9
|
|
adds r0, r4, 0x1
|
|
adds r0, r1, r0
|
|
ldrb r6, [r0]
|
|
adds r0, r4, 0x2
|
|
adds r0, r1, r0
|
|
ldrb r3, [r0]
|
|
adds r4, 0x3
|
|
adds r1, r4
|
|
ldrb r0, [r1]
|
|
lsls r0, 8
|
|
orrs r3, r0
|
|
str r3, [sp]
|
|
adds r0, r2, 0
|
|
adds r1, r2, 0
|
|
adds r3, r6, 0
|
|
bl move_anim_start_t3
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08067980
|
|
bl LinkOpponentBufferExecCompleted
|
|
b _0806798C
|
|
.pool
|
|
_08067980:
|
|
ldr r0, =gBattleBankFunc
|
|
ldrb r1, [r5]
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldr r0, =sub_8065038
|
|
str r0, [r1]
|
|
_0806798C:
|
|
adds r0, r6, 0
|
|
bl sub_817E32C
|
|
_08067992:
|
|
add sp, 0x4
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8067930
|
|
|
|
thumb_func_start sub_80679A4
|
|
sub_80679A4: @ 80679A4
|
|
push {lr}
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
lsls r0, 9
|
|
ldr r1, =gBattleBufferA + 2
|
|
adds r0, r1
|
|
bl sub_81851A8
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80679A4
|
|
|
|
thumb_func_start sub_80679C4
|
|
sub_80679C4: @ 80679C4
|
|
push {lr}
|
|
bl LinkOpponentBufferExecCompleted
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80679C4
|
|
|
|
thumb_func_start sub_80679D0
|
|
sub_80679D0: @ 80679D0
|
|
push {r4,r5,lr}
|
|
ldr r5, =gActiveBank
|
|
ldrb r0, [r5]
|
|
lsls r0, 9
|
|
ldr r4, =gBattleBufferA + 4
|
|
adds r0, r4
|
|
bl sub_81851A8
|
|
ldrb r0, [r5]
|
|
lsls r0, 9
|
|
subs r4, 0x3
|
|
adds r0, r4
|
|
ldrb r2, [r0]
|
|
cmp r2, 0x3
|
|
bne _08067A00
|
|
ldr r0, =gBattleOutcome
|
|
strb r2, [r0]
|
|
b _08067A08
|
|
.pool
|
|
_08067A00:
|
|
ldr r0, =gBattleOutcome
|
|
movs r1, 0x3
|
|
eors r1, r2
|
|
strb r1, [r0]
|
|
_08067A08:
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r3, [r0]
|
|
ldr r1, =gBattleBufferA
|
|
ldr r4, =gActiveBank
|
|
ldrb r0, [r4]
|
|
lsls r0, 9
|
|
adds r1, 0x2
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
ldr r1, =0x00000ca9
|
|
adds r3, r1
|
|
movs r1, 0x1
|
|
ands r1, r0
|
|
lsls r1, 3
|
|
ldrb r2, [r3]
|
|
movs r0, 0x9
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
movs r0, 0x5
|
|
bl FadeOutMapMusic
|
|
movs r0, 0x3
|
|
bl BeginFastPaletteFade
|
|
bl LinkOpponentBufferExecCompleted
|
|
ldr r1, =gBattleBankFunc
|
|
ldrb r0, [r4]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =sub_80587B0
|
|
str r1, [r0]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80679D0
|
|
|
|
thumb_func_start nullsub_92
|
|
nullsub_92: @ 8067A70
|
|
bx lr
|
|
thumb_func_end nullsub_92
|
|
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|