summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-09-28 12:33:01 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-09-28 12:33:01 -0400
commitdb3d5c90433a94747c23e48cf85badfc5286b07f (patch)
tree41cc0e3434015001f9b8a858399459c7a400a731 /src
parent3ab2de40cf164a86af27eff7a46215d3d927f47f (diff)
Start berry_pouch decomp
Diffstat (limited to 'src')
-rw-r--r--src/berry_pouch.c233
1 files changed, 233 insertions, 0 deletions
diff --git a/src/berry_pouch.c b/src/berry_pouch.c
new file mode 100644
index 000000000..c9894923c
--- /dev/null
+++ b/src/berry_pouch.c
@@ -0,0 +1,233 @@
+#include "global.h"
+#include "malloc.h"
+#include "bg.h"
+#include "palette.h"
+#include "text.h"
+#include "berry_pouch.h"
+#include "item_menu.h"
+#include "menu_helpers.h"
+#include "new_menu_helpers.h"
+#include "scanline_effect.h"
+#include "item_menu_icons.h"
+#include "list_menu.h"
+#include "constants/items.h"
+
+struct BerryPouchStruct_203F36C
+{
+ u32 unk_000;
+ u8 filler_004[2];
+ u8 unk_006;
+ u8 filler_007[2];
+ u8 unk_009;
+ u8 filler_00a[2];
+ u8 filler_00c[0x800];
+ u16 unk_80C[4];
+};
+
+struct BerryPouchStruct_203F370
+{
+ void (*savedCallback)(void);
+ u8 unk_04;
+ u8 unk_05;
+ u8 filler_06[2];
+ u16 unk_08;
+ u16 unk_0A;
+};
+
+EWRAM_DATA struct BerryPouchStruct_203F36C *gUnknown_203F36C = NULL;
+EWRAM_DATA struct BerryPouchStruct_203F370 gUnknown_203F370 = {};
+
+void sub_813CE30(void);
+bool8 sub_813CE5C(void);
+void sub_813D00C(void);
+void sub_813D048(u8 taskId);
+void sub_813D07C(void);
+bool8 sub_813D0E4(void);
+bool8 sub_813D1C0(void);
+void sub_813D204(void);
+void sub_813D5BC(void);
+void sub_813D6A4(void);
+void sub_813D6F4(void);
+void sub_813D754(void);
+void sub_813D7CC(void);
+void sub_813D8AC(void);
+void sub_813DA68(u8 taskId);
+void sub_813E910(void);
+void sub_813EC08(void);
+
+void InitBerryPouch(u8 a0, void (*savedCallback)(void), u8 a2)
+{
+ u8 i;
+
+ gUnknown_203F36C = Alloc(sizeof(struct BerryPouchStruct_203F36C));
+ if (gUnknown_203F36C == NULL)
+ {
+ SetMainCallback2(savedCallback);
+ }
+ else
+ {
+ if (a0 != 6)
+ gUnknown_203F370.unk_04 = a0;
+ if (a2 != 0xFF)
+ gUnknown_203F370.unk_05 = a2;
+ if (savedCallback != NULL)
+ gUnknown_203F370.savedCallback = savedCallback;
+ gUnknown_203F36C->unk_000 = 0;
+ gUnknown_203F36C->unk_009 = 0;
+ gUnknown_203F36C->unk_006 = 0xFF;
+ for (i = 0; i < 4; i++)
+ gUnknown_203F36C->unk_80C[i] = 0;
+ gTextFlags.autoScroll = FALSE;
+ gSpecialVar_ItemId = ITEM_NONE;
+ SetMainCallback2(sub_813CE30);
+ }
+}
+
+void sub_813CE00(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ DoScheduledBgTilemapCopiesToVram();
+ UpdatePaletteFade();
+}
+
+void sub_813CE1C(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void sub_813CE30(void)
+{
+ while (1)
+ {
+ if (sub_80BF72C() == TRUE)
+ break;
+ if (sub_813CE5C() == TRUE)
+ break;
+ if (MenuHelpers_LinkSomething() == TRUE)
+ break;
+ }
+}
+
+bool8 sub_813CE5C(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();
+ 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:
+ sub_813D07C();
+ gUnknown_203F36C->unk_80C[0] = 0;
+ gMain.state++;
+ break;
+ case 8:
+ if (sub_813D0E4())
+ gMain.state++;
+ break;
+ case 9:
+ sub_813E910();
+ gMain.state++;
+ break;
+ case 10:
+ sub_813D8AC();
+ sub_813D6F4();
+ sub_813D754();
+ gMain.state++;
+ break;
+ case 11:
+ if (!sub_813D1C0())
+ {
+ sub_813D00C();
+ return TRUE;
+ }
+ gMain.state++;
+ break;
+ case 12:
+ sub_813D204();
+ gMain.state++;
+ break;
+ case 13:
+ sub_813D6A4();
+ gMain.state++;
+ break;
+ case 14:
+ taskId = CreateTask(sub_813DA68, 0);
+ gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203F370.unk_0A, gUnknown_203F370.unk_08);
+ gTasks[taskId].data[8] = 0;
+ gMain.state++;
+ break;
+ case 15:
+ sub_813EC08();
+ gMain.state++;
+ break;
+ case 16:
+ sub_813D5BC();
+ gMain.state++;
+ break;
+ case 17:
+ BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
+ gMain.state++;
+ break;
+ case 18:
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 16, 0, RGB_BLACK);
+ gMain.state++;
+ break;
+ default:
+ SetVBlankCallback(sub_813CE1C);
+ SetMainCallback2(sub_813CE00);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void sub_813D00C(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK);
+ CreateTask(sub_813D048, 0);
+ SetVBlankCallback(sub_813CE1C);
+ SetMainCallback2(sub_813CE00);
+}
+
+void sub_813D048(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(gUnknown_203F370.savedCallback);
+ sub_813D7CC();
+ DestroyTask(taskId);
+ }
+}