through sub_81081AC
This commit is contained in:
+281
@@ -0,0 +1,281 @@
|
||||
#include "global.h"
|
||||
#include "bag.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "bg.h"
|
||||
#include "help_system.h"
|
||||
#include "item_menu.h"
|
||||
#include "item_menu_icons.h"
|
||||
#include "list_menu.h"
|
||||
#include "malloc.h"
|
||||
#include "new_menu_helpers.h"
|
||||
#include "overworld.h"
|
||||
#include "palette.h"
|
||||
#include "scanline_effect.h"
|
||||
#include "text.h"
|
||||
#include "constants/items.h"
|
||||
|
||||
struct BagMenuAlloc
|
||||
{
|
||||
u32 field_00;
|
||||
u8 field_04;
|
||||
u8 field_05_0:4;
|
||||
u8 field_05_4:2;
|
||||
u8 field_05_6:2;
|
||||
u16 field_06;
|
||||
u8 field_08;
|
||||
u8 field_09;
|
||||
u8 filler_0A[6];
|
||||
u8 field_10[4];
|
||||
};
|
||||
|
||||
EWRAM_DATA struct BagStruct gUnknown_203ACFC = {};
|
||||
EWRAM_DATA struct BagMenuAlloc * gUnknown_203AD10 = NULL;
|
||||
EWRAM_DATA void * gUnknown_203AD14 = NULL;
|
||||
EWRAM_DATA struct ListMenuItem * gUnknown_203AD18 = NULL;
|
||||
EWRAM_DATA u8 (*gUnknown_203AD1C)[20] = NULL;
|
||||
|
||||
void sub_8107F10(void);
|
||||
bool8 sub_8107F3C(void);
|
||||
void sub_810813C(void);
|
||||
void sub_8108178(u8 taskId);
|
||||
void sub_81081AC(void);
|
||||
bool8 sub_81081D0(void);
|
||||
bool8 sub_8108240(void);
|
||||
u8 sub_8108388(u8 location);
|
||||
bool8 sub_81083F4(void);
|
||||
void sub_810842C(u8 a0);
|
||||
void sub_81087EC(void);
|
||||
void sub_8108888(void);
|
||||
void sub_81088D8(void);
|
||||
void sub_8108A68(void);
|
||||
void sub_8108A84(void);
|
||||
void sub_8108B04(void);
|
||||
void sub_8108C10(void);
|
||||
void sub_8108E54(void);
|
||||
|
||||
void GoToBagMenu(u8 location, u8 a1, MainCallback a2)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
sub_81081AC();
|
||||
gUnknown_203AD10 = Alloc(sizeof(struct BagMenuAlloc));
|
||||
if (gUnknown_203AD10 == NULL)
|
||||
SetMainCallback2(a2);
|
||||
else
|
||||
{
|
||||
if (location != 11)
|
||||
gUnknown_203ACFC.location = location;
|
||||
if (a2 != NULL)
|
||||
gUnknown_203ACFC.bagCallback = a2;
|
||||
gUnknown_203AD10->field_00 = 0;
|
||||
gUnknown_203AD10->field_04 = 0xFF;
|
||||
gUnknown_203AD10->field_05_4 = 0;
|
||||
gUnknown_203AD10->field_05_6 = 0;
|
||||
gUnknown_203AD10->field_08 = 0xFF;
|
||||
gUnknown_203AD10->field_09 = 0xFF;
|
||||
if (location == 3)
|
||||
gUnknown_203AD10->field_05_0 = 1;
|
||||
else if (location == 6)
|
||||
gUnknown_203AD10->field_05_0 = 2;
|
||||
else
|
||||
gUnknown_203AD10->field_05_0 = 0;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
gUnknown_203AD10->field_10[i] = 0;
|
||||
}
|
||||
if (a1 == 0 || a1 == 1 || a1 == 2)
|
||||
gUnknown_203ACFC.unk6 = a1;
|
||||
gTextFlags.autoScroll = FALSE;
|
||||
gSpecialVar_ItemId = ITEM_NONE;
|
||||
SetMainCallback2(sub_8107F10);
|
||||
}
|
||||
}
|
||||
|
||||
void CB2_BagMenuFromStartMenu(void)
|
||||
{
|
||||
GoToBagMenu(0, 3, CB2_ReturnToFieldWithOpenMenu);
|
||||
}
|
||||
|
||||
void sub_8107ECC(void)
|
||||
{
|
||||
GoToBagMenu(5, 3, SetCB2ToReshowScreenAfterMenu2);
|
||||
}
|
||||
|
||||
void sub_8107EE0(void)
|
||||
{
|
||||
RunTasks();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
DoScheduledBgTilemapCopiesToVram();
|
||||
UpdatePaletteFade();
|
||||
}
|
||||
|
||||
void sub_8107EFC(void)
|
||||
{
|
||||
LoadOam();
|
||||
ProcessSpriteCopyRequests();
|
||||
TransferPlttBuffer();
|
||||
}
|
||||
|
||||
void sub_8107F10(void)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
if ((u8)sub_80BF72C() == TRUE)
|
||||
break;
|
||||
if (sub_8107F3C() == TRUE)
|
||||
break;
|
||||
if (MenuHelpers_LinkSomething() == TRUE)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_8107F3C(void)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
switch (gMain.state)
|
||||
{
|
||||
case 0:
|
||||
SetVBlankHBlankCallbacksToNull();
|
||||
ClearScheduledBgCopiesToVram();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 1:
|
||||
ScanlineEffect_Stop();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 2:
|
||||
FreeAllSpritePalettes();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 3:
|
||||
ResetPaletteFade();
|
||||
gPaletteFade.bufferTransferDisabled = TRUE;
|
||||
gMain.state++;
|
||||
break;
|
||||
case 4:
|
||||
ResetSpriteData();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 5:
|
||||
ResetItemMenuIconState();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 6:
|
||||
if (!MenuHelpers_LinkSomething())
|
||||
{
|
||||
ResetTasks();
|
||||
}
|
||||
gMain.state++;
|
||||
break;
|
||||
case 7:
|
||||
if (sub_81081D0())
|
||||
{
|
||||
gUnknown_203AD10->field_10[0] = 0;
|
||||
gMain.state++;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_810813C();
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
if (sub_8108240() == TRUE)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 9:
|
||||
sub_810B858();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 10:
|
||||
sub_8108E54();
|
||||
sub_8108A68();
|
||||
sub_8108A84();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 11:
|
||||
if (!sub_81083F4())
|
||||
{
|
||||
sub_810813C();
|
||||
return TRUE;
|
||||
}
|
||||
gMain.state++;
|
||||
break;
|
||||
case 12:
|
||||
sub_810842C(gUnknown_203ACFC.unk6);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 13:
|
||||
if (gUnknown_203ACFC.location != 3)
|
||||
sub_81087EC();
|
||||
else
|
||||
sub_810B994();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 14:
|
||||
taskId = sub_8108388(gUnknown_203ACFC.location);
|
||||
gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203ACFC.cursorPos[gUnknown_203ACFC.unk6], gUnknown_203ACFC.itemsAbove[gUnknown_203ACFC.unk6]);
|
||||
gTasks[taskId].data[3] = 0;
|
||||
gTasks[taskId].data[8] = 0;
|
||||
gMain.state++;
|
||||
break;
|
||||
case 15:
|
||||
sub_80984FC(gUnknown_203ACFC.unk6);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 16:
|
||||
sub_8108888();
|
||||
sub_81088D8();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 17:
|
||||
sub_80985E4();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 18:
|
||||
sub_8108C10();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 19:
|
||||
if (gUnknown_203ACFC.location == 3)
|
||||
HelpSystem_SetSomeVariable2(29);
|
||||
else
|
||||
HelpSystem_SetSomeVariable2(9);
|
||||
gPaletteFade.bufferTransferDisabled = FALSE;
|
||||
gMain.state++;
|
||||
break;
|
||||
default:
|
||||
SetVBlankCallback(sub_8107EFC);
|
||||
SetMainCallback2(sub_8107EE0);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_810813C(void)
|
||||
{
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK);
|
||||
CreateTask(sub_8108178, 0);
|
||||
SetVBlankCallback(sub_8107EFC);
|
||||
SetMainCallback2(sub_8107EE0);
|
||||
}
|
||||
|
||||
void sub_8108178(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
SetMainCallback2(gUnknown_203ACFC.bagCallback);
|
||||
sub_8108B04();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81081AC(void)
|
||||
{
|
||||
gUnknown_203AD10 = NULL;
|
||||
gUnknown_203AD14 = NULL;
|
||||
gUnknown_203AD18 = NULL;
|
||||
gUnknown_203AD1C = NULL;
|
||||
}
|
||||
Reference in New Issue
Block a user