pokeruby/asm/title_screen.s
2016-10-30 18:00:20 -07:00

1271 lines
23 KiB
ArmAsm

.include "constants/gba_constants.inc"
.include "constants/species_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start item_menu_type_2
item_menu_type_2: @ 807BE00
push {r4,lr}
adds r2, r0, 0
movs r0, 0x30
ldrsh r1, [r2, r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
ldr r1, _0807BE34 @ =gTasks
adds r4, r0, r1
movs r1, 0xA
ldrsh r0, [r4, r1]
cmp r0, 0
beq _0807BE38
ldrb r1, [r2, 0x1]
movs r0, 0xD
negs r0, r0
ands r0, r1
strb r0, [r2, 0x1]
movs r0, 0x42
strh r0, [r2, 0x22]
adds r2, 0x3E
ldrb r1, [r2]
subs r0, 0x47
ands r0, r1
strb r0, [r2]
b _0807BE80
.align 2, 0
_0807BE34: .4byte gTasks
_0807BE38:
ldrh r1, [r4, 0x12]
movs r3, 0x12
ldrsh r0, [r4, r3]
cmp r0, 0
beq _0807BE46
subs r0, r1, 0x1
strh r0, [r4, 0x12]
_0807BE46:
movs r1, 0x12
ldrsh r0, [r4, r1]
cmp r0, 0x3F
bgt _0807BE80
adds r3, r2, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r1, 0x5
negs r1, r1
ands r1, r0
strb r1, [r3]
ldrh r1, [r2, 0x22]
movs r3, 0x22
ldrsh r0, [r2, r3]
cmp r0, 0x42
beq _0807BE6A
adds r0, r1, 0x1
strh r0, [r2, 0x22]
_0807BE6A:
ldr r3, _0807BE88 @ =REG_BLDALPHA
ldr r2, _0807BE8C @ =gUnknown_08393E64
movs r1, 0x12
ldrsh r0, [r4, r1]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
strh r0, [r3]
_0807BE80:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0807BE88: .4byte REG_BLDALPHA
_0807BE8C: .4byte gUnknown_08393E64
thumb_func_end item_menu_type_2
thumb_func_start sub_807BE90
sub_807BE90: @ 807BE90
push {lr}
adds r2, r0, 0
movs r0, 0x30
ldrsh r1, [r2, r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
ldr r1, _0807BEC4 @ =gTasks
adds r1, r0, r1
movs r3, 0xA
ldrsh r0, [r1, r3]
cmp r0, 0
beq _0807BEC8
ldrb r1, [r2, 0x1]
movs r0, 0xD
negs r0, r0
ands r0, r1
strb r0, [r2, 0x1]
movs r0, 0x42
strh r0, [r2, 0x22]
adds r2, 0x3E
ldrb r1, [r2]
subs r0, 0x47
ands r0, r1
strb r0, [r2]
b _0807BEEC
.align 2, 0
_0807BEC4: .4byte gTasks
_0807BEC8:
movs r3, 0x12
ldrsh r0, [r1, r3]
cmp r0, 0x3F
bgt _0807BEEC
adds r3, r2, 0
adds r3, 0x3E
ldrb r0, [r3]
movs r1, 0x5
negs r1, r1
ands r1, r0
strb r1, [r3]
ldrh r1, [r2, 0x22]
movs r3, 0x22
ldrsh r0, [r2, r3]
cmp r0, 0x42
beq _0807BEEC
adds r0, r1, 0x1
strh r0, [r2, 0x22]
_0807BEEC:
pop {r0}
bx r0
thumb_func_end sub_807BE90
thumb_func_start sub_807BEF0
sub_807BEF0: @ 807BEF0
push {lr}
adds r2, r0, 0
movs r1, 0x2E
ldrsh r0, [r2, r1]
cmp r0, 0x1
bne _0807BF18
ldrh r0, [r2, 0x30]
adds r0, 0x1
strh r0, [r2, 0x30]
movs r1, 0x10
ands r0, r1
cmp r0, 0
bne _0807BF18
adds r0, r2, 0
adds r0, 0x3E
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
strb r1, [r0]
b _0807BF24
_0807BF18:
adds r2, 0x3E
ldrb r1, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r1
strb r0, [r2]
_0807BF24:
pop {r0}
bx r0
thumb_func_end sub_807BEF0
thumb_func_start sub_807BF28
sub_807BF28: @ 807BF28
push {r4-r7,lr}
lsls r0, 16
ldr r2, _0807BF78 @ =0xffe00000
adds r0, r2
lsrs r0, 16
movs r6, 0
lsls r7, r1, 16
_0807BF36:
lsls r5, r0, 16
asrs r5, 16
ldr r0, _0807BF7C @ =gSpriteTemplate_8393F74
adds r1, r5, 0
asrs r2, r7, 16
movs r3, 0
bl CreateSprite
lsls r0, 24
lsrs r0, 24
lsls r4, r0, 4
adds r4, r0
lsls r4, 2
ldr r0, _0807BF80 @ =gSprites
adds r4, r0
adds r0, r4, 0
adds r1, r6, 0
bl StartSpriteAnim
movs r0, 0x1
strh r0, [r4, 0x2E]
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
adds r5, 0x20
lsls r5, 16
lsrs r0, r5, 16
cmp r6, 0x2
bls _0807BF36
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0807BF78: .4byte 0xffe00000
_0807BF7C: .4byte gSpriteTemplate_8393F74
_0807BF80: .4byte gSprites
thumb_func_end sub_807BF28
thumb_func_start sub_807BF84
sub_807BF84: @ 807BF84
push {r4-r6,lr}
lsls r0, 16
ldr r2, _0807BFD4 @ =0xffc00000
adds r0, r2
lsrs r0, 16
movs r5, 0
lsls r6, r1, 16
_0807BF92:
lsls r4, r0, 16
asrs r4, 16
ldr r0, _0807BFD8 @ =gSpriteTemplate_8393F74
adds r1, r4, 0
asrs r2, r6, 16
movs r3, 0
bl CreateSprite
lsls r0, 24
lsrs r0, 24
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _0807BFDC @ =gSprites
adds r2, r0
adds r1, r5, 0x3
lsls r1, 24
lsrs r1, 24
adds r0, r2, 0
bl StartSpriteAnim
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
adds r4, 0x20
lsls r4, 16
lsrs r0, r4, 16
cmp r5, 0x4
bls _0807BF92
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0807BFD4: .4byte 0xffc00000
_0807BFD8: .4byte gSpriteTemplate_8393F74
_0807BFDC: .4byte gSprites
thumb_func_end sub_807BF84
thumb_func_start sub_807BFE0
sub_807BFE0: @ 807BFE0
push {r4,lr}
adds r3, r0, 0
ldr r2, _0807C02C @ =gTasks
ldr r0, _0807C030 @ =gUnknown_0202F7E4
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
movs r1, 0xA
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0807C070
movs r2, 0x20
ldrsh r1, [r3, r2]
ldr r0, _0807C034 @ =0x0000010f
ldrh r4, [r3, 0x20]
cmp r1, r0
bgt _0807C070
movs r2, 0x2E
ldrsh r0, [r3, r2]
cmp r0, 0
beq _0807C064
cmp r1, 0x77
bgt _0807C038
ldrh r1, [r3, 0x30]
movs r2, 0x30
ldrsh r0, [r3, r2]
cmp r0, 0x1E
bgt _0807C050
adds r1, 0x1
strh r1, [r3, 0x30]
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0x1E
bgt _0807C050
adds r0, r1, 0x1
b _0807C04E
.align 2, 0
_0807C02C: .4byte gTasks
_0807C030: .4byte gUnknown_0202F7E4
_0807C034: .4byte 0x0000010f
_0807C038:
ldrh r1, [r3, 0x30]
movs r2, 0x30
ldrsh r0, [r3, r2]
cmp r0, 0
beq _0807C050
subs r0, r1, 0x1
strh r0, [r3, 0x30]
lsls r0, 16
cmp r0, 0
beq _0807C050
subs r0, r1, 0x2
_0807C04E:
strh r0, [r3, 0x30]
_0807C050:
ldrh r1, [r3, 0x30]
movs r0, 0x1F
ands r0, r1
lsls r1, r0, 10
lsls r2, r0, 5
adds r1, r2
orrs r1, r0
ldr r0, _0807C06C @ =gPlttBufferFaded
strh r1, [r0]
.ifdef SAPPHIRE
strh r1, [r0, 0x34]
.else
strh r1, [r0, 0x2A]
.endif
_0807C064:
adds r0, r4, 0x4
strh r0, [r3, 0x20]
b _0807C07E
.align 2, 0
_0807C06C: .4byte gPlttBufferFaded
_0807C070:
ldr r1, _0807C084 @ =gPlttBufferFaded
movs r0, 0
strh r0, [r1]
.ifdef SAPPHIRE
strh r0, [r1, 0x34]
.else
strh r0, [r1, 0x2A]
.endif
adds r0, r3, 0
bl DestroySprite
_0807C07E:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0807C084: .4byte gPlttBufferFaded
thumb_func_end sub_807BFE0
thumb_func_start sub_807C088
sub_807C088: @ 807C088
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r0, _0807C0C0 @ =gSpriteTemplate_8393FC0
movs r1, 0
movs r2, 0x44
movs r3, 0
bl CreateSprite
lsls r0, 24
lsrs r0, 24
ldr r2, _0807C0C4 @ =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
ldrb r2, [r1, 0x1]
movs r0, 0xD
negs r0, r0
ands r0, r2
movs r2, 0x8
orrs r0, r2
strb r0, [r1, 0x1]
strh r4, [r1, 0x2E]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0807C0C0: .4byte gSpriteTemplate_8393FC0
_0807C0C4: .4byte gSprites
thumb_func_end sub_807C088
thumb_func_start sub_807C0C8
sub_807C0C8: @ 807C0C8
push {lr}
bl sub_8089668
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
ldr r0, _0807C0E8 @ =REG_BG1VOFS
ldr r1, _0807C0EC @ =gUnknown_030041B4
ldrh r1, [r1]
strh r1, [r0]
pop {r0}
bx r0
.align 2, 0
_0807C0E8: .4byte REG_BG1VOFS
_0807C0EC: .4byte gUnknown_030041B4
thumb_func_end sub_807C0C8
thumb_func_start CB2_InitTitleScreen
CB2_InitTitleScreen: @ 807C0F0
push {r4,r5,lr}
sub sp, 0x14
ldr r0, _0807C10C @ =gMain
ldr r1, _0807C110 @ =0x0000043c
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x5
bhi _0807C130
lsls r0, 2
ldr r1, _0807C114 @ =_0807C118
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0807C10C: .4byte gMain
_0807C110: .4byte 0x0000043c
_0807C114: .4byte _0807C118
.align 2, 0
_0807C118:
.4byte _0807C130
.4byte _0807C1E4
.4byte _0807C2B8
.4byte _0807C308
.4byte _0807C33C
.4byte _0807C418
_0807C130:
movs r0, 0
bl SetVBlankCallback
ldr r0, _0807C1C0 @ =REG_BLDCNT
movs r1, 0
strh r1, [r0]
adds r0, 0x2
strh r1, [r0]
adds r0, 0x2
strh r1, [r0]
movs r2, 0xA0
lsls r2, 19
ldr r3, _0807C1C4 @ =0x00007fff
adds r0, r3, 0
strh r0, [r2]
movs r0, 0x80
lsls r0, 19
strh r1, [r0]
adds r0, 0xC
strh r1, [r0]
subs r0, 0x2
strh r1, [r0]
subs r0, 0x2
strh r1, [r0]
adds r0, 0x10
strh r1, [r0]
adds r0, 0x2
strh r1, [r0]
subs r0, 0x6
strh r1, [r0]
adds r0, 0x2
strh r1, [r0]
subs r0, 0x6
strh r1, [r0]
adds r0, 0x2
strh r1, [r0]
add r0, sp, 0xC
strh r1, [r0]
ldr r1, _0807C1C8 @ =0x040000d4
str r0, [r1]
movs r0, 0xC0
lsls r0, 19
str r0, [r1, 0x4]
ldr r0, _0807C1CC @ =0x8100c000
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
movs r2, 0
str r2, [sp, 0x10]
add r0, sp, 0x10
str r0, [r1]
movs r0, 0xE0
lsls r0, 19
str r0, [r1, 0x4]
ldr r0, _0807C1D0 @ =0x85000100
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
add r0, sp, 0xC
strh r2, [r0]
str r0, [r1]
ldr r0, _0807C1D4 @ =0x05000002
str r0, [r1, 0x4]
ldr r0, _0807C1D8 @ =0x810001ff
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
bl ResetPaletteFade
ldr r0, _0807C1DC @ =gMain
ldr r1, _0807C1E0 @ =0x0000043c
adds r0, r1
movs r1, 0x1
strb r1, [r0]
b _0807C446
.align 2, 0
_0807C1C0: .4byte REG_BLDCNT
_0807C1C4: .4byte 0x00007fff
_0807C1C8: .4byte 0x040000d4
_0807C1CC: .4byte 0x8100c000
_0807C1D0: .4byte 0x85000100
_0807C1D4: .4byte 0x05000002
_0807C1D8: .4byte 0x810001ff
_0807C1DC: .4byte gMain
_0807C1E0: .4byte 0x0000043c
_0807C1E4:
ldr r0, _0807C270 @ =gUnknown_08E9D8CC
movs r1, 0xC0
lsls r1, 19
bl LZ77UnCompVram
ldr r0, _0807C274 @ =gUnknown_08E9F7E4
ldr r1, _0807C278 @ =0x06004800
bl LZ77UnCompVram
ldr r4, _0807C27C @ =gUnknown_08E9F624
movs r5, 0xE0
lsls r5, 1
adds r0, r4, 0
movs r1, 0
adds r2, r5, 0
bl LoadPalette
ldr r0, _0807C280 @ =gUnknown_08393250
ldr r1, _0807C284 @ =0x06008000
bl LZ77UnCompVram
ldr r0, _0807C288 @ =gUnknown_083939EC
ldr r1, _0807C28C @ =0x0600c000
bl LZ77UnCompVram
ldr r0, _0807C290 @ =gUnknown_08393BF8
ldr r1, _0807C294 @ =0x0600c800
bl LZ77UnCompVram
ldr r0, _0807C298 @ =gUnknown_08393210
movs r1, 0xE0
movs r2, 0x40
bl LoadPalette
bl remove_some_task
bl ResetTasks
bl ResetSpriteData
bl FreeAllSpritePalettes
ldr r1, _0807C29C @ =gReservedSpritePaletteCount
movs r0, 0xE
strb r0, [r1]
ldr r0, _0807C2A0 @ =gUnknown_08393EFC
bl LoadCompressedObjectPic
ldr r0, _0807C2A4 @ =gUnknown_08393F8C
bl LoadCompressedObjectPic
ldr r0, _0807C2A8 @ =gUnknown_08393FD8
bl LoadCompressedObjectPic
movs r1, 0x80
lsls r1, 1
adds r0, r4, 0
adds r2, r5, 0
bl LoadPalette
ldr r0, _0807C2AC @ =gUnknown_08393F9C
bl LoadSpritePalette
ldr r0, _0807C2B0 @ =gMain
ldr r2, _0807C2B4 @ =0x0000043c
adds r0, r2
movs r1, 0x2
strb r1, [r0]
b _0807C446
.align 2, 0
_0807C270: .4byte gUnknown_08E9D8CC
_0807C274: .4byte gUnknown_08E9F7E4
_0807C278: .4byte 0x06004800
_0807C27C: .4byte gUnknown_08E9F624
_0807C280: .4byte gUnknown_08393250
_0807C284: .4byte 0x06008000
_0807C288: .4byte gUnknown_083939EC
_0807C28C: .4byte 0x0600c000
_0807C290: .4byte gUnknown_08393BF8
_0807C294: .4byte 0x0600c800
_0807C298: .4byte gUnknown_08393210
_0807C29C: .4byte gReservedSpritePaletteCount
_0807C2A0: .4byte gUnknown_08393EFC
_0807C2A4: .4byte gUnknown_08393F8C
_0807C2A8: .4byte gUnknown_08393FD8
_0807C2AC: .4byte gUnknown_08393F9C
_0807C2B0: .4byte gMain
_0807C2B4: .4byte 0x0000043c
_0807C2B8:
ldr r0, _0807C2F0 @ =sub_807C46C
movs r1, 0
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r2, _0807C2F4 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
movs r3, 0
movs r2, 0x80
lsls r2, 1
strh r2, [r1, 0x8]
strh r3, [r1, 0xA]
ldr r2, _0807C2F8 @ =0x0000fff0
strh r2, [r1, 0xC]
subs r2, 0x10
strh r2, [r1, 0xE]
ldr r1, _0807C2FC @ =gUnknown_0202F7E4
strb r0, [r1]
ldr r0, _0807C300 @ =gMain
ldr r3, _0807C304 @ =0x0000043c
adds r0, r3
movs r1, 0x3
strb r1, [r0]
b _0807C446
.align 2, 0
_0807C2F0: .4byte sub_807C46C
_0807C2F4: .4byte gTasks
_0807C2F8: .4byte 0x0000fff0
_0807C2FC: .4byte gUnknown_0202F7E4
_0807C300: .4byte gMain
_0807C304: .4byte 0x0000043c
_0807C308:
movs r0, 0x1
negs r0, r0
ldr r1, _0807C32C @ =0x0000ffff
str r1, [sp]
movs r1, 0x1
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
ldr r0, _0807C330 @ =sub_807C0C8
bl SetVBlankCallback
ldr r0, _0807C334 @ =gMain
ldr r1, _0807C338 @ =0x0000043c
adds r0, r1
movs r1, 0x4
strb r1, [r0]
b _0807C446
.align 2, 0
_0807C32C: .4byte 0x0000ffff
_0807C330: .4byte sub_807C0C8
_0807C334: .4byte gMain
_0807C338: .4byte 0x0000043c
_0807C33C:
movs r2, 0x80
lsls r2, 1
movs r0, 0x78
movs r1, 0x50
movs r3, 0
bl sub_813CE30
ldr r1, _0807C3D4 @ =REG_BG2X_L
ldr r0, _0807C3D8 @ =0xffffe300
str r0, [r1]
adds r1, 0x4
ldr r0, _0807C3DC @ =0xffffdf00
str r0, [r1]
ldr r0, _0807C3E0 @ =REG_WIN0H
movs r4, 0
strh r4, [r0]
adds r0, 0x4
strh r4, [r0]
subs r0, 0x2
strh r4, [r0]
adds r0, 0x4
strh r4, [r0]
adds r1, 0x1C
ldr r2, _0807C3E4 @ =0x00001f1f
adds r0, r2, 0
strh r0, [r1]
adds r1, 0x2
ldr r3, _0807C3E8 @ =0x00003f1f
adds r0, r3, 0
strh r0, [r1]
adds r1, 0x6
movs r0, 0x84
strh r0, [r1]
ldr r0, _0807C3EC @ =REG_BLDALPHA
strh r4, [r0]
adds r0, 0x2
movs r5, 0x8
strh r5, [r0]
subs r1, 0x48
ldr r2, _0807C3F0 @ =0x0000180b
adds r0, r2, 0
strh r0, [r1]
adds r1, 0x2
ldr r3, _0807C3F4 @ =0x0000190a
adds r0, r3, 0
strh r0, [r1]
adds r1, 0x2
ldr r2, _0807C3F8 @ =0x00004981
adds r0, r2, 0
strh r0, [r1]
ldr r3, _0807C3FC @ =0x04000208
ldrh r2, [r3]
strh r4, [r3]
ldr r4, _0807C400 @ =0x04000200
ldrh r0, [r4]
movs r1, 0x1
orrs r0, r1
strh r0, [r4]
strh r2, [r3]
ldr r1, _0807C404 @ =REG_DISPSTAT
ldrh r0, [r1]
orrs r0, r5
strh r0, [r1]
subs r1, 0x4
ldr r3, _0807C408 @ =0x0000b441
adds r0, r3, 0
strh r0, [r1]
ldr r0, _0807C40C @ =0x0000019d
bl m4aSongNumStart
ldr r0, _0807C410 @ =gMain
ldr r1, _0807C414 @ =0x0000043c
adds r0, r1
movs r1, 0x5
strb r1, [r0]
b _0807C446
.align 2, 0
_0807C3D4: .4byte REG_BG2X_L
_0807C3D8: .4byte 0xffffe300
_0807C3DC: .4byte 0xffffdf00
_0807C3E0: .4byte REG_WIN0H
_0807C3E4: .4byte 0x00001f1f
_0807C3E8: .4byte 0x00003f1f
_0807C3EC: .4byte REG_BLDALPHA
_0807C3F0: .4byte 0x0000180b
_0807C3F4: .4byte 0x0000190a
_0807C3F8: .4byte 0x00004981
_0807C3FC: .4byte 0x04000208
_0807C400: .4byte 0x04000200
_0807C404: .4byte REG_DISPSTAT
_0807C408: .4byte 0x0000b441
_0807C40C: .4byte 0x0000019d
_0807C410: .4byte gMain
_0807C414: .4byte 0x0000043c
_0807C418:
bl UpdatePaletteFade
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
bne _0807C446
movs r0, 0
bl sub_807C088
str r4, [sp]
movs r0, 0x4
str r0, [sp, 0x4]
movs r0, 0x1
str r0, [sp, 0x8]
movs r0, 0
movs r1, 0xA0
movs r2, 0x4
movs r3, 0x4
bl sub_8089944
ldr r0, _0807C450 @ =sub_807C454
bl SetMainCallback2
_0807C446:
add sp, 0x14
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0807C450: .4byte sub_807C454
thumb_func_end CB2_InitTitleScreen
thumb_func_start sub_807C454
sub_807C454: @ 807C454
push {lr}
bl RunTasks
bl AnimateSprites
bl BuildOamBuffer
bl UpdatePaletteFade
pop {r0}
bx r0
thumb_func_end sub_807C454
thumb_func_start sub_807C46C
sub_807C46C: @ 807C46C
push {r4-r7,lr}
lsls r0, 24
lsrs r6, r0, 24
ldr r0, _0807C4D4 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0xF
ands r0, r1
ldr r5, _0807C4D8 @ =gTasks
cmp r0, 0
bne _0807C492
lsls r0, r6, 2
adds r1, r0, r6
lsls r1, 3
adds r1, r5
movs r2, 0xA
ldrsh r1, [r1, r2]
adds r4, r0, 0
cmp r1, 0
beq _0807C4A4
_0807C492:
lsls r3, r6, 2
adds r0, r3, r6
lsls r0, 3
adds r0, r5
movs r2, 0
movs r1, 0x1
strh r1, [r0, 0xA]
strh r2, [r0, 0x8]
adds r4, r3, 0
_0807C4A4:
adds r0, r4, r6
lsls r0, 3
adds r7, r0, r5
movs r3, 0x8
ldrsh r2, [r7, r3]
cmp r2, 0
beq _0807C4DC
ldrh r0, [r7, 0x8]
cmp r0, 0xA0
beq _0807C4BC
cmp r0, 0x40
bne _0807C4C2
_0807C4BC:
movs r0, 0x1
bl sub_807C088
_0807C4C2:
ldr r0, _0807C4D8 @ =gTasks
adds r1, r4, r6
lsls r1, 3
adds r1, r0
ldrh r0, [r1, 0x8]
subs r0, 0x1
strh r0, [r1, 0x8]
b _0807C558
.align 2, 0
_0807C4D4: .4byte gMain
_0807C4D8: .4byte gTasks
_0807C4DC:
movs r1, 0x80
lsls r1, 19
ldr r3, _0807C560 @ =0x00001441
adds r0, r3, 0
strh r0, [r1]
ldr r0, _0807C564 @ =REG_WININ
strh r2, [r0]
adds r0, 0x2
strh r2, [r0]
adds r1, 0x50
ldr r3, _0807C568 @ =0x00003f50
adds r0, r3, 0
strh r0, [r1]
adds r1, 0x2
movs r0, 0x1F
strh r0, [r1]
ldr r0, _0807C56C @ =REG_BLDY
strh r2, [r0]
ldr r0, _0807C570 @ =gSpriteTemplate_8393ECC
movs r1, 0x62
movs r2, 0x1A
movs r3, 0
bl CreateSprite
lsls r0, 24
lsrs r0, 24
ldr r5, _0807C574 @ =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r5
adds r2, r1, 0
adds r2, 0x3E
ldrb r0, [r2]
movs r4, 0x4
orrs r0, r4
strb r0, [r2]
strh r6, [r1, 0x30]
ldr r0, _0807C578 @ =gSpriteTemplate_8393EE4
movs r1, 0xA2
movs r2, 0x1A
movs r3, 0
bl CreateSprite
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r5
adds r2, r1, 0
adds r2, 0x3E
ldrb r0, [r2]
orrs r0, r4
strb r0, [r2]
strh r6, [r1, 0x30]
movs r0, 0x58
strh r0, [r7, 0x12]
movs r0, 0x90
strh r0, [r7, 0x8]
ldr r0, _0807C57C @ =sub_807C580
str r0, [r7]
_0807C558:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0807C560: .4byte 0x00001441
_0807C564: .4byte REG_WININ
_0807C568: .4byte 0x00003f50
_0807C56C: .4byte REG_BLDY
_0807C570: .4byte gSpriteTemplate_8393ECC
_0807C574: .4byte gSprites
_0807C578: .4byte gSpriteTemplate_8393EE4
_0807C57C: .4byte sub_807C580
thumb_func_end sub_807C46C
thumb_func_start sub_807C580
sub_807C580: @ 807C580
push {r4-r7,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r0, _0807C5D0 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0xF
ands r0, r1
ldr r2, _0807C5D4 @ =gTasks
cmp r0, 0
bne _0807C5A6
lsls r0, r5, 2
adds r1, r0, r5
lsls r1, 3
adds r1, r2
movs r3, 0xA
ldrsh r1, [r1, r3]
adds r7, r0, 0
cmp r1, 0
beq _0807C5B8
_0807C5A6:
lsls r3, r5, 2
adds r0, r3, r5
lsls r0, 3
adds r0, r2
movs r2, 0
movs r1, 0x1
strh r1, [r0, 0xA]
strh r2, [r0, 0x8]
adds r7, r3, 0
_0807C5B8:
ldr r1, _0807C5D4 @ =gTasks
adds r0, r7, r5
lsls r0, 3
adds r4, r0, r1
ldrh r0, [r4, 0x8]
movs r1, 0x8
ldrsh r6, [r4, r1]
cmp r6, 0
beq _0807C5D8
subs r0, 0x1
strh r0, [r4, 0x8]
b _0807C5FC
.align 2, 0
_0807C5D0: .4byte gMain
_0807C5D4: .4byte gTasks
_0807C5D8:
movs r0, 0x1
strh r0, [r4, 0xA]
movs r1, 0x80
lsls r1, 19
ldr r2, _0807C634 @ =0x00001741
adds r0, r2, 0
strh r0, [r1]
movs r0, 0x78
movs r1, 0x6C
bl sub_807BF28
movs r0, 0x78
movs r1, 0x94
bl sub_807BF84
strh r6, [r4, 0x10]
ldr r0, _0807C638 @ =sub_807C644
str r0, [r4]
_0807C5FC:
ldr r2, _0807C63C @ =gTasks
adds r0, r7, r5
lsls r0, 3
adds r3, r0, r2
ldrh r1, [r3, 0x8]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _0807C61C
ldrh r1, [r3, 0xE]
movs r4, 0xE
ldrsh r0, [r3, r4]
cmp r0, 0
beq _0807C61C
adds r0, r1, 0x1
strh r0, [r3, 0xE]
_0807C61C:
ldr r0, _0807C640 @ =REG_BG2Y_L
adds r1, r7, r5
lsls r1, 3
adds r1, r2
movs r2, 0xE
ldrsh r1, [r1, r2]
lsls r1, 8
str r1, [r0]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0807C634: .4byte 0x00001741
_0807C638: .4byte sub_807C644
_0807C63C: .4byte gTasks
_0807C640: .4byte REG_BG2Y_L
thumb_func_end sub_807C580
thumb_func_start sub_807C644
sub_807C644: @ 807C644
push {r4-r6,lr}
sub sp, 0x4
lsls r0, 24
lsrs r6, r0, 24
ldr r1, _0807C69C @ =REG_BLDCNT
ldr r2, _0807C6A0 @ =0x00002142
adds r0, r2, 0
strh r0, [r1]
adds r1, 0x2
ldr r2, _0807C6A4 @ =0x00001f0f
adds r0, r2, 0
strh r0, [r1]
adds r1, 0x2
movs r0, 0
strh r0, [r1]
ldr r4, _0807C6A8 @ =gMain
ldrh r1, [r4, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _0807C67A
movs r0, 0x8
ands r0, r1
lsls r0, 16
lsrs r5, r0, 16
cmp r5, 0
beq _0807C6B4
_0807C67A:
movs r0, 0x4
bl FadeOutBGM
movs r0, 0x1
negs r0, r0
ldr r1, _0807C6AC @ =0x0000ffff
str r1, [sp]
movs r1, 0
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
ldr r0, _0807C6B0 @ =CB2_GoToMainMenu
bl SetMainCallback2
b _0807C74E
.align 2, 0
_0807C69C: .4byte REG_BLDCNT
_0807C6A0: .4byte 0x00002142
_0807C6A4: .4byte 0x00001f0f
_0807C6A8: .4byte gMain
_0807C6AC: .4byte 0x0000ffff
_0807C6B0: .4byte CB2_GoToMainMenu
_0807C6B4:
ldrh r1, [r4, 0x2C]
movs r0, 0x46
ands r0, r1
cmp r0, 0x46
bne _0807C6C4
ldr r0, _0807C6F4 @ =CB2_GoToClearSaveDataScreen
bl SetMainCallback2
_0807C6C4:
ldrh r1, [r4, 0x2C]
movs r0, 0x26
ands r0, r1
cmp r0, 0x26
bne _0807C6FC
bl sub_80691DC
cmp r0, 0x1
bne _0807C6FC
movs r0, 0x4
bl FadeOutBGM
movs r0, 0x1
negs r0, r0
str r5, [sp]
movs r1, 0
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
ldr r0, _0807C6F8 @ =CB2_GoToResetRtcScreen
bl SetMainCallback2
b _0807C74E
.align 2, 0
_0807C6F4: .4byte CB2_GoToClearSaveDataScreen
_0807C6F8: .4byte CB2_GoToResetRtcScreen
_0807C6FC:
ldr r0, _0807C758 @ =REG_BG2Y_L
movs r3, 0
str r3, [r0]
ldr r1, _0807C75C @ =gTasks
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
adds r2, r0, r1
ldrh r0, [r2, 0x8]
adds r0, 0x1
strh r0, [r2, 0x8]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _0807C728
ldrh r0, [r2, 0x10]
adds r0, 0x1
strh r0, [r2, 0x10]
ldr r1, _0807C760 @ =gUnknown_030041B4
strh r0, [r1]
ldr r0, _0807C764 @ =gUnknown_030042C0
strh r3, [r0]
_0807C728:
ldrb r0, [r2, 0x8]
bl sub_807C7E4
ldr r0, _0807C768 @ =gMPlay_BGM
ldr r1, _0807C76C @ =0x0000ffff
ldrh r0, [r0, 0x4]
cmp r0, 0
bne _0807C74E
movs r0, 0x1
negs r0, r0
str r1, [sp]
movs r1, 0
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
ldr r0, _0807C770 @ =sub_807C790
bl SetMainCallback2
_0807C74E:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0807C758: .4byte REG_BG2Y_L
_0807C75C: .4byte gTasks
_0807C760: .4byte gUnknown_030041B4
_0807C764: .4byte gUnknown_030042C0
_0807C768: .4byte gMPlay_BGM
_0807C76C: .4byte 0x0000ffff
_0807C770: .4byte sub_807C790
thumb_func_end sub_807C644
thumb_func_start CB2_GoToMainMenu
CB2_GoToMainMenu: @ 807C774
push {lr}
bl UpdatePaletteFade
lsls r0, 24
cmp r0, 0
bne _0807C786
ldr r0, _0807C78C @ =CB2_InitMainMenu
bl SetMainCallback2
_0807C786:
pop {r0}
bx r0
.align 2, 0
_0807C78C: .4byte CB2_InitMainMenu
thumb_func_end CB2_GoToMainMenu
thumb_func_start sub_807C790
sub_807C790: @ 807C790
push {lr}
bl UpdatePaletteFade
lsls r0, 24
cmp r0, 0
bne _0807C7A2
ldr r0, _0807C7A8 @ =sub_813BA88
bl SetMainCallback2
_0807C7A2:
pop {r0}
bx r0
.align 2, 0
_0807C7A8: .4byte sub_813BA88
thumb_func_end sub_807C790
thumb_func_start CB2_GoToClearSaveDataScreen
CB2_GoToClearSaveDataScreen: @ 807C7AC
push {lr}
bl UpdatePaletteFade
lsls r0, 24
cmp r0, 0
bne _0807C7BE
ldr r0, _0807C7C4 @ =CB2_InitClearSaveDataScreen
bl SetMainCallback2
_0807C7BE:
pop {r0}
bx r0
.align 2, 0
_0807C7C4: .4byte CB2_InitClearSaveDataScreen
thumb_func_end CB2_GoToClearSaveDataScreen
thumb_func_start CB2_GoToResetRtcScreen
CB2_GoToResetRtcScreen: @ 807C7C8
push {lr}
bl UpdatePaletteFade
lsls r0, 24
cmp r0, 0
bne _0807C7DA
ldr r0, _0807C7E0 @ =CB2_InitResetRtcScreen
bl SetMainCallback2
_0807C7DA:
pop {r0}
bx r0
.align 2, 0
_0807C7E0: .4byte CB2_InitResetRtcScreen
thumb_func_end CB2_GoToResetRtcScreen
thumb_func_start sub_807C7E4
sub_807C7E4: @ 807C7E4
push {lr}
sub sp, 0x4
lsls r1, r0, 24
movs r0, 0xC0
lsls r0, 18
ands r0, r1
cmp r0, 0
bne _0807C820
lsrs r0, r1, 26
movs r1, 0x1F
adds r2, r0, 0
ands r2, r1
movs r1, 0x20
ands r0, r1
cmp r0, 0
bne _0807C80C
.ifdef SAPPHIRE
mov r0, sp
strh r2, [r0]
.else
lsls r1, r2, 10
mov r0, sp
strh r1, [r0]
.endif
b _0807C816
_0807C80C:
movs r0, 0x1F
subs r0, r2
.ifndef SAPPHIRE
lsls r0, 10
.endif
mov r1, sp
strh r0, [r1]
_0807C816:
mov r0, sp
movs r1, 0xEF
movs r2, 0x2
bl LoadPalette
_0807C820:
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_807C7E4
.align 2, 0 @ Don't pad with nop.