main_menu through sub_800CE70
This commit is contained in:
+328
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user