summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-09-28 16:11:41 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-09-28 16:11:41 -0400
commitb6c7c6523fedb21e5928fbaf8e01747f4283cfc1 (patch)
tree78a5883fe8d09df73735088bec0bc331cd60b29a /src
parentdb3d5c90433a94747c23e48cf85badfc5286b07f (diff)
berry_pouch through sub_813D0E4
Diffstat (limited to 'src')
-rw-r--r--src/berry_pouch.c88
1 files changed, 86 insertions, 2 deletions
diff --git a/src/berry_pouch.c b/src/berry_pouch.c
index c9894923c..fb69600fc 100644
--- a/src/berry_pouch.c
+++ b/src/berry_pouch.c
@@ -1,6 +1,8 @@
#include "global.h"
#include "malloc.h"
#include "bg.h"
+#include "decompress.h"
+#include "gpu_regs.h"
#include "palette.h"
#include "text.h"
#include "berry_pouch.h"
@@ -10,6 +12,7 @@
#include "scanline_effect.h"
#include "item_menu_icons.h"
#include "list_menu.h"
+#include "graphics.h"
#include "constants/items.h"
struct BerryPouchStruct_203F36C
@@ -20,8 +23,8 @@ struct BerryPouchStruct_203F36C
u8 filler_007[2];
u8 unk_009;
u8 filler_00a[2];
- u8 filler_00c[0x800];
- u16 unk_80C[4];
+ u8 unk_00C[BG_SCREEN_SIZE];
+ s16 unk_80C[4];
};
struct BerryPouchStruct_203F370
@@ -55,6 +58,37 @@ void sub_813DA68(u8 taskId);
void sub_813E910(void);
void sub_813EC08(void);
+static const struct BgTemplate gUnknown_846434C[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0x000
+ }, {
+ .bg = 1,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x000
+ }, {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000
+ }
+};
+
+extern const struct CompressedSpriteSheet gUnknown_84644A8;
+extern const struct CompressedSpritePalette gUnknown_84644B0;
+
void InitBerryPouch(u8 a0, void (*savedCallback)(void), u8 a2)
{
u8 i;
@@ -231,3 +265,53 @@ void sub_813D048(u8 taskId)
DestroyTask(taskId);
}
}
+
+void sub_813D07C(void)
+{
+ ResetAllBgsCoordinatesAndBgCntRegs();
+ memset(gUnknown_203F36C->unk_00C, 0, BG_SCREEN_SIZE);
+ ResetBgsAndClearDma3BusyFlags(FALSE);
+ InitBgsFromTemplates(0, gUnknown_846434C, NELEMS(gUnknown_846434C));
+ SetBgTilemapBuffer(1, gUnknown_203F36C->unk_00C);
+ ScheduleBgCopyTilemapToVram(1);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+}
+
+bool8 sub_813D0E4(void)
+{
+ switch (gUnknown_203F36C->unk_80C[0])
+ {
+ case 0:
+ ResetTempTileDataBuffers();
+ DecompressAndCopyTileDataToVram(1, gUnknown_8E859D0, 0, 0, 0);
+ gUnknown_203F36C->unk_80C[0]++;
+ break;
+ case 1:
+ if (FreeTempTileDataBuffersIfPossible() != TRUE)
+ {
+ LZDecompressWram(gUnknown_8E85C44, gUnknown_203F36C->unk_00C);
+ gUnknown_203F36C->unk_80C[0]++;
+ }
+ break;
+ case 2:
+ LoadCompressedPalette(gUnknown_8E85BA4, 0, 0x60);
+ if (gSaveBlock2Ptr->playerGender != MALE)
+ LoadCompressedPalette(gUnknown_8E85BF4, 0, 0x20);
+ gUnknown_203F36C->unk_80C[0]++;
+ break;
+ case 3:
+ LoadCompressedSpriteSheet(&gUnknown_84644A8);
+ gUnknown_203F36C->unk_80C[0]++;
+ break;
+ default:
+ LoadCompressedSpritePalette(&gUnknown_84644B0);
+ gUnknown_203F36C->unk_80C[0] = 0;
+ return TRUE;
+ }
+
+ return FALSE;
+}