summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-03-05 13:58:14 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2020-03-05 13:58:14 -0500
commitb56c2b75b4be20c37e0863a10a3e21c58976f8e2 (patch)
tree3822ca802fac9529746ca72454f23b60bebca5e6 /src
parentcb99443c51d6263425fb4d853177efc07aee5fb9 (diff)
Finish dodrio_berry_picking_2.c
Diffstat (limited to 'src')
-rw-r--r--src/dodrio_berry_picking_2.c221
1 files changed, 203 insertions, 18 deletions
diff --git a/src/dodrio_berry_picking_2.c b/src/dodrio_berry_picking_2.c
index aac4b485f..15a99fd66 100644
--- a/src/dodrio_berry_picking_2.c
+++ b/src/dodrio_berry_picking_2.c
@@ -5,30 +5,14 @@
#include "item.h"
#include "link.h"
#include "menu.h"
+#include "new_menu_helpers.h"
+#include "save.h"
#include "strings.h"
#include "task.h"
#include "text_window.h"
#include "text_window_graphics.h"
#include "constants/songs.h"
-// Temporary stopgap to export duplicate data
-// included from data/dodrio_berry_picking.h
-asm(".global sDodrioBerryStatusGfx\n"
- "\t.global sDodrioBerrySpritesGfx\n"
- "\t.global sDodrioBerryPlatformGfx\n"
- "\t.global sDodrioBerryBgTilemap1\n"
- "\t.global sDodrioBerryBgTilemap2Left\n"
- "\t.global sDodrioBerryBgTilemap2Right\n"
- "\t.global sUnknown_8475674\n"
- "\t.global sUnknown_8475684\n"
- "\t.global sUnknown_847568C\n"
- "\t.global sUnknown_84756A4\n"
- "\t.global sUnknown_847569C\n"
- "\t.global sUnknown_847565C\n"
- "\t.global sDodrioBerryBgPal1\n"
- "\t.global sDodrioBerryBgGfx1\n"
- "\t.global sDodrioBerryBgGfx2");
-
struct DodrioStruct_2022CF4
{
u8 filler_00[0xc];
@@ -1429,3 +1413,204 @@ void sub_81556E0(void)
break;
}
}
+
+void sub_8155A78(void)
+{
+ switch (gUnknown_203F440->state)
+ {
+ case 0:
+ DrawDialogueFrame(0, FALSE);
+ AddTextPrinterParameterized2(0, 2, gText_SavingDontTurnOffThePower2, 0, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY);
+ gUnknown_203F440->state++;
+ break;
+ case 1:
+ CopyWindowToVram(0, 3);
+ gUnknown_203F440->state++;
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ CreateTask(sub_80DA634, 0);
+ gUnknown_203F440->state++;
+ }
+ break;
+ case 3:
+ if (!FuncIsActiveTask(sub_80DA634))
+ gUnknown_203F440->state++;
+ break;
+ default:
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203F440->finished = TRUE;
+ break;
+ }
+}
+
+void sub_8155B4C(void)
+{
+ switch (gUnknown_203F440->state)
+ {
+ case 0:
+ gUnknown_203F440->unk3008[0] = AddWindow(&sUnknown_84756A4);
+ ClearWindowTilemap(gUnknown_203F440->unk3008[0]);
+ sub_8154868(&sUnknown_84756A4);
+ gUnknown_203F440->state++;
+ break;
+ case 1:
+ FillWindowPixelBuffer(gUnknown_203F440->unk3008[0], PIXEL_FILL(1));
+ AddTextPrinterParameterized(gUnknown_203F440->unk3008[0], 2, gText_CommunicationStandby3, 0, 6, -1, NULL);
+ CopyWindowToVram(gUnknown_203F440->unk3008[0], 2);
+ gUnknown_203F440->state++;
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ PutWindowTilemap(gUnknown_203F440->unk3008[0]);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203F440->state++;
+ break;
+ default:
+ gUnknown_203F440->finished = TRUE;
+ break;
+ }
+}
+
+void sub_8155C2C(void)
+{
+ ClearWindowTilemap(gUnknown_203F440->unk3008[0]);
+ RemoveWindow(gUnknown_203F440->unk3008[0]);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203F440->finished = TRUE;
+}
+
+void sub_8155C80(void)
+{
+ switch (gUnknown_203F440->state)
+ {
+ case 0:
+ gUnknown_203F440->unk3008[0] = AddWindow(&sUnknown_847569C);
+ ClearWindowTilemap(gUnknown_203F440->unk3008[0]);
+ sub_8154868(&sUnknown_847569C);
+ gUnknown_203F440->state++;
+ gUnknown_203F440->unk301C = 0;
+ gUnknown_203F440->unk3020 = 0;
+ gUnknown_203F440->unk3024 = 0;
+ break;
+ case 1:
+ FillWindowPixelBuffer(gUnknown_203F440->unk3008[0], PIXEL_FILL(1));
+ AddTextPrinterParameterized(gUnknown_203F440->unk3008[0], 2, gText_SomeoneDroppedOut, 0, 6, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(gUnknown_203F440->unk3008[0], 2);
+ gUnknown_203F440->state++;
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ PutWindowTilemap(gUnknown_203F440->unk3008[0]);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203F440->state++;
+ break;
+ case 3:
+ if (++gUnknown_203F440->unk301C >= 120)
+ gUnknown_203F440->state++;
+ break;
+ default:
+ gUnknown_203F440->unk3024 = 5;
+ ClearWindowTilemap(gUnknown_203F440->unk3008[0]);
+ RemoveWindow(gUnknown_203F440->unk3008[0]);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203F440->finished = TRUE;
+ break;
+ }
+}
+
+void unused_0(void)
+{
+ DestroyTask(gUnknown_203F440->unk3004);
+ gUnknown_203F440->finished = TRUE;
+}
+
+void nullsub_98(void)
+{
+
+}
+
+void sub_8155E24(void (*func)(void))
+{
+ gUnknown_203F440->state = 0;
+ gUnknown_203F440->finished = FALSE;
+ gUnknown_203F440->unk3028 = func;
+}
+
+void (*sub_8155E54(void))(void)
+{
+ return gUnknown_203F440->unk3028;
+}
+
+bool32 sub_8155E68(void)
+{
+ if (gUnknown_203F440->finished == TRUE)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+u8 sub_8155E8C(void)
+{
+ return gUnknown_203F440->unk3024;
+}
+
+void sub_8155EA0(void)
+{
+ DmaClearLarge16(3, (void *)VRAM, VRAM_SIZE, 0x1000);
+ DmaClear32(3,(void *)OAM, OAM_SIZE);
+ DmaClear16(3, (void *)PLTT, PLTT_SIZE);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ ResetBgsAndClearDma3BusyFlags(FALSE);
+ InitBgsFromTemplates(0, sUnknown_847565C, ARRAY_COUNT(sUnknown_847565C));
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ InitStandardTextBoxWindows();
+ ResetBg0();
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ SetBgTilemapBuffer(3, gUnknown_203F440->tilemapBuffers[0]);
+ SetBgTilemapBuffer(1, gUnknown_203F440->tilemapBuffers[1]);
+ SetBgTilemapBuffer(2, gUnknown_203F440->tilemapBuffers[2]);
+}
+
+bool32 sub_8155FE0(void)
+{
+ switch (gUnknown_203F440->unk3018)
+ {
+ case 0:
+ LoadPalette(sDodrioBerryBgPal1, 0, sizeof(sDodrioBerryBgPal1));
+ break;
+ case 1:
+ ResetTempTileDataBuffers();
+ break;
+ case 2:
+ DecompressAndCopyTileDataToVram(3, sDodrioBerryBgGfx1, 0, 0, 0);
+ break;
+ case 3:
+ DecompressAndCopyTileDataToVram(1, sDodrioBerryBgGfx2, 0, 0, 0);
+ break;
+ case 4:
+ if (FreeTempTileDataBuffersIfPossible() == TRUE)
+ return FALSE;
+ break;
+ case 5:
+ LoadPalette(stdpal_get(3), 0xD0, 0x20);
+ break;
+ default:
+ gUnknown_203F440->unk3018 = 0;
+ return TRUE;
+ }
+
+ gUnknown_203F440->unk3018++;
+ return FALSE;
+}