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

3759 lines
63 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.text
.syntax unified
thumb_func_start ResetGpuRegsAndBgs
ResetGpuRegsAndBgs: @ 0x080C49CC
push {lr}
sub sp, #8
movs r0, #0
movs r1, #0
bl SetGpuReg
movs r0, #0xe
movs r1, #0
bl SetGpuReg
movs r0, #0xc
movs r1, #0
bl SetGpuReg
movs r0, #0xa
movs r1, #0
bl SetGpuReg
movs r0, #8
movs r1, #0
bl SetGpuReg
movs r0, #0
movs r1, #0
movs r2, #0
bl ChangeBgX
movs r0, #0
movs r1, #0
movs r2, #0
bl ChangeBgY
movs r0, #1
movs r1, #0
movs r2, #0
bl ChangeBgX
movs r0, #1
movs r1, #0
movs r2, #0
bl ChangeBgY
movs r0, #2
movs r1, #0
movs r2, #0
bl ChangeBgX
movs r0, #2
movs r1, #0
movs r2, #0
bl ChangeBgY
movs r0, #3
movs r1, #0
movs r2, #0
bl ChangeBgX
movs r0, #3
movs r1, #0
movs r2, #0
bl ChangeBgY
movs r0, #0x50
movs r1, #0
bl SetGpuReg
movs r0, #0x54
movs r1, #0
bl SetGpuReg
movs r0, #0x52
movs r1, #0
bl SetGpuReg
movs r0, #0x40
movs r1, #0
bl SetGpuReg
movs r0, #0x44
movs r1, #0
bl SetGpuReg
movs r0, #0x42
movs r1, #0
bl SetGpuReg
movs r0, #0x46
movs r1, #0
bl SetGpuReg
movs r0, #0x48
movs r1, #0
bl SetGpuReg
movs r0, #0x4a
movs r1, #0
bl SetGpuReg
mov r1, sp
movs r0, #0
strh r0, [r1]
movs r1, #0xc0
lsls r1, r1, #0x13
ldr r2, _080C4AB8
mov r0, sp
bl CpuSet
movs r0, #0
str r0, [sp, #4]
add r0, sp, #4
movs r1, #0xe0
lsls r1, r1, #0x13
ldr r2, _080C4ABC
bl CpuSet
add sp, #8
pop {r0}
bx r0
.align 2, 0
_080C4AB8: .4byte 0x0100C000
_080C4ABC: .4byte 0x05000100
thumb_func_end ResetGpuRegsAndBgs
thumb_func_start ShowFrontierPass
ShowFrontierPass: @ 0x080C4AC0
push {lr}
bl AllocateFrontierPassData
ldr r0, _080C4AD0
bl SetMainCallback2
pop {r0}
bx r0
.align 2, 0
_080C4AD0: .4byte 0x080C4D49
thumb_func_end ShowFrontierPass
thumb_func_start LeaveFrontierPass
LeaveFrontierPass: @ 0x080C4AD4
push {lr}
ldr r0, _080C4AE8
ldr r0, [r0]
ldr r0, [r0]
bl SetMainCallback2
bl FreeFrontierPassData
pop {r0}
bx r0
.align 2, 0
_080C4AE8: .4byte 0x0203998C
thumb_func_end LeaveFrontierPass
thumb_func_start AllocateFrontierPassData
AllocateFrontierPassData: @ 0x080C4AEC
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r5, _080C4AFC
ldr r0, [r5]
cmp r0, #0
beq _080C4B00
movs r0, #1
b _080C4BC4
.align 2, 0
_080C4AFC: .4byte 0x0203998C
_080C4B00:
movs r0, #0x18
bl AllocZeroed
str r0, [r5]
cmp r0, #0
bne _080C4B10
movs r0, #2
b _080C4BC4
_080C4B10:
str r4, [r0]
bl GetCurrentRegionMapSectionId
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0x3a
beq _080C4B2E
cmp r4, #0xca
beq _080C4B2E
ldr r0, [r5]
movs r1, #0xb0
strh r1, [r0, #8]
movs r1, #0x68
strh r1, [r0, #0xa]
b _080C4B3C
_080C4B2E:
ldr r2, _080C4BCC
ldr r1, [r2]
movs r0, #0xb0
strh r0, [r1, #8]
movs r0, #0x30
strh r0, [r1, #0xa]
adds r5, r2, #0
_080C4B3C:
ldr r1, [r5]
ldr r0, _080C4BD0
ldr r0, [r0]
ldr r2, _080C4BD4
adds r0, r0, r2
ldrh r0, [r0]
strh r0, [r1, #6]
bl CanCopyRecordedBattleSaveData
ldr r3, [r5]
movs r1, #1
ands r0, r1
ldrb r2, [r3, #0xe]
movs r1, #2
rsbs r1, r1, #0
ands r1, r2
orrs r1, r0
strb r1, [r3, #0xe]
ldr r2, [r5]
ldrb r1, [r2, #0xe]
movs r0, #0xf
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2, #0xe]
bl CountPlayerTrainerStars
ldr r3, [r5]
lsls r0, r0, #4
ldrb r2, [r3, #0xe]
movs r1, #0xf
ands r1, r2
orrs r1, r0
strb r1, [r3, #0xe]
movs r4, #0
adds r6, r5, #0
_080C4B82:
lsls r5, r4, #1
ldr r1, _080C4BD8
adds r0, r5, r1
bl FlagGet
lsls r0, r0, #0x18
cmp r0, #0
beq _080C4B9E
ldr r1, [r6]
adds r1, #0xf
adds r1, r1, r4
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
_080C4B9E:
ldr r2, _080C4BDC
adds r0, r5, r2
bl FlagGet
lsls r0, r0, #0x18
cmp r0, #0
beq _080C4BB8
ldr r1, [r6]
adds r1, #0xf
adds r1, r1, r4
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
_080C4BB8:
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #6
bls _080C4B82
movs r0, #0
_080C4BC4:
pop {r4, r5, r6}
pop {r1}
bx r1
.align 2, 0
_080C4BCC: .4byte 0x0203998C
_080C4BD0: .4byte 0x03005AF0
_080C4BD4: .4byte 0x00000EB8
_080C4BD8: .4byte 0x000008C4
_080C4BDC: .4byte 0x000008C5
thumb_func_end AllocateFrontierPassData
thumb_func_start FreeFrontierPassData
FreeFrontierPassData: @ 0x080C4BE0
push {r4, lr}
ldr r4, _080C4C00
ldr r0, [r4]
cmp r0, #0
beq _080C4C04
movs r1, #0
movs r2, #0x18
bl memset
ldr r0, [r4]
bl Free
movs r0, #0
str r0, [r4]
b _080C4C06
.align 2, 0
_080C4C00: .4byte 0x0203998C
_080C4C04:
movs r0, #1
_080C4C06:
pop {r4}
pop {r1}
bx r1
thumb_func_end FreeFrontierPassData
thumb_func_start AllocateFrontierPassGfx
AllocateFrontierPassGfx: @ 0x080C4C0C
push {r4, lr}
ldr r4, _080C4C1C
ldr r0, [r4]
cmp r0, #0
beq _080C4C20
movs r0, #1
b _080C4C36
.align 2, 0
_080C4C1C: .4byte 0x02039990
_080C4C20:
ldr r0, _080C4C30
bl AllocZeroed
str r0, [r4]
cmp r0, #0
beq _080C4C34
movs r0, #0
b _080C4C36
.align 2, 0
_080C4C30: .4byte 0x00002434
_080C4C34:
movs r0, #2
_080C4C36:
pop {r4}
pop {r1}
bx r1
thumb_func_end AllocateFrontierPassGfx
thumb_func_start FreeFrontierPassGfx
FreeFrontierPassGfx: @ 0x080C4C3C
push {r4, lr}
bl FreeAllWindowBuffers
ldr r4, _080C4C50
ldr r0, [r4]
cmp r0, #0
bne _080C4C54
movs r0, #1
b _080C4C9C
.align 2, 0
_080C4C50: .4byte 0x02039990
_080C4C54:
ldr r0, [r0, #0x28]
cmp r0, #0
beq _080C4C64
bl Free
ldr r1, [r4]
movs r0, #0
str r0, [r1, #0x28]
_080C4C64:
ldr r0, [r4]
ldr r0, [r0, #0x24]
cmp r0, #0
beq _080C4C76
bl Free
ldr r1, [r4]
movs r0, #0
str r0, [r1, #0x24]
_080C4C76:
ldr r0, [r4]
ldr r0, [r0, #0x20]
cmp r0, #0
beq _080C4C88
bl Free
ldr r1, [r4]
movs r0, #0
str r0, [r1, #0x20]
_080C4C88:
ldr r0, [r4]
ldr r2, _080C4CA4
movs r1, #0
bl memset
ldr r0, [r4]
bl Free
movs r0, #0
str r0, [r4]
_080C4C9C:
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080C4CA4: .4byte 0x00002434
thumb_func_end FreeFrontierPassGfx
thumb_func_start VblankCb_FrontierPass
VblankCb_FrontierPass: @ 0x080C4CA8
push {r4, r5, r6, r7, lr}
sub sp, #0x10
ldr r0, _080C4D28
ldr r6, [r0]
adds r0, r6, #0
adds r0, #0x2c
ldrb r0, [r0]
cmp r0, #0
beq _080C4D12
ldr r3, _080C4D2C
ldr r0, _080C4D30
ldr r0, [r0]
ldrb r4, [r0, #0xe]
lsls r4, r4, #0x1c
lsrs r0, r4, #0x1d
subs r0, #1
lsls r0, r0, #2
adds r0, r0, r3
movs r2, #0
ldrsh r1, [r0, r2]
lsls r1, r1, #8
lsrs r0, r4, #0x1d
subs r0, #1
lsls r0, r0, #2
adds r5, r3, #2
adds r0, r0, r5
movs r7, #0
ldrsh r2, [r0, r7]
lsls r2, r2, #8
lsrs r0, r4, #0x1d
subs r0, #1
lsls r0, r0, #2
adds r0, r0, r3
movs r7, #0
ldrsh r3, [r0, r7]
lsrs r4, r4, #0x1d
subs r4, #1
lsls r4, r4, #2
adds r4, r4, r5
movs r5, #0
ldrsh r0, [r4, r5]
str r0, [sp]
movs r7, #0x2e
ldrsh r0, [r6, r7]
str r0, [sp, #4]
movs r4, #0x30
ldrsh r0, [r6, r4]
str r0, [sp, #8]
movs r0, #0
str r0, [sp, #0xc]
movs r0, #2
bl SetBgAffine
_080C4D12:
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
add sp, #0x10
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080C4D28: .4byte 0x02039990
_080C4D2C: .4byte 0x0854AF04
_080C4D30: .4byte 0x0203998C
thumb_func_end VblankCb_FrontierPass
thumb_func_start CB2_FrontierPass
CB2_FrontierPass: @ 0x080C4D34
push {lr}
bl RunTasks
bl AnimateSprites
bl BuildOamBuffer
pop {r0}
bx r0
.align 2, 0
thumb_func_end CB2_FrontierPass
thumb_func_start CB2_InitFrontierPass
CB2_InitFrontierPass: @ 0x080C4D48
push {lr}
bl InitFrontierPass
cmp r0, #0
beq _080C4D60
ldr r0, _080C4D64
movs r1, #0
bl CreateTask
ldr r0, _080C4D68
bl SetMainCallback2
_080C4D60:
pop {r0}
bx r0
.align 2, 0
_080C4D64: .4byte 0x080C5345
_080C4D68: .4byte 0x080C4D35
thumb_func_end CB2_InitFrontierPass
thumb_func_start CB2_HideFrontierPass
CB2_HideFrontierPass: @ 0x080C4D6C
push {lr}
bl HideFrontierPass
cmp r0, #0
beq _080C4D7A
bl LeaveFrontierPass
_080C4D7A:
pop {r0}
bx r0
.align 2, 0
thumb_func_end CB2_HideFrontierPass
thumb_func_start InitFrontierPass
InitFrontierPass: @ 0x080C4D80
push {r4, r5, lr}
sub sp, #0xc
movs r0, #0
str r0, [sp, #8]
ldr r0, _080C4DA0
ldr r0, [r0]
ldrh r0, [r0, #4]
cmp r0, #0xa
bls _080C4D94
b _080C4FF0
_080C4D94:
lsls r0, r0, #2
ldr r1, _080C4DA4
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080C4DA0: .4byte 0x0203998C
_080C4DA4: .4byte 0x080C4DA8
_080C4DA8: @ jump table
.4byte _080C4DD4 @ case 0
.4byte _080C4DEA @ case 1
.4byte _080C4DF0 @ case 2
.4byte _080C4E06 @ case 3
.4byte _080C4E0C @ case 4
.4byte _080C4E5C @ case 5
.4byte _080C4E6C @ case 6
.4byte _080C4ECC @ case 7
.4byte _080C4F20 @ case 8
.4byte _080C4F80 @ case 9
.4byte _080C4FCC @ case 10
_080C4DD4:
movs r0, #0
bl SetVBlankCallback
bl ScanlineEffect_Stop
bl SetVBlankHBlankCallbacksToNull
movs r0, #2
bl DisableInterrupts
b _080C4FF0
_080C4DEA:
bl ResetGpuRegsAndBgs
b _080C4FF0
_080C4DF0:
bl ResetTasks
bl ResetSpriteData
bl FreeAllSpritePalettes
bl ResetPaletteFade
bl reset_temp_tile_data_buffers
b _080C4FF0
_080C4E06:
bl AllocateFrontierPassGfx
b _080C4FF0
_080C4E0C:
movs r0, #0
bl ResetBgsAndClearDma3BusyFlags
ldr r1, _080C4E4C
movs r0, #1
movs r2, #3
bl InitBgsFromTemplates
ldr r4, _080C4E50
ldr r1, [r4]
adds r1, #0x32
movs r0, #1
bl SetBgTilemapBuffer
ldr r1, [r4]
ldr r0, _080C4E54
adds r1, r1, r0
movs r0, #2
bl SetBgTilemapBuffer
ldr r1, [r4]
ldr r0, _080C4E58
adds r1, r1, r0
movs r0, #3
bl SetBgTilemapBuffer
movs r0, #2
movs r1, #6
movs r2, #1
bl SetBgAttribute
b _080C4FF0
.align 2, 0
_080C4E4C: .4byte 0x0854AF0C
_080C4E50: .4byte 0x02039990
_080C4E54: .4byte 0x00001032
_080C4E58: .4byte 0x00002032
_080C4E5C:
ldr r0, _080C4E68
bl InitWindows
bl DeactivateAllTextPrinters
b _080C4FF0
.align 2, 0
_080C4E68: .4byte 0x0854AF24
_080C4E6C:
ldr r0, _080C4EB4
add r1, sp, #8
bl malloc_and_decompress
ldr r4, _080C4EB8
ldr r1, [r4]
str r0, [r1, #0x20]
ldr r0, _080C4EBC
add r1, sp, #8
bl malloc_and_decompress
ldr r1, [r4]
str r0, [r1, #0x24]
ldr r0, _080C4EC0
add r1, sp, #8
bl malloc_and_decompress
ldr r1, [r4]
str r0, [r1, #0x28]
ldr r1, _080C4EC4
movs r4, #0
str r4, [sp]
movs r0, #1
movs r2, #0
movs r3, #0
bl decompress_and_copy_tile_data_to_vram
ldr r1, _080C4EC8
str r4, [sp]
movs r0, #2
movs r2, #0
movs r3, #0
bl decompress_and_copy_tile_data_to_vram
b _080C4FF0
.align 2, 0
_080C4EB4: .4byte 0x0854AE1C
_080C4EB8: .4byte 0x02039990
_080C4EBC: .4byte 0x08549B58
_080C4EC0: .4byte 0x08549DE8
_080C4EC4: .4byte 0x085469A4
_080C4EC8: .4byte 0x08549E20
_080C4ECC:
bl free_temp_tile_data_buffers_if_possible
lsls r0, r0, #0x18
cmp r0, #0
beq _080C4ED8
b _080C4FFA
_080C4ED8:
movs r5, #0x1e
str r5, [sp]
movs r4, #0x14
str r4, [sp, #4]
movs r0, #0
movs r1, #0
movs r2, #0
movs r3, #0
bl FillBgTilemapBufferRect_Palette0
str r5, [sp]
str r4, [sp, #4]
movs r0, #1
movs r1, #0
movs r2, #0
movs r3, #0
bl FillBgTilemapBufferRect_Palette0
str r5, [sp]
str r4, [sp, #4]
movs r0, #2
movs r1, #0
movs r2, #0
movs r3, #0
bl FillBgTilemapBufferRect_Palette0
movs r0, #0
bl CopyBgTilemapBufferToVram
movs r0, #1
bl CopyBgTilemapBufferToVram
movs r0, #2
bl CopyBgTilemapBufferToVram
b _080C4FF0
_080C4F20:
ldr r4, _080C4F78
movs r2, #0xd0
lsls r2, r2, #1
adds r0, r4, #0
movs r1, #0
bl LoadPalette
ldr r5, _080C4F7C
ldr r0, [r5]
ldrb r0, [r0, #0xe]
lsrs r0, r0, #4
lsls r0, r0, #5
adds r4, #0x20
adds r0, r0, r4
movs r1, #0x10
movs r2, #0x20
bl LoadPalette
movs r0, #0
bl stdpal_get
movs r1, #0xf0
movs r2, #0x20
bl LoadPalette
bl sub_080C5B88
ldr r1, [r5]
ldrb r0, [r1, #0xc]
ldrb r1, [r1, #0xd]
bl sub_080C59F0
ldr r5, [r5]
ldrb r0, [r5, #0xe]
movs r1, #0xe
ands r1, r0
cmp r1, #2
beq _080C4F70
cmp r1, #4
bne _080C4FF0
_080C4F70:
movs r0, #0
strh r0, [r5, #4]
movs r0, #1
b _080C4FFC
.align 2, 0
_080C4F78: .4byte 0x085467E4
_080C4F7C: .4byte 0x0203998C
_080C4F80:
movs r1, #0x82
lsls r1, r1, #5
movs r0, #0
bl SetGpuReg
movs r0, #0
bl ShowBg
movs r0, #1
bl ShowBg
movs r0, #2
bl ShowBg
bl LoadCursorAndSymbolSprites
ldr r0, _080C4FC8
bl SetVBlankCallback
movs r4, #1
rsbs r4, r4, #0
adds r0, r4, #0
movs r1, #0x10
movs r2, #0
bl BlendPalettes
movs r0, #0
str r0, [sp]
adds r0, r4, #0
movs r1, #0
movs r2, #0x10
movs r3, #0
bl BeginNormalPaletteFade
b _080C4FF0
.align 2, 0
_080C4FC8: .4byte 0x080C4CA9
_080C4FCC:
bl AnimateSprites
bl BuildOamBuffer
bl UpdatePaletteFade
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _080C4FFA
ldr r0, _080C4FEC
ldr r0, [r0]
strh r1, [r0, #4]
movs r0, #1
b _080C4FFC
.align 2, 0
_080C4FEC: .4byte 0x0203998C
_080C4FF0:
ldr r0, _080C5004
ldr r1, [r0]
ldrh r0, [r1, #4]
adds r0, #1
strh r0, [r1, #4]
_080C4FFA:
movs r0, #0
_080C4FFC:
add sp, #0xc
pop {r4, r5}
pop {r1}
bx r1
.align 2, 0
_080C5004: .4byte 0x0203998C
thumb_func_end InitFrontierPass
thumb_func_start HideFrontierPass
HideFrontierPass: @ 0x080C5008
push {lr}
sub sp, #4
ldr r1, _080C5024
ldr r0, [r1]
ldrh r0, [r0, #4]
adds r2, r1, #0
cmp r0, #5
bhi _080C50E0
lsls r0, r0, #2
ldr r1, _080C5028
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080C5024: .4byte 0x0203998C
_080C5028: .4byte 0x080C502C
_080C502C: @ jump table
.4byte _080C5044 @ case 0
.4byte _080C506C @ case 1
.4byte _080C5078 @ case 2
.4byte _080C50A2 @ case 3
.4byte _080C50A8 @ case 4
.4byte _080C50BA @ case 5
_080C5044:
ldr r0, [r2]
ldrb r0, [r0, #0xe]
movs r1, #0xe
ands r1, r0
cmp r1, #2
beq _080C5066
cmp r1, #4
beq _080C5066
movs r0, #1
rsbs r0, r0, #0
movs r1, #0
str r1, [sp]
movs r2, #0
movs r3, #0x10
bl BeginNormalPaletteFade
b _080C50E0
_080C5066:
ldr r1, [r2]
movs r0, #2
b _080C50E8
_080C506C:
bl UpdatePaletteFade
lsls r0, r0, #0x18
cmp r0, #0
beq _080C50E0
b _080C50EA
_080C5078:
movs r0, #0
movs r1, #0
bl SetGpuReg
movs r0, #0
bl HideBg
movs r0, #1
bl HideBg
movs r0, #2
bl HideBg
movs r0, #0
bl SetVBlankCallback
bl ScanlineEffect_Stop
bl SetVBlankHBlankCallbacksToNull
b _080C50E0
_080C50A2:
bl FreeCursorAndSymbolSprites
b _080C50E0
_080C50A8:
bl ResetGpuRegsAndBgs
bl ResetTasks
bl ResetSpriteData
bl FreeAllSpritePalettes
b _080C50E0
_080C50BA:
movs r0, #0
bl UnsetBgTilemapBuffer
movs r0, #1
bl UnsetBgTilemapBuffer
movs r0, #2
bl UnsetBgTilemapBuffer
bl FreeFrontierPassGfx
ldr r0, _080C50DC
ldr r1, [r0]
movs r0, #0
strh r0, [r1, #4]
movs r0, #1
b _080C50EC
.align 2, 0
_080C50DC: .4byte 0x0203998C
_080C50E0:
ldr r0, _080C50F4
ldr r1, [r0]
ldrh r0, [r1, #4]
adds r0, #1
_080C50E8:
strh r0, [r1, #4]
_080C50EA:
movs r0, #0
_080C50EC:
add sp, #4
pop {r1}
bx r1
.align 2, 0
_080C50F4: .4byte 0x0203998C
thumb_func_end HideFrontierPass
thumb_func_start GetCursorAreaFromCoords
GetCursorAreaFromCoords: @ 0x080C50F8
push {r4, r5, r6, r7, lr}
lsls r0, r0, #0x10
lsrs r6, r0, #0x10
movs r4, #0
ldr r7, _080C5148
lsls r1, r1, #0x10
asrs r5, r1, #0x10
_080C5106:
lsls r0, r4, #3
adds r3, r0, r7
movs r1, #0
ldrsh r0, [r3, r1]
cmp r0, r5
bgt _080C5150
movs r1, #2
ldrsh r0, [r3, r1]
cmp r0, r5
blt _080C5150
movs r0, #4
ldrsh r1, [r3, r0]
lsls r0, r6, #0x10
asrs r2, r0, #0x10
cmp r1, r2
bgt _080C5150
movs r1, #6
ldrsh r0, [r3, r1]
cmp r0, r2
blt _080C5150
cmp r4, #5
bls _080C513E
ldr r0, _080C514C
ldr r0, [r0]
adds r0, r0, r4
ldrb r0, [r0, #9]
cmp r0, #0
beq _080C515A
_080C513E:
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
b _080C515C
.align 2, 0
_080C5148: .4byte 0x0854AF78
_080C514C: .4byte 0x0203998C
_080C5150:
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0xc
bls _080C5106
_080C515A:
movs r0, #0
_080C515C:
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
thumb_func_end GetCursorAreaFromCoords
thumb_func_start CB2_ReshowFrontierPass
CB2_ReshowFrontierPass: @ 0x080C5164
push {lr}
bl InitFrontierPass
cmp r0, #0
beq _080C51C2
ldr r1, _080C519C
ldr r0, [r1]
ldrb r0, [r0, #0xe]
lsls r0, r0, #0x1c
lsrs r0, r0, #0x1d
cmp r0, #1
blt _080C51A8
cmp r0, #2
bgt _080C51A8
ldr r0, _080C51A0
movs r1, #0
bl CreateTask
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r2, _080C51A4
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
adds r1, r1, r2
movs r0, #1
strh r0, [r1, #8]
b _080C51BC
.align 2, 0
_080C519C: .4byte 0x0203998C
_080C51A0: .4byte 0x080C54D5
_080C51A4: .4byte 0x03005B60
_080C51A8:
ldr r2, [r1]
ldrb r1, [r2, #0xe]
movs r0, #0xf
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2, #0xe]
ldr r0, _080C51C8
movs r1, #0
bl CreateTask
_080C51BC:
ldr r0, _080C51CC
bl SetMainCallback2
_080C51C2:
pop {r0}
bx r0
.align 2, 0
_080C51C8: .4byte 0x080C5345
_080C51CC: .4byte 0x080C4D35
thumb_func_end CB2_ReshowFrontierPass
thumb_func_start CB2_ReturnFromRecord
CB2_ReturnFromRecord: @ 0x080C51D0
push {r4, lr}
ldr r4, _080C5208
ldr r0, [r4]
bl AllocateFrontierPassData
ldr r0, _080C520C
ldr r1, [r0]
ldrh r0, [r4, #4]
strh r0, [r1, #8]
ldrh r0, [r4, #6]
strh r0, [r1, #0xa]
adds r0, r4, #0
movs r1, #0
movs r2, #8
bl memset
bl InBattlePyramid
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
beq _080C5210
cmp r0, #2
beq _080C5218
bl Overworld_PlaySpecialMapMusic
b _080C5220
.align 2, 0
_080C5208: .4byte 0x02039998
_080C520C: .4byte 0x0203998C
_080C5210:
ldr r0, _080C5214
b _080C521C
.align 2, 0
_080C5214: .4byte 0x000001CD
_080C5218:
movs r0, #0xe7
lsls r0, r0, #1
_080C521C:
bl PlayBGM
_080C5220:
ldr r0, _080C522C
bl SetMainCallback2
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080C522C: .4byte 0x080C5165
thumb_func_end CB2_ReturnFromRecord
thumb_func_start CB2_ShowFrontierPassFeature
CB2_ShowFrontierPassFeature: @ 0x080C5230
push {lr}
bl HideFrontierPass
cmp r0, #0
beq _080C5296
ldr r0, _080C5254
ldr r2, [r0]
ldrb r0, [r2, #0xe]
lsls r0, r0, #0x1c
lsrs r0, r0, #0x1d
cmp r0, #2
beq _080C5290
cmp r0, #2
bgt _080C5258
cmp r0, #1
beq _080C525E
b _080C5296
.align 2, 0
_080C5254: .4byte 0x0203998C
_080C5258:
cmp r0, #3
beq _080C526C
b _080C5296
_080C525E:
ldr r0, _080C5268
bl ShowFrontierMap
b _080C5296
.align 2, 0
_080C5268: .4byte 0x080C5165
_080C526C:
ldr r1, _080C5288
ldr r0, [r2]
str r0, [r1]
ldrh r0, [r2, #8]
strh r0, [r1, #4]
ldrh r0, [r2, #0xa]
strh r0, [r1, #6]
bl FreeFrontierPassData
ldr r0, _080C528C
bl PlayRecordedBattle
b _080C5296
.align 2, 0
_080C5288: .4byte 0x02039998
_080C528C: .4byte 0x080C51D1
_080C5290:
ldr r0, _080C529C
bl ShowPlayerTrainerCard
_080C5296:
pop {r0}
bx r0
.align 2, 0
_080C529C: .4byte 0x080C5165
thumb_func_end CB2_ShowFrontierPassFeature
thumb_func_start TryCallPassAreaFunction
TryCallPassAreaFunction: @ 0x080C52A0
push {r4, lr}
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
adds r4, r3, #0
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
adds r2, r1, #0
cmp r1, #1
blt _080C52C8
cmp r1, #2
ble _080C52F0
cmp r1, #3
bne _080C52C8
ldr r0, _080C52CC
ldr r2, [r0]
ldrb r1, [r2, #0xe]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _080C52D0
_080C52C8:
movs r0, #0
b _080C532C
.align 2, 0
_080C52CC: .4byte 0x0203998C
_080C52D0:
movs r0, #0xf
rsbs r0, r0, #0
ands r0, r1
movs r1, #6
orrs r0, r1
strb r0, [r2, #0xe]
adds r0, r3, #0
bl DestroyTask
ldr r0, _080C52EC
bl SetMainCallback2
b _080C5316
.align 2, 0
_080C52EC: .4byte 0x080C5231
_080C52F0:
ldr r0, _080C5334
ldr r3, [r0]
movs r0, #7
ands r2, r0
lsls r2, r2, #1
ldrb r1, [r3, #0xe]
subs r0, #0x16
ands r0, r1
orrs r0, r2
strb r0, [r3, #0xe]
ldr r1, _080C5338
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #3
adds r0, r0, r1
ldr r1, _080C533C
str r1, [r0]
movs r1, #0
strh r1, [r0, #8]
_080C5316:
ldr r0, _080C5334
ldr r2, [r0]
ldr r0, _080C5340
ldr r1, [r0]
ldr r0, [r1]
ldrh r0, [r0, #0x20]
strh r0, [r2, #8]
ldr r0, [r1]
ldrh r0, [r0, #0x22]
strh r0, [r2, #0xa]
movs r0, #1
_080C532C:
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080C5334: .4byte 0x0203998C
_080C5338: .4byte 0x03005B60
_080C533C: .4byte 0x080C54D5
_080C5340: .4byte 0x02039990
thumb_func_end TryCallPassAreaFunction
thumb_func_start Task_HandleFrontierPassInput
Task_HandleFrontierPassInput: @ 0x080C5344
push {r4, r5, r6, r7, lr}
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
movs r5, #0
ldr r2, _080C5438
ldrh r1, [r2, #0x2c]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _080C537C
ldr r0, _080C543C
ldr r4, [r0]
ldr r1, [r4]
ldrh r3, [r1, #0x22]
movs r7, #0x22
ldrsh r0, [r1, r7]
cmp r0, #8
ble _080C537C
subs r0, r3, #2
strh r0, [r1, #0x22]
ldr r1, [r4]
movs r3, #0x22
ldrsh r0, [r1, r3]
cmp r0, #7
bgt _080C537A
movs r0, #2
strh r0, [r1, #0x22]
_080C537A:
movs r5, #1
_080C537C:
ldrh r1, [r2, #0x2c]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080C53AA
ldr r0, _080C543C
ldr r4, [r0]
ldr r1, [r4]
ldrh r3, [r1, #0x22]
movs r7, #0x22
ldrsh r0, [r1, r7]
cmp r0, #0x87
bgt _080C53AA
adds r0, r3, #2
strh r0, [r1, #0x22]
ldr r1, [r4]
movs r3, #0x22
ldrsh r0, [r1, r3]
cmp r0, #0x88
ble _080C53A8
movs r0, #0x88
strh r0, [r1, #0x22]
_080C53A8:
movs r5, #1
_080C53AA:
ldrh r1, [r2, #0x2c]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _080C53D8
ldr r0, _080C543C
ldr r4, [r0]
ldr r1, [r4]
ldrh r3, [r1, #0x20]
movs r7, #0x20
ldrsh r0, [r1, r7]
cmp r0, #5
ble _080C53D8
subs r0, r3, #2
strh r0, [r1, #0x20]
ldr r1, [r4]
movs r3, #0x20
ldrsh r0, [r1, r3]
cmp r0, #4
bgt _080C53D6
movs r0, #5
strh r0, [r1, #0x20]
_080C53D6:
movs r5, #1
_080C53D8:
ldrh r1, [r2, #0x2c]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _080C5406
ldr r0, _080C543C
ldr r4, [r0]
ldr r1, [r4]
ldrh r3, [r1, #0x20]
movs r7, #0x20
ldrsh r0, [r1, r7]
cmp r0, #0xe7
bgt _080C5406
adds r0, r3, #2
strh r0, [r1, #0x20]
ldr r1, [r4]
movs r3, #0x20
ldrsh r0, [r1, r3]
cmp r0, #0xe8
ble _080C5404
movs r0, #0xe8
strh r0, [r1, #0x20]
_080C5404:
movs r5, #1
_080C5406:
cmp r5, #0
bne _080C5484
ldr r4, _080C5440
ldr r0, [r4]
ldrb r3, [r0, #0xc]
cmp r3, #0
beq _080C545A
ldrh r1, [r2, #0x2e]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080C545A
cmp r3, #3
bhi _080C5444
movs r0, #5
bl PlaySE
ldr r0, [r4]
ldrb r1, [r0, #0xc]
adds r0, r6, #0
bl TryCallPassAreaFunction
cmp r0, #0
bne _080C54C6
b _080C545A
.align 2, 0
_080C5438: .4byte 0x03002360
_080C543C: .4byte 0x02039990
_080C5440: .4byte 0x0203998C
_080C5444:
cmp r3, #4
bne _080C545A
movs r0, #3
bl PlaySE
ldr r0, _080C547C
bl SetMainCallback2
adds r0, r6, #0
bl DestroyTask
_080C545A:
ldr r0, _080C5480
ldrh r1, [r0, #0x2e]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _080C54C6
movs r0, #3
bl PlaySE
ldr r0, _080C547C
bl SetMainCallback2
adds r0, r6, #0
bl DestroyTask
b _080C54C6
.align 2, 0
_080C547C: .4byte 0x080C4D6D
_080C5480: .4byte 0x03002360
_080C5484:
ldr r0, _080C54CC
ldr r0, [r0]
ldr r1, [r0]
ldrh r0, [r1, #0x20]
subs r0, #5
lsls r0, r0, #0x10
asrs r0, r0, #0x10
ldrh r1, [r1, #0x22]
adds r1, #5
lsls r1, r1, #0x10
asrs r1, r1, #0x10
bl GetCursorAreaFromCoords
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
ldr r4, _080C54D0
ldr r0, [r4]
ldrb r0, [r0, #0xc]
cmp r0, r5
beq _080C54C6
adds r0, r5, #0
bl PrintAreaDescription
ldr r1, [r4]
ldrb r0, [r1, #0xc]
strb r0, [r1, #0xd]
ldr r0, [r4]
strb r5, [r0, #0xc]
ldr r1, [r4]
ldrb r0, [r1, #0xc]
ldrb r1, [r1, #0xd]
bl sub_080C59F0
_080C54C6:
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080C54CC: .4byte 0x02039990
_080C54D0: .4byte 0x0203998C
thumb_func_end Task_HandleFrontierPassInput
thumb_func_start Task_DoFadeEffect
Task_DoFadeEffect: @ 0x080C54D4
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
sub sp, #4
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
lsls r0, r4, #2
adds r0, r0, r4
lsls r5, r0, #3
ldr r0, _080C5500
mov r8, r0
adds r6, r5, r0
ldr r7, _080C5504
ldr r0, [r7]
ldrh r0, [r0, #4]
cmp r0, #1
beq _080C55D0
cmp r0, #1
bgt _080C5508
cmp r0, #0
beq _080C5510
b _080C5698
.align 2, 0
_080C5500: .4byte 0x03005B68
_080C5504: .4byte 0x0203998C
_080C5508:
cmp r0, #2
bne _080C550E
b _080C5626
_080C550E:
b _080C5698
_080C5510:
movs r1, #0
ldrsh r0, [r6, r1]
cmp r0, #0
bne _080C5548
movs r0, #1
movs r1, #0
bl sub_080C5844
movs r1, #0x80
lsls r1, r1, #1
adds r0, r1, #0
strh r0, [r6, #2]
strh r0, [r6, #4]
movs r0, #0x15
strh r0, [r6, #6]
strh r0, [r6, #8]
movs r0, #1
rsbs r0, r0, #0
ldr r1, _080C5544
str r1, [sp]
movs r1, #0
movs r2, #0
movs r3, #0x10
bl BeginNormalPaletteFade
b _080C55A0
.align 2, 0
_080C5544: .4byte 0x00007FFF
_080C5548:
movs r1, #0xfe
lsls r1, r1, #1
adds r0, r1, #0
strh r0, [r6, #2]
strh r0, [r6, #4]
movs r1, #0x15
rsbs r1, r1, #0
adds r0, r1, #0
strh r0, [r6, #6]
strh r0, [r6, #8]
movs r1, #0x82
lsls r1, r1, #5
movs r0, #0
bl SetGpuReg
movs r0, #0
bl ShowBg
movs r0, #1
bl ShowBg
movs r0, #2
bl ShowBg
bl LoadCursorAndSymbolSprites
ldr r0, _080C55C4
bl SetVBlankCallback
movs r5, #1
rsbs r5, r5, #0
ldr r4, _080C55C8
adds r0, r5, #0
movs r1, #0x10
adds r2, r4, #0
bl BlendPalettes
str r4, [sp]
adds r0, r5, #0
movs r1, #0
movs r2, #0x10
movs r3, #0
bl BeginNormalPaletteFade
_080C55A0:
ldr r4, _080C55CC
ldr r0, [r4]
adds r0, #0x2c
movs r1, #1
strb r1, [r0]
movs r1, #2
ldrsh r0, [r6, r1]
bl sub_08151600
ldr r1, [r4]
strh r0, [r1, #0x2e]
movs r1, #4
ldrsh r0, [r6, r1]
bl sub_08151600
ldr r1, [r4]
strh r0, [r1, #0x30]
b _080C5698
.align 2, 0
_080C55C4: .4byte 0x080C4CA9
_080C55C8: .4byte 0x00007FFF
_080C55CC: .4byte 0x02039990
_080C55D0:
bl UpdatePaletteFade
ldrh r0, [r6, #6]
ldrh r1, [r6, #2]
adds r0, r0, r1
strh r0, [r6, #2]
ldrh r0, [r6, #8]
ldrh r1, [r6, #4]
adds r0, r0, r1
strh r0, [r6, #4]
movs r1, #2
ldrsh r0, [r6, r1]
bl sub_08151600
ldr r4, _080C5614
ldr r1, [r4]
strh r0, [r1, #0x2e]
movs r1, #4
ldrsh r0, [r6, r1]
bl sub_08151600
ldr r1, [r4]
strh r0, [r1, #0x30]
movs r1, #0
ldrsh r0, [r6, r1]
cmp r0, #0
bne _080C5618
movs r0, #2
ldrsh r1, [r6, r0]
movs r0, #0xfe
lsls r0, r0, #1
cmp r1, r0
ble _080C56A2
b _080C5698
.align 2, 0
_080C5614: .4byte 0x02039990
_080C5618:
movs r0, #2
ldrsh r1, [r6, r0]
movs r0, #0x80
lsls r0, r0, #1
cmp r1, r0
bne _080C56A2
b _080C5698
_080C5626:
ldr r0, _080C5658
ldr r0, [r0]
adds r1, r0, #0
adds r1, #0x2c
ldrb r0, [r1]
cmp r0, #0
beq _080C5638
movs r0, #0
strb r0, [r1]
_080C5638:
bl UpdatePaletteFade
lsls r0, r0, #0x18
cmp r0, #0
bne _080C56A2
movs r1, #0
ldrsh r0, [r6, r1]
cmp r0, #0
bne _080C5660
adds r0, r4, #0
bl DestroyTask
ldr r0, _080C565C
bl SetMainCallback2
b _080C567E
.align 2, 0
_080C5658: .4byte 0x02039990
_080C565C: .4byte 0x080C5231
_080C5660:
movs r0, #0
movs r1, #0
bl sub_080C5844
ldr r2, [r7]
ldrb r1, [r2, #0xe]
movs r0, #0xf
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2, #0xe]
mov r0, r8
subs r0, #8
adds r0, r5, r0
ldr r1, _080C5690
str r1, [r0]
_080C567E:
movs r0, #2
movs r1, #6
movs r2, #0
bl SetBgAttribute
ldr r0, _080C5694
ldr r1, [r0]
movs r0, #0
b _080C56A0
.align 2, 0
_080C5690: .4byte 0x080C5345
_080C5694: .4byte 0x0203998C
_080C5698:
ldr r0, _080C56B0
ldr r1, [r0]
ldrh r0, [r1, #4]
adds r0, #1
_080C56A0:
strh r0, [r1, #4]
_080C56A2:
add sp, #4
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080C56B0: .4byte 0x0203998C
thumb_func_end Task_DoFadeEffect
thumb_func_start ShowAndPrintWindows
ShowAndPrintWindows: @ 0x080C56B4
push {r4, r5, r6, lr}
mov r6, r8
push {r6}
sub sp, #0xc
movs r4, #0
_080C56BE:
adds r0, r4, #0
bl PutWindowTilemap
adds r0, r4, #0
movs r1, #0
bl FillWindowPixelBuffer
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #4
bls _080C56BE
ldr r6, _080C57A4
str r6, [sp]
movs r0, #0
mov r8, r0
str r0, [sp, #4]
ldr r0, _080C57A8
str r0, [sp, #8]
movs r0, #0
movs r1, #1
movs r2, #8
movs r3, #6
bl AddTextPrinterParameterized3
str r6, [sp]
mov r1, r8
str r1, [sp, #4]
ldr r0, _080C57AC
str r0, [sp, #8]
movs r0, #1
movs r1, #1
movs r2, #0xe
movs r3, #6
bl AddTextPrinterParameterized3
str r6, [sp]
mov r0, r8
str r0, [sp, #4]
ldr r0, _080C57B0
str r0, [sp, #8]
movs r0, #2
movs r1, #0
movs r2, #8
movs r3, #3
bl AddTextPrinterParameterized3
ldr r4, _080C57B4
ldr r5, _080C57B8
ldr r0, [r5]
ldrh r1, [r0, #6]
adds r0, r4, #0
movs r2, #0
movs r3, #5
bl ConvertIntToDecimalStringN
movs r2, #1
rsbs r2, r2, #0
movs r0, #0
adds r1, r4, #0
bl GetStringWidth
movs r2, #0x5c
subs r2, r2, r0
lsls r2, r2, #0x18
lsrs r2, r2, #0x18
str r6, [sp]
mov r1, r8
str r1, [sp, #4]
str r4, [sp, #8]
movs r0, #2
movs r1, #0
movs r3, #0xf
bl AddTextPrinterParameterized3
ldr r1, [r5]
ldrh r0, [r1, #8]
subs r0, #5
lsls r0, r0, #0x10
asrs r0, r0, #0x10
ldrh r1, [r1, #0xa]
adds r1, #5
lsls r1, r1, #0x10
asrs r1, r1, #0x10
bl GetCursorAreaFromCoords
ldr r1, [r5]
strb r0, [r1, #0xc]
ldr r0, [r5]
mov r1, r8
strb r1, [r0, #0xd]
ldr r0, [r5]
ldrb r0, [r0, #0xc]
bl PrintAreaDescription
movs r4, #0
_080C577E:
adds r0, r4, #0
movs r1, #3
bl CopyWindowToVram
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #4
bls _080C577E
movs r0, #0
bl CopyBgTilemapBufferToVram
add sp, #0xc
pop {r3}
mov r8, r3
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_080C57A4: .4byte 0x0854AF6C
_080C57A8: .4byte 0x085CCA93
_080C57AC: .4byte 0x085CCA9E
_080C57B0: .4byte 0x085CCAA8
_080C57B4: .4byte 0x02021C7C
_080C57B8: .4byte 0x0203998C
thumb_func_end ShowAndPrintWindows
thumb_func_start PrintAreaDescription
PrintAreaDescription: @ 0x080C57BC
push {r4, lr}
sub sp, #0xc
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
movs r0, #3
movs r1, #0
bl FillWindowPixelBuffer
cmp r4, #3
bne _080C5804
ldr r0, _080C57F8
ldr r0, [r0]
ldrb r0, [r0, #0xe]
movs r1, #1
ands r1, r0
cmp r1, #0
bne _080C5804
ldr r0, _080C57FC
str r0, [sp]
str r1, [sp, #4]
ldr r0, _080C5800
ldr r0, [r0]
str r0, [sp, #8]
movs r0, #3
movs r1, #1
movs r2, #0
movs r3, #2
bl AddTextPrinterParameterized3
b _080C5826
.align 2, 0
_080C57F8: .4byte 0x0203998C
_080C57FC: .4byte 0x0854AF6F
_080C5800: .4byte 0x0854B138
_080C5804:
cmp r4, #0
beq _080C5826
ldr r0, _080C583C
str r0, [sp]
movs r0, #0
str r0, [sp, #4]
ldr r1, _080C5840
lsls r0, r4, #2
adds r0, r0, r1
ldr r0, [r0]
str r0, [sp, #8]
movs r0, #3
movs r1, #1
movs r2, #0
movs r3, #2
bl AddTextPrinterParameterized3
_080C5826:
movs r0, #3
movs r1, #3
bl CopyWindowToVram
movs r0, #0
bl CopyBgTilemapBufferToVram
add sp, #0xc
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080C583C: .4byte 0x0854AF6F
_080C5840: .4byte 0x0854B138
thumb_func_end PrintAreaDescription
thumb_func_start sub_080C5844
sub_080C5844: @ 0x080C5844
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
sub sp, #0x10
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
lsls r1, r1, #0x18
lsrs r7, r1, #0x18
ldr r0, _080C5868
ldr r0, [r0]
ldrb r0, [r0, #0xe]
lsls r0, r0, #0x1c
lsrs r0, r0, #0x1d
cmp r0, #1
beq _080C586C
cmp r0, #2
beq _080C58AE
b _080C59DA
.align 2, 0
_080C5868: .4byte 0x0203998C
_080C586C:
cmp r2, #0
beq _080C5894
ldr r0, _080C5890
ldr r0, [r0]
ldr r1, [r0, #0x20]
movs r0, #0xc
str r0, [sp]
movs r0, #7
str r0, [sp, #4]
movs r0, #0x10
str r0, [sp, #8]
movs r0, #2
movs r2, #0x10
movs r3, #3
bl CopyToBgTilemapBufferRect_ChangePalette
b _080C58F0
.align 2, 0
_080C5890: .4byte 0x02039990
_080C5894:
movs r0, #0xc
str r0, [sp]
movs r0, #7
str r0, [sp, #4]
movs r0, #0x10
str r0, [sp, #8]
movs r0, #2
movs r1, #0
movs r2, #0x10
movs r3, #3
bl FillBgTilemapBufferRect
b _080C58F0
_080C58AE:
cmp r2, #0
beq _080C58D8
ldr r0, _080C58D4
ldr r0, [r0]
ldr r1, [r0, #0x20]
adds r1, #0x54
movs r0, #0xc
str r0, [sp]
movs r0, #7
str r0, [sp, #4]
movs r0, #0x10
str r0, [sp, #8]
movs r0, #2
movs r2, #0x10
movs r3, #0xa
bl CopyToBgTilemapBufferRect_ChangePalette
b _080C58F0
.align 2, 0
_080C58D4: .4byte 0x02039990
_080C58D8:
movs r0, #0xc
str r0, [sp]
movs r0, #7
str r0, [sp, #4]
movs r0, #0x10
str r0, [sp, #8]
movs r0, #2
movs r1, #0
movs r2, #0x10
movs r3, #0xa
bl FillBgTilemapBufferRect
_080C58F0:
movs r0, #2
bl CopyBgTilemapBufferToVram
cmp r7, #0
beq _080C5970
movs r4, #0xfe
lsls r4, r4, #1
adds r0, r4, #0
bl sub_08151600
adds r6, r0, #0
lsls r6, r6, #0x10
asrs r6, r6, #0x10
adds r0, r4, #0
bl sub_08151600
lsls r0, r0, #0x10
asrs r0, r0, #0x10
ldr r5, _080C5968
ldr r1, _080C596C
ldr r1, [r1]
ldrb r4, [r1, #0xe]
lsls r4, r4, #0x1c
lsrs r1, r4, #0x1d
subs r1, #1
lsls r1, r1, #2
adds r1, r1, r5
movs r2, #0
ldrsh r1, [r1, r2]
lsls r1, r1, #8
lsrs r2, r4, #0x1d
subs r2, #1
lsls r2, r2, #2
adds r3, r5, #2
mov r8, r3
add r2, r8
movs r3, #0
ldrsh r2, [r2, r3]
lsls r2, r2, #8
lsrs r3, r4, #0x1d
subs r3, #1
lsls r3, r3, #2
adds r3, r3, r5
movs r5, #0
ldrsh r3, [r3, r5]
lsrs r4, r4, #0x1d
subs r4, #1
lsls r4, r4, #2
add r4, r8
movs r5, #0
ldrsh r4, [r4, r5]
str r4, [sp]
str r6, [sp, #4]
str r0, [sp, #8]
movs r0, #0
str r0, [sp, #0xc]
movs r0, #2
bl SetBgAffine
b _080C59DA
.align 2, 0
_080C5968: .4byte 0x0854AF04
_080C596C: .4byte 0x0203998C
_080C5970:
movs r4, #0x80
lsls r4, r4, #1
adds r0, r4, #0
bl sub_08151600
adds r6, r0, #0
lsls r6, r6, #0x10
asrs r6, r6, #0x10
adds r0, r4, #0
bl sub_08151600
lsls r0, r0, #0x10
asrs r0, r0, #0x10
ldr r5, _080C59E8
ldr r1, _080C59EC
ldr r1, [r1]
ldrb r4, [r1, #0xe]
lsls r4, r4, #0x1c
lsrs r1, r4, #0x1d
subs r1, #1
lsls r1, r1, #2
adds r1, r1, r5
movs r2, #0
ldrsh r1, [r1, r2]
lsls r1, r1, #8
lsrs r2, r4, #0x1d
subs r2, #1
lsls r2, r2, #2
adds r3, r5, #2
mov r8, r3
add r2, r8
movs r3, #0
ldrsh r2, [r2, r3]
lsls r2, r2, #8
lsrs r3, r4, #0x1d
subs r3, #1
lsls r3, r3, #2
adds r3, r3, r5
movs r5, #0
ldrsh r3, [r3, r5]
lsrs r4, r4, #0x1d
subs r4, #1
lsls r4, r4, #2
add r4, r8
movs r5, #0
ldrsh r4, [r4, r5]
str r4, [sp]
str r6, [sp, #4]
str r0, [sp, #8]
str r7, [sp, #0xc]
movs r0, #2
bl SetBgAffine
_080C59DA:
add sp, #0x10
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080C59E8: .4byte 0x0854AF04
_080C59EC: .4byte 0x0203998C
thumb_func_end sub_080C5844
thumb_func_start sub_080C59F0
sub_080C59F0: @ 0x080C59F0
push {r4, r5, lr}
sub sp, #0xc
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
lsls r1, r1, #0x18
lsrs r5, r1, #0x18
cmp r5, #2
beq _080C5A38
cmp r5, #2
bgt _080C5A0A
cmp r5, #1
beq _080C5A14
b _080C5AB0
_080C5A0A:
cmp r5, #3
beq _080C5A5C
cmp r5, #4
beq _080C5A90
b _080C5AB0
_080C5A14:
ldr r0, _080C5A34
ldr r0, [r0]
ldr r1, [r0, #0x24]
movs r0, #0xc
str r0, [sp]
movs r0, #7
str r0, [sp, #4]
movs r0, #0x11
str r0, [sp, #8]
movs r0, #1
movs r2, #0x10
movs r3, #3
bl CopyToBgTilemapBufferRect_ChangePalette
b _080C5ABA
.align 2, 0
_080C5A34: .4byte 0x02039990
_080C5A38:
ldr r0, _080C5A58
ldr r0, [r0]
ldr r1, [r0, #0x24]
movs r0, #0xa8
lsls r0, r0, #1
adds r1, r1, r0
movs r0, #0xc
str r0, [sp]
movs r0, #7
str r0, [sp, #4]
movs r0, #0x11
str r0, [sp, #8]
movs r0, #1
movs r2, #0x10
b _080C5A7E
.align 2, 0
_080C5A58: .4byte 0x02039990
_080C5A5C:
ldr r0, _080C5A88
ldr r0, [r0]
ldrb r1, [r0, #0xe]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080C5AB0
ldr r0, _080C5A8C
ldr r0, [r0]
ldr r1, [r0, #0x28]
movs r0, #0xc
str r0, [sp]
str r5, [sp, #4]
movs r0, #0x11
str r0, [sp, #8]
movs r0, #1
movs r2, #2
_080C5A7E:
movs r3, #0xa
bl CopyToBgTilemapBufferRect_ChangePalette
b _080C5ABA
.align 2, 0
_080C5A88: .4byte 0x0203998C
_080C5A8C: .4byte 0x02039990
_080C5A90:
ldr r1, _080C5AAC
movs r0, #6
str r0, [sp]
movs r0, #2
str r0, [sp, #4]
movs r0, #0x11
str r0, [sp, #8]
movs r0, #1
movs r2, #0x15
movs r3, #0
bl CopyToBgTilemapBufferRect_ChangePalette
b _080C5ABA
.align 2, 0
_080C5AAC: .4byte 0x08549DB8
_080C5AB0:
subs r0, r4, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #3
bhi _080C5B80
_080C5ABA:
cmp r4, #2
beq _080C5AF8
cmp r4, #2
bgt _080C5AC8
cmp r4, #1
beq _080C5AD2
b _080C5B70
_080C5AC8:
cmp r4, #3
beq _080C5B1C
cmp r4, #4
beq _080C5B50
b _080C5B70
_080C5AD2:
ldr r0, _080C5AF4
ldr r0, [r0]
ldr r1, [r0, #0x24]
adds r1, #0xa8
movs r0, #0xc
str r0, [sp]
movs r0, #7
str r0, [sp, #4]
movs r0, #0x11
str r0, [sp, #8]
movs r0, #1
movs r2, #0x10
movs r3, #3
bl CopyToBgTilemapBufferRect_ChangePalette
b _080C5B7A
.align 2, 0
_080C5AF4: .4byte 0x02039990
_080C5AF8:
ldr r0, _080C5B18
ldr r0, [r0]
ldr r1, [r0, #0x24]
movs r0, #0xfc
lsls r0, r0, #1
adds r1, r1, r0
movs r0, #0xc
str r0, [sp]
movs r0, #7
str r0, [sp, #4]
movs r0, #0x11
str r0, [sp, #8]
movs r0, #1
movs r2, #0x10
b _080C5B40
.align 2, 0
_080C5B18: .4byte 0x02039990
_080C5B1C:
ldr r0, _080C5B48
ldr r0, [r0]
ldrb r1, [r0, #0xe]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080C5B80
ldr r0, _080C5B4C
ldr r0, [r0]
ldr r1, [r0, #0x28]
adds r1, #0x48
movs r0, #0xc
str r0, [sp]
str r4, [sp, #4]
movs r0, #0x11
str r0, [sp, #8]
movs r0, #1
movs r2, #2
_080C5B40:
movs r3, #0xa
bl CopyToBgTilemapBufferRect_ChangePalette
b _080C5B7A
.align 2, 0
_080C5B48: .4byte 0x0203998C
_080C5B4C: .4byte 0x02039990
_080C5B50:
ldr r1, _080C5B6C
movs r0, #6
str r0, [sp]
movs r0, #2
str r0, [sp, #4]
movs r0, #0x11
str r0, [sp, #8]
movs r0, #1
movs r2, #0x15
movs r3, #0
bl CopyToBgTilemapBufferRect_ChangePalette
b _080C5B7A
.align 2, 0
_080C5B6C: .4byte 0x08549DD0
_080C5B70:
subs r0, r5, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #3
bhi _080C5B80
_080C5B7A:
movs r0, #1
bl CopyBgTilemapBufferToVram
_080C5B80:
add sp, #0xc
pop {r4, r5}
pop {r0}
bx r0
thumb_func_end sub_080C59F0
thumb_func_start sub_080C5B88
sub_080C5B88: @ 0x080C5B88
push {r4, lr}
ldr r1, _080C5BC0
movs r0, #1
movs r2, #0
movs r3, #0
bl CopyToBgTilemapBuffer
ldr r4, _080C5BC4
ldr r1, [r4]
ldrb r0, [r1, #0xc]
ldrb r1, [r1, #0xd]
bl sub_080C59F0
ldr r0, [r4]
ldrb r1, [r0, #0xe]
lsls r1, r1, #0x1c
lsrs r1, r1, #0x1d
movs r0, #1
bl sub_080C5844
bl ShowAndPrintWindows
movs r0, #1
bl CopyBgTilemapBufferToVram
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080C5BC0: .4byte 0x08549610
_080C5BC4: .4byte 0x0203998C
thumb_func_end sub_080C5B88
thumb_func_start LoadCursorAndSymbolSprites
LoadCursorAndSymbolSprites: @ 0x080C5BC8
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
sub sp, #0x18
movs r5, #0
bl FreeAllSpritePalettes
bl ResetAffineAnimData
ldr r0, _080C5CC4
bl LoadSpritePalettes
ldr r4, _080C5CC8
adds r0, r4, #0
bl LoadCompressedSpriteSheet
adds r4, #0x10
adds r0, r4, #0
bl LoadCompressedSpriteSheet
ldr r0, _080C5CCC
ldr r1, _080C5CD0
ldr r2, [r1]
movs r3, #8
ldrsh r1, [r2, r3]
movs r6, #0xa
ldrsh r2, [r2, r6]
movs r3, #0
bl CreateSprite
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r3, _080C5CD4
ldr r2, [r3]
lsls r1, r0, #4
adds r1, r1, r0
lsls r1, r1, #2
ldr r0, _080C5CD8
adds r1, r1, r0
str r1, [r2]
ldrb r2, [r1, #5]
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r2
strb r0, [r1, #5]
mov r8, sp
mov sb, r3
_080C5C28:
ldr r0, _080C5CD0
ldr r0, [r0]
adds r0, #0xf
adds r2, r0, r5
ldrb r0, [r2]
adds r4, r5, #1
cmp r0, #0
beq _080C5CAE
mov r1, sp
ldr r0, _080C5CDC
ldm r0!, {r3, r6, r7}
stm r1!, {r3, r6, r7}
ldm r0!, {r3, r6, r7}
stm r1!, {r3, r6, r7}
mov r7, r8
ldrh r0, [r7, #2]
ldr r1, _080C5CE0
adds r0, r0, r1
ldrb r2, [r2]
adds r0, r0, r2
strh r0, [r7, #2]
ldr r1, _080C5CE4
adds r0, r5, #6
lsls r0, r0, #3
adds r0, r0, r1
ldrh r1, [r0, #4]
adds r1, #8
lsls r1, r1, #0x10
asrs r1, r1, #0x10
ldrh r2, [r0]
adds r2, #6
lsls r2, r2, #0x10
asrs r2, r2, #0x10
lsls r3, r4, #0x18
lsrs r3, r3, #0x18
mov r0, sp
bl CreateSprite
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov r3, sb
ldr r2, [r3]
lsls r3, r5, #2
adds r2, #4
adds r2, r2, r3
lsls r1, r0, #4
adds r1, r1, r0
lsls r1, r1, #2
ldr r0, _080C5CD8
adds r1, r1, r0
str r1, [r2]
ldrb r2, [r1, #5]
movs r6, #0xd
rsbs r6, r6, #0
adds r0, r6, #0
ands r2, r0
movs r0, #8
orrs r2, r0
strb r2, [r1, #5]
mov r7, sb
ldr r0, [r7]
adds r0, #4
adds r0, r0, r3
ldr r0, [r0]
adds r1, r5, #0
bl StartSpriteAnim
_080C5CAE:
lsls r0, r4, #0x18
lsrs r5, r0, #0x18
cmp r5, #6
bls _080C5C28
add sp, #0x18
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080C5CC4: .4byte 0x0854B008
_080C5CC8: .4byte 0x0854AFE0
_080C5CCC: .4byte 0x0854B0D8
_080C5CD0: .4byte 0x0203998C
_080C5CD4: .4byte 0x02039990
_080C5CD8: .4byte 0x020205AC
_080C5CDC: .4byte 0x0854B108
_080C5CE0: .4byte 0x0000FFFF
_080C5CE4: .4byte 0x0854AF78
thumb_func_end LoadCursorAndSymbolSprites
thumb_func_start FreeCursorAndSymbolSprites
FreeCursorAndSymbolSprites: @ 0x080C5CE8
push {r4, r5, r6, lr}
movs r5, #0
ldr r4, _080C5D38
ldr r0, [r4]
ldr r0, [r0]
bl DestroySprite
ldr r0, [r4]
str r5, [r0]
adds r6, r4, #0
_080C5CFC:
ldr r0, [r6]
lsls r4, r5, #2
adds r0, #4
adds r0, r0, r4
ldr r0, [r0]
cmp r0, #0
beq _080C5D18
bl DestroySprite
ldr r0, [r6]
adds r0, #4
adds r0, r0, r4
movs r1, #0
str r1, [r0]
_080C5D18:
adds r0, r5, #1
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #6
bls _080C5CFC
bl FreeAllSpritePalettes
movs r0, #2
bl FreeSpriteTilesByTag
movs r0, #0
bl FreeSpriteTilesByTag
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_080C5D38: .4byte 0x02039990
thumb_func_end FreeCursorAndSymbolSprites
thumb_func_start SpriteCb_Dummy
SpriteCb_Dummy: @ 0x080C5D3C
bx lr
.align 2, 0
thumb_func_end SpriteCb_Dummy
thumb_func_start ShowFrontierMap
ShowFrontierMap: @ 0x080C5D40
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, _080C5D74
ldr r0, [r5]
cmp r0, #0
beq _080C5D52
adds r0, r4, #0
bl SetMainCallback2
_080C5D52:
ldr r0, _080C5D78
bl AllocZeroed
str r0, [r5]
str r4, [r0]
bl ResetTasks
ldr r0, _080C5D7C
movs r1, #0
bl CreateTask
ldr r0, _080C5D80
bl SetMainCallback2
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_080C5D74: .4byte 0x02039994
_080C5D78: .4byte 0x00003014
_080C5D7C: .4byte 0x080C60A9
_080C5D80: .4byte 0x080C4D35
thumb_func_end ShowFrontierMap
thumb_func_start FreeFrontierMap
FreeFrontierMap: @ 0x080C5D84
push {r4, lr}
bl ResetTasks
ldr r4, _080C5DB0
ldr r0, [r4]
ldr r0, [r0]
bl SetMainCallback2
ldr r0, [r4]
ldr r2, _080C5DB4
movs r1, #0
bl memset
ldr r0, [r4]
bl Free
movs r0, #0
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080C5DB0: .4byte 0x02039994
_080C5DB4: .4byte 0x00003014
thumb_func_end FreeFrontierMap
thumb_func_start InitFrontierMap
InitFrontierMap: @ 0x080C5DB8
push {r4, r5, lr}
sub sp, #8
ldr r0, _080C5DD4
ldr r0, [r0]
ldrh r0, [r0, #4]
cmp r0, #7
bls _080C5DC8
b _080C5F80
_080C5DC8:
lsls r0, r0, #2
ldr r1, _080C5DD8
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080C5DD4: .4byte 0x0203998C
_080C5DD8: .4byte 0x080C5DDC
_080C5DDC: @ jump table
.4byte _080C5DFC @ case 0
.4byte _080C5E0C @ case 1
.4byte _080C5E12 @ case 2
.4byte _080C5E24 @ case 3
.4byte _080C5EAC @ case 4
.4byte _080C5ED4 @ case 5
.4byte _080C5F14 @ case 6
.4byte _080C5F64 @ case 7
_080C5DFC:
movs r0, #0
bl SetVBlankCallback
bl ScanlineEffect_Stop
bl SetVBlankHBlankCallbacksToNull
b _080C5F80
_080C5E0C:
bl ResetGpuRegsAndBgs
b _080C5F80
_080C5E12:
bl ResetSpriteData
bl FreeAllSpritePalettes
bl ResetPaletteFade
bl reset_temp_tile_data_buffers
b _080C5F80
_080C5E24:
movs r0, #0
bl ResetBgsAndClearDma3BusyFlags
ldr r1, _080C5E9C
movs r0, #0
movs r2, #3
bl InitBgsFromTemplates
ldr r4, _080C5EA0
ldr r1, [r4]
adds r1, #0x12
movs r0, #0
bl SetBgTilemapBuffer
ldr r1, [r4]
ldr r0, _080C5EA4
adds r1, r1, r0
movs r0, #1
bl SetBgTilemapBuffer
ldr r1, [r4]
ldr r0, _080C5EA8
adds r1, r1, r0
movs r0, #2
bl SetBgTilemapBuffer
movs r5, #0x1e
str r5, [sp]
movs r4, #0x14
str r4, [sp, #4]
movs r0, #0
movs r1, #0
movs r2, #0
movs r3, #0
bl FillBgTilemapBufferRect_Palette0
str r5, [sp]
str r4, [sp, #4]
movs r0, #1
movs r1, #0
movs r2, #0
movs r3, #0
bl FillBgTilemapBufferRect_Palette0
str r5, [sp]
str r4, [sp, #4]
movs r0, #2
movs r1, #0
movs r2, #0
movs r3, #0
bl FillBgTilemapBufferRect_Palette0
movs r0, #0
bl CopyBgTilemapBufferToVram
movs r0, #1
bl CopyBgTilemapBufferToVram
b _080C5F04
.align 2, 0
_080C5E9C: .4byte 0x0854AF18
_080C5EA0: .4byte 0x02039994
_080C5EA4: .4byte 0x00001012
_080C5EA8: .4byte 0x00002012
_080C5EAC:
ldr r0, _080C5ECC
bl InitWindows
bl DeactivateAllTextPrinters
bl PrintOnFrontierMap
ldr r1, _080C5ED0
movs r0, #0
str r0, [sp]
movs r0, #1
movs r2, #0
movs r3, #0
bl decompress_and_copy_tile_data_to_vram
b _080C5F80
.align 2, 0
_080C5ECC: .4byte 0x0854AF4C
_080C5ED0: .4byte 0x08548168
_080C5ED4:
bl free_temp_tile_data_buffers_if_possible
lsls r0, r0, #0x18
cmp r0, #0
bne _080C5F8A
ldr r0, _080C5F0C
movs r2, #0xd0
lsls r2, r2, #1
movs r1, #0
bl LoadPalette
movs r0, #0
bl stdpal_get
movs r1, #0xf0
movs r2, #0x20
bl LoadPalette
ldr r1, _080C5F10
movs r0, #2
movs r2, #0
movs r3, #0
bl CopyToBgTilemapBuffer
_080C5F04:
movs r0, #2
bl CopyBgTilemapBufferToVram
b _080C5F80
.align 2, 0
_080C5F0C: .4byte 0x085467E4
_080C5F10: .4byte 0x085498F8
_080C5F14:
movs r1, #0x82
lsls r1, r1, #5
movs r0, #0
bl SetGpuReg
movs r0, #0
bl ShowBg
movs r0, #1
bl ShowBg
movs r0, #2
bl ShowBg
bl InitFrontierMapSprites
ldr r0, _080C5F5C
bl SetVBlankCallback
movs r5, #1
rsbs r5, r5, #0
ldr r4, _080C5F60
adds r0, r5, #0
movs r1, #0x10
adds r2, r4, #0
bl BlendPalettes
str r4, [sp]
adds r0, r5, #0
movs r1, #0
movs r2, #0x10
movs r3, #0
bl BeginNormalPaletteFade
b _080C5F80
.align 2, 0
_080C5F5C: .4byte 0x080C4CA9
_080C5F60: .4byte 0x00007FFF
_080C5F64:
bl UpdatePaletteFade
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _080C5F8A
ldr r0, _080C5F7C
ldr r0, [r0]
strh r1, [r0, #4]
movs r0, #1
b _080C5F8C
.align 2, 0
_080C5F7C: .4byte 0x0203998C
_080C5F80:
ldr r0, _080C5F94
ldr r1, [r0]
ldrh r0, [r1, #4]
adds r0, #1
strh r0, [r1, #4]
_080C5F8A:
movs r0, #0
_080C5F8C:
add sp, #8
pop {r4, r5}
pop {r1}
bx r1
.align 2, 0
_080C5F94: .4byte 0x0203998C
thumb_func_end InitFrontierMap
thumb_func_start ExitFrontierMap
ExitFrontierMap: @ 0x080C5F98
push {r4, lr}
sub sp, #4
ldr r0, _080C5FB0
ldr r0, [r0]
ldrh r0, [r0, #4]
cmp r0, #5
bhi _080C6090
lsls r0, r0, #2
ldr r1, _080C5FB4
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080C5FB0: .4byte 0x0203998C
_080C5FB4: .4byte 0x080C5FB8
_080C5FB8: @ jump table
.4byte _080C5FD0 @ case 0
.4byte _080C5FE8 @ case 1
.4byte _080C600E @ case 2
.4byte _080C601E @ case 3
.4byte _080C6060 @ case 4
.4byte _080C606E @ case 5
_080C5FD0:
movs r0, #1
rsbs r0, r0, #0
ldr r1, _080C5FE4
str r1, [sp]
movs r1, #0
movs r2, #0
movs r3, #0x10
bl BeginNormalPaletteFade
b _080C6090
.align 2, 0
_080C5FE4: .4byte 0x00007FFF
_080C5FE8:
bl UpdatePaletteFade
lsls r0, r0, #0x18
cmp r0, #0
bne _080C609A
movs r0, #0
movs r1, #0
bl SetGpuReg
movs r0, #0
bl HideBg
movs r0, #1
bl HideBg
movs r0, #2
bl HideBg
b _080C6090
_080C600E:
movs r0, #0
bl SetVBlankCallback
bl ScanlineEffect_Stop
bl SetVBlankHBlankCallbacksToNull
b _080C6090
_080C601E:
ldr r4, _080C605C
ldr r0, [r4]
ldr r0, [r0, #4]
cmp r0, #0
beq _080C6032
bl DestroySprite
movs r0, #0
bl FreeSpriteTilesByTag
_080C6032:
ldr r0, [r4]
ldr r0, [r0, #0xc]
cmp r0, #0
beq _080C6044
bl DestroySprite
movs r0, #1
bl FreeSpriteTilesByTag
_080C6044:
ldr r0, [r4]
ldr r0, [r0, #8]
cmp r0, #0
beq _080C6056
bl DestroySprite
movs r0, #4
bl FreeSpriteTilesByTag
_080C6056:
bl FreeAllWindowBuffers
b _080C6090
.align 2, 0
_080C605C: .4byte 0x02039994
_080C6060:
bl ResetGpuRegsAndBgs
bl ResetSpriteData
bl FreeAllSpritePalettes
b _080C6090
_080C606E:
movs r0, #0
bl UnsetBgTilemapBuffer
movs r0, #1
bl UnsetBgTilemapBuffer
movs r0, #2
bl UnsetBgTilemapBuffer
ldr r0, _080C608C
ldr r1, [r0]
movs r0, #0
strh r0, [r1, #4]
movs r0, #1
b _080C609C
.align 2, 0
_080C608C: .4byte 0x0203998C
_080C6090:
ldr r0, _080C60A4
ldr r1, [r0]
ldrh r0, [r1, #4]
adds r0, #1
strh r0, [r1, #4]
_080C609A:
movs r0, #0
_080C609C:
add sp, #4
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080C60A4: .4byte 0x0203998C
thumb_func_end ExitFrontierMap
thumb_func_start Task_HandleFrontierMap
Task_HandleFrontierMap: @ 0x080C60A8
push {r4, lr}
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
lsls r0, r2, #2
adds r0, r0, r2
lsls r0, r0, #3
ldr r1, _080C60CC
adds r4, r0, r1
movs r1, #0
ldrsh r0, [r4, r1]
cmp r0, #5
bls _080C60C2
b _080C61C6
_080C60C2:
lsls r0, r0, #2
ldr r1, _080C60D0
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080C60CC: .4byte 0x03005B68
_080C60D0: .4byte 0x080C60D4
_080C60D4: @ jump table
.4byte _080C60EC @ case 0
.4byte _080C60F2 @ case 1
.4byte _080C6158 @ case 2
.4byte _080C6180 @ case 3
.4byte _080C61B0 @ case 4
.4byte _080C61BA @ case 5
_080C60EC:
bl InitFrontierMap
b _080C61B4
_080C60F2:
ldr r0, _080C610C
ldrh r1, [r0, #0x2e]
movs r2, #2
adds r0, r2, #0
ands r0, r1
cmp r0, #0
beq _080C6110
movs r0, #3
bl PlaySE
movs r0, #4
b _080C61CA
.align 2, 0
_080C610C: .4byte 0x03002360
_080C6110:
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080C6134
ldr r0, _080C612C
ldr r0, [r0]
ldrb r0, [r0, #0x10]
cmp r0, #5
bls _080C6130
movs r0, #0
bl HandleFrontierMapCursorMove
b _080C61CC
.align 2, 0
_080C612C: .4byte 0x02039994
_080C6130:
strh r2, [r4]
b _080C61CC
_080C6134:
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _080C61CC
ldr r0, _080C6150
ldr r0, [r0]
ldrb r0, [r0, #0x10]
cmp r0, #0
bne _080C6154
movs r0, #1
bl HandleFrontierMapCursorMove
b _080C61CC
.align 2, 0
_080C6150: .4byte 0x02039994
_080C6154:
movs r0, #3
b _080C61CA
_080C6158:
movs r1, #2
ldrsh r0, [r4, r1]
cmp r0, #3
ble _080C616E
movs r0, #0
bl HandleFrontierMapCursorMove
movs r0, #0
strh r0, [r4, #2]
movs r0, #1
b _080C61CA
_080C616E:
ldr r0, _080C617C
ldr r0, [r0]
ldr r1, [r0, #4]
ldrh r0, [r1, #0x22]
adds r0, #4
b _080C61A0
.align 2, 0
_080C617C: .4byte 0x02039994
_080C6180:
movs r1, #2
ldrsh r0, [r4, r1]
cmp r0, #3
ble _080C6196
movs r0, #1
bl HandleFrontierMapCursorMove
movs r0, #0
strh r0, [r4, #2]
movs r0, #1
b _080C61CA
_080C6196:
ldr r0, _080C61AC
ldr r0, [r0]
ldr r1, [r0, #4]
ldrh r0, [r1, #0x22]
subs r0, #4
_080C61A0:
strh r0, [r1, #0x22]
ldrh r0, [r4, #2]
adds r0, #1
strh r0, [r4, #2]
b _080C61CC
.align 2, 0
_080C61AC: .4byte 0x02039994
_080C61B0:
bl ExitFrontierMap
_080C61B4:
cmp r0, #0
bne _080C61C6
b _080C61CC
_080C61BA:
adds r0, r2, #0
bl DestroyTask
bl FreeFrontierMap
b _080C61CC
_080C61C6:
ldrh r0, [r4]
adds r0, #1
_080C61CA:
strh r0, [r4]
_080C61CC:
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end Task_HandleFrontierMap
thumb_func_start MapNumToFrontierFacilityId
MapNumToFrontierFacilityId: @ 0x080C61D4
push {lr}
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
ldr r2, _080C61F4
adds r0, r0, r2
lsrs r0, r0, #0x10
cmp r0, #3
bls _080C61F0
adds r0, r1, #0
subs r0, #0xf
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #2
bhi _080C61F8
_080C61F0:
movs r0, #1
b _080C625A
.align 2, 0
_080C61F4: .4byte 0xFFFB0000
_080C61F8:
adds r0, r1, #0
subs r0, #0x12
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #3
bhi _080C6208
movs r0, #2
b _080C625A
_080C6208:
adds r0, r1, #0
subs r0, #0x16
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #2
bhi _080C6218
movs r0, #3
b _080C625A
_080C6218:
adds r0, r1, #0
subs r0, #0x1c
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #2
bhi _080C6228
movs r0, #4
b _080C625A
_080C6228:
adds r0, r1, #0
subs r0, #0x1f
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #2
bhi _080C6238
movs r0, #5
b _080C625A
_080C6238:
adds r0, r1, #0
subs r0, #0x22
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #5
bhi _080C6248
movs r0, #6
b _080C625A
_080C6248:
adds r0, r1, #0
subs r0, #0x19
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #2
bls _080C6258
movs r0, #0
b _080C625A
_080C6258:
movs r0, #7
_080C625A:
pop {r1}
bx r1
.align 2, 0
thumb_func_end MapNumToFrontierFacilityId
thumb_func_start InitFrontierMapSprites
InitFrontierMapSprites: @ 0x080C6260
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
sub sp, #0x18
movs r7, #0
bl FreeAllSpritePalettes
ldr r0, _080C6368
bl LoadSpritePalettes
ldr r6, _080C636C
adds r0, r6, #0
bl LoadCompressedSpriteSheet
ldr r0, _080C6370
mov r8, r0
ldr r4, _080C6374
ldr r0, [r4]
ldrb r2, [r0, #0x10]
lsls r2, r2, #4
adds r2, #8
mov r0, r8
movs r1, #0x9b
movs r3, #2
bl CreateSprite
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
ldr r0, [r4]
lsls r1, r3, #4
adds r1, r1, r3
lsls r1, r1, #2
ldr r2, _080C6378
mov sb, r2
add r1, sb
str r1, [r0, #4]
ldrb r2, [r1, #5]
movs r5, #0xd
rsbs r5, r5, #0
adds r0, r5, #0
ands r0, r2
strb r0, [r1, #5]
ldr r0, [r4]
ldr r1, [r0, #4]
adds r1, #0x3f
ldrb r0, [r1]
movs r2, #1
orrs r0, r2
strb r0, [r1]
ldr r0, [r4]
ldr r0, [r0, #4]
movs r1, #1
bl StartSpriteAnim
adds r6, #8
adds r0, r6, #0
bl LoadCompressedSpriteSheet
movs r3, #0x18
add r8, r3
ldr r6, _080C637C
ldr r0, [r4]
ldrb r0, [r0, #0x10]
lsls r0, r0, #4
adds r0, r0, r6
movs r2, #8
ldrsh r1, [r0, r2]
movs r3, #0xa
ldrsh r2, [r0, r3]
mov r0, r8
movs r3, #1
bl CreateSprite
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
ldr r1, [r4]
lsls r0, r3, #4
adds r0, r0, r3
lsls r0, r0, #2
add r0, sb
str r0, [r1, #0xc]
ldrb r1, [r0, #5]
ands r5, r1
strb r5, [r0, #5]
ldr r1, [r4]
ldr r0, [r1, #0xc]
ldrb r1, [r1, #0x10]
lsls r1, r1, #4
adds r1, r1, r6
ldrb r1, [r1, #0xc]
bl StartSpriteAnim
bl GetCurrentRegionMapSectionId
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0x3a
beq _080C632C
cmp r5, #0xca
beq _080C632C
b _080C6466
_080C632C:
ldr r4, _080C6380
ldr r2, [r4]
movs r0, #5
ldrsb r0, [r2, r0]
cmp r0, #4
beq _080C633E
cmp r0, #0xe
bne _080C6384
movs r7, #0x37
_080C633E:
lsls r0, r7, #0x10
asrs r0, r0, #0x10
ldrh r6, [r2]
adds r0, r0, r6
ldrh r4, [r2, #2]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0
bge _080C6352
adds r0, #7
_080C6352:
lsls r0, r0, #0xd
lsrs r7, r0, #0x10
lsls r0, r4, #0x10
asrs r0, r0, #0x10
cmp r0, #0
bge _080C6360
adds r0, #7
_080C6360:
lsls r0, r0, #0xd
lsrs r4, r0, #0x10
movs r5, #0
b _080C63DE
.align 2, 0
_080C6368: .4byte 0x0854B008
_080C636C: .4byte 0x0854AFE0
_080C6370: .4byte 0x0854B0D8
_080C6374: .4byte 0x02039994
_080C6378: .4byte 0x020205AC
_080C637C: .4byte 0x0854B174
_080C6380: .4byte 0x03005AEC
_080C6384:
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
bl MapNumToFrontierFacilityId
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0
beq _080C63A0
subs r0, r5, #1
lsls r0, r0, #4
adds r0, r0, r6
ldrh r7, [r0, #8]
ldrh r4, [r0, #0xa]
b _080C63DE
_080C63A0:
ldr r1, [r4]
adds r0, r1, #0
adds r0, #0x25
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0xe
bne _080C63BA
ldrh r0, [r1, #0x28]
adds r0, #0x37
lsls r0, r0, #0x10
lsrs r7, r0, #0x10
b _080C63BC
_080C63BA:
ldrh r7, [r1, #0x28]
_080C63BC:
ldr r0, _080C6408
ldr r0, [r0]
ldrh r4, [r0, #0x2a]
lsls r0, r7, #0x10
asrs r0, r0, #0x10
cmp r0, #0
bge _080C63CC
adds r0, #7
_080C63CC:
lsls r0, r0, #0xd
lsrs r7, r0, #0x10
lsls r0, r4, #0x10
asrs r0, r0, #0x10
cmp r0, #0
bge _080C63DA
adds r0, #7
_080C63DA:
lsls r0, r0, #0xd
lsrs r4, r0, #0x10
_080C63DE:
ldr r0, _080C640C
bl LoadCompressedSpriteSheet
mov r1, sp
ldr r0, _080C6410
ldm r0!, {r2, r3, r6}
stm r1!, {r2, r3, r6}
ldm r0!, {r2, r3, r6}
stm r1!, {r2, r3, r6}
mov r1, sp
ldr r0, _080C6414
ldr r0, [r0]
ldrb r0, [r0, #8]
adds r0, #4
strh r0, [r1, #2]
cmp r5, #0
beq _080C6418
lsls r1, r7, #0x10
asrs r1, r1, #0x10
lsls r2, r4, #0x10
b _080C642A
.align 2, 0
_080C6408: .4byte 0x03005AEC
_080C640C: .4byte 0x0854AFF8
_080C6410: .4byte 0x0854B120
_080C6414: .4byte 0x03005AF0
_080C6418:
lsls r1, r7, #0x13
lsls r2, r4, #0x13
movs r0, #0xa0
lsls r0, r0, #0xd
adds r1, r1, r0
asrs r1, r1, #0x10
movs r3, #0x90
lsls r3, r3, #0xe
adds r2, r2, r3
_080C642A:
asrs r2, r2, #0x10
mov r0, sp
movs r3, #0
bl CreateSprite
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
ldr r4, _080C6474
ldr r2, [r4]
lsls r1, r3, #4
adds r1, r1, r3
lsls r1, r1, #2
ldr r0, _080C6478
adds r1, r1, r0
str r1, [r2, #8]
ldrb r2, [r1, #5]
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r2
strb r0, [r1, #5]
ldr r0, _080C647C
ldr r0, [r0]
ldrb r0, [r0, #8]
cmp r0, #0
beq _080C6466
ldr r0, [r4]
ldr r0, [r0, #8]
movs r1, #1
bl StartSpriteAnim
_080C6466:
add sp, #0x18
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080C6474: .4byte 0x02039994
_080C6478: .4byte 0x020205AC
_080C647C: .4byte 0x03005AF0
thumb_func_end InitFrontierMapSprites
thumb_func_start PrintOnFrontierMap
PrintOnFrontierMap: @ 0x080C6480
push {r4, r5, r6, lr}
sub sp, #0xc
movs r4, #0
_080C6486:
adds r0, r4, #0
bl PutWindowTilemap
adds r0, r4, #0
movs r1, #0
bl FillWindowPixelBuffer
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #2
bls _080C6486
movs r4, #0
movs r6, #0
ldr r5, _080C64D0
_080C64A4:
ldr r0, _080C64D4
ldr r0, [r0]
ldrb r0, [r0, #0x10]
cmp r4, r0
bne _080C64DC
lsls r1, r4, #4
adds r3, r1, #2
lsls r3, r3, #0x18
lsrs r3, r3, #0x18
ldr r0, _080C64D8
str r0, [sp]
str r6, [sp, #4]
adds r1, r1, r5
ldr r0, [r1]
str r0, [sp, #8]
movs r0, #1
movs r1, #1
movs r2, #4
bl AddTextPrinterParameterized3
b _080C64FA
.align 2, 0
_080C64D0: .4byte 0x0854B174
_080C64D4: .4byte 0x02039994
_080C64D8: .4byte 0x0854AF72
_080C64DC:
lsls r1, r4, #4
adds r3, r1, #2
lsls r3, r3, #0x18
lsrs r3, r3, #0x18
ldr r0, _080C654C
str r0, [sp]
str r6, [sp, #4]
adds r1, r1, r5
ldr r0, [r1]
str r0, [sp, #8]
movs r0, #1
movs r1, #1
movs r2, #4
bl AddTextPrinterParameterized3
_080C64FA:
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #6
bls _080C64A4
ldr r0, _080C6550
str r0, [sp]
movs r0, #0
str r0, [sp, #4]
ldr r1, _080C6554
ldr r0, _080C6558
ldr r0, [r0]
ldrb r0, [r0, #0x10]
lsls r0, r0, #4
adds r1, #4
adds r0, r0, r1
ldr r0, [r0]
str r0, [sp, #8]
movs r0, #2
movs r1, #1
movs r2, #4
movs r3, #1
bl AddTextPrinterParameterized3
movs r4, #0
_080C652C:
adds r0, r4, #0
movs r1, #3
bl CopyWindowToVram
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #2
bls _080C652C
movs r0, #0
bl CopyBgTilemapBufferToVram
add sp, #0xc
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_080C654C: .4byte 0x0854AF6F
_080C6550: .4byte 0x0854AF6C
_080C6554: .4byte 0x0854B174
_080C6558: .4byte 0x02039994
thumb_func_end PrintOnFrontierMap
thumb_func_start HandleFrontierMapCursorMove
HandleFrontierMapCursorMove: @ 0x080C655C
push {r4, r5, r6, lr}
mov r6, r8
push {r6}
sub sp, #0xc
lsls r0, r0, #0x18
cmp r0, #0
beq _080C6578
ldr r0, _080C6574
ldr r4, [r0]
ldrb r5, [r4, #0x10]
adds r0, r5, #6
b _080C6580
.align 2, 0
_080C6574: .4byte 0x02039994
_080C6578:
ldr r0, _080C6660
ldr r4, [r0]
ldrb r5, [r4, #0x10]
adds r0, r5, #1
_080C6580:
movs r1, #7
bl __modsi3
strb r0, [r4, #0x10]
lsls r0, r5, #4
adds r3, r0, #2
lsls r3, r3, #0x18
lsrs r3, r3, #0x18
ldr r6, _080C6664
str r6, [sp]
movs r1, #0
mov r8, r1
str r1, [sp, #4]
ldr r4, _080C6668
adds r0, r0, r4
ldr r0, [r0]
str r0, [sp, #8]
movs r0, #1
movs r1, #1
movs r2, #4
bl AddTextPrinterParameterized3
ldr r5, _080C6660
ldr r1, [r5]
ldrb r3, [r1, #0x10]
lsls r3, r3, #4
adds r3, #2
lsls r3, r3, #0x18
lsrs r3, r3, #0x18
adds r0, r6, #3
str r0, [sp]
mov r0, r8
str r0, [sp, #4]
ldrb r0, [r1, #0x10]
lsls r0, r0, #4
adds r0, r0, r4
ldr r0, [r0]
str r0, [sp, #8]
movs r0, #1
movs r1, #1
movs r2, #4
bl AddTextPrinterParameterized3
ldr r1, [r5]
ldr r2, [r1, #4]
ldrb r0, [r1, #0x10]
lsls r0, r0, #4
adds r0, #8
strh r0, [r2, #0x22]
ldr r0, [r1, #0xc]
ldrb r1, [r1, #0x10]
lsls r1, r1, #4
adds r1, r1, r4
ldrb r1, [r1, #0xc]
bl StartSpriteAnim
ldr r1, [r5]
ldr r2, [r1, #0xc]
ldrb r0, [r1, #0x10]
lsls r0, r0, #4
adds r0, r0, r4
ldrh r0, [r0, #8]
strh r0, [r2, #0x20]
ldr r2, [r1, #0xc]
ldrb r0, [r1, #0x10]
lsls r0, r0, #4
adds r0, r0, r4
ldrh r0, [r0, #0xa]
strh r0, [r2, #0x22]
movs r0, #2
movs r1, #0
bl FillWindowPixelBuffer
subs r6, #3
str r6, [sp]
mov r1, r8
str r1, [sp, #4]
ldr r0, [r5]
ldrb r0, [r0, #0x10]
lsls r0, r0, #4
adds r4, #4
adds r0, r0, r4
ldr r0, [r0]
str r0, [sp, #8]
movs r0, #2
movs r1, #1
movs r2, #4
movs r3, #1
bl AddTextPrinterParameterized3
movs r4, #0
_080C6636:
adds r0, r4, #0
movs r1, #3
bl CopyWindowToVram
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #2
bls _080C6636
movs r0, #0
bl CopyBgTilemapBufferToVram
movs r0, #0x6c
bl PlaySE
add sp, #0xc
pop {r3}
mov r8, r3
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_080C6660: .4byte 0x02039994
_080C6664: .4byte 0x0854AF6F
_080C6668: .4byte 0x0854B174
thumb_func_end HandleFrontierMapCursorMove
thumb_func_start sub_080C666C
sub_080C666C: @ 0x080C666C
push {r4, r5, r6, lr}
sub sp, #0xc
adds r5, r0, #0
adds r6, r1, #0
ldr r0, [sp, #0x1c]
lsls r2, r2, #0x18
lsls r3, r3, #0x10
lsrs r4, r3, #0x10
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
cmp r2, #0
bne _080C6686
movs r3, #0
_080C6686:
movs r0, #0xf
movs r1, #0xe
str r0, [sp]
str r1, [sp, #4]
ldr r0, [sp, #0x20]
str r0, [sp, #8]
adds r0, r5, #0
adds r1, r6, #0
adds r2, r4, #0
bl sub_080C6738
add sp, #0xc
pop {r4, r5, r6}
pop {r0}
bx r0
thumb_func_end sub_080C666C
thumb_func_start sub_080C66A4
sub_080C66A4: @ 0x080C66A4
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
sub sp, #0x10
adds r4, r0, #0
adds r5, r1, #0
lsls r2, r2, #0x18
lsrs r2, r2, #0x18
mov r8, r2
lsls r3, r3, #0x18
lsrs r7, r3, #0x18
movs r6, #0
_080C66BC:
movs r3, #0
ldrb r0, [r4]
adds r1, r0, #0
adds r2, r0, #0
cmp r1, #0xff
beq _080C672A
_080C66C8:
mov r0, sp
adds r0, r0, r3
adds r0, #8
strb r2, [r0]
adds r4, #1
adds r0, r3, #1
lsls r0, r0, #0x10
lsrs r3, r0, #0x10
cmp r3, #3
bhi _080C6704
ldrb r0, [r4]
adds r1, r0, #0
adds r2, r0, #0
cmp r1, #0xff
bne _080C66C8
cmp r3, #0
beq _080C672A
movs r6, #1
cmp r3, #3
bhi _080C6704
movs r2, #0
_080C66F2:
adds r0, r3, #0
adds r1, r0, #1
lsls r1, r1, #0x10
lsrs r3, r1, #0x10
add r0, sp
adds r0, #8
strb r2, [r0]
cmp r3, #3
bls _080C66F2
_080C6704:
mov r1, sp
adds r1, r1, r3
adds r1, #8
movs r0, #0xff
strb r0, [r1]
str r7, [sp]
ldr r0, [sp, #0x28]
str r0, [sp, #4]
add r0, sp, #8
adds r1, r5, #0
mov r2, r8
movs r3, #0x80
bl sub_080C666C
movs r0, #0x80
lsls r0, r0, #1
adds r5, r5, r0
cmp r6, #0
beq _080C66BC
_080C672A:
add sp, #0x10
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_080C66A4
thumb_func_start sub_080C6738
sub_080C6738: @ 0x080C6738
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x2c
str r0, [sp, #0x20]
str r1, [sp, #0x24]
adds r6, r3, #0
ldr r0, [sp, #0x4c]
mov sb, r0
ldr r1, [sp, #0x50]
mov sl, r1
lsls r2, r2, #0x10
lsrs r2, r2, #0x10
str r2, [sp, #0x28]
lsls r6, r6, #0x18
lsrs r6, r6, #0x18
mov r2, sb
lsls r2, r2, #0x18
lsrs r2, r2, #0x18
mov sb, r2
mov r0, sl
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sl, r0
movs r0, #0
movs r1, #0
str r0, [sp, #0x18]
str r1, [sp, #0x1c]
ldr r0, [sp, #0x20]
bl StringLength_Multibyte
lsls r0, r0, #0x18
ldr r2, _080C6824
ldr r1, [sp, #0x18]
ands r1, r2
orrs r1, r0
str r1, [sp, #0x18]
ldr r1, _080C6828
add r2, sp, #0x18
mov r8, r2
ldr r0, [r2, #4]
ands r0, r1
movs r1, #2
orrs r0, r1
str r0, [r2, #4]
ldr r5, [sp, #0x18]
lsrs r5, r5, #0x18
lsls r5, r5, #5
mov r0, r8
bl AddWindow
adds r4, r0, #0
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
lsls r1, r6, #4
orrs r1, r6
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
adds r0, r4, #0
bl FillWindowPixelBuffer
adds r0, r4, #0
movs r1, #7
bl GetWindowAttribute
adds r7, r0, #0
mov r0, r8
ldrb r0, [r0, #3]
lsls r0, r0, #5
mov r8, r0
add r8, r7
add r0, sp, #0x14
movs r1, #0
strb r6, [r0]
mov r2, sb
strb r2, [r0, #1]
mov r2, sl
strb r2, [r0, #2]
str r1, [sp]
str r1, [sp, #4]
str r0, [sp, #8]
movs r0, #1
rsbs r0, r0, #0
str r0, [sp, #0xc]
ldr r0, [sp, #0x20]
str r0, [sp, #0x10]
adds r0, r4, #0
movs r1, #1
movs r2, #0
movs r3, #2
bl AddTextPrinterParameterized4
lsrs r5, r5, #1
adds r0, r7, #0
ldr r1, [sp, #0x24]
adds r2, r5, #0
bl CpuSet
ldr r2, [sp, #0x24]
ldr r0, [sp, #0x28]
adds r1, r2, r0
mov r0, r8
adds r2, r5, #0
bl CpuSet
adds r0, r4, #0
bl RemoveWindow
add sp, #0x2c
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
_080C6824: .4byte 0x00FFFFFF
_080C6828: .4byte 0xFFFFFF00
thumb_func_end sub_080C6738