summaryrefslogtreecommitdiff
path: root/asm/title_screen.s
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-10-17 20:24:30 -0700
committerYamaArashi <shadow962@live.com>2016-10-17 20:24:30 -0700
commit9b7948055c486011217d68d55180f67cbd3166ff (patch)
tree0b68f37780d222f20ffd553cbe5583f96bb80e78 /asm/title_screen.s
parent1e09615b2b893c59a8896a7415fcdd5ce282b9bd (diff)
split out title_screen.s
Diffstat (limited to 'asm/title_screen.s')
-rw-r--r--asm/title_screen.s1270
1 files changed, 1270 insertions, 0 deletions
diff --git a/asm/title_screen.s b/asm/title_screen.s
new file mode 100644
index 000000000..726a446ee
--- /dev/null
+++ b/asm/title_screen.s
@@ -0,0 +1,1270 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .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
+ 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
+ ldr r2, _0807BE8C
+ 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
+ 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
+ adds r0, r2
+ lsrs r0, 16
+ movs r6, 0
+ lsls r7, r1, 16
+_0807BF36:
+ lsls r5, r0, 16
+ asrs r5, 16
+ ldr r0, _0807BF7C
+ 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
+ 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
+ adds r0, r2
+ lsrs r0, 16
+ movs r5, 0
+ lsls r6, r1, 16
+_0807BF92:
+ lsls r4, r0, 16
+ asrs r4, 16
+ ldr r0, _0807BFD8
+ 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
+ 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
+ ldr r0, _0807C030
+ 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
+ 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
+ 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
+ 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
+ movs r1, 0
+ movs r2, 0x44
+ movs r3, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _0807C0C4
+ 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
+ ldr r1, _0807C0EC
+ 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
+ ldr r1, _0807C110
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x5
+ bhi _0807C130
+ lsls r0, 2
+ ldr r1, _0807C114
+ 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
+ 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
+ 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
+ str r0, [r1]
+ movs r0, 0xC0
+ lsls r0, 19
+ str r0, [r1, 0x4]
+ ldr r0, _0807C1CC
+ 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
+ str r0, [r1, 0x8]
+ ldr r0, [r1, 0x8]
+ add r0, sp, 0xC
+ strh r2, [r0]
+ str r0, [r1]
+ ldr r0, _0807C1D4
+ str r0, [r1, 0x4]
+ ldr r0, _0807C1D8
+ str r0, [r1, 0x8]
+ ldr r0, [r1, 0x8]
+ bl ResetPaletteFade
+ ldr r0, _0807C1DC
+ ldr r1, _0807C1E0
+ 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
+ movs r1, 0xC0
+ lsls r1, 19
+ bl LZ77UnCompVram
+ ldr r0, _0807C274
+ ldr r1, _0807C278
+ bl LZ77UnCompVram
+ ldr r4, _0807C27C
+ movs r5, 0xE0
+ lsls r5, 1
+ adds r0, r4, 0
+ movs r1, 0
+ adds r2, r5, 0
+ bl LoadPalette
+ ldr r0, _0807C280
+ ldr r1, _0807C284
+ bl LZ77UnCompVram
+ ldr r0, _0807C288
+ ldr r1, _0807C28C
+ bl LZ77UnCompVram
+ ldr r0, _0807C290
+ ldr r1, _0807C294
+ bl LZ77UnCompVram
+ ldr r0, _0807C298
+ movs r1, 0xE0
+ movs r2, 0x40
+ bl LoadPalette
+ bl remove_some_task
+ bl ResetTasks
+ bl ResetSpriteData
+ bl FreeAllSpritePalettes
+ ldr r1, _0807C29C
+ movs r0, 0xE
+ strb r0, [r1]
+ ldr r0, _0807C2A0
+ bl LoadCompressedObjectPic
+ ldr r0, _0807C2A4
+ bl LoadCompressedObjectPic
+ ldr r0, _0807C2A8
+ bl LoadCompressedObjectPic
+ movs r1, 0x80
+ lsls r1, 1
+ adds r0, r4, 0
+ adds r2, r5, 0
+ bl LoadPalette
+ ldr r0, _0807C2AC
+ bl LoadSpritePalette
+ ldr r0, _0807C2B0
+ ldr r2, _0807C2B4
+ 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
+ movs r1, 0
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _0807C2F4
+ 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
+ strh r2, [r1, 0xC]
+ subs r2, 0x10
+ strh r2, [r1, 0xE]
+ ldr r1, _0807C2FC
+ strb r0, [r1]
+ ldr r0, _0807C300
+ ldr r3, _0807C304
+ 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
+ str r1, [sp]
+ movs r1, 0x1
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ ldr r0, _0807C330
+ bl SetVBlankCallback
+ ldr r0, _0807C334
+ ldr r1, _0807C338
+ 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
+ ldr r0, _0807C3D8
+ str r0, [r1]
+ adds r1, 0x4
+ ldr r0, _0807C3DC
+ str r0, [r1]
+ ldr r0, _0807C3E0
+ 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
+ adds r0, r2, 0
+ strh r0, [r1]
+ adds r1, 0x2
+ ldr r3, _0807C3E8
+ adds r0, r3, 0
+ strh r0, [r1]
+ adds r1, 0x6
+ movs r0, 0x84
+ strh r0, [r1]
+ ldr r0, _0807C3EC
+ strh r4, [r0]
+ adds r0, 0x2
+ movs r5, 0x8
+ strh r5, [r0]
+ subs r1, 0x48
+ ldr r2, _0807C3F0
+ adds r0, r2, 0
+ strh r0, [r1]
+ adds r1, 0x2
+ ldr r3, _0807C3F4
+ adds r0, r3, 0
+ strh r0, [r1]
+ adds r1, 0x2
+ ldr r2, _0807C3F8
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r3, _0807C3FC
+ ldrh r2, [r3]
+ strh r4, [r3]
+ ldr r4, _0807C400
+ ldrh r0, [r4]
+ movs r1, 0x1
+ orrs r0, r1
+ strh r0, [r4]
+ strh r2, [r3]
+ ldr r1, _0807C404
+ ldrh r0, [r1]
+ orrs r0, r5
+ strh r0, [r1]
+ subs r1, 0x4
+ ldr r3, _0807C408
+ adds r0, r3, 0
+ strh r0, [r1]
+ ldr r0, _0807C40C
+ bl m4aSongNumStart
+ ldr r0, _0807C410
+ ldr r1, _0807C414
+ 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
+ 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
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0xF
+ ands r0, r1
+ ldr r5, _0807C4D8
+ 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
+ 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
+ adds r0, r3, 0
+ strh r0, [r1]
+ ldr r0, _0807C564
+ strh r2, [r0]
+ adds r0, 0x2
+ strh r2, [r0]
+ adds r1, 0x50
+ ldr r3, _0807C568
+ adds r0, r3, 0
+ strh r0, [r1]
+ adds r1, 0x2
+ movs r0, 0x1F
+ strh r0, [r1]
+ ldr r0, _0807C56C
+ strh r2, [r0]
+ ldr r0, _0807C570
+ movs r1, 0x62
+ movs r2, 0x1A
+ movs r3, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r5, _0807C574
+ 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
+ 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
+ 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
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0xF
+ ands r0, r1
+ ldr r2, _0807C5D4
+ 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
+ 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
+ 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
+ str r0, [r4]
+_0807C5FC:
+ ldr r2, _0807C63C
+ 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
+ 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
+ ldr r2, _0807C6A0
+ adds r0, r2, 0
+ strh r0, [r1]
+ adds r1, 0x2
+ ldr r2, _0807C6A4
+ adds r0, r2, 0
+ strh r0, [r1]
+ adds r1, 0x2
+ movs r0, 0
+ strh r0, [r1]
+ ldr r4, _0807C6A8
+ 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
+ str r1, [sp]
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ ldr r0, _0807C6B0
+ 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 sub_807C774
+_0807C6B4:
+ ldrh r1, [r4, 0x2C]
+ movs r0, 0x46
+ ands r0, r1
+ cmp r0, 0x46
+ bne _0807C6C4
+ ldr r0, _0807C6F4
+ 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
+ bl SetMainCallback2
+ b _0807C74E
+ .align 2, 0
+_0807C6F4: .4byte sub_807C7AC
+_0807C6F8: .4byte sub_807C7C8
+_0807C6FC:
+ ldr r0, _0807C758
+ movs r3, 0
+ str r3, [r0]
+ ldr r1, _0807C75C
+ 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
+ strh r0, [r1]
+ ldr r0, _0807C764
+ strh r3, [r0]
+_0807C728:
+ ldrb r0, [r2, 0x8]
+ bl sub_807C7E4
+ ldr r0, _0807C768
+ ldr r1, _0807C76C
+ 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
+ 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 sub_807C774
+sub_807C774: @ 807C774
+ push {lr}
+ bl UpdatePaletteFade
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807C786
+ ldr r0, _0807C78C
+ bl SetMainCallback2
+_0807C786:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807C78C: .4byte CB2_InitMainMenu
+ thumb_func_end sub_807C774
+
+ thumb_func_start sub_807C790
+sub_807C790: @ 807C790
+ push {lr}
+ bl UpdatePaletteFade
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807C7A2
+ ldr r0, _0807C7A8
+ bl SetMainCallback2
+_0807C7A2:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807C7A8: .4byte sub_813BA88
+ thumb_func_end sub_807C790
+
+ thumb_func_start sub_807C7AC
+sub_807C7AC: @ 807C7AC
+ push {lr}
+ bl UpdatePaletteFade
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807C7BE
+ ldr r0, _0807C7C4
+ bl SetMainCallback2
+_0807C7BE:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807C7C4: .4byte c2_clear_save_data_screen_2
+ thumb_func_end sub_807C7AC
+
+ thumb_func_start sub_807C7C8
+sub_807C7C8: @ 807C7C8
+ push {lr}
+ bl UpdatePaletteFade
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807C7DA
+ ldr r0, _0807C7E0
+ bl SetMainCallback2
+_0807C7DA:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807C7E0: .4byte sub_806AAD8
+ thumb_func_end sub_807C7C8
+
+ 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.