diff options
author | Marcus Huderle <huderlem@gmail.com> | 2019-04-15 19:24:32 -0500 |
---|---|---|
committer | huderlem <huderlem@gmail.com> | 2019-04-16 11:21:13 -0500 |
commit | c7954e12129c3f8b99fa7b002b84a59da654354e (patch) | |
tree | 3ab44eb59d03da6f75b3331e2781859d09bf6e45 /src | |
parent | 394c0f5546aa152012f0c812d1e6cf0a696bfe86 (diff) |
Decompile pokenav_unk_4.c through sub_81CB678()
Diffstat (limited to 'src')
-rw-r--r-- | src/pokenav_match_call_ui.c | 8 | ||||
-rwxr-xr-x | src/pokenav_unk_4.c | 248 |
2 files changed, 250 insertions, 6 deletions
diff --git a/src/pokenav_match_call_ui.c b/src/pokenav_match_call_ui.c index 8134fc00e..72449c7c0 100644 --- a/src/pokenav_match_call_ui.c +++ b/src/pokenav_match_call_ui.c @@ -505,7 +505,7 @@ struct MatchCallWindowState *GetMatchCallWindowStruct(void) return &structPtr->unk888; } -u32 MatchCall_MoveCursorUp(void) +int MatchCall_MoveCursorUp(void) { struct MatchCallWindowState *structPtr; structPtr = GetMatchCallWindowStruct(); @@ -529,7 +529,7 @@ u32 MatchCall_MoveCursorUp(void) } } -u32 MatchCall_MoveCursorDown(void) +int MatchCall_MoveCursorDown(void) { struct MatchCallWindowState *structPtr; structPtr = GetMatchCallWindowStruct(); @@ -554,7 +554,7 @@ u32 MatchCall_MoveCursorDown(void) return 2; } -u32 MatchCall_PageUp(void) +int MatchCall_PageUp(void) { struct MatchCallWindowState *structPtr; s32 scroll; @@ -580,7 +580,7 @@ u32 MatchCall_PageUp(void) } } -u32 MatchCall_PageDown(void) +int MatchCall_PageDown(void) { struct MatchCallWindowState *structPtr; structPtr = GetMatchCallWindowStruct(); diff --git a/src/pokenav_unk_4.c b/src/pokenav_unk_4.c index c07794126..9a90090ac 100755 --- a/src/pokenav_unk_4.c +++ b/src/pokenav_unk_4.c @@ -1,6 +1,10 @@ #include "global.h" +#include "bg.h" +#include "menu.h" #include "pokenav.h" +#include "sound.h" #include "window.h" +#include "constants/songs.h" struct Pokenav4Struct { @@ -14,15 +18,34 @@ struct Pokenav4Struct u8 unk14; u8 filler15[0x4]; u8 unk19; - u8 filler1A[0x202E]; + u8 filler1A[0xA]; + u8 unk24[0x800]; + u8 unk824[0x800]; + u8 unk1024[0x800]; + u8 unk1824[0x824]; }; static bool32 sub_81CB310(void); -u32 sub_81CB324(int); +static u32 sub_81CB324(int); void sub_81CBC1C(void); void sub_81CC2B4(void); +void sub_81CC034(struct Pokenav4Struct *); +void sub_81CBBB8(void); +void sub_81CBD78(struct Pokenav4Struct *); +void sub_81CBDC0(struct Pokenav4Struct *); +void sub_81CBEF8(struct Pokenav4Struct *, int); +void sub_81CC214(void); +void sub_81CBC38(int); extern const LoopedTask gUnknown_08622798[]; +extern const struct BgTemplate gUnknown_0862278C[3]; +extern const u16 gUnknown_08622510[]; +extern const u32 gUnknown_08622530[]; +extern const u32 gUnknown_08622760[]; +extern const u16 gUnknown_08622700[]; +extern const u16 gUnknown_08622720[]; +extern const u8 gUnknown_086225D4[]; +extern const u16 gUnknown_086226E0[]; bool32 sub_81CB260(void) { @@ -65,3 +88,224 @@ static bool32 sub_81CB310(void) struct Pokenav4Struct *state = GetSubstructPtr(6); return IsLoopedTaskActive(state->unk4); } + +static u32 sub_81CB324(int taskState) +{ + struct Pokenav4Struct *state = GetSubstructPtr(6); + switch (taskState) + { + case 0: + InitBgTemplates(gUnknown_0862278C, ARRAY_COUNT(gUnknown_0862278C)); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + decompress_and_copy_tile_data_to_vram(2, gUnknown_08622530, 0, 0, 0); + SetBgTilemapBuffer(2, state->unk1024); + CopyToBgTilemapBuffer(2, gUnknown_086225D4, 0, 0); + CopyBgTilemapBufferToVram(2); + CopyPaletteIntoBufferUnfaded(gUnknown_08622510, 0x20, 0x20); + CopyBgTilemapBufferToVram(2); + return 0; + case 1: + if (free_temp_tile_data_buffers_if_possible()) + return 2; + + sub_8199DF0(1, 0, 0, 1); + SetBgTilemapBuffer(1, state->unk24); + FillBgTilemapBufferRect_Palette0(1, 0x1000, 0, 0, 32, 20); + CopyPaletteIntoBufferUnfaded(gUnknown_086226E0, 0x10, 0x20); + CopyBgTilemapBufferToVram(1); + return 0; + case 2: + if (free_temp_tile_data_buffers_if_possible()) + return 2; + + sub_81CC034(state); + decompress_and_copy_tile_data_to_vram(3, gUnknown_08622760, 0, 0, 0); + CopyPaletteIntoBufferUnfaded(gUnknown_08622700, 0x30, 0x20); + CopyPaletteIntoBufferUnfaded(gUnknown_08622720, 0x50, 0x20); + return 0; + case 3: + if (free_temp_tile_data_buffers_if_possible() || !sub_81CAE28()) + return 2; + + sub_81CBBB8(); + return 0; + case 4: + if (sub_81C8224()) + return 2; + + sub_81CBD78(state); + return 0; + case 5: + sub_81CBDC0(state); + sub_81CBEF8(state, 0); + return 0; + case 6: + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ShowBg(2); + ShowBg(3); + ShowBg(1); + sub_81CC214(); + LoadLeftHeaderGfxForIndex(3); + sub_81C7FA0(3, 1, 0); + sub_81C7AC0(1); + return 0; + case 7: + if (IsPaletteFadeActive() || sub_81C8010()) + return 2; + + sub_81CBC38(1); + return 4; + default: + return 4; + } +} + +u32 sub_81CB510(int taskState) +{ + struct Pokenav4Struct *state = GetSubstructPtr(6); + switch (taskState) + { + case 0: + switch (MatchCall_MoveCursorDown()) + { + case 0: + break; + case 1: + PlaySE(SE_SELECT); + return 7; + case 2: + PlaySE(SE_SELECT); + // fall through + default: + return 0; + } + break; + case 1: + if (sub_81C8630()) + return 2; + + sub_81CBEF8(state, 0); + return 0; + case 2: + sub_81CBEF8(state, 0); + return 0; + case 3: + if (IsDma3ManagerBusyWithBgCopy()) + return 2; + break; + } + return 4; +} + +u32 sub_81CB588(int taskState) +{ + struct Pokenav4Struct *state = GetSubstructPtr(6); + switch (taskState) + { + case 0: + switch (MatchCall_MoveCursorUp()) + { + case 0: + break; + case 1: + PlaySE(SE_SELECT); + return 7; + case 2: + PlaySE(SE_SELECT); + // fall through + default: + return 0; + } + break; + case 1: + if (sub_81C8630()) + return 2; + + sub_81CBEF8(state, 0); + return 0; + case 2: + sub_81CBEF8(state, 0); + return 0; + case 3: + if (IsDma3ManagerBusyWithBgCopy()) + return 2; + break; + } + return 4; +} + +u32 sub_81CB600(int taskState) +{ + struct Pokenav4Struct *state = GetSubstructPtr(6); + switch (taskState) + { + case 0: + switch (MatchCall_PageDown()) + { + case 0: + break; + case 1: + PlaySE(SE_SELECT); + return 7; + case 2: + PlaySE(SE_SELECT); + // fall through + default: + return 0; + } + break; + case 1: + if (sub_81C8630()) + return 2; + + sub_81CBEF8(state, 0); + return 0; + case 2: + sub_81CBEF8(state, 0); + return 0; + case 3: + if (IsDma3ManagerBusyWithBgCopy()) + return 2; + break; + } + return 4; +} + +u32 sub_81CB678(int taskState) +{ + struct Pokenav4Struct *state = GetSubstructPtr(6); + switch (taskState) + { + case 0: + switch (MatchCall_PageUp()) + { + case 0: + break; + case 1: + PlaySE(SE_SELECT); + return 7; + case 2: + PlaySE(SE_SELECT); + // fall through + default: + return 0; + } + break; + case 1: + if (sub_81C8630()) + return 2; + + sub_81CBEF8(state, 0); + return 0; + case 2: + sub_81CBEF8(state, 0); + return 0; + case 3: + if (IsDma3ManagerBusyWithBgCopy()) + return 2; + break; + } + return 4; +} |