diff options
45 files changed, 1019 insertions, 2041 deletions
diff --git a/asm/battle_setup.s b/asm/battle_setup.s index c5b4510b7..5a9797056 100644 --- a/asm/battle_setup.s +++ b/asm/battle_setup.s @@ -28,7 +28,7 @@ _0807F644: bl FldEffPoison_IsActive cmp r0, 0 bne _0807F686 - bl sub_812B478 + bl HelpSystem_Disable ldrb r0, [r4, 0x2] bl BT_StartOnField ldrh r0, [r4] @@ -41,7 +41,7 @@ _0807F65E: lsrs r0, 24 cmp r0, 0x1 bne _0807F686 - bl sub_812B484 + bl HelpSystem_Enable bl CleanupOverworldWindowsAndTilemaps ldr r0, _0807F68C @ =sub_800FD9C bl SetMainCallback2 diff --git a/asm/dodrio_berry_picking.s b/asm/dodrio_berry_picking.s index 32b47791b..c9dd68e4b 100644 --- a/asm/dodrio_berry_picking.s +++ b/asm/dodrio_berry_picking.s @@ -8327,7 +8327,7 @@ sub_81546EC: @ 81546EC lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 - bl sub_8069788 + bl GetUserFrameGraphicsInfo ldr r1, [r0] movs r2, 0x90 lsls r2, 1 @@ -8335,7 +8335,7 @@ sub_81546EC: @ 81546EC movs r3, 0x1 bl LoadBgTiles adds r0, r4, 0 - bl sub_8069788 + bl GetUserFrameGraphicsInfo ldr r0, [r0, 0x4] movs r1, 0xA0 movs r2, 0x20 diff --git a/asm/event_data.s b/asm/event_data.s index 4c7c7c828..f4aa51496 100644 --- a/asm/event_data.s +++ b/asm/event_data.s @@ -248,8 +248,8 @@ sub_806E2AC: @ 806E2AC _0806E2B8: .4byte 0x00000839 thumb_func_end sub_806E2AC - thumb_func_start sub_806E2BC -sub_806E2BC: @ 806E2BC + thumb_func_start Flag_0x839_IsSet +Flag_0x839_IsSet: @ 806E2BC push {lr} ldr r0, _0806E2CC @ =0x00000839 bl FlagGet @@ -259,7 +259,7 @@ sub_806E2BC: @ 806E2BC bx r1 .align 2, 0 _0806E2CC: .4byte 0x00000839 - thumb_func_end sub_806E2BC + thumb_func_end Flag_0x839_IsSet thumb_func_start sub_806E2D0 sub_806E2D0: @ 806E2D0 diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index 1ffe9b0db..d8651a24c 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -388,7 +388,7 @@ EvolutionScene: @ 80CDDF4 ldr r0, _080CE0E0 @ =sub_80D0050 bl SetVBlankCallback bl m4aMPlayAllStop - bl sub_812B478 + bl HelpSystem_Disable ldr r0, _080CE0E4 @ =sub_80CE710 bl SetMainCallback2 add sp, 0x24 @@ -1852,7 +1852,7 @@ _080CEDB8: beq _080CEDC6 b _080CF528 _080CEDC6: - bl sub_812B484 + bl HelpSystem_Enable ldr r1, _080CEE20 @ =gTasks mov r2, r8 adds r0, r2, r7 diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s index 75475b667..ce675d88e 100644 --- a/asm/hall_of_fame.s +++ b/asm/hall_of_fame.s @@ -56,7 +56,7 @@ _080F1E04: .4byte _080F1E88 .4byte _080F1EC4 _080F1E18: - ldr r1, _080F1E40 @ =gUnknown_3005ECC + ldr r1, _080F1E40 @ =gHelpSystemEnabled movs r0, 0 strb r0, [r1] movs r0, 0 @@ -74,7 +74,7 @@ _080F1E18: strb r1, [r0] b _080F1EF0 .align 2, 0 -_080F1E40: .4byte gUnknown_3005ECC +_080F1E40: .4byte gHelpSystemEnabled _080F1E44: .4byte gUnknown_203AB3C _080F1E48: .4byte 0x00002008 _080F1E4C: .4byte gMain diff --git a/asm/main_menu.s b/asm/main_menu.s deleted file mode 100644 index 76c9f8838..000000000 --- a/asm/main_menu.s +++ /dev/null @@ -1,1853 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_800C2D4 -sub_800C2D4: @ 800C2D4 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_800C2D4 - - thumb_func_start sub_800C2EC -sub_800C2EC: @ 800C2EC - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_800C2EC - - thumb_func_start sub_800C300 -sub_800C300: @ 800C300 - push {lr} - movs r0, 0x1 - bl sub_800C318 - pop {r0} - bx r0 - thumb_func_end sub_800C300 - - thumb_func_start sub_800C30C -sub_800C30C: @ 800C30C - push {lr} - movs r0, 0x1 - bl sub_800C318 - pop {r0} - bx r0 - thumb_func_end sub_800C30C - - thumb_func_start sub_800C318 -sub_800C318: @ 800C318 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0xC - movs r1, 0 - bl SetGpuReg - movs r0, 0xA - movs r1, 0 - bl SetGpuReg - movs r0, 0x8 - movs r1, 0 - bl SetGpuReg - movs r0, 0x18 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1A - movs r1, 0 - bl SetGpuReg - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - movs r0, 0x16 - movs r1, 0 - bl SetGpuReg - movs r0, 0x10 - movs r1, 0 - bl SetGpuReg - movs r0, 0x12 - movs r1, 0 - bl SetGpuReg - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r1, _0800C4A0 @ =0x040000d4 - mov r0, sp - str r0, [r1] - movs r0, 0xC0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _0800C4A4 @ =0x8100c000 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r5, 0 - str r5, [sp, 0x4] - add r0, sp, 0x4 - str r0, [r1] - movs r0, 0xE0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _0800C4A8 @ =0x85000100 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - mov r0, sp - strh r5, [r0] - str r0, [r1] - ldr r0, _0800C4AC @ =0x05000002 - str r0, [r1, 0x4] - ldr r0, _0800C4B0 @ =0x810001ff - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - bl ScanlineEffect_Stop - bl ResetTasks - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetPaletteFade - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _0800C4B4 @ =gUnknown_8234690 - movs r0, 0 - movs r2, 0x1 - bl InitBgsFromTemplates - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - ldr r0, _0800C4B8 @ =gUnknown_8234618 - bl InitWindows - bl DeactivateAllTextPrinters - ldr r0, _0800C4BC @ =gUnknown_8234648 - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _0800C4C0 @ =gUnknown_8234668 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - movs r0, 0x44 - movs r1, 0 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - ldr r0, _0800C4C4 @ =sub_800C2D4 - bl SetMainCallback2 - movs r1, 0xC1 - lsls r1, 6 - movs r0, 0 - bl SetGpuReg - ldr r0, _0800C4C8 @ =sub_800C4D0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0800C4CC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r5, [r1, 0xA] - strh r4, [r1, 0x18] - movs r0, 0 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0800C4A0: .4byte 0x040000d4 -_0800C4A4: .4byte 0x8100c000 -_0800C4A8: .4byte 0x85000100 -_0800C4AC: .4byte 0x05000002 -_0800C4B0: .4byte 0x810001ff -_0800C4B4: .4byte gUnknown_8234690 -_0800C4B8: .4byte gUnknown_8234618 -_0800C4BC: .4byte gUnknown_8234648 -_0800C4C0: .4byte gUnknown_8234668 -_0800C4C4: .4byte sub_800C2D4 -_0800C4C8: .4byte sub_800C4D0 -_0800C4CC: .4byte gTasks - thumb_func_end sub_800C318 - - thumb_func_start sub_800C4D0 -sub_800C4D0: @ 800C4D0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0800C538 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - beq _0800C4E8 - b _0800C626 -_0800C4E8: - 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, _0800C53C @ =gSaveFileStatus - ldrh r4, [r0] - cmp r4, 0x2 - beq _0800C58C - cmp r4, 0x2 - bgt _0800C540 - cmp r4, 0 - beq _0800C5E8 - cmp r4, 0x1 - beq _0800C54A - b _0800C5E8 - .align 2, 0 -_0800C538: .4byte gPaletteFade -_0800C53C: .4byte gSaveFileStatus -_0800C540: - cmp r4, 0x4 - beq _0800C60C - cmp r4, 0xFF - beq _0800C5B0 - b _0800C5E8 -_0800C54A: - movs r0, 0 - bl sub_800D044 - bl sub_806E2BC - cmp r0, 0x1 - bne _0800C570 - ldr r2, _0800C56C @ =gTasks - lsls r3, r5, 2 - adds r0, r3, r5 - lsls r0, 3 - adds r0, r2 - movs r1, 0x2 - strh r1, [r0, 0x8] - adds r1, r2, 0 - adds r2, r3, 0 - b _0800C57E - .align 2, 0 -_0800C56C: .4byte gTasks -_0800C570: - ldr r0, _0800C588 @ =gTasks - lsls r2, r5, 2 - adds r1, r2, r5 - lsls r1, 3 - adds r1, r0 - strh r4, [r1, 0x8] - adds r1, r0, 0 -_0800C57E: - adds r0, r2, r5 - lsls r0, 3 - adds r0, r1 - b _0800C5FC - .align 2, 0 -_0800C588: .4byte gTasks -_0800C58C: - movs r0, 0 - bl sub_800D094 - ldr r0, _0800C5A8 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - strh r6, [r1, 0x8] - ldr r1, _0800C5AC @ =gUnknown_8415C42 - adds r0, r5, 0 - bl sub_800C634 - b _0800C626 - .align 2, 0 -_0800C5A8: .4byte gTasks -_0800C5AC: .4byte gUnknown_8415C42 -_0800C5B0: - movs r0, 0 - bl sub_800D094 - ldr r1, _0800C5DC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r6, 0x1 - strh r6, [r4, 0x8] - ldr r1, _0800C5E0 @ =gUnknown_8415BFF - adds r0, r5, 0 - bl sub_800C634 - bl sub_806E2BC - cmp r0, 0x1 - bne _0800C5E4 - movs r0, 0x2 - strh r0, [r4, 0x8] - b _0800C626 - .align 2, 0 -_0800C5DC: .4byte gTasks -_0800C5E0: .4byte gUnknown_8415BFF -_0800C5E4: - strh r6, [r4, 0x8] - b _0800C626 -_0800C5E8: - movs r0, 0 - bl sub_800D044 - ldr r1, _0800C604 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x8] -_0800C5FC: - ldr r1, _0800C608 @ =sub_800C704 - str r1, [r0] - b _0800C626 - .align 2, 0 -_0800C604: .4byte gTasks -_0800C608: .4byte sub_800C704 -_0800C60C: - movs r0, 0 - bl sub_800D094 - ldr r0, _0800C62C @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - strh r6, [r1, 0x8] - ldr r1, _0800C630 @ =gUnknown_8415C64 - adds r0, r5, 0 - bl sub_800C634 -_0800C626: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800C62C: .4byte gTasks -_0800C630: .4byte gUnknown_8415C64 - thumb_func_end sub_800C4D0 - - thumb_func_start sub_800C634 -sub_800C634: @ 800C634 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r0, r1, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_800CDF8 - ldr r1, _0800C678 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0800C67C @ =sub_800C688 - str r1, [r0] - movs r0, 0x1 - negs r0, r0 - ldr r1, _0800C680 @ =0x0000ffff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0 - bl ShowBg - ldr r0, _0800C684 @ =sub_800C2EC - bl SetVBlankCallback - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800C678: .4byte gTasks -_0800C67C: .4byte sub_800C688 -_0800C680: .4byte 0x0000ffff -_0800C684: .4byte sub_800C2EC - thumb_func_end sub_800C634 - - thumb_func_start sub_800C688 -sub_800C688: @ 800C688 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0800C6E0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0800C6F8 - bl RunTextPrinters - movs r0, 0x4 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _0800C6F8 - ldr r0, _0800C6E4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0800C6F8 - movs r0, 0x4 - bl ClearWindowTilemap - ldr r0, _0800C6E8 @ =gUnknown_8234638 - bl sub_800D1E8 - movs r0, 0 - bl sub_800D044 - ldr r1, _0800C6EC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r1 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _0800C6F4 - ldr r0, _0800C6F0 @ =sub_800C704 - b _0800C6F6 - .align 2, 0 -_0800C6E0: .4byte gPaletteFade -_0800C6E4: .4byte gMain -_0800C6E8: .4byte gUnknown_8234638 -_0800C6EC: .4byte gTasks -_0800C6F0: .4byte sub_800C704 -_0800C6F4: - ldr r0, _0800C700 @ =sub_800C7A0 -_0800C6F6: - str r0, [r1] -_0800C6F8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800C700: .4byte sub_800C7A0 - thumb_func_end sub_800C688 - - thumb_func_start sub_800C704 -sub_800C704: @ 800C704 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0800C764 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0800C774 - 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, _0800C768 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _0800C770 - ldr r0, _0800C76C @ =sub_800CA94 - b _0800C772 - .align 2, 0 -_0800C764: .4byte gPaletteFade -_0800C768: .4byte gTasks -_0800C76C: .4byte sub_800CA94 -_0800C770: - ldr r0, _0800C77C @ =sub_800C780 -_0800C772: - str r0, [r1] -_0800C774: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800C77C: .4byte sub_800C780 - thumb_func_end sub_800C704 - - thumb_func_start sub_800C780 -sub_800C780: @ 800C780 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _0800C79C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0800C798 - adds r0, r2, 0 - bl sub_800C7A0 -_0800C798: - pop {r0} - bx r0 - .align 2, 0 -_0800C79C: .4byte gPaletteFade - thumb_func_end sub_800C780 - - 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} - sub sp, 0x2C - ldr r6, _0800CF30 @ =gUnknown_823468B - str r6, [sp] - movs r5, 0x1 - negs r5, r5 - str r5, [sp, 0x4] - ldr r0, _0800CF34 @ =gUnknown_841B6DC - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0x2 - movs r3, 0x22 - bl AddTextPrinterParameterized3 - ldr r4, _0800CF38 @ =gSaveBlock2Ptr - ldr r0, [r4] - ldrh r1, [r0, 0xE] - add r0, sp, 0xC - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - movs r1, 0xF0 - strb r1, [r0] - adds r0, 0x1 - ldr r1, [r4] - ldrb r1, [r1, 0x10] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - str r6, [sp] - str r5, [sp, 0x4] - add r0, sp, 0xC - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0x3E - movs r3, 0x22 - bl AddTextPrinterParameterized3 - add sp, 0x2C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800CF30: .4byte gUnknown_823468B -_0800CF34: .4byte gUnknown_841B6DC -_0800CF38: .4byte gSaveBlock2Ptr - thumb_func_end sub_800CED4 - - thumb_func_start sub_800CF3C -sub_800CF3C: @ 800CF3C - push {r4-r6,lr} - sub sp, 0x2C - ldr r0, _0800CF60 @ =0x00000829 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0800CFAE - bl IsNationalPokedexEnabled - cmp r0, 0 - beq _0800CF64 - movs r0, 0x1 - bl GetNationalPokedexCount - b _0800CF6A - .align 2, 0 -_0800CF60: .4byte 0x00000829 -_0800CF64: - movs r0, 0x1 - bl GetKantoPokedexCount -_0800CF6A: - lsls r0, 16 - lsrs r6, r0, 16 - ldr r5, _0800CFB8 @ =gUnknown_823468B - str r5, [sp] - movs r4, 0x1 - negs r4, r4 - str r4, [sp, 0x4] - ldr r0, _0800CFBC @ =gUnknown_841B6E3 - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0x2 - movs r3, 0x32 - bl AddTextPrinterParameterized3 - add r0, sp, 0xC - adds r1, r6, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r1, _0800CFC0 @ =gUnknown_841B6EB - bl StringAppend - str r5, [sp] - str r4, [sp, 0x4] - add r0, sp, 0xC - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0x3E - movs r3, 0x32 - bl AddTextPrinterParameterized3 -_0800CFAE: - add sp, 0x2C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800CFB8: .4byte gUnknown_823468B -_0800CFBC: .4byte gUnknown_841B6E3 -_0800CFC0: .4byte gUnknown_841B6EB - thumb_func_end sub_800CF3C - - thumb_func_start sub_800CFC4 -sub_800CFC4: @ 800CFC4 - push {r4-r6,lr} - sub sp, 0x2C - movs r6, 0 - movs r4, 0x82 - lsls r4, 4 -_0800CFCE: - lsls r0, r4, 16 - lsrs r0, 16 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0800CFE2 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0800CFE2: - adds r4, 0x1 - ldr r0, _0800D034 @ =0x00000827 - cmp r4, r0 - bls _0800CFCE - ldr r5, _0800D038 @ =gUnknown_823468B - str r5, [sp] - movs r4, 0x1 - negs r4, r4 - str r4, [sp, 0x4] - ldr r0, _0800D03C @ =gUnknown_841B6EC - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0x2 - movs r3, 0x42 - bl AddTextPrinterParameterized3 - add r0, sp, 0xC - adds r1, r6, 0 - movs r2, 0x2 - movs r3, 0x1 - bl ConvertIntToDecimalStringN - ldr r1, _0800D040 @ =gUnknown_841B6F3 - bl StringAppend - str r5, [sp] - str r4, [sp, 0x4] - add r0, sp, 0xC - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0x3E - movs r3, 0x42 - bl AddTextPrinterParameterized3 - add sp, 0x2C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800D034: .4byte 0x00000827 -_0800D038: .4byte gUnknown_823468B -_0800D03C: .4byte gUnknown_841B6EC -_0800D040: .4byte gUnknown_841B6F3 - thumb_func_end sub_800CFC4 - - thumb_func_start sub_800D044 -sub_800D044: @ 800D044 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _0800D088 @ =gSaveBlock2Ptr - ldr r0, [r5] - ldrb r0, [r0, 0x14] - lsrs r0, 3 - bl sub_8069788 - ldr r1, [r0] - movs r2, 0x90 - lsls r2, 1 - ldr r3, _0800D08C @ =0x000001b1 - adds r0, r4, 0 - bl LoadBgTiles - ldr r0, [r5] - ldrb r0, [r0, 0x14] - lsrs r0, 3 - bl sub_8069788 - ldr r0, [r0, 0x4] - movs r1, 0x20 - movs r2, 0x20 - bl LoadPalette - ldr r0, _0800D090 @ =gUnknown_8234638 - bl sub_800D1E8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800D088: .4byte gSaveBlock2Ptr -_0800D08C: .4byte 0x000001b1 -_0800D090: .4byte gUnknown_8234638 - thumb_func_end sub_800D044 - - thumb_func_start sub_800D094 -sub_800D094: @ 800D094 - push {lr} - ldr r1, _0800D0AC @ =0x000001b1 - movs r0, 0 - movs r2, 0x20 - bl TextWindow_SetStdFrame0_WithPal - ldr r0, _0800D0B0 @ =gUnknown_8234638 - bl sub_800D1E8 - pop {r0} - bx r0 - .align 2, 0 -_0800D0AC: .4byte 0x000001b1 -_0800D0B0: .4byte gUnknown_8234638 - thumb_func_end sub_800D094 - - thumb_func_start sub_800D0B4 -sub_800D0B4: @ 800D0B4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - adds r5, r0, 0 - ldrb r0, [r5] - ldr r1, _0800D1D8 @ =0x000001b1 - ldrb r2, [r5, 0x1] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r5, 0x2] - subs r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - movs r6, 0x1 - str r6, [sp] - str r6, [sp, 0x4] - movs r4, 0x2 - mov r8, r4 - str r4, [sp, 0x8] - bl FillBgTilemapBufferRect - ldrb r0, [r5] - movs r1, 0xD9 - lsls r1, 1 - ldrb r2, [r5, 0x1] - ldrb r3, [r5, 0x2] - subs r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - ldrb r4, [r5, 0x3] - str r4, [sp] - ldrb r4, [r5, 0x4] - str r4, [sp, 0x4] - mov r4, r8 - str r4, [sp, 0x8] - bl FillBgTilemapBufferRect - ldrb r0, [r5] - ldr r1, _0800D1DC @ =0x000001b3 - ldrb r2, [r5, 0x3] - ldrb r3, [r5, 0x1] - adds r2, r3 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r5, 0x2] - subs r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - str r6, [sp] - str r6, [sp, 0x4] - str r4, [sp, 0x8] - bl FillBgTilemapBufferRect - ldrb r0, [r5] - movs r1, 0xDA - lsls r1, 1 - ldrb r2, [r5, 0x1] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r5, 0x2] - str r6, [sp] - ldrb r4, [r5, 0x4] - str r4, [sp, 0x4] - mov r4, r8 - str r4, [sp, 0x8] - bl FillBgTilemapBufferRect - ldrb r0, [r5] - movs r1, 0xDB - lsls r1, 1 - ldrb r2, [r5, 0x3] - ldrb r3, [r5, 0x1] - adds r2, r3 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r5, 0x2] - str r6, [sp] - ldrb r4, [r5, 0x4] - str r4, [sp, 0x4] - mov r4, r8 - str r4, [sp, 0x8] - bl FillBgTilemapBufferRect - ldrb r0, [r5] - ldr r1, _0800D1E0 @ =0x000001b7 - ldrb r2, [r5, 0x1] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r5, 0x4] - ldrb r4, [r5, 0x2] - adds r3, r4 - lsls r3, 24 - lsrs r3, 24 - str r6, [sp] - str r6, [sp, 0x4] - mov r4, r8 - str r4, [sp, 0x8] - bl FillBgTilemapBufferRect - ldrb r0, [r5] - movs r1, 0xDC - lsls r1, 1 - ldrb r2, [r5, 0x1] - ldrb r3, [r5, 0x4] - ldrb r4, [r5, 0x2] - adds r3, r4 - lsls r3, 24 - lsrs r3, 24 - ldrb r4, [r5, 0x3] - str r4, [sp] - str r6, [sp, 0x4] - mov r4, r8 - str r4, [sp, 0x8] - bl FillBgTilemapBufferRect - ldrb r0, [r5] - ldr r1, _0800D1E4 @ =0x000001b9 - ldrb r2, [r5, 0x3] - ldrb r3, [r5, 0x1] - adds r2, r3 - lsls r2, 24 - lsrs r2, 24 - ldrb r3, [r5, 0x4] - ldrb r4, [r5, 0x2] - adds r3, r4 - lsls r3, 24 - lsrs r3, 24 - str r6, [sp] - str r6, [sp, 0x4] - mov r4, r8 - str r4, [sp, 0x8] - bl FillBgTilemapBufferRect - ldrb r0, [r5] - bl CopyBgTilemapBufferToVram - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800D1D8: .4byte 0x000001b1 -_0800D1DC: .4byte 0x000001b3 -_0800D1E0: .4byte 0x000001b7 -_0800D1E4: .4byte 0x000001b9 - thumb_func_end sub_800D0B4 - - thumb_func_start sub_800D1E8 -sub_800D1E8: @ 800D1E8 - push {r4-r6,lr} - sub sp, 0xC - adds r6, r0, 0 - ldrb r0, [r6] - ldrb r1, [r6, 0x1] - subs r2, r1, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldrb r4, [r6, 0x2] - subs r3, r4, 0x1 - lsls r3, 24 - lsrs r3, 24 - ldrb r5, [r6, 0x3] - adds r1, r5 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp] - ldrb r1, [r6, 0x4] - adds r4, r1 - adds r4, 0x1 - lsls r4, 24 - lsrs r4, 24 - str r4, [sp, 0x4] - movs r1, 0x2 - str r1, [sp, 0x8] - movs r1, 0 - bl FillBgTilemapBufferRect - ldrb r0, [r6] - bl CopyBgTilemapBufferToVram - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_800D1E8 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/mon_markings.s b/asm/mon_markings.s index 568129eff..5408a70be 100644 --- a/asm/mon_markings.s +++ b/asm/mon_markings.s @@ -22,7 +22,7 @@ sub_80BE478: @ 80BE478 ldr r0, [r0] ldrb r0, [r0, 0x14] lsrs r0, 3 - bl sub_8069788 + bl GetUserFrameGraphicsInfo ldr r3, _080BE4B4 @ =gUnknown_20399C0 ldr r2, [r3] ldr r1, [r0] diff --git a/asm/option_menu.s b/asm/option_menu.s index bf626caba..bb370f0ba 100644 --- a/asm/option_menu.s +++ b/asm/option_menu.s @@ -459,7 +459,7 @@ _0808870C: b _08088768 _08088716: ldrb r0, [r0, 0xA] - bl sub_8069788 + bl GetUserFrameGraphicsInfo ldr r1, [r0] movs r2, 0x90 lsls r2, 1 @@ -470,7 +470,7 @@ _08088716: b _0808876C _0808872E: ldrb r0, [r0, 0xA] - bl sub_8069788 + bl GetUserFrameGraphicsInfo ldr r0, [r0, 0x4] movs r1, 0x20 b _0808874C @@ -590,7 +590,7 @@ _08088824: ldr r4, _08088854 @ =gUnknown_2039620 ldr r0, [r4] ldrb r0, [r0, 0xA] - bl sub_8069788 + bl GetUserFrameGraphicsInfo ldr r1, [r0] movs r2, 0x90 lsls r2, 1 @@ -600,7 +600,7 @@ _08088824: bl LoadBgTiles ldr r0, [r4] ldrb r0, [r0, 0xA] - bl sub_8069788 + bl GetUserFrameGraphicsInfo ldr r0, [r0, 0x4] movs r1, 0x20 movs r2, 0x20 diff --git a/asm/trade.s b/asm/trade.s index 0c1c168cc..8e6131f9d 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -11140,7 +11140,7 @@ _0805230A: ldr r0, _08052328 @ =CB2_ReturnToField bl SetMainCallback2 bl sub_8053AE4 - bl sub_812B484 + bl HelpSystem_Enable _08052318: movs r0, 0 _0805231A: @@ -13365,7 +13365,7 @@ _08053766: ldr r0, _08053784 @ =CB2_ReturnToField bl SetMainCallback2 bl sub_8053AE4 - bl sub_812B484 + bl HelpSystem_Enable _08053774: movs r0, 0 _08053776: @@ -14854,7 +14854,7 @@ sub_8054440: @ 8054440 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - bl sub_812B478 + bl HelpSystem_Disable add sp, 0x4 pop {r0} bx r0 diff --git a/baserom.ips b/baserom.ips Binary files differindex ae98df165..b1ef4e9dc 100644 --- a/baserom.ips +++ b/baserom.ips diff --git a/berry_fix/payload/include/global.h b/berry_fix/payload/include/global.h index c218b5f4e..911c4cd8f 100644 --- a/berry_fix/payload/include/global.h +++ b/berry_fix/payload/include/global.h @@ -115,7 +115,7 @@ enum enum { - OPTIONS_BUTTON_MODE_NORMAL, + OPTIONS_BUTTON_MODE_HELP, OPTIONS_BUTTON_MODE_LR, OPTIONS_BUTTON_MODE_L_EQUALS_A }; diff --git a/common_syms/help_system.txt b/common_syms/help_system.txt new file mode 100644 index 000000000..af59733d4 --- /dev/null +++ b/common_syms/help_system.txt @@ -0,0 +1 @@ +gHelpSystemEnabled diff --git a/data/data.s b/data/data.s index d0bd198e1..0883c65d7 100644 --- a/data/data.s +++ b/data/data.s @@ -6,41 +6,7 @@ .section .rodata - .align 2, 0 -gUnknown_8234614:: - .string "$" - -gUnknown_8234615:: - .string "\n$" - - .align 2, 0 -gUnknown_8234618:: @ 8234618 - .incbin "baserom.gba", 0x234618, 0x8 - -gUnknown_8234620:: @ 8234620 - .incbin "baserom.gba", 0x234620, 0x18 - -gUnknown_8234638:: @ 8234638 - .incbin "baserom.gba", 0x234638, 0x10 - -gUnknown_8234648:: @ 8234648 - .incbin "baserom.gba", 0x234648, 0x20 - -gUnknown_8234668:: @ 8234668 - .incbin "baserom.gba", 0x234668, 0x20 - -gUnknown_8234688:: @ 8234688 - .incbin "baserom.gba", 0x234688, 0x3 - -gUnknown_823468B:: @ 823468B - .incbin "baserom.gba", 0x23468B, 0x5 - -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/main_menu/unk_8234648.pal b/data/main_menu/unk_8234648.pal new file mode 100644 index 000000000..7aca54c52 --- /dev/null +++ b/data/main_menu/unk_8234648.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +139 148 255 +255 255 255 +49 57 82 +90 98 115 +8 8 16 +148 156 172 +205 222 238 +180 180 189 +189 205 222 +32 32 49 +123 131 139 +49 82 123 +41 123 197 +57 139 213 +90 164 230 +139 197 246 diff --git a/data/main_menu/unk_8234668.pal b/data/main_menu/unk_8234668.pal new file mode 100644 index 000000000..022f0051f --- /dev/null +++ b/data/main_menu/unk_8234668.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 255 255 +98 98 98 +213 213 205 +230 8 8 +255 189 115 +32 156 8 +148 246 148 +49 82 205 +164 197 246 +255 255 255 +98 98 98 +213 213 205 +0 0 0 +0 0 0 +0 0 0 diff --git a/data/specials.inc b/data/specials.inc index 5e9a3aeae..6111e4836 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -417,8 +417,8 @@ gSpecials:: @ 815FD60 def_special sub_814B504 def_special sub_80CC8CC def_special sub_80CC948 - def_special sub_812B478 - def_special sub_812B484 + def_special HelpSystem_Disable + def_special HelpSystem_Enable def_special sub_810B82C def_special CheckHasAtLeastOneBerry def_special sub_815F094 diff --git a/data/strings.s b/data/strings.s index be47054b5..e43a37050 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 @@ -81,16 +81,16 @@ gUnknown_8415B44:: @ 0x8415B44 gUnknown_8415BAA:: @ 0x8415BAA .string "レポ-トの こうしんは\nしっぱいしました!\pバックアップカ-トリッジを\nこうかんしてください!\pくわしくは\nにんてんどう サ-ビスセンタ- まで\lおといあわせ ください$" -gUnknown_8415BFF:: @ 8415BFF +gText_SaveFileCorruptedPrevWillBeLoaded:: @ 8415BFF .string "The save file is corrupted.\pThe previous save file will be\nloaded.$" -gUnknown_8415C42:: @ 8415C42 +gText_SaveFileHasBeenDeleted:: @ 8415C42 .string "The save file has been\ndeleted...$" -gUnknown_8415C64:: @ 8415C64 +gText_1MSubCircuitBoardNotInstalled:: @ 8415C64 .string "The 1M sub-circuit board is\nnot installed.$" -gUnknown_8415C8F:: @ 0x8415C8F +gTextJP_InternalBatteryHasRunDry:: @ 0x8415C8F .string "でんちぎれの ために\nとけいが うごかなくなりました\pとけいに かんけいする できごとは おきませんが\nゲ-ムを つづけて あそぶことは できます$" gUnknown_8415CD9:: @ 0x8415CD9 @@ -3037,25 +3037,25 @@ 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 +gTextJPDummy_Hiki:: @ 841B6EB .string "$" -gUnknown_841B6EC:: @ 841B6EC +gText_Badges:: @ 841B6EC .string "BADGES$" -gUnknown_841B6F3:: @ 841B6F3 +gTextJPDummy_Ko:: @ 841B6F3 .string "$" gUnknown_841B6F4:: @ 0x841B6F4 @@ -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/constants/flags.h b/include/constants/flags.h index a992bc365..a4b891aca 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1377,7 +1377,7 @@ #define TRAINERS_FLAG_NO 0x356 #define CODE_FLAGS (FLAG_TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860 -// TODO: Find what these are +// TODO: These three are badge flags #define FLAG_UNK820 0x820 #define FLAG_UNK824 0x824 #define FLAG_UNK826 0x826 diff --git a/include/constants/global.h b/include/constants/global.h index 3cac8d473..d7508c940 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -45,7 +45,7 @@ enum enum { - OPTIONS_BUTTON_MODE_NORMAL, + OPTIONS_BUTTON_MODE_HELP, OPTIONS_BUTTON_MODE_LR, OPTIONS_BUTTON_MODE_L_EQUALS_A }; diff --git a/include/constants/songs.h b/include/constants/songs.h index 193a57756..3c0e72757 100644 --- a/include/constants/songs.h +++ b/include/constants/songs.h @@ -254,7 +254,7 @@ #define SE_SHIP_HORN 249 #define SE_HELP_OPEN 250 #define SE_HELP_CLOSE 251 -#define SE_HELP_PAGE 252 +#define SE_HELP_ERR 252 #define MUS_ME_ASA 256 #define MUS_FANFA1 257 diff --git a/include/event_data.h b/include/event_data.h index 036b0a325..7c62ac92b 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -32,7 +32,7 @@ u8 FlagSet(u16 id); u8 FlagClear(u16 id); bool8 FlagGet(u16 id); u16 * GetVarPointer(u16 id); -bool32 sub_806E2BC(void); +bool32 Flag_0x839_IsSet(void); void sub_806E6FC(void); void sub_806E2D0(void); void sub_806E370(void); diff --git a/include/help_system.h b/include/help_system.h index 3ba0cf475..f28c168f7 100644 --- a/include/help_system.h +++ b/include/help_system.h @@ -25,7 +25,7 @@ struct HelpSystemListMenu extern struct HelpSystemListMenu gHelpSystemListMenu; extern struct ListMenuItem gHelpSystemListMenuItems[]; -extern bool8 gUnknown_3005ECC; +extern bool8 gHelpSystemEnabled; extern u8 gUnknown_203F175; // help_system_812B1E0 @@ -33,8 +33,8 @@ void sub_812B1E0(u8); void HelpSystem_SetSomeVariable2(u8); bool8 sub_812B40C(void); bool8 sub_812B45C(void); -void sub_812B478(void); -void sub_812B484(void); +void HelpSystem_Disable(void); +void HelpSystem_Enable(void); void sub_812B4B8(void); bool8 sub_812BB9C(struct HelpSystemListMenu * a0, struct ListMenuItem * a1); bool8 sub_812BC54(struct HelpSystemListMenu * a0, struct ListMenuItem * a1); 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/main_menu.h b/include/main_menu.h index 2a0cd81d5..d8c2a5ab1 100644 --- a/include/main_menu.h +++ b/include/main_menu.h @@ -1,6 +1,6 @@ #ifndef GUARD_MAIN_MENU_H #define GUARD_MAIN_MENU_H -void sub_800C300(void); +void CB2_InitMainMenu(void); #endif //GUARD_MAIN_MENU_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 1bafbacbe..e7d40281d 100644 --- a/include/strings.h +++ b/include/strings.h @@ -336,4 +336,94 @@ extern const u8 gText_CommErrorCheckConnections[]; extern const u8 gText_ABtnTitleScreen[]; extern const u8 gText_ABtnRegistrationCounter[]; +// main_menu +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 gTextJPDummy_Hiki[]; +extern const u8 gText_Badges[]; +extern const u8 gTextJPDummy_Ko[]; +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/include/text_window_graphics.h b/include/text_window_graphics.h index 17e919705..e2b351de9 100644 --- a/include/text_window_graphics.h +++ b/include/text_window_graphics.h @@ -14,6 +14,6 @@ extern const u16 gUnknown_8471DEC[][16]; extern const struct TextWindowGraphics gUserFrames[]; -const struct TextWindowGraphics * sub_8069788(u8 idx); +const struct TextWindowGraphics * GetUserFrameGraphicsInfo(u8 idx); #endif //GUARD_TEXT_WINDOW_GRAPHICS_H diff --git a/ld_script.txt b/ld_script.txt index fbf00f9c1..c9de54716 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -62,7 +62,7 @@ SECTIONS { src/string_util.o(.text); src/link.o(.text); src/multiboot.o(.text); - asm/main_menu.o(.text); + src/main_menu.o(.text); src/battle_controllers.o(.text); src/decompress.o(.text); asm/battle_1.o(.text); @@ -380,6 +380,7 @@ SECTIONS { src/bg_regs.o(.rodata); src/string_util.o(.rodata); src/link.o(.rodata); + src/main_menu.o(.rodata); data/data.o(.rodata); src/battle_util.o(.rodata); src/battle_script_commands.o(.rodata); diff --git a/src/berry_fix_program.c b/src/berry_fix_program.c index f224bbc47..7c7c452f3 100644 --- a/src/berry_fix_program.c +++ b/src/berry_fix_program.c @@ -95,7 +95,7 @@ void mb_berry_fix_serve(void) // noreturn ResetSpriteData(); ResetTasks(); ScanlineEffect_Stop(); - gUnknown_3005ECC = 0; + gHelpSystemEnabled = 0; taskId = CreateTask(mb_berry_fix_task, 0); gTasks[taskId].data[0] = 0; SetMainCallback2(mb_berry_fix_maincb); diff --git a/src/daycare.c b/src/daycare.c index c082b4298..1690953ee 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1795,7 +1795,7 @@ void EggHatch(void) ScriptContext2_Enable(); CreateTask(Task_EggHatch, 10); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - sub_812B478(); + HelpSystem_Disable(); } static void Task_EggHatch(u8 taskID) @@ -1901,7 +1901,7 @@ static void EggHatchSetMonNickname(void) SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3); FreeMonSpritesGfx(); Free(sEggHatchData); - sub_812B484(); + HelpSystem_Enable(); SetMainCallback2(CB2_ReturnToField); } @@ -2024,7 +2024,7 @@ static void CB2_EggHatch_1(void) UnsetBgTilemapBuffer(1); Free(sEggHatchData); SetMainCallback2(CB2_ReturnToField); - sub_812B484(); + HelpSystem_Enable(); } break; } diff --git a/src/help_system.c b/src/help_system.c index 2d96ae9d6..3ebbcb9ec 100644 --- a/src/help_system.c +++ b/src/help_system.c @@ -16,6 +16,8 @@ extern u8 gGlyphInfo[]; +bool8 gHelpSystemEnabled; + struct HelpSystemVideoState { /*0x00*/ MainCallback savedVblankCb; @@ -49,15 +51,15 @@ u8 RunHelpSystemCallback(void) { case 0: sInHelpSystem = 0; - if (gSaveBlock2Ptr->optionsButtonMode != OPTIONS_BUTTON_MODE_NORMAL) + if (gSaveBlock2Ptr->optionsButtonMode != OPTIONS_BUTTON_MODE_HELP) return 0; if (JOY_NEW(R_BUTTON) && gUnknown_203F175 == 1) return 0; if (JOY_NEW(L_BUTTON | R_BUTTON)) { - if (!sub_812B45C() || !gUnknown_3005ECC) + if (!sub_812B45C() || !gHelpSystemEnabled) { - PlaySE(SE_HELP_PAGE); + PlaySE(SE_HELP_ERR); return 0; } m4aMPlayStop(&gMPlayInfo_SE1); diff --git a/src/help_system_812B1E0.c b/src/help_system_812B1E0.c index 024cfcf09..6fd069f1c 100644 --- a/src/help_system_812B1E0.c +++ b/src/help_system_812B1E0.c @@ -1005,16 +1005,16 @@ bool8 sub_812B45C(void) return TRUE; } -void sub_812B478(void) +void HelpSystem_Disable(void) { - gUnknown_3005ECC = 0; + gHelpSystemEnabled = 0; } -void sub_812B484(void) +void HelpSystem_Enable(void) { if (gUnknown_203ADFA != 2 && gUnknown_203ADFA != 3) { - gUnknown_3005ECC = 1; + gHelpSystemEnabled = 1; sub_812B4B8(); } } diff --git a/src/link.c b/src/link.c index 9d67c984e..c51ec80af 100644 --- a/src/link.c +++ b/src/link.c @@ -1577,7 +1577,7 @@ static void CB2_PrintErrorMessage(void) { if (JOY_NEW(A_BUTTON)) { - sub_812B484(); + HelpSystem_Enable(); PlaySE(SE_PIN); gWirelessCommType = 0; sLinkErrorBuffer.unk_06 = 0; @@ -1588,7 +1588,7 @@ static void CB2_PrintErrorMessage(void) { if (JOY_NEW(A_BUTTON)) { - sub_812B484(); + HelpSystem_Enable(); rfu_REQ_stopMode(); rfu_waitREQComplete(); DoSoftReset(); diff --git a/src/main.c b/src/main.c index 0d4e2ee1e..9294c80ce 100644 --- a/src/main.c +++ b/src/main.c @@ -104,7 +104,6 @@ static IntrFunc * const sTimerIntrFunc = gIntrTable + 0x7; EWRAM_DATA u8 gDecompressionBuffer[0x4000] = {0}; EWRAM_DATA u16 gTrainerId = 0; -extern bool8 gUnknown_3005ECC; extern bool8 gWirelessCommType; extern bool8 gUnknown_3005E88; @@ -138,7 +137,7 @@ void AgbMain() SetDefaultFontsPointer(); gSoftResetDisabled = FALSE; - gUnknown_3005ECC = FALSE; + gHelpSystemEnabled = FALSE; sub_80F50F4(); diff --git a/src/main_menu.c b/src/main_menu.c new file mode 100644 index 000000000..4307e9696 --- /dev/null +++ b/src/main_menu.c @@ -0,0 +1,795 @@ +#include "global.h" +#include "palette.h" +#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 "string_util.h" +#include "pokedex.h" +#include "text_window.h" +#include "text_window_graphics.h" +#include "constants/songs.h" + +enum MainMenuType +{ + MAIN_MENU_NEWGAME = 0, + MAIN_MENU_CONTINUE, + MAIN_MENU_MYSTERYGIFT +}; + +enum MainMenuWindow +{ + MAIN_MENU_WINDOW_NEWGAME_ONLY = 0, + MAIN_MENU_WINDOW_CONTINUE, + MAIN_MENU_WINDOW_NEWGAME, + MAIN_MENU_WINDOW_MYSTERYGIFT, + MAIN_MENU_WINDOW_ERROR, + MAIN_MENU_WINDOW_COUNT +}; + +#define tMenuType data[0] +#define tCursorPos data[1] + +#define tUnused8 data[8] +#define tMGErrorMsgState data[9] +#define tMGErrorType data[10] + +static bool32 MainMenuGpuInit(u8 a0); +static void Task_SetWin0BldRegsAndCheckSaveFile(u8 taskId); +static void PrintSaveErrorStatus(u8 taskId, const u8 *str); +static void Task_SaveErrorStatus_RunPrinterThenWaitButton(u8 taskId); +static void Task_SetWin0BldRegsNoSaveFileCheck(u8 taskId); +static void Task_WaitFadeAndPrintMainMenuText(u8 taskId); +static void Task_PrintMainMenuText(u8 taskId); +static void Task_WaitDma3AndFadeIn(u8 taskId); +static void Task_UpdateVisualSelection(u8 taskId); +static void Task_HandleMenuInput(u8 taskId); +static void Task_ExecuteMainMenuSelection(u8 taskId); +static void Task_MysteryGiftError(u8 taskId); +static void Task_ReturnToTileScreen(u8 taskId); +static void MoveWindowByMenuTypeAndCursorPos(u8 menuType, u8 cursorPos); +static bool8 HandleMenuInput(u8 taskId); +static void PrintMessageOnWindow4(const u8 *str); +static void PrintContinueStats(void); +static void PrintPlayerName(void); +static void PrintPlayTime(void); +static void PrintDexCount(void); +static void PrintBadgeCount(void); +static void LoadUserFrameToBg(u8 bgId); +static void SetStdFrame0OnBg(u8 bgId); +static void MainMenu_DrawWindow(const struct WindowTemplate * template); +static void MainMenu_EraseWindow(const struct WindowTemplate * template); + +static const u8 sString_Dummy[] = _(""); +static const u8 sString_Newline[] = _("\n"); + +static const struct WindowTemplate sWindowTemplate[] = { + [MAIN_MENU_WINDOW_NEWGAME_ONLY] = { + .bg = 0, + .tilemapLeft = 3, + .tilemapTop = 1, + .width = 24, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x001 + }, + [MAIN_MENU_WINDOW_CONTINUE] = { + .bg = 0, + .tilemapLeft = 3, + .tilemapTop = 1, + .width = 24, + .height = 10, + .paletteNum = 15, + .baseBlock = 0x001 + }, + [MAIN_MENU_WINDOW_NEWGAME] = { + .bg = 0, + .tilemapLeft = 3, + .tilemapTop = 13, + .width = 24, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x0f1 + }, + [MAIN_MENU_WINDOW_MYSTERYGIFT] = { + .bg = 0, + .tilemapLeft = 3, + .tilemapTop = 17, + .width = 24, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x121 + }, + [MAIN_MENU_WINDOW_ERROR] = { + .bg = 0, + .tilemapLeft = 3, + .tilemapTop = 15, + .width = 24, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x001 + }, + [MAIN_MENU_WINDOW_COUNT] = DUMMY_WIN_TEMPLATE +}; + +static const u16 sBgPal00[] = INCBIN_U16("data/main_menu/unk_8234648.gbapal"); +static const u16 sBgPal15[] = INCBIN_U16("data/main_menu/unk_8234668.gbapal"); + +static const u8 sTextColor1[] = { 10, 11, 12 }; + +static const u8 sTextColor2[] = { 10, 1, 12 }; + +static const struct BgTemplate sBgTemplate[] = { + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .priority = 0 + } +}; + +static const u8 sMenuCursorYMax[] = { 0, 1, 2 }; + +static void CB2_MainMenu(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void VBlankCB_MainMenu(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void CB2_InitMainMenu(void) +{ + MainMenuGpuInit(1); +} + +static void CB2_InitMainMenu_2(void) +{ + MainMenuGpuInit(1); +} + +static bool32 MainMenuGpuInit(u8 a0) +{ + u8 taskId; + + SetVBlankCallback(NULL); + SetGpuReg(REG_OFFSET_DISPCNT, 0); + SetGpuReg(REG_OFFSET_BG2CNT, 0); + SetGpuReg(REG_OFFSET_BG1CNT, 0); + SetGpuReg(REG_OFFSET_BG0CNT, 0); + SetGpuReg(REG_OFFSET_BG2HOFS, 0); + SetGpuReg(REG_OFFSET_BG2VOFS, 0); + SetGpuReg(REG_OFFSET_BG1HOFS, 0); + SetGpuReg(REG_OFFSET_BG1VOFS, 0); + SetGpuReg(REG_OFFSET_BG0HOFS, 0); + SetGpuReg(REG_OFFSET_BG0VOFS, 0); + DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE); + DmaFill32(3, 0, (void *)OAM, OAM_SIZE); + DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); + ScanlineEffect_Stop(); + ResetTasks(); + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetPaletteFade(); + ResetBgsAndClearDma3BusyFlags(FALSE); + InitBgsFromTemplates(0, sBgTemplate, NELEMS(sBgTemplate)); + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + InitWindows(sWindowTemplate); + DeactivateAllTextPrinters(); + LoadPalette(sBgPal00, 0x00, 0x20); + LoadPalette(sBgPal15, 0xF0, 0x20); + SetGpuReg(REG_OFFSET_WIN0H, 0); + SetGpuReg(REG_OFFSET_WIN0V, 0); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetMainCallback2(CB2_MainMenu); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON); + taskId = CreateTask(Task_SetWin0BldRegsAndCheckSaveFile, 0); + gTasks[taskId].tCursorPos = 0; + gTasks[taskId].tUnused8 = a0; + return FALSE; +} + +/* + * The entire screen is darkened slightly except at WIN0 to indicate + * the player cursor position. + */ + +static void Task_SetWin0BldRegsAndCheckSaveFile(u8 taskId) +{ + if (!gPaletteFade.active) + { + 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); + switch (gSaveFileStatus) + { + case SAVE_STATUS_OK: + LoadUserFrameToBg(0); + if (Flag_0x839_IsSet() == TRUE) + { + gTasks[taskId].tMenuType = MAIN_MENU_MYSTERYGIFT; + } + else + { + gTasks[taskId].tMenuType = MAIN_MENU_CONTINUE; + } + gTasks[taskId].func = Task_SetWin0BldRegsNoSaveFileCheck; + break; + case SAVE_STATUS_INVALID: + SetStdFrame0OnBg(0); + gTasks[taskId].tMenuType = MAIN_MENU_NEWGAME; + PrintSaveErrorStatus(taskId, gText_SaveFileHasBeenDeleted); + break; + case SAVE_STATUS_ERROR: + SetStdFrame0OnBg(0); + gTasks[taskId].tMenuType = MAIN_MENU_CONTINUE; + PrintSaveErrorStatus(taskId, gText_SaveFileCorruptedPrevWillBeLoaded); + if (Flag_0x839_IsSet() == TRUE) + { + gTasks[taskId].tMenuType = MAIN_MENU_MYSTERYGIFT; + } + else + { + gTasks[taskId].tMenuType = MAIN_MENU_CONTINUE; + } + break; + case SAVE_STATUS_EMPTY: + default: + LoadUserFrameToBg(0); + gTasks[taskId].tMenuType = MAIN_MENU_NEWGAME; + gTasks[taskId].func = Task_SetWin0BldRegsNoSaveFileCheck; + break; + case SAVE_STATUS_NO_FLASH: + SetStdFrame0OnBg(0); + gTasks[taskId].tMenuType = MAIN_MENU_NEWGAME; + PrintSaveErrorStatus(taskId, gText_1MSubCircuitBoardNotInstalled); + break; + } + } +} + +static void PrintSaveErrorStatus(u8 taskId, const u8 *str) +{ + PrintMessageOnWindow4(str); + gTasks[taskId].func = Task_SaveErrorStatus_RunPrinterThenWaitButton; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0xFFFF); + ShowBg(0); + SetVBlankCallback(VBlankCB_MainMenu); +} + +static void Task_SaveErrorStatus_RunPrinterThenWaitButton(u8 taskId) +{ + if (!gPaletteFade.active) + { + RunTextPrinters(); + if (!IsTextPrinterActive(MAIN_MENU_WINDOW_ERROR) && JOY_NEW(A_BUTTON)) + { + ClearWindowTilemap(MAIN_MENU_WINDOW_ERROR); + MainMenu_EraseWindow(&sWindowTemplate[MAIN_MENU_WINDOW_ERROR]); + LoadUserFrameToBg(0); + if (gTasks[taskId].tMenuType == MAIN_MENU_NEWGAME) + gTasks[taskId].func = Task_SetWin0BldRegsNoSaveFileCheck; + else + gTasks[taskId].func = Task_PrintMainMenuText; + } + } +} + +static void Task_SetWin0BldRegsNoSaveFileCheck(u8 taskId) +{ + if (!gPaletteFade.active) + { + 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 (gTasks[taskId].tMenuType == 0) + gTasks[taskId].func = Task_ExecuteMainMenuSelection; + else + gTasks[taskId].func = Task_WaitFadeAndPrintMainMenuText; + } +} + +static void Task_WaitFadeAndPrintMainMenuText(u8 taskId) +{ + if (!gPaletteFade.active) + { + Task_PrintMainMenuText(taskId); + } +} + +static void Task_PrintMainMenuText(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].tMenuType) + { + case MAIN_MENU_NEWGAME: + default: + FillWindowPixelBuffer(MAIN_MENU_WINDOW_NEWGAME_ONLY, PIXEL_FILL(10)); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_NEWGAME_ONLY, 2, 2, 2, sTextColor1, -1, gText_NewGame); + MainMenu_DrawWindow(&sWindowTemplate[MAIN_MENU_WINDOW_NEWGAME_ONLY]); + PutWindowTilemap(MAIN_MENU_WINDOW_NEWGAME_ONLY); + CopyWindowToVram(MAIN_MENU_WINDOW_NEWGAME_ONLY, 3); + break; + case MAIN_MENU_CONTINUE: + FillWindowPixelBuffer(MAIN_MENU_WINDOW_CONTINUE, PIXEL_FILL(10)); + FillWindowPixelBuffer(MAIN_MENU_WINDOW_NEWGAME, PIXEL_FILL(10)); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 2, 2, sTextColor1, -1, gText_Continue); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_NEWGAME, 2, 2, 2, sTextColor1, -1, gText_NewGame); + PrintContinueStats(); + MainMenu_DrawWindow(&sWindowTemplate[MAIN_MENU_WINDOW_CONTINUE]); + MainMenu_DrawWindow(&sWindowTemplate[MAIN_MENU_WINDOW_NEWGAME]); + PutWindowTilemap(MAIN_MENU_WINDOW_CONTINUE); + PutWindowTilemap(MAIN_MENU_WINDOW_NEWGAME); + CopyWindowToVram(MAIN_MENU_WINDOW_CONTINUE, 2); + CopyWindowToVram(MAIN_MENU_WINDOW_NEWGAME, 3); + break; + case MAIN_MENU_MYSTERYGIFT: + FillWindowPixelBuffer(MAIN_MENU_WINDOW_CONTINUE, PIXEL_FILL(10)); + FillWindowPixelBuffer(MAIN_MENU_WINDOW_NEWGAME, PIXEL_FILL(10)); + FillWindowPixelBuffer(MAIN_MENU_WINDOW_MYSTERYGIFT, PIXEL_FILL(10)); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 2, 2, sTextColor1, -1, gText_Continue); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_NEWGAME, 2, 2, 2, sTextColor1, -1, gText_NewGame); + gTasks[taskId].tMGErrorType = 1; + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_MYSTERYGIFT, 2, 2, 2, sTextColor1, -1, gText_MysteryGift); + PrintContinueStats(); + MainMenu_DrawWindow(&sWindowTemplate[MAIN_MENU_WINDOW_CONTINUE]); + MainMenu_DrawWindow(&sWindowTemplate[MAIN_MENU_WINDOW_NEWGAME]); + MainMenu_DrawWindow(&sWindowTemplate[MAIN_MENU_WINDOW_MYSTERYGIFT]); + PutWindowTilemap(MAIN_MENU_WINDOW_CONTINUE); + PutWindowTilemap(MAIN_MENU_WINDOW_NEWGAME); + PutWindowTilemap(MAIN_MENU_WINDOW_MYSTERYGIFT); + CopyWindowToVram(MAIN_MENU_WINDOW_CONTINUE, 2); + CopyWindowToVram(MAIN_MENU_WINDOW_NEWGAME, 2); + CopyWindowToVram(MAIN_MENU_WINDOW_MYSTERYGIFT, 3); + break; + } + gTasks[taskId].func = Task_WaitDma3AndFadeIn; +} + +static void Task_WaitDma3AndFadeIn(u8 taskId) +{ + if (CheckForSpaceForDma3Request(-1) != -1) + { + gTasks[taskId].func = Task_UpdateVisualSelection; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0xFFFF); + ShowBg(0); + SetVBlankCallback(VBlankCB_MainMenu); + } +} + +static void Task_UpdateVisualSelection(u8 taskId) +{ + MoveWindowByMenuTypeAndCursorPos(gTasks[taskId].tMenuType, gTasks[taskId].tCursorPos); + gTasks[taskId].func = Task_HandleMenuInput; +} + +static void Task_HandleMenuInput(u8 taskId) +{ + if (!gPaletteFade.active && HandleMenuInput(taskId)) + { + gTasks[taskId].func = Task_UpdateVisualSelection; + } +} + +static void Task_ExecuteMainMenuSelection(u8 taskId) +{ + s32 menuAction; + if (!gPaletteFade.active) + { + switch (gTasks[taskId].tMenuType) + { + default: + case MAIN_MENU_NEWGAME: + menuAction = MAIN_MENU_NEWGAME; + break; + case MAIN_MENU_CONTINUE: + switch (gTasks[taskId].tCursorPos) + { + default: + case 0: + menuAction = MAIN_MENU_CONTINUE; + break; + case 1: + menuAction = MAIN_MENU_NEWGAME; + break; + } + break; + case MAIN_MENU_MYSTERYGIFT: + switch (gTasks[taskId].tCursorPos) + { + default: + case 0: + menuAction = MAIN_MENU_CONTINUE; + break; + case 1: + menuAction = MAIN_MENU_NEWGAME; + break; + case 2: + if (!IsWirelessAdapterConnected()) + { + SetStdFrame0OnBg(0); + gTasks[taskId].func = Task_MysteryGiftError; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + return; + } + else + { + menuAction = MAIN_MENU_MYSTERYGIFT; + } + break; + } + break; + } + switch (menuAction) + { + default: + case MAIN_MENU_NEWGAME: + gUnknown_2031DE0 = 0; + FreeAllWindowBuffers(); + DestroyTask(taskId); + StartNewGameScene(); + break; + case MAIN_MENU_CONTINUE: + gPlttBufferUnfaded[0] = RGB_BLACK; + gPlttBufferFaded[0] = RGB_BLACK; + gUnknown_2031DE0 = 0; + FreeAllWindowBuffers(); + TrySetUpQuestLogScenes_ElseContinueFromSave(taskId); + break; + case MAIN_MENU_MYSTERYGIFT: + SetMainCallback2(c2_mystery_gift); + HelpSystem_Disable(); + FreeAllWindowBuffers(); + DestroyTask(taskId); + break; + } + } +} + +static void Task_MysteryGiftError(u8 taskId) +{ + switch (gTasks[taskId].tMGErrorMsgState) + { + case 0: + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); + if (gTasks[taskId].tMGErrorType == 1) + PrintMessageOnWindow4(gText_WirelessAdapterIsNotConnected); + else + PrintMessageOnWindow4(gText_MysteryGiftCantBeUsedWhileWirelessAdapterIsAttached); + gTasks[taskId].tMGErrorMsgState++; + break; + case 1: + if (!gPaletteFade.active) + gTasks[taskId].tMGErrorMsgState++; + break; + case 2: + RunTextPrinters(); + if (!IsTextPrinterActive(4)) + gTasks[taskId].tMGErrorMsgState++; + break; + case 3: + if (JOY_NEW(A_BUTTON | B_BUTTON)) + { + PlaySE(SE_SELECT); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + gTasks[taskId].func = Task_ReturnToTileScreen; + } + break; + } +} + +static void Task_ReturnToTileScreen(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_InitTitleScreen); + DestroyTask(taskId); + } +} + +static void MoveWindowByMenuTypeAndCursorPos(u8 menuType, u8 cursorPos) +{ + u16 win0vTop, win0vBot; + SetGpuReg(REG_OFFSET_WIN0H, 0x12DE); + switch (menuType) + { + default: + case MAIN_MENU_NEWGAME: + win0vTop = 0x00 << 8; + win0vBot = 0x20; + break; + case MAIN_MENU_CONTINUE: + case MAIN_MENU_MYSTERYGIFT: + switch (cursorPos) + { + default: + case 0: // CONTINUE + win0vTop = 0x00 << 8; + win0vBot = 0x60; + break; + case 1: // NEW GAME + win0vTop = 0x60 << 8; + win0vBot = 0x80; + break; + case 2: // MYSTERY GIFT + win0vTop = 0x80 << 8; + win0vBot = 0xA0; + break; + } + break; + } + SetGpuReg(REG_OFFSET_WIN0V, (win0vTop + (2 << 8)) | (win0vBot - 2)); +} + +static bool8 HandleMenuInput(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 = Task_ExecuteMainMenuSelection; + } + 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 = Task_ReturnToTileScreen; + } + else if (JOY_NEW(DPAD_UP) && gTasks[taskId].tCursorPos > 0) + { + gTasks[taskId].tCursorPos--; + return TRUE; + } + else if (JOY_NEW(DPAD_DOWN) && gTasks[taskId].tCursorPos < sMenuCursorYMax[gTasks[taskId].tMenuType]) + { + gTasks[taskId].tCursorPos++; + return TRUE; + } + + return FALSE; +} + +static void PrintMessageOnWindow4(const u8 *str) +{ + FillWindowPixelBuffer(MAIN_MENU_WINDOW_ERROR, PIXEL_FILL(10)); + MainMenu_DrawWindow(&sWindowTemplate[4]); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_ERROR, 2, 0, 2, sTextColor1, 2, str); + PutWindowTilemap(MAIN_MENU_WINDOW_ERROR); + CopyWindowToVram(MAIN_MENU_WINDOW_ERROR, 2); + SetGpuReg(REG_OFFSET_WIN0H, 0x13DD); + SetGpuReg(REG_OFFSET_WIN0V, 0x739D); +} + +static void PrintContinueStats(void) +{ + PrintPlayerName(); + PrintDexCount(); + PrintPlayTime(); + PrintBadgeCount(); +} + +static void PrintPlayerName(void) +{ + s32 i; + u8 name[OT_NAME_LENGTH + 1]; + u8 *ptr; + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 2, 18, sTextColor2, -1, gText_Player); + ptr = name; + for (i = 0; i < OT_NAME_LENGTH; i++) + *ptr++ = gSaveBlock2Ptr->playerName[i]; + *ptr = EOS; + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 62, 18, sTextColor2, -1, name); +} + +static void PrintPlayTime(void) +{ + u8 strbuf[30]; + u8 *ptr; + + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 2, 34, sTextColor2, -1, gText_Time); + ptr = ConvertIntToDecimalStringN(strbuf, gSaveBlock2Ptr->playTimeHours, STR_CONV_MODE_LEFT_ALIGN, 3); + *ptr++ = CHAR_COLON; + ConvertIntToDecimalStringN(ptr, gSaveBlock2Ptr->playTimeMinutes, STR_CONV_MODE_LEADING_ZEROS, 2); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 62, 34, sTextColor2, -1, strbuf); +} + +static void PrintDexCount(void) +{ + u8 strbuf[30]; + u8 *ptr; + u16 dexcount; + if (FlagGet(FLAG_0x829) == TRUE) + { + if (IsNationalPokedexEnabled()) + dexcount = GetNationalPokedexCount(FLAG_GET_CAUGHT); + else + dexcount = GetKantoPokedexCount(FLAG_GET_CAUGHT); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 2, 50, sTextColor2, -1, gText_Pokedex); + ptr = ConvertIntToDecimalStringN(strbuf, dexcount, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(ptr, gTextJPDummy_Hiki); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 62, 50, sTextColor2, -1, strbuf); + } +} + +static void PrintBadgeCount(void) +{ + u8 strbuf[30]; + u8 *ptr; + u32 flagId; + u8 nbadges = 0; + for (flagId = FLAG_UNK820; flagId < FLAG_UNK820 + 8; flagId++) + { + if (FlagGet(flagId)) + nbadges++; + } + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 2, 66, sTextColor2, -1, gText_Badges); + ptr = ConvertIntToDecimalStringN(strbuf, nbadges, STR_CONV_MODE_LEADING_ZEROS, 1); + StringAppend(ptr, gTextJPDummy_Ko); + AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 62, 66, sTextColor2, -1, strbuf); +} + +static void LoadUserFrameToBg(u8 bgId) +{ + LoadBgTiles(bgId, GetUserFrameGraphicsInfo(gSaveBlock2Ptr->optionsWindowFrameType)->tiles, 0x120, 0x1B1); + LoadPalette(GetUserFrameGraphicsInfo(gSaveBlock2Ptr->optionsWindowFrameType)->palette, 0x20, 0x20); + MainMenu_EraseWindow(&sWindowTemplate[MAIN_MENU_WINDOW_ERROR]); +} + +static void SetStdFrame0OnBg(u8 bgId) +{ + TextWindow_SetStdFrame0_WithPal(MAIN_MENU_WINDOW_NEWGAME_ONLY, 0x1B1, 0x20); + MainMenu_EraseWindow(&sWindowTemplate[MAIN_MENU_WINDOW_ERROR]); +} + +static void MainMenu_DrawWindow(const struct WindowTemplate * windowTemplate) +{ + FillBgTilemapBufferRect( + windowTemplate->bg, + 0x1B1, + windowTemplate->tilemapLeft - 1, + windowTemplate->tilemapTop - 1, + 1, + 1, + 2 + ); + FillBgTilemapBufferRect( + windowTemplate->bg, + 0x1B2, + windowTemplate->tilemapLeft, + windowTemplate->tilemapTop - 1, + windowTemplate->width, + windowTemplate->height, + 2 + ); + FillBgTilemapBufferRect( + windowTemplate->bg, + 0x1B3, + windowTemplate->tilemapLeft + + windowTemplate->width, + windowTemplate->tilemapTop - 1, + 1, + 1, + 2 + ); + FillBgTilemapBufferRect( + windowTemplate->bg, + 0x1B4, + windowTemplate->tilemapLeft - 1, + windowTemplate->tilemapTop, + 1, + windowTemplate->height, + 2 + ); + FillBgTilemapBufferRect( + windowTemplate->bg, + 0x1B6, + windowTemplate->tilemapLeft + + windowTemplate->width, + windowTemplate->tilemapTop, + 1, + windowTemplate->height, + 2 + ); + FillBgTilemapBufferRect( + windowTemplate->bg, + 0x1B7, + windowTemplate->tilemapLeft - 1, + windowTemplate->tilemapTop + + windowTemplate->height, + 1, + 1, + 2 + ); + FillBgTilemapBufferRect( + windowTemplate->bg, + 0x1B8, + windowTemplate->tilemapLeft, + windowTemplate->tilemapTop + + windowTemplate->height, + windowTemplate->width, + 1, + 2 + ); + FillBgTilemapBufferRect( + windowTemplate->bg, + 0x1B9, + windowTemplate->tilemapLeft + + windowTemplate->width, + windowTemplate->tilemapTop + + windowTemplate->height, + 1, + 1, + 2 + ); + CopyBgTilemapBufferToVram(windowTemplate->bg); +} + +static void MainMenu_EraseWindow(const struct WindowTemplate * windowTemplate) +{ + FillBgTilemapBufferRect( + windowTemplate->bg, + 0x000, + windowTemplate->tilemapLeft - 1, + windowTemplate->tilemapTop - 1, + windowTemplate->tilemapLeft + + windowTemplate->width + 1, + windowTemplate->tilemapTop + + windowTemplate->height + 1, + 2 + ); + CopyBgTilemapBufferToVram(windowTemplate->bg); +} diff --git a/src/menews_jisan.c b/src/menews_jisan.c index 0d406e66a..2f6172bbc 100644 --- a/src/menews_jisan.c +++ b/src/menews_jisan.c @@ -59,7 +59,7 @@ u16 sub_8146CE8(void) struct MysteryEventStruct *r4 = sub_8143D94(); u16 r5; - if (!sub_806E2BC() || !ValidateReceivedWonderNews()) + if (!Flag_0x839_IsSet() || !ValidateReceivedWonderNews()) return 0; r5 = sub_8146E0C(r4); diff --git a/src/mevent.c b/src/mevent.c index af2006e14..a7115d2d4 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -475,7 +475,7 @@ void sub_8143910(u8 taskId) data->state = 0; break; case 26: - sub_812B484(); + HelpSystem_Enable(); Free(data->t10); DestroyTask(taskId); SetMainCallback2(MainCB_FreeAllBuffersAndReturnToInitTitleScreen); diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c index dbc685602..9c050810e 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); } @@ -1742,7 +1680,7 @@ void task00_mystery_gift(u8 taskId) break; case 37: CloseLink(); - sub_812B484(); + HelpSystem_Enable(); Free(data->buffer); DestroyTask(taskId); SetMainCallback2(MainCB_FreeAllBuffersAndReturnToInitTitleScreen); diff --git a/src/new_game.c b/src/new_game.c index 58deac9b9..efeea13cc 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -66,7 +66,7 @@ static void SetDefaultOptions(void) gSaveBlock2Ptr->optionsBattleStyle = OPTIONS_BATTLE_STYLE_SHIFT; gSaveBlock2Ptr->optionsBattleSceneOff = FALSE; gSaveBlock2Ptr->regionMapZoom = FALSE; - gSaveBlock2Ptr->optionsButtonMode = OPTIONS_BUTTON_MODE_NORMAL; + gSaveBlock2Ptr->optionsButtonMode = OPTIONS_BUTTON_MODE_HELP; } static void ClearPokedexFlags(void) diff --git a/src/quest_log.c b/src/quest_log.c index 065b42cef..71cab91a1 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,21 +840,21 @@ 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; + gHelpSystemEnabled = FALSE; sub_8110F90(taskId); DestroyTask(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) @@ -1603,7 +1603,7 @@ void sub_81120AC(u8 taskId) gTextFlags.autoScroll = FALSE; gUnknown_2036E28 = 0; sub_8082740(0); - gUnknown_3005ECC = 1; + gHelpSystemEnabled = 1; DestroyTask(taskId); break; } diff --git a/src/seagallop.c b/src/seagallop.c index 5374f7bac..006a356e4 100644 --- a/src/seagallop.c +++ b/src/seagallop.c @@ -179,7 +179,7 @@ static const struct SpriteTemplate sWakeSpriteTemplate = { void ScrSpecial_SeaGallopFerry(void) { SetVBlankCallback(NULL); - sub_812B478(); + HelpSystem_Disable(); SetMainCallback2(CB2_SetUpSeaGallopScene); } @@ -306,7 +306,7 @@ static void Task_SeaGallop_2(u8 taskId) if (sub_8055FC4() && !gPaletteFade.active) { Task_SeaGallop_3(); - sub_812B484(); + HelpSystem_Enable(); DestroyTask(taskId); } } diff --git a/src/text_window_graphics.c b/src/text_window_graphics.c index e16037a34..0fb8b38f8 100644 --- a/src/text_window_graphics.c +++ b/src/text_window_graphics.c @@ -51,7 +51,7 @@ const struct TextWindowGraphics gUserFrames[] = { {gUnknown_84717CC, gUnknown_8471A2C} }; // NELEMS = 10 -const struct TextWindowGraphics * sub_8069788(u8 idx) +const struct TextWindowGraphics * GetUserFrameGraphicsInfo(u8 idx) { if (idx >= 20) // if (idx >= NELEMS(gUserFrames)) return &gUserFrames[0]; diff --git a/src/title_screen.c b/src/title_screen.c index f4086b2ff..26770b633 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -513,7 +513,7 @@ static void SetTitleScreenScene_Run(s16 * data) CreateTask(Task_FlameOrLeafSpawner, 5); SetGpuRegsForTitleScreenRun(); data[6] = CreateSlashSprite(); - sub_812B484(); + HelpSystem_Enable(); data[1]++; // fallthrough case 1: @@ -583,7 +583,7 @@ static void SetTitleScreenScene_Restart(s16 * data) } break; case 4: - sub_812B478(); + HelpSystem_Disable(); DestroyTask(FindTaskIdByFunc(Task_TitleScreenMain)); SetMainCallback2(sub_80EC864); break; @@ -626,7 +626,7 @@ static void SetTitleScreenScene_Cry(s16 * data) Sav2_ClearSetDefault(); SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); InitHeap(gHeap, HEAP_SIZE); - SetMainCallback2(sub_800C300); + SetMainCallback2(CB2_InitMainMenu); DestroyTask(FindTaskIdByFunc(Task_TitleScreenMain)); } break; diff --git a/sym_common.txt b/sym_common.txt index b251a32ba..0619ea728 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -220,10 +220,8 @@ gUnknown_3005E98: @ 3005E98 .include "help_system_812B1E0.o" .align 4 .include "fame_checker.o" - -gUnknown_3005ECC: @ 3005ECC - .space 0x4 - + .include "help_system.o" + .align 4 .include "mevent.o" .align 4 |