summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-04-25 10:20:18 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-04-25 10:20:18 -0400
commitf95188d887ca8073347f13c56e5e7acf53a75ac2 (patch)
tree84c367f94efe803501693223740d6d36ad5569c1 /src
parent9575eba4814cfa96ae863ea2716afecbf2565b71 (diff)
link_rfu_4 is part of mystery_gift_menu
Diffstat (limited to 'src')
-rw-r--r--src/mevent.c4
-rw-r--r--src/mevent_8145654.c4
-rw-r--r--src/mystery_gift_menu.c67
3 files changed, 70 insertions, 5 deletions
diff --git a/src/mevent.c b/src/mevent.c
index a62286f21..564df6c7a 100644
--- a/src/mevent.c
+++ b/src/mevent.c
@@ -240,7 +240,7 @@ u32 sub_8143770(u8 * r4, u16 * r5)
return 0;
}
-void sub_81438A0(void)
+void task_add_00_ereader(void)
{
u8 taskId = CreateTask(sub_8143910, 0);
struct MEventTaskData1 *data = (struct MEventTaskData1 *)gTasks[taskId].data;
@@ -478,7 +478,7 @@ void sub_8143910(u8 taskId)
sub_812B484();
Free(data->t10);
DestroyTask(taskId);
- SetMainCallback2(sub_81422FC);
+ SetMainCallback2(MainCB_FreeAllBuffersAndReturnToInitTitleScreen);
break;
}
}
diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c
index 65f515d1b..7695f18ce 100644
--- a/src/mevent_8145654.c
+++ b/src/mevent_8145654.c
@@ -252,7 +252,7 @@ s32 sub_814593C(bool32 flag)
FreeMonIconPalettes();
break;
case 5:
- sub_8142344(gUnknown_203F3B8, flag);
+ PrintMysteryGiftOrEReaderTopMenu(gGiftIsFromEReader, flag);
break;
case 6:
CopyBgTilemapBufferToVram(0);
@@ -653,7 +653,7 @@ s32 sub_8146604(bool32 flag)
}
break;
case 5:
- sub_8142344(gUnknown_203F3B8, flag);
+ PrintMysteryGiftOrEReaderTopMenu(gGiftIsFromEReader, flag);
break;
case 6:
sub_8142420();
diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c
index 7b7fd71a1..0085786c3 100644
--- a/src/mystery_gift_menu.c
+++ b/src/mystery_gift_menu.c
@@ -9,15 +9,22 @@
#include "text.h"
#include "window.h"
#include "text_window.h"
+#include "menu.h"
#include "new_menu_helpers.h"
#include "sound.h"
#include "mystery_gift_menu.h"
+#include "title_screen.h"
#include "link_rfu.h"
#include "constants/songs.h"
+extern const struct TextColor gUnknown_8466EE8;
+
EWRAM_DATA u8 sDownArrowCounterAndYCoordIdx[8] = {};
EWRAM_DATA bool8 gGiftIsFromEReader = FALSE;
+void task_add_00_mystery_gift(void);
+void task_add_00_ereader(void);
+
static const u16 gUnkTextboxBorderPal[] = INCBIN_U16("graphics/interface/unk_textbox_border.gbapal");
static const u32 gUnkTextboxBorderGfx[] = INCBIN_U32("graphics/interface/unk_textbox_border.4bpp.lz");
@@ -164,7 +171,7 @@ bool32 HandleMysteryGiftOrEReaderSetup(s32 mg_or_ereader)
FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 0x11);
FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x11);
sub_8142420();
- sub_8142344(mg_or_ereader, 0);
+ PrintMysteryGiftOrEReaderTopMenu(mg_or_ereader, 0);
gMain.state++;
break;
case 2:
@@ -186,3 +193,61 @@ bool32 HandleMysteryGiftOrEReaderSetup(s32 mg_or_ereader)
return FALSE;
}
+void c2_mystery_gift(void)
+{
+ if (HandleMysteryGiftOrEReaderSetup(0))
+ {
+ SetMainCallback2(c2_mystery_gift_e_reader_run);
+ gGiftIsFromEReader = FALSE;
+ task_add_00_mystery_gift();
+ }
+}
+
+void c2_ereader(void)
+{
+ if (HandleMysteryGiftOrEReaderSetup(1))
+ {
+ SetMainCallback2(c2_mystery_gift_e_reader_run);
+ gGiftIsFromEReader = TRUE;
+ task_add_00_ereader();
+ }
+}
+
+void MainCB_FreeAllBuffersAndReturnToInitTitleScreen(void)
+{
+ gGiftIsFromEReader = FALSE;
+ FreeAllWindowBuffers();
+ Free(GetBgTilemapBuffer(0));
+ Free(GetBgTilemapBuffer(1));
+ Free(GetBgTilemapBuffer(2));
+ Free(GetBgTilemapBuffer(3));
+ SetMainCallback2(CB2_InitTitleScreen);
+}
+
+extern const u8 gUnknown_8415F51[];
+extern const u8 gUnknown_841EDCA[];
+extern const u8 gUnknown_841EDBD[];
+extern const u8 gUnknown_841DE50[];
+extern const u8 gUnknown_841DE51[];
+
+void PrintMysteryGiftOrEReaderTopMenu(bool8 mg_or_ereader, bool32 usePickOkCancel)
+{
+ const u8 * src;
+ s32 width;
+ FillWindowPixelBuffer(0, 0x00);
+ if (!mg_or_ereader)
+ {
+ src = usePickOkCancel == TRUE ? gUnknown_8415F51 : gUnknown_841EDCA;
+ AddTextPrinterParametrized2(0, 2, 2, 2, 0, 0, &gUnknown_8466EE8, 0, gUnknown_841EDBD);
+ width = 222 - GetStringWidth(0, src, 0);
+ AddTextPrinterParametrized2(0, 0, width, 2, 0, 0, &gUnknown_8466EE8, 0, src);
+ }
+ else
+ {
+ AddTextPrinterParametrized2(0, 2, 2, 2, 0, 0, &gUnknown_8466EE8, 0, gUnknown_841DE50);
+ AddTextPrinterParametrized2(0, 0, 0x78, 2, 0, 0, &gUnknown_8466EE8, 0, gUnknown_841DE51);
+ }
+ CopyWindowToVram(0, 2);
+ PutWindowTilemap(0);
+}
+