mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-25 19:24:16 +01:00
Document recorded battle
This commit is contained in:
parent
7de1c4bd14
commit
37d742cbd8
@ -6,512 +6,7 @@
|
|||||||
.text
|
.text
|
||||||
|
|
||||||
|
|
||||||
thumb_func_start CreateFrontierBrainPokemon
|
|
||||||
CreateFrontierBrainPokemon: @ 81A4E04
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r10
|
|
||||||
mov r6, r9
|
|
||||||
mov r5, r8
|
|
||||||
push {r5-r7}
|
|
||||||
sub sp, 0x44
|
|
||||||
ldr r0, =0x000040cf
|
|
||||||
bl VarGet
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
str r0, [sp, 0x20]
|
|
||||||
bl sub_81A513C
|
|
||||||
str r0, [sp, 0x24]
|
|
||||||
ldr r0, [sp, 0x20]
|
|
||||||
cmp r0, 0x1
|
|
||||||
bne _081A4E44
|
|
||||||
ldr r0, =0x000003fe
|
|
||||||
bl TrainerIdToDomeTournamentId
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
bl GetTrainerMonCountInBits
|
|
||||||
adds r4, r0, 0
|
|
||||||
b _081A4E46
|
|
||||||
.pool
|
|
||||||
_081A4E44:
|
|
||||||
movs r4, 0x7
|
|
||||||
_081A4E46:
|
|
||||||
bl ZeroEnemyPartyMons
|
|
||||||
movs r1, 0
|
|
||||||
str r1, [sp, 0x18]
|
|
||||||
bl SetFacilityPtrsGetLevel
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
str r0, [sp, 0x1C]
|
|
||||||
movs r2, 0
|
|
||||||
str r2, [sp, 0x14]
|
|
||||||
_081A4E5C:
|
|
||||||
movs r0, 0x1
|
|
||||||
ands r0, r4
|
|
||||||
asrs r4, 1
|
|
||||||
str r4, [sp, 0x30]
|
|
||||||
ldr r3, [sp, 0x14]
|
|
||||||
adds r3, 0x1
|
|
||||||
str r3, [sp, 0x28]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _081A4E70
|
|
||||||
b _081A4FC4
|
|
||||||
_081A4E70:
|
|
||||||
ldr r4, [sp, 0x14]
|
|
||||||
lsls r4, 2
|
|
||||||
mov r9, r4
|
|
||||||
ldr r0, [sp, 0x24]
|
|
||||||
lsls r0, 4
|
|
||||||
str r0, [sp, 0x38]
|
|
||||||
ldr r1, [sp, 0x20]
|
|
||||||
lsls r1, 4
|
|
||||||
str r1, [sp, 0x34]
|
|
||||||
ldr r2, [sp, 0x1C]
|
|
||||||
lsls r2, 24
|
|
||||||
str r2, [sp, 0x3C]
|
|
||||||
ldr r3, [sp, 0x18]
|
|
||||||
adds r3, 0x1
|
|
||||||
str r3, [sp, 0x2C]
|
|
||||||
ldr r0, [sp, 0x14]
|
|
||||||
add r0, r9
|
|
||||||
lsls r0, 2
|
|
||||||
mov r8, r0
|
|
||||||
_081A4E96:
|
|
||||||
bl Random
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl Random
|
|
||||||
lsls r4, 16
|
|
||||||
lsrs r7, r4, 16
|
|
||||||
lsls r0, 16
|
|
||||||
orrs r7, r0
|
|
||||||
ldr r0, =0x0000ef2a
|
|
||||||
adds r1, r7, 0
|
|
||||||
bl IsShinyOtIdPersonality
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _081A4E96
|
|
||||||
ldr r4, [sp, 0x38]
|
|
||||||
ldr r1, [sp, 0x24]
|
|
||||||
subs r0, r4, r1
|
|
||||||
lsls r5, r0, 2
|
|
||||||
mov r2, r8
|
|
||||||
adds r4, r2, r5
|
|
||||||
ldr r3, [sp, 0x34]
|
|
||||||
ldr r1, [sp, 0x20]
|
|
||||||
subs r0, r3, r1
|
|
||||||
lsls r6, r0, 3
|
|
||||||
adds r4, r6
|
|
||||||
ldr r2, =sFrontierBrainsMons
|
|
||||||
adds r4, r2
|
|
||||||
adds r0, r7, 0
|
|
||||||
bl GetNatureFromPersonality
|
|
||||||
ldrb r1, [r4, 0x5]
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r1, r0
|
|
||||||
bne _081A4E96
|
|
||||||
ldr r4, [sp, 0x18]
|
|
||||||
movs r0, 0x64
|
|
||||||
adds r3, r4, 0
|
|
||||||
muls r3, r0
|
|
||||||
mov r8, r3
|
|
||||||
ldr r1, =gEnemyParty
|
|
||||||
add r1, r8
|
|
||||||
mov r10, r1
|
|
||||||
ldr r4, [sp, 0x14]
|
|
||||||
add r4, r9
|
|
||||||
lsls r4, 2
|
|
||||||
adds r0, r4, r5
|
|
||||||
adds r0, r6
|
|
||||||
ldr r2, =sFrontierBrainsMons
|
|
||||||
adds r0, r2
|
|
||||||
ldrh r1, [r0]
|
|
||||||
ldr r3, [sp, 0x3C]
|
|
||||||
lsrs r2, r3, 24
|
|
||||||
ldrb r3, [r0, 0x4]
|
|
||||||
movs r0, 0x1
|
|
||||||
str r0, [sp]
|
|
||||||
str r7, [sp, 0x4]
|
|
||||||
str r0, [sp, 0x8]
|
|
||||||
ldr r0, =0x0000ef2a
|
|
||||||
str r0, [sp, 0xC]
|
|
||||||
mov r0, r10
|
|
||||||
bl CreateMon
|
|
||||||
ldr r0, =sFrontierBrainsMons
|
|
||||||
adds r5, r0
|
|
||||||
adds r5, r6, r5
|
|
||||||
adds r4, r5, r4
|
|
||||||
adds r4, 0x2
|
|
||||||
mov r0, r10
|
|
||||||
movs r1, 0xC
|
|
||||||
adds r2, r4, 0
|
|
||||||
bl SetMonData
|
|
||||||
movs r7, 0
|
|
||||||
mov r6, r8
|
|
||||||
ldr r3, =gEnemyParty
|
|
||||||
_081A4F32:
|
|
||||||
adds r1, r7, 0
|
|
||||||
adds r1, 0x1A
|
|
||||||
ldr r0, [sp, 0x14]
|
|
||||||
add r0, r9
|
|
||||||
lsls r4, r0, 2
|
|
||||||
adds r2, r5, r4
|
|
||||||
adds r0, r7, 0x6
|
|
||||||
adds r2, r0
|
|
||||||
adds r0, r6, r3
|
|
||||||
str r3, [sp, 0x40]
|
|
||||||
bl SetMonData
|
|
||||||
adds r7, 0x1
|
|
||||||
ldr r3, [sp, 0x40]
|
|
||||||
cmp r7, 0x5
|
|
||||||
ble _081A4F32
|
|
||||||
movs r1, 0xFF
|
|
||||||
add r0, sp, 0x10
|
|
||||||
strb r1, [r0]
|
|
||||||
movs r7, 0
|
|
||||||
ldr r1, [sp, 0x18]
|
|
||||||
movs r2, 0x64
|
|
||||||
adds r6, r1, 0
|
|
||||||
muls r6, r2
|
|
||||||
ldr r3, =gUnknown_08611578
|
|
||||||
mov r8, r3
|
|
||||||
ldr r3, =gEnemyParty
|
|
||||||
adds r5, r4, 0
|
|
||||||
_081A4F6A:
|
|
||||||
ldr r4, [sp, 0x38]
|
|
||||||
ldr r0, [sp, 0x24]
|
|
||||||
subs r1, r4, r0
|
|
||||||
lsls r1, 2
|
|
||||||
adds r1, r5, r1
|
|
||||||
ldr r2, [sp, 0x34]
|
|
||||||
ldr r4, [sp, 0x20]
|
|
||||||
subs r0, r2, r4
|
|
||||||
lsls r0, 3
|
|
||||||
adds r1, r0
|
|
||||||
add r1, r8
|
|
||||||
ldrh r4, [r1]
|
|
||||||
lsls r2, r7, 24
|
|
||||||
lsrs r2, 24
|
|
||||||
adds r0, r6, r3
|
|
||||||
adds r1, r4, 0
|
|
||||||
str r3, [sp, 0x40]
|
|
||||||
bl SetMonMoveSlot
|
|
||||||
ldr r3, [sp, 0x40]
|
|
||||||
cmp r4, 0xDA
|
|
||||||
bne _081A4F9C
|
|
||||||
movs r1, 0
|
|
||||||
add r0, sp, 0x10
|
|
||||||
strb r1, [r0]
|
|
||||||
_081A4F9C:
|
|
||||||
adds r5, 0x2
|
|
||||||
adds r7, 0x1
|
|
||||||
cmp r7, 0x3
|
|
||||||
ble _081A4F6A
|
|
||||||
ldr r0, [sp, 0x18]
|
|
||||||
movs r1, 0x64
|
|
||||||
adds r4, r0, 0
|
|
||||||
muls r4, r1
|
|
||||||
ldr r0, =gEnemyParty
|
|
||||||
adds r4, r0
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0x20
|
|
||||||
add r2, sp, 0x10
|
|
||||||
bl SetMonData
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl CalculateMonStats
|
|
||||||
ldr r2, [sp, 0x2C]
|
|
||||||
str r2, [sp, 0x18]
|
|
||||||
_081A4FC4:
|
|
||||||
ldr r4, [sp, 0x30]
|
|
||||||
ldr r3, [sp, 0x28]
|
|
||||||
str r3, [sp, 0x14]
|
|
||||||
cmp r3, 0x2
|
|
||||||
bgt _081A4FD0
|
|
||||||
b _081A4E5C
|
|
||||||
_081A4FD0:
|
|
||||||
add sp, 0x44
|
|
||||||
pop {r3-r5}
|
|
||||||
mov r8, r3
|
|
||||||
mov r9, r4
|
|
||||||
mov r10, r5
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end CreateFrontierBrainPokemon
|
|
||||||
|
|
||||||
thumb_func_start sub_81A4FF0
|
|
||||||
sub_81A4FF0: @ 81A4FF0
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
ldr r0, =0x000040cf
|
|
||||||
bl VarGet
|
|
||||||
adds r5, r0, 0
|
|
||||||
lsls r5, 16
|
|
||||||
lsrs r5, 16
|
|
||||||
bl sub_81A513C
|
|
||||||
ldr r3, =sFrontierBrainsMons
|
|
||||||
lsls r2, r4, 2
|
|
||||||
adds r2, r4
|
|
||||||
lsls r1, r0, 4
|
|
||||||
subs r1, r0
|
|
||||||
adds r1, r2
|
|
||||||
lsls r1, 2
|
|
||||||
lsls r0, r5, 4
|
|
||||||
subs r0, r5
|
|
||||||
lsls r0, 3
|
|
||||||
adds r1, r0
|
|
||||||
adds r1, r3
|
|
||||||
ldrh r0, [r1]
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81A4FF0
|
|
||||||
|
|
||||||
thumb_func_start sub_81A5030
|
|
||||||
sub_81A5030: @ 81A5030
|
|
||||||
push {lr}
|
|
||||||
lsls r0, 24
|
|
||||||
ldr r2, =gTrainerBattleOpponent_A
|
|
||||||
ldr r3, =0x000003fe
|
|
||||||
adds r1, r3, 0
|
|
||||||
strh r1, [r2]
|
|
||||||
ldr r2, =0x00004010
|
|
||||||
ldr r1, =gUnknown_08611C8C
|
|
||||||
lsrs r0, 23
|
|
||||||
adds r0, r1
|
|
||||||
ldrb r1, [r0]
|
|
||||||
adds r0, r2, 0
|
|
||||||
bl VarSet
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81A5030
|
|
||||||
|
|
||||||
thumb_func_start sub_81A5060
|
|
||||||
sub_81A5060: @ 81A5060
|
|
||||||
push {r4-r6,lr}
|
|
||||||
adds r6, r0, 0
|
|
||||||
adds r4, r1, 0
|
|
||||||
lsls r6, 24
|
|
||||||
lsrs r6, 24
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
ldr r0, =0x000040cf
|
|
||||||
bl VarGet
|
|
||||||
adds r5, r0, 0
|
|
||||||
lsls r5, 16
|
|
||||||
lsrs r5, 16
|
|
||||||
bl sub_81A513C
|
|
||||||
ldr r2, =sFrontierBrainsMons
|
|
||||||
lsls r4, 1
|
|
||||||
lsls r1, r6, 2
|
|
||||||
adds r1, r6
|
|
||||||
lsls r1, 2
|
|
||||||
adds r4, r1
|
|
||||||
lsls r1, r0, 4
|
|
||||||
subs r1, r0
|
|
||||||
lsls r1, 2
|
|
||||||
adds r4, r1
|
|
||||||
lsls r0, r5, 4
|
|
||||||
subs r0, r5
|
|
||||||
lsls r0, 3
|
|
||||||
adds r4, r0
|
|
||||||
adds r2, 0xC
|
|
||||||
adds r4, r2
|
|
||||||
ldrh r0, [r4]
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81A5060
|
|
||||||
|
|
||||||
thumb_func_start sub_81A50B0
|
|
||||||
sub_81A50B0: @ 81A50B0
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
ldr r0, =0x000040cf
|
|
||||||
bl VarGet
|
|
||||||
adds r5, r0, 0
|
|
||||||
lsls r5, 16
|
|
||||||
lsrs r5, 16
|
|
||||||
bl sub_81A513C
|
|
||||||
ldr r3, =sFrontierBrainsMons
|
|
||||||
lsls r2, r4, 2
|
|
||||||
adds r2, r4
|
|
||||||
lsls r1, r0, 4
|
|
||||||
subs r1, r0
|
|
||||||
adds r1, r2
|
|
||||||
lsls r1, 2
|
|
||||||
lsls r0, r5, 4
|
|
||||||
subs r0, r5
|
|
||||||
lsls r0, 3
|
|
||||||
adds r1, r0
|
|
||||||
adds r1, r3
|
|
||||||
ldrb r0, [r1, 0x5]
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81A50B0
|
|
||||||
|
|
||||||
thumb_func_start sub_81A50F0
|
|
||||||
sub_81A50F0: @ 81A50F0
|
|
||||||
push {r4-r6,lr}
|
|
||||||
adds r6, r0, 0
|
|
||||||
adds r4, r1, 0
|
|
||||||
lsls r6, 24
|
|
||||||
lsrs r6, 24
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
ldr r0, =0x000040cf
|
|
||||||
bl VarGet
|
|
||||||
adds r5, r0, 0
|
|
||||||
lsls r5, 16
|
|
||||||
lsrs r5, 16
|
|
||||||
bl sub_81A513C
|
|
||||||
ldr r2, =sFrontierBrainsMons
|
|
||||||
lsls r1, r6, 2
|
|
||||||
adds r1, r6
|
|
||||||
lsls r1, 2
|
|
||||||
adds r4, r1
|
|
||||||
lsls r1, r0, 4
|
|
||||||
subs r1, r0
|
|
||||||
lsls r1, 2
|
|
||||||
adds r4, r1
|
|
||||||
lsls r0, r5, 4
|
|
||||||
subs r0, r5
|
|
||||||
lsls r0, 3
|
|
||||||
adds r4, r0
|
|
||||||
adds r2, 0x6
|
|
||||||
adds r4, r2
|
|
||||||
ldrb r0, [r4]
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81A50F0
|
|
||||||
|
|
||||||
thumb_func_start sub_81A513C
|
|
||||||
sub_81A513C: @ 81A513C
|
|
||||||
push {r4,r5,lr}
|
|
||||||
ldr r0, =0x000040cf
|
|
||||||
bl VarGet
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r5, r0, 16
|
|
||||||
lsls r0, r5, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl sub_81A3B30
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r4, r0, 24
|
|
||||||
cmp r4, 0x2
|
|
||||||
bne _081A51A0
|
|
||||||
bl GetCurrentFacilityWinStreak
|
|
||||||
lsls r0, 16
|
|
||||||
ldr r3, =gUnknown_08611550
|
|
||||||
lsls r2, r5, 2
|
|
||||||
adds r1, r3, 0x3
|
|
||||||
adds r1, r2, r1
|
|
||||||
lsrs r0, 16
|
|
||||||
ldrb r1, [r1]
|
|
||||||
adds r1, r0, r1
|
|
||||||
adds r0, r2, r3
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r1, r0
|
|
||||||
bne _081A5180
|
|
||||||
movs r4, 0
|
|
||||||
b _081A51A0
|
|
||||||
.pool
|
|
||||||
_081A5180:
|
|
||||||
adds r0, r3, 0x1
|
|
||||||
adds r0, r2, r0
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r1, r0
|
|
||||||
beq _081A519E
|
|
||||||
cmp r1, r0
|
|
||||||
ble _081A51A0
|
|
||||||
subs r0, r1, r0
|
|
||||||
adds r1, r3, 0x2
|
|
||||||
adds r1, r2, r1
|
|
||||||
ldrb r1, [r1]
|
|
||||||
bl __modsi3
|
|
||||||
cmp r0, 0
|
|
||||||
bne _081A51A0
|
|
||||||
_081A519E:
|
|
||||||
movs r4, 0x1
|
|
||||||
_081A51A0:
|
|
||||||
adds r0, r4, 0
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_81A513C
|
|
||||||
|
|
||||||
thumb_func_start sub_81A51A8
|
|
||||||
sub_81A51A8: @ 81A51A8
|
|
||||||
push {r4,r5,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r5, r0, 24
|
|
||||||
ldr r0, =gBattleTypeFlags
|
|
||||||
ldr r0, [r0]
|
|
||||||
movs r1, 0x80
|
|
||||||
lsls r1, 17
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
beq _081A51D4
|
|
||||||
bl GetRecordedBattleFrontierFacility
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r4, r0, 24
|
|
||||||
bl sub_8185EAC
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r1, r0, 24
|
|
||||||
b _081A51E4
|
|
||||||
.pool
|
|
||||||
_081A51D4:
|
|
||||||
ldr r0, =0x000040cf
|
|
||||||
bl VarGet
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r4, r0, 16
|
|
||||||
bl sub_81A513C
|
|
||||||
adds r1, r0, 0
|
|
||||||
_081A51E4:
|
|
||||||
cmp r5, 0
|
|
||||||
beq _081A51F4
|
|
||||||
cmp r5, 0x1
|
|
||||||
beq _081A5214
|
|
||||||
b _081A5228
|
|
||||||
.pool
|
|
||||||
_081A51F4:
|
|
||||||
ldr r0, =gStringVar4
|
|
||||||
ldr r2, =gUnknown_08611DB0
|
|
||||||
lsls r1, 2
|
|
||||||
adds r1, r2
|
|
||||||
ldr r2, [r1]
|
|
||||||
lsls r1, r4, 2
|
|
||||||
adds r1, r2
|
|
||||||
ldr r1, [r1]
|
|
||||||
bl StringCopy
|
|
||||||
b _081A5228
|
|
||||||
.pool
|
|
||||||
_081A5214:
|
|
||||||
ldr r0, =gStringVar4
|
|
||||||
ldr r2, =gUnknown_08611DB8
|
|
||||||
lsls r1, 2
|
|
||||||
adds r1, r2
|
|
||||||
ldr r2, [r1]
|
|
||||||
lsls r1, r4, 2
|
|
||||||
adds r1, r2
|
|
||||||
ldr r1, [r1]
|
|
||||||
bl StringCopy
|
|
||||||
_081A5228:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81A51A8
|
|
||||||
|
|
||||||
thumb_func_start sub_81A5238
|
thumb_func_start sub_81A5238
|
||||||
sub_81A5238: @ 81A5238
|
sub_81A5238: @ 81A5238
|
||||||
|
@ -18,5 +18,6 @@ u8 sub_81A6CA8(u8, u8);
|
|||||||
void sub_81A3908(void);
|
void sub_81A3908(void);
|
||||||
u32 GetCurrentFacilityWinStreak(void);
|
u32 GetCurrentFacilityWinStreak(void);
|
||||||
void ClearnRankingHallRecords(void);
|
void ClearnRankingHallRecords(void);
|
||||||
|
s32 GetFronterBrainSymbol(void);
|
||||||
|
|
||||||
#endif // GUARD_FRONTIER_UTIL_H
|
#endif // GUARD_FRONTIER_UTIL_H
|
||||||
|
@ -14,16 +14,16 @@ u8 sub_81850D0(void);
|
|||||||
u8 sub_81850DC(u8 *arg0);
|
u8 sub_81850DC(u8 *arg0);
|
||||||
void sub_81851A8(u8 *arg0);
|
void sub_81851A8(u8 *arg0);
|
||||||
bool32 CanCopyRecordedBattleSaveData(void);
|
bool32 CanCopyRecordedBattleSaveData(void);
|
||||||
u32 MoveRecordedBattleToSaveData(void);
|
bool32 MoveRecordedBattleToSaveData(void);
|
||||||
void PlayRecordedBattle(void (*CB2_After)(void));
|
void PlayRecordedBattle(void (*CB2_After)(void));
|
||||||
u8 GetRecordedBattleFrontierFacility(void);
|
u8 GetRecordedBattleFrontierFacility(void);
|
||||||
u8 sub_8185EAC(void);
|
u8 GetRecordedBattleFronterBrainSymbol(void);
|
||||||
void RecordedBattle_SaveParties(void);
|
void RecordedBattle_SaveParties(void);
|
||||||
u8 GetActiveBattlerLinkPlayerGender(void);
|
u8 GetActiveBattlerLinkPlayerGender(void);
|
||||||
void sub_8185F84(void);
|
void sub_8185F84(void);
|
||||||
void sub_8185F90(u16 arg0);
|
void sub_8185F90(u16 arg0);
|
||||||
u8 sub_8185FAC(void);
|
u8 sub_8185FAC(void);
|
||||||
u8 GetBattleStyleInRecordedBattle(void);
|
u8 GetBattleSceneInRecordedBattle(void);
|
||||||
u8 GetTextSpeedInRecordedBattle(void);
|
u8 GetTextSpeedInRecordedBattle(void);
|
||||||
void RecordedBattle_CopyBattlerMoves(void);
|
void RecordedBattle_CopyBattlerMoves(void);
|
||||||
void sub_818603C(u8 arg0);
|
void sub_818603C(u8 arg0);
|
||||||
@ -31,11 +31,11 @@ u32 GetAiScriptsInRecordedBattle(void);
|
|||||||
void sub_8186444(void);
|
void sub_8186444(void);
|
||||||
bool8 sub_8186450(void);
|
bool8 sub_8186450(void);
|
||||||
void sub_8186468(u8 *dst);
|
void sub_8186468(u8 *dst);
|
||||||
u8 sub_818649C(void);
|
u8 GetRecordedBattleRecordMixFriendClass(void);
|
||||||
u8 sub_81864A8(void);
|
u8 GetRecordedBattleApprenticeId(void);
|
||||||
u8 sub_81864B4(void);
|
u8 GetRecordedBattleRecordMixFriendLanguage(void);
|
||||||
u8 sub_81864C0(void);
|
u8 GetRecordedBattleApprenticeLanguage(void);
|
||||||
void sub_81864CC(void);
|
void RecordedBattle_SaveBattleOutcome(void);
|
||||||
u16 *sub_81864E0(void);
|
u16 *GetRecordedBattleEasyChatSpeech(void);
|
||||||
|
|
||||||
#endif // GUARD_RECORDED_BATTLE_H
|
#endif // GUARD_RECORDED_BATTLE_H
|
||||||
|
@ -3027,7 +3027,7 @@ static void BattleStartClearSetData(void)
|
|||||||
if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && gSaveBlock2Ptr->optionsBattleSceneOff == TRUE)
|
if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && gSaveBlock2Ptr->optionsBattleSceneOff == TRUE)
|
||||||
gHitMarker |= HITMARKER_NO_ANIMATIONS;
|
gHitMarker |= HITMARKER_NO_ANIMATIONS;
|
||||||
}
|
}
|
||||||
else if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) && GetBattleStyleInRecordedBattle())
|
else if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) && GetBattleSceneInRecordedBattle())
|
||||||
gHitMarker |= HITMARKER_NO_ANIMATIONS;
|
gHitMarker |= HITMARKER_NO_ANIMATIONS;
|
||||||
|
|
||||||
gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle;
|
gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle;
|
||||||
|
@ -769,14 +769,14 @@ u8 GetFrontierTrainerFrontSpriteId(u16 trainerId)
|
|||||||
else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
|
else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
|
||||||
{
|
{
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||||||
return gFacilityClassToPicIndex[sub_818649C()];
|
return gFacilityClassToPicIndex[GetRecordedBattleRecordMixFriendClass()];
|
||||||
else
|
else
|
||||||
return gFacilityClassToPicIndex[gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass];
|
return gFacilityClassToPicIndex[gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||||||
return gFacilityClassToPicIndex[gApprentices[sub_81864A8()].facilityClass];
|
return gFacilityClassToPicIndex[gApprentices[GetRecordedBattleApprenticeId()].facilityClass];
|
||||||
else
|
else
|
||||||
return gFacilityClassToPicIndex[gApprentices[gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id].facilityClass];
|
return gFacilityClassToPicIndex[gApprentices[gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id].facilityClass];
|
||||||
}
|
}
|
||||||
@ -807,7 +807,7 @@ u8 GetFrontierOpponentClass(u16 trainerId)
|
|||||||
{
|
{
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||||||
{
|
{
|
||||||
trainerClass = gFacilityClassToTrainerClass[sub_818649C()];
|
trainerClass = gFacilityClassToTrainerClass[GetRecordedBattleRecordMixFriendClass()];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -819,7 +819,7 @@ u8 GetFrontierOpponentClass(u16 trainerId)
|
|||||||
{
|
{
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||||||
{
|
{
|
||||||
trainerClass = gFacilityClassToTrainerClass[gApprentices[sub_81864A8()].facilityClass];
|
trainerClass = gFacilityClassToTrainerClass[gApprentices[GetRecordedBattleApprenticeId()].facilityClass];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -847,14 +847,14 @@ static u8 GetFrontierTrainerFacilityClass(u16 trainerId)
|
|||||||
else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
|
else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
|
||||||
{
|
{
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||||||
facilityClass = sub_818649C();
|
facilityClass = GetRecordedBattleRecordMixFriendClass();
|
||||||
else
|
else
|
||||||
facilityClass = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass;
|
facilityClass = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||||||
facilityClass = gApprentices[sub_81864A8()].facilityClass;
|
facilityClass = gApprentices[GetRecordedBattleApprenticeId()].facilityClass;
|
||||||
else
|
else
|
||||||
facilityClass = gApprentices[gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id].facilityClass;
|
facilityClass = gApprentices[gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id].facilityClass;
|
||||||
}
|
}
|
||||||
@ -907,8 +907,8 @@ void GetFrontierTrainerName(u8 *dst, u16 trainerId)
|
|||||||
|
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||||||
{
|
{
|
||||||
id = sub_81864A8();
|
id = GetRecordedBattleApprenticeId();
|
||||||
language = sub_81864C0();
|
language = GetRecordedBattleApprenticeLanguage();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1297,7 +1297,7 @@ static void HandleSpecialTrainerBattleEnd(void)
|
|||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
sub_81864CC();
|
RecordedBattle_SaveBattleOutcome();
|
||||||
switch (gBattleScripting.specialTrainerBattleType)
|
switch (gBattleScripting.specialTrainerBattleType)
|
||||||
{
|
{
|
||||||
case SPECIAL_BATTLE_TOWER:
|
case SPECIAL_BATTLE_TOWER:
|
||||||
@ -2527,14 +2527,14 @@ void GetBattleTowerTrainerLanguage(u8 *dst, u16 trainerId)
|
|||||||
else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
|
else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
|
||||||
{
|
{
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||||||
*dst = sub_81864B4();
|
*dst = GetRecordedBattleRecordMixFriendLanguage();
|
||||||
else
|
else
|
||||||
*dst = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].language;
|
*dst = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].language;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||||||
*dst = sub_81864C0();
|
*dst = GetRecordedBattleApprenticeLanguage();
|
||||||
else
|
else
|
||||||
*dst = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].language;
|
*dst = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].language;
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ static void ShowArenaResultsWindow(void);
|
|||||||
static void ShowPyramidResultsWindow(void);
|
static void ShowPyramidResultsWindow(void);
|
||||||
static void ShowLinkContestResultsWindow(void);
|
static void ShowLinkContestResultsWindow(void);
|
||||||
u8 sub_81A3610(void);
|
u8 sub_81A3610(void);
|
||||||
void sub_81A51A8(u8);
|
static void CopyFrontierBrainText(bool8 playerWonText);
|
||||||
void sub_81A5030(u8);
|
void sub_81A5030(u8);
|
||||||
|
|
||||||
// const rom data
|
// const rom data
|
||||||
@ -987,7 +987,7 @@ void CopyFrontierTrainerText(u8 whichText, u16 trainerId)
|
|||||||
if (trainerId == TRAINER_EREADER)
|
if (trainerId == TRAINER_EREADER)
|
||||||
FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.greeting);
|
FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.greeting);
|
||||||
else if (trainerId == TRAINER_FRONTIER_BRAIN)
|
else if (trainerId == TRAINER_FRONTIER_BRAIN)
|
||||||
sub_81A51A8(0);
|
CopyFrontierBrainText(FALSE);
|
||||||
else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
|
else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
|
||||||
FrontierSpeechToString(gFacilityTrainers[trainerId].speechBefore);
|
FrontierSpeechToString(gFacilityTrainers[trainerId].speechBefore);
|
||||||
else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
|
else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
|
||||||
@ -1002,7 +1002,7 @@ void CopyFrontierTrainerText(u8 whichText, u16 trainerId)
|
|||||||
}
|
}
|
||||||
else if (trainerId == TRAINER_FRONTIER_BRAIN)
|
else if (trainerId == TRAINER_FRONTIER_BRAIN)
|
||||||
{
|
{
|
||||||
sub_81A51A8(0);
|
CopyFrontierBrainText(FALSE);
|
||||||
}
|
}
|
||||||
else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
|
else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
|
||||||
{
|
{
|
||||||
@ -1011,14 +1011,14 @@ void CopyFrontierTrainerText(u8 whichText, u16 trainerId)
|
|||||||
else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
|
else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
|
||||||
{
|
{
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||||||
FrontierSpeechToString(sub_81864E0());
|
FrontierSpeechToString(GetRecordedBattleEasyChatSpeech());
|
||||||
else
|
else
|
||||||
FrontierSpeechToString(gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].speechWon);
|
FrontierSpeechToString(gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].speechWon);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||||||
FrontierSpeechToString(sub_81864E0());
|
FrontierSpeechToString(GetRecordedBattleEasyChatSpeech());
|
||||||
else
|
else
|
||||||
FrontierSpeechToString(gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].easyChatWords);
|
FrontierSpeechToString(gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].easyChatWords);
|
||||||
}
|
}
|
||||||
@ -1030,7 +1030,7 @@ void CopyFrontierTrainerText(u8 whichText, u16 trainerId)
|
|||||||
}
|
}
|
||||||
else if (trainerId == TRAINER_FRONTIER_BRAIN)
|
else if (trainerId == TRAINER_FRONTIER_BRAIN)
|
||||||
{
|
{
|
||||||
sub_81A51A8(1);
|
CopyFrontierBrainText(TRUE);
|
||||||
}
|
}
|
||||||
else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
|
else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
|
||||||
{
|
{
|
||||||
@ -1039,7 +1039,7 @@ void CopyFrontierTrainerText(u8 whichText, u16 trainerId)
|
|||||||
else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
|
else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
|
||||||
{
|
{
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||||||
FrontierSpeechToString(sub_81864E0());
|
FrontierSpeechToString(GetRecordedBattleEasyChatSpeech());
|
||||||
else
|
else
|
||||||
FrontierSpeechToString(gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].speechLost);
|
FrontierSpeechToString(gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].speechLost);
|
||||||
}
|
}
|
||||||
@ -1047,7 +1047,7 @@ void CopyFrontierTrainerText(u8 whichText, u16 trainerId)
|
|||||||
{
|
{
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||||||
{
|
{
|
||||||
trainerId = sub_81864A8();
|
trainerId = GetRecordedBattleApprenticeId();
|
||||||
FrontierSpeechToString(gApprentices[trainerId].easyChatWords);
|
FrontierSpeechToString(gApprentices[trainerId].easyChatWords);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1766,8 +1766,6 @@ void SetFrontierBrainTrainerGfxId(void)
|
|||||||
VarSet(VAR_OBJ_GFX_ID_0, gUnknown_08611C8C[facility][0]);
|
VarSet(VAR_OBJ_GFX_ID_0, gUnknown_08611C8C[facility][0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 sub_81A513C(void);
|
|
||||||
|
|
||||||
#define FRONTIER_BRAIN_OTID 61226
|
#define FRONTIER_BRAIN_OTID 61226
|
||||||
|
|
||||||
struct FrontierBrainMon
|
struct FrontierBrainMon
|
||||||
@ -1782,16 +1780,16 @@ struct FrontierBrainMon
|
|||||||
|
|
||||||
extern const struct FrontierBrainMon sFrontierBrainsMons[][2][3];
|
extern const struct FrontierBrainMon sFrontierBrainsMons[][2][3];
|
||||||
|
|
||||||
/*
|
#ifdef NONMATCHING
|
||||||
void CreateFrontierBrainPokemon(void)
|
void CreateFrontierBrainPokemon(void)
|
||||||
{
|
{
|
||||||
s32 i, j;
|
s32 i, j;
|
||||||
s32 monCountInBits;
|
s32 monCountInBits;
|
||||||
s32 monPartyId;
|
s32 monPartyId;
|
||||||
s32 monLevel;
|
s32 monLevel = 0;
|
||||||
u8 friendship;
|
u8 friendship;
|
||||||
s32 facility = VarGet(VAR_FRONTIER_FACILITY);
|
s32 facility = VarGet(VAR_FRONTIER_FACILITY);
|
||||||
s32 symbol = sub_81A513C();
|
s32 symbol = GetFronterBrainSymbol();
|
||||||
|
|
||||||
if (facility == FRONTIER_FACILITY_DOME)
|
if (facility == FRONTIER_FACILITY_DOME)
|
||||||
monCountInBits = GetTrainerMonCountInBits(TrainerIdToDomeTournamentId(TRAINER_FRONTIER_BRAIN));
|
monCountInBits = GetTrainerMonCountInBits(TrainerIdToDomeTournamentId(TRAINER_FRONTIER_BRAIN));
|
||||||
@ -1831,4 +1829,327 @@ void CreateFrontierBrainPokemon(void)
|
|||||||
monPartyId++;
|
monPartyId++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
#else
|
||||||
|
NAKED
|
||||||
|
void CreateFrontierBrainPokemon(void)
|
||||||
|
{
|
||||||
|
asm_unified("\n\
|
||||||
|
push {r4-r7,lr}\n\
|
||||||
|
mov r7, r10\n\
|
||||||
|
mov r6, r9\n\
|
||||||
|
mov r5, r8\n\
|
||||||
|
push {r5-r7}\n\
|
||||||
|
sub sp, 0x44\n\
|
||||||
|
ldr r0, =0x000040cf\n\
|
||||||
|
bl VarGet\n\
|
||||||
|
lsls r0, 16\n\
|
||||||
|
lsrs r0, 16\n\
|
||||||
|
str r0, [sp, 0x20]\n\
|
||||||
|
bl GetFronterBrainSymbol\n\
|
||||||
|
str r0, [sp, 0x24]\n\
|
||||||
|
ldr r0, [sp, 0x20]\n\
|
||||||
|
cmp r0, 0x1\n\
|
||||||
|
bne _081A4E44\n\
|
||||||
|
ldr r0, =0x000003fe\n\
|
||||||
|
bl TrainerIdToDomeTournamentId\n\
|
||||||
|
lsls r0, 16\n\
|
||||||
|
lsrs r0, 16\n\
|
||||||
|
bl GetTrainerMonCountInBits\n\
|
||||||
|
adds r4, r0, 0\n\
|
||||||
|
b _081A4E46\n\
|
||||||
|
.pool\n\
|
||||||
|
_081A4E44:\n\
|
||||||
|
movs r4, 0x7\n\
|
||||||
|
_081A4E46:\n\
|
||||||
|
bl ZeroEnemyPartyMons\n\
|
||||||
|
movs r1, 0\n\
|
||||||
|
str r1, [sp, 0x18]\n\
|
||||||
|
bl SetFacilityPtrsGetLevel\n\
|
||||||
|
lsls r0, 24\n\
|
||||||
|
lsrs r0, 24\n\
|
||||||
|
str r0, [sp, 0x1C]\n\
|
||||||
|
movs r2, 0\n\
|
||||||
|
str r2, [sp, 0x14]\n\
|
||||||
|
_081A4E5C:\n\
|
||||||
|
movs r0, 0x1\n\
|
||||||
|
ands r0, r4\n\
|
||||||
|
asrs r4, 1\n\
|
||||||
|
str r4, [sp, 0x30]\n\
|
||||||
|
ldr r3, [sp, 0x14]\n\
|
||||||
|
adds r3, 0x1\n\
|
||||||
|
str r3, [sp, 0x28]\n\
|
||||||
|
cmp r0, 0\n\
|
||||||
|
bne _081A4E70\n\
|
||||||
|
b _081A4FC4\n\
|
||||||
|
_081A4E70:\n\
|
||||||
|
ldr r4, [sp, 0x14]\n\
|
||||||
|
lsls r4, 2\n\
|
||||||
|
mov r9, r4\n\
|
||||||
|
ldr r0, [sp, 0x24]\n\
|
||||||
|
lsls r0, 4\n\
|
||||||
|
str r0, [sp, 0x38]\n\
|
||||||
|
ldr r1, [sp, 0x20]\n\
|
||||||
|
lsls r1, 4\n\
|
||||||
|
str r1, [sp, 0x34]\n\
|
||||||
|
ldr r2, [sp, 0x1C]\n\
|
||||||
|
lsls r2, 24\n\
|
||||||
|
str r2, [sp, 0x3C]\n\
|
||||||
|
ldr r3, [sp, 0x18]\n\
|
||||||
|
adds r3, 0x1\n\
|
||||||
|
str r3, [sp, 0x2C]\n\
|
||||||
|
ldr r0, [sp, 0x14]\n\
|
||||||
|
add r0, r9\n\
|
||||||
|
lsls r0, 2\n\
|
||||||
|
mov r8, r0\n\
|
||||||
|
_081A4E96:\n\
|
||||||
|
bl Random\n\
|
||||||
|
adds r4, r0, 0\n\
|
||||||
|
bl Random\n\
|
||||||
|
lsls r4, 16\n\
|
||||||
|
lsrs r7, r4, 16\n\
|
||||||
|
lsls r0, 16\n\
|
||||||
|
orrs r7, r0\n\
|
||||||
|
ldr r0, =0x0000ef2a\n\
|
||||||
|
adds r1, r7, 0\n\
|
||||||
|
bl IsShinyOtIdPersonality\n\
|
||||||
|
lsls r0, 24\n\
|
||||||
|
cmp r0, 0\n\
|
||||||
|
bne _081A4E96\n\
|
||||||
|
ldr r4, [sp, 0x38]\n\
|
||||||
|
ldr r1, [sp, 0x24]\n\
|
||||||
|
subs r0, r4, r1\n\
|
||||||
|
lsls r5, r0, 2\n\
|
||||||
|
mov r2, r8\n\
|
||||||
|
adds r4, r2, r5\n\
|
||||||
|
ldr r3, [sp, 0x34]\n\
|
||||||
|
ldr r1, [sp, 0x20]\n\
|
||||||
|
subs r0, r3, r1\n\
|
||||||
|
lsls r6, r0, 3\n\
|
||||||
|
adds r4, r6\n\
|
||||||
|
ldr r2, =sFrontierBrainsMons\n\
|
||||||
|
adds r4, r2\n\
|
||||||
|
adds r0, r7, 0\n\
|
||||||
|
bl GetNatureFromPersonality\n\
|
||||||
|
ldrb r1, [r4, 0x5]\n\
|
||||||
|
lsls r0, 24\n\
|
||||||
|
lsrs r0, 24\n\
|
||||||
|
cmp r1, r0\n\
|
||||||
|
bne _081A4E96\n\
|
||||||
|
ldr r4, [sp, 0x18]\n\
|
||||||
|
movs r0, 0x64\n\
|
||||||
|
adds r3, r4, 0\n\
|
||||||
|
muls r3, r0\n\
|
||||||
|
mov r8, r3\n\
|
||||||
|
ldr r1, =gEnemyParty\n\
|
||||||
|
add r1, r8\n\
|
||||||
|
mov r10, r1\n\
|
||||||
|
ldr r4, [sp, 0x14]\n\
|
||||||
|
add r4, r9\n\
|
||||||
|
lsls r4, 2\n\
|
||||||
|
adds r0, r4, r5\n\
|
||||||
|
adds r0, r6\n\
|
||||||
|
ldr r2, =sFrontierBrainsMons\n\
|
||||||
|
adds r0, r2\n\
|
||||||
|
ldrh r1, [r0]\n\
|
||||||
|
ldr r3, [sp, 0x3C]\n\
|
||||||
|
lsrs r2, r3, 24\n\
|
||||||
|
ldrb r3, [r0, 0x4]\n\
|
||||||
|
movs r0, 0x1\n\
|
||||||
|
str r0, [sp]\n\
|
||||||
|
str r7, [sp, 0x4]\n\
|
||||||
|
str r0, [sp, 0x8]\n\
|
||||||
|
ldr r0, =0x0000ef2a\n\
|
||||||
|
str r0, [sp, 0xC]\n\
|
||||||
|
mov r0, r10\n\
|
||||||
|
bl CreateMon\n\
|
||||||
|
ldr r0, =sFrontierBrainsMons\n\
|
||||||
|
adds r5, r0\n\
|
||||||
|
adds r5, r6, r5\n\
|
||||||
|
adds r4, r5, r4\n\
|
||||||
|
adds r4, 0x2\n\
|
||||||
|
mov r0, r10\n\
|
||||||
|
movs r1, 0xC\n\
|
||||||
|
adds r2, r4, 0\n\
|
||||||
|
bl SetMonData\n\
|
||||||
|
movs r7, 0\n\
|
||||||
|
mov r6, r8\n\
|
||||||
|
ldr r3, =gEnemyParty\n\
|
||||||
|
_081A4F32:\n\
|
||||||
|
adds r1, r7, 0\n\
|
||||||
|
adds r1, 0x1A\n\
|
||||||
|
ldr r0, [sp, 0x14]\n\
|
||||||
|
add r0, r9\n\
|
||||||
|
lsls r4, r0, 2\n\
|
||||||
|
adds r2, r5, r4\n\
|
||||||
|
adds r0, r7, 0x6\n\
|
||||||
|
adds r2, r0\n\
|
||||||
|
adds r0, r6, r3\n\
|
||||||
|
str r3, [sp, 0x40]\n\
|
||||||
|
bl SetMonData\n\
|
||||||
|
adds r7, 0x1\n\
|
||||||
|
ldr r3, [sp, 0x40]\n\
|
||||||
|
cmp r7, 0x5\n\
|
||||||
|
ble _081A4F32\n\
|
||||||
|
movs r1, 0xFF\n\
|
||||||
|
add r0, sp, 0x10\n\
|
||||||
|
strb r1, [r0]\n\
|
||||||
|
movs r7, 0\n\
|
||||||
|
ldr r1, [sp, 0x18]\n\
|
||||||
|
movs r2, 0x64\n\
|
||||||
|
adds r6, r1, 0\n\
|
||||||
|
muls r6, r2\n\
|
||||||
|
ldr r3, =gUnknown_08611578\n\
|
||||||
|
mov r8, r3\n\
|
||||||
|
ldr r3, =gEnemyParty\n\
|
||||||
|
adds r5, r4, 0\n\
|
||||||
|
_081A4F6A:\n\
|
||||||
|
ldr r4, [sp, 0x38]\n\
|
||||||
|
ldr r0, [sp, 0x24]\n\
|
||||||
|
subs r1, r4, r0\n\
|
||||||
|
lsls r1, 2\n\
|
||||||
|
adds r1, r5, r1\n\
|
||||||
|
ldr r2, [sp, 0x34]\n\
|
||||||
|
ldr r4, [sp, 0x20]\n\
|
||||||
|
subs r0, r2, r4\n\
|
||||||
|
lsls r0, 3\n\
|
||||||
|
adds r1, r0\n\
|
||||||
|
add r1, r8\n\
|
||||||
|
ldrh r4, [r1]\n\
|
||||||
|
lsls r2, r7, 24\n\
|
||||||
|
lsrs r2, 24\n\
|
||||||
|
adds r0, r6, r3\n\
|
||||||
|
adds r1, r4, 0\n\
|
||||||
|
str r3, [sp, 0x40]\n\
|
||||||
|
bl SetMonMoveSlot\n\
|
||||||
|
ldr r3, [sp, 0x40]\n\
|
||||||
|
cmp r4, 0xDA\n\
|
||||||
|
bne _081A4F9C\n\
|
||||||
|
movs r1, 0\n\
|
||||||
|
add r0, sp, 0x10\n\
|
||||||
|
strb r1, [r0]\n\
|
||||||
|
_081A4F9C:\n\
|
||||||
|
adds r5, 0x2\n\
|
||||||
|
adds r7, 0x1\n\
|
||||||
|
cmp r7, 0x3\n\
|
||||||
|
ble _081A4F6A\n\
|
||||||
|
ldr r0, [sp, 0x18]\n\
|
||||||
|
movs r1, 0x64\n\
|
||||||
|
adds r4, r0, 0\n\
|
||||||
|
muls r4, r1\n\
|
||||||
|
ldr r0, =gEnemyParty\n\
|
||||||
|
adds r4, r0\n\
|
||||||
|
adds r0, r4, 0\n\
|
||||||
|
movs r1, 0x20\n\
|
||||||
|
add r2, sp, 0x10\n\
|
||||||
|
bl SetMonData\n\
|
||||||
|
adds r0, r4, 0\n\
|
||||||
|
bl CalculateMonStats\n\
|
||||||
|
ldr r2, [sp, 0x2C]\n\
|
||||||
|
str r2, [sp, 0x18]\n\
|
||||||
|
_081A4FC4:\n\
|
||||||
|
ldr r4, [sp, 0x30]\n\
|
||||||
|
ldr r3, [sp, 0x28]\n\
|
||||||
|
str r3, [sp, 0x14]\n\
|
||||||
|
cmp r3, 0x2\n\
|
||||||
|
bgt _081A4FD0\n\
|
||||||
|
b _081A4E5C\n\
|
||||||
|
_081A4FD0:\n\
|
||||||
|
add sp, 0x44\n\
|
||||||
|
pop {r3-r5}\n\
|
||||||
|
mov r8, r3\n\
|
||||||
|
mov r9, r4\n\
|
||||||
|
mov r10, r5\n\
|
||||||
|
pop {r4-r7}\n\
|
||||||
|
pop {r0}\n\
|
||||||
|
bx r0\n\
|
||||||
|
.pool\n\
|
||||||
|
");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
u16 sub_81A4FF0(u8 monPartyId)
|
||||||
|
{
|
||||||
|
s32 facility = VarGet(VAR_FRONTIER_FACILITY);
|
||||||
|
s32 symbol = GetFronterBrainSymbol();
|
||||||
|
|
||||||
|
return sFrontierBrainsMons[facility][symbol][monPartyId].species;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_81A5030(u8 facility)
|
||||||
|
{
|
||||||
|
gTrainerBattleOpponent_A = TRAINER_FRONTIER_BRAIN;
|
||||||
|
VarSet(VAR_OBJ_GFX_ID_0, gUnknown_08611C8C[facility][0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
u16 sub_81A5060(u8 monId, u8 moveSlotId)
|
||||||
|
{
|
||||||
|
s32 facility = VarGet(VAR_FRONTIER_FACILITY);
|
||||||
|
s32 symbol = GetFronterBrainSymbol();
|
||||||
|
|
||||||
|
return sFrontierBrainsMons[facility][symbol][monId].moves[moveSlotId];
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 sub_81A50B0(u8 monPartyId)
|
||||||
|
{
|
||||||
|
s32 facility = VarGet(VAR_FRONTIER_FACILITY);
|
||||||
|
s32 symbol = GetFronterBrainSymbol();
|
||||||
|
|
||||||
|
return sFrontierBrainsMons[facility][symbol][monPartyId].nature;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 sub_81A50F0(u8 monId, u8 evStatId)
|
||||||
|
{
|
||||||
|
s32 facility = VarGet(VAR_FRONTIER_FACILITY);
|
||||||
|
s32 symbol = GetFronterBrainSymbol();
|
||||||
|
|
||||||
|
return sFrontierBrainsMons[facility][symbol][monId].evs[evStatId];
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 GetFronterBrainSymbol(void)
|
||||||
|
{
|
||||||
|
s32 facility = VarGet(VAR_FRONTIER_FACILITY);
|
||||||
|
s32 symbol = sub_81A3B30(facility);
|
||||||
|
|
||||||
|
if (symbol == 2)
|
||||||
|
{
|
||||||
|
u16 winStreak = GetCurrentFacilityWinStreak();
|
||||||
|
if (winStreak + gUnknown_08611550[facility][3] == gUnknown_08611550[facility][0])
|
||||||
|
symbol = 0;
|
||||||
|
else if (winStreak + gUnknown_08611550[facility][3] == gUnknown_08611550[facility][1])
|
||||||
|
symbol = 1;
|
||||||
|
else if (winStreak + gUnknown_08611550[facility][3] > gUnknown_08611550[facility][1]
|
||||||
|
&& (winStreak + gUnknown_08611550[facility][3] - gUnknown_08611550[facility][1]) % gUnknown_08611550[facility][2] == 0)
|
||||||
|
symbol = 1;
|
||||||
|
}
|
||||||
|
return symbol;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern const u8 *const *const gUnknown_08611DB0[];
|
||||||
|
extern const u8 *const *const gUnknown_08611DB8[];
|
||||||
|
|
||||||
|
static void CopyFrontierBrainText(bool8 playerWonText)
|
||||||
|
{
|
||||||
|
s32 facility;
|
||||||
|
s32 symbol;
|
||||||
|
|
||||||
|
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||||||
|
{
|
||||||
|
facility = GetRecordedBattleFrontierFacility();
|
||||||
|
symbol = GetRecordedBattleFronterBrainSymbol();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
facility = VarGet(VAR_FRONTIER_FACILITY);
|
||||||
|
symbol = GetFronterBrainSymbol();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (playerWonText)
|
||||||
|
{
|
||||||
|
case FALSE:
|
||||||
|
StringCopy(gStringVar4, gUnknown_08611DB0[symbol][facility]);
|
||||||
|
break;
|
||||||
|
case TRUE:
|
||||||
|
StringCopy(gStringVar4, gUnknown_08611DB8[symbol][facility]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user