summaryrefslogtreecommitdiff
path: root/src
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 /src
parent2fe6b6db8cd681de8cf1671936452aa8bb1103f5 (diff)
main_menu through sub_800CE70
Diffstat (limited to 'src')
-rw-r--r--src/main_menu.c328
-rw-r--r--src/mystery_gift_menu.c66
-rw-r--r--src/quest_log.c14
3 files changed, 337 insertions, 71 deletions
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)