pokeemerald/asm/frontier_pass.s
2019-01-26 14:50:24 +01:00

1336 lines
20 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start ShowFrontierMap
ShowFrontierMap: @ 80C6454
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, =gUnknown_02039CF4
ldr r0, [r5]
cmp r0, 0
beq _080C6466
adds r0, r4, 0
bl SetMainCallback2
_080C6466:
ldr r0, =0x00003014
bl AllocZeroed
str r0, [r5]
str r4, [r0]
bl ResetTasks
ldr r0, =sub_80C67BC
movs r1, 0
bl CreateTask
ldr r0, =CB2_FrontierPass
bl SetMainCallback2
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end ShowFrontierMap
thumb_func_start sub_80C6498
sub_80C6498: @ 80C6498
push {r4,lr}
bl ResetTasks
ldr r4, =gUnknown_02039CF4
ldr r0, [r4]
ldr r0, [r0]
bl SetMainCallback2
ldr r0, [r4]
ldr r2, =0x00003014
movs r1, 0
bl memset
ldr r0, [r4]
bl Free
movs r0, 0
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_80C6498
thumb_func_start sub_80C64CC
sub_80C64CC: @ 80C64CC
push {r4,r5,lr}
sub sp, 0x8
ldr r0, =gUnknown_02039CEC
ldr r0, [r0]
ldrh r0, [r0, 0x4]
cmp r0, 0x7
bls _080C64DC
b _080C6694
_080C64DC:
lsls r0, 2
ldr r1, =_080C64F0
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_080C64F0:
.4byte _080C6510
.4byte _080C6520
.4byte _080C6526
.4byte _080C6538
.4byte _080C65C0
.4byte _080C65E8
.4byte _080C6628
.4byte _080C6678
_080C6510:
movs r0, 0
bl SetVBlankCallback
bl ScanlineEffect_Stop
bl SetVBlankHBlankCallbacksToNull
b _080C6694
_080C6520:
bl sub_80C50D0
b _080C6694
_080C6526:
bl ResetSpriteData
bl FreeAllSpritePalettes
bl ResetPaletteFade
bl reset_temp_tile_data_buffers
b _080C6694
_080C6538:
movs r0, 0
bl ResetBgsAndClearDma3BusyFlags
ldr r1, =gUnknown_085713F4
movs r0, 0
movs r2, 0x3
bl InitBgsFromTemplates
ldr r4, =gUnknown_02039CF4
ldr r1, [r4]
adds r1, 0x12
movs r0, 0
bl SetBgTilemapBuffer
ldr r1, [r4]
ldr r0, =0x00001012
adds r1, r0
movs r0, 0x1
bl SetBgTilemapBuffer
ldr r1, [r4]
ldr r0, =0x00002012
adds r1, r0
movs r0, 0x2
bl SetBgTilemapBuffer
movs r5, 0x1E
str r5, [sp]
movs r4, 0x14
str r4, [sp, 0x4]
movs r0, 0
movs r1, 0
movs r2, 0
movs r3, 0
bl FillBgTilemapBufferRect_Palette0
str r5, [sp]
str r4, [sp, 0x4]
movs r0, 0x1
movs r1, 0
movs r2, 0
movs r3, 0
bl FillBgTilemapBufferRect_Palette0
str r5, [sp]
str r4, [sp, 0x4]
movs r0, 0x2
movs r1, 0
movs r2, 0
movs r3, 0
bl FillBgTilemapBufferRect_Palette0
movs r0, 0
bl CopyBgTilemapBufferToVram
movs r0, 0x1
bl CopyBgTilemapBufferToVram
b _080C6618
.pool
_080C65C0:
ldr r0, =gUnknown_08571428
bl InitWindows
bl DeactivateAllTextPrinters
bl sub_80C6B94
ldr r1, =gUnknown_0856FBBC
movs r0, 0
str r0, [sp]
movs r0, 0x1
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
b _080C6694
.pool
_080C65E8:
bl free_temp_tile_data_buffers_if_possible
lsls r0, 24
cmp r0, 0
bne _080C669E
ldr r0, =gUnknown_08DE07C8
movs r2, 0xD0
lsls r2, 1
movs r1, 0
bl LoadPalette
movs r0, 0
bl stdpal_get
movs r1, 0xF0
movs r2, 0x20
bl LoadPalette
ldr r1, =gUnknown_08570E00
movs r0, 0x2
movs r2, 0
movs r3, 0
bl CopyToBgTilemapBuffer
_080C6618:
movs r0, 0x2
bl CopyBgTilemapBufferToVram
b _080C6694
.pool
_080C6628:
movs r1, 0x82
lsls r1, 5
movs r0, 0
bl SetGpuReg
movs r0, 0
bl ShowBg
movs r0, 0x1
bl ShowBg
movs r0, 0x2
bl ShowBg
bl sub_80C6974
ldr r0, =VblankCb_FrontierPass
bl SetVBlankCallback
movs r5, 0x1
negs r5, r5
ldr r4, =0x00007fff
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 _080C6694
.pool
_080C6678:
bl UpdatePaletteFade
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
bne _080C669E
ldr r0, =gUnknown_02039CEC
ldr r0, [r0]
strh r1, [r0, 0x4]
movs r0, 0x1
b _080C66A0
.pool
_080C6694:
ldr r0, =gUnknown_02039CEC
ldr r1, [r0]
ldrh r0, [r1, 0x4]
adds r0, 0x1
strh r0, [r1, 0x4]
_080C669E:
movs r0, 0
_080C66A0:
add sp, 0x8
pop {r4,r5}
pop {r1}
bx r1
.pool
thumb_func_end sub_80C64CC
thumb_func_start sub_80C66AC
sub_80C66AC: @ 80C66AC
push {r4,lr}
sub sp, 0x4
ldr r0, =gUnknown_02039CEC
ldr r0, [r0]
ldrh r0, [r0, 0x4]
cmp r0, 0x5
bhi _080C67A4
lsls r0, 2
ldr r1, =_080C66CC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_080C66CC:
.4byte _080C66E4
.4byte _080C66FC
.4byte _080C6722
.4byte _080C6732
.4byte _080C6774
.4byte _080C6782
_080C66E4:
movs r0, 0x1
negs r0, r0
ldr r1, =0x00007fff
str r1, [sp]
movs r1, 0
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
b _080C67A4
.pool
_080C66FC:
bl UpdatePaletteFade
lsls r0, 24
cmp r0, 0
bne _080C67AE
movs r0, 0
movs r1, 0
bl SetGpuReg
movs r0, 0
bl HideBg
movs r0, 0x1
bl HideBg
movs r0, 0x2
bl HideBg
b _080C67A4
_080C6722:
movs r0, 0
bl SetVBlankCallback
bl ScanlineEffect_Stop
bl SetVBlankHBlankCallbacksToNull
b _080C67A4
_080C6732:
ldr r4, =gUnknown_02039CF4
ldr r0, [r4]
ldr r0, [r0, 0x4]
cmp r0, 0
beq _080C6746
bl DestroySprite
movs r0, 0
bl FreeSpriteTilesByTag
_080C6746:
ldr r0, [r4]
ldr r0, [r0, 0xC]
cmp r0, 0
beq _080C6758
bl DestroySprite
movs r0, 0x1
bl FreeSpriteTilesByTag
_080C6758:
ldr r0, [r4]
ldr r0, [r0, 0x8]
cmp r0, 0
beq _080C676A
bl DestroySprite
movs r0, 0x4
bl FreeSpriteTilesByTag
_080C676A:
bl FreeAllWindowBuffers
b _080C67A4
.pool
_080C6774:
bl sub_80C50D0
bl ResetSpriteData
bl FreeAllSpritePalettes
b _080C67A4
_080C6782:
movs r0, 0
bl UnsetBgTilemapBuffer
movs r0, 0x1
bl UnsetBgTilemapBuffer
movs r0, 0x2
bl UnsetBgTilemapBuffer
ldr r0, =gUnknown_02039CEC
ldr r1, [r0]
movs r0, 0
strh r0, [r1, 0x4]
movs r0, 0x1
b _080C67B0
.pool
_080C67A4:
ldr r0, =gUnknown_02039CEC
ldr r1, [r0]
ldrh r0, [r1, 0x4]
adds r0, 0x1
strh r0, [r1, 0x4]
_080C67AE:
movs r0, 0
_080C67B0:
add sp, 0x4
pop {r4}
pop {r1}
bx r1
.pool
thumb_func_end sub_80C66AC
thumb_func_start sub_80C67BC
sub_80C67BC: @ 80C67BC
push {r4,lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
ldr r1, =gTasks + 0x8
adds r4, r0, r1
movs r1, 0
ldrsh r0, [r4, r1]
cmp r0, 0x5
bls _080C67D6
b _080C68DA
_080C67D6:
lsls r0, 2
ldr r1, =_080C67E8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_080C67E8:
.4byte _080C6800
.4byte _080C6806
.4byte _080C686C
.4byte _080C6894
.4byte _080C68C4
.4byte _080C68CE
_080C6800:
bl sub_80C64CC
b _080C68C8
_080C6806:
ldr r0, =gMain
ldrh r1, [r0, 0x2E]
movs r2, 0x2
adds r0, r2, 0
ands r0, r1
cmp r0, 0
beq _080C6824
movs r0, 0x3
bl PlaySE
movs r0, 0x4
b _080C68DE
.pool
_080C6824:
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _080C6848
ldr r0, =gUnknown_02039CF4
ldr r0, [r0]
ldrb r0, [r0, 0x10]
cmp r0, 0x5
bls _080C6844
movs r0, 0
bl sub_80C6C70
b _080C68E0
.pool
_080C6844:
strh r2, [r4]
b _080C68E0
_080C6848:
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _080C68E0
ldr r0, =gUnknown_02039CF4
ldr r0, [r0]
ldrb r0, [r0, 0x10]
cmp r0, 0
bne _080C6868
movs r0, 0x1
bl sub_80C6C70
b _080C68E0
.pool
_080C6868:
movs r0, 0x3
b _080C68DE
_080C686C:
movs r1, 0x2
ldrsh r0, [r4, r1]
cmp r0, 0x3
ble _080C6882
movs r0, 0
bl sub_80C6C70
movs r0, 0
strh r0, [r4, 0x2]
movs r0, 0x1
b _080C68DE
_080C6882:
ldr r0, =gUnknown_02039CF4
ldr r0, [r0]
ldr r1, [r0, 0x4]
ldrh r0, [r1, 0x22]
adds r0, 0x4
b _080C68B4
.pool
_080C6894:
movs r1, 0x2
ldrsh r0, [r4, r1]
cmp r0, 0x3
ble _080C68AA
movs r0, 0x1
bl sub_80C6C70
movs r0, 0
strh r0, [r4, 0x2]
movs r0, 0x1
b _080C68DE
_080C68AA:
ldr r0, =gUnknown_02039CF4
ldr r0, [r0]
ldr r1, [r0, 0x4]
ldrh r0, [r1, 0x22]
subs r0, 0x4
_080C68B4:
strh r0, [r1, 0x22]
ldrh r0, [r4, 0x2]
adds r0, 0x1
strh r0, [r4, 0x2]
b _080C68E0
.pool
_080C68C4:
bl sub_80C66AC
_080C68C8:
cmp r0, 0
bne _080C68DA
b _080C68E0
_080C68CE:
adds r0, r2, 0
bl DestroyTask
bl sub_80C6498
b _080C68E0
_080C68DA:
ldrh r0, [r4]
adds r0, 0x1
_080C68DE:
strh r0, [r4]
_080C68E0:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80C67BC
thumb_func_start sub_80C68E8
sub_80C68E8: @ 80C68E8
push {lr}
lsls r0, 16
lsrs r1, r0, 16
ldr r2, =0xfffb0000
adds r0, r2
lsrs r0, 16
cmp r0, 0x3
bls _080C6904
adds r0, r1, 0
subs r0, 0xF
lsls r0, 16
lsrs r0, 16
cmp r0, 0x2
bhi _080C690C
_080C6904:
movs r0, 0x1
b _080C696E
.pool
_080C690C:
adds r0, r1, 0
subs r0, 0x12
lsls r0, 16
lsrs r0, 16
cmp r0, 0x3
bhi _080C691C
movs r0, 0x2
b _080C696E
_080C691C:
adds r0, r1, 0
subs r0, 0x16
lsls r0, 16
lsrs r0, 16
cmp r0, 0x2
bhi _080C692C
movs r0, 0x3
b _080C696E
_080C692C:
adds r0, r1, 0
subs r0, 0x1C
lsls r0, 16
lsrs r0, 16
cmp r0, 0x2
bhi _080C693C
movs r0, 0x4
b _080C696E
_080C693C:
adds r0, r1, 0
subs r0, 0x1F
lsls r0, 16
lsrs r0, 16
cmp r0, 0x2
bhi _080C694C
movs r0, 0x5
b _080C696E
_080C694C:
adds r0, r1, 0
subs r0, 0x22
lsls r0, 16
lsrs r0, 16
cmp r0, 0x5
bhi _080C695C
movs r0, 0x6
b _080C696E
_080C695C:
adds r0, r1, 0
subs r0, 0x19
lsls r0, 16
lsrs r0, 16
cmp r0, 0x2
bls _080C696C
movs r0, 0
b _080C696E
_080C696C:
movs r0, 0x7
_080C696E:
pop {r1}
bx r1
thumb_func_end sub_80C68E8
thumb_func_start sub_80C6974
sub_80C6974: @ 80C6974
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x18
movs r7, 0
bl FreeAllSpritePalettes
ldr r0, =gUnknown_085714E4
bl LoadSpritePalettes
ldr r6, =gUnknown_085714BC
adds r0, r6, 0
bl LoadCompressedSpriteSheet
ldr r0, =gUnknown_085715B4
mov r8, r0
ldr r4, =gUnknown_02039CF4
ldr r0, [r4]
ldrb r2, [r0, 0x10]
lsls r2, 4
adds r2, 0x8
mov r0, r8
movs r1, 0x9B
movs r3, 0x2
bl CreateSprite
lsls r0, 24
lsrs r3, r0, 24
ldr r0, [r4]
lsls r1, r3, 4
adds r1, r3
lsls r1, 2
ldr r2, =gSprites
mov r9, r2
add r1, r9
str r1, [r0, 0x4]
ldrb r2, [r1, 0x5]
movs r5, 0xD
negs r5, r5
adds r0, r5, 0
ands r0, r2
strb r0, [r1, 0x5]
ldr r0, [r4]
ldr r1, [r0, 0x4]
adds r1, 0x3F
ldrb r0, [r1]
movs r2, 0x1
orrs r0, r2
strb r0, [r1]
ldr r0, [r4]
ldr r0, [r0, 0x4]
movs r1, 0x1
bl StartSpriteAnim
adds r6, 0x8
adds r0, r6, 0
bl LoadCompressedSpriteSheet
movs r3, 0x18
add r8, r3
ldr r6, =gUnknown_08571650
ldr r0, [r4]
ldrb r0, [r0, 0x10]
lsls r0, 4
adds r0, r6
movs r2, 0x8
ldrsh r1, [r0, r2]
movs r3, 0xA
ldrsh r2, [r0, r3]
mov r0, r8
movs r3, 0x1
bl CreateSprite
lsls r0, 24
lsrs r3, r0, 24
ldr r1, [r4]
lsls r0, r3, 4
adds r0, r3
lsls r0, 2
add r0, r9
str r0, [r1, 0xC]
ldrb r1, [r0, 0x5]
ands r5, r1
strb r5, [r0, 0x5]
ldr r1, [r4]
ldr r0, [r1, 0xC]
ldrb r1, [r1, 0x10]
lsls r1, 4
adds r1, r6
ldrb r1, [r1, 0xC]
bl StartSpriteAnim
bl GetCurrentRegionMapSectionId
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x3A
beq _080C6A40
cmp r5, 0xCA
beq _080C6A40
b _080C6B7A
_080C6A40:
ldr r4, =gSaveBlock1Ptr
ldr r2, [r4]
movs r0, 0x5
ldrsb r0, [r2, r0]
cmp r0, 0x4
beq _080C6A52
cmp r0, 0xE
bne _080C6A98
movs r7, 0x37
_080C6A52:
lsls r0, r7, 16
asrs r0, 16
ldrh r6, [r2]
adds r0, r6
ldrh r4, [r2, 0x2]
lsls r0, 16
asrs r0, 16
cmp r0, 0
bge _080C6A66
adds r0, 0x7
_080C6A66:
lsls r0, 13
lsrs r7, r0, 16
lsls r0, r4, 16
asrs r0, 16
cmp r0, 0
bge _080C6A74
adds r0, 0x7
_080C6A74:
lsls r0, 13
lsrs r4, r0, 16
movs r5, 0
b _080C6AF2
.pool
_080C6A98:
lsls r0, 16
lsrs r0, 16
bl sub_80C68E8
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
beq _080C6AB4
subs r0, r5, 0x1
lsls r0, 4
adds r0, r6
ldrh r7, [r0, 0x8]
ldrh r4, [r0, 0xA]
b _080C6AF2
_080C6AB4:
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0x25
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
cmp r0, 0xE
bne _080C6ACE
ldrh r0, [r1, 0x28]
adds r0, 0x37
lsls r0, 16
lsrs r7, r0, 16
b _080C6AD0
_080C6ACE:
ldrh r7, [r1, 0x28]
_080C6AD0:
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
ldrh r4, [r0, 0x2A]
lsls r0, r7, 16
asrs r0, 16
cmp r0, 0
bge _080C6AE0
adds r0, 0x7
_080C6AE0:
lsls r0, 13
lsrs r7, r0, 16
lsls r0, r4, 16
asrs r0, 16
cmp r0, 0
bge _080C6AEE
adds r0, 0x7
_080C6AEE:
lsls r0, 13
lsrs r4, r0, 16
_080C6AF2:
ldr r0, =gUnknown_085714D4
bl LoadCompressedSpriteSheet
mov r1, sp
ldr r0, =gUnknown_085715FC
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, =gSaveBlock2Ptr
ldr r0, [r0]
ldrb r0, [r0, 0x8]
adds r0, 0x4
strh r0, [r1, 0x2]
cmp r5, 0
beq _080C6B2C
lsls r1, r7, 16
asrs r1, 16
lsls r2, r4, 16
b _080C6B3E
.pool
_080C6B2C:
lsls r1, r7, 19
lsls r2, r4, 19
movs r0, 0xA0
lsls r0, 13
adds r1, r0
asrs r1, 16
movs r3, 0x90
lsls r3, 14
adds r2, r3
_080C6B3E:
asrs r2, 16
mov r0, sp
movs r3, 0
bl CreateSprite
lsls r0, 24
lsrs r3, r0, 24
ldr r4, =gUnknown_02039CF4
ldr r2, [r4]
lsls r1, r3, 4
adds r1, r3
lsls r1, 2
ldr r0, =gSprites
adds r1, r0
str r1, [r2, 0x8]
ldrb r2, [r1, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r2
strb r0, [r1, 0x5]
ldr r0, =gSaveBlock2Ptr
ldr r0, [r0]
ldrb r0, [r0, 0x8]
cmp r0, 0
beq _080C6B7A
ldr r0, [r4]
ldr r0, [r0, 0x8]
movs r1, 0x1
bl StartSpriteAnim
_080C6B7A:
add sp, 0x18
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_80C6974
thumb_func_start sub_80C6B94
sub_80C6B94: @ 80C6B94
push {r4-r6,lr}
sub sp, 0xC
movs r4, 0
_080C6B9A:
adds r0, r4, 0
bl PutWindowTilemap
adds r0, r4, 0
movs r1, 0
bl FillWindowPixelBuffer
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x2
bls _080C6B9A
movs r4, 0
movs r6, 0
ldr r5, =gUnknown_08571650
_080C6BB8:
ldr r0, =gUnknown_02039CF4
ldr r0, [r0]
ldrb r0, [r0, 0x10]
cmp r4, r0
bne _080C6BF0
lsls r1, r4, 4
adds r3, r1, 0x1
lsls r3, 24
lsrs r3, 24
ldr r0, =gUnknown_0857144E
str r0, [sp]
str r6, [sp, 0x4]
adds r1, r5
ldr r0, [r1]
str r0, [sp, 0x8]
movs r0, 0x1
movs r1, 0x7
movs r2, 0x4
bl AddTextPrinterParameterized3
b _080C6C0E
.pool
_080C6BF0:
lsls r1, r4, 4
adds r3, r1, 0x1
lsls r3, 24
lsrs r3, 24
ldr r0, =gUnknown_0857144B
str r0, [sp]
str r6, [sp, 0x4]
adds r1, r5
ldr r0, [r1]
str r0, [sp, 0x8]
movs r0, 0x1
movs r1, 0x7
movs r2, 0x4
bl AddTextPrinterParameterized3
_080C6C0E:
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x6
bls _080C6BB8
ldr r0, =gUnknown_08571448
str r0, [sp]
movs r0, 0
str r0, [sp, 0x4]
ldr r1, =gUnknown_08571650
ldr r0, =gUnknown_02039CF4
ldr r0, [r0]
ldrb r0, [r0, 0x10]
lsls r0, 4
adds r1, 0x4
adds r0, r1
ldr r0, [r0]
str r0, [sp, 0x8]
movs r0, 0x2
movs r1, 0x1
movs r2, 0x4
movs r3, 0
bl AddTextPrinterParameterized3
movs r4, 0
_080C6C40:
adds r0, r4, 0
movs r1, 0x3
bl CopyWindowToVram
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x2
bls _080C6C40
movs r0, 0
bl CopyBgTilemapBufferToVram
add sp, 0xC
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_80C6B94
thumb_func_start sub_80C6C70
sub_80C6C70: @ 80C6C70
push {r4-r6,lr}
mov r6, r8
push {r6}
sub sp, 0xC
lsls r0, 24
cmp r0, 0
beq _080C6C8C
ldr r0, =gUnknown_02039CF4
ldr r4, [r0]
ldrb r5, [r4, 0x10]
adds r0, r5, 0x6
b _080C6C94
.pool
_080C6C8C:
ldr r0, =gUnknown_02039CF4
ldr r4, [r0]
ldrb r5, [r4, 0x10]
adds r0, r5, 0x1
_080C6C94:
movs r1, 0x7
bl __modsi3
strb r0, [r4, 0x10]
lsls r0, r5, 4
adds r3, r0, 0x1
lsls r3, 24
lsrs r3, 24
ldr r6, =gUnknown_0857144B
str r6, [sp]
movs r1, 0
mov r8, r1
str r1, [sp, 0x4]
ldr r4, =gUnknown_08571650
adds r0, r4
ldr r0, [r0]
str r0, [sp, 0x8]
movs r0, 0x1
movs r1, 0x7
movs r2, 0x4
bl AddTextPrinterParameterized3
ldr r5, =gUnknown_02039CF4
ldr r1, [r5]
ldrb r3, [r1, 0x10]
lsls r3, 4
adds r3, 0x1
lsls r3, 24
lsrs r3, 24
adds r0, r6, 0x3
str r0, [sp]
mov r0, r8
str r0, [sp, 0x4]
ldrb r0, [r1, 0x10]
lsls r0, 4
adds r0, r4
ldr r0, [r0]
str r0, [sp, 0x8]
movs r0, 0x1
movs r1, 0x7
movs r2, 0x4
bl AddTextPrinterParameterized3
ldr r1, [r5]
ldr r2, [r1, 0x4]
ldrb r0, [r1, 0x10]
lsls r0, 4
adds r0, 0x8
strh r0, [r2, 0x22]
ldr r0, [r1, 0xC]
ldrb r1, [r1, 0x10]
lsls r1, 4
adds r1, r4
ldrb r1, [r1, 0xC]
bl StartSpriteAnim
ldr r1, [r5]
ldr r2, [r1, 0xC]
ldrb r0, [r1, 0x10]
lsls r0, 4
adds r0, r4
ldrh r0, [r0, 0x8]
strh r0, [r2, 0x20]
ldr r2, [r1, 0xC]
ldrb r0, [r1, 0x10]
lsls r0, 4
adds r0, r4
ldrh r0, [r0, 0xA]
strh r0, [r2, 0x22]
movs r0, 0x2
movs r1, 0
bl FillWindowPixelBuffer
subs r6, 0x3
str r6, [sp]
mov r1, r8
str r1, [sp, 0x4]
ldr r0, [r5]
ldrb r0, [r0, 0x10]
lsls r0, 4
adds r4, 0x4
adds r0, r4
ldr r0, [r0]
str r0, [sp, 0x8]
movs r0, 0x2
movs r1, 0x1
movs r2, 0x4
movs r3, 0
bl AddTextPrinterParameterized3
movs r4, 0
_080C6D4A:
adds r0, r4, 0
movs r1, 0x3
bl CopyWindowToVram
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x2
bls _080C6D4A
movs r0, 0
bl CopyBgTilemapBufferToVram
movs r0, 0x6C
bl PlaySE
add sp, 0xC
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_80C6C70
thumb_func_start sub_80C6D80
sub_80C6D80: @ 80C6D80
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x2C
str r0, [sp, 0x24]
adds r7, r1, 0
lsls r2, 24
lsrs r2, 24
str r2, [sp, 0x28]
lsls r3, 24
lsrs r3, 24
mov r9, r3
movs r0, 0
movs r1, 0
str r0, [sp, 0x1C]
str r1, [sp, 0x20]
ldr r1, =0x00ffffff
ldr r0, [sp, 0x1C]
ands r0, r1
movs r1, 0xC0
lsls r1, 21
orrs r0, r1
str r0, [sp, 0x1C]
ldr r1, =0xffffff00
add r5, sp, 0x1C
ldr r0, [r5, 0x4]
ands r0, r1
movs r1, 0x2
orrs r0, r1
str r0, [r5, 0x4]
adds r0, r5, 0
bl AddWindow
lsls r0, 16
lsrs r0, 16
mov r10, r0
lsls r4, r0, 24
lsrs r4, 24
mov r0, r9
lsls r1, r0, 4
orrs r1, r0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl FillWindowPixelBuffer
adds r0, r4, 0
movs r1, 0x7
bl GetWindowAttribute
adds r6, r0, 0
ldrb r0, [r5, 0x3]
lsls r0, 5
adds r0, r6
mov r8, r0
ldr r1, [sp, 0x28]
cmp r1, 0
bne _080C6E04
add r0, sp, 0x14
b _080C6E08
.pool
_080C6E04:
add r0, sp, 0x14
mov r1, r9
_080C6E08:
strb r1, [r0]
add r1, sp, 0x14
movs r2, 0
movs r0, 0xF
strb r0, [r1, 0x1]
movs r0, 0xE
strb r0, [r1, 0x2]
mov r0, r10
lsls r4, r0, 24
lsrs r0, r4, 24
str r2, [sp]
str r2, [sp, 0x4]
str r1, [sp, 0x8]
movs r1, 0x1
negs r1, r1
str r1, [sp, 0xC]
ldr r1, [sp, 0x24]
str r1, [sp, 0x10]
movs r1, 0x1
movs r3, 0x1
bl AddTextPrinterParameterized4
ldr r0, [sp, 0x4C]
mov r10, r4
cmp r0, 0x6
bls _080C6E3E
movs r0, 0x6
_080C6E3E:
ldr r4, [sp, 0x4C]
subs r4, 0x6
cmp r0, 0
ble _080C6E70
adds r5, r0, 0
_080C6E48:
adds r0, r6, 0
adds r1, r7, 0
movs r2, 0x40
bl CpuSet
adds r1, r7, 0
adds r1, 0x80
mov r0, r8
movs r2, 0x40
bl CpuSet
adds r6, 0x80
movs r2, 0x80
add r8, r2
movs r0, 0x80
lsls r0, 1
adds r7, r0
subs r5, 0x1
cmp r5, 0
bne _080C6E48
_080C6E70:
cmp r4, 0
ble _080C6E90
add r0, sp, 0x18
mov r2, r9
lsls r1, r2, 4
orrs r1, r2
strh r1, [r0]
lsls r2, r4, 7
ldr r1, =0x001fffff
ands r2, r1
movs r1, 0x80
lsls r1, 17
orrs r2, r1
adds r1, r7, 0
bl CpuSet
_080C6E90:
mov r1, r10
lsrs r0, r1, 24
bl RemoveWindow
add sp, 0x2C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_80C6D80
thumb_func_start sub_80C6EAC
sub_80C6EAC: @ 80C6EAC
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x2C
str r0, [sp, 0x20]
str r1, [sp, 0x24]
adds r6, r3, 0
ldr r0, [sp, 0x4C]
mov r9, r0
ldr r1, [sp, 0x50]
mov r10, r1
lsls r2, 16
lsrs r2, 16
str r2, [sp, 0x28]
lsls r6, 24
lsrs r6, 24
mov r2, r9
lsls r2, 24
lsrs r2, 24
mov r9, r2
mov r0, r10
lsls r0, 24
lsrs r0, 24
mov r10, r0
movs r0, 0
movs r1, 0
str r0, [sp, 0x18]
str r1, [sp, 0x1C]
ldr r0, [sp, 0x20]
bl StringLength_Multibyte
lsls r0, 24
ldr r2, =0x00ffffff
ldr r1, [sp, 0x18]
ands r1, r2
orrs r1, r0
str r1, [sp, 0x18]
ldr r1, =0xffffff00
add r2, sp, 0x18
mov r8, r2
ldr r0, [r2, 0x4]
ands r0, r1
movs r1, 0x2
orrs r0, r1
str r0, [r2, 0x4]
ldr r5, [sp, 0x18]
lsrs r5, 24
lsls r5, 5
mov r0, r8
bl AddWindow
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
lsls r1, r6, 4
orrs r1, r6
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl FillWindowPixelBuffer
adds r0, r4, 0
movs r1, 0x7
bl GetWindowAttribute
adds r7, r0, 0
mov r0, r8
ldrb r0, [r0, 0x3]
lsls r0, 5
mov r8, r0
add r8, r7
add r0, sp, 0x14
movs r1, 0
strb r6, [r0]
mov r2, r9
strb r2, [r0, 0x1]
mov r2, r10
strb r2, [r0, 0x2]
str r1, [sp]
str r1, [sp, 0x4]
str r0, [sp, 0x8]
movs r0, 0x1
negs r0, r0
str r0, [sp, 0xC]
ldr r0, [sp, 0x20]
str r0, [sp, 0x10]
adds r0, r4, 0
movs r1, 0x1
movs r2, 0
movs r3, 0x2
bl AddTextPrinterParameterized4
lsrs 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-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_80C6EAC
.align 2, 0 @ Don't pad with nop.