mirror of
https://github.com/pret/pokeruby.git
synced 2026-10-06 01:03:46 -04:00
bdb3dea2b7
* make ROM match again * clean up item_use.c labels and clarify functions. * label and clarify some functions in decompress.c * label and clarify berry.c * rename 20239F8 to gBattleTypeFlags * formatting * label intro.c a bit * label battle_ai.c and document some stuff * formatting * more labeling and clarification. * more label stuff
181 lines
4.2 KiB
C
181 lines
4.2 KiB
C
#include "global.h"
|
|
#include "clear_save_data_menu.h"
|
|
#include "save.h"
|
|
#include "task.h"
|
|
#include "songs.h"
|
|
#include "menu.h"
|
|
#include "main.h"
|
|
#include "sprite.h"
|
|
#include "palette.h"
|
|
#include "sound.h"
|
|
|
|
extern u8 gSystemText_ClearAllSaveDataPrompt[];
|
|
extern u8 gSystemText_ClearingData[];
|
|
extern const struct MenuAction gMenuYesNoItems[];
|
|
|
|
static void VBlankCB_ClearSaveDataScreen(void);
|
|
static void Task_InitMenu(u8);
|
|
static void Task_ProcessMenuInput(u8);
|
|
static void Task_ClearSaveData(u8);
|
|
static void CB2_ClearSaveDataScreen(void);
|
|
static void VBlankCB_InitClearSaveDataScreen(void);
|
|
static u8 InitClearSaveDataScreen(void);
|
|
static void CB2_SoftReset(void);
|
|
|
|
void CB2_InitClearSaveDataScreen(void)
|
|
{
|
|
if (InitClearSaveDataScreen())
|
|
{
|
|
CreateTask(Task_InitMenu, 0);
|
|
}
|
|
}
|
|
|
|
static void VBlankCB_ClearSaveDataScreen(void)
|
|
{
|
|
LoadOam();
|
|
ProcessSpriteCopyRequests();
|
|
TransferPlttBuffer();
|
|
}
|
|
|
|
static void Task_InitMenu(u8 taskId)
|
|
{
|
|
ResetSpriteData();
|
|
|
|
REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON;
|
|
|
|
SetVBlankCallback(VBlankCB_ClearSaveDataScreen);
|
|
MenuDrawTextWindow(2, 14, 27, 19);
|
|
MenuPrint(gSystemText_ClearAllSaveDataPrompt, 3, 15);
|
|
|
|
MenuDrawTextWindow(2, 1, 8, 6);
|
|
PrintMenuItems(3, 2, 2, gMenuYesNoItems);
|
|
InitMenu(0, 3, 2, 2, 1, 5);
|
|
|
|
gTasks[taskId].func = Task_ProcessMenuInput;
|
|
}
|
|
|
|
static void Task_ProcessMenuInput(u8 taskId)
|
|
{
|
|
switch (ProcessMenuInputNoWrap_())
|
|
{
|
|
case 0:
|
|
PlaySE(SE_SELECT);
|
|
sub_8071F40(gSystemText_ClearingData);
|
|
gTasks[taskId].func = Task_ClearSaveData;
|
|
break;
|
|
case -1:
|
|
case 1:
|
|
PlaySE(SE_SELECT);
|
|
DestroyTask(taskId);
|
|
SetMainCallback2(CB2_SoftReset);
|
|
break;
|
|
}
|
|
AnimateSprites();
|
|
BuildOamBuffer();
|
|
}
|
|
|
|
static void Task_ClearSaveData(u8 taskId)
|
|
{
|
|
ClearSaveData();
|
|
DestroyTask(taskId);
|
|
SetMainCallback2(CB2_SoftReset);
|
|
}
|
|
|
|
static void CB2_ClearSaveDataScreen(void)
|
|
{
|
|
RunTasks();
|
|
UpdatePaletteFade();
|
|
}
|
|
|
|
static void VBlankCB_InitClearSaveDataScreen(void)
|
|
{
|
|
TransferPlttBuffer();
|
|
}
|
|
|
|
static u8 InitClearSaveDataScreen(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;
|
|
|
|
for (i = 0; i < 0x10; i++)
|
|
((u16 *)(VRAM + 0x20))[i] = 0x1111;
|
|
|
|
for (i = 0; i < 0x500; i++)
|
|
((u16 *)(VRAM + 0x3800))[i] = 0x0001;
|
|
|
|
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_InitClearSaveDataScreen);
|
|
|
|
REG_BG3CNT = 0x0703;
|
|
REG_DISPCNT = 0x0900;
|
|
gMain.state = 1;
|
|
return 0;
|
|
case 1:
|
|
UpdatePaletteFade();
|
|
if (gPaletteFade.active)
|
|
return 0;
|
|
SetMainCallback2(CB2_ClearSaveDataScreen);
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
static void CB2_SoftReset(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;
|
|
}
|
|
}
|