Files
2019-09-27 01:42:56 -04:00

2645 lines
45 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.text
.syntax unified
thumb_func_start InitMatchCallCounters
InitMatchCallCounters: @ 0x08195A10
push {lr}
bl RtcCalcLocalTime
ldr r0, _08195A2C
bl GetCurrentTotalMinutes
ldr r1, _08195A30
adds r0, #0xa
str r0, [r1]
movs r0, #0
strb r0, [r1, #6]
pop {r0}
bx r0
.align 2, 0
_08195A2C: .4byte 0x03005A50
_08195A30: .4byte 0x0203CA4C
thumb_func_end InitMatchCallCounters
thumb_func_start GetCurrentTotalMinutes
GetCurrentTotalMinutes: @ 0x08195A34
adds r3, r0, #0
movs r1, #0
ldrsh r0, [r3, r1]
lsls r1, r0, #1
adds r1, r1, r0
lsls r0, r1, #4
subs r0, r0, r1
lsls r0, r0, #5
movs r2, #2
ldrsb r2, [r3, r2]
lsls r1, r2, #4
subs r1, r1, r2
lsls r1, r1, #2
adds r0, r0, r1
movs r1, #3
ldrsb r1, [r3, r1]
adds r0, r0, r1
bx lr
thumb_func_end GetCurrentTotalMinutes
thumb_func_start UpdateMatchCallMinutesCounter
UpdateMatchCallMinutesCounter: @ 0x08195A58
push {lr}
bl RtcCalcLocalTime
ldr r0, _08195A7C
bl GetCurrentTotalMinutes
adds r1, r0, #0
ldr r2, _08195A80
ldr r0, [r2]
cmp r0, r1
bhi _08195A74
subs r0, r1, r0
cmp r0, #9
bls _08195A84
_08195A74:
str r1, [r2]
movs r0, #1
b _08195A86
.align 2, 0
_08195A7C: .4byte 0x03005A50
_08195A80: .4byte 0x0203CA4C
_08195A84:
movs r0, #0
_08195A86:
pop {r1}
bx r1
.align 2, 0
thumb_func_end UpdateMatchCallMinutesCounter
thumb_func_start CheckMatchCallChance
CheckMatchCallChance: @ 0x08195A8C
push {r4, r5, lr}
movs r5, #1
ldr r4, _08195ACC
adds r0, r4, #0
movs r1, #6
bl GetMonData
cmp r0, #0
bne _08195AAE
adds r0, r4, #0
bl GetMonAbility
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x1f
bne _08195AAE
movs r5, #2
_08195AAE:
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #0xa
bl __umodsi3
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r1, r5, #1
adds r1, r1, r5
cmp r0, r1
blt _08195AD0
movs r0, #0
b _08195AD2
.align 2, 0
_08195ACC: .4byte 0x02024190
_08195AD0:
movs r0, #1
_08195AD2:
pop {r4, r5}
pop {r1}
bx r1
thumb_func_end CheckMatchCallChance
thumb_func_start MapAllowsMatchCall
MapAllowsMatchCall: @ 0x08195AD8
push {r4, lr}
ldr r4, _08195B34
ldrb r0, [r4, #0x17]
bl Overworld_MapTypeAllowsTeleportAndFly
lsls r0, r0, #0x18
cmp r0, #0
beq _08195B30
ldrb r0, [r4, #0x14]
cmp r0, #0x39
beq _08195B30
cmp r0, #0xe
bne _08195B0E
movs r0, #0xf9
lsls r0, r0, #2
bl FlagGet
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _08195B0E
movs r0, #0xdc
bl FlagGet
lsls r0, r0, #0x18
cmp r0, #0
beq _08195B30
_08195B0E:
ldr r0, _08195B34
ldrb r0, [r0, #0x14]
cmp r0, #0x38
bne _08195B38
movs r0, #0xcf
bl FlagGet
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _08195B38
movs r0, #0x8b
bl FlagGet
lsls r0, r0, #0x18
cmp r0, #0
bne _08195B38
_08195B30:
movs r0, #0
b _08195B3A
.align 2, 0
_08195B34: .4byte 0x02036FB8
_08195B38:
movs r0, #1
_08195B3A:
pop {r4}
pop {r1}
bx r1
thumb_func_end MapAllowsMatchCall
thumb_func_start UpdateMatchCallStepCounter
UpdateMatchCallStepCounter: @ 0x08195B40
push {lr}
ldr r1, _08195B58
ldrb r0, [r1, #6]
adds r0, #1
strb r0, [r1, #6]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #9
bhi _08195B5C
movs r0, #0
b _08195B62
.align 2, 0
_08195B58: .4byte 0x0203CA4C
_08195B5C:
movs r0, #0
strb r0, [r1, #6]
movs r0, #1
_08195B62:
pop {r1}
bx r1
.align 2, 0
thumb_func_end UpdateMatchCallStepCounter
thumb_func_start SelectMatchCallTrainer
SelectMatchCallTrainer: @ 0x08195B68
push {r4, lr}
bl GetNumRegisteredNPCs
adds r4, r0, #0
cmp r4, #0
beq _08195BB8
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
adds r1, r4, #0
bl __umodsi3
bl GetActiveMatchCallTrainerId
ldr r2, _08195BBC
movs r1, #0
strh r0, [r2, #4]
strb r1, [r2, #7]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x4e
beq _08195BB8
ldrh r0, [r2, #4]
bl GetTrainerMatchCallId
adds r4, r0, #0
bl GetRematchTrainerLocation
ldr r1, _08195BC0
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r1, #0x14]
cmp r0, r1
bne _08195BC4
adds r0, r4, #0
bl TrainerIsEligibleForRematch
cmp r0, #0
bne _08195BC4
_08195BB8:
movs r0, #0
b _08195BC6
.align 2, 0
_08195BBC: .4byte 0x0203CA4C
_08195BC0: .4byte 0x02036FB8
_08195BC4:
movs r0, #1
_08195BC6:
pop {r4}
pop {r1}
bx r1
thumb_func_end SelectMatchCallTrainer
thumb_func_start GetNumRegisteredNPCs
GetNumRegisteredNPCs: @ 0x08195BCC
push {r4, r5, lr}
movs r4, #0
movs r5, #0
_08195BD2:
movs r1, #0xae
lsls r1, r1, #1
adds r0, r4, r1
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
bl FlagGet
lsls r0, r0, #0x18
cmp r0, #0
beq _08195BE8
adds r5, #1
_08195BE8:
adds r4, #1
cmp r4, #0x3f
bls _08195BD2
adds r0, r5, #0
pop {r4, r5}
pop {r1}
bx r1
.align 2, 0
thumb_func_end GetNumRegisteredNPCs
thumb_func_start GetActiveMatchCallTrainerId
GetActiveMatchCallTrainerId: @ 0x08195BF8
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r4, #0
ldr r6, _08195C1C
_08195C00:
movs r1, #0xae
lsls r1, r1, #1
adds r0, r4, r1
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
bl FlagGet
lsls r0, r0, #0x18
cmp r0, #0
beq _08195C22
cmp r5, #0
bne _08195C20
ldrh r0, [r6]
b _08195C2C
.align 2, 0
_08195C1C: .4byte 0x0852AD40
_08195C20:
subs r5, #1
_08195C22:
adds r6, #0x10
adds r4, #1
cmp r4, #0x3f
bls _08195C00
movs r0, #0x4e
_08195C2C:
pop {r4, r5, r6}
pop {r1}
bx r1
.align 2, 0
thumb_func_end GetActiveMatchCallTrainerId
thumb_func_start TryStartMatchCall
TryStartMatchCall: @ 0x08195C34
push {lr}
ldr r0, _08195C74
bl FlagGet
lsls r0, r0, #0x18
cmp r0, #0
beq _08195C78
bl UpdateMatchCallStepCounter
cmp r0, #0
beq _08195C78
bl UpdateMatchCallMinutesCounter
cmp r0, #0
beq _08195C78
bl CheckMatchCallChance
cmp r0, #0
beq _08195C78
bl MapAllowsMatchCall
cmp r0, #0
beq _08195C78
bl SelectMatchCallTrainer
cmp r0, #0
beq _08195C78
bl StartMatchCall
movs r0, #1
b _08195C7A
.align 2, 0
_08195C74: .4byte 0x0000012F
_08195C78:
movs r0, #0
_08195C7A:
pop {r1}
bx r1
.align 2, 0
thumb_func_end TryStartMatchCall
thumb_func_start StartMatchCallFromScript
StartMatchCallFromScript: @ 0x08195C80
push {lr}
ldr r1, _08195C90
movs r0, #1
strb r0, [r1, #7]
bl StartMatchCall
pop {r0}
bx r0
.align 2, 0
_08195C90: .4byte 0x0203CA4C
thumb_func_end StartMatchCallFromScript
thumb_func_start IsMatchCallTaskActive
IsMatchCallTaskActive: @ 0x08195C94
push {lr}
ldr r0, _08195CA4
bl FuncIsActiveTask
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
pop {r1}
bx r1
.align 2, 0
_08195CA4: .4byte 0x08195CE1
thumb_func_end IsMatchCallTaskActive
thumb_func_start StartMatchCall
StartMatchCall: @ 0x08195CA8
push {lr}
ldr r0, _08195CD4
ldrb r0, [r0, #7]
cmp r0, #0
bne _08195CC2
bl ScriptContext2_Enable
bl FreezeEventObjects
bl sub_0808B1C8
bl sub_0808B658
_08195CC2:
ldr r0, _08195CD8
bl PlaySE
ldr r0, _08195CDC
movs r1, #1
bl CreateTask
pop {r0}
bx r0
.align 2, 0
_08195CD4: .4byte 0x0203CA4C
_08195CD8: .4byte 0x00000107
_08195CDC: .4byte 0x08195CE1
thumb_func_end StartMatchCall
thumb_func_start ExecuteMatchCall
ExecuteMatchCall: @ 0x08195CE0
push {r4, r5, lr}
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
lsls r0, r5, #2
adds r0, r0, r5
lsls r0, r0, #3
ldr r1, _08195D24
adds r4, r0, r1
ldr r1, _08195D28
movs r2, #0
ldrsh r0, [r4, r2]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
cmp r0, #0
beq _08195D1E
ldrh r0, [r4]
adds r0, #1
strh r0, [r4]
movs r1, #0
strh r1, [r4, #2]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #7
bls _08195D1E
adds r0, r5, #0
bl DestroyTask
_08195D1E:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08195D24: .4byte 0x03005B68
_08195D28: .4byte 0x085D79F4
thumb_func_end ExecuteMatchCall
thumb_func_start LoadMatchCallWindowGfx
LoadMatchCallWindowGfx: @ 0x08195D2C
push {r4, r5, r6, lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
adds r6, r4, #0
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #3
ldr r1, _08195D54
adds r5, r0, r1
ldr r0, _08195D58
bl AddWindow
strh r0, [r5, #4]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0xff
bne _08195D5C
adds r0, r4, #0
b _08195DE0
.align 2, 0
_08195D54: .4byte 0x03005B68
_08195D58: .4byte 0x085D7A14
_08195D5C:
ldr r1, _08195D80
movs r2, #0x80
lsls r2, r2, #1
movs r3, #0x9c
lsls r3, r3, #2
movs r0, #0
bl LoadBgTiles
lsls r0, r0, #0x10
ldr r1, _08195D84
cmp r0, r1
bne _08195D88
ldrb r0, [r5, #4]
bl RemoveWindow
adds r0, r4, #0
b _08195DE0
.align 2, 0
_08195D80: .4byte 0x085D74E8
_08195D84: .4byte 0xFFFF0000
_08195D88:
ldr r1, _08195DC4
ldr r3, _08195DC8
movs r0, #0
str r0, [sp]
movs r2, #0
bl decompress_and_copy_tile_data_to_vram
cmp r0, #0
beq _08195DD8
ldrb r0, [r5, #4]
movs r1, #0x88
bl FillWindowPixelBuffer
ldr r0, _08195DCC
movs r1, #0xe0
movs r2, #0x20
bl LoadPalette
ldr r0, _08195DD0
movs r1, #0xf0
movs r2, #0x20
bl LoadPalette
ldr r1, _08195DD4
movs r0, #0
movs r2, #0
bl ChangeBgY
movs r0, #1
b _08195DE6
.align 2, 0
_08195DC4: .4byte 0x085D7608
_08195DC8: .4byte 0x00000279
_08195DCC: .4byte 0x085D74C8
_08195DD0: .4byte 0x085D75E8
_08195DD4: .4byte 0xFFFFE000
_08195DD8:
ldrb r0, [r5, #4]
bl RemoveWindow
adds r0, r6, #0
_08195DE0:
bl DestroyTask
movs r0, #0
_08195DE6:
add sp, #4
pop {r4, r5, r6}
pop {r1}
bx r1
.align 2, 0
thumb_func_end LoadMatchCallWindowGfx
thumb_func_start MoveMatchCallWindowToVram
MoveMatchCallWindowToVram: @ 0x08195DF0
push {r4, lr}
sub sp, #0x10
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
ldr r0, _08195E5C
adds r4, r1, r0
bl free_temp_tile_data_buffers_if_possible
lsls r0, r0, #0x18
cmp r0, #0
bne _08195E68
ldrb r0, [r4, #4]
bl PutWindowTilemap
movs r1, #4
ldrsh r0, [r4, r1]
movs r1, #0x9c
lsls r1, r1, #2
movs r2, #0xe
bl DrawMatchCallTextBoxBorder
ldr r1, _08195E60
movs r0, #4
str r0, [sp]
str r0, [sp, #4]
movs r0, #0x11
str r0, [sp, #8]
movs r0, #1
str r0, [sp, #0xc]
movs r0, #0
movs r2, #1
movs r3, #0xf
bl WriteSequenceToBgTilemapBuffer
ldr r0, _08195E64
movs r1, #0xa
bl CreateTask
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
strh r0, [r4, #0xa]
ldrb r0, [r4, #4]
movs r1, #2
bl CopyWindowToVram
movs r0, #0
bl CopyBgTilemapBufferToVram
movs r0, #1
b _08195E6A
.align 2, 0
_08195E5C: .4byte 0x03005B68
_08195E60: .4byte 0x0000F279
_08195E64: .4byte 0x08196295
_08195E68:
movs r0, #0
_08195E6A:
add sp, #0x10
pop {r4}
pop {r1}
bx r1
.align 2, 0
thumb_func_end MoveMatchCallWindowToVram
thumb_func_start PrintMatchCallIntroEllipsis
PrintMatchCallIntroEllipsis: @ 0x08195E74
push {r4, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
ldr r0, _08195E94
adds r4, r1, r0
bl IsDma3ManagerBusyWithBgCopy
lsls r0, r0, #0x18
cmp r0, #0
beq _08195E98
movs r0, #0
b _08195EA4
.align 2, 0
_08195E94: .4byte 0x03005B68
_08195E98:
movs r1, #4
ldrsh r0, [r4, r1]
ldr r1, _08195EAC
bl InitMatchCallTextPrinter
movs r0, #1
_08195EA4:
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08195EAC: .4byte 0x085D79EC
thumb_func_end PrintMatchCallIntroEllipsis
thumb_func_start sub_08195EB0
sub_08195EB0: @ 0x08195EB0
push {lr}
movs r1, #0xc0
lsls r1, r1, #3
movs r0, #0
movs r2, #1
bl ChangeBgY
cmp r0, #0
bge _08195EC6
movs r0, #0
b _08195ED2
_08195EC6:
movs r0, #0
movs r1, #0
movs r2, #0
bl ChangeBgY
movs r0, #1
_08195ED2:
pop {r1}
bx r1
.align 2, 0
thumb_func_end sub_08195EB0
thumb_func_start sub_08195ED8
sub_08195ED8: @ 0x08195ED8
push {r4, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
ldr r0, _08195F1C
adds r4, r1, r0
movs r1, #4
ldrsh r0, [r4, r1]
bl ExecuteMatchCallTextPrinter
cmp r0, #0
bne _08195F28
ldrb r0, [r4, #4]
movs r1, #0x88
bl FillWindowPixelBuffer
ldr r1, _08195F20
ldrb r0, [r1, #7]
cmp r0, #0
bne _08195F0C
ldrh r0, [r1, #4]
ldr r1, _08195F24
bl SelectMatchCallMessage
_08195F0C:
movs r1, #4
ldrsh r0, [r4, r1]
ldr r1, _08195F24
bl InitMatchCallTextPrinter
movs r0, #1
b _08195F2A
.align 2, 0
_08195F1C: .4byte 0x03005B68
_08195F20: .4byte 0x0203CA4C
_08195F24: .4byte 0x02021C7C
_08195F28:
movs r0, #0
_08195F2A:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_08195ED8
thumb_func_start sub_08195F30
sub_08195F30: @ 0x08195F30
push {r4, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
ldr r0, _08195F80
adds r4, r1, r0
movs r1, #4
ldrsh r0, [r4, r1]
bl ExecuteMatchCallTextPrinter
cmp r0, #0
bne _08195F88
bl IsSEPlaying
lsls r0, r0, #0x18
cmp r0, #0
bne _08195F88
ldr r0, _08195F84
ldrh r1, [r0, #0x2e]
movs r0, #3
ands r0, r1
cmp r0, #0
beq _08195F88
ldrb r0, [r4, #4]
movs r1, #0x88
bl FillWindowPixelBuffer
ldrb r0, [r4, #4]
movs r1, #2
bl CopyWindowToVram
movs r0, #0x84
lsls r0, r0, #1
bl PlaySE
movs r0, #1
b _08195F8A
.align 2, 0
_08195F80: .4byte 0x03005B68
_08195F84: .4byte 0x03002360
_08195F88:
movs r0, #0
_08195F8A:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_08195F30
thumb_func_start sub_08195F90
sub_08195F90: @ 0x08195F90
push {r4, lr}
sub sp, #8
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
ldr r0, _08195FB8
adds r4, r1, r0
movs r1, #0xc0
lsls r1, r1, #3
movs r0, #0
movs r2, #2
bl ChangeBgY
ldr r1, _08195FBC
cmp r0, r1
ble _08195FC0
movs r0, #0
b _08195FE8
.align 2, 0
_08195FB8: .4byte 0x03005B68
_08195FBC: .4byte 0xFFFFE000
_08195FC0:
movs r0, #0x1e
str r0, [sp]
movs r0, #6
str r0, [sp, #4]
movs r0, #0
movs r1, #0
movs r2, #0
movs r3, #0xe
bl FillBgTilemapBufferRect_Palette0
ldrb r0, [r4, #0xa]
bl DestroyTask
ldrb r0, [r4, #4]
bl RemoveWindow
movs r0, #0
bl CopyBgTilemapBufferToVram
movs r0, #1
_08195FE8:
add sp, #8
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_08195F90
thumb_func_start sub_08195FF0
sub_08195FF0: @ 0x08195FF0
push {lr}
bl IsDma3ManagerBusyWithBgCopy
lsls r0, r0, #0x18
cmp r0, #0
bne _08196054
bl IsSEPlaying
lsls r0, r0, #0x18
cmp r0, #0
bne _08196054
movs r0, #0
movs r1, #0
movs r2, #0
bl ChangeBgY
ldr r0, _0819604C
ldrb r0, [r0, #7]
cmp r0, #0
bne _08196046
bl sub_08196F98
movs r0, #0xff
movs r1, #0
movs r2, #0
bl GetEventObjectIdByLocalIdAndMap
adds r1, r0, #0
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
lsls r0, r1, #3
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _08196050
adds r0, r0, r1
bl MovementAction_AcroEndWheelieFaceLeft_Step0
bl sub_080D2C2C
bl UnfreezeEventObjects
bl ScriptContext2_Disable
_08196046:
movs r0, #1
b _08196056
.align 2, 0
_0819604C: .4byte 0x0203CA4C
_08196050: .4byte 0x02036FF0
_08196054:
movs r0, #0
_08196056:
pop {r1}
bx r1
.align 2, 0
thumb_func_end sub_08195FF0
thumb_func_start DrawMatchCallTextBoxBorder
DrawMatchCallTextBoxBorder: @ 0x0819605C
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x20
adds r4, r0, #0
adds r5, r1, #0
adds r7, r2, #0
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
adds r0, r4, #0
movs r1, #0
bl GetWindowAttribute
mov sb, r0
adds r0, r4, #0
movs r1, #1
bl GetWindowAttribute
str r0, [sp, #8]
adds r0, r4, #0
movs r1, #2
bl GetWindowAttribute
str r0, [sp, #0xc]
adds r0, r4, #0
movs r1, #3
bl GetWindowAttribute
adds r6, r0, #0
adds r0, r4, #0
movs r1, #4
bl GetWindowAttribute
str r0, [sp, #0x10]
mov r0, sb
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
movs r1, #0xa
bl GetBgAttribute
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
adds r5, r5, r0
lsls r7, r7, #0xc
movs r1, #0xf0
lsls r1, r1, #8
adds r0, r1, #0
ands r7, r0
adds r1, r7, #0
orrs r1, r5
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
ldr r2, [sp, #8]
subs r2, #1
lsls r2, r2, #0x18
lsrs r2, r2, #0x18
mov sl, r2
ldr r4, [sp, #0xc]
subs r4, #1
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
movs r3, #1
mov r8, r3
str r3, [sp]
str r3, [sp, #4]
mov r0, sb
adds r3, r4, #0
bl FillBgTilemapBufferRect_Palette0
adds r1, r5, #1
orrs r1, r7
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
ldr r0, [sp, #8]
lsls r2, r0, #0x18
lsrs r2, r2, #0x18
str r2, [sp, #0x14]
lsls r0, r6, #0x18
lsrs r0, r0, #0x18
str r0, [sp, #0x18]
str r0, [sp]
mov r2, r8
str r2, [sp, #4]
mov r0, sb
ldr r2, [sp, #0x14]
adds r3, r4, #0
bl FillBgTilemapBufferRect_Palette0
adds r1, r5, #2
orrs r1, r7
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
ldr r3, [sp, #8]
adds r0, r3, r6
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
str r0, [sp, #0x1c]
mov r0, r8
str r0, [sp]
str r0, [sp, #4]
mov r0, sb
ldr r2, [sp, #0x1c]
adds r3, r4, #0
bl FillBgTilemapBufferRect_Palette0
adds r1, r5, #3
orrs r1, r7
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
ldr r2, [sp, #0xc]
lsls r6, r2, #0x18
lsrs r6, r6, #0x18
mov r3, r8
str r3, [sp]
ldr r0, [sp, #0x10]
lsls r4, r0, #0x18
lsrs r4, r4, #0x18
str r4, [sp, #4]
mov r0, sb
mov r2, sl
adds r3, r6, #0
bl FillBgTilemapBufferRect_Palette0
adds r1, r5, #4
orrs r1, r7
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
mov r2, r8
str r2, [sp]
str r4, [sp, #4]
mov r0, sb
ldr r2, [sp, #0x1c]
adds r3, r6, #0
bl FillBgTilemapBufferRect_Palette0
adds r1, r5, #5
orrs r1, r7
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
ldr r3, [sp, #0xc]
ldr r2, [sp, #0x10]
adds r0, r3, r2
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
mov r3, r8
str r3, [sp]
str r3, [sp, #4]
mov r0, sb
mov r2, sl
adds r3, r4, #0
bl FillBgTilemapBufferRect_Palette0
adds r1, r5, #6
orrs r1, r7
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
ldr r0, [sp, #0x18]
str r0, [sp]
mov r2, r8
str r2, [sp, #4]
mov r0, sb
ldr r2, [sp, #0x14]
adds r3, r4, #0
bl FillBgTilemapBufferRect_Palette0
adds r5, #7
orrs r5, r7
lsls r5, r5, #0x10
lsrs r5, r5, #0x10
mov r3, r8
str r3, [sp]
str r3, [sp, #4]
mov r0, sb
adds r1, r5, #0
ldr r2, [sp, #0x1c]
adds r3, r4, #0
bl FillBgTilemapBufferRect_Palette0
add sp, #0x20
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
thumb_func_end DrawMatchCallTextBoxBorder
thumb_func_start InitMatchCallTextPrinter
InitMatchCallTextPrinter: @ 0x081961D8
push {lr}
sub sp, #0x10
str r1, [sp]
mov r1, sp
movs r3, #0
strb r0, [r1, #4]
movs r0, #1
strb r0, [r1, #5]
mov r0, sp
movs r2, #0x20
strb r2, [r0, #6]
movs r1, #2
strb r1, [r0, #7]
strb r2, [r0, #8]
strb r1, [r0, #9]
strb r3, [r0, #0xa]
strb r3, [r0, #0xb]
mov r3, sp
ldrb r2, [r3, #0xc]
subs r1, #0x12
adds r0, r1, #0
ands r0, r2
strb r0, [r3, #0xc]
mov r2, sp
movs r3, #0xf
movs r0, #0xa0
strb r0, [r2, #0xc]
ldrb r0, [r2, #0xd]
ands r1, r0
movs r0, #8
orrs r1, r0
strb r1, [r2, #0xd]
ands r1, r3
movs r0, #0xe0
orrs r1, r0
strb r1, [r2, #0xd]
ldr r2, _08196244
ldrb r1, [r2]
movs r0, #3
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
bl GetPlayerTextSpeedDelay
adds r1, r0, #0
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
mov r0, sp
movs r2, #0
bl AddTextPrinter
add sp, #0x10
pop {r0}
bx r0
.align 2, 0
_08196244: .4byte 0x030030B4
thumb_func_end InitMatchCallTextPrinter
thumb_func_start ExecuteMatchCallTextPrinter
ExecuteMatchCallTextPrinter: @ 0x08196248
push {r4, lr}
adds r4, r0, #0
ldr r0, _08196264
ldrh r1, [r0, #0x2c]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0819626C
ldr r0, _08196268
ldrb r1, [r0]
movs r2, #1
orrs r1, r2
strb r1, [r0]
b _08196278
.align 2, 0
_08196264: .4byte 0x03002360
_08196268: .4byte 0x030030B4
_0819626C:
ldr r2, _08196290
ldrb r1, [r2]
movs r0, #2
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
_08196278:
bl RunTextPrinters
lsls r0, r4, #0x18
lsrs r0, r0, #0x18
bl IsTextPrinterActive
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08196290: .4byte 0x030030B4
thumb_func_end ExecuteMatchCallTextPrinter
thumb_func_start sub_08196294
sub_08196294: @ 0x08196294
push {lr}
sub sp, #0x10
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
ldr r0, _08196304
adds r2, r1, r0
ldrh r0, [r2]
adds r0, #1
strh r0, [r2]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #8
ble _081962FC
movs r1, #0
strh r1, [r2]
ldrh r0, [r2, #2]
adds r0, #1
strh r0, [r2, #2]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #7
ble _081962C8
strh r1, [r2, #2]
_081962C8:
movs r0, #2
ldrsh r1, [r2, r0]
lsls r1, r1, #4
ldr r0, _08196308
adds r1, r1, r0
strh r1, [r2, #4]
ldr r2, _0819630C
adds r0, r2, #0
orrs r1, r0
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
movs r0, #4
str r0, [sp]
str r0, [sp, #4]
movs r0, #0x11
str r0, [sp, #8]
movs r0, #1
str r0, [sp, #0xc]
movs r0, #0
movs r2, #1
movs r3, #0xf
bl WriteSequenceToBgTilemapBuffer
movs r0, #0
bl CopyBgTilemapBufferToVram
_081962FC:
add sp, #0x10
pop {r0}
bx r0
.align 2, 0
_08196304: .4byte 0x03005B68
_08196308: .4byte 0x00000279
_0819630C: .4byte 0xFFFFF000
thumb_func_end sub_08196294
thumb_func_start TrainerIsEligibleForRematch
TrainerIsEligibleForRematch: @ 0x08196310
ldr r1, _08196324
ldr r1, [r1]
ldr r2, _08196328
adds r1, r1, r2
adds r1, r1, r0
ldrb r1, [r1]
rsbs r0, r1, #0
orrs r0, r1
lsrs r0, r0, #0x1f
bx lr
.align 2, 0
_08196324: .4byte 0x03005AEC
_08196328: .4byte 0x000009CA
thumb_func_end TrainerIsEligibleForRematch
thumb_func_start GetRematchTrainerLocation
GetRematchTrainerLocation: @ 0x0819632C
push {lr}
ldr r1, _08196344
lsls r0, r0, #4
adds r0, r0, r1
ldrh r2, [r0, #0xa]
ldrh r1, [r0, #0xc]
adds r0, r2, #0
bl Overworld_GetMapHeaderByGroupAndId
ldrb r0, [r0, #0x14]
pop {r1}
bx r1
.align 2, 0
_08196344: .4byte 0x0852AD40
thumb_func_end GetRematchTrainerLocation
thumb_func_start GetNumRematchTrainersFought
GetNumRematchTrainersFought: @ 0x08196348
push {r4, r5, r6, lr}
movs r5, #0
movs r6, #0
ldr r4, _08196370
_08196350:
ldrh r0, [r4]
bl HasTrainerBeenFought
lsls r0, r0, #0x18
cmp r0, #0
beq _0819635E
adds r6, #1
_0819635E:
adds r4, #0x10
adds r5, #1
cmp r5, #0x3f
bls _08196350
adds r0, r6, #0
pop {r4, r5, r6}
pop {r1}
bx r1
.align 2, 0
_08196370: .4byte 0x0852AD40
thumb_func_end GetNumRematchTrainersFought
thumb_func_start sub_08196374
sub_08196374: @ 0x08196374
push {r4, r5, r6, r7, lr}
adds r7, r0, #0
movs r4, #0
movs r6, #0
ldr r5, _08196394
_0819637E:
ldrh r0, [r5]
bl HasTrainerBeenFought
lsls r0, r0, #0x18
cmp r0, #0
beq _0819639A
cmp r6, r7
bne _08196398
adds r0, r4, #0
b _081963A4
.align 2, 0
_08196394: .4byte 0x0852AD40
_08196398:
adds r6, #1
_0819639A:
adds r5, #0x10
adds r4, #1
cmp r4, #0x4d
bls _0819637E
movs r0, #0x4e
_081963A4:
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
thumb_func_end sub_08196374
thumb_func_start SelectMatchCallMessage
SelectMatchCallMessage: @ 0x081963AC
push {r4, r5, r6, r7, lr}
adds r6, r1, #0
movs r7, #0
bl GetTrainerMatchCallId
adds r5, r0, #0
ldr r0, _081963E4
strh r7, [r0]
adds r0, r5, #0
bl TrainerIsEligibleForRematch
cmp r0, #0
beq _081963EC
adds r0, r5, #0
bl GetRematchTrainerLocation
ldr r1, _081963E8
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r1, #0x14]
cmp r0, r1
bne _081963EC
adds r0, r5, #0
adds r1, r6, #0
bl GetSameRouteMatchCallText
b _08196430
.align 2, 0
_081963E4: .4byte 0x0203CA54
_081963E8: .4byte 0x02036FB8
_081963EC:
adds r0, r5, #0
bl sub_08196968
cmp r0, #0
beq _0819640A
adds r0, r5, #0
adds r1, r6, #0
bl GetDifferentRouteMatchCallText
adds r4, r0, #0
movs r7, #1
adds r0, r5, #0
bl UpdateRematchIfDefeated
b _08196432
_0819640A:
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #3
bl __umodsi3
lsls r0, r0, #0x10
cmp r0, #0
beq _08196428
adds r0, r5, #0
adds r1, r6, #0
bl GetBattleMatchCallText
b _08196430
_08196428:
adds r0, r5, #0
adds r1, r6, #0
bl GetGeneralMatchCallText
_08196430:
adds r4, r0, #0
_08196432:
adds r0, r5, #0
adds r1, r4, #0
adds r2, r6, #0
bl BuildMatchCallString
adds r0, r7, #0
pop {r4, r5, r6, r7}
pop {r1}
bx r1
thumb_func_end SelectMatchCallMessage
thumb_func_start GetTrainerMatchCallId
GetTrainerMatchCallId: @ 0x08196444
push {lr}
adds r3, r0, #0
movs r2, #0
ldr r1, _08196458
_0819644C:
ldrh r0, [r1]
cmp r0, r3
beq _0819645C
adds r1, #0x14
adds r2, #1
b _0819644C
.align 2, 0
_08196458: .4byte 0x085D6934
_0819645C:
adds r0, r2, #0
pop {r1}
bx r1
.align 2, 0
thumb_func_end GetTrainerMatchCallId
thumb_func_start GetSameRouteMatchCallText
GetSameRouteMatchCallText: @ 0x08196464
ldr r2, _08196488
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r2
ldrh r1, [r1, #0xe]
movs r2, #0xff
lsrs r0, r1, #8
subs r0, #1
ands r1, r2
subs r1, #1
ldr r2, _0819648C
lsls r0, r0, #2
adds r0, r0, r2
lsls r1, r1, #3
ldr r0, [r0]
adds r0, r0, r1
bx lr
.align 2, 0
_08196488: .4byte 0x085D6934
_0819648C: .4byte 0x085D74A8
thumb_func_end GetSameRouteMatchCallText
thumb_func_start GetDifferentRouteMatchCallText
GetDifferentRouteMatchCallText: @ 0x08196490
ldr r2, _081964B4
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r2
ldrh r1, [r1, #0x10]
movs r2, #0xff
lsrs r0, r1, #8
subs r0, #1
ands r1, r2
subs r1, #1
ldr r2, _081964B8
lsls r0, r0, #2
adds r0, r0, r2
lsls r1, r1, #3
ldr r0, [r0]
adds r0, r0, r1
bx lr
.align 2, 0
_081964B4: .4byte 0x085D6934
_081964B8: .4byte 0x085D74A8
thumb_func_end GetDifferentRouteMatchCallText
thumb_func_start GetBattleMatchCallText
GetBattleMatchCallText: @ 0x081964BC
push {r4, lr}
adds r4, r0, #0
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #3
bl __umodsi3
lsls r0, r0, #0x10
ldr r2, _08196508
lsrs r0, r0, #0xf
lsls r1, r4, #2
adds r1, r1, r4
lsls r1, r1, #2
adds r0, r0, r1
adds r2, #4
adds r0, r0, r2
ldrh r4, [r0]
cmp r4, #0
bne _081964EC
movs r0, #0
bl SpriteCallbackDummy
_081964EC:
movs r1, #0xff
lsrs r0, r4, #8
subs r0, #1
ands r4, r1
subs r1, r4, #1
ldr r2, _0819650C
lsls r0, r0, #2
adds r0, r0, r2
lsls r1, r1, #3
ldr r0, [r0]
adds r0, r0, r1
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08196508: .4byte 0x085D6934
_0819650C: .4byte 0x085D749C
thumb_func_end GetBattleMatchCallText
thumb_func_start GetGeneralMatchCallText
GetGeneralMatchCallText: @ 0x08196510
push {r4, r5, r6, r7, lr}
sub sp, #4
adds r6, r0, #0
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #1
ands r0, r1
cmp r0, #0
bne _081965AC
movs r5, #0
movs r4, #0
lsls r7, r6, #2
_0819652C:
lsls r0, r4, #0x10
lsrs r0, r0, #0x10
mov r1, sp
bl GetFrontierStreakInfo
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #1
bls _08196540
adds r5, #1
_08196540:
adds r4, #1
cmp r4, #6
ble _0819652C
cmp r5, #0
beq _081965AC
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
adds r1, r5, #0
bl __modsi3
adds r5, r0, #0
movs r4, #0
b _08196562
_0819655E:
subs r5, #1
_08196560:
adds r4, #1
_08196562:
cmp r4, #6
bgt _08196580
lsls r0, r4, #0x10
lsrs r0, r0, #0x10
mov r1, sp
bl GetFrontierStreakInfo
ldr r1, _081965A0
strh r0, [r1, #2]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #1
bls _08196560
cmp r5, #0
bne _0819655E
_08196580:
ldr r0, _081965A0
strh r4, [r0]
ldr r1, _081965A4
adds r0, r7, r6
lsls r0, r0, #2
adds r0, r0, r1
ldrb r0, [r0, #0xc]
subs r2, r0, #1
ldr r1, _081965A8
ldr r0, [sp]
lsls r0, r0, #2
adds r0, r0, r1
lsls r1, r2, #3
ldr r0, [r0]
adds r0, r0, r1
b _081965D0
.align 2, 0
_081965A0: .4byte 0x0203CA54
_081965A4: .4byte 0x085D6934
_081965A8: .4byte 0x085D74B0
_081965AC:
ldr r1, _081965D8
lsls r0, r6, #2
adds r0, r0, r6
lsls r0, r0, #2
adds r0, r0, r1
ldrh r2, [r0, #0xa]
lsrs r1, r2, #8
subs r1, #1
str r1, [sp]
movs r0, #0xff
ands r0, r2
subs r2, r0, #1
ldr r0, _081965DC
lsls r1, r1, #2
adds r1, r1, r0
lsls r2, r2, #3
ldr r0, [r1]
adds r0, r0, r2
_081965D0:
add sp, #4
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_081965D8: .4byte 0x085D6934
_081965DC: .4byte 0x085D74B0
thumb_func_end GetGeneralMatchCallText
thumb_func_start BuildMatchCallString
BuildMatchCallString: @ 0x081965E0
push {r4, r5, lr}
adds r4, r1, #0
adds r5, r2, #0
adds r1, r4, #4
bl PopulateMatchCallStringVars
ldr r1, [r4]
adds r0, r5, #0
bl StringExpandPlaceholders
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
thumb_func_end BuildMatchCallString
thumb_func_start PopulateMatchCallStringVars
PopulateMatchCallStringVars: @ 0x081965FC
push {r4, r5, r6, r7, lr}
adds r7, r0, #0
adds r6, r1, #0
movs r4, #0
ldr r5, _08196628
_08196606:
adds r1, r6, r4
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
blt _0819661A
adds r1, r0, #0
ldr r2, [r5]
adds r0, r7, #0
bl PopulateMatchCallStringVar
_0819661A:
adds r5, #4
adds r4, #1
cmp r4, #2
ble _08196606
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08196628: .4byte 0x085D7A1C
thumb_func_end PopulateMatchCallStringVars
thumb_func_start PopulateMatchCallStringVar
PopulateMatchCallStringVar: @ 0x0819662C
push {lr}
ldr r3, _08196640
lsls r1, r1, #2
adds r1, r1, r3
ldr r3, [r1]
adds r1, r2, #0
bl _call_via_r3
pop {r0}
bx r0
.align 2, 0
_08196640: .4byte 0x085D7A28
thumb_func_end PopulateMatchCallStringVar
thumb_func_start PopulateTrainerName
PopulateTrainerName: @ 0x08196644
push {r4, r5, r6, lr}
adds r5, r1, #0
ldr r2, _08196670
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r2
ldrh r4, [r1]
movs r3, #0
ldr r1, _08196674
adds r6, r1, #0
_0819665A:
lsls r2, r3, #3
ldrh r0, [r1]
cmp r0, r4
bne _08196678
adds r0, r6, #4
adds r0, r2, r0
ldr r1, [r0]
adds r0, r5, #0
bl StringCopy
b _0819668C
.align 2, 0
_08196670: .4byte 0x085D6934
_08196674: .4byte 0x085D7A54
_08196678:
adds r1, #8
adds r3, #1
cmp r3, #5
bls _0819665A
lsls r1, r4, #5
ldr r0, _08196694
adds r1, r1, r0
adds r0, r5, #0
bl StringCopy
_0819668C:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_08196694: .4byte 0x082E3840
thumb_func_end PopulateTrainerName
thumb_func_start PopulateMapName
PopulateMapName: @ 0x08196698
push {r4, lr}
adds r4, r1, #0
bl GetRematchTrainerLocation
adds r1, r0, #0
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
adds r0, r4, #0
movs r2, #0
bl GetMapName
pop {r4}
pop {r0}
bx r0
thumb_func_end PopulateMapName
thumb_func_start GetLandEncounterSlot
GetLandEncounterSlot: @ 0x081966B4
push {lr}
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #0x64
bl __umodsi3
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
cmp r1, #0x13
bgt _081966D0
movs r0, #0
b _08196746
_081966D0:
adds r0, r1, #0
subs r0, #0x14
cmp r0, #0x13
bhi _081966DC
movs r0, #1
b _08196746
_081966DC:
adds r0, r1, #0
subs r0, #0x28
cmp r0, #9
bhi _081966E8
movs r0, #2
b _08196746
_081966E8:
adds r0, r1, #0
subs r0, #0x32
cmp r0, #9
bhi _081966F4
movs r0, #3
b _08196746
_081966F4:
adds r0, r1, #0
subs r0, #0x3c
cmp r0, #9
bhi _08196700
movs r0, #4
b _08196746
_08196700:
adds r0, r1, #0
subs r0, #0x46
cmp r0, #9
bhi _0819670C
movs r0, #5
b _08196746
_0819670C:
adds r0, r1, #0
subs r0, #0x50
cmp r0, #4
bhi _08196718
movs r0, #6
b _08196746
_08196718:
adds r0, r1, #0
subs r0, #0x55
cmp r0, #4
bhi _08196724
movs r0, #7
b _08196746
_08196724:
adds r0, r1, #0
subs r0, #0x5a
cmp r0, #3
bhi _08196730
movs r0, #8
b _08196746
_08196730:
adds r0, r1, #0
subs r0, #0x5e
cmp r0, #3
bhi _0819673C
movs r0, #9
b _08196746
_0819673C:
cmp r1, #0x62
beq _08196744
movs r0, #0xb
b _08196746
_08196744:
movs r0, #0xa
_08196746:
pop {r1}
bx r1
.align 2, 0
thumb_func_end GetLandEncounterSlot
thumb_func_start GetWaterEncounterSlot
GetWaterEncounterSlot: @ 0x0819674C
push {lr}
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #0x64
bl __umodsi3
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
cmp r1, #0x3b
bgt _08196768
movs r0, #0
b _0819678E
_08196768:
adds r0, r1, #0
subs r0, #0x3c
cmp r0, #0x1d
bhi _08196774
movs r0, #1
b _0819678E
_08196774:
adds r0, r1, #0
subs r0, #0x5a
cmp r0, #4
bhi _08196780
movs r0, #2
b _0819678E
_08196780:
adds r0, r1, #0
subs r0, #0x5f
cmp r0, #3
bls _0819678C
movs r0, #4
b _0819678E
_0819678C:
movs r0, #3
_0819678E:
pop {r1}
bx r1
.align 2, 0
thumb_func_end GetWaterEncounterSlot
thumb_func_start PopulateSpeciesFromTrainerLocation
PopulateSpeciesFromTrainerLocation: @ 0x08196794
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
sub sp, #4
adds r2, r0, #0
mov r8, r1
movs r3, #0
ldr r0, _0819684C
ldrb r1, [r0]
adds r7, r0, #0
cmp r1, #0xff
beq _08196858
ldr r1, _08196850
lsls r0, r2, #4
adds r2, r0, r1
ldrh r4, [r2, #0xa]
adds r1, r7, #0
_081967B6:
ldrb r0, [r1]
cmp r0, r4
bne _081967C4
ldrb r0, [r1, #1]
ldrh r5, [r2, #0xc]
cmp r0, r5
beq _081967CE
_081967C4:
adds r1, #0x14
adds r3, #1
ldrb r0, [r1]
cmp r0, #0xff
bne _081967B6
_081967CE:
adds r1, r7, #0
lsls r0, r3, #2
adds r0, r0, r3
lsls r5, r0, #2
adds r0, r5, r1
ldrb r0, [r0]
cmp r0, #0xff
beq _08196858
movs r6, #0
adds r0, r1, #4
adds r0, r5, r0
ldr r4, [r0]
cmp r4, #0
beq _081967FE
bl GetLandEncounterSlot
lsls r0, r0, #0x18
mov r2, sp
ldr r1, [r4, #4]
lsrs r0, r0, #0x16
adds r0, r0, r1
ldrh r0, [r0, #2]
strh r0, [r2]
movs r6, #1
_081967FE:
adds r0, r7, #0
adds r0, #8
adds r0, r5, r0
ldr r4, [r0]
cmp r4, #0
beq _08196822
bl GetWaterEncounterSlot
lsls r0, r0, #0x18
lsls r1, r6, #1
mov r3, sp
adds r2, r3, r1
ldr r1, [r4, #4]
lsrs r0, r0, #0x16
adds r0, r0, r1
ldrh r0, [r0, #2]
strh r0, [r2]
adds r6, #1
_08196822:
cmp r6, #0
beq _08196858
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
adds r1, r6, #0
bl __modsi3
lsls r0, r0, #1
add r0, sp
ldrh r0, [r0]
lsls r1, r0, #1
adds r1, r1, r0
lsls r1, r1, #1
ldr r0, _08196854
adds r1, r1, r0
mov r0, r8
bl StringCopy
b _0819685E
.align 2, 0
_0819684C: .4byte 0x0852D9F4
_08196850: .4byte 0x0852AD40
_08196854: .4byte 0x082EA31C
_08196858:
movs r0, #0xff
mov r5, r8
strb r0, [r5]
_0819685E:
add sp, #4
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
thumb_func_end PopulateSpeciesFromTrainerLocation
thumb_func_start PopulateSpeciesFromTrainerParty
PopulateSpeciesFromTrainerParty: @ 0x0819686C
push {r4, r5, r6, r7, lr}
adds r7, r1, #0
ldr r2, _081968BC
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r2
ldrh r0, [r1]
bl GetLastBeatenRematchTrainerId
adds r4, r0, #0
lsls r4, r4, #0x10
ldr r5, _081968C0
lsrs r4, r4, #0xb
adds r0, r5, #0
adds r0, #0x1c
adds r0, r4, r0
ldr r6, [r0]
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
adds r4, r4, r5
ldrb r1, [r4, #0x18]
bl __modsi3
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrb r1, [r4]
cmp r1, #1
beq _081968C8
cmp r1, #1
ble _081968B6
cmp r1, #2
beq _081968C4
cmp r1, #3
beq _081968C8
_081968B6:
lsls r0, r0, #3
b _081968CA
.align 2, 0
_081968BC: .4byte 0x085D6934
_081968C0: .4byte 0x082E383C
_081968C4:
lsls r0, r0, #3
b _081968CA
_081968C8:
lsls r0, r0, #4
_081968CA:
adds r0, r0, r6
ldrh r0, [r0, #4]
lsls r1, r0, #1
adds r1, r1, r0
lsls r1, r1, #1
ldr r0, _081968E4
adds r1, r1, r0
adds r0, r7, #0
bl StringCopy
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_081968E4: .4byte 0x082EA31C
thumb_func_end PopulateSpeciesFromTrainerParty
thumb_func_start PopulateBattleFrontierFacilityName
PopulateBattleFrontierFacilityName: @ 0x081968E8
push {lr}
adds r0, r1, #0
ldr r2, _08196900
ldr r1, _08196904
ldrh r1, [r1]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl StringCopy
pop {r0}
bx r0
.align 2, 0
_08196900: .4byte 0x085D7A84
_08196904: .4byte 0x0203CA54
thumb_func_end PopulateBattleFrontierFacilityName
thumb_func_start PopulateBattleFrontierStreak
PopulateBattleFrontierStreak: @ 0x08196908
push {r4, r5, r6, lr}
adds r5, r1, #0
movs r4, #0
ldr r0, _0819693C
ldrh r1, [r0, #2]
adds r6, r0, #0
cmp r1, #0
beq _08196928
_08196918:
adds r0, r1, #0
movs r1, #0xa
bl __divsi3
adds r1, r0, #0
adds r4, #1
cmp r1, #0
bne _08196918
_08196928:
ldrh r1, [r6, #2]
lsls r3, r4, #0x18
lsrs r3, r3, #0x18
adds r0, r5, #0
movs r2, #0
bl ConvertIntToDecimalStringN
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0819693C: .4byte 0x0203CA54
thumb_func_end PopulateBattleFrontierStreak
thumb_func_start GetNumOwnedBadges
GetNumOwnedBadges: @ 0x08196940
push {r4, r5, lr}
movs r4, #0
ldr r5, _08196948
b _08196950
.align 2, 0
_08196948: .4byte 0x085D7AA0
_0819694C:
adds r5, #2
adds r4, #1
_08196950:
cmp r4, #7
bhi _08196960
ldrh r0, [r5]
bl FlagGet
lsls r0, r0, #0x18
cmp r0, #0
bne _0819694C
_08196960:
adds r0, r4, #0
pop {r4, r5}
pop {r1}
bx r1
thumb_func_end GetNumOwnedBadges
thumb_func_start sub_08196968
sub_08196968: @ 0x08196968
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r7, r0, #0
bl GetNumOwnedBadges
cmp r0, #4
ble _081969E8
bl RtcGetLocalDayCount
adds r4, r0, #0
ldr r0, _081969D8
ldr r0, [r0]
adds r0, #0xa
bl GetTrainerId
adds r6, r0, #0
ldr r0, _081969DC
ands r6, r0
ldr r0, _081969E0
ldr r0, [r0]
ldr r1, _081969E4
adds r0, r0, r1
ldrh r5, [r0]
bl GetNumRematchTrainersFought
mov sb, r0
movs r0, #0xd
mov r1, sb
muls r1, r0, r1
adds r0, r1, #0
movs r1, #0xa
bl __divsi3
mov r8, r0
movs r0, #9
bl GetGameStat
eors r4, r5
eors r5, r0
adds r4, r4, r5
eors r4, r6
adds r0, r4, #0
mov r1, r8
bl __modsi3
cmp r0, sb
bge _081969E8
bl sub_08196374
cmp r0, r7
bne _081969E8
movs r0, #1
b _081969EA
.align 2, 0
_081969D8: .4byte 0x03005AF0
_081969DC: .4byte 0x0000FFFF
_081969E0: .4byte 0x03005AEC
_081969E4: .4byte 0x00002E6A
_081969E8:
movs r0, #0
_081969EA:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
thumb_func_end sub_08196968
thumb_func_start GetFrontierStreakInfo
GetFrontierStreakInfo: @ 0x081969F8
push {r4, r5, r6, lr}
adds r5, r1, #0
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r4, #0
cmp r0, #6
bls _08196A08
b _08196B72
_08196A08:
lsls r0, r0, #2
ldr r1, _08196A14
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08196A14: .4byte 0x08196A18
_08196A18: @ jump table
.4byte _08196A90 @ case 0
.4byte _08196A34 @ case 1
.4byte _08196AC4 @ case 2
.4byte _08196B2C @ case 3
.4byte _08196A68 @ case 4
.4byte _08196AF8 @ case 5
.4byte _08196B54 @ case 6
_08196A34:
movs r3, #0
ldr r0, _08196A60
ldr r0, [r0]
ldr r1, _08196A64
adds r0, r0, r1
_08196A3E:
lsls r1, r3, #2
adds r3, #1
adds r1, r1, r0
movs r2, #1
_08196A46:
ldrh r6, [r1]
cmp r4, r6
bhs _08196A4E
ldrh r4, [r1]
_08196A4E:
adds r1, #2
subs r2, #1
cmp r2, #0
bge _08196A46
cmp r3, #1
ble _08196A3E
movs r0, #3
b _08196B70
.align 2, 0
_08196A60: .4byte 0x03005AF0
_08196A64: .4byte 0x00000D14
_08196A68:
ldr r0, _08196A88
ldr r0, [r0]
ldr r1, _08196A8C
adds r0, r0, r1
movs r3, #1
_08196A72:
ldrh r6, [r0]
cmp r4, r6
bhs _08196A7A
ldrh r4, [r0]
_08196A7A:
adds r0, #2
subs r3, #1
cmp r3, #0
bge _08196A72
movs r0, #4
b _08196B70
.align 2, 0
_08196A88: .4byte 0x03005AF0
_08196A8C: .4byte 0x00000E08
_08196A90:
movs r3, #0
ldr r0, _08196AC0
ldr r0, [r0]
movs r1, #0xcf
lsls r1, r1, #4
adds r0, r0, r1
_08196A9C:
lsls r1, r3, #2
adds r3, #1
adds r1, r1, r0
movs r2, #1
_08196AA4:
ldrh r6, [r1]
cmp r4, r6
bhs _08196AAC
ldrh r4, [r1]
_08196AAC:
adds r1, #2
subs r2, #1
cmp r2, #0
bge _08196AA4
movs r2, #2
cmp r3, #3
ble _08196A9C
str r2, [r5]
b _08196B72
.align 2, 0
_08196AC0: .4byte 0x03005AF0
_08196AC4:
movs r3, #0
ldr r0, _08196AF4
ldr r0, [r0]
movs r1, #0xdd
lsls r1, r1, #4
adds r0, r0, r1
_08196AD0:
lsls r1, r3, #2
adds r3, #1
adds r1, r1, r0
movs r2, #1
_08196AD8:
ldrh r6, [r1]
cmp r4, r6
bhs _08196AE0
ldrh r4, [r1]
_08196AE0:
adds r1, #2
subs r2, #1
cmp r2, #0
bge _08196AD8
movs r2, #2
cmp r3, #1
ble _08196AD0
str r2, [r5]
b _08196B72
.align 2, 0
_08196AF4: .4byte 0x03005AF0
_08196AF8:
movs r3, #0
ldr r0, _08196B24
ldr r0, [r0]
ldr r1, _08196B28
adds r0, r0, r1
_08196B02:
lsls r1, r3, #2
adds r3, #1
adds r1, r1, r0
movs r2, #1
_08196B0A:
ldrh r6, [r1]
cmp r4, r6
bhs _08196B12
ldrh r4, [r1]
_08196B12:
adds r1, #2
subs r2, #1
cmp r2, #0
bge _08196B0A
movs r2, #2
cmp r3, #1
ble _08196B02
str r2, [r5]
b _08196B72
.align 2, 0
_08196B24: .4byte 0x03005AF0
_08196B28: .4byte 0x00000DEA
_08196B2C:
ldr r0, _08196B4C
ldr r0, [r0]
ldr r1, _08196B50
adds r0, r0, r1
movs r3, #1
_08196B36:
ldrh r6, [r0]
cmp r4, r6
bhs _08196B3E
ldrh r4, [r0]
_08196B3E:
adds r0, #2
subs r3, #1
cmp r3, #0
bge _08196B36
movs r3, #2
str r3, [r5]
b _08196B72
.align 2, 0
_08196B4C: .4byte 0x03005AF0
_08196B50: .4byte 0x00000DDE
_08196B54:
ldr r0, _08196B7C
ldr r0, [r0]
ldr r1, _08196B80
adds r0, r0, r1
movs r3, #1
_08196B5E:
ldrh r6, [r0]
cmp r4, r6
bhs _08196B66
ldrh r4, [r0]
_08196B66:
adds r0, #2
subs r3, #1
cmp r3, #0
bge _08196B5E
movs r0, #5
_08196B70:
str r0, [r5]
_08196B72:
adds r0, r4, #0
pop {r4, r5, r6}
pop {r1}
bx r1
.align 2, 0
_08196B7C: .4byte 0x03005AF0
_08196B80: .4byte 0x00000E1E
thumb_func_end GetFrontierStreakInfo
thumb_func_start GetPokedexRatingLevel
GetPokedexRatingLevel: @ 0x08196B84
push {r4, lr}
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
cmp r4, #9
bhi _08196B92
movs r0, #0
b _08196C6E
_08196B92:
cmp r4, #0x13
bhi _08196B9A
movs r0, #1
b _08196C6E
_08196B9A:
cmp r4, #0x1d
bhi _08196BA2
movs r0, #2
b _08196C6E
_08196BA2:
cmp r4, #0x27
bhi _08196BAA
movs r0, #3
b _08196C6E
_08196BAA:
cmp r4, #0x31
bhi _08196BB2
movs r0, #4
b _08196C6E
_08196BB2:
cmp r4, #0x3b
bhi _08196BBA
movs r0, #5
b _08196C6E
_08196BBA:
cmp r4, #0x45
bhi _08196BC2
movs r0, #6
b _08196C6E
_08196BC2:
cmp r4, #0x4f
bhi _08196BCA
movs r0, #7
b _08196C6E
_08196BCA:
cmp r4, #0x59
bhi _08196BD2
movs r0, #8
b _08196C6E
_08196BD2:
cmp r4, #0x63
bhi _08196BDA
movs r0, #9
b _08196C6E
_08196BDA:
cmp r4, #0x6d
bhi _08196BE2
movs r0, #0xa
b _08196C6E
_08196BE2:
cmp r4, #0x77
bhi _08196BEA
movs r0, #0xb
b _08196C6E
_08196BEA:
cmp r4, #0x81
bhi _08196BF2
movs r0, #0xc
b _08196C6E
_08196BF2:
cmp r4, #0x8b
bhi _08196BFA
movs r0, #0xd
b _08196C6E
_08196BFA:
cmp r4, #0x95
bhi _08196C02
movs r0, #0xe
b _08196C6E
_08196C02:
cmp r4, #0x9f
bhi _08196C0A
movs r0, #0xf
b _08196C6E
_08196C0A:
cmp r4, #0xa9
bhi _08196C12
movs r0, #0x10
b _08196C6E
_08196C12:
cmp r4, #0xb3
bhi _08196C1A
movs r0, #0x11
b _08196C6E
_08196C1A:
cmp r4, #0xbd
bhi _08196C22
movs r0, #0x12
b _08196C6E
_08196C22:
cmp r4, #0xc7
bls _08196C6C
movs r0, #0xcd
lsls r0, r0, #1
bl HoennToNationalOrder
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #1
bl GetSetPokedexFlag
lsls r0, r0, #0x18
cmp r0, #0
beq _08196C44
subs r0, r4, #1
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
_08196C44:
ldr r0, _08196C68
bl HoennToNationalOrder
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #1
bl GetSetPokedexFlag
lsls r0, r0, #0x18
cmp r0, #0
beq _08196C60
subs r0, r4, #1
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
_08196C60:
cmp r4, #0xc7
bls _08196C6C
movs r0, #0x14
b _08196C6E
.align 2, 0
_08196C68: .4byte 0x00000199
_08196C6C:
movs r0, #0x13
_08196C6E:
pop {r4}
pop {r1}
bx r1
thumb_func_end GetPokedexRatingLevel
thumb_func_start sub_08196C74
sub_08196C74: @ 0x08196C74
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
mov r8, r0
movs r0, #0xfa
lsls r0, r0, #2
bl Alloc
adds r7, r0, #0
cmp r7, #0
bne _08196C96
movs r0, #0xff
mov r1, r8
strb r0, [r1]
b _08196D50
_08196C96:
movs r0, #0
bl GetHoennPokedexCount
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
movs r0, #1
bl GetHoennPokedexCount
lsls r0, r0, #0x10
lsrs r6, r0, #0x10
ldr r0, _08196D60
mov sl, r0
adds r1, r4, #0
movs r2, #0
movs r3, #3
bl ConvertIntToDecimalStringN
ldr r1, _08196D64
mov sb, r1
mov r0, sb
adds r1, r6, #0
movs r2, #0
movs r3, #3
bl ConvertIntToDecimalStringN
adds r0, r6, #0
bl GetPokedexRatingLevel
adds r4, r0, #0
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
ldr r1, _08196D68
adds r0, r7, #0
bl StringCopy
adds r5, r0, #0
movs r6, #0xfb
strb r6, [r5]
adds r5, #1
ldr r1, _08196D6C
adds r0, r5, #0
bl StringCopy
adds r5, r0, #0
strb r6, [r5]
adds r5, #1
ldr r0, _08196D70
lsls r4, r4, #2
adds r4, r4, r0
ldr r1, [r4]
adds r0, r5, #0
bl StringCopy
mov r0, r8
adds r1, r7, #0
bl StringExpandPlaceholders
adds r5, r0, #0
bl IsNationalPokedexEnabled
cmp r0, #0
beq _08196D4A
strb r6, [r5]
adds r5, #1
movs r0, #0
bl GetNationalPokedexCount
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
movs r0, #1
bl GetNationalPokedexCount
lsls r0, r0, #0x10
lsrs r6, r0, #0x10
mov r0, sl
adds r1, r4, #0
movs r2, #0
movs r3, #3
bl ConvertIntToDecimalStringN
mov r0, sb
adds r1, r6, #0
movs r2, #0
movs r3, #3
bl ConvertIntToDecimalStringN
ldr r1, _08196D74
adds r0, r5, #0
bl StringExpandPlaceholders
_08196D4A:
adds r0, r7, #0
bl Free
_08196D50:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08196D60: .4byte 0x02021C40
_08196D64: .4byte 0x02021C54
_08196D68: .4byte 0x08262DF5
_08196D6C: .4byte 0x08262E39
_08196D70: .4byte 0x085D7AB0
_08196D74: .4byte 0x0826316A
thumb_func_end sub_08196C74
thumb_func_start sub_08196D78
sub_08196D78: @ 0x08196D78
push {r4, r5, lr}
adds r4, r1, #0
adds r5, r2, #0
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
movs r1, #0
bl GetWindowAttribute
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r1, _08196DB0
movs r2, #0x80
lsls r2, r2, #1
lsls r4, r4, #0x10
lsrs r4, r4, #0x10
adds r3, r4, #0
bl LoadBgTiles
ldr r0, _08196DB4
lsls r5, r5, #0x14
lsrs r5, r5, #0x10
adds r1, r5, #0
movs r2, #0x20
bl LoadPalette
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08196DB0: .4byte 0x085D74E8
_08196DB4: .4byte 0x085D74C8
thumb_func_end sub_08196D78
thumb_func_start sub_08196DB8
sub_08196DB8: @ 0x08196DB8
push {lr}
bl DrawMatchCallTextBoxBorder
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_08196DB8