summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYamaArashi <YamaArashi@users.noreply.github.com>2017-01-06 16:03:44 -0800
committerGitHub <noreply@github.com>2017-01-06 16:03:44 -0800
commitb9ac748a2c16f72be84d0f0501a9cae61b599f79 (patch)
tree46e5a2785599d30c5758574d98b7de2d6ee66b41
parent350bd3b11afd30069020c3b8baf9577edbd3bea1 (diff)
parentf1a304b7e48e38ec7c5859d92dd9626e55324539 (diff)
Merge pull request #167 from marijnvdwerf/decompile/credits
Start decompiling credits
-rw-r--r--asm/credits.s783
-rw-r--r--data/credits.s10
-rw-r--r--graphics/credits/ampersand.pngbin0 -> 111 bytes
-rw-r--r--graphics/credits/palette_1.pal35
-rw-r--r--ld_script.txt1
-rw-r--r--shared_syms.txt1
-rw-r--r--src/credits.c544
7 files changed, 587 insertions, 787 deletions
diff --git a/asm/credits.s b/asm/credits.s
index de59cb943..1b16eb16a 100644
--- a/asm/credits.s
+++ b/asm/credits.s
@@ -6,789 +6,6 @@
.text
- thumb_func_start sub_8143948
-sub_8143948: @ 8143948
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_8143948
-
- thumb_func_start sub_814395C
-sub_814395C: @ 814395C
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- ldr r0, _081439B8 @ =gMain
- ldrh r1, [r0, 0x2C]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081439B2
- ldr r0, _081439BC @ =gUnknown_02039324
- ldrb r0, [r0]
- cmp r0, 0
- beq _081439B2
- ldr r2, _081439C0 @ =gTasks
- ldr r0, _081439C4 @ =gUnknown_02039322
- ldrh r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _081439C8 @ =sub_8143B68
- cmp r1, r0
- bne _081439B2
- bl sub_8143948
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- ldr r1, _081439CC @ =gUnknown_02039325
- movs r0, 0x1
- strb r0, [r1]
-_081439B2:
- pop {r0}
- bx r0
- .align 2, 0
-_081439B8: .4byte gMain
-_081439BC: .4byte gUnknown_02039324
-_081439C0: .4byte gTasks
-_081439C4: .4byte gUnknown_02039322
-_081439C8: .4byte sub_8143B68
-_081439CC: .4byte gUnknown_02039325
- thumb_func_end sub_814395C
-
- thumb_func_start sub_81439D0
-sub_81439D0: @ 81439D0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- bl sub_8144130
- movs r0, 0
- bl SetVBlankCallback
- bl ResetPaletteFade
- bl ResetTasks
- ldr r0, _08143AF0 @ =sub_8143B38
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _08143AF4 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x10]
- strh r1, [r0, 0x16]
- strh r1, [r0, 0x1E]
- movs r1, 0x1
- strh r1, [r0, 0x22]
-_08143A0E:
- movs r0, 0
- adds r1, r7, 0
- bl sub_8144ECC
- lsls r0, 24
- cmp r0, 0
- beq _08143A0E
- ldr r6, _08143AF4 @ =gTasks
- lsls r5, r7, 2
- adds r5, r7
- lsls r5, 3
- adds r5, r6
- movs r0, 0xA
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- movs r1, 0
- mov r9, r1
- movs r2, 0
- mov r8, r2
- movs r1, 0x28
- strh r1, [r0, 0x8]
- ldr r4, _08143AF8 @ =gWindowConfig_81E7208
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r0, _08143AFC @ =gUnknown_0840B7BC
- movs r1, 0x80
- movs r2, 0x40
- bl LoadPalette
- ldr r0, _08143B00 @ =gUnknown_0840B7FC
- ldr r1, _08143B04 @ =0x0600bee0
- movs r2, 0x20
- bl CpuSet
- ldr r1, _08143B08 @ =REG_BG0VOFS
- ldr r2, _08143B0C @ =0x0000fffc
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08143B10 @ =sub_81441B8
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r6
- strh r7, [r1, 0xA]
- strh r0, [r5, 0x26]
- movs r0, 0x1
- negs r0, r0
- mov r1, r8
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r3, _08143B14 @ =0x04000208
- ldrh r2, [r3]
- mov r0, r8
- strh r0, [r3]
- ldr r4, _08143B18 @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r2, _08143B1C @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strh r0, [r2]
- ldr r0, _08143B20 @ =sub_8143948
- bl SetVBlankCallback
- ldr r0, _08143B24 @ =0x000001c7
- bl m4aSongNumStart
- ldr r0, _08143B28 @ =sub_814395C
- bl SetMainCallback2
- ldr r0, _08143B2C @ =gUnknown_02039325
- mov r1, r9
- strb r1, [r0]
- ldr r4, _08143B30 @ =0x0201c000
- bl sub_81458DC
- adds r0, r4, 0
- adds r0, 0x88
- mov r2, r8
- strh r2, [r0]
- adds r0, 0x2
- strh r2, [r0]
- adds r0, 0x2
- strh r2, [r0]
- ldr r0, _08143B34 @ =gUnknown_02039322
- strh r7, [r0]
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08143AF0: .4byte sub_8143B38
-_08143AF4: .4byte gTasks
-_08143AF8: .4byte gWindowConfig_81E7208
-_08143AFC: .4byte gUnknown_0840B7BC
-_08143B00: .4byte gUnknown_0840B7FC
-_08143B04: .4byte 0x0600bee0
-_08143B08: .4byte REG_BG0VOFS
-_08143B0C: .4byte 0x0000fffc
-_08143B10: .4byte sub_81441B8
-_08143B14: .4byte 0x04000208
-_08143B18: .4byte 0x04000200
-_08143B1C: .4byte REG_DISPSTAT
-_08143B20: .4byte sub_8143948
-_08143B24: .4byte 0x000001c7
-_08143B28: .4byte sub_814395C
-_08143B2C: .4byte gUnknown_02039325
-_08143B30: .4byte 0x0201c000
-_08143B34: .4byte gUnknown_02039322
- thumb_func_end sub_81439D0
-
- thumb_func_start sub_8143B38
-sub_8143B38: @ 8143B38
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _08143B5C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08143B58
- ldr r0, _08143B60 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, _08143B64 @ =sub_8143B68
- str r0, [r1]
-_08143B58:
- pop {r0}
- bx r0
- .align 2, 0
-_08143B5C: .4byte gPaletteFade
-_08143B60: .4byte gTasks
-_08143B64: .4byte sub_8143B68
- thumb_func_end sub_8143B38
-
- thumb_func_start sub_8143B68
-sub_8143B68: @ 8143B68
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08143B9C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- movs r0, 0x10
- ldrsh r1, [r4, r0]
- cmp r1, 0
- beq _08143BA4
- movs r3, 0xA
- ldrsh r1, [r4, r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r1, 0x1E
- strh r1, [r0, 0x8]
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0x20]
- ldr r0, _08143BA0 @ =sub_8143EBC
- b _08143BEE
- .align 2, 0
-_08143B9C: .4byte gTasks
-_08143BA0: .4byte sub_8143EBC
-_08143BA4:
- ldr r0, _08143BCC @ =gUnknown_02039320
- strh r1, [r0]
- ldrh r2, [r4, 0x1E]
- movs r3, 0x1E
- ldrsh r0, [r4, r3]
- cmp r0, 0x1
- bne _08143BD4
- strh r2, [r4, 0x22]
- strh r1, [r4, 0x1E]
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _08143BD0 @ =sub_8143BFC
- b _08143BEE
- .align 2, 0
-_08143BCC: .4byte gUnknown_02039320
-_08143BD0: .4byte sub_8143BFC
-_08143BD4:
- cmp r0, 0x2
- bne _08143BF0
- strh r2, [r4, 0x22]
- strh r1, [r4, 0x1E]
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _08143BF8 @ =sub_8143CC0
-_08143BEE:
- str r0, [r4]
-_08143BF0:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08143BF8: .4byte sub_8143CC0
- thumb_func_end sub_8143B68
-
- thumb_func_start sub_8143BFC
-sub_8143BFC: @ 8143BFC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08143C34 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _08143C2C
- movs r0, 0x80
- lsls r0, 19
- strh r1, [r0]
- adds r0, r4, 0
- bl sub_81450AC
- ldr r1, _08143C38 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08143C3C @ =c2_080C9BFC
- str r1, [r0]
-_08143C2C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08143C34: .4byte gPaletteFade
-_08143C38: .4byte gTasks
-_08143C3C: .4byte c2_080C9BFC
- thumb_func_end sub_8143BFC
-
- thumb_func_start c2_080C9BFC
-c2_080C9BFC: @ 8143C40
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- bl SetVBlankCallback
- ldr r1, _08143CA8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- ldrb r0, [r5, 0x16]
- adds r1, r4, 0
- bl sub_8144ECC
- lsls r0, 24
- cmp r0, 0
- beq _08143CA0
- movs r0, 0x1
- negs r0, r0
- movs r4, 0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r3, _08143CAC @ =0x04000208
- ldrh r2, [r3]
- strh r4, [r3]
- ldr r4, _08143CB0 @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r2, _08143CB4 @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strh r0, [r2]
- ldr r0, _08143CB8 @ =sub_8143948
- bl SetVBlankCallback
- ldr r0, _08143CBC @ =sub_8143B38
- str r0, [r5]
-_08143CA0:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08143CA8: .4byte gTasks
-_08143CAC: .4byte 0x04000208
-_08143CB0: .4byte 0x04000200
-_08143CB4: .4byte REG_DISPSTAT
-_08143CB8: .4byte sub_8143948
-_08143CBC: .4byte sub_8143B38
- thumb_func_end c2_080C9BFC
-
- thumb_func_start sub_8143CC0
-sub_8143CC0: @ 8143CC0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08143CF8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _08143CF0
- movs r0, 0x80
- lsls r0, 19
- strh r1, [r0]
- adds r0, r4, 0
- bl sub_81450AC
- ldr r1, _08143CFC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08143D00 @ =sub_8143D04
- str r1, [r0]
-_08143CF0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08143CF8: .4byte gPaletteFade
-_08143CFC: .4byte gTasks
-_08143D00: .4byte sub_8143D04
- thumb_func_end sub_8143CC0
-
- thumb_func_start sub_8143D04
-sub_8143D04: @ 8143D04
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _08143DC8 @ =gMain
- ldr r1, _08143DCC @ =0x0000043c
- adds r1, r0
- mov r8, r1
- ldrb r7, [r1]
- cmp r7, 0
- beq _08143D24
- cmp r7, 0x1
- beq _08143E0C
-_08143D24:
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r1, _08143DD0 @ =gReservedSpritePaletteCount
- movs r0, 0x8
- strb r0, [r1]
- ldr r0, _08143DD4 @ =gBirchHelpGfx
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, _08143DD8 @ =gBirchGrassTilemap
- ldr r1, _08143DDC @ =0x06003800
- bl LZ77UnCompVram
- ldr r0, _08143DE0 @ =gBirchBagGrassPal + 0x2
- movs r1, 0x1
- movs r2, 0x3E
- bl LoadPalette
- movs r1, 0
- ldr r4, _08143DE4 @ =0x0201e000
- movs r3, 0x11
- ldr r2, _08143DE8 @ =0x000007ff
-_08143D56:
- adds r0, r1, r4
- strb r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, r2
- bls _08143D56
- movs r1, 0
- ldr r2, _08143DEC @ =0x0201f800
- ldr r6, _08143DF0 @ =gUnknown_0840CAA0
- ldr r0, _08143DF4 @ =0xfffff000
- adds r5, r2, r0
- movs r4, 0x22
- ldr r3, _08143DE8 @ =0x000007ff
-_08143D72:
- adds r0, r1, r5
- strb r4, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, r3
- bls _08143D72
- movs r1, 0
- ldr r5, _08143DF8 @ =0x0201f000
- movs r4, 0x33
- ldr r3, _08143DE8 @ =0x000007ff
-_08143D88:
- adds r0, r1, r5
- strb r4, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, r3
- bls _08143D88
- movs r0, 0
- strh r0, [r2]
- ldr r1, _08143DFC @ =0x000053ff
- adds r0, r1, 0
- strh r0, [r2, 0x2]
- ldr r1, _08143E00 @ =0x0000529f
- adds r0, r1, 0
- strh r0, [r2, 0x4]
- ldr r1, _08143E04 @ =0x00007e94
- adds r0, r1, 0
- strh r0, [r2, 0x6]
- adds r0, r6, 0
- bl LoadSpriteSheet
- ldr r0, _08143E08 @ =gUnknown_0840CAB0
- bl LoadSpritePalette
- ldr r1, _08143DC8 @ =gMain
- ldr r2, _08143DCC @ =0x0000043c
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08143E90
- .align 2, 0
-_08143DC8: .4byte gMain
-_08143DCC: .4byte 0x0000043c
-_08143DD0: .4byte gReservedSpritePaletteCount
-_08143DD4: .4byte gBirchHelpGfx
-_08143DD8: .4byte gBirchGrassTilemap
-_08143DDC: .4byte 0x06003800
-_08143DE0: .4byte gBirchBagGrassPal + 0x2
-_08143DE4: .4byte 0x0201e000
-_08143DE8: .4byte 0x000007ff
-_08143DEC: .4byte 0x0201f800
-_08143DF0: .4byte gUnknown_0840CAA0
-_08143DF4: .4byte 0xfffff000
-_08143DF8: .4byte 0x0201f000
-_08143DFC: .4byte 0x000053ff
-_08143E00: .4byte 0x0000529f
-_08143E04: .4byte 0x00007e94
-_08143E08: .4byte gUnknown_0840CAB0
-_08143E0C:
- ldr r0, _08143EA0 @ =sub_8144514
- movs r1, 0
- bl CreateTask
- ldr r2, _08143EA4 @ =gTasks
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 3
- adds r4, r2
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- mov r9, r1
- movs r5, 0
- strh r0, [r4, 0xE]
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- strh r7, [r0, 0x8]
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- strh r6, [r0, 0xA]
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r4, 0x16]
- strh r1, [r0, 0xC]
- movs r0, 0x1
- negs r0, r0
- str r5, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _08143EA8 @ =REG_BG3HOFS
- strh r5, [r0]
- ldr r1, _08143EAC @ =REG_BG3VOFS
- movs r0, 0x20
- strh r0, [r1]
- subs r1, 0x10
- ldr r2, _08143EB0 @ =0x00000703
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xE
- movs r2, 0xCA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- mov r1, r9
- mov r0, r8
- strb r1, [r0]
- ldr r0, _08143EB4 @ =gUnknown_0203935C
- strh r5, [r0]
- ldr r0, _08143EB8 @ =sub_8143B38
- str r0, [r4]
-_08143E90:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08143EA0: .4byte sub_8144514
-_08143EA4: .4byte gTasks
-_08143EA8: .4byte REG_BG3HOFS
-_08143EAC: .4byte REG_BG3VOFS
-_08143EB0: .4byte 0x00000703
-_08143EB4: .4byte gUnknown_0203935C
-_08143EB8: .4byte sub_8143B38
- thumb_func_end sub_8143D04
-
- thumb_func_start sub_8143EBC
-sub_8143EBC: @ 8143EBC
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08143EE0 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0x20]
- movs r2, 0x20
- ldrsh r1, [r4, r2]
- cmp r1, 0
- beq _08143EE4
- subs r0, 0x1
- strh r0, [r4, 0x20]
- b _08143EF8
- .align 2, 0
-_08143EE0: .4byte gTasks
-_08143EE4:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0xC
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _08143F00 @ =sub_8143F04
- str r0, [r4]
-_08143EF8:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08143F00: .4byte sub_8143F04
- thumb_func_end sub_8143EBC
-
- thumb_func_start sub_8143F04
-sub_8143F04: @ 8143F04
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08143F30 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08143F2A
- adds r0, r4, 0
- bl sub_81450AC
- ldr r0, _08143F34 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08143F38 @ =sub_8143F3C
- str r0, [r1]
-_08143F2A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08143F30: .4byte gPaletteFade
-_08143F34: .4byte gTasks
-_08143F38: .4byte sub_8143F3C
- thumb_func_end sub_8143F04
-
- thumb_func_start sub_8143F3C
-sub_8143F3C: @ 8143F3C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- bl sub_8144130
- bl ResetPaletteFade
- movs r1, 0xE0
- lsls r1, 6
- movs r0, 0
- movs r2, 0
- bl sub_8145128
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- movs r0, 0x1
- negs r0, r0
- movs r4, 0
- str r4, [sp]
- movs r1, 0x8
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r1, _08143FC4 @ =REG_BG0CNT
- movs r2, 0xE0
- lsls r2, 3
- adds r0, r2, 0
- strh r0, [r1]
- ldr r3, _08143FC8 @ =0x04000208
- ldrh r2, [r3]
- strh r4, [r3]
- ldr r4, _08143FCC @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r2, _08143FD0 @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strh r0, [r2]
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xA0
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _08143FD4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0x80
- lsls r1, 1
- strh r1, [r0, 0x8]
- ldr r1, _08143FD8 @ =sub_8143FDC
- str r1, [r0]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08143FC4: .4byte REG_BG0CNT
-_08143FC8: .4byte 0x04000208
-_08143FCC: .4byte 0x04000200
-_08143FD0: .4byte REG_DISPSTAT
-_08143FD4: .4byte gTasks
-_08143FD8: .4byte sub_8143FDC
- thumb_func_end sub_8143F3C
-
thumb_func_start sub_8143FDC
sub_8143FDC: @ 8143FDC
push {r4,lr}
diff --git a/data/credits.s b/data/credits.s
index 48b76486d..c6e0ad536 100644
--- a/data/credits.s
+++ b/data/credits.s
@@ -4,10 +4,10 @@
.section .rodata
gUnknown_0840B7BC:: @ 840B7BC
- .incbin "baserom.gba", 0x0040b7bc, 0x40
+ .incbin "graphics/credits/palette_1.gbapal"
gUnknown_0840B7FC:: @ 840B7FC
- .incbin "baserom.gba", 0x0040b7fc, 0x40
+ .incbin "graphics/credits/ampersand.4bpp"
gUnknown_0840B83C:: @ 840B83C
.incbin "baserom.gba", 0x0040b83c, 0xf
@@ -59,10 +59,12 @@ gUnknown_0840CA94:: @ 840CA94
.4byte Unknown_840CA8C
gUnknown_0840CAA0:: @ 840CAA0
- .incbin "baserom.gba", 0x0040caa0, 0x10
+ obj_tiles gHallOfFame, 6144, 1001
+ null_obj_tiles
gUnknown_0840CAB0:: @ 840CAB0
- .incbin "baserom.gba", 0x0040cab0, 0x10
+ obj_pal unk_201f800, 1001
+ null_obj_pal
.align 2
gOamData_840CAC0:: @ 840CAC0
diff --git a/graphics/credits/ampersand.png b/graphics/credits/ampersand.png
new file mode 100644
index 000000000..cddc416cf
--- /dev/null
+++ b/graphics/credits/ampersand.png
Binary files differ
diff --git a/graphics/credits/palette_1.pal b/graphics/credits/palette_1.pal
new file mode 100644
index 000000000..b8e71c57f
--- /dev/null
+++ b/graphics/credits/palette_1.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+0 0 0
+255 255 255
+164 164 164
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+255 230 123
+255 82 41
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/ld_script.txt b/ld_script.txt
index ed6da750f..bdab78507 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -228,6 +228,7 @@ SECTIONS {
asm/field_region_map.o(.text);
asm/battle_anim_813F0F4.o(.text);
asm/hall_of_fame.o(.text);
+ src/credits.o(.text);
asm/credits.o(.text);
src/lottery_corner.o(.text);
src/diploma.o(.text);
diff --git a/shared_syms.txt b/shared_syms.txt
index 815aca4c5..b44d54835 100644
--- a/shared_syms.txt
+++ b/shared_syms.txt
@@ -31,3 +31,4 @@ unk_201B264 = 0x201B264;
unk_201C000 = 0x201C000;
gHallOfFame = 0x201E000;
+unk_201f800 = 0x201F800;
diff --git a/src/credits.c b/src/credits.c
new file mode 100644
index 000000000..196a3a112
--- /dev/null
+++ b/src/credits.c
@@ -0,0 +1,544 @@
+#include "global.h"
+#include "m4a.h"
+#include "main.h"
+#include "menu.h"
+#include "palette.h"
+#include "songs.h"
+#include "sprite.h"
+#include "task.h"
+#include "text.h"
+
+struct Unk201C000 {
+ u8 pad_00[0x88];
+ u16 var_88;
+ u16 var_8A;
+ u16 var_8C;
+};
+
+struct HallOfFame {
+ u8 sheet0[0x800];
+ u8 sheet1[0x800];
+ u8 sheet2[0x800];
+};
+
+extern struct Unk201C000 unk_201C000;
+
+extern struct HallOfFame gHallOfFame;
+extern u8 unk_201e800[0x800];
+extern u8 unk_201f000[0x800];
+extern u16 unk_201f800[];
+
+extern s16 gUnknown_02039320;
+extern u16 gUnknown_02039322;
+extern u8 gUnknown_02039324;
+extern u8 gUnknown_02039325;
+extern u16 gUnknown_0203935C;
+
+extern u8 gReservedSpritePaletteCount;
+
+// data/starter_choose
+extern u16 gBirchBagGrassPal[32];
+extern u8 gBirchBagTilemap[];
+extern u8 gBirchHelpGfx[];
+
+// data/credits
+extern u16 gUnknown_0840B7BC[32];
+extern u16 gUnknown_0840B7FC[32];
+extern struct SpriteSheet gUnknown_0840CAA0;
+extern struct SpritePalette gUnknown_0840CAB0;
+
+void sub_8143B38(u8 taskId);
+void sub_8143B68(u8 taskId);
+static void sub_8143BFC(u8 taskId);
+static void c2_080C9BFC(u8 taskId);
+static void sub_8143CC0(u8 taskId);
+static void sub_8143D04(u8 taskId);
+static void sub_8143EBC(u8 taskId);
+static void sub_8143F04(u8 taskId);
+static void sub_8143F3C(u8 taskId);
+
+void sub_8143FDC(u8 taskId);
+void sub_8144130(void);
+void sub_81441B8(u8 taskId);
+void sub_8144514(u8 taskId);
+u8 sub_8144ECC(u8 data, u8 taskId);
+void sub_81450AC(u8 taskId);
+void sub_8145128(u16, u16, u16);
+void sub_81458DC(void);
+
+static void sub_8143948(void) {
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void sub_814395C(void) {
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+
+ if (!(gMain.heldKeys & B_BUTTON)) {
+ return;
+ }
+
+ if (!gUnknown_02039324) {
+ return;
+ }
+
+ if (gTasks[gUnknown_02039322].func != sub_8143B68) {
+ return;
+ }
+
+ sub_8143948();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ gUnknown_02039325 = 1;
+}
+
+void sub_81439D0(void) {
+ u8 taskId;
+ s16 taskId3;
+ u8 taskId2;
+ u16 savedIme;
+ struct Unk201C000 * c000;
+
+ sub_8144130();
+ SetVBlankCallback(NULL);
+ ResetPaletteFade();
+ ResetTasks();
+
+ taskId = CreateTask(sub_8143B38, 0);
+
+ gTasks[taskId].data[4] = 0;
+ gTasks[taskId].data[7] = 0;
+ gTasks[taskId].data[11] = 0;
+ gTasks[taskId].data[13] = 1;
+
+ while (TRUE) {
+ if (sub_8144ECC(0, taskId)) {
+ break;
+ }
+ }
+
+ taskId3 = gTasks[taskId].data[1];
+ gTasks[taskId3].data[0] = 40;
+
+ SetUpWindowConfig(&gWindowConfig_81E7208);
+ InitMenuWindow(&gWindowConfig_81E7208);
+ LoadPalette(&gUnknown_0840B7BC, 0x80, sizeof(gUnknown_0840B7BC));
+
+ CpuCopy16(&gUnknown_0840B7FC, (void *) (VRAM + 0xBEE0), sizeof(gUnknown_0840B7FC));
+
+ REG_BG0VOFS = 0xFFFC;
+
+ taskId2 = CreateTask(sub_81441B8, 0);
+
+ gTasks[taskId2].data[1] = taskId;
+ gTasks[taskId].data[15] = taskId2;
+
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+
+
+ savedIme = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = savedIme;
+ REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
+
+
+ SetVBlankCallback(sub_8143948);
+ m4aSongNumStart(BGM_THANKFOR);
+ SetMainCallback2(sub_814395C);
+ gUnknown_02039325 = 0;
+
+ c000 = &unk_201C000;
+
+ sub_81458DC();
+
+ c000->var_88 = 0;
+ c000->var_8A = 0;
+ c000->var_8C = 0;
+
+ gUnknown_02039322 = taskId;
+}
+
+void sub_8143B38(u8 taskId) {
+ if (gPaletteFade.active) {
+ return;
+ }
+
+ gTasks[taskId].func = sub_8143B68;
+}
+
+void sub_8143B68(u8 taskId) {
+ u16 data11;
+
+ if (gTasks[taskId].data[4]) {
+ s16 secondaryTaskId;
+
+ secondaryTaskId = gTasks[taskId].data[1];
+ gTasks[secondaryTaskId].data[0] = 30;
+
+ gTasks[taskId].data[12] = 0x100;
+ gTasks[taskId].func = sub_8143EBC;
+ return;
+ }
+
+ gUnknown_02039320 = 0;
+ data11 = gTasks[taskId].data[11];
+
+ if (gTasks[taskId].data[11] == 1) {
+ gTasks[taskId].data[13] = data11;
+ gTasks[taskId].data[11] = 0;
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gTasks[taskId].func = sub_8143BFC;
+ } else if (gTasks[taskId].data[11] == 2) {
+ gTasks[taskId].data[13] = data11;
+ gTasks[taskId].data[11] = 0;
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gTasks[taskId].func = sub_8143CC0;
+ }
+}
+
+static void sub_8143BFC(u8 taskId) {
+ if (gPaletteFade.active) {
+ return;
+ }
+
+ REG_DISPCNT = 0;
+ sub_81450AC(taskId);
+ gTasks[taskId].func = c2_080C9BFC;
+}
+
+static void c2_080C9BFC(u8 taskId) {
+ u16 backup;
+
+ SetVBlankCallback(NULL);
+
+ if (!sub_8144ECC(gTasks[taskId].data[7], taskId)) {
+ return;
+ }
+
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+
+ backup = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = backup;
+ REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
+
+ SetVBlankCallback(sub_8143948);
+ gTasks[taskId].func = sub_8143B38;
+}
+
+static void sub_8143CC0(u8 taskId) {
+ if (gPaletteFade.active) {
+ return;
+ }
+
+ REG_DISPCNT = 0;
+ sub_81450AC(taskId);
+ gTasks[taskId].func = sub_8143D04;
+}
+
+#ifdef NONMATCHING
+static void sub_8143D04(u8 taskId) {
+ switch (gMain.state) {
+ default:
+ case 0: {
+ u16 i;
+
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 8;
+ LZ77UnCompVram(&gBirchHelpGfx, (void *) VRAM);
+ LZ77UnCompVram(&gBirchBagTilemap, (void *) (VRAM + 0x3800));
+ LoadPalette(gBirchBagGrassPal + 2, 1, 31 * 2);
+
+ for (i = 0; i < 0x800; i++) {
+ gHallOfFame.sheet0[i] = 0x11;
+ }
+
+ for (i = 0; i < 0x800; i++) {
+ gHallOfFame.sheet1[i] = 0x22;
+ }
+
+ for (i = 0; i < 0x800; i++) {
+ gHallOfFame.sheet2[i] = 0x33;
+ }
+
+ unk_201f800[0] = 0;
+ unk_201f800[1] = 0x53FF;
+ unk_201f800[2] = 0x529F;
+ unk_201f800[3] = 0x7E94;
+
+ LoadSpriteSheet(&gUnknown_0840CAA0);
+ LoadSpritePalette(&gUnknown_0840CAB0);
+
+ gMain.state += 1;
+ break;
+ }
+
+ case 1: {
+ gTasks[taskId].data[3] = CreateTask(sub_8144514, 0);
+ gTasks[gTasks[taskId].data[3]].data[0] = 1;
+ gTasks[gTasks[taskId].data[3]].data[1] = taskId;
+ gTasks[gTasks[taskId].data[3]].data[2] = gTasks[taskId].data[7];
+
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 32;
+ REG_BG3CNT = 0x703;
+ REG_DISPCNT = 0x1940;
+
+ gMain.state = 0;
+ gUnknown_0203935C = 0;
+ gTasks[taskId].func = sub_8143B38;
+ break;
+ }
+ }
+}
+#else
+__attribute__((naked))
+static void sub_8143D04(u8 taskId) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ sub sp, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ ldr r0, _08143DC8 @ =gMain\n\
+ ldr r1, _08143DCC @ =0x0000043c\n\
+ adds r1, r0\n\
+ mov r8, r1\n\
+ ldrb r7, [r1]\n\
+ cmp r7, 0\n\
+ beq _08143D24\n\
+ cmp r7, 0x1\n\
+ beq _08143E0C\n\
+_08143D24:\n\
+ bl ResetSpriteData\n\
+ bl FreeAllSpritePalettes\n\
+ ldr r1, _08143DD0 @ =gReservedSpritePaletteCount\n\
+ movs r0, 0x8\n\
+ strb r0, [r1]\n\
+ ldr r0, _08143DD4 @ =gBirchHelpGfx\n\
+ movs r1, 0xC0\n\
+ lsls r1, 19\n\
+ bl LZ77UnCompVram\n\
+ ldr r0, _08143DD8 @ =gBirchGrassTilemap\n\
+ ldr r1, _08143DDC @ =0x06003800\n\
+ bl LZ77UnCompVram\n\
+ ldr r0, _08143DE0 @ =0x0840281a\n\
+ movs r1, 0x1\n\
+ movs r2, 0x3E\n\
+ bl LoadPalette\n\
+ movs r1, 0\n\
+ ldr r4, _08143DE4 @ =0x0201e000\n\
+ movs r3, 0x11\n\
+ ldr r2, _08143DE8 @ =0x000007ff\n\
+_08143D56:\n\
+ adds r0, r1, r4\n\
+ strb r3, [r0]\n\
+ adds r0, r1, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r1, r2\n\
+ bls _08143D56\n\
+ movs r1, 0\n\
+ ldr r2, _08143DEC @ =0x0201f800\n\
+ ldr r6, _08143DF0 @ =gUnknown_0840CAA0\n\
+ ldr r0, _08143DF4 @ =0xfffff000\n\
+ adds r5, r2, r0\n\
+ movs r4, 0x22\n\
+ ldr r3, _08143DE8 @ =0x000007ff\n\
+_08143D72:\n\
+ adds r0, r1, r5\n\
+ strb r4, [r0]\n\
+ adds r0, r1, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r1, r3\n\
+ bls _08143D72\n\
+ movs r1, 0\n\
+ ldr r5, _08143DF8 @ =0x0201f000\n\
+ movs r4, 0x33\n\
+ ldr r3, _08143DE8 @ =0x000007ff\n\
+_08143D88:\n\
+ adds r0, r1, r5\n\
+ strb r4, [r0]\n\
+ adds r0, r1, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r1, r3\n\
+ bls _08143D88\n\
+ movs r0, 0\n\
+ strh r0, [r2]\n\
+ ldr r1, _08143DFC @ =0x000053ff\n\
+ adds r0, r1, 0\n\
+ strh r0, [r2, 0x2]\n\
+ ldr r1, _08143E00 @ =0x0000529f\n\
+ adds r0, r1, 0\n\
+ strh r0, [r2, 0x4]\n\
+ ldr r1, _08143E04 @ =0x00007e94\n\
+ adds r0, r1, 0\n\
+ strh r0, [r2, 0x6]\n\
+ adds r0, r6, 0\n\
+ bl LoadSpriteSheet\n\
+ ldr r0, _08143E08 @ =gUnknown_0840CAB0\n\
+ bl LoadSpritePalette\n\
+ ldr r1, _08143DC8 @ =gMain\n\
+ ldr r2, _08143DCC @ =0x0000043c\n\
+ adds r1, r2\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ b _08143E90\n\
+ .align 2, 0\n\
+_08143DC8: .4byte gMain\n\
+_08143DCC: .4byte 0x0000043c\n\
+_08143DD0: .4byte gReservedSpritePaletteCount\n\
+_08143DD4: .4byte gBirchHelpGfx\n\
+_08143DD8: .4byte gBirchGrassTilemap\n\
+_08143DDC: .4byte 0x06003800\n\
+_08143DE0: .4byte gBirchBagGrassPal + 2\n\
+_08143DE4: .4byte 0x0201e000\n\
+_08143DE8: .4byte 0x000007ff\n\
+_08143DEC: .4byte 0x0201f800\n\
+_08143DF0: .4byte gUnknown_0840CAA0\n\
+_08143DF4: .4byte 0xfffff000\n\
+_08143DF8: .4byte 0x0201f000\n\
+_08143DFC: .4byte 0x000053ff\n\
+_08143E00: .4byte 0x0000529f\n\
+_08143E04: .4byte 0x00007e94\n\
+_08143E08: .4byte gUnknown_0840CAB0\n\
+_08143E0C:\n\
+ ldr r0, _08143EA0 @ =sub_8144514\n\
+ movs r1, 0\n\
+ bl CreateTask\n\
+ ldr r2, _08143EA4 @ =gTasks\n\
+ lsls r4, r6, 2\n\
+ adds r4, r6\n\
+ lsls r4, 3\n\
+ adds r4, r2\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ movs r1, 0\n\
+ mov r9, r1\n\
+ movs r5, 0\n\
+ strh r0, [r4, 0xE]\n\
+ movs r0, 0xE\n\
+ ldrsh r1, [r4, r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ adds r0, r2\n\
+ strh r7, [r0, 0x8]\n\
+ movs r0, 0xE\n\
+ ldrsh r1, [r4, r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ adds r0, r2\n\
+ strh r6, [r0, 0xA]\n\
+ movs r0, 0xE\n\
+ ldrsh r1, [r4, r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ adds r0, r2\n\
+ ldrh r1, [r4, 0x16]\n\
+ strh r1, [r0, 0xC]\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ str r5, [sp]\n\
+ movs r1, 0\n\
+ movs r2, 0x10\n\
+ movs r3, 0\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r0, _08143EA8 @ =REG_BG3HOFS\n\
+ strh r5, [r0]\n\
+ ldr r1, _08143EAC @ =REG_BG3VOFS\n\
+ movs r0, 0x20\n\
+ strh r0, [r1]\n\
+ subs r1, 0x10\n\
+ ldr r2, _08143EB0 @ =0x00000703\n\
+ adds r0, r2, 0\n\
+ strh r0, [r1]\n\
+ subs r1, 0xE\n\
+ movs r2, 0xCA\n\
+ lsls r2, 5\n\
+ adds r0, r2, 0\n\
+ strh r0, [r1]\n\
+ mov r1, r9\n\
+ mov r0, r8\n\
+ strb r1, [r0]\n\
+ ldr r0, _08143EB4 @ =gUnknown_0203935C\n\
+ strh r5, [r0]\n\
+ ldr r0, _08143EB8 @ =sub_8143B38\n\
+ str r0, [r4]\n\
+_08143E90:\n\
+ add sp, 0x4\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08143EA0: .4byte sub_8144514\n\
+_08143EA4: .4byte gTasks\n\
+_08143EA8: .4byte 0x4000000 + 0x1c\n\
+_08143EAC: .4byte 0x4000000 + 0x1e\n\
+_08143EB0: .4byte 0x00000703\n\
+_08143EB4: .4byte gUnknown_0203935C\n\
+_08143EB8: .4byte sub_8143B38\n\
+ .syntax divided\n");
+}
+#endif
+
+static void sub_8143EBC(u8 taskId) {
+ if (gTasks[taskId].data[12]) {
+ gTasks[taskId].data[12] -= 1;
+ return;
+ }
+
+ BeginNormalPaletteFade(-1, 12, 0, 16, 0);
+ gTasks[taskId].func = sub_8143F04;
+}
+
+static void sub_8143F04(u8 taskId) {
+ if (gPaletteFade.active) {
+ return;
+ }
+
+ sub_81450AC(taskId);
+ gTasks[taskId].func = sub_8143F3C;
+}
+
+static void sub_8143F3C(u8 taskId) {
+ u16 backup;
+
+ sub_8144130();
+ ResetPaletteFade();
+ sub_8145128(0, 0x3800, 0);
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ BeginNormalPaletteFade(-1, 8, 16, 0, 0);
+
+ REG_BG0CNT = 0x700;
+ backup = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = backup;
+ REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
+ REG_DISPCNT = 0x140;
+
+ gTasks[taskId].data[0] = 0x100;
+ gTasks[taskId].func = sub_8143FDC;
+}