summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-10-07 17:06:11 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-10-07 17:06:11 -0400
commit0f67a952a396c80984236b45974407bcc8f6191d (patch)
tree36e0f5631281b6a0bba359dcecde93940639e1f6
parent2fe6b6db8cd681de8cf1671936452aa8bb1103f5 (diff)
main_menu through sub_800CE70
-rw-r--r--asm/main_menu.s886
-rw-r--r--data/data.s4
-rw-r--r--data/strings.s24
-rw-r--r--include/link.h1
-rw-r--r--include/mystery_gift_menu.h1
-rw-r--r--include/quest_log.h1
-rw-r--r--include/strings.h85
-rw-r--r--src/main_menu.c328
-rw-r--r--src/mystery_gift_menu.c66
-rw-r--r--src/quest_log.c14
10 files changed, 444 insertions, 966 deletions
diff --git a/asm/main_menu.s b/asm/main_menu.s
index 3b33c4f69..664da29ee 100644
--- a/asm/main_menu.s
+++ b/asm/main_menu.s
@@ -5,884 +5,6 @@
.text
- thumb_func_start sub_800C7A0
-sub_800C7A0: @ 800C7A0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r7, r0, 24
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0x1
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0x21
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0xFF
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0x7
- bl SetGpuReg
- ldr r0, _0800C7F4 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _0800C7FC
- ldr r1, _0800C7F8 @ =0x00007e04
- b _0800C7FE
- .align 2, 0
-_0800C7F4: .4byte gSaveBlock2Ptr
-_0800C7F8: .4byte 0x00007e04
-_0800C7FC:
- ldr r1, _0800C85C @ =0x0000547f
-_0800C7FE:
- add r0, sp, 0xC
- strh r1, [r0]
- add r0, sp, 0xC
- movs r1, 0xF1
- movs r2, 0x2
- bl LoadPalette
- ldr r2, _0800C860 @ =gTasks
- lsls r1, r7, 2
- adds r0, r1, r7
- lsls r0, 3
- adds r6, r0, r2
- movs r2, 0x8
- ldrsh r0, [r6, r2]
- mov r8, r1
- cmp r0, 0x1
- beq _0800C870
- cmp r0, 0x1
- ble _0800C828
- cmp r0, 0x2
- beq _0800C8F0
-_0800C828:
- movs r0, 0
- movs r1, 0xAA
- bl FillWindowPixelBuffer
- ldr r0, _0800C864 @ =gUnknown_8234688
- str r0, [sp]
- movs r0, 0x1
- negs r0, r0
- str r0, [sp, 0x4]
- ldr r0, _0800C868 @ =gUnknown_8415A6E
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0x2
- movs r3, 0x2
- bl AddTextPrinterParameterized3
- ldr r0, _0800C86C @ =gUnknown_8234618
- bl sub_800D0B4
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- b _0800C8D8
- .align 2, 0
-_0800C85C: .4byte 0x0000547f
-_0800C860: .4byte gTasks
-_0800C864: .4byte gUnknown_8234688
-_0800C868: .4byte gUnknown_8415A6E
-_0800C86C: .4byte gUnknown_8234618
-_0800C870:
- movs r0, 0x1
- movs r1, 0xAA
- bl FillWindowPixelBuffer
- movs r0, 0x2
- movs r1, 0xAA
- bl FillWindowPixelBuffer
- ldr r5, _0800C8E0 @ =gUnknown_8234688
- str r5, [sp]
- movs r4, 0x1
- negs r4, r4
- str r4, [sp, 0x4]
- ldr r0, _0800C8E4 @ =gUnknown_8415A77
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0x2
- movs r3, 0x2
- bl AddTextPrinterParameterized3
- str r5, [sp]
- str r4, [sp, 0x4]
- ldr r0, _0800C8E8 @ =gUnknown_8415A6E
- str r0, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0x2
- movs r2, 0x2
- movs r3, 0x2
- bl AddTextPrinterParameterized3
- bl sub_800CE58
- ldr r4, _0800C8EC @ =gUnknown_8234620
- adds r0, r4, 0
- bl sub_800D0B4
- adds r4, 0x8
- adds r0, r4, 0
- bl sub_800D0B4
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x2
- bl PutWindowTilemap
- movs r0, 0x1
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x2
-_0800C8D8:
- movs r1, 0x3
- bl CopyWindowToVram
- b _0800C994
- .align 2, 0
-_0800C8E0: .4byte gUnknown_8234688
-_0800C8E4: .4byte gUnknown_8415A77
-_0800C8E8: .4byte gUnknown_8415A6E
-_0800C8EC: .4byte gUnknown_8234620
-_0800C8F0:
- movs r0, 0x1
- movs r1, 0xAA
- bl FillWindowPixelBuffer
- movs r0, 0x2
- movs r1, 0xAA
- bl FillWindowPixelBuffer
- movs r0, 0x3
- movs r1, 0xAA
- bl FillWindowPixelBuffer
- ldr r5, _0800C9B0 @ =gUnknown_8234688
- str r5, [sp]
- movs r4, 0x1
- negs r4, r4
- str r4, [sp, 0x4]
- ldr r0, _0800C9B4 @ =gUnknown_8415A77
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0x2
- movs r3, 0x2
- bl AddTextPrinterParameterized3
- str r5, [sp]
- str r4, [sp, 0x4]
- ldr r0, _0800C9B8 @ =gUnknown_8415A6E
- str r0, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0x2
- movs r2, 0x2
- movs r3, 0x2
- bl AddTextPrinterParameterized3
- movs r0, 0x1
- strh r0, [r6, 0x1C]
- str r5, [sp]
- str r4, [sp, 0x4]
- ldr r0, _0800C9BC @ =gUnknown_8415A97
- str r0, [sp, 0x8]
- movs r0, 0x3
- movs r1, 0x2
- movs r2, 0x2
- movs r3, 0x2
- bl AddTextPrinterParameterized3
- bl sub_800CE58
- ldr r4, _0800C9C0 @ =gUnknown_8234620
- adds r0, r4, 0
- bl sub_800D0B4
- adds r0, r4, 0
- adds r0, 0x8
- bl sub_800D0B4
- adds r4, 0x10
- adds r0, r4, 0
- bl sub_800D0B4
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x2
- bl PutWindowTilemap
- movs r0, 0x3
- bl PutWindowTilemap
- movs r0, 0x1
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x2
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x3
- movs r1, 0x3
- bl CopyWindowToVram
-_0800C994:
- ldr r0, _0800C9C4 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldr r0, _0800C9C8 @ =sub_800C9CC
- str r0, [r1]
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800C9B0: .4byte gUnknown_8234688
-_0800C9B4: .4byte gUnknown_8415A77
-_0800C9B8: .4byte gUnknown_8415A6E
-_0800C9BC: .4byte gUnknown_8415A97
-_0800C9C0: .4byte gUnknown_8234620
-_0800C9C4: .4byte gTasks
-_0800C9C8: .4byte sub_800C9CC
- thumb_func_end sub_800C7A0
-
- thumb_func_start sub_800C9CC
-sub_800C9CC: @ 800C9CC
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- movs r5, 0x1
- negs r5, r5
- adds r0, r5, 0
- bl CheckForSpaceForDma3Request
- lsls r0, 16
- asrs r0, 16
- cmp r0, r5
- beq _0800CA10
- ldr r1, _0800CA18 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0800CA1C @ =sub_800CA28
- str r1, [r0]
- ldr r0, _0800CA20 @ =0x0000ffff
- str r0, [sp]
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0
- bl ShowBg
- ldr r0, _0800CA24 @ =sub_800C2EC
- bl SetVBlankCallback
-_0800CA10:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CA18: .4byte gTasks
-_0800CA1C: .4byte sub_800CA28
-_0800CA20: .4byte 0x0000ffff
-_0800CA24: .4byte sub_800C2EC
- thumb_func_end sub_800C9CC
-
- thumb_func_start sub_800CA28
-sub_800CA28: @ 800CA28
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800CA4C @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldrb r0, [r4, 0x8]
- ldrb r1, [r4, 0xA]
- bl sub_800CC94
- ldr r0, _0800CA50 @ =sub_800CA54
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CA4C: .4byte gTasks
-_0800CA50: .4byte sub_800CA54
- thumb_func_end sub_800CA28
-
- thumb_func_start sub_800CA54
-sub_800CA54: @ 800CA54
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0800CA88 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0800CA80
- adds r0, r4, 0
- bl sub_800CCF8
- lsls r0, 24
- cmp r0, 0
- beq _0800CA80
- ldr r0, _0800CA8C @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0800CA90 @ =sub_800CA28
- str r0, [r1]
-_0800CA80:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CA88: .4byte gPaletteFade
-_0800CA8C: .4byte gTasks
-_0800CA90: .4byte sub_800CA28
- thumb_func_end sub_800CA54
-
- thumb_func_start sub_800CA94
-sub_800CA94: @ 800CA94
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _0800CAC4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0800CB84
- ldr r1, _0800CAC8 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _0800CACC
- cmp r0, 0x1
- ble _0800CAEE
- cmp r0, 0x2
- beq _0800CADA
- b _0800CAEE
- .align 2, 0
-_0800CAC4: .4byte gPaletteFade
-_0800CAC8: .4byte gTasks
-_0800CACC:
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0800CAEA
- cmp r0, 0x1
- bne _0800CAEA
- b _0800CAEE
-_0800CADA:
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _0800CAEE
- cmp r0, 0x1
- ble _0800CAEA
- cmp r0, 0x2
- beq _0800CAF2
-_0800CAEA:
- movs r0, 0x1
- b _0800CB22
-_0800CAEE:
- movs r0, 0
- b _0800CB22
-_0800CAF2:
- bl IsWirelessAdapterConnected
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _0800CB20
- movs r0, 0
- bl sub_800D094
- ldr r0, _0800CB1C @ =sub_800CB90
- str r0, [r4]
- movs r0, 0x1
- negs r0, r0
- str r5, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _0800CB84
- .align 2, 0
-_0800CB1C: .4byte sub_800CB90
-_0800CB20:
- movs r0, 0x2
-_0800CB22:
- cmp r0, 0x1
- beq _0800CB48
- cmp r0, 0x1
- ble _0800CB2E
- cmp r0, 0x2
- beq _0800CB70
-_0800CB2E:
- ldr r1, _0800CB44 @ =gUnknown_2031DE0
- movs r0, 0
- strb r0, [r1]
- bl FreeAllWindowBuffers
- adds r0, r6, 0
- bl DestroyTask
- bl StartNewGameScene
- b _0800CB84
- .align 2, 0
-_0800CB44: .4byte gUnknown_2031DE0
-_0800CB48:
- ldr r0, _0800CB64 @ =gPlttBufferUnfaded
- movs r2, 0
- movs r1, 0
- strh r1, [r0]
- ldr r0, _0800CB68 @ =gPlttBufferFaded
- strh r1, [r0]
- ldr r0, _0800CB6C @ =gUnknown_2031DE0
- strb r2, [r0]
- bl FreeAllWindowBuffers
- adds r0, r6, 0
- bl sub_8110F14
- b _0800CB84
- .align 2, 0
-_0800CB64: .4byte gPlttBufferUnfaded
-_0800CB68: .4byte gPlttBufferFaded
-_0800CB6C: .4byte gUnknown_2031DE0
-_0800CB70:
- ldr r0, _0800CB8C @ =c2_mystery_gift
- bl SetMainCallback2
- bl sub_812B478
- bl FreeAllWindowBuffers
- adds r0, r6, 0
- bl DestroyTask
-_0800CB84:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CB8C: .4byte c2_mystery_gift
- thumb_func_end sub_800CA94
-
- thumb_func_start sub_800CB90
-sub_800CB90: @ 800CB90
- push {r4,r5,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _0800CBB4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r0, 0x1A
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _0800CC0C
- cmp r1, 0x1
- bgt _0800CBB8
- cmp r1, 0
- beq _0800CBC2
- b _0800CC58
- .align 2, 0
-_0800CBB4: .4byte gTasks
-_0800CBB8:
- cmp r1, 0x2
- beq _0800CC1C
- cmp r1, 0x3
- beq _0800CC34
- b _0800CC58
-_0800CBC2:
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r1, 0x1C
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _0800CBEC
- ldr r0, _0800CBE8 @ =gUnknown_8415AA4
- bl sub_800CDF8
- b _0800CBF2
- .align 2, 0
-_0800CBE8: .4byte gUnknown_8415AA4
-_0800CBEC:
- ldr r0, _0800CC04 @ =gUnknown_8415ACB
- bl sub_800CDF8
-_0800CBF2:
- ldr r0, _0800CC08 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x1A]
- adds r0, 0x1
- strh r0, [r1, 0x1A]
- b _0800CC58
- .align 2, 0
-_0800CC04: .4byte gUnknown_8415ACB
-_0800CC08: .4byte gTasks
-_0800CC0C:
- ldr r0, _0800CC18 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- b _0800CC28
- .align 2, 0
-_0800CC18: .4byte gPaletteFade
-_0800CC1C:
- bl RunTextPrinters
- movs r0, 0x4
- bl IsTextPrinterActive
- lsls r0, 16
-_0800CC28:
- cmp r0, 0
- bne _0800CC58
- ldrh r0, [r4, 0x1A]
- adds r0, 0x1
- strh r0, [r4, 0x1A]
- b _0800CC58
-_0800CC34:
- ldr r0, _0800CC60 @ =gMain
- ldrh r0, [r0, 0x2E]
- ands r1, r0
- cmp r1, 0
- beq _0800CC58
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0800CC64 @ =sub_800CC68
- str r0, [r4]
-_0800CC58:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CC60: .4byte gMain
-_0800CC64: .4byte sub_800CC68
- thumb_func_end sub_800CB90
-
- thumb_func_start sub_800CC68
-sub_800CC68: @ 800CC68
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0800CC8C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0800CC86
- ldr r0, _0800CC90 @ =CB2_InitTitleScreen
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_0800CC86:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CC8C: .4byte gPaletteFade
-_0800CC90: .4byte CB2_InitTitleScreen
- thumb_func_end sub_800CC68
-
- thumb_func_start sub_800CC94
-sub_800CC94: @ 800CC94
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r1, _0800CCB8 @ =0x000012de
- movs r0, 0x40
- bl SetGpuReg
- cmp r4, 0
- beq _0800CCB2
- cmp r4, 0
- blt _0800CCB2
- cmp r4, 0x2
- ble _0800CCBC
-_0800CCB2:
- movs r2, 0
- movs r0, 0x20
- b _0800CCDC
- .align 2, 0
-_0800CCB8: .4byte 0x000012de
-_0800CCBC:
- cmp r5, 0x1
- beq _0800CCCE
- cmp r5, 0x1
- ble _0800CCC8
- cmp r5, 0x2
- beq _0800CCD6
-_0800CCC8:
- movs r2, 0
- movs r0, 0x60
- b _0800CCDC
-_0800CCCE:
- movs r2, 0xC0
- lsls r2, 7
- movs r0, 0x80
- b _0800CCDC
-_0800CCD6:
- movs r2, 0x80
- lsls r2, 8
- movs r0, 0xA0
-_0800CCDC:
- movs r3, 0x80
- lsls r3, 2
- adds r1, r3, 0
- adds r1, r2, r1
- subs r0, 0x2
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x44
- bl SetGpuReg
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_800CC94
-
- thumb_func_start sub_800CCF8
-sub_800CCF8: @ 800CCF8
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0800CD38 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r5, 0x1
- ands r5, r1
- adds r3, r0, 0
- cmp r5, 0
- beq _0800CD44
- movs r0, 0x5
- bl PlaySE
- bl IsWirelessAdapterConnected
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0800CD3C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0800CD40 @ =sub_800CA94
- str r1, [r0]
- b _0800CDEC
- .align 2, 0
-_0800CD38: .4byte gMain
-_0800CD3C: .4byte gTasks
-_0800CD40: .4byte sub_800CA94
-_0800CD44:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0800CD8C
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- str r5, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- movs r0, 0x40
- movs r1, 0xF0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0xA0
- bl SetGpuReg
- ldr r1, _0800CD84 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0800CD88 @ =sub_800CC68
- str r1, [r0]
- b _0800CDEC
- .align 2, 0
-_0800CD84: .4byte gTasks
-_0800CD88: .4byte sub_800CC68
-_0800CD8C:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0800CDB4
- ldr r0, _0800CDB0 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xA]
- movs r5, 0xA
- ldrsh r0, [r1, r5]
- cmp r0, 0
- ble _0800CDB4
- subs r0, r2, 0x1
- strh r0, [r1, 0xA]
- movs r0, 0x1
- b _0800CDEE
- .align 2, 0
-_0800CDB0: .4byte gTasks
-_0800CDB4:
- ldrh r1, [r3, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0800CDEC
- ldr r1, _0800CDE4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r3, r0, r1
- movs r0, 0xA
- ldrsh r2, [r3, r0]
- ldr r1, _0800CDE8 @ =gUnknown_8234694
- movs r4, 0x8
- ldrsh r0, [r3, r4]
- adds r0, r1
- ldrb r0, [r0]
- cmp r2, r0
- bge _0800CDEC
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- movs r0, 0x1
- b _0800CDEE
- .align 2, 0
-_0800CDE4: .4byte gTasks
-_0800CDE8: .4byte gUnknown_8234694
-_0800CDEC:
- movs r0, 0
-_0800CDEE:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_800CCF8
-
- thumb_func_start sub_800CDF8
-sub_800CDF8: @ 800CDF8
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- movs r0, 0x4
- movs r1, 0xAA
- bl FillWindowPixelBuffer
- ldr r0, _0800CE48 @ =gUnknown_8234638
- bl sub_800D0B4
- ldr r0, _0800CE4C @ =gUnknown_8234688
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x4
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl AddTextPrinterParameterized3
- movs r0, 0x4
- bl PutWindowTilemap
- movs r0, 0x4
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r1, _0800CE50 @ =0x000013dd
- movs r0, 0x40
- bl SetGpuReg
- ldr r1, _0800CE54 @ =0x0000739d
- movs r0, 0x44
- bl SetGpuReg
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800CE48: .4byte gUnknown_8234638
-_0800CE4C: .4byte gUnknown_8234688
-_0800CE50: .4byte 0x000013dd
-_0800CE54: .4byte 0x0000739d
- thumb_func_end sub_800CDF8
-
- thumb_func_start sub_800CE58
-sub_800CE58: @ 800CE58
- push {lr}
- bl sub_800CE70
- bl sub_800CF3C
- bl sub_800CED4
- bl sub_800CFC4
- pop {r0}
- bx r0
- thumb_func_end sub_800CE58
-
- thumb_func_start sub_800CE70
-sub_800CE70: @ 800CE70
- push {lr}
- sub sp, 0x14
- ldr r0, _0800CEC8 @ =gUnknown_823468B
- str r0, [sp]
- movs r0, 0x1
- negs r0, r0
- str r0, [sp, 0x4]
- ldr r0, _0800CECC @ =gUnknown_841B6D5
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0x2
- movs r3, 0x12
- bl AddTextPrinterParameterized3
- add r1, sp, 0xC
- movs r2, 0
- ldr r0, _0800CED0 @ =gSaveBlock2Ptr
- ldr r3, [r0]
-_0800CE96:
- adds r0, r3, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, 0x1
- adds r2, 0x1
- cmp r2, 0x6
- ble _0800CE96
- movs r0, 0xFF
- strb r0, [r1]
- ldr r0, _0800CEC8 @ =gUnknown_823468B
- str r0, [sp]
- movs r0, 0x1
- negs r0, r0
- str r0, [sp, 0x4]
- add r0, sp, 0xC
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0x3E
- movs r3, 0x12
- bl AddTextPrinterParameterized3
- add sp, 0x14
- pop {r0}
- bx r0
- .align 2, 0
-_0800CEC8: .4byte gUnknown_823468B
-_0800CECC: .4byte gUnknown_841B6D5
-_0800CED0: .4byte gSaveBlock2Ptr
- thumb_func_end sub_800CE70
-
thumb_func_start sub_800CED4
sub_800CED4: @ 800CED4
push {r4-r6,lr}
@@ -892,7 +14,7 @@ sub_800CED4: @ 800CED4
movs r5, 0x1
negs r5, r5
str r5, [sp, 0x4]
- ldr r0, _0800CF34 @ =gUnknown_841B6DC
+ ldr r0, _0800CF34 @ =gText_Time
str r0, [sp, 0x8]
movs r0, 0x1
movs r1, 0x2
@@ -929,7 +51,7 @@ sub_800CED4: @ 800CED4
bx r0
.align 2, 0
_0800CF30: .4byte gUnknown_823468B
-_0800CF34: .4byte gUnknown_841B6DC
+_0800CF34: .4byte gText_Time
_0800CF38: .4byte gSaveBlock2Ptr
thumb_func_end sub_800CED4
@@ -962,7 +84,7 @@ _0800CF6A:
movs r4, 0x1
negs r4, r4
str r4, [sp, 0x4]
- ldr r0, _0800CFBC @ =gUnknown_841B6E3
+ ldr r0, _0800CFBC @ =gText_Pokedex
str r0, [sp, 0x8]
movs r0, 0x1
movs r1, 0x2
@@ -992,7 +114,7 @@ _0800CFAE:
bx r0
.align 2, 0
_0800CFB8: .4byte gUnknown_823468B
-_0800CFBC: .4byte gUnknown_841B6E3
+_0800CFBC: .4byte gText_Pokedex
_0800CFC0: .4byte gUnknown_841B6EB
thumb_func_end sub_800CF3C
diff --git a/data/data.s b/data/data.s
index da50d9086..1757ea056 100644
--- a/data/data.s
+++ b/data/data.s
@@ -42,14 +42,16 @@ gUnknown_8234688:: @ 8234688
.incbin "baserom.gba", 0x234688, 0x3
gUnknown_823468B:: @ 823468B
- .incbin "baserom.gba", 0x23468B, 0x5
+ .incbin "baserom.gba", 0x23468B, 0x3
+ .align 2
gUnknown_8234690:: @ 8234690
.incbin "baserom.gba", 0x234690, 0x4
gUnknown_8234694:: @ 8234694
.incbin "baserom.gba", 0x234694, 0x4
+ .align 2
gUnknown_8234698:: @ 8234698
.incbin "baserom.gba", 0x234698, 0x20
diff --git a/data/strings.s b/data/strings.s
index 7af3a57bc..eccd54800 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -48,25 +48,25 @@ gText_EggNickname:: @ 8415A62
gText_Pokemon:: @ 8415A66
.string "POKéMON$"
-gUnknown_8415A6E:: @ 8415A6E
+gText_NewGame:: @ 8415A6E
.string "NEW GAME$"
-gUnknown_8415A77:: @ 8415A77
+gText_Continue:: @ 8415A77
.string "CONTINUE$"
-gUnknown_8415A80:: @ 0x8415A80
+gTextJP_Options:: @ 0x8415A80
.string "せっていを かえる$"
-gUnknown_8415A8A:: @ 0x8415A8A
+gUnusedText_MysteryGift:: @ 0x8415A8A
.string "MYSTERY GIFT$"
-gUnknown_8415A97:: @ 8415A97
+gText_MysteryGift:: @ 8415A97
.string "MYSTERY GIFT$"
-gUnknown_8415AA4:: @ 8415AA4
+gText_WirelessAdapterIsNotConnected:: @ 8415AA4
.string "The Wireless Adapter is not\nconnected.$"
-gUnknown_8415ACB:: @ 8415ACB
+gText_MysteryGiftCantBeUsedWhileWirelessAdapterIsAttached:: @ 8415ACB
.string "MYSTERY GIFT can't be used while\nthe Wireless Adapter is attached.$"
gUnknown_8415B0E:: @ 0x8415B0E
@@ -3037,16 +3037,16 @@ gUnknown_841B69E:: @ 841B69E
gUnknown_841B6B9:: @ 841B6B9
.string "Clearing data‥\nPlease wait.$"
-gUnknown_841B6D5:: @ 841B6D5
+gText_Player:: @ 841B6D5
.string "PLAYER$"
-gUnknown_841B6DC:: @ 841B6DC
+gText_Time:: @ 841B6DC
.string "TIME$"
-gUnknown_841B6E1:: @ 0x841B6E1
+gText_Colon:: @ 0x841B6E1
.string ":$"
-gUnknown_841B6E3:: @ 841B6E3
+gText_Pokedex:: @ 841B6E3
.string "POKéDEX$"
gUnknown_841B6EB:: @ 841B6EB
@@ -4199,7 +4199,7 @@ gText_WonderCardThrownAway:: @ 841ED7B
gText_WonderNewsThrownAway:: @ 841ED9C
.string "The WONDER NEWS was thrown away.$"
-gText_MysteryGift:: @ 841EDBD
+gText_MysteryGift2:: @ 841EDBD
.string "MYSTERY GIFT$"
gText_PickOKCancel:: @ 841EDCA
diff --git a/include/link.h b/include/link.h
index 51f103745..7c4b871de 100644
--- a/include/link.h
+++ b/include/link.h
@@ -256,5 +256,6 @@ void sub_8009FE8(void);
void ClearLinkCallback_2(void);
void sub_80FA42C(void);
void sub_800B284(struct LinkPlayer * linkPlayer);
+bool8 IsWirelessAdapterConnected(void);
#endif // GUARD_LINK_H
diff --git a/include/mystery_gift_menu.h b/include/mystery_gift_menu.h
index c7b047f56..6fed52119 100644
--- a/include/mystery_gift_menu.h
+++ b/include/mystery_gift_menu.h
@@ -5,5 +5,6 @@ extern bool8 gGiftIsFromEReader;
void MainCB_FreeAllBuffersAndReturnToInitTitleScreen(void);
void PrintMysteryGiftOrEReaderTopMenu(bool8, bool32);
+void c2_mystery_gift(void);
#endif //GUARD_MYSTERY_GIFT_MENU_H
diff --git a/include/quest_log.h b/include/quest_log.h
index 7e86e7c2f..8a2816c74 100644
--- a/include/quest_log.h
+++ b/include/quest_log.h
@@ -35,6 +35,7 @@ void MapNamePopupWindowIdSetDummy(void);
void sub_8111CF0(void);
void sub_811089C(void);
void sub_8113044(void);
+void TrySetUpQuestLogScenes_ElseContinueFromSave(u8 taskId);
extern u8 gUnknown_203ADFA;
diff --git a/include/strings.h b/include/strings.h
index 2dbe3919b..5a746fb6a 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -340,5 +340,90 @@ extern const u8 gText_ABtnRegistrationCounter[];
extern const u8 gText_SaveFileCorruptedPrevWillBeLoaded[];
extern const u8 gText_SaveFileHasBeenDeleted[];
extern const u8 gText_1MSubCircuitBoardNotInstalled[];
+extern const u8 gText_NewGame[];
+extern const u8 gText_Continue[];
+extern const u8 gText_MysteryGift[];
+extern const u8 gText_WirelessAdapterIsNotConnected[];
+extern const u8 gText_WirelessAdapterIsNotConnected[];
+extern const u8 gText_WirelessAdapterIsNotConnected[];
+extern const u8 gText_WirelessAdapterIsNotConnected[];
+extern const u8 gText_WirelessAdapterIsNotConnected[];
+extern const u8 gText_WirelessAdapterIsNotConnected[];
+extern const u8 gText_WirelessAdapterIsNotConnected[];
+extern const u8 gText_WirelessAdapterIsNotConnected[];
+extern const u8 gText_WirelessAdapterIsNotConnected[];
+extern const u8 gText_MysteryGiftCantBeUsedWhileWirelessAdapterIsAttached[];
+extern const u8 gText_Player[];
+extern const u8 gText_Time[];
+extern const u8 gText_Colon[];
+extern const u8 gText_Pokedex[];
+extern const u8 gUnknown_841B6EB[];
+extern const u8 gUnknown_841B6EC[];
+extern const u8 gUnknown_841B6F3[];
+extern const u8 gUnknown_841B6F4[];
+
+// mystery_gift_menu
+extern const u8 gText_PickOKExit[];
+extern const u8 gText_PickOKCancel[];
+extern const u8 gText_MysteryGift2[];
+extern const u8 gJPText_MysteryGift[];
+extern const u8 gJPText_DecideStop[];
+extern const u8 gText_WhatToDoWithCards[];
+extern const u8 gText_WhatToDoWithNews[];
+extern const u8 gText_OkayToDiscardNews[];
+extern const u8 gText_IfThrowAwayCardEventWontHappen[];
+extern const u8 gText_WonderCardThrownAway[];
+extern const u8 gText_WonderNewsThrownAway[];
+extern const u8 gText_DataWillBeSaved[];
+extern const u8 gText_SaveCompletedPressA[];
+extern const u8 gText_WonderCards[];
+extern const u8 gText_WonderNews[];
+extern const u8 gText_Exit3[];
+extern const u8 gText_WirelessCommunication[];
+extern const u8 gText_Friend2[];
+extern const u8 gFameCheckerText_Cancel[];
+extern const u8 gText_Receive[];
+extern const u8 gText_Send[];
+extern const u8 gText_Toss[];
+extern const u8 gText_VarietyOfEventsImportedWireless[];
+extern const u8 gText_WonderCardsInPossession[];
+extern const u8 gText_ReadNewsThatArrived[];
+extern const u8 gText_ReturnToTitle[];
+extern const u8 gText_NothingSentOver[];
+extern const u8 gText_RecordUploadedViaWireless[];
+extern const u8 gText_WonderCardReceived[];
+extern const u8 gText_WonderCardReceivedFrom[];
+extern const u8 gText_WonderNewsReceived[];
+extern const u8 gText_WonderNewsReceivedFrom[];
+extern const u8 gText_NewStampReceived[];
+extern const u8 gText_AlreadyHadCard[];
+extern const u8 gText_AlreadyHadStamp[];
+extern const u8 gText_AlreadyHadNews[];
+extern const u8 gText_NoMoreRoomForStamps[];
+extern const u8 gText_CommunicationCanceled[];
+extern const u8 gText_CantAcceptCardFromTrainer[];
+extern const u8 gText_CantAcceptNewsFromTrainer[];
+extern const u8 gText_CommunicationError[];
+extern const u8 gText_NewTrainerReceived[];
+extern const u8 gText_WonderCardSentTo[];
+extern const u8 gText_WonderNewsSentTo[];
+extern const u8 gText_StampSentTo[];
+extern const u8 gText_OtherTrainerHasCard[];
+extern const u8 gText_OtherTrainerHasStamp[];
+extern const u8 gText_OtherTrainerHasNews[];
+extern const u8 gText_OtherTrainerCanceled[];
+extern const u8 gText_GiftSentTo[];
+extern const u8 gText_CantSendGiftToTrainer[];
+extern const u8 gText_DontHaveCardNewOneInput[];
+extern const u8 gText_DontHaveNewsNewOneInput[];
+extern const u8 gText_WhereShouldCardBeAccessed[];
+extern const u8 gText_WhereShouldNewsBeAccessed[];
+extern const u8 gText_Communicating[];
+extern const u8 gText_ThrowAwayWonderCard[];
+extern const u8 gText_HaventReceivedCardsGift[];
+extern const u8 gText_CommunicationCompleted[];
+extern const u8 gText_HaventReceivedGiftOkayToDiscard[];
+extern const u8 gText_SendingWonderCard[];
+extern const u8 gText_SendingWonderNews[];
#endif //GUARD_STRINGS_H
diff --git a/src/main_menu.c b/src/main_menu.c
index dfc4fb808..7be99ce2c 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -3,12 +3,23 @@
#include "gpu_regs.h"
#include "scanline_effect.h"
#include "bg.h"
+#include "dma3.h"
#include "task.h"
#include "text.h"
#include "save.h"
#include "event_data.h"
#include "window.h"
+#include "menu.h"
+#include "link.h"
+#include "oak_speech.h"
+#include "overworld.h"
+#include "quest_log.h"
+#include "mystery_gift_menu.h"
#include "strings.h"
+#include "sound.h"
+#include "title_screen.h"
+#include "help_system.h"
+#include "constants/songs.h"
bool32 sub_800C318(u8 a0);
void sub_800C4D0(u8 taskId);
@@ -17,16 +28,32 @@ void sub_800C688(u8 taskId);
void sub_800C704(u8 taskId);
void sub_800C780(u8 taskId);
void sub_800C7A0(u8 taskId);
+void sub_800C9CC(u8 taskId);
+void sub_800CA28(u8 taskId);
+void sub_800CA54(u8 taskId);
void sub_800CA94(u8 taskId);
+void sub_800CB90(u8 taskId);
+void sub_800CC68(u8 taskId);
+void sub_800CC94(u8 menuType, u8 cursorPos);
+bool8 sub_800CCF8(u8 taskId);
void sub_800CDF8(const u8 *str);
+void sub_800CE58(void);
+void sub_800CE70(void);
+void sub_800CED4(void);
+void sub_800CF3C(void);
+void sub_800CFC4(void);
void sub_800D044(u8 a0);
void sub_800D094(u8 a0);
+void sub_800D0B4(const struct WindowTemplate * template);
void sub_800D1E8(const struct WindowTemplate * template);
extern const struct WindowTemplate gUnknown_8234618[];
extern const u16 gUnknown_8234648[];
extern const u16 gUnknown_8234668[];
+extern const u8 gUnknown_8234688[];
+extern const u8 gUnknown_823468B[];
extern const struct BgTemplate gUnknown_8234690[1];
+extern const u8 gUnknown_8234694[];
void sub_800C2D4(void)
{
@@ -215,3 +242,304 @@ void sub_800C780(u8 taskId)
sub_800C7A0(taskId);
}
}
+
+void sub_800C7A0(u8 taskId)
+{
+ u16 pal;
+ SetGpuReg(REG_OFFSET_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WININ, 0x0001);
+ SetGpuReg(REG_OFFSET_WINOUT, 0x0021);
+ SetGpuReg(REG_OFFSET_BLDCNT,
+ BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ |
+ BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0));
+ SetGpuReg(REG_OFFSET_BLDY, 7);
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ pal = RGB(4, 16, 31);
+ else
+ pal = RGB(31, 3, 21);
+ LoadPalette(&pal, 0xF1, 2);
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ default:
+ FillWindowPixelBuffer(0, PIXEL_FILL(10));
+ AddTextPrinterParameterized3(0, 2, 2, 2, gUnknown_8234688, -1, gText_NewGame);
+ sub_800D0B4(&gUnknown_8234618[0]);
+ PutWindowTilemap(0);
+ CopyWindowToVram(0, 3);
+ break;
+ case 1:
+ FillWindowPixelBuffer(1, PIXEL_FILL(10));
+ FillWindowPixelBuffer(2, PIXEL_FILL(10));
+ AddTextPrinterParameterized3(1, 2, 2, 2, gUnknown_8234688, -1, gText_Continue);
+ AddTextPrinterParameterized3(2, 2, 2, 2, gUnknown_8234688, -1, gText_NewGame);
+ sub_800CE58();
+ sub_800D0B4(&gUnknown_8234618[1]);
+ sub_800D0B4(&gUnknown_8234618[2]);
+ PutWindowTilemap(1);
+ PutWindowTilemap(2);
+ CopyWindowToVram(1, 2);
+ CopyWindowToVram(2, 3);
+ break;
+ case 2:
+ FillWindowPixelBuffer(1, PIXEL_FILL(10));
+ FillWindowPixelBuffer(2, PIXEL_FILL(10));
+ FillWindowPixelBuffer(3, PIXEL_FILL(10));
+ AddTextPrinterParameterized3(1, 2, 2, 2, gUnknown_8234688, -1, gText_Continue);
+ AddTextPrinterParameterized3(2, 2, 2, 2, gUnknown_8234688, -1, gText_NewGame);
+ gTasks[taskId].data[10] = 1;
+ AddTextPrinterParameterized3(3, 2, 2, 2, gUnknown_8234688, -1, gText_MysteryGift);
+ sub_800CE58();
+ sub_800D0B4(&gUnknown_8234618[1]);
+ sub_800D0B4(&gUnknown_8234618[2]);
+ sub_800D0B4(&gUnknown_8234618[3]);
+ PutWindowTilemap(1);
+ PutWindowTilemap(2);
+ PutWindowTilemap(3);
+ CopyWindowToVram(1, 2);
+ CopyWindowToVram(2, 2);
+ CopyWindowToVram(3, 3);
+ break;
+ }
+ gTasks[taskId].func = sub_800C9CC;
+}
+
+void sub_800C9CC(u8 taskId)
+{
+ if (CheckForSpaceForDma3Request(-1) != -1)
+ {
+ gTasks[taskId].func = sub_800CA28;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0xFFFF);
+ ShowBg(0);
+ SetVBlankCallback(sub_800C2EC);
+ }
+}
+
+void sub_800CA28(u8 taskId)
+{
+ sub_800CC94(gTasks[taskId].data[0], gTasks[taskId].data[1]);
+ gTasks[taskId].func = sub_800CA54;
+}
+
+void sub_800CA54(u8 taskId)
+{
+ if (!gPaletteFade.active && sub_800CCF8(taskId))
+ {
+ gTasks[taskId].func = sub_800CA28;
+ }
+}
+
+void sub_800CA94(u8 taskId)
+{
+ s32 r0;
+ if (!gPaletteFade.active)
+ {
+ switch (gTasks[taskId].data[0])
+ {
+ default:
+ case 0:
+ r0 = 0;
+ break;
+ case 1:
+ switch (gTasks[taskId].data[1])
+ {
+ default:
+ case 0:
+ r0 = 1;
+ break;
+ case 1:
+ r0 = 0;
+ break;
+ }
+ break;
+ case 2:
+ switch (gTasks[taskId].data[1])
+ {
+ default:
+ case 0:
+ r0 = 1;
+ break;
+ case 1:
+ r0 = 0;
+ break;
+ case 2:
+ if (!IsWirelessAdapterConnected())
+ {
+ sub_800D094(0);
+ gTasks[taskId].func = sub_800CB90;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ return;
+ }
+ else
+ {
+ r0 = 2;
+ }
+ break;
+ }
+ break;
+ }
+ switch (r0)
+ {
+ default:
+ case 0:
+ gUnknown_2031DE0 = 0;
+ FreeAllWindowBuffers();
+ DestroyTask(taskId);
+ StartNewGameScene();
+ break;
+ case 1:
+ gPlttBufferUnfaded[0] = RGB_BLACK;
+ gPlttBufferFaded[0] = RGB_BLACK;
+ gUnknown_2031DE0 = 0;
+ FreeAllWindowBuffers();
+ TrySetUpQuestLogScenes_ElseContinueFromSave(taskId);
+ break;
+ case 2:
+ SetMainCallback2(c2_mystery_gift);
+ sub_812B478();
+ FreeAllWindowBuffers();
+ DestroyTask(taskId);
+ break;
+ }
+ }
+}
+
+void sub_800CB90(u8 taskId)
+{
+ switch (gTasks[taskId].data[9])
+ {
+ case 0:
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ if (gTasks[taskId].data[10] == 1)
+ sub_800CDF8(gText_WirelessAdapterIsNotConnected);
+ else
+ sub_800CDF8(gText_MysteryGiftCantBeUsedWhileWirelessAdapterIsAttached);
+ gTasks[taskId].data[9]++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ gTasks[taskId].data[9]++;
+ break;
+ case 2:
+ RunTextPrinters();
+ if (!IsTextPrinterActive(4))
+ gTasks[taskId].data[9]++;
+ break;
+ case 3:
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gTasks[taskId].func = sub_800CC68;
+ }
+ break;
+ }
+}
+
+void sub_800CC68(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(CB2_InitTitleScreen);
+ DestroyTask(taskId);
+ }
+}
+
+void sub_800CC94(u8 menuType, u8 cursorPos)
+{
+ u16 win0v1, win0v2;
+ SetGpuReg(REG_OFFSET_WIN0H, 0x12DE);
+ switch (menuType)
+ {
+ default:
+ case 0:
+ win0v1 = 0x00;
+ win0v2 = 0x20;
+ break;
+ case 1:
+ case 2:
+ switch (cursorPos)
+ {
+ default:
+ case 0:
+ win0v1 = 0x00;
+ win0v2 = 0x60;
+ break;
+ case 1:
+ win0v1 = 0x60 << 8;
+ win0v2 = 0x80;
+ break;
+ case 2:
+ win0v1 = 0x80 << 8;
+ win0v2 = 0xA0;
+ break;
+ }
+ break;
+ }
+ SetGpuReg(REG_OFFSET_WIN0V, (win0v1 + (2 << 8)) | (win0v2 - 2));
+}
+
+bool8 sub_800CCF8(u8 taskId)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ IsWirelessAdapterConnected(); // called for its side effects only
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gTasks[taskId].func = sub_800CA94;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0xA0);
+ gTasks[taskId].func = sub_800CC68;
+ }
+ else if (JOY_NEW(DPAD_UP) && gTasks[taskId].data[1] > 0)
+ {
+ gTasks[taskId].data[1]--;
+ return TRUE;
+ }
+ else if (JOY_NEW(DPAD_DOWN) && gTasks[taskId].data[1] < gUnknown_8234694[gTasks[taskId].data[0]])
+ {
+ gTasks[taskId].data[1]++;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void sub_800CDF8(const u8 *str)
+{
+ FillWindowPixelBuffer(4, PIXEL_FILL(10));
+ sub_800D0B4(&gUnknown_8234618[4]);
+ AddTextPrinterParameterized3(4, 2, 0, 2, gUnknown_8234688, 2, str);
+ PutWindowTilemap(4);
+ CopyWindowToVram(4, 2);
+ SetGpuReg(REG_OFFSET_WIN0H, 0x13DD);
+ SetGpuReg(REG_OFFSET_WIN0V, 0x739D);
+}
+
+void sub_800CE58(void)
+{
+ sub_800CE70();
+ sub_800CF3C();
+ sub_800CED4();
+ sub_800CFC4();
+}
+
+void sub_800CE70(void)
+{
+ s32 i;
+ u8 name[OT_NAME_LENGTH + 1];
+ u8 *ptr;
+ AddTextPrinterParameterized3(1, 2, 2, 18, gUnknown_823468B, -1, gText_Player);
+ ptr = name;
+ for (i = 0; i < OT_NAME_LENGTH; i++)
+ *ptr++ = gSaveBlock2Ptr->playerName[i];
+ *ptr = EOS;
+ AddTextPrinterParameterized3(1, 2, 62, 18, gUnknown_823468B, -1, name);
+}
diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c
index dbc685602..39efed6eb 100644
--- a/src/mystery_gift_menu.c
+++ b/src/mystery_gift_menu.c
@@ -24,6 +24,7 @@
#include "mevent_server.h"
#include "menews_jisan.h"
#include "help_system.h"
+#include "strings.h"
#include "constants/songs.h"
EWRAM_DATA u8 sDownArrowCounterAndYCoordIdx[8] = {};
@@ -33,69 +34,6 @@ void task_add_00_mystery_gift(void);
void task00_mystery_gift(u8 taskId);
void task_add_00_ereader(void);
-extern const u8 gText_PickOKExit[];
-extern const u8 gText_PickOKCancel[];
-extern const u8 gText_MysteryGift[];
-extern const u8 gJPText_MysteryGift[];
-extern const u8 gJPText_DecideStop[];
-extern const u8 gText_WhatToDoWithCards[];
-extern const u8 gText_WhatToDoWithNews[];
-extern const u8 gText_OkayToDiscardNews[];
-extern const u8 gText_IfThrowAwayCardEventWontHappen[];
-extern const u8 gText_WonderCardThrownAway[];
-extern const u8 gText_WonderNewsThrownAway[];
-extern const u8 gText_DataWillBeSaved[];
-extern const u8 gText_SaveCompletedPressA[];
-extern const u8 gText_WonderCards[];
-extern const u8 gText_WonderNews[];
-extern const u8 gText_Exit3[];
-extern const u8 gText_WirelessCommunication[];
-extern const u8 gText_Friend2[];
-extern const u8 gFameCheckerText_Cancel[];
-extern const u8 gText_Receive[];
-extern const u8 gText_Send[];
-extern const u8 gText_Toss[];
-extern const u8 gText_VarietyOfEventsImportedWireless[];
-extern const u8 gText_WonderCardsInPossession[];
-extern const u8 gText_ReadNewsThatArrived[];
-extern const u8 gText_ReturnToTitle[];
-extern const u8 gText_NothingSentOver[];
-extern const u8 gText_RecordUploadedViaWireless[];
-extern const u8 gText_WonderCardReceived[];
-extern const u8 gText_WonderCardReceivedFrom[];
-extern const u8 gText_WonderNewsReceived[];
-extern const u8 gText_WonderNewsReceivedFrom[];
-extern const u8 gText_NewStampReceived[];
-extern const u8 gText_AlreadyHadCard[];
-extern const u8 gText_AlreadyHadStamp[];
-extern const u8 gText_AlreadyHadNews[];
-extern const u8 gText_NoMoreRoomForStamps[];
-extern const u8 gText_CommunicationCanceled[];
-extern const u8 gText_CantAcceptCardFromTrainer[];
-extern const u8 gText_CantAcceptNewsFromTrainer[];
-extern const u8 gText_CommunicationError[];
-extern const u8 gText_NewTrainerReceived[];
-extern const u8 gText_WonderCardSentTo[];
-extern const u8 gText_WonderNewsSentTo[];
-extern const u8 gText_StampSentTo[];
-extern const u8 gText_OtherTrainerHasCard[];
-extern const u8 gText_OtherTrainerHasStamp[];
-extern const u8 gText_OtherTrainerHasNews[];
-extern const u8 gText_OtherTrainerCanceled[];
-extern const u8 gText_GiftSentTo[];
-extern const u8 gText_CantSendGiftToTrainer[];
-extern const u8 gText_DontHaveCardNewOneInput[];
-extern const u8 gText_DontHaveNewsNewOneInput[];
-extern const u8 gText_WhereShouldCardBeAccessed[];
-extern const u8 gText_WhereShouldNewsBeAccessed[];
-extern const u8 gText_Communicating[];
-extern const u8 gText_ThrowAwayWonderCard[];
-extern const u8 gText_HaventReceivedCardsGift[];
-extern const u8 gText_CommunicationCompleted[];
-extern const u8 gText_HaventReceivedGiftOkayToDiscard[];
-extern const u8 gText_SendingWonderCard[];
-extern const u8 gText_SendingWonderNews[];
-
const u16 gUnkTextboxBorderPal[] = INCBIN_U16("graphics/interface/unk_textbox_border.gbapal");
const u32 gUnkTextboxBorderGfx[] = INCBIN_U32("graphics/interface/unk_textbox_border.4bpp.lz");
@@ -538,7 +476,7 @@ void PrintMysteryGiftOrEReaderTopMenu(bool8 mg_or_ereader, bool32 usePickOkCance
if (!mg_or_ereader)
{
src = usePickOkCancel == TRUE ? gText_PickOKExit : gText_PickOKCancel;
- AddTextPrinterParameterized4(0, 2, 2, 2, 0, 0, sMG_Ereader_TextColor_1, 0, gText_MysteryGift);
+ AddTextPrinterParameterized4(0, 2, 2, 2, 0, 0, sMG_Ereader_TextColor_1, 0, gText_MysteryGift2);
width = 222 - GetStringWidth(0, src, 0);
AddTextPrinterParameterized4(0, 0, width, 2, 0, 0, sMG_Ereader_TextColor_1, 0, src);
}
diff --git a/src/quest_log.c b/src/quest_log.c
index 065b42cef..f98357b32 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -93,7 +93,7 @@ static struct UnkStruct_300201C * gUnknown_300201C;
static u16 gUnknown_3002020;
EWRAM_DATA u8 gUnknown_203ADF8 = 0;
-EWRAM_DATA u8 gUnknown_203ADF9 = 0;
+static EWRAM_DATA u8 sNumScenes = 0;
EWRAM_DATA u8 gUnknown_203ADFA = 0;
EWRAM_DATA u16 gUnknown_203ADFC = 0;
EWRAM_DATA u8 gUnknown_203ADFE[3] = {0};
@@ -840,19 +840,19 @@ bool8 sub_8110E68(struct UnkStruct_203AE98 * a0)
return TRUE;
}
-void sub_8110F14(u8 taskId)
+void TrySetUpQuestLogScenes_ElseContinueFromSave(u8 taskId)
{
u8 i;
sub_811381C();
- gUnknown_203ADF9 = 0;
+ sNumScenes = 0;
for (i = 0; i < 4; i++)
{
if (gSaveBlock1Ptr->questLog[i].unk_000)
- gUnknown_203ADF9++;
+ sNumScenes++;
}
- if (gUnknown_203ADF9 != 0)
+ if (sNumScenes != 0)
{
gUnknown_3005ECC = FALSE;
sub_8110F90(taskId);
@@ -1221,7 +1221,7 @@ void sub_8111914(void)
ScriptContext2_Enable();
if (++gUnknown_203ADF8 < 4 && gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_000)
{
- gUnknown_203ADF9--;
+ sNumScenes--;
sub_8111368();
}
else
@@ -1402,7 +1402,7 @@ bool8 sub_8111CD0(void)
void sub_8111CF0(void)
{
if (gUnknown_203ADFA == 2)
- sub_8111070(gUnknown_203ADF9);
+ sub_8111070(sNumScenes);
}
void sub_8111D10(void)