mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 03:34:15 +01:00
7553 lines
113 KiB
ArmAsm
7553 lines
113 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
|
|
|
|
|
|
thumb_func_start sub_81621C0
|
|
sub_81621C0: @ 81621C0
|
|
push {r4,r5,lr}
|
|
ldr r0, =gTrainerBattleOpponent_A
|
|
ldrh r1, [r0]
|
|
movs r0, 0xFA
|
|
lsls r0, 1
|
|
cmp r1, r0
|
|
bne _081621DA
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0x00000bec
|
|
adds r0, r1
|
|
bl sub_816534C
|
|
_081621DA:
|
|
ldr r5, =gSaveBlock2Ptr
|
|
ldr r0, [r5]
|
|
ldr r1, =0x00000d04
|
|
adds r2, r0, r1
|
|
ldrh r1, [r2]
|
|
ldr r0, =0x0000270e
|
|
cmp r1, r0
|
|
bhi _081621EE
|
|
adds r0, r1, 0x1
|
|
strh r0, [r2]
|
|
_081621EE:
|
|
ldr r1, [r5]
|
|
ldr r4, =0x00000cb2
|
|
adds r1, r4
|
|
ldrh r0, [r1]
|
|
adds r0, 0x1
|
|
strh r0, [r1]
|
|
bl sub_8163E90
|
|
ldr r1, =gSpecialVar_Result
|
|
ldr r0, [r5]
|
|
adds r0, r4
|
|
ldrh r0, [r0]
|
|
strh r0, [r1]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81621C0
|
|
|
|
thumb_func_start sub_816222C
|
|
sub_816222C: @ 816222C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x3C
|
|
movs r0, 0
|
|
str r0, [sp, 0x24]
|
|
ldr r4, =gSaveBlock2Ptr
|
|
ldr r0, [r4]
|
|
ldr r1, =0x00000ca9
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
lsls r0, 30
|
|
lsrs r0, 30
|
|
mov r10, r0
|
|
ldr r0, =0x000040ce
|
|
bl VarGet
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x2C]
|
|
ldr r0, =0x000040cf
|
|
bl VarGet
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _08162266
|
|
b _0816239C
|
|
_08162266:
|
|
mov r0, r10
|
|
ldr r1, [sp, 0x2C]
|
|
bl sub_8164FCC
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0x28]
|
|
movs r7, 0
|
|
mov r2, sp
|
|
str r2, [sp, 0x34]
|
|
_0816227A:
|
|
movs r3, 0xEC
|
|
adds r0, r7, 0
|
|
muls r0, r3
|
|
movs r4, 0xE7
|
|
lsls r4, 3
|
|
adds r0, r4
|
|
ldr r5, =gSaveBlock2Ptr
|
|
ldr r1, [r5]
|
|
movs r2, 0
|
|
mov r8, r2
|
|
mov r9, r2
|
|
movs r5, 0
|
|
adds r3, r7, 0x1
|
|
str r3, [sp, 0x30]
|
|
adds r1, r0
|
|
_08162298:
|
|
ldm r1!, {r0}
|
|
mov r4, r8
|
|
orrs r4, r0
|
|
mov r8, r4
|
|
add r9, r0
|
|
adds r5, 0x1
|
|
cmp r5, 0x39
|
|
bls _08162298
|
|
movs r6, 0
|
|
movs r5, 0
|
|
movs r0, 0xEC
|
|
adds r2, r7, 0
|
|
muls r2, r0
|
|
_081622B2:
|
|
ldr r3, =gSaveBlock2Ptr
|
|
ldr r1, [r3]
|
|
movs r0, 0x2C
|
|
muls r0, r5
|
|
adds r0, r2
|
|
adds r1, r0
|
|
ldr r4, =0x0000076c
|
|
adds r0, r1, r4
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
beq _081622E4
|
|
movs r0, 0xEF
|
|
lsls r0, 3
|
|
adds r4, r1, r0
|
|
mov r0, r10
|
|
str r2, [sp, 0x38]
|
|
bl GetFrontierEnemyMonLevel
|
|
ldrb r1, [r4]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, [sp, 0x38]
|
|
cmp r1, r0
|
|
bhi _081622E4
|
|
adds r6, 0x1
|
|
_081622E4:
|
|
adds r5, 0x1
|
|
cmp r5, 0x3
|
|
ble _081622B2
|
|
ldr r0, =gUnknown_085DF9F6
|
|
ldr r1, [sp, 0x2C]
|
|
adds r0, r1, r0
|
|
ldrb r0, [r0]
|
|
cmp r6, r0
|
|
blt _0816233E
|
|
ldr r3, =gSaveBlock2Ptr
|
|
ldr r2, [r3]
|
|
movs r4, 0xEC
|
|
adds r3, r7, 0
|
|
muls r3, r4
|
|
adds r1, r2, r3
|
|
ldr r5, =0x0000073a
|
|
adds r0, r1, r5
|
|
ldrh r0, [r0]
|
|
ldr r4, [sp, 0x28]
|
|
cmp r0, r4
|
|
bne _0816233E
|
|
subs r5, 0x2
|
|
adds r0, r1, r5
|
|
ldrb r0, [r0]
|
|
cmp r0, r10
|
|
bne _0816233E
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
beq _0816233E
|
|
movs r1, 0x82
|
|
lsls r1, 4
|
|
adds r0, r2, r1
|
|
adds r0, r3
|
|
ldr r0, [r0]
|
|
cmp r0, r9
|
|
bne _0816233E
|
|
movs r2, 0x96
|
|
lsls r2, 1
|
|
adds r0, r7, r2
|
|
ldr r3, [sp, 0x34]
|
|
stm r3!, {r0}
|
|
str r3, [sp, 0x34]
|
|
ldr r4, [sp, 0x24]
|
|
adds r4, 0x1
|
|
str r4, [sp, 0x24]
|
|
_0816233E:
|
|
ldr r7, [sp, 0x30]
|
|
cmp r7, 0x4
|
|
ble _0816227A
|
|
ldr r5, [sp, 0x2C]
|
|
cmp r5, 0
|
|
bne _08162396
|
|
bl sub_8165B20
|
|
movs r7, 0
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r4, =gUnknown_085DF9EC
|
|
adds r2, r0, 0
|
|
adds r2, 0xDC
|
|
ldr r1, [sp, 0x24]
|
|
lsls r0, r1, 2
|
|
mov r5, sp
|
|
adds r3, r0, r5
|
|
_08162362:
|
|
ldrb r0, [r2]
|
|
lsls r1, r0, 25
|
|
lsrs r0, r1, 30
|
|
cmp r0, 0
|
|
beq _0816238E
|
|
ldrb r0, [r2, 0x1]
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
ldr r5, [sp, 0x28]
|
|
cmp r0, r5
|
|
bne _0816238E
|
|
lsrs r0, r1, 30
|
|
subs r0, 0x1
|
|
cmp r0, r10
|
|
bne _0816238E
|
|
movs r1, 0xC8
|
|
lsls r1, 1
|
|
adds r0, r7, r1
|
|
stm r3!, {r0}
|
|
ldr r5, [sp, 0x24]
|
|
adds r5, 0x1
|
|
str r5, [sp, 0x24]
|
|
_0816238E:
|
|
adds r2, 0x44
|
|
adds r7, 0x1
|
|
cmp r7, 0x3
|
|
ble _08162362
|
|
_08162396:
|
|
ldr r0, [sp, 0x24]
|
|
cmp r0, 0
|
|
bne _081623C0
|
|
_0816239C:
|
|
movs r0, 0
|
|
b _081623DA
|
|
.pool
|
|
_081623C0:
|
|
ldr r4, =gTrainerBattleOpponent_A
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r1, [sp, 0x24]
|
|
bl __modsi3
|
|
lsls r0, 2
|
|
add r0, sp
|
|
ldr r0, [r0]
|
|
strh r0, [r4]
|
|
movs r0, 0x1
|
|
_081623DA:
|
|
add sp, 0x3C
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_816222C
|
|
|
|
thumb_func_start sub_81623F0
|
|
sub_81623F0: @ 81623F0
|
|
push {r4-r7,lr}
|
|
ldr r6, =gSaveBlock2Ptr
|
|
ldr r0, [r6]
|
|
ldr r1, =0x00000ca9
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
lsls r0, 30
|
|
lsrs r0, 30
|
|
cmp r0, 0x2
|
|
bne _08162414
|
|
bl sub_8165E18
|
|
b _08162530
|
|
.pool
|
|
_08162414:
|
|
ldr r0, =0x000040ce
|
|
bl VarGet
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
bl sub_81A39C4
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x7
|
|
bl __udivsi3
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
bl GetFacilityEnemyMonLevel
|
|
subs r4, 0x2
|
|
cmp r4, 0x1
|
|
bhi _08162488
|
|
ldr r1, [r6]
|
|
ldr r2, =0x00000cb2
|
|
adds r0, r1, r2
|
|
ldrh r3, [r0]
|
|
ldr r2, =gTrainerBattleOpponent_A
|
|
lsls r0, r3, 2
|
|
ldr r4, =0x00000cb4
|
|
adds r1, r4
|
|
adds r0, r1, r0
|
|
ldrh r0, [r0]
|
|
strh r0, [r2]
|
|
ldr r4, =gTrainerBattleOpponent_B
|
|
lsls r0, r3, 1
|
|
adds r0, 0x1
|
|
lsls r0, 1
|
|
adds r1, r0
|
|
ldrh r0, [r1]
|
|
strh r0, [r4]
|
|
ldrh r0, [r2]
|
|
movs r1, 0
|
|
bl sub_8162614
|
|
ldrh r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8162614
|
|
b _08162530
|
|
.pool
|
|
_08162488:
|
|
bl sub_816222C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _081624B4
|
|
ldr r4, =gTrainerBattleOpponent_A
|
|
ldrh r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8162614
|
|
ldr r1, [r6]
|
|
ldr r2, =0x00000cb2
|
|
adds r0, r1, r2
|
|
ldrh r0, [r0]
|
|
lsls r0, 1
|
|
adds r2, 0x2
|
|
b _08162528
|
|
.pool
|
|
_081624B4:
|
|
lsls r7, r5, 24
|
|
adds r5, r6, 0
|
|
ldr r6, =0x00000cb2
|
|
_081624BA:
|
|
ldr r0, [r5]
|
|
adds r0, r6
|
|
ldrb r1, [r0]
|
|
lsrs r0, r7, 24
|
|
bl sub_8162548
|
|
lsls r0, 16
|
|
lsrs r3, r0, 16
|
|
movs r4, 0
|
|
ldr r1, [r5]
|
|
adds r0, r1, r6
|
|
ldrh r0, [r0]
|
|
cmp r4, r0
|
|
bge _081624FC
|
|
ldr r2, =0x00000cb4
|
|
adds r0, r1, r2
|
|
ldrh r0, [r0]
|
|
cmp r0, r3
|
|
beq _081624FC
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
subs r2, 0x2
|
|
adds r0, r1, r2
|
|
ldrh r2, [r0]
|
|
ldr r0, =0x00000cb4
|
|
adds r1, r0
|
|
_081624EE:
|
|
adds r1, 0x2
|
|
adds r4, 0x1
|
|
cmp r4, r2
|
|
bge _081624FC
|
|
ldrh r0, [r1]
|
|
cmp r0, r3
|
|
bne _081624EE
|
|
_081624FC:
|
|
ldr r0, [r5]
|
|
ldr r1, =0x00000cb2
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
cmp r4, r0
|
|
bne _081624BA
|
|
ldr r4, =gTrainerBattleOpponent_A
|
|
strh r3, [r4]
|
|
ldrh r0, [r4]
|
|
movs r1, 0
|
|
bl sub_8162614
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
ldr r2, =0x00000cb2
|
|
adds r0, r1, r2
|
|
ldrh r2, [r0]
|
|
adds r0, r2, 0x1
|
|
cmp r0, 0x6
|
|
bgt _08162530
|
|
lsls r0, r2, 1
|
|
ldr r2, =0x00000cb4
|
|
_08162528:
|
|
adds r1, r2
|
|
adds r1, r0
|
|
ldrh r0, [r4]
|
|
strh r0, [r1]
|
|
_08162530:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81623F0
|
|
|
|
thumb_func_start sub_8162548
|
|
sub_8162548: @ 8162548
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r3, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
cmp r0, 0x7
|
|
bhi _08162584
|
|
cmp r1, 0x6
|
|
bne _08162570
|
|
ldr r2, =gUnknown_085DFA1A
|
|
lsls r1, r0, 2
|
|
adds r0, r2, 0x2
|
|
adds r0, r1, r0
|
|
adds r1, r2
|
|
ldrh r0, [r0]
|
|
ldrh r4, [r1]
|
|
b _0816258A
|
|
.pool
|
|
_08162570:
|
|
ldr r2, =gUnknown_085DF9FA
|
|
lsls r1, r3, 2
|
|
adds r0, r2, 0x2
|
|
adds r0, r1, r0
|
|
adds r1, r2
|
|
ldrh r0, [r0]
|
|
ldrh r4, [r1]
|
|
b _0816258A
|
|
.pool
|
|
_08162584:
|
|
ldr r1, =gUnknown_085DF9FA
|
|
ldrh r0, [r1, 0x1E]
|
|
ldrh r4, [r1, 0x1C]
|
|
_0816258A:
|
|
subs r0, r4
|
|
adds r0, 0x1
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
adds r1, r5, 0
|
|
bl __umodsi3
|
|
adds r4, r0
|
|
lsls r4, 16
|
|
lsrs r5, r4, 16
|
|
adds r0, r5, 0
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_8162548
|
|
|
|
thumb_func_start sub_81625B4
|
|
sub_81625B4: @ 81625B4
|
|
push {r4,lr}
|
|
adds r4, r2, 0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r2, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
cmp r0, 0x7
|
|
bhi _081625F4
|
|
cmp r1, 0x6
|
|
bne _081625D4
|
|
ldr r1, =gUnknown_085DFA1A
|
|
lsls r2, r0, 2
|
|
b _081625D8
|
|
.pool
|
|
_081625D4:
|
|
ldr r1, =gUnknown_085DF9FA
|
|
lsls r2, 2
|
|
_081625D8:
|
|
adds r0, r1, 0x2
|
|
adds r0, r2, r0
|
|
adds r2, r1
|
|
ldrh r0, [r0]
|
|
ldrh r1, [r2]
|
|
subs r0, r1
|
|
adds r0, 0x1
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
ldrh r0, [r2]
|
|
b _08162604
|
|
.pool
|
|
_081625F4:
|
|
ldr r0, =gUnknown_085DF9FA
|
|
ldrh r1, [r0, 0x1E]
|
|
ldrh r2, [r0, 0x1C]
|
|
subs r1, r2
|
|
adds r1, 0x1
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
ldrh r0, [r0, 0x1C]
|
|
_08162604:
|
|
strh r0, [r4]
|
|
strb r1, [r3]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81625B4
|
|
|
|
thumb_func_start sub_8162614
|
|
sub_8162614: @ 8162614
|
|
push {r4-r6,lr}
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
adds r6, r4, 0
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
bl GetFacilityEnemyMonLevel
|
|
movs r0, 0xFA
|
|
lsls r0, 1
|
|
cmp r4, r0
|
|
bne _08162640
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0x00000bed
|
|
adds r0, r1
|
|
b _081626BA
|
|
.pool
|
|
_08162640:
|
|
ldr r0, =0x000003fe
|
|
cmp r4, r0
|
|
bne _08162650
|
|
bl sub_81A4DD8
|
|
b _08162788
|
|
.pool
|
|
_08162650:
|
|
ldr r0, =0x0000012b
|
|
cmp r4, r0
|
|
bhi _0816266C
|
|
ldr r0, =gFacilityTrainers
|
|
ldr r1, [r0]
|
|
movs r0, 0x34
|
|
muls r0, r4
|
|
adds r0, r1
|
|
b _081626BA
|
|
.pool
|
|
_0816266C:
|
|
ldr r0, =0x0000018f
|
|
cmp r4, r0
|
|
bhi _08162698
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0xfffffed4
|
|
adds r2, r4, r1
|
|
movs r1, 0xEC
|
|
muls r1, r2
|
|
adds r0, r1
|
|
ldr r1, =0x00000739
|
|
adds r0, r1
|
|
b _081626BA
|
|
.pool
|
|
_08162698:
|
|
ldr r3, =gApprentices
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
ldr r0, =0xfffffe70
|
|
adds r2, r6, r0
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
adds r1, 0xDC
|
|
ldrb r0, [r1]
|
|
lsls r0, 27
|
|
lsrs r0, 27
|
|
movs r1, 0x58
|
|
muls r0, r1
|
|
adds r0, r3
|
|
adds r0, 0x32
|
|
_081626BA:
|
|
ldrb r2, [r0]
|
|
movs r1, 0
|
|
ldr r3, =gUnknown_085DCEDC
|
|
ldrb r0, [r3]
|
|
cmp r0, r2
|
|
beq _081626D4
|
|
_081626C6:
|
|
adds r1, 0x1
|
|
cmp r1, 0x1D
|
|
bhi _081626D4
|
|
adds r0, r1, r3
|
|
ldrb r0, [r0]
|
|
cmp r0, r2
|
|
bne _081626C6
|
|
_081626D4:
|
|
cmp r1, 0x1E
|
|
beq _08162700
|
|
ldr r0, =gUnknown_085DCF0E
|
|
adds r0, r1, r0
|
|
ldrb r1, [r0]
|
|
cmp r5, 0x1
|
|
beq _08162744
|
|
cmp r5, 0x1
|
|
ble _0816272E
|
|
cmp r5, 0xF
|
|
bne _0816272E
|
|
b _08162750
|
|
.pool
|
|
_08162700:
|
|
movs r1, 0
|
|
ldr r3, =gUnknown_085DCEFA
|
|
ldrb r0, [r3]
|
|
cmp r0, r2
|
|
beq _08162718
|
|
_0816270A:
|
|
adds r1, 0x1
|
|
cmp r1, 0x13
|
|
bhi _08162718
|
|
adds r0, r1, r3
|
|
ldrb r0, [r0]
|
|
cmp r0, r2
|
|
bne _0816270A
|
|
_08162718:
|
|
cmp r1, 0x14
|
|
beq _0816275C
|
|
ldr r0, =gUnknown_085DCF2C
|
|
adds r0, r1, r0
|
|
ldrb r1, [r0]
|
|
cmp r5, 0x1
|
|
beq _08162744
|
|
cmp r5, 0x1
|
|
ble _0816272E
|
|
cmp r5, 0xF
|
|
beq _08162750
|
|
_0816272E:
|
|
ldr r0, =0x00004010
|
|
bl VarSet
|
|
b _08162788
|
|
.pool
|
|
_08162744:
|
|
ldr r0, =0x00004011
|
|
bl VarSet
|
|
b _08162788
|
|
.pool
|
|
_08162750:
|
|
ldr r0, =0x0000401e
|
|
bl VarSet
|
|
b _08162788
|
|
.pool
|
|
_0816275C:
|
|
cmp r5, 0x1
|
|
beq _08162770
|
|
cmp r5, 0x1
|
|
ble _08162768
|
|
cmp r5, 0xF
|
|
beq _08162780
|
|
_08162768:
|
|
ldr r0, =0x00004010
|
|
b _08162772
|
|
.pool
|
|
_08162770:
|
|
ldr r0, =0x00004011
|
|
_08162772:
|
|
movs r1, 0x7
|
|
bl VarSet
|
|
b _08162788
|
|
.pool
|
|
_08162780:
|
|
ldr r0, =0x0000401e
|
|
movs r1, 0x7
|
|
bl VarSet
|
|
_08162788:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8162614
|
|
|
|
thumb_func_start sub_8162794
|
|
sub_8162794: @ 8162794
|
|
push {lr}
|
|
movs r0, 0xFA
|
|
lsls r0, 1
|
|
movs r1, 0
|
|
bl sub_8162614
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8162794
|
|
|
|
thumb_func_start sub_81627A4
|
|
sub_81627A4: @ 81627A4
|
|
push {r4,r5,lr}
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
adds r5, r4, 0
|
|
bl GetFacilityEnemyMonLevel
|
|
movs r0, 0xFA
|
|
lsls r0, 1
|
|
cmp r4, r0
|
|
bne _081627CC
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0x00000bed
|
|
adds r0, r1
|
|
b _08162836
|
|
.pool
|
|
_081627CC:
|
|
ldr r0, =0x0000012b
|
|
cmp r4, r0
|
|
bhi _081627E8
|
|
ldr r0, =gFacilityTrainers
|
|
ldr r1, [r0]
|
|
movs r0, 0x34
|
|
muls r0, r4
|
|
adds r0, r1
|
|
b _08162836
|
|
.pool
|
|
_081627E8:
|
|
ldr r0, =0x0000018f
|
|
cmp r4, r0
|
|
bhi _08162814
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0xfffffed4
|
|
adds r2, r4, r1
|
|
movs r1, 0xEC
|
|
muls r1, r2
|
|
adds r0, r1
|
|
ldr r1, =0x00000739
|
|
adds r0, r1
|
|
b _08162836
|
|
.pool
|
|
_08162814:
|
|
ldr r3, =gApprentices
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
ldr r0, =0xfffffe70
|
|
adds r2, r5, r0
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
adds r1, 0xDC
|
|
ldrb r0, [r1]
|
|
lsls r0, 27
|
|
lsrs r0, 27
|
|
movs r1, 0x58
|
|
muls r0, r1
|
|
adds r0, r3
|
|
adds r0, 0x32
|
|
_08162836:
|
|
ldrb r2, [r0]
|
|
movs r1, 0
|
|
ldr r3, =gUnknown_085DCEDC
|
|
ldrb r0, [r3]
|
|
cmp r0, r2
|
|
beq _08162850
|
|
_08162842:
|
|
adds r1, 0x1
|
|
cmp r1, 0x1D
|
|
bhi _08162850
|
|
adds r0, r1, r3
|
|
ldrb r0, [r0]
|
|
cmp r0, r2
|
|
bne _08162842
|
|
_08162850:
|
|
cmp r1, 0x1E
|
|
beq _0816286C
|
|
ldr r0, =gUnknown_085DCF0E
|
|
b _08162892
|
|
.pool
|
|
_0816286C:
|
|
movs r1, 0
|
|
ldr r3, =gUnknown_085DCEFA
|
|
ldrb r0, [r3]
|
|
cmp r0, r2
|
|
beq _08162884
|
|
_08162876:
|
|
adds r1, 0x1
|
|
cmp r1, 0x13
|
|
bhi _08162884
|
|
adds r0, r1, r3
|
|
ldrb r0, [r0]
|
|
cmp r0, r2
|
|
bne _08162876
|
|
_08162884:
|
|
cmp r1, 0x14
|
|
bne _08162890
|
|
movs r0, 0x7
|
|
b _08162896
|
|
.pool
|
|
_08162890:
|
|
ldr r0, =gUnknown_085DCF2C
|
|
_08162892:
|
|
adds r0, r1, r0
|
|
ldrb r0, [r0]
|
|
_08162896:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_81627A4
|
|
|
|
thumb_func_start sub_81628A0
|
|
sub_81628A0: @ 81628A0
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x20
|
|
movs r1, 0
|
|
mov r8, r1
|
|
mov r10, r0
|
|
movs r5, 0
|
|
ldr r2, =gSaveBlock2Ptr
|
|
ldr r0, [r2]
|
|
mov r4, r10
|
|
ldrb r4, [r4, 0xC]
|
|
str r4, [sp, 0x18]
|
|
mov r9, r5
|
|
movs r7, 0x4
|
|
str r7, [sp, 0x1C]
|
|
ldr r1, =0x00000744
|
|
adds r1, r0
|
|
mov r12, r1
|
|
_081628CA:
|
|
movs r6, 0
|
|
movs r3, 0
|
|
mov r2, r12
|
|
ldrb r0, [r2]
|
|
ldr r4, [sp, 0x18]
|
|
cmp r0, r4
|
|
bne _081628FA
|
|
mov r4, r9
|
|
mov r2, r10
|
|
adds r2, 0xC
|
|
_081628DE:
|
|
adds r3, 0x1
|
|
cmp r3, 0x3
|
|
bgt _081628FA
|
|
ldr r7, =gSaveBlock2Ptr
|
|
ldr r0, [r7]
|
|
adds r1, r3, r4
|
|
ldr r7, =0x00000744
|
|
adds r0, r7
|
|
adds r0, r1
|
|
adds r1, r2, r3
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
beq _081628DE
|
|
_081628FA:
|
|
cmp r3, 0x4
|
|
bne _08162944
|
|
movs r6, 0
|
|
ldr r1, =gSaveBlock2Ptr
|
|
ldr r0, [r1]
|
|
ldr r3, =0x0000073c
|
|
adds r0, r3
|
|
ldr r2, [sp, 0x1C]
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
mov r4, r10
|
|
ldrb r4, [r4, 0x8]
|
|
cmp r0, r4
|
|
bne _08162944
|
|
adds r1, r0, 0
|
|
mov r2, r9
|
|
adds r2, 0x4
|
|
_0816291C:
|
|
cmp r1, 0xFF
|
|
bne _08162930
|
|
movs r6, 0x7
|
|
b _08162944
|
|
.pool
|
|
_08162930:
|
|
adds r6, 0x1
|
|
cmp r6, 0x6
|
|
bgt _08162944
|
|
ldr r7, =gSaveBlock2Ptr
|
|
ldr r0, [r7]
|
|
adds r0, r3
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, r1
|
|
beq _0816291C
|
|
_08162944:
|
|
cmp r6, 0x7
|
|
beq _0816295A
|
|
movs r0, 0xEC
|
|
add r9, r0
|
|
ldr r1, [sp, 0x1C]
|
|
adds r1, 0xEC
|
|
str r1, [sp, 0x1C]
|
|
add r12, r0
|
|
adds r5, 0x1
|
|
cmp r5, 0x4
|
|
ble _081628CA
|
|
_0816295A:
|
|
cmp r5, 0x4
|
|
bgt _08162974
|
|
ldr r2, =gSaveBlock2Ptr
|
|
ldr r0, [r2]
|
|
movs r1, 0xEC
|
|
muls r1, r5
|
|
adds r0, r1
|
|
movs r4, 0xE7
|
|
lsls r4, 3
|
|
adds r0, r4
|
|
b _081629B2
|
|
.pool
|
|
_08162974:
|
|
movs r5, 0
|
|
ldr r7, =gSaveBlock2Ptr
|
|
ldr r0, [r7]
|
|
ldr r1, =0x0000073a
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
beq _0816299E
|
|
adds r3, r7, 0
|
|
adds r2, r1, 0
|
|
movs r1, 0
|
|
_0816298A:
|
|
adds r1, 0xEC
|
|
adds r5, 0x1
|
|
cmp r5, 0x4
|
|
bgt _081629C4
|
|
ldr r0, [r3]
|
|
adds r0, r1
|
|
adds r0, r2
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
bne _0816298A
|
|
_0816299E:
|
|
cmp r5, 0x4
|
|
bgt _081629C4
|
|
ldr r1, =gSaveBlock2Ptr
|
|
ldr r0, [r1]
|
|
movs r1, 0xEC
|
|
muls r1, r5
|
|
adds r0, r1
|
|
movs r2, 0xE7
|
|
lsls r2, 3
|
|
adds r0, r2
|
|
_081629B2:
|
|
mov r1, r10
|
|
movs r2, 0xEC
|
|
bl memcpy
|
|
b _08162A8A
|
|
.pool
|
|
_081629C4:
|
|
mov r2, sp
|
|
ldr r4, =gSaveBlock2Ptr
|
|
ldr r0, [r4]
|
|
ldr r3, =0x0000073a
|
|
adds r0, r3
|
|
ldrh r0, [r0]
|
|
movs r1, 0
|
|
strh r0, [r2]
|
|
add r0, sp, 0xC
|
|
strh r1, [r0]
|
|
movs r7, 0x1
|
|
add r8, r7
|
|
movs r5, 0x1
|
|
add r0, sp, 0xC
|
|
mov r9, r0
|
|
mov r12, r3
|
|
_081629E4:
|
|
movs r3, 0
|
|
adds r7, r5, 0x1
|
|
cmp r3, r8
|
|
bge _08162A2E
|
|
ldr r1, =gSaveBlock2Ptr
|
|
ldr r0, [r1]
|
|
movs r2, 0xEC
|
|
adds r1, r5, 0
|
|
muls r1, r2
|
|
adds r0, r1
|
|
mov r1, r12
|
|
adds r4, r0, r1
|
|
mov r6, sp
|
|
_081629FE:
|
|
lsls r0, r3, 1
|
|
add r0, sp
|
|
ldrh r2, [r4]
|
|
adds r1, r2, 0
|
|
ldrh r0, [r0]
|
|
cmp r1, r0
|
|
bcs _08162A24
|
|
movs r3, 0
|
|
movs r4, 0x1
|
|
mov r8, r4
|
|
strh r2, [r6]
|
|
mov r0, r9
|
|
strh r5, [r0]
|
|
b _08162A2E
|
|
.pool
|
|
_08162A24:
|
|
cmp r1, r0
|
|
bhi _08162A2E
|
|
adds r3, 0x1
|
|
cmp r3, r8
|
|
blt _081629FE
|
|
_08162A2E:
|
|
cmp r3, r8
|
|
bne _08162A54
|
|
mov r1, r8
|
|
lsls r2, r1, 1
|
|
mov r4, sp
|
|
adds r3, r4, r2
|
|
ldr r1, =gSaveBlock2Ptr
|
|
ldr r0, [r1]
|
|
movs r4, 0xEC
|
|
adds r1, r5, 0
|
|
muls r1, r4
|
|
adds r0, r1
|
|
add r0, r12
|
|
ldrh r0, [r0]
|
|
strh r0, [r3]
|
|
add r2, r9
|
|
strh r5, [r2]
|
|
movs r0, 0x1
|
|
add r8, r0
|
|
_08162A54:
|
|
adds r5, r7, 0
|
|
cmp r5, 0x4
|
|
ble _081629E4
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r1, r8
|
|
bl __modsi3
|
|
adds r5, r0, 0
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
lsls r1, r5, 1
|
|
add r1, sp
|
|
adds r1, 0xC
|
|
ldrh r2, [r1]
|
|
movs r1, 0xEC
|
|
muls r1, r2
|
|
adds r0, r1
|
|
movs r1, 0xE7
|
|
lsls r1, 3
|
|
adds r0, r1
|
|
mov r1, r10
|
|
movs r2, 0xEC
|
|
bl memcpy
|
|
_08162A8A:
|
|
add sp, 0x20
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81628A0
|
|
|
|
thumb_func_start GetFrontierTrainerFrontSpriteId
|
|
GetFrontierTrainerFrontSpriteId: @ 8162AA0
|
|
push {r4,r5,lr}
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
adds r5, r4, 0
|
|
bl GetFacilityEnemyMonLevel
|
|
movs r0, 0xFA
|
|
lsls r0, 1
|
|
cmp r4, r0
|
|
bne _08162AD0
|
|
ldr r1, =gFacilityClassToPicIndex
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r2, =0x00000bed
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
b _08162BC8
|
|
.pool
|
|
_08162AD0:
|
|
ldr r0, =0x000003fe
|
|
cmp r4, r0
|
|
bne _08162AE4
|
|
bl GetFrontierBrainTrainerPicIndex
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
b _08162BCA
|
|
.pool
|
|
_08162AE4:
|
|
ldr r0, =0x0000012b
|
|
cmp r4, r0
|
|
bhi _08162B08
|
|
ldr r2, =gFacilityClassToPicIndex
|
|
ldr r0, =gFacilityTrainers
|
|
ldr r1, [r0]
|
|
movs r0, 0x34
|
|
muls r0, r4
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
adds r0, r2
|
|
b _08162BC8
|
|
.pool
|
|
_08162B08:
|
|
ldr r0, =0x0000018f
|
|
cmp r4, r0
|
|
bhi _08162B64
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08162B38
|
|
ldr r4, =gFacilityClassToPicIndex
|
|
bl sub_818649C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, r4
|
|
b _08162BC8
|
|
.pool
|
|
_08162B38:
|
|
ldr r3, =gFacilityClassToPicIndex
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0xfffffed4
|
|
adds r2, r4, r1
|
|
movs r1, 0xEC
|
|
muls r1, r2
|
|
adds r0, r1
|
|
ldr r2, =0x00000739
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
adds r0, r3
|
|
b _08162BC8
|
|
.pool
|
|
_08162B64:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08162BB0
|
|
ldr r4, =gFacilityClassToPicIndex
|
|
ldr r3, =gApprentices
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
ldr r0, =0xfffffe70
|
|
adds r2, r5, r0
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
adds r1, 0xDC
|
|
ldrb r0, [r1]
|
|
lsls r0, 27
|
|
lsrs r0, 27
|
|
movs r1, 0x58
|
|
muls r0, r1
|
|
adds r0, r3
|
|
adds r0, 0x32
|
|
ldrb r0, [r0]
|
|
adds r0, r4
|
|
b _08162BC8
|
|
.pool
|
|
_08162BB0:
|
|
ldr r5, =gFacilityClassToPicIndex
|
|
ldr r4, =gApprentices
|
|
bl sub_81864A8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x58
|
|
muls r0, r1
|
|
adds r0, r4
|
|
adds r0, 0x32
|
|
ldrb r0, [r0]
|
|
adds r0, r5
|
|
_08162BC8:
|
|
ldrb r0, [r0]
|
|
_08162BCA:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end GetFrontierTrainerFrontSpriteId
|
|
|
|
thumb_func_start GetFrontierOpponentClass
|
|
GetFrontierOpponentClass: @ 8162BD8
|
|
push {r4,r5,lr}
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
adds r5, r4, 0
|
|
bl GetFacilityEnemyMonLevel
|
|
movs r0, 0xFA
|
|
lsls r0, 1
|
|
cmp r4, r0
|
|
bne _08162C08
|
|
ldr r1, =gFacilityClassToTrainerClass
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r2, =0x00000bed
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
b _08162C26
|
|
.pool
|
|
_08162C08:
|
|
ldr r0, =0x000003fe
|
|
cmp r4, r0
|
|
bne _08162C1C
|
|
bl GetFrontierBrainTrainerClass
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
b _08162D1E
|
|
.pool
|
|
_08162C1C:
|
|
ldr r0, =0x00000c03
|
|
cmp r4, r0
|
|
bne _08162C38
|
|
ldr r0, =gTrainers
|
|
ldr r1, =0x00007da1
|
|
_08162C26:
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
b _08162D1E
|
|
.pool
|
|
_08162C38:
|
|
ldr r0, =0x0000012b
|
|
cmp r4, r0
|
|
bhi _08162C60
|
|
ldr r2, =gFacilityClassToTrainerClass
|
|
ldr r0, =gFacilityTrainers
|
|
ldr r1, [r0]
|
|
movs r0, 0x34
|
|
muls r0, r4
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
b _08162D1E
|
|
.pool
|
|
_08162C60:
|
|
ldr r0, =0x0000018f
|
|
cmp r4, r0
|
|
bhi _08162CBC
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08162C90
|
|
ldr r4, =gFacilityClassToTrainerClass
|
|
bl sub_818649C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
b _08162D1E
|
|
.pool
|
|
_08162C90:
|
|
ldr r3, =gFacilityClassToTrainerClass
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0xfffffed4
|
|
adds r2, r4, r1
|
|
movs r1, 0xEC
|
|
muls r1, r2
|
|
adds r0, r1
|
|
ldr r2, =0x00000739
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
adds r0, r3
|
|
ldrb r0, [r0]
|
|
b _08162D1E
|
|
.pool
|
|
_08162CBC:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08162CF4
|
|
ldr r5, =gFacilityClassToTrainerClass
|
|
ldr r4, =gApprentices
|
|
bl sub_81864A8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x58
|
|
muls r0, r1
|
|
adds r0, r4
|
|
adds r0, 0x32
|
|
ldrb r0, [r0]
|
|
adds r0, r5
|
|
ldrb r0, [r0]
|
|
b _08162D1E
|
|
.pool
|
|
_08162CF4:
|
|
ldr r4, =gFacilityClassToTrainerClass
|
|
ldr r3, =gApprentices
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
ldr r0, =0xfffffe70
|
|
adds r2, r5, r0
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
adds r1, 0xDC
|
|
ldrb r0, [r1]
|
|
lsls r0, 27
|
|
lsrs r0, 27
|
|
movs r1, 0x58
|
|
muls r0, r1
|
|
adds r0, r3
|
|
adds r0, 0x32
|
|
ldrb r0, [r0]
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
_08162D1E:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end GetFrontierOpponentClass
|
|
|
|
thumb_func_start sub_8162D34
|
|
sub_8162D34: @ 8162D34
|
|
push {r4,r5,lr}
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
adds r5, r4, 0
|
|
bl GetFacilityEnemyMonLevel
|
|
movs r0, 0xFA
|
|
lsls r0, 1
|
|
cmp r4, r0
|
|
bne _08162D5C
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0x00000bed
|
|
adds r0, r1
|
|
b _08162E0A
|
|
.pool
|
|
_08162D5C:
|
|
ldr r0, =0x0000012b
|
|
cmp r4, r0
|
|
bhi _08162D78
|
|
ldr r0, =gFacilityTrainers
|
|
ldr r1, [r0]
|
|
movs r0, 0x34
|
|
muls r0, r4
|
|
adds r0, r1
|
|
b _08162E0A
|
|
.pool
|
|
_08162D78:
|
|
ldr r0, =0x0000018f
|
|
cmp r4, r0
|
|
bhi _08162DC0
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08162DA0
|
|
bl sub_818649C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
b _08162E0C
|
|
.pool
|
|
_08162DA0:
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0xfffffed4
|
|
adds r2, r4, r1
|
|
movs r1, 0xEC
|
|
muls r1, r2
|
|
adds r0, r1
|
|
ldr r1, =0x00000739
|
|
adds r0, r1
|
|
b _08162E0A
|
|
.pool
|
|
_08162DC0:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08162DE8
|
|
ldr r4, =gApprentices
|
|
bl sub_81864A8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x58
|
|
muls r0, r1
|
|
adds r0, r4
|
|
b _08162E08
|
|
.pool
|
|
_08162DE8:
|
|
ldr r3, =gApprentices
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
ldr r0, =0xfffffe70
|
|
adds r2, r5, r0
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
adds r1, 0xDC
|
|
ldrb r0, [r1]
|
|
lsls r0, 27
|
|
lsrs r0, 27
|
|
movs r1, 0x58
|
|
muls r0, r1
|
|
adds r0, r3
|
|
_08162E08:
|
|
adds r0, 0x32
|
|
_08162E0A:
|
|
ldrb r0, [r0]
|
|
_08162E0C:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_8162D34
|
|
|
|
thumb_func_start GetFrontierTrainerName
|
|
GetFrontierTrainerName: @ 8162E20
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
lsls r1, 16
|
|
lsrs r5, r1, 16
|
|
movs r4, 0
|
|
bl GetFacilityEnemyMonLevel
|
|
movs r0, 0xFA
|
|
lsls r0, 1
|
|
cmp r5, r0
|
|
bne _08162E54
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
movs r1, 0xBF
|
|
lsls r1, 4
|
|
adds r2, r0, r1
|
|
_08162E40:
|
|
adds r0, r6, r4
|
|
adds r1, r2, r4
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r4, 0x1
|
|
cmp r4, 0x6
|
|
ble _08162E40
|
|
b _08162F5C
|
|
.pool
|
|
_08162E54:
|
|
ldr r0, =0x000003fe
|
|
cmp r5, r0
|
|
bne _08162E68
|
|
adds r0, r6, 0
|
|
bl CopyFrontierBrainTrainerName
|
|
b _08162F62
|
|
.pool
|
|
_08162E68:
|
|
ldr r0, =0x00000c03
|
|
cmp r5, r0
|
|
bne _08162E88
|
|
ldr r2, =gTrainers + 804 * 0x28 + 0x4 @ TRAINER_STEVEN name
|
|
_08162E70:
|
|
adds r0, r6, r4
|
|
adds r1, r4, r2
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r4, 0x1
|
|
cmp r4, 0x6
|
|
ble _08162E70
|
|
b _08162F5C
|
|
.pool
|
|
_08162E88:
|
|
ldr r0, =0x0000012b
|
|
cmp r5, r0
|
|
bhi _08162EB4
|
|
ldr r0, =gFacilityTrainers
|
|
ldr r1, [r0]
|
|
movs r0, 0x34
|
|
muls r0, r5
|
|
adds r0, r1
|
|
adds r2, r0, 0x4
|
|
_08162E9A:
|
|
adds r0, r6, r4
|
|
adds r1, r2, r4
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r4, 0x1
|
|
cmp r4, 0x6
|
|
ble _08162E9A
|
|
b _08162F5C
|
|
.pool
|
|
_08162EB4:
|
|
ldr r0, =0x0000018f
|
|
cmp r5, r0
|
|
bhi _08162F00
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08162ED8
|
|
adds r0, r6, 0
|
|
bl sub_8186468
|
|
b _08162F62
|
|
.pool
|
|
_08162ED8:
|
|
ldr r2, =gSaveBlock2Ptr
|
|
movs r0, 0xEC
|
|
adds r1, r5, 0
|
|
muls r1, r0
|
|
ldr r0, =0xfffef2a8
|
|
adds r1, r0
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
adds r1, r0, 0x4
|
|
adds r0, 0xE4
|
|
ldrb r2, [r0]
|
|
adds r0, r6, 0
|
|
bl TVShowConvertInternationalString
|
|
b _08162F62
|
|
.pool
|
|
_08162F00:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08162F24
|
|
bl sub_81864A8
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
bl sub_81864C0
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
b _08162F3E
|
|
.pool
|
|
_08162F24:
|
|
ldr r1, =gSaveBlock2Ptr
|
|
lsls r0, r5, 4
|
|
adds r0, r5
|
|
lsls r0, 2
|
|
ldr r2, =0xffff969c
|
|
adds r0, r2
|
|
ldr r1, [r1]
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
lsls r0, 27
|
|
lsrs r5, r0, 27
|
|
adds r1, 0x3F
|
|
ldrb r4, [r1]
|
|
_08162F3E:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetApprenticeNameInLanguage
|
|
adds r1, r0, 0
|
|
adds r0, r6, 0
|
|
adds r2, r4, 0
|
|
bl TVShowConvertInternationalString
|
|
b _08162F62
|
|
.pool
|
|
_08162F5C:
|
|
adds r1, r6, r4
|
|
movs r0, 0xFF
|
|
strb r0, [r1]
|
|
_08162F62:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end GetFrontierTrainerName
|
|
|
|
thumb_func_start sub_8162F68
|
|
sub_8162F68: @ 8162F68
|
|
push {r4,r5,lr}
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
adds r5, r4, 0
|
|
bl GetFacilityEnemyMonLevel
|
|
movs r0, 0xFA
|
|
lsls r0, 1
|
|
cmp r4, r0
|
|
bne _08162F90
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0x00000bed
|
|
adds r0, r1
|
|
b _0816300E
|
|
.pool
|
|
_08162F90:
|
|
ldr r0, =0x000003fe
|
|
cmp r4, r0
|
|
bne _08162FA4
|
|
bl sub_81A4DB8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
b _08163042
|
|
.pool
|
|
_08162FA4:
|
|
ldr r0, =0x0000012b
|
|
cmp r4, r0
|
|
bhi _08162FC0
|
|
ldr r0, =gFacilityTrainers
|
|
ldr r1, [r0]
|
|
movs r0, 0x34
|
|
muls r0, r4
|
|
adds r0, r1
|
|
b _0816300E
|
|
.pool
|
|
_08162FC0:
|
|
ldr r0, =0x0000018f
|
|
cmp r4, r0
|
|
bhi _08162FEC
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0xfffffed4
|
|
adds r2, r4, r1
|
|
movs r1, 0xEC
|
|
muls r1, r2
|
|
adds r0, r1
|
|
ldr r1, =0x00000739
|
|
adds r0, r1
|
|
b _0816300E
|
|
.pool
|
|
_08162FEC:
|
|
ldr r3, =gApprentices
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
ldr r0, =0xfffffe70
|
|
adds r2, r5, r0
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
adds r1, 0xDC
|
|
ldrb r0, [r1]
|
|
lsls r0, 27
|
|
lsrs r0, 27
|
|
movs r1, 0x58
|
|
muls r0, r1
|
|
adds r0, r3
|
|
adds r0, 0x32
|
|
_0816300E:
|
|
ldrb r2, [r0]
|
|
movs r1, 0
|
|
ldr r3, =gUnknown_085DCEFA
|
|
ldrb r0, [r3]
|
|
cmp r0, r2
|
|
beq _08163028
|
|
_0816301A:
|
|
adds r1, 0x1
|
|
cmp r1, 0x13
|
|
bhi _08163028
|
|
adds r0, r1, r3
|
|
ldrb r0, [r0]
|
|
cmp r0, r2
|
|
bne _0816301A
|
|
_08163028:
|
|
cmp r1, 0x14
|
|
bne _08163040
|
|
movs r0, 0
|
|
b _08163042
|
|
.pool
|
|
_08163040:
|
|
movs r0, 0x1
|
|
_08163042:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8162F68
|
|
|
|
thumb_func_start sub_8163048
|
|
sub_8163048: @ 8163048
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
bl ZeroEnemyPartyMons
|
|
ldr r0, =gTrainerBattleOpponent_A
|
|
ldrh r0, [r0]
|
|
movs r1, 0
|
|
adds r2, r4, 0
|
|
bl sub_81630C4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8163048
|
|
|
|
thumb_func_start sub_816306C
|
|
sub_816306C: @ 816306C
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
bl ZeroEnemyPartyMons
|
|
ldr r0, =gTrainerBattleOpponent_A
|
|
ldrh r0, [r0]
|
|
movs r1, 0
|
|
adds r2, r4, 0
|
|
bl sub_81630C4
|
|
ldr r0, =gTrainerBattleOpponent_B
|
|
ldrh r0, [r0]
|
|
movs r1, 0x3
|
|
adds r2, r4, 0
|
|
bl sub_81630C4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_816306C
|
|
|
|
thumb_func_start sub_81630A0
|
|
sub_81630A0: @ 81630A0
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
bl ZeroEnemyPartyMons
|
|
ldr r0, =gTrainerBattleOpponent_A
|
|
ldrh r0, [r0]
|
|
movs r1, 0
|
|
adds r2, r4, 0
|
|
bl sub_8165EA4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81630A0
|
|
|
|
thumb_func_start sub_81630C4
|
|
sub_81630C4: @ 81630C4
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x40
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
str r1, [sp, 0x18]
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
str r2, [sp, 0x1C]
|
|
add r4, sp, 0x14
|
|
movs r0, 0xFF
|
|
strb r0, [r4]
|
|
bl GetFacilityEnemyMonLevel
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x20]
|
|
ldr r0, =0x0000012b
|
|
cmp r5, r0
|
|
bhi _08163138
|
|
adds r0, r5, 0
|
|
bl sub_8165D08
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x24]
|
|
ldr r0, =gTrainerBattleOpponent_A
|
|
ldrh r2, [r0]
|
|
ldr r0, =gFacilityTrainers
|
|
ldr r1, [r0]
|
|
movs r0, 0x34
|
|
muls r0, r2
|
|
adds r0, r1
|
|
ldr r0, [r0, 0x30]
|
|
str r0, [sp, 0x2C]
|
|
movs r0, 0
|
|
str r0, [sp, 0x28]
|
|
ldr r2, [sp, 0x2C]
|
|
ldrh r1, [r2]
|
|
ldr r0, =0x0000ffff
|
|
cmp r1, r0
|
|
bne _08163124
|
|
b _08163278
|
|
_08163124:
|
|
b _08163260
|
|
.pool
|
|
_08163138:
|
|
movs r0, 0xFA
|
|
lsls r0, 1
|
|
cmp r5, r0
|
|
bne _08163180
|
|
ldr r7, [sp, 0x18]
|
|
adds r0, r7, 0x3
|
|
cmp r7, r0
|
|
blt _0816314A
|
|
b _08163426
|
|
_0816314A:
|
|
ldr r4, =gSaveBlock2Ptr
|
|
_0816314C:
|
|
movs r0, 0x64
|
|
muls r0, r7
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldr r5, [sp, 0x18]
|
|
subs r2, r7, r5
|
|
movs r1, 0x2C
|
|
muls r2, r1
|
|
movs r6, 0xC2
|
|
lsls r6, 4
|
|
adds r2, r6
|
|
ldr r1, [r4]
|
|
adds r1, r2
|
|
bl sub_806819C
|
|
adds r7, 0x1
|
|
adds r0, r5, 0
|
|
adds r0, 0x3
|
|
cmp r7, r0
|
|
blt _0816314C
|
|
b _08163426
|
|
.pool
|
|
_08163180:
|
|
ldr r0, =0x000003fe
|
|
cmp r5, r0
|
|
bne _08163190
|
|
bl sub_81A4E04
|
|
b _08163426
|
|
.pool
|
|
_08163190:
|
|
ldr r0, =0x0000018f
|
|
cmp r5, r0
|
|
bhi _08163218
|
|
movs r6, 0
|
|
ldr r7, [sp, 0x18]
|
|
ldr r1, [sp, 0x1C]
|
|
adds r0, r7, r1
|
|
cmp r7, r0
|
|
blt _081631A4
|
|
b _08163426
|
|
_081631A4:
|
|
ldr r2, =0xfffffed4
|
|
adds r1, r5, r2
|
|
movs r0, 0xEC
|
|
adds r2, r1, 0
|
|
muls r2, r0
|
|
mov r8, r2
|
|
muls r0, r5
|
|
ldr r5, =0xfffef2a8
|
|
adds r4, r0, r5
|
|
_081631B6:
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r3, [r0]
|
|
movs r0, 0x2C
|
|
adds r2, r6, 0
|
|
muls r2, r0
|
|
mov r1, r8
|
|
adds r0, r2, r1
|
|
adds r1, r3, r0
|
|
ldr r5, =0x0000076c
|
|
adds r0, r1, r5
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
beq _081631F0
|
|
adds r5, 0xC
|
|
adds r0, r1, r5
|
|
ldrb r0, [r0]
|
|
ldr r1, [sp, 0x20]
|
|
cmp r0, r1
|
|
bhi _081631F0
|
|
movs r0, 0x64
|
|
muls r0, r7
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
adds r1, r3, r4
|
|
adds r2, 0x34
|
|
adds r1, r2
|
|
movs r2, 0
|
|
bl sub_8068338
|
|
_081631F0:
|
|
adds r6, 0x1
|
|
adds r7, 0x1
|
|
ldr r2, [sp, 0x18]
|
|
ldr r5, [sp, 0x1C]
|
|
adds r0, r2, r5
|
|
cmp r7, r0
|
|
blt _081631B6
|
|
b _08163426
|
|
.pool
|
|
_08163218:
|
|
ldr r7, [sp, 0x18]
|
|
adds r0, r7, 0x3
|
|
cmp r7, r0
|
|
blt _08163222
|
|
b _08163426
|
|
_08163222:
|
|
ldr r6, =gSaveBlock2Ptr
|
|
lsls r0, r5, 4
|
|
adds r0, r5
|
|
lsls r0, 2
|
|
ldr r1, =0xffff969c
|
|
adds r5, r0, r1
|
|
movs r4, 0
|
|
_08163230:
|
|
movs r0, 0x64
|
|
muls r0, r7
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldr r1, [r6]
|
|
adds r1, r5
|
|
lsrs r2, r4, 24
|
|
bl CreateApprenticeMon
|
|
movs r2, 0x80
|
|
lsls r2, 17
|
|
adds r4, r2
|
|
adds r7, 0x1
|
|
ldr r0, [sp, 0x18]
|
|
adds r0, 0x3
|
|
cmp r7, r0
|
|
blt _08163230
|
|
b _08163426
|
|
.pool
|
|
_08163260:
|
|
ldr r0, [sp, 0x28]
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x28]
|
|
lsls r0, 1
|
|
ldr r5, [sp, 0x2C]
|
|
adds r0, r5
|
|
ldrh r1, [r0]
|
|
ldr r0, =0x0000ffff
|
|
cmp r1, r0
|
|
bne _08163260
|
|
_08163278:
|
|
movs r7, 0
|
|
bl Random
|
|
adds r4, r0, 0
|
|
bl Random
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r0, 16
|
|
orrs r4, r0
|
|
str r4, [sp, 0x30]
|
|
ldr r6, [sp, 0x1C]
|
|
cmp r7, r6
|
|
bne _08163296
|
|
b _08163426
|
|
_08163296:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r1, [sp, 0x28]
|
|
bl __modsi3
|
|
lsls r0, 1
|
|
ldr r1, [sp, 0x2C]
|
|
adds r0, r1
|
|
ldrh r4, [r0]
|
|
ldr r2, [sp, 0x20]
|
|
cmp r2, 0x32
|
|
beq _081632B6
|
|
cmp r2, 0x14
|
|
bne _081632BE
|
|
_081632B6:
|
|
ldr r0, =0x00000351
|
|
cmp r4, r0
|
|
bls _081632BE
|
|
b _0816341E
|
|
_081632BE:
|
|
movs r6, 0
|
|
ldr r5, [sp, 0x18]
|
|
adds r5, r7
|
|
mov r8, r5
|
|
b _081632D2
|
|
.pool
|
|
_081632D0:
|
|
adds r6, 0x1
|
|
_081632D2:
|
|
cmp r6, r8
|
|
bge _081632F6
|
|
movs r1, 0x64
|
|
adds r0, r6, 0
|
|
muls r0, r1
|
|
ldr r2, =gEnemyParty
|
|
adds r0, r2
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
ldr r1, =gFacilityTrainerMons
|
|
ldr r2, [r1]
|
|
lsls r1, r4, 4
|
|
adds r1, r2
|
|
ldrh r1, [r1]
|
|
cmp r0, r1
|
|
bne _081632D0
|
|
_081632F6:
|
|
cmp r6, r8
|
|
beq _081632FC
|
|
b _0816341E
|
|
_081632FC:
|
|
movs r6, 0
|
|
cmp r6, r8
|
|
bge _08163346
|
|
ldr r5, =gBattleFrontierHeldItems
|
|
mov r9, r5
|
|
movs r3, 0
|
|
_08163308:
|
|
ldr r0, =gEnemyParty
|
|
adds r5, r3, r0
|
|
adds r0, r5, 0
|
|
movs r1, 0xC
|
|
movs r2, 0
|
|
str r3, [sp, 0x38]
|
|
bl GetMonData
|
|
ldr r3, [sp, 0x38]
|
|
cmp r0, 0
|
|
beq _0816333E
|
|
adds r0, r5, 0
|
|
movs r1, 0xC
|
|
movs r2, 0
|
|
bl GetMonData
|
|
ldr r1, =gFacilityTrainerMons
|
|
ldr r2, [r1]
|
|
lsls r1, r4, 4
|
|
adds r1, r2
|
|
ldrb r1, [r1, 0xA]
|
|
lsls r1, 1
|
|
add r1, r9
|
|
ldr r3, [sp, 0x38]
|
|
ldrh r1, [r1]
|
|
cmp r0, r1
|
|
beq _08163346
|
|
_0816333E:
|
|
adds r3, 0x64
|
|
adds r6, 0x1
|
|
cmp r6, r8
|
|
blt _08163308
|
|
_08163346:
|
|
cmp r6, r8
|
|
bne _0816341E
|
|
movs r6, 0
|
|
cmp r6, r7
|
|
bge _08163368
|
|
add r0, sp, 0xC
|
|
ldrh r0, [r0]
|
|
cmp r0, r4
|
|
beq _08163368
|
|
add r1, sp, 0xC
|
|
_0816335A:
|
|
adds r1, 0x2
|
|
adds r6, 0x1
|
|
cmp r6, r7
|
|
bge _08163368
|
|
ldrh r0, [r1]
|
|
cmp r0, r4
|
|
bne _0816335A
|
|
_08163368:
|
|
cmp r6, r7
|
|
bne _0816341E
|
|
lsls r0, r7, 1
|
|
add r0, sp
|
|
adds r0, 0xC
|
|
strh r4, [r0]
|
|
movs r1, 0x64
|
|
mov r0, r8
|
|
muls r0, r1
|
|
ldr r2, =gEnemyParty
|
|
adds r0, r2
|
|
ldr r5, =gFacilityTrainerMons
|
|
ldr r2, [r5]
|
|
lsls r4, 4
|
|
adds r2, r4, r2
|
|
ldrh r1, [r2]
|
|
ldrb r3, [r2, 0xC]
|
|
ldr r6, [sp, 0x24]
|
|
str r6, [sp]
|
|
ldrb r2, [r2, 0xB]
|
|
str r2, [sp, 0x4]
|
|
ldr r2, [sp, 0x30]
|
|
str r2, [sp, 0x8]
|
|
ldr r2, [sp, 0x20]
|
|
bl CreateMonWithEVSpreadPersonalityOTID
|
|
movs r0, 0xFF
|
|
mov r6, sp
|
|
strb r0, [r6, 0x14]
|
|
movs r6, 0
|
|
adds r0, r7, 0x1
|
|
str r0, [sp, 0x34]
|
|
mov r9, r4
|
|
movs r0, 0x64
|
|
mov r3, r8
|
|
muls r3, r0
|
|
mov r1, r9
|
|
str r1, [sp, 0x3C]
|
|
ldr r2, =gEnemyParty
|
|
mov r10, r2
|
|
_081633B8:
|
|
ldr r0, [r5]
|
|
ldr r7, [sp, 0x3C]
|
|
adds r0, r7, r0
|
|
lsls r4, r6, 1
|
|
adds r0, 0x2
|
|
adds r0, r4
|
|
ldrh r1, [r0]
|
|
lsls r2, r6, 24
|
|
lsrs r2, 24
|
|
mov r7, r10
|
|
adds r0, r3, r7
|
|
str r3, [sp, 0x38]
|
|
bl SetMonMoveSlot
|
|
ldr r0, [r5]
|
|
ldr r1, [sp, 0x3C]
|
|
adds r0, r1, r0
|
|
adds r0, 0x2
|
|
adds r0, r4
|
|
ldrh r0, [r0]
|
|
ldr r3, [sp, 0x38]
|
|
cmp r0, 0xDA
|
|
bne _081633EC
|
|
movs r0, 0
|
|
mov r2, sp
|
|
strb r0, [r2, 0x14]
|
|
_081633EC:
|
|
adds r6, 0x1
|
|
cmp r6, 0x3
|
|
ble _081633B8
|
|
movs r5, 0x64
|
|
mov r4, r8
|
|
muls r4, r5
|
|
ldr r6, =gEnemyParty
|
|
adds r4, r6
|
|
adds r0, r4, 0
|
|
movs r1, 0x20
|
|
add r2, sp, 0x14
|
|
bl SetMonData
|
|
ldr r0, =gFacilityTrainerMons
|
|
ldr r0, [r0]
|
|
add r0, r9
|
|
ldrb r2, [r0, 0xA]
|
|
lsls r2, 1
|
|
ldr r0, =gBattleFrontierHeldItems
|
|
adds r2, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0xC
|
|
bl SetMonData
|
|
ldr r7, [sp, 0x34]
|
|
_0816341E:
|
|
ldr r0, [sp, 0x1C]
|
|
cmp r7, r0
|
|
beq _08163426
|
|
b _08163296
|
|
_08163426:
|
|
add sp, 0x40
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81630C4
|
|
|
|
thumb_func_start sub_8163444
|
|
sub_8163444: @ 8163444
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x18
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
str r1, [sp, 0x8]
|
|
movs r1, 0xFF
|
|
add r0, sp, 0x4
|
|
strb r1, [r0]
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r2, [r0]
|
|
movs r0, 0xDC
|
|
adds r0, r2
|
|
mov r10, r0
|
|
ldrb r0, [r0, 0x1]
|
|
movs r1, 0x9
|
|
str r1, [sp, 0x10]
|
|
cmp r0, 0x4
|
|
bhi _08163474
|
|
movs r0, 0x6
|
|
str r0, [sp, 0x10]
|
|
_08163474:
|
|
ldr r1, =0x00000ca9
|
|
adds r0, r2, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
movs r1, 0x32
|
|
str r1, [sp, 0xC]
|
|
cmp r0, 0
|
|
beq _0816348A
|
|
movs r0, 0x64
|
|
str r0, [sp, 0xC]
|
|
_0816348A:
|
|
movs r7, 0
|
|
adds r2, 0xE2
|
|
str r2, [sp, 0x14]
|
|
add r1, sp, 0x4
|
|
mov r9, r1
|
|
_08163494:
|
|
ldr r2, [sp, 0x8]
|
|
adds r6, r2, r7
|
|
movs r0, 0x64
|
|
muls r0, r6
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
lsls r5, r7, 1
|
|
adds r4, r5, r7
|
|
lsls r4, 2
|
|
mov r2, r10
|
|
adds r1, r2, r4
|
|
ldrh r1, [r1, 0x4]
|
|
movs r2, 0x8
|
|
str r2, [sp]
|
|
ldr r2, [sp, 0xC]
|
|
ldr r3, [sp, 0x10]
|
|
bl CreateMonWithEVSpread
|
|
movs r0, 0xFF
|
|
mov r1, r9
|
|
strb r0, [r1]
|
|
adds r2, r7, 0x1
|
|
mov r8, r2
|
|
movs r1, 0x3
|
|
_081634C4:
|
|
ldr r2, [sp, 0x14]
|
|
adds r0, r2, r4
|
|
ldrh r0, [r0]
|
|
cmp r0, 0xDA
|
|
bne _081634D4
|
|
movs r2, 0
|
|
mov r0, r9
|
|
strb r2, [r0]
|
|
_081634D4:
|
|
adds r4, 0x2
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bge _081634C4
|
|
movs r0, 0x64
|
|
adds r4, r6, 0
|
|
muls r4, r0
|
|
ldr r0, =gEnemyParty
|
|
adds r4, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x20
|
|
add r2, sp, 0x4
|
|
bl SetMonData
|
|
adds r2, r5, r7
|
|
lsls r2, 2
|
|
add r2, r10
|
|
adds r2, 0xE
|
|
adds r0, r4, 0
|
|
movs r1, 0xC
|
|
bl SetMonData
|
|
mov r7, r8
|
|
cmp r7, 0x3
|
|
bne _08163494
|
|
add sp, 0x18
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8163444
|
|
|
|
thumb_func_start RandomizeFacilityTrainerMonId
|
|
RandomizeFacilityTrainerMonId: @ 8163524
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
bl GetFacilityEnemyMonLevel
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r0, =gFacilityTrainers
|
|
ldr r1, [r0]
|
|
movs r0, 0x34
|
|
muls r0, r4
|
|
adds r0, r1
|
|
ldr r5, [r0, 0x30]
|
|
movs r4, 0
|
|
ldrh r1, [r5]
|
|
b _08163558
|
|
.pool
|
|
_0816354C:
|
|
adds r0, r4, 0x1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r4, 1
|
|
adds r0, r5
|
|
ldrh r1, [r0]
|
|
_08163558:
|
|
ldr r0, =0x0000ffff
|
|
cmp r1, r0
|
|
bne _0816354C
|
|
_0816355E:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
adds r1, r4, 0
|
|
bl __modsi3
|
|
lsls r0, 1
|
|
adds r0, r5
|
|
ldrh r1, [r0]
|
|
cmp r6, 0x32
|
|
beq _0816357A
|
|
cmp r6, 0x14
|
|
bne _08163580
|
|
_0816357A:
|
|
ldr r0, =0x00000351
|
|
cmp r1, r0
|
|
bhi _0816355E
|
|
_08163580:
|
|
adds r0, r1, 0
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end RandomizeFacilityTrainerMonId
|
|
|
|
thumb_func_start sub_8163590
|
|
sub_8163590: @ 8163590
|
|
push {lr}
|
|
bl ZeroEnemyPartyMons
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0x00000ca9
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
beq _081635C0
|
|
ldr r0, =gTrainerBattleOpponent_A
|
|
ldrh r0, [r0]
|
|
movs r1, 0
|
|
bl sub_81635D4
|
|
b _081635CA
|
|
.pool
|
|
_081635C0:
|
|
ldr r0, =gTrainerBattleOpponent_A
|
|
ldrh r0, [r0]
|
|
movs r1, 0
|
|
bl sub_816379C
|
|
_081635CA:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8163590
|
|
|
|
thumb_func_start sub_81635D4
|
|
sub_81635D4: @ 81635D4
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x20
|
|
lsls r0, 16
|
|
lsrs r2, r0, 16
|
|
adds r3, r2, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
str r1, [sp, 0x10]
|
|
ldr r0, =0x0000012b
|
|
cmp r2, r0
|
|
bhi _0816364A
|
|
ldr r4, =gSaveBlock2Ptr
|
|
ldr r0, =0x000040ce
|
|
bl VarGet
|
|
lsls r0, 24
|
|
ldr r4, [r4]
|
|
lsrs r0, 22
|
|
movs r2, 0xCE
|
|
lsls r2, 4
|
|
adds r1, r4, r2
|
|
adds r1, r0
|
|
ldrh r0, [r1]
|
|
movs r1, 0x7
|
|
bl __udivsi3
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
ldr r3, =0x00000cb2
|
|
adds r4, r3
|
|
ldrh r0, [r4]
|
|
cmp r0, 0x5
|
|
bhi _0816363C
|
|
adds r0, r1, 0
|
|
movs r1, 0
|
|
bl sub_81A6CA8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
b _081636A6
|
|
.pool
|
|
_0816363C:
|
|
adds r0, r1, 0
|
|
movs r1, 0x1
|
|
bl sub_81A6CA8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
b _081636A6
|
|
_0816364A:
|
|
movs r0, 0xFA
|
|
lsls r0, 1
|
|
cmp r2, r0
|
|
bne _08163694
|
|
ldr r7, [sp, 0x10]
|
|
adds r0, r7, 0x3
|
|
cmp r7, r0
|
|
blt _0816365C
|
|
b _08163776
|
|
_0816365C:
|
|
ldr r4, =gSaveBlock2Ptr
|
|
_0816365E:
|
|
movs r0, 0x64
|
|
muls r0, r7
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldr r1, [sp, 0x10]
|
|
subs r2, r7, r1
|
|
movs r1, 0x2C
|
|
muls r2, r1
|
|
movs r3, 0xC2
|
|
lsls r3, 4
|
|
adds r2, r3
|
|
ldr r1, [r4]
|
|
adds r1, r2
|
|
bl sub_806819C
|
|
adds r0, r7, 0x1
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r0, [sp, 0x10]
|
|
adds r0, 0x3
|
|
cmp r7, r0
|
|
blt _0816365E
|
|
b _08163776
|
|
.pool
|
|
_08163694:
|
|
ldr r0, =0x000003fe
|
|
cmp r3, r0
|
|
bne _081636A4
|
|
bl sub_81A6CD0
|
|
b _08163776
|
|
.pool
|
|
_081636A4:
|
|
movs r0, 0x1F
|
|
_081636A6:
|
|
str r0, [sp, 0x18]
|
|
bl GetFacilityEnemyMonLevel
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x14]
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
ldrb r2, [r1, 0xA]
|
|
ldrb r0, [r1, 0xB]
|
|
lsls r0, 8
|
|
orrs r2, r0
|
|
ldrb r0, [r1, 0xC]
|
|
lsls r0, 16
|
|
orrs r2, r0
|
|
ldrb r0, [r1, 0xD]
|
|
lsls r0, 24
|
|
orrs r2, r0
|
|
mov r8, r2
|
|
movs r7, 0
|
|
_081636CE:
|
|
ldr r1, =gUnknown_03006298
|
|
lsls r0, r7, 1
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
mov r9, r0
|
|
ldr r3, [sp, 0x10]
|
|
adds r5, r3, r7
|
|
movs r0, 0x64
|
|
adds r6, r5, 0
|
|
muls r6, r0
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r6, r1
|
|
ldr r3, =gFacilityTrainerMons
|
|
ldr r2, [r3]
|
|
mov r1, r9
|
|
lsls r4, r1, 4
|
|
adds r2, r4, r2
|
|
ldrh r1, [r2]
|
|
ldrb r3, [r2, 0xC]
|
|
mov r10, r3
|
|
ldr r3, [sp, 0x18]
|
|
str r3, [sp]
|
|
ldrb r2, [r2, 0xB]
|
|
str r2, [sp, 0x4]
|
|
mov r2, r8
|
|
str r2, [sp, 0x8]
|
|
ldr r2, [sp, 0x14]
|
|
mov r3, r10
|
|
bl CreateMonWithEVSpreadPersonalityOTID
|
|
movs r1, 0
|
|
add r0, sp, 0xC
|
|
strb r1, [r0]
|
|
movs r3, 0
|
|
adds r7, 0x1
|
|
mov r10, r7
|
|
adds r7, r4, 0
|
|
_08163718:
|
|
ldr r0, =gFacilityTrainerMons
|
|
ldr r1, [r0]
|
|
mov r2, r9
|
|
lsls r0, r2, 4
|
|
adds r0, r1
|
|
lsls r1, r3, 1
|
|
adds r0, 0x2
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
ldr r2, =gEnemyParty
|
|
adds r0, r6, r2
|
|
adds r2, r3, 0
|
|
str r3, [sp, 0x1C]
|
|
bl SetMonMoveAvoidReturn
|
|
ldr r3, [sp, 0x1C]
|
|
adds r0, r3, 0x1
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
cmp r3, 0x3
|
|
bls _08163718
|
|
movs r3, 0x64
|
|
adds r4, r5, 0
|
|
muls r4, r3
|
|
ldr r0, =gEnemyParty
|
|
adds r4, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x20
|
|
add r2, sp, 0xC
|
|
bl SetMonData
|
|
ldr r1, =gFacilityTrainerMons
|
|
ldr r0, [r1]
|
|
adds r0, r7, r0
|
|
ldrb r2, [r0, 0xA]
|
|
lsls r2, 1
|
|
ldr r0, =gBattleFrontierHeldItems
|
|
adds r2, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0xC
|
|
bl SetMonData
|
|
mov r2, r10
|
|
lsls r0, r2, 24
|
|
lsrs r7, r0, 24
|
|
cmp r7, 0x2
|
|
bls _081636CE
|
|
_08163776:
|
|
add sp, 0x20
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81635D4
|
|
|
|
thumb_func_start sub_816379C
|
|
sub_816379C: @ 816379C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x18
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
str r1, [sp, 0x10]
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
ldrb r0, [r1, 0xA]
|
|
mov r9, r0
|
|
ldrb r0, [r1, 0xB]
|
|
lsls r0, 8
|
|
mov r2, r9
|
|
orrs r2, r0
|
|
ldrb r0, [r1, 0xC]
|
|
lsls r0, 16
|
|
orrs r2, r0
|
|
ldrb r0, [r1, 0xD]
|
|
lsls r0, 24
|
|
orrs r2, r0
|
|
mov r9, r2
|
|
movs r7, 0
|
|
mov r8, r7
|
|
_081637D0:
|
|
ldr r1, =gUnknown_03006298
|
|
mov r2, r8
|
|
lsls r0, r2, 1
|
|
adds r0, r1
|
|
ldrh r4, [r0]
|
|
ldr r5, [sp, 0x10]
|
|
add r5, r8
|
|
movs r7, 0x64
|
|
adds r6, r5, 0
|
|
muls r6, r7
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r6, r1
|
|
ldr r7, =gFacilityTrainerMons
|
|
ldr r2, [r7]
|
|
lsls r4, 4
|
|
adds r2, r4, r2
|
|
ldrh r1, [r2]
|
|
ldrb r3, [r2, 0xC]
|
|
movs r7, 0
|
|
str r7, [sp]
|
|
ldrb r2, [r2, 0xB]
|
|
str r2, [sp, 0x4]
|
|
mov r2, r9
|
|
str r2, [sp, 0x8]
|
|
movs r2, 0x1E
|
|
bl CreateMonWithEVSpreadPersonalityOTID
|
|
movs r1, 0
|
|
add r0, sp, 0xC
|
|
strb r1, [r0]
|
|
mov r10, r5
|
|
mov r0, r8
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x14]
|
|
mov r8, r4
|
|
mov r5, r8
|
|
_08163818:
|
|
ldr r1, =gFacilityTrainerMons
|
|
ldr r0, [r1]
|
|
adds r0, r5, r0
|
|
lsls r4, r7, 1
|
|
adds r0, 0x2
|
|
adds r0, r4
|
|
ldrh r1, [r0]
|
|
ldr r2, =gEnemyParty
|
|
adds r0, r6, r2
|
|
adds r2, r7, 0
|
|
bl SetMonMoveAvoidReturn
|
|
ldr r1, =gFacilityTrainerMons
|
|
ldr r0, [r1]
|
|
adds r0, r5, r0
|
|
adds r0, 0x2
|
|
adds r0, r4
|
|
ldrh r0, [r0]
|
|
cmp r0, 0xDA
|
|
bne _08163846
|
|
movs r1, 0
|
|
add r0, sp, 0xC
|
|
strb r1, [r0]
|
|
_08163846:
|
|
adds r0, r7, 0x1
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
cmp r7, 0x3
|
|
bls _08163818
|
|
movs r2, 0x64
|
|
mov r4, r10
|
|
muls r4, r2
|
|
ldr r7, =gEnemyParty
|
|
adds r4, r7
|
|
adds r0, r4, 0
|
|
movs r1, 0x20
|
|
add r2, sp, 0xC
|
|
bl SetMonData
|
|
ldr r1, =gFacilityTrainerMons
|
|
ldr r0, [r1]
|
|
add r0, r8
|
|
ldrb r2, [r0, 0xA]
|
|
lsls r2, 1
|
|
ldr r0, =gBattleFrontierHeldItems
|
|
adds r2, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0xC
|
|
bl SetMonData
|
|
ldr r2, [sp, 0x14]
|
|
lsls r0, r2, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
cmp r0, 0x2
|
|
bls _081637D0
|
|
add sp, 0x18
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_816379C
|
|
|
|
thumb_func_start ConvertBattleFrontierTrainerSpeechToString
|
|
ConvertBattleFrontierTrainerSpeechToString: @ 81638AC
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, =gStringVar4
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
movs r2, 0x3
|
|
movs r3, 0x2
|
|
bl ConvertEasyChatWordsToString
|
|
movs r2, 0x1
|
|
negs r2, r2
|
|
movs r0, 0x1
|
|
adds r1, r4, 0
|
|
bl GetStringWidth
|
|
cmp r0, 0xCC
|
|
bls _0816390A
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
movs r2, 0x2
|
|
movs r3, 0x3
|
|
bl ConvertEasyChatWordsToString
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
cmp r0, 0xFE
|
|
beq _081638EE
|
|
adds r2, r4, 0
|
|
_081638E4:
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
adds r1, 0x1
|
|
cmp r0, 0xFE
|
|
bne _081638E4
|
|
_081638EE:
|
|
ldr r2, =gStringVar4
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
adds r3, r2, 0
|
|
cmp r0, 0xFE
|
|
beq _08163904
|
|
_081638FA:
|
|
adds r1, 0x1
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0xFE
|
|
bne _081638FA
|
|
_08163904:
|
|
adds r1, r3
|
|
movs r0, 0xFA
|
|
strb r0, [r1]
|
|
_0816390A:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end ConvertBattleFrontierTrainerSpeechToString
|
|
|
|
thumb_func_start sub_8163914
|
|
sub_8163914: @ 8163914
|
|
push {lr}
|
|
bl GetFacilityEnemyMonLevel
|
|
ldr r0, =gSpecialVar_0x8005
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
beq _08163930
|
|
ldr r0, =gTrainerBattleOpponent_B
|
|
b _08163932
|
|
.pool
|
|
_08163930:
|
|
ldr r0, =gTrainerBattleOpponent_A
|
|
_08163932:
|
|
ldrh r3, [r0]
|
|
movs r0, 0xFA
|
|
lsls r0, 1
|
|
cmp r3, r0
|
|
bne _08163950
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0x00000bfc
|
|
b _08163986
|
|
.pool
|
|
_08163950:
|
|
ldr r0, =0x0000012b
|
|
cmp r3, r0
|
|
bhi _08163974
|
|
ldr r2, =gFacilityTrainers
|
|
movs r0, 0x34
|
|
adds r1, r3, 0
|
|
muls r1, r0
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
adds r0, 0xC
|
|
bl ConvertBattleFrontierTrainerSpeechToString
|
|
b _081639A8
|
|
.pool
|
|
_08163974:
|
|
ldr r0, =0x0000018f
|
|
cmp r3, r0
|
|
bhi _0816399C
|
|
ldr r1, =gSaveBlock2Ptr
|
|
movs r0, 0xEC
|
|
muls r0, r3
|
|
ldr r1, [r1]
|
|
adds r0, r1
|
|
ldr r1, =0xfffef2b8
|
|
_08163986:
|
|
adds r0, r1
|
|
bl ConvertBattleFrontierTrainerSpeechToString
|
|
b _081639A8
|
|
.pool
|
|
_0816399C:
|
|
adds r0, r3, 0
|
|
adds r0, 0x70
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl CopyFriendsApprenticeChallengeText
|
|
_081639A8:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8163914
|
|
|
|
thumb_func_start sub_81639AC
|
|
sub_81639AC: @ 81639AC
|
|
push {r4-r6,lr}
|
|
sub sp, 0x4
|
|
bl sub_81864CC
|
|
ldr r0, =gBattleScripting
|
|
adds r0, 0x26
|
|
ldrb r0, [r0]
|
|
cmp r0, 0xA
|
|
bhi _08163A78
|
|
lsls r0, 2
|
|
ldr r1, =_081639D0
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_081639D0:
|
|
.4byte _081639FC
|
|
.4byte _08163A38
|
|
.4byte _08163A74
|
|
.4byte _081639FC
|
|
.4byte _081639FC
|
|
.4byte _081639FC
|
|
.4byte _081639FC
|
|
.4byte _081639FC
|
|
.4byte _08163A78
|
|
.4byte _081639FC
|
|
.4byte _081639FC
|
|
_081639FC:
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r2, =0x00000ebc
|
|
adds r1, r0, r2
|
|
ldr r2, [r1]
|
|
ldr r0, =0x00fffffe
|
|
cmp r2, r0
|
|
bhi _08163A2C
|
|
adds r0, r2, 0x1
|
|
str r0, [r1]
|
|
movs r1, 0x14
|
|
bl __umodsi3
|
|
cmp r0, 0
|
|
bne _08163A78
|
|
bl UpdateGymLeaderRematch
|
|
b _08163A78
|
|
.pool
|
|
_08163A2C:
|
|
ldr r0, =0x00ffffff
|
|
str r0, [r1]
|
|
b _08163A78
|
|
.pool
|
|
_08163A38:
|
|
movs r5, 0
|
|
ldr r6, =gSaveBlock1Ptr
|
|
_08163A3C:
|
|
movs r0, 0x64
|
|
adds r4, r5, 0
|
|
muls r4, r0
|
|
movs r0, 0x8E
|
|
lsls r0, 2
|
|
adds r1, r4, r0
|
|
ldr r0, [r6]
|
|
adds r0, r1
|
|
movs r1, 0xC
|
|
bl GetMonData
|
|
mov r1, sp
|
|
strh r0, [r1]
|
|
ldr r0, =gPlayerParty
|
|
adds r4, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0xC
|
|
mov r2, sp
|
|
bl SetMonData
|
|
adds r5, 0x1
|
|
cmp r5, 0x5
|
|
ble _08163A3C
|
|
b _08163A78
|
|
.pool
|
|
_08163A74:
|
|
bl sub_816537C
|
|
_08163A78:
|
|
ldr r0, =CB2_ReturnToFieldContinueScriptPlayMapMusic
|
|
bl SetMainCallback2
|
|
add sp, 0x4
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81639AC
|
|
|
|
thumb_func_start sub_8163A8C
|
|
sub_8163A8C: @ 8163A8C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl IsBattleTransitionDone
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08163AB0
|
|
ldr r0, =gMain
|
|
ldr r1, =sub_81639AC
|
|
str r1, [r0, 0x8]
|
|
ldr r0, =CB2_InitBattle
|
|
bl SetMainCallback2
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
_08163AB0:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8163A8C
|
|
|
|
thumb_func_start sub_8163AC4
|
|
sub_8163AC4: @ 8163AC4
|
|
push {r4-r6,lr}
|
|
sub sp, 0x4
|
|
ldr r0, =gBattleScripting
|
|
ldr r2, =gSpecialVar_0x8004
|
|
ldrh r1, [r2]
|
|
adds r0, 0x26
|
|
strb r1, [r0]
|
|
ldrh r0, [r2]
|
|
cmp r0, 0xA
|
|
bls _08163ADA
|
|
b _08163E68
|
|
_08163ADA:
|
|
lsls r0, 2
|
|
ldr r1, =_08163AF0
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_08163AF0:
|
|
.4byte _08163B1C
|
|
.4byte _08163BC0
|
|
.4byte _08163C10
|
|
.4byte _08163C70
|
|
.4byte _08163CC4
|
|
.4byte _08163D28
|
|
.4byte _08163D74
|
|
.4byte _08163DB4
|
|
.4byte _08163E2C
|
|
.4byte _08163DF4
|
|
.4byte _08163DC8
|
|
_08163B1C:
|
|
ldr r5, =gBattleTypeFlags
|
|
movs r0, 0x84
|
|
lsls r0, 1
|
|
str r0, [r5]
|
|
ldr r0, =0x000040ce
|
|
bl VarGet
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
cmp r4, 0x1
|
|
beq _08163B56
|
|
cmp r4, 0x1
|
|
bgt _08163B44
|
|
cmp r4, 0
|
|
beq _08163B4E
|
|
b _08163BA6
|
|
.pool
|
|
_08163B44:
|
|
cmp r4, 0x2
|
|
beq _08163B64
|
|
cmp r4, 0x3
|
|
beq _08163B98
|
|
b _08163BA6
|
|
_08163B4E:
|
|
movs r0, 0x3
|
|
bl sub_8163048
|
|
b _08163BA6
|
|
_08163B56:
|
|
movs r0, 0x4
|
|
bl sub_8163048
|
|
ldr r0, [r5]
|
|
orrs r0, r4
|
|
str r0, [r5]
|
|
b _08163BA6
|
|
_08163B64:
|
|
movs r0, 0x2
|
|
bl sub_816306C
|
|
ldr r1, =gPartnerTrainerId
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r2, =0x00000cd6
|
|
adds r0, r2
|
|
ldrh r0, [r0]
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
bl sub_8165404
|
|
ldr r0, [r5]
|
|
ldr r1, =0x00408041
|
|
orrs r0, r1
|
|
str r0, [r5]
|
|
b _08163BA6
|
|
.pool
|
|
_08163B98:
|
|
ldr r0, [r5]
|
|
ldr r1, =0x00800043
|
|
orrs r0, r1
|
|
str r0, [r5]
|
|
movs r0, 0x2
|
|
bl sub_816306C
|
|
_08163BA6:
|
|
ldr r0, =sub_8163A8C
|
|
movs r1, 0x1
|
|
bl CreateTask
|
|
movs r0, 0
|
|
bl PlayMapChosenOrBattleBGM
|
|
movs r0, 0
|
|
b _08163E10
|
|
.pool
|
|
_08163BC0:
|
|
movs r5, 0
|
|
ldr r6, =gSaveBlock1Ptr
|
|
_08163BC4:
|
|
movs r0, 0x64
|
|
adds r4, r5, 0
|
|
muls r4, r0
|
|
ldr r0, =gPlayerParty
|
|
adds r0, r4, r0
|
|
movs r1, 0xC
|
|
bl GetMonData
|
|
mov r1, sp
|
|
strh r0, [r1]
|
|
movs r0, 0x8E
|
|
lsls r0, 2
|
|
adds r4, r0
|
|
ldr r0, [r6]
|
|
adds r0, r4
|
|
movs r1, 0xC
|
|
mov r2, sp
|
|
bl SetMonData
|
|
adds r5, 0x1
|
|
cmp r5, 0x5
|
|
ble _08163BC4
|
|
ldr r0, =sub_8163A8C
|
|
movs r1, 0x1
|
|
bl CreateTask
|
|
movs r0, 0
|
|
bl PlayMapChosenOrBattleBGM
|
|
movs r0, 0xC
|
|
b _08163E10
|
|
.pool
|
|
_08163C10:
|
|
bl ZeroEnemyPartyMons
|
|
movs r5, 0
|
|
ldr r4, =gSaveBlock2Ptr
|
|
_08163C18:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x2C
|
|
adds r2, r5, 0
|
|
muls r2, r1
|
|
movs r1, 0xC2
|
|
lsls r1, 4
|
|
adds r2, r1
|
|
ldr r1, [r4]
|
|
adds r1, r2
|
|
bl sub_806819C
|
|
adds r5, 0x1
|
|
cmp r5, 0x2
|
|
ble _08163C18
|
|
ldr r1, =gBattleTypeFlags
|
|
ldr r0, =0x00000808
|
|
str r0, [r1]
|
|
ldr r1, =gTrainerBattleOpponent_A
|
|
movs r0, 0
|
|
strh r0, [r1]
|
|
ldr r0, =sub_8163A8C
|
|
movs r1, 0x1
|
|
bl CreateTask
|
|
movs r0, 0
|
|
bl PlayMapChosenOrBattleBGM
|
|
movs r0, 0xD
|
|
b _08163E10
|
|
.pool
|
|
_08163C70:
|
|
ldr r4, =gBattleTypeFlags
|
|
ldr r0, =0x00010008
|
|
str r0, [r4]
|
|
ldr r0, =0x000040ce
|
|
bl VarGet
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
cmp r1, 0x1
|
|
bne _08163C8A
|
|
ldr r0, [r4]
|
|
orrs r0, r1
|
|
str r0, [r4]
|
|
_08163C8A:
|
|
ldr r0, =gTrainerBattleOpponent_A
|
|
ldrh r1, [r0]
|
|
ldr r0, =0x000003fe
|
|
cmp r1, r0
|
|
bne _08163C9A
|
|
movs r0, 0x2
|
|
bl sub_8163048
|
|
_08163C9A:
|
|
ldr r0, =sub_8163A8C
|
|
movs r1, 0x1
|
|
bl CreateTask
|
|
movs r0, 0
|
|
bl sub_806E694
|
|
movs r0, 0x3
|
|
b _08163E10
|
|
.pool
|
|
_08163CC4:
|
|
ldr r4, =gBattleTypeFlags
|
|
ldr r0, =0x00020008
|
|
str r0, [r4]
|
|
ldr r0, =0x000040ce
|
|
bl VarGet
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
cmp r1, 0x1
|
|
bne _08163CDE
|
|
ldr r0, [r4]
|
|
orrs r0, r1
|
|
str r0, [r4]
|
|
_08163CDE:
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r2, =0x00000ca9
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
beq _08163D0C
|
|
movs r0, 0x3
|
|
bl sub_8163048
|
|
b _08163D12
|
|
.pool
|
|
_08163D0C:
|
|
movs r0, 0x3
|
|
bl sub_81630A0
|
|
_08163D12:
|
|
ldr r0, =sub_8163A8C
|
|
movs r1, 0x1
|
|
bl CreateTask
|
|
movs r0, 0
|
|
bl PlayMapChosenOrBattleBGM
|
|
movs r0, 0x4
|
|
b _08163E10
|
|
.pool
|
|
_08163D28:
|
|
ldr r1, =gBattleTypeFlags
|
|
ldr r0, =0x00040008
|
|
str r0, [r1]
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0x00000ca9
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
beq _08163D58
|
|
movs r0, 0x3
|
|
bl sub_8163048
|
|
b _08163D5E
|
|
.pool
|
|
_08163D58:
|
|
movs r0, 0x3
|
|
bl sub_81630A0
|
|
_08163D5E:
|
|
ldr r0, =sub_8163A8C
|
|
movs r1, 0x1
|
|
bl CreateTask
|
|
movs r0, 0
|
|
bl PlayMapChosenOrBattleBGM
|
|
movs r0, 0x5
|
|
b _08163E10
|
|
.pool
|
|
_08163D74:
|
|
ldr r4, =gBattleTypeFlags
|
|
ldr r0, =0x00080008
|
|
str r0, [r4]
|
|
ldr r0, =0x000040ce
|
|
bl VarGet
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
cmp r1, 0x1
|
|
bne _08163D8E
|
|
ldr r0, [r4]
|
|
orrs r0, r1
|
|
str r0, [r4]
|
|
_08163D8E:
|
|
bl sub_8163590
|
|
ldr r0, =sub_8163A8C
|
|
movs r1, 0x1
|
|
bl CreateTask
|
|
movs r0, 0
|
|
bl PlayMapChosenOrBattleBGM
|
|
movs r0, 0x6
|
|
b _08163E10
|
|
.pool
|
|
_08163DB4:
|
|
ldr r1, =gBattleTypeFlags
|
|
movs r0, 0x84
|
|
lsls r0, 1
|
|
str r0, [r1]
|
|
movs r0, 0x3
|
|
bl sub_8163048
|
|
b _08163E00
|
|
.pool
|
|
_08163DC8:
|
|
ldr r1, =gBattleTypeFlags
|
|
ldr r0, =0x00200008
|
|
str r0, [r1]
|
|
movs r0, 0x3
|
|
bl sub_8163048
|
|
ldr r0, =sub_8163A8C
|
|
movs r1, 0x1
|
|
bl CreateTask
|
|
movs r0, 0
|
|
bl PlayMapChosenOrBattleBGM
|
|
movs r0, 0xA
|
|
b _08163E10
|
|
.pool
|
|
_08163DF4:
|
|
ldr r1, =gBattleTypeFlags
|
|
ldr r0, =0x00008109
|
|
str r0, [r1]
|
|
movs r0, 0x1
|
|
bl sub_816306C
|
|
_08163E00:
|
|
ldr r0, =sub_8163A8C
|
|
movs r1, 0x1
|
|
bl CreateTask
|
|
movs r0, 0
|
|
bl PlayMapChosenOrBattleBGM
|
|
movs r0, 0x7
|
|
_08163E10:
|
|
bl sub_80B100C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl BattleTransition_StartOnField
|
|
b _08163E68
|
|
.pool
|
|
_08163E2C:
|
|
ldr r1, =gBattleTypeFlags
|
|
ldr r0, =0x00408049
|
|
str r0, [r1]
|
|
ldr r5, =0x00000c03
|
|
adds r0, r5, 0
|
|
bl sub_8165404
|
|
ldr r4, =gApproachingTrainerId
|
|
movs r0, 0
|
|
strb r0, [r4]
|
|
ldr r0, =MossdeepCity_SpaceCenter_2F_EventScript_224157 + 1
|
|
bl BattleSetup_ConfigureTrainerBattle
|
|
movs r0, 0x1
|
|
strb r0, [r4]
|
|
ldr r0, =MossdeepCity_SpaceCenter_2F_EventScript_224166 + 1
|
|
bl BattleSetup_ConfigureTrainerBattle
|
|
ldr r0, =gPartnerTrainerId
|
|
strh r5, [r0]
|
|
ldr r0, =sub_8163A8C
|
|
movs r1, 0x1
|
|
bl CreateTask
|
|
movs r0, 0
|
|
bl PlayMapChosenOrBattleBGM
|
|
movs r0, 0x12
|
|
bl BattleTransition_StartOnField
|
|
_08163E68:
|
|
add sp, 0x4
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8163AC4
|
|
|
|
thumb_func_start sub_8163E90
|
|
sub_8163E90: @ 8163E90
|
|
push {r4-r6,lr}
|
|
ldr r6, =gSaveBlock2Ptr
|
|
ldr r0, [r6]
|
|
ldr r1, =0x00000ca9
|
|
adds r0, r1
|
|
ldrb r5, [r0]
|
|
lsls r5, 30
|
|
lsrs r5, 30
|
|
ldr r0, =0x000040ce
|
|
bl VarGet
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl sub_8164FCC
|
|
lsls r0, 16
|
|
lsrs r2, r0, 16
|
|
ldr r0, [r6]
|
|
lsls r5, 1
|
|
lsls r4, 2
|
|
adds r5, r4
|
|
movs r1, 0xCE
|
|
lsls r1, 4
|
|
adds r0, r1
|
|
adds r1, r0, r5
|
|
ldrh r0, [r1]
|
|
cmp r0, r2
|
|
bcs _08163ED0
|
|
strh r2, [r1]
|
|
_08163ED0:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8163E90
|
|
|
|
thumb_func_start sub_8163EE4
|
|
sub_8163EE4: @ 8163EE4
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
ldr r4, =gSaveBlock2Ptr
|
|
ldr r0, [r4]
|
|
ldr r1, =0x0000064c
|
|
adds r5, r0, r1
|
|
adds r0, r5, 0
|
|
bl sub_8164FB8
|
|
ldr r0, [r4]
|
|
ldr r2, =0x00000ca9
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
lsls r0, 30
|
|
lsrs r6, r0, 30
|
|
ldr r0, =0x000040ce
|
|
bl VarGet
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r2, [r4]
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
beq _08163F40
|
|
ldr r4, =gUnknown_085DCEFA
|
|
ldrb r0, [r2, 0xA]
|
|
ldrb r1, [r2, 0xB]
|
|
adds r0, r1
|
|
ldrb r1, [r2, 0xC]
|
|
adds r0, r1
|
|
ldrb r1, [r2, 0xD]
|
|
adds r0, r1
|
|
movs r1, 0x14
|
|
b _08163F52
|
|
.pool
|
|
_08163F40:
|
|
ldr r4, =gUnknown_085DCEDC
|
|
ldrb r0, [r2, 0xA]
|
|
ldrb r1, [r2, 0xB]
|
|
adds r0, r1
|
|
ldrb r1, [r2, 0xC]
|
|
adds r0, r1
|
|
ldrb r1, [r2, 0xD]
|
|
adds r0, r1
|
|
movs r1, 0x1E
|
|
_08163F52:
|
|
bl __umodsi3
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
strb r6, [r5]
|
|
strb r0, [r5, 0x1]
|
|
adds r0, r5, 0
|
|
adds r0, 0xC
|
|
ldr r4, =gSaveBlock2Ptr
|
|
ldr r1, [r4]
|
|
adds r1, 0xA
|
|
bl CopyUnalignedWord
|
|
adds r0, r5, 0x4
|
|
ldr r1, [r4]
|
|
bl StringCopy7
|
|
adds r0, r6, 0
|
|
adds r1, r7, 0
|
|
bl sub_8164FCC
|
|
strh r0, [r5, 0x2]
|
|
movs r4, 0
|
|
movs r2, 0x10
|
|
adds r2, r5
|
|
mov r12, r2
|
|
movs r7, 0x1C
|
|
adds r7, r5
|
|
mov r9, r7
|
|
adds r6, r5, 0
|
|
adds r6, 0x28
|
|
movs r0, 0xE4
|
|
adds r0, r5
|
|
mov r8, r0
|
|
_08163F96:
|
|
lsls r2, r4, 1
|
|
mov r1, r12
|
|
adds r3, r1, r2
|
|
ldr r0, =gSaveBlock1Ptr
|
|
ldr r1, [r0]
|
|
ldr r7, =0x00002bbc
|
|
adds r0, r1, r7
|
|
adds r0, r2
|
|
ldrh r0, [r0]
|
|
strh r0, [r3]
|
|
mov r0, r9
|
|
adds r3, r0, r2
|
|
adds r7, 0xC
|
|
adds r0, r1, r7
|
|
adds r0, r2
|
|
ldrh r0, [r0]
|
|
strh r0, [r3]
|
|
adds r3, r6, r2
|
|
ldr r0, =0x00002bd4
|
|
adds r1, r0
|
|
adds r1, r2
|
|
ldrh r0, [r1]
|
|
strh r0, [r3]
|
|
adds r4, 0x1
|
|
cmp r4, 0x5
|
|
ble _08163F96
|
|
movs r4, 0
|
|
_08163FCC:
|
|
ldr r6, =gSaveBlock2Ptr
|
|
ldr r0, [r6]
|
|
lsls r1, r4, 1
|
|
ldr r2, =0x00000caa
|
|
adds r0, r2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1]
|
|
cmp r0, 0
|
|
beq _08163FF4
|
|
adds r1, r0, 0
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, =gPlayerParty - 100
|
|
adds r0, r1
|
|
movs r1, 0x2C
|
|
muls r1, r4
|
|
adds r1, 0x34
|
|
adds r1, r5, r1
|
|
bl sub_80686FC
|
|
_08163FF4:
|
|
adds r4, 0x1
|
|
cmp r4, 0x3
|
|
ble _08163FCC
|
|
ldr r0, =gGameLanguage
|
|
ldrb r0, [r0]
|
|
mov r7, r8
|
|
strb r0, [r7]
|
|
ldr r0, [r6]
|
|
ldr r1, =0x0000064c
|
|
adds r0, r1
|
|
bl CalcEmeraldBattleTowerChecksum
|
|
bl sub_8163E90
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8163EE4
|
|
|
|
thumb_func_start sub_8164040
|
|
sub_8164040: @ 8164040
|
|
push {r4,r5,lr}
|
|
ldr r5, =gSaveBlock2Ptr
|
|
ldr r0, [r5]
|
|
ldr r1, =0x00000ca9
|
|
adds r0, r1
|
|
ldrb r4, [r0]
|
|
lsls r4, 30
|
|
lsrs r4, 30
|
|
ldr r0, =0x000040ce
|
|
bl VarGet
|
|
lsls r0, 16
|
|
ldr r5, [r5]
|
|
lsls r4, 1
|
|
lsrs r0, 14
|
|
adds r4, r0
|
|
movs r2, 0xCE
|
|
lsls r2, 4
|
|
adds r0, r5, r2
|
|
adds r0, r4
|
|
ldrh r0, [r0]
|
|
movs r1, 0x7
|
|
bl __udivsi3
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
ldr r0, =gSpecialVar_0x8005
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
bne _0816408E
|
|
cmp r1, 0x1
|
|
bgt _0816408A
|
|
ldr r1, =0x00000cb2
|
|
adds r0, r5, r1
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
beq _0816408E
|
|
_0816408A:
|
|
bl sub_8163EE4
|
|
_0816408E:
|
|
ldr r4, =gSaveBlock2Ptr
|
|
ldr r0, [r4]
|
|
ldr r1, =gSpecialVar_0x8005
|
|
ldrh r1, [r1]
|
|
ldr r2, =0x00000ca8
|
|
adds r0, r2
|
|
strb r1, [r0]
|
|
movs r0, 0x80
|
|
lsls r0, 7
|
|
movs r1, 0
|
|
bl VarSet
|
|
ldr r1, [r4]
|
|
ldr r0, =0x00000ca9
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
movs r2, 0x4
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
bl sub_81A4C30
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8164040
|
|
|
|
thumb_func_start nullsub_61
|
|
nullsub_61: @ 81640D8
|
|
bx lr
|
|
thumb_func_end nullsub_61
|
|
|
|
thumb_func_start nullsub_116
|
|
nullsub_116: @ 81640DC
|
|
bx lr
|
|
thumb_func_end nullsub_116
|
|
|
|
thumb_func_start sub_81640E0
|
|
sub_81640E0: @ 81640E0
|
|
push {r4-r7,lr}
|
|
sub sp, 0xC
|
|
adds r5, r0, 0
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
ldr r4, =gPlayerParty
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
adds r4, 0x64
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
movs r6, 0
|
|
movs r2, 0
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
ldr r0, =0xfffffe70
|
|
adds r5, r0
|
|
lsls r0, r5, 4
|
|
adds r0, r5
|
|
lsls r0, 2
|
|
adds r1, 0xE0
|
|
adds r0, r1
|
|
mov r3, sp
|
|
_08164122:
|
|
ldrh r1, [r0]
|
|
cmp r1, r7
|
|
beq _08164130
|
|
cmp r1, r4
|
|
beq _08164130
|
|
stm r3!, {r2}
|
|
adds r6, 0x1
|
|
_08164130:
|
|
adds r0, 0xC
|
|
adds r2, 0x1
|
|
cmp r2, 0x2
|
|
ble _08164122
|
|
bl Random
|
|
ldr r4, =gUnknown_03006298
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
adds r1, r6, 0
|
|
bl __modsi3
|
|
lsls r0, 2
|
|
add r0, sp
|
|
ldr r0, [r0]
|
|
strh r0, [r4]
|
|
_08164150:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
adds r1, r6, 0
|
|
bl __modsi3
|
|
lsls r0, 2
|
|
add r0, sp
|
|
ldr r0, [r0]
|
|
strh r0, [r4, 0x2]
|
|
ldrh r1, [r4]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r1, r0
|
|
beq _08164150
|
|
add sp, 0xC
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81640E0
|
|
|
|
thumb_func_start sub_8164188
|
|
sub_8164188: @ 8164188
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x1C
|
|
adds r5, r0, 0
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
ldr r6, =gSaveBlock2Ptr
|
|
ldr r0, [r6]
|
|
ldr r1, =0x00000ca9
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
lsls r0, 30
|
|
lsrs r0, 30
|
|
str r0, [sp, 0xC]
|
|
ldr r4, =gPlayerParty
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0x10]
|
|
adds r4, 0x64
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0x14]
|
|
movs r3, 0
|
|
mov r8, r3
|
|
movs r7, 0
|
|
adds r2, r6, 0
|
|
ldr r0, =0xfffffed4
|
|
adds r5, r0
|
|
ldr r6, =0x0000076c
|
|
mov r10, sp
|
|
movs r0, 0xEC
|
|
adds r1, r5, 0
|
|
muls r1, r0
|
|
mov r9, r1
|
|
_081641E6:
|
|
ldr r1, [r2]
|
|
movs r0, 0x2C
|
|
muls r0, r7
|
|
mov r3, r9
|
|
adds r5, r0, r3
|
|
adds r1, r5
|
|
adds r0, r1, r6
|
|
ldrh r0, [r0]
|
|
ldr r3, [sp, 0x10]
|
|
cmp r0, r3
|
|
beq _0816423A
|
|
ldr r3, [sp, 0x14]
|
|
cmp r0, r3
|
|
beq _0816423A
|
|
movs r0, 0xEF
|
|
lsls r0, 3
|
|
adds r4, r1, r0
|
|
ldr r1, [sp, 0xC]
|
|
lsls r0, r1, 24
|
|
lsrs r0, 24
|
|
str r2, [sp, 0x18]
|
|
bl GetFrontierEnemyMonLevel
|
|
ldrb r1, [r4]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, [sp, 0x18]
|
|
cmp r1, r0
|
|
bhi _0816423A
|
|
ldr r0, [r2]
|
|
adds r0, r5
|
|
adds r0, r6
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
beq _0816423A
|
|
mov r3, r10
|
|
adds r3, 0x4
|
|
mov r10, r3
|
|
subs r3, 0x4
|
|
stm r3!, {r7}
|
|
movs r0, 0x1
|
|
add r8, r0
|
|
_0816423A:
|
|
adds r7, 0x1
|
|
cmp r7, 0x3
|
|
ble _081641E6
|
|
bl Random
|
|
ldr r4, =gUnknown_03006298
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r1, r8
|
|
bl __modsi3
|
|
lsls r0, 2
|
|
add r0, sp
|
|
ldr r0, [r0]
|
|
strh r0, [r4, 0x4]
|
|
_08164258:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r1, r8
|
|
bl __modsi3
|
|
lsls r0, 2
|
|
add r0, sp
|
|
ldr r0, [r0]
|
|
strh r0, [r4, 0x6]
|
|
ldrh r1, [r4, 0x4]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r1, r0
|
|
beq _08164258
|
|
add sp, 0x1C
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8164188
|
|
|
|
thumb_func_start sub_81642A0
|
|
sub_81642A0: @ 81642A0
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4C
|
|
ldr r0, =gSaveBlock1Ptr
|
|
ldr r0, [r0]
|
|
movs r1, 0xC7
|
|
lsls r1, 4
|
|
adds r1, r0, r1
|
|
str r1, [sp, 0x24]
|
|
ldr r5, =gSaveBlock2Ptr
|
|
ldr r0, [r5]
|
|
ldr r2, =0x00000ca9
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
lsls r0, 30
|
|
lsrs r0, 30
|
|
str r0, [sp, 0x14]
|
|
ldr r0, =0x000040ce
|
|
bl VarGet
|
|
lsls r0, 16
|
|
ldr r1, [r5]
|
|
ldr r3, [sp, 0x14]
|
|
lsls r2, r3, 1
|
|
lsrs r0, 14
|
|
adds r2, r0
|
|
movs r4, 0xCE
|
|
lsls r4, 4
|
|
adds r1, r4
|
|
adds r1, r2
|
|
ldrh r0, [r1]
|
|
movs r1, 0x7
|
|
bl __udivsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0x18]
|
|
ldr r4, =gPlayerParty
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
str r0, [sp, 0x1C]
|
|
adds r4, 0x64
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
str r0, [sp, 0x20]
|
|
bl GetFacilityEnemyMonLevel
|
|
movs r7, 0
|
|
ldr r0, [sp, 0x18]
|
|
lsls r0, 24
|
|
mov r10, r0
|
|
_08164318:
|
|
lsls r6, r7, 1
|
|
_0816431A:
|
|
mov r1, r10
|
|
lsrs r0, r1, 24
|
|
movs r1, 0
|
|
bl sub_8162548
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
movs r2, 0
|
|
mov r9, r2
|
|
cmp r9, r7
|
|
bge _08164368
|
|
ldr r0, [r5]
|
|
ldr r3, =0x00000cb4
|
|
adds r1, r0, r3
|
|
ldrh r0, [r1]
|
|
cmp r0, r8
|
|
beq _08164368
|
|
ldr r0, =gFacilityTrainers
|
|
ldr r2, [r0]
|
|
movs r4, 0x34
|
|
mov r0, r8
|
|
muls r0, r4
|
|
adds r0, r2
|
|
ldrb r3, [r0]
|
|
_0816434C:
|
|
ldrh r0, [r1]
|
|
muls r0, r4
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, r3
|
|
beq _08164368
|
|
adds r1, 0x2
|
|
movs r0, 0x1
|
|
add r9, r0
|
|
cmp r9, r7
|
|
bge _08164368
|
|
ldrh r0, [r1]
|
|
cmp r0, r8
|
|
bne _0816434C
|
|
_08164368:
|
|
cmp r9, r7
|
|
bne _0816431A
|
|
ldr r0, [r5]
|
|
ldr r1, =0x00000cb4
|
|
adds r0, r1
|
|
adds r0, r6
|
|
mov r2, r8
|
|
strh r2, [r0]
|
|
mov r7, r9
|
|
adds r7, 0x1
|
|
cmp r7, 0x5
|
|
ble _08164318
|
|
movs r3, 0x8
|
|
mov r10, r3
|
|
movs r4, 0
|
|
mov r9, r4
|
|
ldr r0, [sp, 0x24]
|
|
str r0, [sp, 0x40]
|
|
_0816438C:
|
|
ldr r1, =gSaveBlock2Ptr
|
|
ldr r0, [r1]
|
|
mov r2, r9
|
|
lsls r1, r2, 1
|
|
ldr r3, =0x00000cb4
|
|
adds r0, r3
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
mov r8, r0
|
|
bl sub_81627A4
|
|
ldr r4, [sp, 0x40]
|
|
strb r0, [r4, 0x19]
|
|
movs r7, 0
|
|
_081643A8:
|
|
adds r0, r7, 0x1
|
|
str r0, [sp, 0x30]
|
|
mov r1, r10
|
|
lsls r1, 1
|
|
str r1, [sp, 0x38]
|
|
mov r2, r10
|
|
adds r2, 0x1
|
|
str r2, [sp, 0x34]
|
|
mov r0, r10
|
|
subs r0, 0x1
|
|
lsls r0, 1
|
|
str r0, [sp, 0x28]
|
|
_081643C0:
|
|
mov r0, r8
|
|
bl RandomizeFacilityTrainerMonId
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
movs r0, 0x1
|
|
ands r0, r7
|
|
cmp r0, 0
|
|
beq _081643F4
|
|
ldr r3, =gSaveBlock2Ptr
|
|
ldr r0, [r3]
|
|
ldr r4, =0x00000cb4
|
|
adds r0, r4
|
|
ldr r1, [sp, 0x28]
|
|
adds r0, r1
|
|
ldrh r2, [r0]
|
|
ldr r0, =gFacilityTrainerMons
|
|
ldr r0, [r0]
|
|
lsls r2, 4
|
|
adds r2, r0
|
|
lsls r1, r6, 4
|
|
adds r1, r0
|
|
ldrb r0, [r2, 0xA]
|
|
ldrb r1, [r1, 0xA]
|
|
cmp r0, r1
|
|
beq _081643C0
|
|
_081643F4:
|
|
movs r5, 0x8
|
|
cmp r5, r10
|
|
bge _08164430
|
|
ldr r2, =gSaveBlock2Ptr
|
|
ldr r0, [r2]
|
|
ldr r1, =gFacilityTrainerMons
|
|
ldr r3, [r1]
|
|
lsls r1, r6, 4
|
|
adds r1, r3
|
|
ldr r4, =0x00000cc4
|
|
adds r2, r0, r4
|
|
ldrh r0, [r1]
|
|
mov r12, r0
|
|
_0816440E:
|
|
ldrh r0, [r2]
|
|
lsls r0, 4
|
|
adds r0, r3
|
|
ldrh r0, [r0]
|
|
cmp r0, r12
|
|
beq _08164430
|
|
ldrh r0, [r1]
|
|
ldr r4, [sp, 0x1C]
|
|
cmp r4, r0
|
|
beq _08164430
|
|
ldr r4, [sp, 0x20]
|
|
cmp r4, r0
|
|
beq _08164430
|
|
adds r2, 0x2
|
|
adds r5, 0x1
|
|
cmp r5, r10
|
|
blt _0816440E
|
|
_08164430:
|
|
cmp r5, r10
|
|
bne _081643C0
|
|
ldr r1, =gSaveBlock2Ptr
|
|
ldr r0, [r1]
|
|
ldr r2, =0x00000cb4
|
|
adds r0, r2
|
|
ldr r3, [sp, 0x38]
|
|
adds r0, r3
|
|
strh r6, [r0]
|
|
ldr r4, [sp, 0x34]
|
|
mov r10, r4
|
|
ldr r7, [sp, 0x30]
|
|
cmp r7, 0x1
|
|
ble _081643A8
|
|
ldr r0, [sp, 0x40]
|
|
adds r0, 0x18
|
|
str r0, [sp, 0x40]
|
|
movs r1, 0x1
|
|
add r9, r1
|
|
mov r2, r9
|
|
cmp r2, 0x5
|
|
ble _0816438C
|
|
movs r3, 0
|
|
mov r10, r3
|
|
bl sub_8165B20
|
|
movs r4, 0
|
|
mov r9, r4
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
movs r2, 0
|
|
adds r6, r0, 0
|
|
adds r6, 0xDC
|
|
mov r8, sp
|
|
_08164474:
|
|
ldrb r0, [r6]
|
|
lsls r4, r0, 25
|
|
lsrs r0, r4, 30
|
|
cmp r0, 0
|
|
beq _081644E0
|
|
ldr r1, =gUnknown_085DF9EC
|
|
ldrb r0, [r6, 0x1]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
movs r1, 0x7
|
|
str r2, [sp, 0x44]
|
|
bl __udivsi3
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, [sp, 0x44]
|
|
ldr r1, [sp, 0x18]
|
|
cmp r0, r1
|
|
bgt _081644E0
|
|
lsrs r0, r4, 30
|
|
subs r0, 0x1
|
|
ldr r3, [sp, 0x14]
|
|
cmp r0, r3
|
|
bne _081644E0
|
|
movs r5, 0
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
adds r0, 0xE0
|
|
adds r1, r2, r0
|
|
movs r7, 0x2
|
|
_081644B0:
|
|
ldrh r0, [r1]
|
|
ldr r4, [sp, 0x1C]
|
|
cmp r4, r0
|
|
beq _081644C0
|
|
ldr r3, [sp, 0x20]
|
|
cmp r3, r0
|
|
beq _081644C0
|
|
adds r5, 0x1
|
|
_081644C0:
|
|
adds r1, 0xC
|
|
subs r7, 0x1
|
|
cmp r7, 0
|
|
bge _081644B0
|
|
cmp r5, 0x2
|
|
ble _081644E0
|
|
movs r0, 0xC8
|
|
lsls r0, 1
|
|
add r0, r9
|
|
mov r4, r8
|
|
adds r4, 0x4
|
|
mov r8, r4
|
|
subs r4, 0x4
|
|
stm r4!, {r0}
|
|
movs r0, 0x1
|
|
add r10, r0
|
|
_081644E0:
|
|
adds r2, 0x44
|
|
adds r6, 0x44
|
|
movs r1, 0x1
|
|
add r9, r1
|
|
mov r3, r9
|
|
cmp r3, 0x3
|
|
ble _08164474
|
|
mov r4, r10
|
|
cmp r4, 0
|
|
beq _08164532
|
|
bl Random
|
|
ldr r6, =gSaveBlock2Ptr
|
|
ldr r4, [r6]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r1, r10
|
|
bl __modsi3
|
|
lsls r0, 2
|
|
add r0, sp
|
|
ldr r0, [r0]
|
|
movs r5, 0xCC
|
|
lsls r5, 4
|
|
adds r4, r5
|
|
strh r0, [r4]
|
|
ldrh r0, [r4]
|
|
bl sub_81627A4
|
|
ldr r1, [sp, 0x24]
|
|
adds r1, 0xA8
|
|
strb r0, [r1, 0x1]
|
|
movs r0, 0xD8
|
|
lsls r0, 2
|
|
bl FlagClear
|
|
ldr r0, [r6]
|
|
adds r0, r5
|
|
ldrh r0, [r0]
|
|
bl sub_81640E0
|
|
_08164532:
|
|
movs r0, 0
|
|
mov r10, r0
|
|
mov r9, r0
|
|
mov r1, sp
|
|
str r1, [sp, 0x3C]
|
|
_0816453C:
|
|
ldr r0, =gSaveBlock2Ptr
|
|
movs r2, 0xEC
|
|
mov r1, r9
|
|
muls r1, r2
|
|
movs r3, 0xE7
|
|
lsls r3, 3
|
|
adds r1, r3
|
|
ldr r0, [r0]
|
|
movs r2, 0
|
|
movs r3, 0
|
|
movs r7, 0
|
|
mov r4, r9
|
|
adds r4, 0x1
|
|
str r4, [sp, 0x2C]
|
|
adds r1, r0, r1
|
|
_0816455A:
|
|
ldm r1!, {r0}
|
|
orrs r2, r0
|
|
adds r3, r0
|
|
adds r7, 0x1
|
|
cmp r7, 0x39
|
|
bls _0816455A
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r5, [r0]
|
|
movs r1, 0xEC
|
|
mov r6, r9
|
|
muls r6, r1
|
|
adds r4, r5, r6
|
|
ldr r1, =0x0000073a
|
|
adds r0, r4, r1
|
|
ldrh r0, [r0]
|
|
movs r1, 0x7
|
|
str r2, [sp, 0x44]
|
|
str r3, [sp, 0x48]
|
|
bl __udivsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r2, [sp, 0x44]
|
|
ldr r3, [sp, 0x48]
|
|
ldr r1, [sp, 0x18]
|
|
cmp r0, r1
|
|
bgt _08164656
|
|
movs r1, 0xE7
|
|
lsls r1, 3
|
|
adds r0, r4, r1
|
|
ldrb r0, [r0]
|
|
ldr r4, [sp, 0x14]
|
|
cmp r0, r4
|
|
bne _08164656
|
|
cmp r2, 0
|
|
beq _08164656
|
|
adds r1, 0xE8
|
|
adds r0, r5, r1
|
|
adds r0, r6
|
|
ldr r0, [r0]
|
|
cmp r0, r3
|
|
bne _08164656
|
|
movs r5, 0
|
|
movs r7, 0
|
|
ldr r2, =gSaveBlock2Ptr
|
|
mov r8, r2
|
|
ldr r3, =0x0000076c
|
|
_081645B8:
|
|
mov r4, r8
|
|
ldr r2, [r4]
|
|
movs r0, 0x2C
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
movs r4, 0xEC
|
|
mov r0, r9
|
|
muls r0, r4
|
|
adds r6, r1, r0
|
|
adds r2, r6
|
|
adds r0, r2, r3
|
|
ldrh r0, [r0]
|
|
ldr r1, [sp, 0x1C]
|
|
cmp r1, r0
|
|
beq _0816463C
|
|
ldr r4, [sp, 0x20]
|
|
cmp r4, r0
|
|
beq _0816463C
|
|
movs r0, 0xEF
|
|
lsls r0, 3
|
|
adds r4, r2, r0
|
|
ldr r1, [sp, 0x14]
|
|
lsls r0, r1, 24
|
|
lsrs r0, 24
|
|
str r3, [sp, 0x48]
|
|
bl GetFrontierEnemyMonLevel
|
|
ldrb r1, [r4]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r3, [sp, 0x48]
|
|
cmp r1, r0
|
|
bhi _0816463C
|
|
mov r2, r8
|
|
ldr r0, [r2]
|
|
adds r0, r6
|
|
adds r0, r3
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
b _08164638
|
|
.pool
|
|
_08164638:
|
|
beq _0816463C
|
|
adds r5, 0x1
|
|
_0816463C:
|
|
adds r7, 0x1
|
|
cmp r7, 0x3
|
|
ble _081645B8
|
|
cmp r5, 0x1
|
|
ble _08164656
|
|
movs r0, 0x96
|
|
lsls r0, 1
|
|
add r0, r9
|
|
ldr r3, [sp, 0x3C]
|
|
stm r3!, {r0}
|
|
str r3, [sp, 0x3C]
|
|
movs r4, 0x1
|
|
add r10, r4
|
|
_08164656:
|
|
ldr r0, [sp, 0x2C]
|
|
mov r9, r0
|
|
cmp r0, 0x4
|
|
bgt _08164660
|
|
b _0816453C
|
|
_08164660:
|
|
mov r1, r10
|
|
cmp r1, 0
|
|
beq _081646A0
|
|
bl Random
|
|
ldr r6, =gSaveBlock2Ptr
|
|
ldr r4, [r6]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r1, r10
|
|
bl __modsi3
|
|
lsls r0, 2
|
|
add r0, sp
|
|
ldr r0, [r0]
|
|
ldr r5, =0x00000cc2
|
|
adds r4, r5
|
|
strh r0, [r4]
|
|
ldrh r0, [r4]
|
|
bl sub_81627A4
|
|
ldr r1, [sp, 0x24]
|
|
adds r1, 0xC0
|
|
strb r0, [r1, 0x1]
|
|
ldr r0, =0x00000361
|
|
bl FlagClear
|
|
ldr r0, [r6]
|
|
adds r0, r5
|
|
ldrh r0, [r0]
|
|
bl sub_8164188
|
|
_081646A0:
|
|
add sp, 0x4C
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81642A0
|
|
|
|
thumb_func_start sub_81646BC
|
|
sub_81646BC: @ 81646BC
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
lsls r1, 16
|
|
lsrs r4, r1, 16
|
|
movs r0, 0
|
|
mov r9, r0
|
|
mov r10, r0
|
|
bl GetFacilityEnemyMonLevel
|
|
movs r0, 0xFA
|
|
lsls r0, 1
|
|
cmp r5, r0
|
|
beq _081647CE
|
|
subs r0, 0xC9
|
|
cmp r5, r0
|
|
bhi _081646FC
|
|
ldr r0, =gFacilityTrainerMons
|
|
ldr r1, [r0]
|
|
lsls r0, r4, 4
|
|
adds r0, r1
|
|
ldrh r1, [r0, 0x2]
|
|
mov r9, r1
|
|
ldrh r0, [r0]
|
|
mov r10, r0
|
|
b _081647CE
|
|
.pool
|
|
_081646FC:
|
|
ldr r0, =0x0000018f
|
|
cmp r5, r0
|
|
bhi _08164750
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r3, [r0]
|
|
ldr r1, =gUnknown_03006298
|
|
ldr r0, =gSpecialVar_0x8005
|
|
ldrh r0, [r0]
|
|
adds r0, 0x1
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x2C
|
|
muls r1, r0
|
|
ldr r0, =0xfffffed4
|
|
adds r2, r5, r0
|
|
movs r0, 0xEC
|
|
muls r0, r2
|
|
adds r1, r0
|
|
adds r3, r1
|
|
movs r1, 0xEE
|
|
lsls r1, 3
|
|
adds r0, r3, r1
|
|
ldrh r0, [r0]
|
|
mov r9, r0
|
|
ldr r2, =0x0000076c
|
|
adds r3, r2
|
|
ldrh r3, [r3]
|
|
mov r10, r3
|
|
b _081647CE
|
|
.pool
|
|
_08164750:
|
|
ldr r4, =gSaveBlock2Ptr
|
|
ldr r3, [r4]
|
|
ldr r1, =gUnknown_03006298
|
|
ldr r0, =gSpecialVar_0x8005
|
|
ldrh r0, [r0]
|
|
subs r0, 0x1
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r2, =0xfffffe70
|
|
adds r1, r5, r2
|
|
lsls r2, r1, 4
|
|
adds r2, r1
|
|
lsls r2, 2
|
|
adds r0, r2
|
|
adds r3, r0
|
|
adds r0, r3, 0
|
|
adds r0, 0xE2
|
|
ldrh r0, [r0]
|
|
mov r9, r0
|
|
adds r3, 0xE0
|
|
ldrh r3, [r3]
|
|
mov r10, r3
|
|
movs r3, 0
|
|
ldr r7, =gStringVar3
|
|
mov r8, r7
|
|
adds r0, r4, 0
|
|
mov r12, r0
|
|
adds r4, r2, 0
|
|
movs r6, 0x8A
|
|
lsls r6, 1
|
|
_08164794:
|
|
mov r1, r8
|
|
adds r2, r3, r1
|
|
mov r1, r12
|
|
ldr r0, [r1]
|
|
adds r1, r3, r4
|
|
adds r0, r6
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x6
|
|
ble _08164794
|
|
adds r1, r3, r7
|
|
movs r0, 0xFF
|
|
strb r0, [r1]
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r2, [r0]
|
|
ldr r0, =0xfffffe70
|
|
adds r1, r5, r0
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r2, r0
|
|
ldr r1, =0x0000011b
|
|
adds r0, r2, r1
|
|
ldrb r1, [r0]
|
|
adds r0, r7, 0
|
|
bl ConvertInternationalString
|
|
_081647CE:
|
|
ldr r0, =gStringVar1
|
|
movs r1, 0xD
|
|
mov r2, r9
|
|
muls r2, r1
|
|
adds r1, r2, 0
|
|
ldr r2, =gMoveNames
|
|
adds r1, r2
|
|
bl StringCopy
|
|
ldr r0, =gStringVar2
|
|
movs r1, 0xB
|
|
mov r2, r10
|
|
muls r2, r1
|
|
adds r1, r2, 0
|
|
ldr r2, =gSpeciesNames
|
|
adds r1, r2
|
|
bl StringCopy
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81646BC
|
|
|
|
thumb_func_start sub_8164828
|
|
sub_8164828: @ 8164828
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
bl GetFacilityEnemyMonLevel
|
|
bl sub_81A39C4
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x7
|
|
bl __udivsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
ldr r0, =gSpecialVar_LastTalked
|
|
ldrh r0, [r0]
|
|
subs r5, r0, 0x2
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
lsls r1, r5, 1
|
|
ldr r2, =0x00000cb4
|
|
adds r0, r2
|
|
adds r0, r1
|
|
ldrh r7, [r0]
|
|
movs r3, 0
|
|
str r3, [sp]
|
|
ldr r4, =gUnknown_085DD500
|
|
lsls r6, r7, 16
|
|
b _08164884
|
|
.pool
|
|
_0816487C:
|
|
adds r4, 0x8
|
|
ldr r0, [sp]
|
|
adds r0, 0x1
|
|
str r0, [sp]
|
|
_08164884:
|
|
ldr r1, [sp]
|
|
cmp r1, 0x31
|
|
bhi _0816489A
|
|
lsrs r0, r6, 16
|
|
bl sub_8162D34
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, [r4]
|
|
cmp r1, r0
|
|
bne _0816487C
|
|
_0816489A:
|
|
ldr r0, =gSpecialVar_0x8005
|
|
ldrh r0, [r0]
|
|
cmp r0, 0x4
|
|
bls _081648A4
|
|
b _08164AC2
|
|
_081648A4:
|
|
lsls r0, 2
|
|
ldr r1, =_081648B8
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_081648B8:
|
|
.4byte _081648CC
|
|
.4byte _08164984
|
|
.4byte _0816499C
|
|
.4byte _081649BC
|
|
.4byte _08164AC2
|
|
_081648CC:
|
|
movs r0, 0xFA
|
|
lsls r0, 1
|
|
cmp r7, r0
|
|
bne _081648D6
|
|
b _08164B54
|
|
_081648D6:
|
|
subs r0, 0xC9
|
|
cmp r7, r0
|
|
ble _081648E2
|
|
ldr r0, =0x0000018f
|
|
cmp r7, r0
|
|
bgt _081648F4
|
|
_081648E2:
|
|
ldr r0, =gStringVar1
|
|
adds r1, r7, 0
|
|
bl GetFrontierTrainerName
|
|
b _08164AC2
|
|
.pool
|
|
_081648F4:
|
|
movs r3, 0
|
|
lsls r2, r7, 16
|
|
mov r10, r2
|
|
ldr r6, =gStringVar1
|
|
mov r9, r6
|
|
ldr r4, =gSaveBlock2Ptr
|
|
mov r8, r4
|
|
ldr r5, =0xfffffe70
|
|
adds r1, r7, r5
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r4, r0, 2
|
|
movs r5, 0x8A
|
|
lsls r5, 1
|
|
_08164910:
|
|
mov r0, r9
|
|
adds r2, r3, r0
|
|
mov r1, r8
|
|
ldr r0, [r1]
|
|
adds r1, r3, r4
|
|
adds r0, r5
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x6
|
|
ble _08164910
|
|
adds r1, r3, r6
|
|
movs r0, 0xFF
|
|
strb r0, [r1]
|
|
ldr r2, =gSaveBlock2Ptr
|
|
ldr r1, [r2]
|
|
ldr r3, =0xfffffe70
|
|
adds r0, r7, r3
|
|
lsls r4, r0, 4
|
|
adds r4, r0
|
|
lsls r4, 2
|
|
adds r1, r4
|
|
ldr r5, =0x0000011b
|
|
adds r0, r1, r5
|
|
ldrb r1, [r0]
|
|
adds r0, r6, 0
|
|
bl ConvertInternationalString
|
|
ldr r0, =gStringVar2
|
|
ldr r2, =gSaveBlock2Ptr
|
|
ldr r1, [r2]
|
|
adds r1, r4
|
|
adds r1, 0xDE
|
|
ldrb r1, [r1]
|
|
movs r2, 0
|
|
movs r3, 0x3
|
|
bl ConvertIntToDecimalStringN
|
|
ldr r0, =gStringVar3
|
|
mov r3, r10
|
|
lsrs r1, r3, 16
|
|
bl GetFrontierTrainerName
|
|
b _08164AC2
|
|
.pool
|
|
_08164984:
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
lsls r0, r5, 2
|
|
adds r1, r0
|
|
ldr r4, =0x00000cc4
|
|
adds r1, r4
|
|
b _081649A8
|
|
.pool
|
|
_0816499C:
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
lsls r0, r5, 2
|
|
adds r1, r0
|
|
ldr r5, =0x00000cc6
|
|
adds r1, r5
|
|
_081649A8:
|
|
adds r0, r7, 0
|
|
ldrh r1, [r1]
|
|
bl sub_81646BC
|
|
b _08164AC2
|
|
.pool
|
|
_081649BC:
|
|
ldr r0, =gPartnerTrainerId
|
|
strh r7, [r0]
|
|
ldr r0, =0x0000012b
|
|
cmp r7, r0
|
|
bgt _08164A08
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r4, [r0]
|
|
lsls r1, r5, 1
|
|
adds r0, r1, 0
|
|
adds r0, 0x8
|
|
lsls r0, 1
|
|
ldr r3, =0x00000cb4
|
|
adds r2, r4, r3
|
|
adds r0, r2, r0
|
|
ldrh r3, [r0]
|
|
ldr r5, =0x00000cd8
|
|
adds r0, r4, r5
|
|
strh r3, [r0]
|
|
adds r1, 0x9
|
|
lsls r1, 1
|
|
adds r2, r1
|
|
ldrh r0, [r2]
|
|
ldr r1, =0x00000cda
|
|
adds r4, r1
|
|
strh r0, [r4]
|
|
b _08164A46
|
|
.pool
|
|
_08164A08:
|
|
ldr r0, =0x0000018f
|
|
cmp r7, r0
|
|
bgt _08164A30
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
ldr r3, =gUnknown_03006298
|
|
ldrh r2, [r3, 0x4]
|
|
ldr r4, =0x00000cd8
|
|
adds r0, r1, r4
|
|
strh r2, [r0]
|
|
ldrh r0, [r3, 0x6]
|
|
b _08164A40
|
|
.pool
|
|
_08164A30:
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
ldr r3, =gUnknown_03006298
|
|
ldrh r2, [r3]
|
|
ldr r4, =0x00000cd8
|
|
adds r0, r1, r4
|
|
strh r2, [r0]
|
|
ldrh r0, [r3, 0x2]
|
|
_08164A40:
|
|
ldr r5, =0x00000cda
|
|
adds r1, r5
|
|
strh r0, [r1]
|
|
_08164A46:
|
|
movs r5, 0
|
|
mov r0, r8
|
|
lsls r0, 24
|
|
str r0, [sp, 0x4]
|
|
_08164A4E:
|
|
lsls r1, r5, 1
|
|
mov r10, r1
|
|
adds r2, r5, 0x1
|
|
mov r9, r2
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r0, 1
|
|
lsls r0, 24
|
|
mov r8, r0
|
|
_08164A60:
|
|
ldr r3, [sp, 0x4]
|
|
lsrs r0, r3, 24
|
|
mov r4, r8
|
|
lsrs r1, r4, 24
|
|
bl sub_8162548
|
|
lsls r0, 16
|
|
lsrs r3, r0, 16
|
|
ldr r0, =gPartnerTrainerId
|
|
ldrh r0, [r0]
|
|
cmp r0, r3
|
|
beq _08164A60
|
|
movs r2, 0
|
|
cmp r2, r5
|
|
bge _08164AA2
|
|
ldr r1, =gSaveBlock2Ptr
|
|
ldr r0, [r1]
|
|
ldr r4, =0x00000cb4
|
|
adds r0, r4
|
|
ldrh r0, [r0]
|
|
cmp r0, r3
|
|
beq _08164AA2
|
|
adds r6, r1, 0
|
|
_08164A8E:
|
|
adds r2, 0x1
|
|
cmp r2, r5
|
|
bge _08164AA2
|
|
ldr r0, [r6]
|
|
lsls r1, r2, 1
|
|
adds r0, r4
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
cmp r0, r3
|
|
bne _08164A8E
|
|
_08164AA2:
|
|
cmp r2, r5
|
|
bne _08164A60
|
|
ldr r5, =gSaveBlock2Ptr
|
|
ldr r0, [r5]
|
|
ldr r1, =0x00000cb4
|
|
adds r0, r1
|
|
add r0, r10
|
|
strh r3, [r0]
|
|
mov r5, r9
|
|
cmp r5, 0xD
|
|
ble _08164A4E
|
|
ldr r2, =gSaveBlock2Ptr
|
|
ldr r0, [r2]
|
|
ldr r3, =0x00000cd6
|
|
adds r0, r3
|
|
strh r7, [r0]
|
|
_08164AC2:
|
|
movs r0, 0xFA
|
|
lsls r0, 1
|
|
cmp r7, r0
|
|
beq _08164B54
|
|
subs r0, 0xC9
|
|
cmp r7, r0
|
|
bgt _08164AF8
|
|
ldr r0, =gUnknown_085DD500
|
|
ldr r4, [sp]
|
|
lsls r1, r4, 3
|
|
b _08164B04
|
|
.pool
|
|
_08164AF8:
|
|
ldr r0, =0x0000018f
|
|
cmp r7, r0
|
|
bgt _08164B28
|
|
ldr r0, =gUnknown_085DD500
|
|
ldr r5, [sp]
|
|
lsls r1, r5, 3
|
|
_08164B04:
|
|
adds r0, 0x4
|
|
adds r1, r0
|
|
ldr r0, =gSpecialVar_0x8005
|
|
ldrh r0, [r0]
|
|
ldr r1, [r1]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
bl ShowFieldMessage
|
|
b _08164B54
|
|
.pool
|
|
_08164B28:
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
ldr r0, =0xfffffe70
|
|
adds r2, r7, r0
|
|
lsls r0, r2, 4
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
adds r1, 0xDC
|
|
ldrb r0, [r1]
|
|
lsls r0, 27
|
|
ldr r1, =gUnknown_085DD690
|
|
lsrs r0, 25
|
|
adds r0, r1
|
|
ldr r1, =gSpecialVar_0x8005
|
|
ldrh r1, [r1]
|
|
ldr r0, [r0]
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldr r0, [r1]
|
|
bl ShowFieldMessage
|
|
_08164B54:
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8164828
|
|
|
|
thumb_func_start sub_8164B74
|
|
sub_8164B74: @ 8164B74
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x4
|
|
ldr r4, =gSaveBlock2Ptr
|
|
ldr r0, [r4]
|
|
ldr r1, =0x00000ca9
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
lsls r0, 30
|
|
lsrs r7, r0, 30
|
|
ldr r0, =0x000040ce
|
|
bl VarGet
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
ldr r0, [r4]
|
|
ldr r2, =0x00000cb2
|
|
adds r0, r2
|
|
ldrh r6, [r0]
|
|
bl GetMultiplayerId
|
|
ldr r0, =gSpecialVar_Result
|
|
ldrh r0, [r0]
|
|
cmp r0, 0x6
|
|
bls _08164BAC
|
|
b _08164DB6
|
|
_08164BAC:
|
|
lsls r0, 2
|
|
ldr r1, =_08164BD0
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_08164BD0:
|
|
.4byte _08164BEC
|
|
.4byte _08164C3C
|
|
.4byte _08164CE0
|
|
.4byte _08164D14
|
|
.4byte _08164D98
|
|
.4byte _08164DA8
|
|
.4byte _08164DB6
|
|
_08164BEC:
|
|
cmp r5, 0x3
|
|
beq _08164BF2
|
|
b _08164DB0
|
|
_08164BF2:
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
lsls r1, r7, 1
|
|
adds r0, r1
|
|
ldr r3, =0x00000cec
|
|
adds r0, r3
|
|
ldrh r0, [r0]
|
|
movs r1, 0x7
|
|
bl __udivsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp]
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08164C18
|
|
b _08164DB6
|
|
_08164C18:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r1, sp
|
|
movs r2, 0x4
|
|
bl SendBlock
|
|
ldr r1, =gSpecialVar_Result
|
|
movs r0, 0x1
|
|
b _08164DB4
|
|
.pool
|
|
_08164C3C:
|
|
bl GetBlockReceivedStatus
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
cmp r1, 0x3
|
|
beq _08164C4A
|
|
b _08164DB6
|
|
_08164C4A:
|
|
bl ResetBlockReceivedFlags
|
|
ldr r1, =gBlockRecvBuffer
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
adds r2, r1, r0
|
|
ldrh r0, [r1]
|
|
ldrh r3, [r2]
|
|
cmp r0, r3
|
|
bhi _08164C60
|
|
ldrh r0, [r2]
|
|
_08164C60:
|
|
str r0, [sp]
|
|
movs r4, 0
|
|
ldr r0, =gSaveBlock2Ptr
|
|
mov r9, r0
|
|
_08164C68:
|
|
adds r1, r4, 0x1
|
|
mov r8, r1
|
|
lsrs r0, r4, 31
|
|
adds r0, r4, r0
|
|
asrs r0, 1
|
|
lsls r7, r0, 24
|
|
_08164C74:
|
|
ldr r0, [sp]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsrs r1, r7, 24
|
|
bl sub_8162548
|
|
lsls r0, 16
|
|
lsrs r3, r0, 16
|
|
movs r2, 0
|
|
cmp r2, r4
|
|
bge _08164CB0
|
|
mov r1, r9
|
|
ldr r0, [r1]
|
|
ldr r1, =0x00000cb4
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
cmp r0, r3
|
|
beq _08164CB0
|
|
ldr r6, =gSaveBlock2Ptr
|
|
adds r5, r1, 0
|
|
_08164C9C:
|
|
adds r2, 0x1
|
|
cmp r2, r4
|
|
bge _08164CB0
|
|
ldr r0, [r6]
|
|
lsls r1, r2, 1
|
|
adds r0, r5
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
cmp r0, r3
|
|
bne _08164C9C
|
|
_08164CB0:
|
|
cmp r4, r2
|
|
bne _08164C74
|
|
mov r2, r9
|
|
ldr r0, [r2]
|
|
lsls r1, r4, 1
|
|
ldr r2, =0x00000cb4
|
|
adds r0, r2
|
|
adds r0, r1
|
|
strh r3, [r0]
|
|
mov r4, r8
|
|
cmp r4, 0xD
|
|
ble _08164C68
|
|
ldr r1, =gSpecialVar_Result
|
|
movs r0, 0x2
|
|
b _08164DB4
|
|
.pool
|
|
_08164CE0:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08164DB6
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gSaveBlock2Ptr
|
|
ldr r1, [r1]
|
|
ldr r3, =0x00000cb4
|
|
adds r1, r3
|
|
movs r2, 0x28
|
|
bl SendBlock
|
|
ldr r1, =gSpecialVar_Result
|
|
movs r0, 0x3
|
|
b _08164DB4
|
|
.pool
|
|
_08164D14:
|
|
bl GetBlockReceivedStatus
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
cmp r1, 0x3
|
|
bne _08164DB6
|
|
bl ResetBlockReceivedFlags
|
|
ldr r4, =gSaveBlock2Ptr
|
|
ldr r0, [r4]
|
|
ldr r5, =0x00000cb4
|
|
adds r0, r5
|
|
ldr r1, =gBlockRecvBuffer
|
|
movs r2, 0x28
|
|
bl memcpy
|
|
ldr r2, =gTrainerBattleOpponent_A
|
|
ldr r1, [r4]
|
|
lsls r0, r6, 2
|
|
adds r1, r5
|
|
adds r0, r1, r0
|
|
ldrh r0, [r0]
|
|
strh r0, [r2]
|
|
ldr r4, =gTrainerBattleOpponent_B
|
|
lsls r0, r6, 1
|
|
adds r0, 0x1
|
|
lsls r0, 1
|
|
adds r1, r0
|
|
ldrh r0, [r1]
|
|
strh r0, [r4]
|
|
ldrh r0, [r2]
|
|
movs r1, 0
|
|
bl sub_8162614
|
|
ldrh r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8162614
|
|
ldr r0, =gReceivedRemoteLinkPlayers
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _08164DB0
|
|
ldr r0, =gWirelessCommType
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08164DB0
|
|
ldr r1, =gSpecialVar_Result
|
|
movs r0, 0x4
|
|
b _08164DB4
|
|
.pool
|
|
_08164D98:
|
|
bl sub_800AC34
|
|
ldr r1, =gSpecialVar_Result
|
|
movs r0, 0x5
|
|
b _08164DB4
|
|
.pool
|
|
_08164DA8:
|
|
ldr r0, =gReceivedRemoteLinkPlayers
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08164DB6
|
|
_08164DB0:
|
|
ldr r1, =gSpecialVar_Result
|
|
movs r0, 0x6
|
|
_08164DB4:
|
|
strh r0, [r1]
|
|
_08164DB6:
|
|
add sp, 0x4
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8164B74
|
|
|
|
thumb_func_start sub_8164DCC
|
|
sub_8164DCC: @ 8164DCC
|
|
push {lr}
|
|
ldr r0, =gWirelessCommType
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _08164DDA
|
|
bl sub_800AC34
|
|
_08164DDA:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8164DCC
|
|
|
|
thumb_func_start sub_8164DE4
|
|
sub_8164DE4: @ 8164DE4
|
|
push {lr}
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0x00000cd6
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
movs r1, 0xF
|
|
bl sub_8162614
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8164DE4
|
|
|
|
thumb_func_start sub_8164E04
|
|
sub_8164E04: @ 8164E04
|
|
push {r4-r6,lr}
|
|
sub sp, 0x20
|
|
ldr r0, =0x000040ce
|
|
bl VarGet
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08164E9A
|
|
ldr r5, =gTrainerBattleOpponent_A
|
|
ldrh r1, [r5]
|
|
mov r0, sp
|
|
bl GetFrontierTrainerName
|
|
mov r0, sp
|
|
bl StripExtCtrlCodes
|
|
ldr r4, =gSaveBlock2Ptr
|
|
ldr r0, [r4]
|
|
ldr r1, =0x00000bd8
|
|
adds r0, r1
|
|
mov r1, sp
|
|
bl StringCopy
|
|
ldr r0, [r4]
|
|
ldr r2, =0x00000beb
|
|
adds r0, r2
|
|
ldrh r1, [r5]
|
|
bl sub_8165B88
|
|
ldr r6, =gBattlerPartyIndexes
|
|
ldrh r0, [r6, 0x2]
|
|
movs r5, 0x64
|
|
muls r0, r5
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
ldr r1, [r4]
|
|
ldr r2, =0x00000bd6
|
|
adds r1, r2
|
|
strh r0, [r1]
|
|
ldrh r0, [r6]
|
|
muls r0, r5
|
|
ldr r1, =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
ldr r1, [r4]
|
|
ldr r2, =0x00000bd4
|
|
adds r1, r2
|
|
strh r0, [r1]
|
|
movs r2, 0
|
|
movs r5, 0xBE
|
|
lsls r5, 4
|
|
ldr r3, =gBattleMons + 0x30
|
|
adds r6, r4, 0
|
|
_08164E7C:
|
|
ldr r0, [r4]
|
|
adds r0, r5
|
|
adds r0, r2
|
|
adds r1, r2, r3
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0xA
|
|
ble _08164E7C
|
|
ldr r0, [r6]
|
|
ldr r1, =gBattleOutcome
|
|
ldrb r1, [r1]
|
|
ldr r2, =0x00000d06
|
|
adds r0, r2
|
|
strb r1, [r0]
|
|
_08164E9A:
|
|
add sp, 0x20
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8164E04
|
|
|
|
thumb_func_start sub_8164ED8
|
|
sub_8164ED8: @ 8164ED8
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
movs r3, 0
|
|
movs r2, 0
|
|
ldr r4, =0x0000064c
|
|
adds r1, r0, r4
|
|
_08164EEA:
|
|
ldm r1!, {r0}
|
|
adds r3, r0
|
|
adds r2, 0x1
|
|
cmp r2, 0x39
|
|
bls _08164EEA
|
|
ldr r5, =gSaveBlock2Ptr
|
|
ldr r1, [r5]
|
|
ldr r2, =0x00000734
|
|
adds r0, r1, r2
|
|
ldr r0, [r0]
|
|
cmp r0, r3
|
|
beq _08164F0A
|
|
ldr r3, =0x0000064c
|
|
adds r0, r1, r3
|
|
bl sub_8164FB8
|
|
_08164F0A:
|
|
movs r4, 0
|
|
adds r7, r5, 0
|
|
movs r6, 0xEC
|
|
mov r8, r7
|
|
_08164F12:
|
|
adds r0, r4, 0
|
|
muls r0, r6
|
|
movs r1, 0xE7
|
|
lsls r1, 3
|
|
adds r0, r1
|
|
ldr r1, [r7]
|
|
movs r3, 0
|
|
movs r2, 0
|
|
adds r5, r4, 0x1
|
|
adds r1, r0
|
|
_08164F26:
|
|
ldm r1!, {r0}
|
|
adds r3, r0
|
|
adds r2, 0x1
|
|
cmp r2, 0x39
|
|
bls _08164F26
|
|
mov r0, r8
|
|
ldr r2, [r0]
|
|
adds r1, r4, 0
|
|
muls r1, r6
|
|
movs r4, 0x82
|
|
lsls r4, 4
|
|
adds r0, r2, r4
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
cmp r0, r3
|
|
beq _08164F52
|
|
movs r3, 0xE7
|
|
lsls r3, 3
|
|
adds r0, r1, r3
|
|
adds r0, r2, r0
|
|
bl sub_8164FB8
|
|
_08164F52:
|
|
adds r4, r5, 0
|
|
cmp r4, 0x4
|
|
ble _08164F12
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8164ED8
|
|
|
|
thumb_func_start CalcEmeraldBattleTowerChecksum
|
|
CalcEmeraldBattleTowerChecksum: @ 8164F70
|
|
push {r4,lr}
|
|
adds r2, r0, 0
|
|
adds r2, 0xE8
|
|
movs r1, 0
|
|
str r1, [r2]
|
|
movs r3, 0
|
|
adds r4, r0, 0
|
|
_08164F7E:
|
|
ldr r0, [r2]
|
|
ldm r4!, {r1}
|
|
adds r0, r1
|
|
str r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x39
|
|
bls _08164F7E
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end CalcEmeraldBattleTowerChecksum
|
|
|
|
thumb_func_start sub_8164F94
|
|
sub_8164F94: @ 8164F94
|
|
push {r4,lr}
|
|
adds r2, r0, 0
|
|
adds r2, 0xA0
|
|
movs r1, 0
|
|
str r1, [r2]
|
|
movs r3, 0
|
|
adds r4, r0, 0
|
|
_08164FA2:
|
|
ldr r0, [r2]
|
|
ldm r4!, {r1}
|
|
adds r0, r1
|
|
str r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x27
|
|
bls _08164FA2
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8164F94
|
|
|
|
thumb_func_start sub_8164FB8
|
|
sub_8164FB8: @ 8164FB8
|
|
push {lr}
|
|
movs r1, 0
|
|
movs r2, 0
|
|
_08164FBE:
|
|
stm r0!, {r2}
|
|
adds r1, 0x1
|
|
cmp r1, 0x3A
|
|
bls _08164FBE
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8164FB8
|
|
|
|
thumb_func_start sub_8164FCC
|
|
sub_8164FCC: @ 8164FCC
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsls r1, 24
|
|
ldr r2, =gSaveBlock2Ptr
|
|
ldr r2, [r2]
|
|
lsrs r0, 23
|
|
lsrs r1, 22
|
|
adds r0, r1
|
|
movs r1, 0xCE
|
|
lsls r1, 4
|
|
adds r2, r1
|
|
adds r2, r0
|
|
ldrh r0, [r2]
|
|
ldr r1, =0x0000270f
|
|
cmp r0, r1
|
|
bls _08164FEE
|
|
adds r0, r1, 0
|
|
_08164FEE:
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_8164FCC
|
|
|
|
thumb_func_start sub_8164FFC
|
|
sub_8164FFC: @ 8164FFC
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, =gUnknown_085DFA42
|
|
mov r0, sp
|
|
movs r2, 0x4
|
|
bl memcpy
|
|
cmp r4, 0x3
|
|
bls _0816501C
|
|
movs r0, 0x3
|
|
b _08165022
|
|
.pool
|
|
_0816501C:
|
|
mov r1, sp
|
|
adds r0, r1, r4
|
|
ldrb r0, [r0]
|
|
_08165022:
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8164FFC
|
|
|
|
thumb_func_start sub_816502C
|
|
sub_816502C: @ 816502C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0xC
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0x00000ca9
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
lsls r0, 30
|
|
lsrs r0, 30
|
|
adds r5, r0, 0
|
|
ldr r0, =0x000040ce
|
|
bl VarGet
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r4, r0, 0
|
|
bl sub_8164FFC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
movs r2, 0x44
|
|
mov r10, r2
|
|
cmp r5, 0
|
|
beq _0816506A
|
|
movs r0, 0x45
|
|
mov r10, r0
|
|
_0816506A:
|
|
ldr r1, =gSpecialVar_Result
|
|
mov r9, r1
|
|
movs r0, 0
|
|
strh r0, [r1]
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl sub_8164FCC
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x37
|
|
bls _081650DC
|
|
movs r6, 0
|
|
cmp r6, r8
|
|
bge _081650DC
|
|
ldr r7, =gSaveBlock1Ptr
|
|
mov r5, sp
|
|
_0816508C:
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
lsls r1, r6, 1
|
|
ldr r2, =0x00000caa
|
|
adds r0, r2
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
subs r1, 0x1
|
|
movs r0, 0
|
|
strb r1, [r5]
|
|
strb r0, [r5, 0x1]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
movs r1, 0x8E
|
|
lsls r1, 2
|
|
adds r4, r0, r1
|
|
ldr r0, [r7]
|
|
adds r0, r4
|
|
mov r1, r10
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _081650D4
|
|
movs r0, 0x1
|
|
mov r2, r9
|
|
strh r0, [r2]
|
|
ldr r0, [r7]
|
|
adds r0, r4
|
|
mov r1, r10
|
|
bl SetMonData
|
|
ldr r0, [r7]
|
|
adds r0, r4
|
|
bl GetRibbonCount
|
|
strb r0, [r5, 0x1]
|
|
_081650D4:
|
|
adds r5, 0x4
|
|
adds r6, 0x1
|
|
cmp r6, r8
|
|
blt _0816508C
|
|
_081650DC:
|
|
ldr r0, =gSpecialVar_Result
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
beq _08165132
|
|
movs r0, 0x2A
|
|
bl IncrementGameStat
|
|
mov r0, r8
|
|
cmp r0, 0x1
|
|
ble _08165110
|
|
mov r3, sp
|
|
add r2, sp, 0x4
|
|
mov r6, r8
|
|
subs r6, 0x1
|
|
_081650F8:
|
|
ldrb r1, [r3, 0x1]
|
|
ldrb r0, [r2, 0x1]
|
|
cmp r0, r1
|
|
bls _08165108
|
|
ldr r1, [sp]
|
|
ldr r0, [r2]
|
|
str r0, [sp]
|
|
str r1, [r2]
|
|
_08165108:
|
|
adds r2, 0x4
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bne _081650F8
|
|
_08165110:
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x1]
|
|
cmp r0, 0x4
|
|
bls _08165132
|
|
ldr r2, =gSaveBlock1Ptr
|
|
mov r0, sp
|
|
ldrb r1, [r0]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
movs r0, 0x8E
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
mov r1, r10
|
|
bl sub_80EE4DC
|
|
_08165132:
|
|
add sp, 0xC
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_816502C
|
|
|
|
thumb_func_start sub_816515C
|
|
sub_816515C: @ 816515C
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
ldr r1, =gSaveBlock2Ptr
|
|
ldr r2, [r1]
|
|
ldr r0, =0x00000bec
|
|
adds r7, r2, r0
|
|
ldrb r0, [r2, 0x8]
|
|
adds r5, r1, 0
|
|
cmp r0, 0
|
|
beq _08165194
|
|
ldr r4, =gUnknown_085DCEFA
|
|
ldrb r0, [r2, 0xA]
|
|
ldrb r1, [r2, 0xB]
|
|
adds r0, r1
|
|
ldrb r1, [r2, 0xC]
|
|
adds r0, r1
|
|
ldrb r1, [r2, 0xD]
|
|
adds r0, r1
|
|
movs r1, 0x14
|
|
b _081651A6
|
|
.pool
|
|
_08165194:
|
|
ldr r4, =gUnknown_085DCEDC
|
|
ldrb r0, [r2, 0xA]
|
|
ldrb r1, [r2, 0xB]
|
|
adds r0, r1
|
|
ldrb r1, [r2, 0xC]
|
|
adds r0, r1
|
|
ldrb r1, [r2, 0xD]
|
|
adds r0, r1
|
|
movs r1, 0x1E
|
|
_081651A6:
|
|
bl __umodsi3
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
strb r0, [r7, 0x1]
|
|
adds r0, r7, 0
|
|
adds r0, 0xC
|
|
ldr r1, [r5]
|
|
adds r1, 0xA
|
|
bl CopyUnalignedWord
|
|
adds r0, r7, 0x4
|
|
ldr r1, [r5]
|
|
bl StringCopy7
|
|
movs r0, 0x1
|
|
strh r0, [r7, 0x2]
|
|
movs r6, 0x7
|
|
movs r4, 0
|
|
ldr r0, =gSaveBlock1Ptr
|
|
mov r8, r0
|
|
adds r5, r7, 0
|
|
adds r5, 0x10
|
|
ldr r1, =0x00002bbc
|
|
mov r12, r1
|
|
adds r3, r7, 0
|
|
adds r3, 0x28
|
|
adds r2, r7, 0
|
|
adds r2, 0x1C
|
|
_081651E0:
|
|
lsls r0, r4, 1
|
|
mov r9, r0
|
|
mov r1, r8
|
|
ldr r0, [r1]
|
|
add r0, r12
|
|
add r0, r9
|
|
ldrh r0, [r0]
|
|
strh r0, [r5]
|
|
strh r6, [r2]
|
|
adds r0, r6, 0x6
|
|
strh r0, [r3]
|
|
adds r6, 0x1
|
|
adds r5, 0x2
|
|
adds r3, 0x2
|
|
adds r2, 0x2
|
|
adds r4, 0x1
|
|
cmp r4, 0x5
|
|
ble _081651E0
|
|
movs r4, 0
|
|
_08165206:
|
|
movs r0, 0x64
|
|
muls r0, r4
|
|
ldr r1, =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0x2C
|
|
muls r1, r4
|
|
adds r1, 0x34
|
|
adds r1, r7, r1
|
|
bl sub_80686FC
|
|
adds r4, 0x1
|
|
cmp r4, 0x2
|
|
ble _08165206
|
|
adds r0, r7, 0
|
|
bl sub_8165328
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_816515C
|
|
|
|
thumb_func_start GetEreaderTrainerFrontSpriteId
|
|
GetEreaderTrainerFrontSpriteId: @ 8165244
|
|
ldr r1, =gFacilityClassToPicIndex
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r2, =0x00000bed
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end GetEreaderTrainerFrontSpriteId
|
|
|
|
thumb_func_start GetEreaderTrainerClassId
|
|
GetEreaderTrainerClassId: @ 8165264
|
|
ldr r1, =gFacilityClassToTrainerClass
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r2, =0x00000bed
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end GetEreaderTrainerClassId
|
|
|
|
thumb_func_start GetEreaderTrainerName
|
|
GetEreaderTrainerName: @ 8165284
|
|
push {r4,lr}
|
|
adds r3, r0, 0
|
|
movs r2, 0
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
movs r1, 0xBF
|
|
lsls r1, 4
|
|
adds r4, r0, r1
|
|
_08165294:
|
|
adds r0, r3, r2
|
|
adds r1, r4, r2
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x4
|
|
ble _08165294
|
|
adds r1, r3, r2
|
|
movs r0, 0xFF
|
|
strb r0, [r1]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end GetEreaderTrainerName
|
|
|
|
thumb_func_start ValidateEReaderTrainer
|
|
ValidateEReaderTrainer: @ 81652B4
|
|
push {r4-r6,lr}
|
|
ldr r2, =gSpecialVar_Result
|
|
movs r0, 0
|
|
strh r0, [r2]
|
|
ldr r1, =gSaveBlock2Ptr
|
|
ldr r0, [r1]
|
|
ldr r3, =0x00000bec
|
|
adds r5, r0, r3
|
|
movs r4, 0
|
|
movs r3, 0
|
|
adds r6, r1, 0
|
|
adds r1, r5, 0
|
|
_081652CC:
|
|
ldm r1!, {r0}
|
|
orrs r4, r0
|
|
adds r3, 0x1
|
|
cmp r3, 0x2D
|
|
bls _081652CC
|
|
cmp r4, 0
|
|
bne _081652EC
|
|
movs r0, 0x1
|
|
strh r0, [r2]
|
|
b _08165316
|
|
.pool
|
|
_081652EC:
|
|
movs r4, 0
|
|
movs r3, 0
|
|
adds r2, r5, 0
|
|
_081652F2:
|
|
ldm r2!, {r0}
|
|
adds r4, r0
|
|
adds r3, 0x1
|
|
cmp r3, 0x2D
|
|
bls _081652F2
|
|
ldr r1, [r6]
|
|
ldr r2, =0x00000ca4
|
|
adds r0, r1, r2
|
|
ldr r0, [r0]
|
|
cmp r0, r4
|
|
beq _08165316
|
|
ldr r3, =0x00000bec
|
|
adds r0, r1, r3
|
|
bl sub_816534C
|
|
ldr r1, =gSpecialVar_Result
|
|
movs r0, 0x1
|
|
strh r0, [r1]
|
|
_08165316:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end ValidateEReaderTrainer
|
|
|
|
thumb_func_start sub_8165328
|
|
sub_8165328: @ 8165328
|
|
push {r4,lr}
|
|
adds r2, r0, 0
|
|
adds r2, 0xB8
|
|
movs r1, 0
|
|
str r1, [r2]
|
|
movs r3, 0
|
|
adds r4, r0, 0
|
|
_08165336:
|
|
ldr r0, [r2]
|
|
ldm r4!, {r1}
|
|
adds r0, r1
|
|
str r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x2D
|
|
bls _08165336
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8165328
|
|
|
|
thumb_func_start sub_816534C
|
|
sub_816534C: @ 816534C
|
|
push {lr}
|
|
movs r1, 0
|
|
movs r2, 0
|
|
_08165352:
|
|
stm r0!, {r2}
|
|
adds r1, 0x1
|
|
cmp r1, 0x2E
|
|
bls _08165352
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_816534C
|
|
|
|
thumb_func_start sub_8165360
|
|
sub_8165360: @ 8165360
|
|
push {lr}
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0x00000bfc
|
|
adds r0, r1
|
|
bl ConvertBattleFrontierTrainerSpeechToString
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8165360
|
|
|
|
thumb_func_start sub_816537C
|
|
sub_816537C: @ 816537C
|
|
push {lr}
|
|
ldr r0, =gBattleOutcome
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x3
|
|
bne _08165398
|
|
ldr r1, =gStringVar4
|
|
movs r0, 0xFF
|
|
strb r0, [r1]
|
|
b _081653C0
|
|
.pool
|
|
_08165398:
|
|
cmp r0, 0x1
|
|
bne _081653B4
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0x00000c14
|
|
adds r0, r1
|
|
bl ConvertBattleFrontierTrainerSpeechToString
|
|
b _081653C0
|
|
.pool
|
|
_081653B4:
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0x00000c08
|
|
adds r0, r1
|
|
bl ConvertBattleFrontierTrainerSpeechToString
|
|
_081653C0:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_816537C
|
|
|
|
thumb_func_start sub_81653CC
|
|
sub_81653CC: @ 81653CC
|
|
push {lr}
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0x00000ca8
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
bne _081653E0
|
|
bl sub_80F01B8
|
|
_081653E0:
|
|
movs r0, 0x77
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _081653F8
|
|
bl sub_80F01B8
|
|
movs r0, 0x77
|
|
bl FlagClear
|
|
_081653F8:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_81653CC
|
|
|
|
thumb_func_start sub_8165404
|
|
sub_8165404: @ 8165404
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x70
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
bl GetFacilityEnemyMonLevel
|
|
ldr r0, =0x00000c03
|
|
cmp r7, r0
|
|
beq _08165420
|
|
b _0816554C
|
|
_08165420:
|
|
movs r0, 0
|
|
mov r10, r0
|
|
mov r1, sp
|
|
adds r1, 0x44
|
|
str r1, [sp, 0x64]
|
|
_0816542A:
|
|
mov r2, r10
|
|
lsls r2, 2
|
|
mov r9, r2
|
|
mov r3, r10
|
|
adds r3, 0x1
|
|
str r3, [sp, 0x60]
|
|
mov r0, r9
|
|
add r0, r10
|
|
lsls r0, 2
|
|
ldr r6, =gUnknown_085DD6D0
|
|
adds r5, r0, r6
|
|
_08165440:
|
|
bl Random
|
|
adds r4, r0, 0
|
|
bl Random
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r0, 16
|
|
orrs r4, r0
|
|
str r4, [sp, 0x44]
|
|
ldr r0, =0x0000ef2a
|
|
adds r1, r4, 0
|
|
bl IsShinyOtIdPersonality
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
cmp r7, 0
|
|
bne _08165440
|
|
ldr r0, [sp, 0x44]
|
|
bl GetNatureFromPersonality
|
|
ldrb r1, [r5, 0x4]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r1, r0
|
|
bne _08165440
|
|
movs r0, 0x64
|
|
mov r6, r10
|
|
muls r6, r0
|
|
ldr r1, =gPlayerParty + 300
|
|
mov r8, r1
|
|
adds r0, r6, r1
|
|
mov r5, r9
|
|
add r5, r10
|
|
lsls r5, 2
|
|
ldr r2, =gUnknown_085DD6D0
|
|
adds r3, r5, r2
|
|
ldrh r1, [r3]
|
|
ldrb r2, [r3, 0x3]
|
|
ldrb r3, [r3, 0x2]
|
|
mov r12, r3
|
|
movs r4, 0x1
|
|
str r4, [sp]
|
|
mov r3, r10
|
|
str r3, [sp, 0x4]
|
|
str r4, [sp, 0x8]
|
|
ldr r4, =0x0000ef2a
|
|
str r4, [sp, 0xC]
|
|
mov r3, r12
|
|
bl CreateMon
|
|
str r7, [sp, 0x44]
|
|
movs r3, 0
|
|
mov r4, r8
|
|
ldr r0, =gUnknown_085DD6D5
|
|
adds r5, r0
|
|
_081654B0:
|
|
adds r1, r3, 0
|
|
adds r1, 0x1A
|
|
adds r2, r5, r3
|
|
adds r0, r6, r4
|
|
bl SetMonData
|
|
ldr r0, [sp, 0x44]
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x44]
|
|
adds r3, r0, 0
|
|
cmp r3, 0x5
|
|
ble _081654B0
|
|
movs r0, 0
|
|
str r0, [sp, 0x44]
|
|
movs r1, 0
|
|
movs r6, 0x64
|
|
mov r4, r10
|
|
muls r4, r6
|
|
ldr r7, =gUnknown_085DD6DC
|
|
ldr r6, =gPlayerParty + 300
|
|
mov r0, r9
|
|
add r0, r10
|
|
lsls r5, r0, 2
|
|
_081654DE:
|
|
lsls r0, r1, 1
|
|
adds r0, r5
|
|
adds r0, r7
|
|
ldrh r1, [r0]
|
|
ldr r0, [sp, 0x64]
|
|
ldrb r2, [r0]
|
|
adds r0, r4, r6
|
|
bl SetMonMoveSlot
|
|
ldr r0, [sp, 0x44]
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x44]
|
|
adds r1, r0, 0
|
|
cmp r1, 0x3
|
|
ble _081654DE
|
|
movs r1, 0x64
|
|
mov r4, r10
|
|
muls r4, r1
|
|
ldr r0, =gPlayerParty + 300
|
|
adds r4, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x7
|
|
ldr r2, =gTrainers + 804 * 0x28 + 0x4 @ TRAINER_STEVEN name
|
|
bl SetMonData
|
|
movs r0, 0
|
|
str r0, [sp, 0x44]
|
|
adds r0, r4, 0
|
|
movs r1, 0x31
|
|
ldr r2, [sp, 0x64]
|
|
bl SetMonData
|
|
adds r0, r4, 0
|
|
bl CalculateMonStats
|
|
ldr r2, [sp, 0x60]
|
|
mov r10, r2
|
|
cmp r2, 0x2
|
|
bgt _0816552E
|
|
b _0816542A
|
|
_0816552E:
|
|
b _0816585A
|
|
.pool
|
|
_0816554C:
|
|
movs r0, 0xFA
|
|
lsls r0, 1
|
|
cmp r7, r0
|
|
bne _08165564
|
|
add r0, sp, 0x10
|
|
ldr r1, =gGameLanguage
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
b _0816585A
|
|
.pool
|
|
_08165564:
|
|
ldr r0, =0x0000012b
|
|
cmp r7, r0
|
|
bls _0816556C
|
|
b _081656E8
|
|
_0816556C:
|
|
bl GetFacilityEnemyMonLevel
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x50]
|
|
adds r0, r7, 0
|
|
bl sub_8165D08
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x4C]
|
|
bl Random
|
|
adds r4, r0, 0
|
|
bl Random
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r0, 16
|
|
orrs r4, r0
|
|
str r4, [sp, 0x58]
|
|
movs r3, 0
|
|
mov r10, r3
|
|
mov r6, sp
|
|
adds r6, 0x44
|
|
str r6, [sp, 0x64]
|
|
mov r0, sp
|
|
adds r0, 0x48
|
|
str r0, [sp, 0x5C]
|
|
_081655A6:
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
mov r0, r10
|
|
adds r0, 0x12
|
|
lsls r0, 1
|
|
ldr r2, =0x00000cb4
|
|
adds r1, r2
|
|
adds r1, r0
|
|
ldrh r1, [r1]
|
|
str r1, [sp, 0x54]
|
|
movs r6, 0x64
|
|
mov r3, r10
|
|
muls r3, r6
|
|
mov r8, r3
|
|
ldr r0, =gPlayerParty + 300
|
|
mov r9, r0
|
|
mov r0, r8
|
|
add r0, r9
|
|
ldr r6, =gFacilityTrainerMons
|
|
ldr r4, [r6]
|
|
lsls r5, r1, 4
|
|
adds r4, r5, r4
|
|
ldrh r1, [r4]
|
|
ldr r3, [sp, 0x50]
|
|
lsls r2, r3, 24
|
|
ldrb r3, [r4, 0xC]
|
|
mov r12, r3
|
|
ldr r3, [sp, 0x4C]
|
|
str r3, [sp]
|
|
ldrb r4, [r4, 0xB]
|
|
str r4, [sp, 0x4]
|
|
ldr r3, [sp, 0x58]
|
|
str r3, [sp, 0x8]
|
|
lsrs r2, 24
|
|
mov r3, r12
|
|
bl CreateMonWithEVSpreadPersonalityOTID
|
|
movs r0, 0xFF
|
|
str r0, [sp, 0x48]
|
|
movs r0, 0
|
|
str r0, [sp, 0x44]
|
|
movs r2, 0
|
|
mov r0, r10
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x60]
|
|
mov r4, r8
|
|
mov r3, r9
|
|
_08165604:
|
|
ldr r0, [r6]
|
|
adds r0, r5, r0
|
|
lsls r1, r2, 1
|
|
adds r0, 0x2
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
adds r0, r4, r3
|
|
str r3, [sp, 0x68]
|
|
bl SetMonMoveSlot
|
|
ldr r0, [r6]
|
|
adds r0, r5, r0
|
|
ldr r2, [sp, 0x44]
|
|
lsls r1, r2, 1
|
|
adds r0, 0x2
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
ldr r3, [sp, 0x68]
|
|
cmp r0, 0xDA
|
|
bne _08165634
|
|
movs r0, 0
|
|
str r0, [sp, 0x48]
|
|
_08165634:
|
|
adds r0, r2, 0x1
|
|
str r0, [sp, 0x44]
|
|
adds r2, r0, 0
|
|
cmp r2, 0x3
|
|
ble _08165604
|
|
movs r1, 0x64
|
|
mov r4, r10
|
|
muls r4, r1
|
|
ldr r0, =gPlayerParty + 300
|
|
adds r4, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x20
|
|
ldr r2, [sp, 0x5C]
|
|
bl SetMonData
|
|
ldr r0, =gFacilityTrainerMons
|
|
ldr r1, [r0]
|
|
ldr r2, [sp, 0x54]
|
|
lsls r0, r2, 4
|
|
adds r0, r1
|
|
ldrb r2, [r0, 0xA]
|
|
lsls r2, 1
|
|
ldr r0, =gBattleFrontierHeldItems
|
|
adds r2, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0xC
|
|
bl SetMonData
|
|
movs r0, 0
|
|
str r0, [sp, 0x44]
|
|
movs r2, 0
|
|
ldr r0, =gFacilityTrainers
|
|
ldr r1, [r0]
|
|
movs r0, 0x34
|
|
muls r0, r7
|
|
adds r0, r1
|
|
adds r3, r0, 0x4
|
|
_0816567E:
|
|
mov r1, sp
|
|
adds r1, r2
|
|
adds r1, 0x10
|
|
adds r0, r3, r2
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
ldr r0, [sp, 0x44]
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x44]
|
|
adds r2, r0, 0
|
|
cmp r2, 0x7
|
|
ble _0816567E
|
|
movs r3, 0x64
|
|
mov r4, r10
|
|
muls r4, r3
|
|
ldr r0, =gPlayerParty + 300
|
|
adds r4, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x7
|
|
add r2, sp, 0x10
|
|
bl SetMonData
|
|
adds r0, r7, 0
|
|
bl sub_8162F68
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x44]
|
|
adds r0, r4, 0
|
|
movs r1, 0x31
|
|
ldr r2, [sp, 0x64]
|
|
bl SetMonData
|
|
ldr r6, [sp, 0x60]
|
|
mov r10, r6
|
|
cmp r6, 0x1
|
|
bgt _081656CA
|
|
b _081655A6
|
|
_081656CA:
|
|
b _0816585A
|
|
.pool
|
|
_081656E8:
|
|
ldr r0, =0x0000018f
|
|
cmp r7, r0
|
|
bls _081656F0
|
|
b _081657F0
|
|
_081656F0:
|
|
ldr r1, =0xfffffed4
|
|
adds r0, r7, r1
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
movs r2, 0
|
|
mov r10, r2
|
|
mov r3, sp
|
|
adds r3, 0x44
|
|
str r3, [sp, 0x64]
|
|
add r5, sp, 0x18
|
|
ldr r6, =0x000015fc
|
|
mov r9, r6
|
|
ldr r0, =0x0000ffff
|
|
mov r8, r0
|
|
movs r1, 0x24
|
|
str r1, [sp, 0x6C]
|
|
_08165710:
|
|
ldr r1, =gSaveBlock2Ptr
|
|
movs r0, 0xEC
|
|
adds r4, r7, 0
|
|
muls r4, r0
|
|
movs r2, 0xE7
|
|
lsls r2, 3
|
|
adds r4, r2
|
|
ldr r0, [r1]
|
|
adds r4, r0, r4
|
|
ldr r3, =0x00000cb4
|
|
adds r0, r3
|
|
ldr r6, [sp, 0x6C]
|
|
adds r0, r6
|
|
ldrh r1, [r0]
|
|
movs r0, 0x2C
|
|
muls r1, r0
|
|
adds r1, r4, r1
|
|
adds r0, r5, 0
|
|
adds r1, 0x34
|
|
ldm r1!, {r2,r3,r6}
|
|
stm r0!, {r2,r3,r6}
|
|
ldm r1!, {r2,r3,r6}
|
|
stm r0!, {r2,r3,r6}
|
|
ldm r1!, {r2,r3,r6}
|
|
stm r0!, {r2,r3,r6}
|
|
ldm r1!, {r2,r3}
|
|
stm r0!, {r2,r3}
|
|
adds r1, r4, 0x4
|
|
add r0, sp, 0x10
|
|
bl StringCopy
|
|
adds r4, 0xE4
|
|
ldrb r0, [r4]
|
|
cmp r0, 0x1
|
|
bne _0816578C
|
|
ldrh r0, [r5, 0x20]
|
|
mov r6, r8
|
|
ands r0, r6
|
|
cmp r0, r9
|
|
beq _0816579C
|
|
mov r1, sp
|
|
adds r1, 0x3D
|
|
movs r0, 0xFF
|
|
strb r0, [r1]
|
|
add r0, sp, 0x38
|
|
movs r1, 0x1
|
|
bl ConvertInternationalString
|
|
b _0816579C
|
|
.pool
|
|
_0816578C:
|
|
ldrh r0, [r5, 0x20]
|
|
mov r1, r8
|
|
ands r0, r1
|
|
cmp r0, r9
|
|
bne _0816579C
|
|
add r1, sp, 0x10
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x5]
|
|
_0816579C:
|
|
movs r0, 0x64
|
|
mov r4, r10
|
|
muls r4, r0
|
|
ldr r0, =gPlayerParty + 300
|
|
adds r4, r0
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
movs r2, 0x1
|
|
bl sub_8068338
|
|
adds r0, r4, 0
|
|
movs r1, 0x7
|
|
add r2, sp, 0x10
|
|
bl SetMonData
|
|
movs r2, 0x96
|
|
lsls r2, 1
|
|
adds r0, r7, r2
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
bl sub_8162F68
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x44]
|
|
adds r0, r4, 0
|
|
movs r1, 0x31
|
|
ldr r2, [sp, 0x64]
|
|
bl SetMonData
|
|
ldr r3, [sp, 0x6C]
|
|
adds r3, 0x2
|
|
str r3, [sp, 0x6C]
|
|
movs r6, 0x1
|
|
add r10, r6
|
|
mov r0, r10
|
|
cmp r0, 0x1
|
|
ble _08165710
|
|
b _0816585A
|
|
.pool
|
|
_081657F0:
|
|
ldr r1, =0xfffffe70
|
|
adds r0, r7, r1
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
movs r2, 0
|
|
mov r10, r2
|
|
mov r3, sp
|
|
adds r3, 0x44
|
|
str r3, [sp, 0x64]
|
|
ldr r6, =gSaveBlock2Ptr
|
|
mov r8, r6
|
|
movs r5, 0x24
|
|
lsls r0, r7, 4
|
|
adds r0, r7
|
|
lsls r0, 2
|
|
adds r6, r0, 0
|
|
adds r6, 0xDC
|
|
_08165812:
|
|
movs r0, 0x64
|
|
mov r4, r10
|
|
muls r4, r0
|
|
ldr r0, =gPlayerParty + 300
|
|
adds r4, r0
|
|
mov r1, r8
|
|
ldr r0, [r1]
|
|
adds r1, r0, r6
|
|
ldr r2, =0x00000cb4
|
|
adds r0, r2
|
|
adds r0, r5
|
|
ldrb r2, [r0]
|
|
adds r0, r4, 0
|
|
bl CreateApprenticeMon
|
|
movs r3, 0xC8
|
|
lsls r3, 1
|
|
adds r0, r7, r3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
bl sub_8162F68
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x44]
|
|
adds r0, r4, 0
|
|
movs r1, 0x31
|
|
ldr r2, [sp, 0x64]
|
|
bl SetMonData
|
|
adds r5, 0x2
|
|
movs r0, 0x1
|
|
add r10, r0
|
|
mov r1, r10
|
|
cmp r1, 0x1
|
|
ble _08165812
|
|
_0816585A:
|
|
add sp, 0x70
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8165404
|
|
|
|
thumb_func_start sub_816587C
|
|
sub_816587C: @ 816587C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x14
|
|
adds r6, r0, 0
|
|
adds r5, r1, 0
|
|
movs r2, 0
|
|
adds r1, r6, 0
|
|
adds r3, r6, 0
|
|
adds r3, 0x58
|
|
_08165894:
|
|
ldrh r0, [r1, 0x1C]
|
|
cmp r0, 0
|
|
beq _0816589C
|
|
adds r2, 0x1
|
|
_0816589C:
|
|
adds r1, 0x2C
|
|
cmp r1, r3
|
|
ble _08165894
|
|
cmp r2, 0x3
|
|
beq _081658B4
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
movs r2, 0xEC
|
|
bl memset
|
|
movs r0, 0
|
|
b _081659BE
|
|
_081658B4:
|
|
ldrb r0, [r6]
|
|
strb r0, [r5]
|
|
ldrh r0, [r6, 0x2]
|
|
strh r0, [r5, 0x2]
|
|
movs r2, 0
|
|
ldr r0, =gUnknown_085DCF40
|
|
ldrb r1, [r0]
|
|
ldrb r3, [r6, 0x1]
|
|
mov r12, r0
|
|
adds r4, r5, 0x4
|
|
adds r7, r6, 0x4
|
|
movs r0, 0xC
|
|
adds r0, r5
|
|
mov r9, r0
|
|
movs r0, 0xC
|
|
adds r0, r6
|
|
mov r8, r0
|
|
adds r0, r5, 0
|
|
adds r0, 0x10
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0x10
|
|
adds r0, r6
|
|
mov r10, r0
|
|
adds r0, r5, 0
|
|
adds r0, 0x1C
|
|
str r0, [sp, 0x8]
|
|
adds r0, 0xC
|
|
str r0, [sp, 0xC]
|
|
adds r0, 0x90
|
|
str r0, [sp, 0x10]
|
|
cmp r1, r3
|
|
beq _08165904
|
|
mov r1, r12
|
|
_081658F6:
|
|
adds r1, 0x2
|
|
adds r2, 0x1
|
|
cmp r2, 0x51
|
|
bgt _08165904
|
|
ldrb r0, [r1]
|
|
cmp r0, r3
|
|
bne _081658F6
|
|
_08165904:
|
|
cmp r2, 0x52
|
|
beq _08165918
|
|
lsls r0, r2, 1
|
|
mov r1, r12
|
|
adds r1, 0x1
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
b _0816591A
|
|
.pool
|
|
_08165918:
|
|
movs r0, 0x2B
|
|
_0816591A:
|
|
strb r0, [r5, 0x1]
|
|
movs r2, 0
|
|
adds r3, r7, 0
|
|
_08165920:
|
|
adds r0, r4, r2
|
|
adds r1, r3, r2
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x7
|
|
ble _08165920
|
|
movs r2, 0
|
|
mov r4, r9
|
|
mov r3, r8
|
|
_08165934:
|
|
adds r0, r4, r2
|
|
adds r1, r3, r2
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x3
|
|
ble _08165934
|
|
mov r3, r10
|
|
ldr r1, [sp, 0x4]
|
|
movs r2, 0x5
|
|
_08165948:
|
|
ldrh r0, [r3]
|
|
strh r0, [r1]
|
|
adds r3, 0x2
|
|
adds r1, 0x2
|
|
subs r2, 0x1
|
|
cmp r2, 0
|
|
bge _08165948
|
|
ldr r3, =gUnknown_085DFA46
|
|
ldr r1, [sp, 0x8]
|
|
movs r2, 0x5
|
|
_0816595C:
|
|
ldrh r0, [r3]
|
|
strh r0, [r1]
|
|
adds r3, 0x2
|
|
adds r1, 0x2
|
|
subs r2, 0x1
|
|
cmp r2, 0
|
|
bge _0816595C
|
|
ldr r3, =gUnknown_085DFA52
|
|
ldr r1, [sp, 0xC]
|
|
movs r2, 0x5
|
|
_08165970:
|
|
ldrh r0, [r3]
|
|
strh r0, [r1]
|
|
adds r3, 0x2
|
|
adds r1, 0x2
|
|
subs r2, 0x1
|
|
cmp r2, 0
|
|
bge _08165970
|
|
adds r2, r6, 0
|
|
adds r3, r5, 0
|
|
movs r4, 0x58
|
|
adds r4, r2
|
|
mov r8, r4
|
|
_08165988:
|
|
adds r1, r3, 0
|
|
adds r1, 0x34
|
|
adds r0, r2, 0
|
|
adds r0, 0x1C
|
|
ldm r0!, {r4,r6,r7}
|
|
stm r1!, {r4,r6,r7}
|
|
ldm r0!, {r4,r6,r7}
|
|
stm r1!, {r4,r6,r7}
|
|
ldm r0!, {r4,r6,r7}
|
|
stm r1!, {r4,r6,r7}
|
|
ldm r0!, {r6,r7}
|
|
stm r1!, {r6,r7}
|
|
adds r2, 0x2C
|
|
adds r3, 0x2C
|
|
cmp r2, r8
|
|
ble _08165988
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
ldr r2, =0x0500000b
|
|
mov r0, sp
|
|
ldr r1, [sp, 0x10]
|
|
bl CpuSet
|
|
adds r0, r5, 0
|
|
bl CalcEmeraldBattleTowerChecksum
|
|
movs r0, 0x1
|
|
_081659BE:
|
|
add sp, 0x14
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_816587C
|
|
|
|
thumb_func_start sub_81659DC
|
|
sub_81659DC: @ 81659DC
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
adds r4, r0, 0
|
|
adds r6, r1, 0
|
|
movs r2, 0
|
|
adds r1, r4, 0
|
|
adds r3, r4, 0
|
|
adds r3, 0x58
|
|
_081659F4:
|
|
ldrh r0, [r1, 0x34]
|
|
cmp r0, 0
|
|
beq _081659FC
|
|
adds r2, 0x1
|
|
_081659FC:
|
|
adds r1, 0x2C
|
|
cmp r1, r3
|
|
ble _081659F4
|
|
cmp r2, 0x3
|
|
beq _08165A14
|
|
adds r0, r6, 0
|
|
movs r1, 0
|
|
movs r2, 0xA4
|
|
bl memset
|
|
movs r0, 0
|
|
b _08165AD8
|
|
_08165A14:
|
|
ldrb r0, [r4]
|
|
strb r0, [r6]
|
|
ldrh r0, [r4, 0x2]
|
|
strh r0, [r6, 0x2]
|
|
movs r2, 0
|
|
ldr r0, =gUnknown_085DCF40
|
|
ldrb r1, [r0, 0x1]
|
|
ldrb r3, [r4, 0x1]
|
|
mov r12, r0
|
|
adds r5, r6, 0x4
|
|
adds r7, r4, 0x4
|
|
movs r0, 0xC
|
|
adds r0, r6
|
|
mov r9, r0
|
|
movs r0, 0xC
|
|
adds r0, r4
|
|
mov r8, r0
|
|
adds r0, r6, 0
|
|
adds r0, 0x10
|
|
str r0, [sp]
|
|
movs r0, 0x10
|
|
adds r0, r4
|
|
mov r10, r0
|
|
cmp r1, r3
|
|
beq _08165A58
|
|
mov r1, r12
|
|
adds r1, 0x1
|
|
_08165A4A:
|
|
adds r1, 0x2
|
|
adds r2, 0x1
|
|
cmp r2, 0x51
|
|
bgt _08165A58
|
|
ldrb r0, [r1]
|
|
cmp r0, r3
|
|
bne _08165A4A
|
|
_08165A58:
|
|
cmp r2, 0x52
|
|
beq _08165A68
|
|
lsls r0, r2, 1
|
|
add r0, r12
|
|
ldrb r0, [r0]
|
|
b _08165A6A
|
|
.pool
|
|
_08165A68:
|
|
movs r0, 0x24
|
|
_08165A6A:
|
|
strb r0, [r6, 0x1]
|
|
movs r2, 0
|
|
adds r3, r7, 0
|
|
_08165A70:
|
|
adds r0, r5, r2
|
|
adds r1, r3, r2
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x7
|
|
ble _08165A70
|
|
movs r2, 0
|
|
mov r5, r9
|
|
mov r3, r8
|
|
_08165A84:
|
|
adds r0, r5, r2
|
|
adds r1, r3, r2
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x3
|
|
ble _08165A84
|
|
mov r3, r10
|
|
ldr r1, [sp]
|
|
movs r2, 0x5
|
|
_08165A98:
|
|
ldrh r0, [r3]
|
|
strh r0, [r1]
|
|
adds r3, 0x2
|
|
adds r1, 0x2
|
|
subs r2, 0x1
|
|
cmp r2, 0
|
|
bge _08165A98
|
|
adds r2, r4, 0
|
|
adds r3, r6, 0
|
|
movs r4, 0x58
|
|
adds r4, r2
|
|
mov r8, r4
|
|
_08165AB0:
|
|
adds r1, r3, 0
|
|
adds r1, 0x1C
|
|
adds r0, r2, 0
|
|
adds r0, 0x34
|
|
ldm r0!, {r4,r5,r7}
|
|
stm r1!, {r4,r5,r7}
|
|
ldm r0!, {r4,r5,r7}
|
|
stm r1!, {r4,r5,r7}
|
|
ldm r0!, {r4,r5,r7}
|
|
stm r1!, {r4,r5,r7}
|
|
ldm r0!, {r5,r7}
|
|
stm r1!, {r5,r7}
|
|
adds r2, 0x2C
|
|
adds r3, 0x2C
|
|
cmp r2, r8
|
|
ble _08165AB0
|
|
adds r0, r6, 0
|
|
bl sub_8164F94
|
|
movs r0, 0x1
|
|
_08165AD8:
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_81659DC
|
|
|
|
thumb_func_start sub_8165AE8
|
|
sub_8165AE8: @ 8165AE8
|
|
push {r4,lr}
|
|
adds r2, r0, 0
|
|
movs r0, 0
|
|
str r0, [r2, 0x40]
|
|
movs r3, 0
|
|
adds r4, r2, 0
|
|
_08165AF4:
|
|
ldr r0, [r2, 0x40]
|
|
ldm r4!, {r1}
|
|
adds r0, r1
|
|
str r0, [r2, 0x40]
|
|
adds r3, 0x1
|
|
cmp r3, 0xF
|
|
bls _08165AF4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8165AE8
|
|
|
|
thumb_func_start sub_8165B08
|
|
sub_8165B08: @ 8165B08
|
|
push {lr}
|
|
movs r1, 0
|
|
movs r3, 0
|
|
adds r2, r0, 0
|
|
_08165B10:
|
|
stm r2!, {r3}
|
|
adds r1, 0x1
|
|
cmp r1, 0x10
|
|
bls _08165B10
|
|
bl ResetApprenticeStruct
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8165B08
|
|
|
|
thumb_func_start sub_8165B20
|
|
sub_8165B20: @ 8165B20
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
movs r5, 0
|
|
ldr r0, =gSaveBlock2Ptr
|
|
mov r8, r0
|
|
mov r9, r8
|
|
_08165B30:
|
|
lsls r0, r5, 4
|
|
adds r1, r0, r5
|
|
lsls r1, 2
|
|
adds r1, 0xDC
|
|
mov r3, r9
|
|
ldr r2, [r3]
|
|
movs r4, 0
|
|
movs r3, 0
|
|
adds r6, r0, 0
|
|
adds r7, r5, 0x1
|
|
adds r2, r1
|
|
_08165B46:
|
|
ldm r2!, {r0}
|
|
adds r4, r0
|
|
adds r3, 0x1
|
|
cmp r3, 0xF
|
|
bls _08165B46
|
|
mov r0, r8
|
|
ldr r2, [r0]
|
|
adds r0, r6, r5
|
|
lsls r1, r0, 2
|
|
movs r3, 0x8E
|
|
lsls r3, 1
|
|
adds r0, r2, r3
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
cmp r0, r4
|
|
beq _08165B70
|
|
adds r0, r1, 0
|
|
adds r0, 0xDC
|
|
adds r0, r2, r0
|
|
bl sub_8165B08
|
|
_08165B70:
|
|
adds r5, r7, 0
|
|
cmp r5, 0x3
|
|
ble _08165B30
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8165B20
|
|
|
|
thumb_func_start sub_8165B88
|
|
sub_8165B88: @ 8165B88
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r1, 16
|
|
lsrs r2, r1, 16
|
|
adds r3, r2, 0
|
|
movs r0, 0xFA
|
|
lsls r0, 1
|
|
cmp r2, r0
|
|
bne _08165BA4
|
|
ldr r0, =gGameLanguage
|
|
b _08165C28
|
|
.pool
|
|
_08165BA4:
|
|
ldr r0, =0x0000012b
|
|
cmp r2, r0
|
|
bhi _08165BB8
|
|
ldr r0, =gGameLanguage
|
|
b _08165C28
|
|
.pool
|
|
_08165BB8:
|
|
ldr r0, =0x0000018f
|
|
cmp r2, r0
|
|
bhi _08165BFC
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08165BDC
|
|
bl sub_81864B4
|
|
b _08165C2A
|
|
.pool
|
|
_08165BDC:
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0xfffffed4
|
|
adds r2, r1
|
|
movs r1, 0xEC
|
|
muls r1, r2
|
|
adds r0, r1
|
|
ldr r1, =0x0000081c
|
|
adds r0, r1
|
|
b _08165C28
|
|
.pool
|
|
_08165BFC:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08165C14
|
|
bl sub_81864C0
|
|
b _08165C2A
|
|
.pool
|
|
_08165C14:
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r2, [r0]
|
|
ldr r0, =0xfffffe70
|
|
adds r1, r3, r0
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r2, r0
|
|
ldr r1, =0x0000011b
|
|
adds r0, r2, r1
|
|
_08165C28:
|
|
ldrb r0, [r0]
|
|
_08165C2A:
|
|
strb r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8165B88
|
|
|
|
thumb_func_start GetFacilityEnemyMonLevel
|
|
GetFacilityEnemyMonLevel: @ 8165C40
|
|
push {lr}
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldr r1, =0x00000ca9
|
|
adds r2, r0, r1
|
|
ldrb r1, [r2]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
beq _08165C84
|
|
ldr r1, =gFacilityTrainers
|
|
ldr r0, =gBattleFrontierTrainers
|
|
str r0, [r1]
|
|
ldr r1, =gFacilityTrainerMons
|
|
ldr r0, =gBattleFrontierMons
|
|
str r0, [r1]
|
|
ldrb r0, [r2]
|
|
lsls r0, 30
|
|
lsrs r0, 30
|
|
bl GetFrontierEnemyMonLevel
|
|
b _08165C88
|
|
.pool
|
|
_08165C84:
|
|
bl GetTentEnemyMonLevel
|
|
_08165C88:
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetFacilityEnemyMonLevel
|
|
|
|
thumb_func_start GetFrontierEnemyMonLevel
|
|
GetFrontierEnemyMonLevel: @ 8165C90
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _08165C9E
|
|
cmp r0, 0x1
|
|
beq _08165CA2
|
|
_08165C9E:
|
|
movs r0, 0x32
|
|
b _08165CB0
|
|
_08165CA2:
|
|
bl sub_8165CB4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x3B
|
|
bhi _08165CB0
|
|
movs r0, 0x3C
|
|
_08165CB0:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetFrontierEnemyMonLevel
|
|
|
|
thumb_func_start sub_8165CB4
|
|
sub_8165CB4: @ 8165CB4
|
|
push {r4-r6,lr}
|
|
movs r6, 0
|
|
movs r5, 0
|
|
_08165CBA:
|
|
movs r0, 0x64
|
|
adds r1, r5, 0
|
|
muls r1, r0
|
|
ldr r0, =gPlayerParty
|
|
adds r4, r1, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08165CF4
|
|
adds r0, r4, 0
|
|
movs r1, 0x41
|
|
movs r2, 0
|
|
bl GetMonData
|
|
movs r1, 0xCE
|
|
lsls r1, 1
|
|
cmp r0, r1
|
|
beq _08165CF4
|
|
adds r0, r4, 0
|
|
movs r1, 0x38
|
|
movs r2, 0
|
|
bl GetMonData
|
|
cmp r0, r6
|
|
ble _08165CF4
|
|
adds r6, r0, 0
|
|
_08165CF4:
|
|
adds r5, 0x1
|
|
cmp r5, 0x5
|
|
ble _08165CBA
|
|
adds r0, r6, 0
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_8165CB4
|
|
|
|
thumb_func_start sub_8165D08
|
|
sub_8165D08: @ 8165D08
|
|
push {lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x3
|
|
cmp r0, 0x63
|
|
bls _08165D3A
|
|
movs r1, 0x6
|
|
cmp r0, 0x77
|
|
bls _08165D3A
|
|
movs r1, 0x9
|
|
cmp r0, 0x8B
|
|
bls _08165D3A
|
|
movs r1, 0xC
|
|
cmp r0, 0x9F
|
|
bls _08165D3A
|
|
movs r1, 0xF
|
|
cmp r0, 0xB3
|
|
bls _08165D3A
|
|
movs r1, 0x12
|
|
cmp r0, 0xC7
|
|
bls _08165D3A
|
|
movs r1, 0x1F
|
|
cmp r0, 0xDB
|
|
bhi _08165D3A
|
|
movs r1, 0x15
|
|
_08165D3A:
|
|
adds r0, r1, 0
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8165D08
|
|
|
|
thumb_func_start sub_8165D40
|
|
sub_8165D40: @ 8165D40
|
|
push {lr}
|
|
ldr r0, =0x000040cf
|
|
bl VarGet
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x2
|
|
beq _08165D58
|
|
cmp r0, 0x3
|
|
beq _08165D58
|
|
cmp r0, 0x4
|
|
bne _08165D70
|
|
_08165D58:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x1E
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
b _08165D72
|
|
.pool
|
|
_08165D70:
|
|
movs r0, 0
|
|
_08165D72:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8165D40
|
|
|
|
thumb_func_start GetTentEnemyMonLevel
|
|
GetTentEnemyMonLevel: @ 8165D78
|
|
push {lr}
|
|
ldr r0, =0x000040cf
|
|
bl VarGet
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x4
|
|
bne _08165DA8
|
|
ldr r1, =gFacilityTrainers
|
|
ldr r0, =gSlateportBattleTentTrainers
|
|
str r0, [r1]
|
|
ldr r1, =gFacilityTrainerMons
|
|
ldr r0, =gSlateportBattleTentMons
|
|
b _08165DF2
|
|
.pool
|
|
_08165DA8:
|
|
cmp r0, 0x2
|
|
bne _08165DC8
|
|
ldr r1, =gFacilityTrainers
|
|
ldr r0, =gVerdanturfBattleTentTrainers
|
|
str r0, [r1]
|
|
ldr r1, =gFacilityTrainerMons
|
|
ldr r0, =gVerdanturfBattleTentMons
|
|
b _08165DF2
|
|
.pool
|
|
_08165DC8:
|
|
cmp r0, 0x3
|
|
bne _08165DE8
|
|
ldr r1, =gFacilityTrainers
|
|
ldr r0, =gFallarborBattleTentTrainers
|
|
str r0, [r1]
|
|
ldr r1, =gFacilityTrainerMons
|
|
ldr r0, =gFallarborBattleTentMons
|
|
b _08165DF2
|
|
.pool
|
|
_08165DE8:
|
|
ldr r1, =gFacilityTrainers
|
|
ldr r0, =gBattleFrontierTrainers
|
|
str r0, [r1]
|
|
ldr r1, =gFacilityTrainerMons
|
|
ldr r0, =gBattleFrontierMons
|
|
_08165DF2:
|
|
str r0, [r1]
|
|
bl sub_8165CB4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1D
|
|
bhi _08165E02
|
|
movs r0, 0x1E
|
|
_08165E02:
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end GetTentEnemyMonLevel
|
|
|
|
thumb_func_start sub_8165E18
|
|
sub_8165E18: @ 8165E18
|
|
push {r4,r5,lr}
|
|
ldr r5, =gSaveBlock2Ptr
|
|
_08165E1C:
|
|
bl sub_8165D40
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
movs r3, 0
|
|
ldr r1, [r5]
|
|
ldr r2, =0x00000cb2
|
|
adds r0, r1, r2
|
|
ldrh r0, [r0]
|
|
cmp r3, r0
|
|
bge _08165E58
|
|
adds r2, 0x2
|
|
adds r0, r1, r2
|
|
ldrh r0, [r0]
|
|
cmp r0, r4
|
|
beq _08165E58
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
subs r2, 0x2
|
|
adds r0, r1, r2
|
|
ldrh r2, [r0]
|
|
ldr r0, =0x00000cb4
|
|
adds r1, r0
|
|
_08165E4A:
|
|
adds r1, 0x2
|
|
adds r3, 0x1
|
|
cmp r3, r2
|
|
bge _08165E58
|
|
ldrh r0, [r1]
|
|
cmp r0, r4
|
|
bne _08165E4A
|
|
_08165E58:
|
|
ldr r0, [r5]
|
|
ldr r1, =0x00000cb2
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
cmp r3, r0
|
|
bne _08165E1C
|
|
ldr r5, =gTrainerBattleOpponent_A
|
|
strh r4, [r5]
|
|
ldrh r0, [r5]
|
|
movs r1, 0
|
|
bl sub_8162614
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
ldr r2, =0x00000cb2
|
|
adds r0, r1, r2
|
|
ldrh r2, [r0]
|
|
adds r0, r2, 0x1
|
|
cmp r0, 0x2
|
|
bgt _08165E8C
|
|
lsls r0, r2, 1
|
|
ldr r2, =0x00000cb4
|
|
adds r1, r2
|
|
adds r1, r0
|
|
ldrh r0, [r5]
|
|
strh r0, [r1]
|
|
_08165E8C:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8165E18
|
|
|
|
thumb_func_start sub_8165EA4
|
|
sub_8165EA4: @ 8165EA4
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x38
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
str r1, [sp, 0x18]
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
str r2, [sp, 0x1C]
|
|
bl GetTentEnemyMonLevel
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x20]
|
|
ldr r0, =gTrainerBattleOpponent_A
|
|
ldrh r2, [r0]
|
|
ldr r0, =gFacilityTrainers
|
|
ldr r1, [r0]
|
|
movs r0, 0x34
|
|
muls r0, r2
|
|
adds r0, r1
|
|
ldr r0, [r0, 0x30]
|
|
str r0, [sp, 0x28]
|
|
movs r0, 0
|
|
str r0, [sp, 0x24]
|
|
ldr r2, [sp, 0x28]
|
|
ldrh r1, [r2]
|
|
b _08165EFE
|
|
.pool
|
|
_08165EEC:
|
|
ldr r0, [sp, 0x24]
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x24]
|
|
lsls r0, 1
|
|
ldr r6, [sp, 0x28]
|
|
adds r0, r6
|
|
ldrh r1, [r0]
|
|
_08165EFE:
|
|
ldr r0, =0x0000ffff
|
|
cmp r1, r0
|
|
bne _08165EEC
|
|
movs r0, 0
|
|
mov r8, r0
|
|
bl Random
|
|
adds r4, r0, 0
|
|
bl Random
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
lsls r0, 16
|
|
orrs r4, r0
|
|
str r4, [sp, 0x2C]
|
|
b _08166092
|
|
.pool
|
|
_08165F24:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r1, [sp, 0x24]
|
|
bl __modsi3
|
|
lsls r0, 1
|
|
ldr r2, [sp, 0x28]
|
|
adds r0, r2
|
|
ldrh r4, [r0]
|
|
movs r6, 0
|
|
ldr r7, [sp, 0x18]
|
|
add r7, r8
|
|
b _08165F44
|
|
_08165F42:
|
|
adds r6, 0x1
|
|
_08165F44:
|
|
cmp r6, r7
|
|
bge _08165F68
|
|
movs r1, 0x64
|
|
adds r0, r6, 0
|
|
muls r0, r1
|
|
ldr r2, =gEnemyParty
|
|
adds r0, r2
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
ldr r1, =gFacilityTrainerMons
|
|
ldr r2, [r1]
|
|
lsls r1, r4, 4
|
|
adds r1, r2
|
|
ldrh r1, [r1]
|
|
cmp r0, r1
|
|
bne _08165F42
|
|
_08165F68:
|
|
cmp r6, r7
|
|
beq _08165F6E
|
|
b _08166092
|
|
_08165F6E:
|
|
movs r6, 0
|
|
cmp r6, r7
|
|
bge _08165FB8
|
|
ldr r0, =gBattleFrontierHeldItems
|
|
mov r9, r0
|
|
movs r3, 0
|
|
_08165F7A:
|
|
ldr r1, =gEnemyParty
|
|
adds r5, r3, r1
|
|
adds r0, r5, 0
|
|
movs r1, 0xC
|
|
movs r2, 0
|
|
str r3, [sp, 0x34]
|
|
bl GetMonData
|
|
ldr r3, [sp, 0x34]
|
|
cmp r0, 0
|
|
beq _08165FB0
|
|
adds r0, r5, 0
|
|
movs r1, 0xC
|
|
movs r2, 0
|
|
bl GetMonData
|
|
ldr r1, =gFacilityTrainerMons
|
|
ldr r2, [r1]
|
|
lsls r1, r4, 4
|
|
adds r1, r2
|
|
ldrb r1, [r1, 0xA]
|
|
lsls r1, 1
|
|
add r1, r9
|
|
ldr r3, [sp, 0x34]
|
|
ldrh r1, [r1]
|
|
cmp r0, r1
|
|
beq _08165FB8
|
|
_08165FB0:
|
|
adds r3, 0x64
|
|
adds r6, 0x1
|
|
cmp r6, r7
|
|
blt _08165F7A
|
|
_08165FB8:
|
|
cmp r6, r7
|
|
bne _08166092
|
|
movs r6, 0
|
|
cmp r6, r8
|
|
bge _08165FDA
|
|
add r0, sp, 0xC
|
|
ldrh r0, [r0]
|
|
cmp r0, r4
|
|
beq _08165FDA
|
|
add r1, sp, 0xC
|
|
_08165FCC:
|
|
adds r1, 0x2
|
|
adds r6, 0x1
|
|
cmp r6, r8
|
|
bge _08165FDA
|
|
ldrh r0, [r1]
|
|
cmp r0, r4
|
|
bne _08165FCC
|
|
_08165FDA:
|
|
cmp r6, r8
|
|
bne _08166092
|
|
mov r2, r8
|
|
lsls r0, r2, 1
|
|
add r0, sp
|
|
adds r0, 0xC
|
|
strh r4, [r0]
|
|
movs r6, 0x64
|
|
adds r0, r7, 0
|
|
muls r0, r6
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
ldr r5, =gFacilityTrainerMons
|
|
ldr r2, [r5]
|
|
lsls r4, 4
|
|
adds r2, r4, r2
|
|
ldrh r1, [r2]
|
|
ldrb r3, [r2, 0xC]
|
|
movs r6, 0
|
|
str r6, [sp]
|
|
ldrb r2, [r2, 0xB]
|
|
str r2, [sp, 0x4]
|
|
ldr r2, [sp, 0x2C]
|
|
str r2, [sp, 0x8]
|
|
ldr r2, [sp, 0x20]
|
|
bl CreateMonWithEVSpreadPersonalityOTID
|
|
add r1, sp, 0x14
|
|
movs r0, 0xFF
|
|
strb r0, [r1]
|
|
mov r9, r4
|
|
mov r0, r8
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x30]
|
|
movs r0, 0x64
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
mov r8, r1
|
|
adds r3, r5, 0
|
|
mov r5, r9
|
|
ldr r2, =gEnemyParty
|
|
mov r10, r2
|
|
_0816602E:
|
|
ldr r0, [r3]
|
|
adds r0, r5, r0
|
|
lsls r4, r6, 1
|
|
adds r0, 0x2
|
|
adds r0, r4
|
|
ldrh r1, [r0]
|
|
lsls r2, r6, 24
|
|
lsrs r2, 24
|
|
mov r0, r8
|
|
add r0, r10
|
|
str r3, [sp, 0x34]
|
|
bl SetMonMoveSlot
|
|
ldr r3, [sp, 0x34]
|
|
ldr r0, [r3]
|
|
adds r0, r5, r0
|
|
adds r0, 0x2
|
|
adds r0, r4
|
|
ldrh r0, [r0]
|
|
cmp r0, 0xDA
|
|
bne _0816605E
|
|
movs r0, 0
|
|
mov r1, sp
|
|
strb r0, [r1, 0x14]
|
|
_0816605E:
|
|
adds r6, 0x1
|
|
cmp r6, 0x3
|
|
ble _0816602E
|
|
movs r2, 0x64
|
|
adds r4, r7, 0
|
|
muls r4, r2
|
|
ldr r6, =gEnemyParty
|
|
adds r4, r6
|
|
adds r0, r4, 0
|
|
movs r1, 0x20
|
|
add r2, sp, 0x14
|
|
bl SetMonData
|
|
ldr r0, =gFacilityTrainerMons
|
|
ldr r0, [r0]
|
|
add r0, r9
|
|
ldrb r2, [r0, 0xA]
|
|
lsls r2, 1
|
|
ldr r0, =gBattleFrontierHeldItems
|
|
adds r2, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0xC
|
|
bl SetMonData
|
|
ldr r0, [sp, 0x30]
|
|
mov r8, r0
|
|
_08166092:
|
|
ldr r1, [sp, 0x1C]
|
|
cmp r8, r1
|
|
beq _0816609A
|
|
b _08165F24
|
|
_0816609A:
|
|
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_8165EA4
|
|
|
|
thumb_func_start sub_81660B8
|
|
sub_81660B8: @ 81660B8
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
movs r1, 0
|
|
ldr r3, =gUnknown_085DCEDC
|
|
ldrb r0, [r3]
|
|
cmp r0, r2
|
|
beq _081660DA
|
|
_081660C8:
|
|
adds r0, r1, 0x1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0x1D
|
|
bhi _081660DA
|
|
adds r0, r1, r3
|
|
ldrb r0, [r0]
|
|
cmp r0, r2
|
|
bne _081660C8
|
|
_081660DA:
|
|
cmp r1, 0x1E
|
|
beq _081660EC
|
|
ldr r0, =gUnknown_085DCF0E
|
|
b _08166116
|
|
.pool
|
|
_081660EC:
|
|
movs r1, 0
|
|
ldr r3, =gUnknown_085DCEFA
|
|
ldrb r0, [r3]
|
|
cmp r0, r2
|
|
beq _08166108
|
|
_081660F6:
|
|
adds r0, r1, 0x1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0x13
|
|
bhi _08166108
|
|
adds r0, r1, r3
|
|
ldrb r0, [r0]
|
|
cmp r0, r2
|
|
bne _081660F6
|
|
_08166108:
|
|
cmp r1, 0x14
|
|
bne _08166114
|
|
movs r0, 0x7
|
|
b _0816611A
|
|
.pool
|
|
_08166114:
|
|
ldr r0, =gUnknown_085DCF2C
|
|
_08166116:
|
|
adds r0, r1, r0
|
|
ldrb r0, [r0]
|
|
_0816611A:
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_81660B8
|
|
|
|
thumb_func_start sub_8166124
|
|
sub_8166124: @ 8166124
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r2, =gSaveBlock2Ptr
|
|
movs r0, 0xEC
|
|
muls r0, r6
|
|
movs r1, 0xE7
|
|
lsls r1, 3
|
|
adds r0, r1
|
|
ldr r1, [r2]
|
|
movs r5, 0
|
|
movs r4, 0
|
|
movs r3, 0
|
|
adds r1, r0
|
|
_08166140:
|
|
ldm r1!, {r0}
|
|
adds r5, r0
|
|
orrs r4, r0
|
|
adds r3, 0x1
|
|
cmp r3, 0x39
|
|
bls _08166140
|
|
cmp r5, 0
|
|
bne _08166154
|
|
cmp r4, 0
|
|
beq _08166180
|
|
_08166154:
|
|
ldr r2, [r2]
|
|
movs r0, 0xEC
|
|
adds r1, r6, 0
|
|
muls r1, r0
|
|
movs r3, 0x82
|
|
lsls r3, 4
|
|
adds r0, r2, r3
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
cmp r0, r5
|
|
bne _08166174
|
|
movs r0, 0x1
|
|
b _08166182
|
|
.pool
|
|
_08166174:
|
|
movs r3, 0xE7
|
|
lsls r3, 3
|
|
adds r0, r1, r3
|
|
adds r0, r2, r0
|
|
bl sub_8164FB8
|
|
_08166180:
|
|
movs r0, 0
|
|
_08166182:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_8166124
|
|
|
|
thumb_func_start sub_8166188
|
|
sub_8166188: @ 8166188
|
|
push {r4-r7,lr}
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ldr r1, =0x02000002
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _081661E8
|
|
bl GetFacilityEnemyMonLevel
|
|
lsls r0, 24
|
|
movs r5, 0
|
|
ldr r7, =gBaseStats
|
|
lsrs r0, 22
|
|
ldr r1, =gExperienceTables
|
|
adds r6, r0, r1
|
|
_081661A6:
|
|
movs r0, 0x64
|
|
adds r1, r5, 0
|
|
muls r1, r0
|
|
ldr r0, =gEnemyParty
|
|
adds r4, r1, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
cmp r1, 0
|
|
beq _081661E2
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
adds r0, r7
|
|
ldrb r1, [r0, 0x13]
|
|
movs r0, 0xCA
|
|
lsls r0, 1
|
|
adds r2, r1, 0
|
|
muls r2, r0
|
|
adds r2, r6
|
|
adds r0, r4, 0
|
|
movs r1, 0x19
|
|
bl SetMonData
|
|
adds r0, r4, 0
|
|
bl CalculateMonStats
|
|
_081661E2:
|
|
adds r5, 0x1
|
|
cmp r5, 0x5
|
|
ble _081661A6
|
|
_081661E8:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8166188
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|