diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-11-24 15:51:55 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-11-24 15:51:55 -0500 |
commit | 2571ba516cb0f21c19405e943c53eebf5d19ab7a (patch) | |
tree | ea3cc719c1ed7b73277fbfc8e784253e2b3d8594 /src | |
parent | 5a262eec73614998a87f3466a0c0924c7317be36 (diff) |
through sub_812C694
Diffstat (limited to 'src')
-rw-r--r-- | src/fame_checker.c | 136 |
1 files changed, 126 insertions, 10 deletions
diff --git a/src/fame_checker.c b/src/fame_checker.c index d311ecb94..0f047f612 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -1,6 +1,9 @@ #include "global.h" #include "constants/songs.h" #include "bg.h" +#include "graphics.h" +#include "item_menu.h" +#include "list_menu.h" #include "gpu_regs.h" #include "palette.h" #include "task.h" @@ -13,13 +16,18 @@ struct FameCheckerData { - u32 unk_00; + void (*unk_00)(void); u16 unk_04; - u8 filler_06[3]; + u8 filler_06[1]; + u8 unk_07_0:1; + u8 unk_07_1:1; + u8 unk_07_2:6; + u8 filler_08[1]; u8 unk_09; u8 unk_0A; u8 unk_0B; - u8 filler_0C[23]; + u8 unk_0C[17]; + u8 unk_1D[6]; u8 unk_23_0:1; u8 unk_23_1:7; }; @@ -36,28 +44,48 @@ EWRAM_DATA struct FameCheckerData * gUnknown_203B0FC = NULL; EWRAM_DATA struct FameCheckerData2 * gUnknown_203B100 = NULL; EWRAM_DATA u32 gUnknown_203B104 = 0; +struct ListMenuTemplate gUnknown_3005EB0; +u8 gUnknown_3005EC8; + void sub_812C3F8(void); void sub_812C648(void); void sub_812C664(u8 taskId); +void sub_812C694(u8 taskId); +bool8 sub_812C8F8(u8 taskId); +void sub_812C9BC(u8 taskId); +void sub_812CAD8(u8 taskId); +void sub_812CD3C(void); +void sub_812CE04(u8 taskId); void sub_812CE9C(void); void sub_812CEC0(void); +void sub_812CEE0(u8 windowId); +void sub_812CEFC(u8 taskId, u8 a1); +void sub_812CF3C(u8 taskId); +void sub_812D0F4(u8 a0); void sub_812D1A8(u8 a0); void sub_812D420(void); void sub_812D558(void); void sub_812D584(void); void sub_812D594(void); +bool8 sub_812D6B4(void); +u8 sub_812D724(s16 a0); +u8 sub_812D7E4(void); +u8 sub_812D888(u8 a0); +void sub_812DA14(u8 a0); void sub_812DB28(void); void sub_812E000(void); +void sub_812E048(void); +u16 sub_812E064(void); +void sub_812E110(u8 taskId); void sub_812E178(u8 a0, s16 a1); +void sub_812E4A4(u8 a0); + +extern const u16 gUnknown_845C600[]; extern const struct BgTemplate gUnknown_845FBF4[4]; +extern const struct SpriteSheet gUnknown_845FB9C[]; +extern const struct SpritePalette gUnknown_845FBDC[]; extern const struct WindowTemplate gUnknown_845FC04[]; -extern const u16 gUnknown_845C600[0x40]; - -extern const u16 gUnknown_8E9F220[0x30]; -extern const u16 gUnknown_8E9F260[0xa50]; -extern const u16 gUnknown_8EA0700[0x400]; -extern const u16 gUnknown_8EA0F00[0x400]; void sub_812C380(void) { @@ -74,7 +102,7 @@ void sub_812C394(void) UpdatePaletteFade(); } -void sub_812C3AC(u32 a0) +void sub_812C3AC(void (*a0)(void)) { SetVBlankCallback(NULL); gUnknown_203B0FC = AllocZeroed(sizeof(struct FameCheckerData)); @@ -165,3 +193,91 @@ void sub_812C3F8(void) break; } } + +void sub_812C648(void) +{ + LoadSpriteSheets(gUnknown_845FB9C); + LoadSpritePalettes(gUnknown_845FBDC); +} + +void sub_812C664(u8 taskId) +{ + if (!gPaletteFade.active) + gTasks[taskId].func = sub_812C694; +} + +void sub_812C694(u8 taskId) +{ + u16 r4; + u8 r4_2; + struct Task *task = &gTasks[taskId]; + s16 * data = gTasks[taskId].data; + if (FindTaskIdByFunc(sub_812E110) == 0xFF) + { + RunTextPrinters(); + if ((gMain.newKeys & SELECT_BUTTON) && !gUnknown_203B0FC->unk_07_1 && gUnknown_203B0FC->unk_00 != sub_8107EB8) + task->func = sub_812CF3C; + else if (gMain.newKeys & START_BUTTON) + { + r4 = sub_812E064(); + if (sub_812C8F8(taskId) == TRUE) + { + PlaySE(SE_W100); + } + else if (r4 != gUnknown_203B0FC->unk_07_2 - 1) + { + PlaySE(SE_W100); + FillWindowPixelRect(3, 0x00, 0, 0, 88, 32); + sub_812CEE0(3); + sub_812E178(2, 4); + sub_812E178(1, 5); + sub_812D0F4(1); + task->data[2] = sub_812D888(gUnknown_203B0FC->unk_0C[r4]); + gSprites[task->data[2]].pos2.x = 0xF0; + gSprites[task->data[2]].data[0] = 1; + task->data[3] = sub_812D7E4(); + gSprites[task->data[3]].pos2.x = 0xF0; + gSprites[task->data[3]].data[0] = 1; + task->func = sub_812C9BC; + } + } + else if (gMain.newKeys & A_BUTTON) + { + r4 = ListMenuHandleInput(0); + if (r4 == gUnknown_203B0FC->unk_07_2 - 1) + task->func = sub_812CF3C; + else if (gUnknown_203B0FC->unk_07_1) + { + if (!IsTextPrinterActive(2) && sub_812D6B4() == TRUE) + sub_812CD3C(); + } + else if (gUnknown_203B0FC->unk_07_0) + { + PlaySE(SE_SELECT); + task->data[0] = sub_812D724(task->data[1]); + for (r4_2 = 0; r4_2 < 6; r4_2++) + { + if (r4_2 != task->data[1]) + sub_812CEFC(gUnknown_203B0FC->unk_1D[r4_2], 1); + } + gUnknown_3005EC8 = 0xFF; + sub_812E4A4(0); + sub_812D0F4(2); + if (gSprites[gUnknown_203B0FC->unk_1D[task->data[1]]].data[1] != 0xFF) + { + sub_812CE04(taskId); + sub_812DA14(data[1]); + } + sub_812E048(); + task->func = sub_812CAD8; + } + } + else if (gMain.newKeys & B_BUTTON) + { + if (sub_812C8F8(taskId) != TRUE) + task->func = sub_812CF3C; + } + else + ListMenuHandleInput(0); + } +} |