summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/clear_save_data_menu.c124
1 files changed, 120 insertions, 4 deletions
diff --git a/src/clear_save_data_menu.c b/src/clear_save_data_menu.c
index c3879339d..11eda7209 100644
--- a/src/clear_save_data_menu.c
+++ b/src/clear_save_data_menu.c
@@ -7,15 +7,18 @@
#include "palette.h"
#include "sound.h"
-extern bool8 sub_8148970(void);
-extern void sub_8148830(u8);
-extern void sub_81488BC(u8);
-
extern u8 gSystemText_ClearAllSaveDataPrompt[];
extern u8 gSystemText_ClearingData[];
extern u8 *gUnknown_08376D74[][2];
+void c2_clear_save_data_screen_2(void);
+void sub_814881C(void);
+void sub_8148830(u8);
+void sub_81488BC(u8);
void sub_8148930(u8);
+void sub_8148954(void);
+static void VBlankCB_InitMenu(void);
+u8 sub_8148970(void);
void sub_8148B34(void);
void c2_clear_save_data_screen_2(void)
@@ -69,3 +72,116 @@ void sub_81488BC(u8 taskId)
AnimateSprites();
BuildOamBuffer();
}
+
+void sub_8148930(u8 r0_in)
+{
+ calls_flash_erase_block();
+ DestroyTask(r0_in);
+ SetMainCallback2(sub_8148B34);
+}
+
+void sub_8148954(void)
+{
+ RunTasks();
+ UpdatePaletteFade();
+}
+
+static void VBlankCB_InitMenu(void)
+{
+ TransferPlttBuffer();
+}
+
+u8 sub_8148970(void)
+{
+ u16 i;
+ u16 ime;
+
+ switch (gMain.state)
+ {
+ case 0:
+ default:
+ SetVBlankCallback(NULL);
+
+ REG_DISPCNT = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ REG_WIN0H = 0;
+ REG_WIN0V = 0;
+ REG_WININ = 0;
+ REG_WINOUT = 0;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+
+ DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
+ DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
+
+ ResetPaletteFade();
+
+ gPlttBufferUnfaded[0] = 0x7fff;
+ gPlttBufferFaded[0] = 0x7fff;
+ gPlttBufferUnfaded[1] = 0x3945;
+ gPlttBufferFaded[1] = 0x3945;
+
+ i = 0;
+ do
+ {
+ ((vu16 *)(VRAM + 0x20))[i] = 0x1111;
+ i++;
+ } while (i < 0x10);
+
+ i = 0;
+ do
+ {
+ ((vu16 *)(VRAM + 0x3800))[i] = 0x0001;
+ i++;
+ } while (i < 0x500);
+
+ ResetTasks();
+ ResetSpriteData();
+
+ SetUpWindowConfig(&gWindowConfig_81E6C3C);
+ InitMenuWindow(&gWindowConfig_81E6CE4);
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0xffff);
+
+ ime = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = ime;
+ REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
+
+ SetVBlankCallback(VBlankCB_InitMenu);
+
+ REG_BG3CNT = 0x0703;
+ REG_DISPCNT = 0x0900;
+ gMain.state = 1;
+ return 0;
+ case 1:
+ UpdatePaletteFade();
+ if (gPaletteFade.active)
+ return 0;
+ SetMainCallback2(sub_8148954);
+ return 1;
+ }
+}
+
+void sub_8148B34(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ default:
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0xffff);
+ gMain.state = 1;
+ break;
+ case 1:
+ UpdatePaletteFade();
+ if (gPaletteFade.active)
+ return;
+ DoSoftReset();
+ break;
+ }
+}