diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2021-06-18 17:56:20 -0500 |
---|---|---|
committer | Seth Barberee <seth.barberee@gmail.com> | 2021-06-18 17:56:20 -0500 |
commit | f1fdcc2b0ade13ad1a4cc7360eac70f27396d26a (patch) | |
tree | 3ac5b9f61650299f96095e3d3c09ad771793be08 /src/code_801B3C0.c | |
parent | e806b05526bfcc540cb2c1f3165a96e76f6c235d (diff) |
more splitting and labeling with some decomp
Diffstat (limited to 'src/code_801B3C0.c')
-rw-r--r-- | src/code_801B3C0.c | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/src/code_801B3C0.c b/src/code_801B3C0.c new file mode 100644 index 0000000..3d24376 --- /dev/null +++ b/src/code_801B3C0.c @@ -0,0 +1,189 @@ +#include "global.h" +#include "text.h" +#include "input.h" +#include "memory.h" + +struct subStruct_203B240 +{ + char * unk0; + char * unk4; +}; + +struct unkStruct_41C +{ + u8 unk41C; + u8 unk41D; + u8 unk41E; + u8 unk41F; +}; + +// based off of 203B240.. +struct unkStruct_203B230 +{ + // size: 0x94 + s32 state; + struct unkStruct_41C unk4; + s32 unk8; + s32 unkC; + struct subStruct_203B240 *unk10[2]; + u8 fill14[0x20 - 0x18]; + u32 unk20; + u32 unk24; + struct UnkTextStruct2 unk28[4]; + u32 unk88; + u32 unk8C; + u32 unk90; +}; +extern struct unkStruct_203B230 *gUnknown_203B230; + +extern u8 gAvailablePokemonNames[0x58]; +extern u8 gUnknown_80DBA4C[]; + +extern void sub_8008C54(u32); +extern void sub_80073E0(u32); +extern void sub_80073B8(u32); +extern void sub_8014FF0(u32, u32, u8 *, u32, u32); +extern void PlayMenuSoundEffect(u32); +extern void sub_8013F84(void); +extern u32 sub_8012A64(u32 *, u32); +extern s32 sub_80913E0(struct unkStruct_41C *, u32, struct subStruct_203B240 **); + +extern void sub_801317C(u32 *); +extern void sub_80140B4(struct UnkTextStruct2 *); +extern void sub_801B46C(u32); +extern void ResetSprites(u32); + +void sub_801B51C(); +void sub_801B590(); +void sub_801B480(); + + +u32 sub_801B3C0(struct unkStruct_41C *param_1) +{ + ResetSprites(1); + gUnknown_203B230 = MemoryAlloc(sizeof(struct unkStruct_203B230),8); + gUnknown_203B230->unk4 = *param_1; + sub_801317C(&gUnknown_203B230->unk88); + gUnknown_203B230->unk24 = 0; + sub_80140B4(gUnknown_203B230->unk28); + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B230->unk28,1,1); + sub_801B46C(0); + return 1; +} + +u32 sub_801B410(void) +{ + switch(gUnknown_203B230->state) + { + case 0: + sub_801B51C(); + break; + case 1: + sub_801B590(); + break; + case 3: + return 3; + case 2: + default: + return 2; + } + return 0; +} + +void sub_801B450(void) +{ + if(gUnknown_203B230 != NULL) + { + MemoryFree(gUnknown_203B230); + gUnknown_203B230 = NULL; + } +} + +void sub_801B46C(u32 newState) +{ + gUnknown_203B230->state = newState; + sub_801B480(); +} + +void sub_801B480(void) +{ + struct subStruct_203B240 *preload; + switch(gUnknown_203B230->state) + { + case 0: + sub_8008C54(gUnknown_203B230->unk24); + gUnknown_203B230->unkC = sub_80913E0(&gUnknown_203B230->unk4, gUnknown_203B230->unk24, gUnknown_203B230->unk10); + gUnknown_203B230->unk20 = 0; + break; + case 1: + sub_8008C54(gUnknown_203B230->unk24); + sub_80073B8(gUnknown_203B230->unk24); + preload = gUnknown_203B230->unk10[gUnknown_203B230->unk8]; + strcpy(gAvailablePokemonNames, preload->unk0); + sub_8014FF0(16, 0, gUnknown_80DBA4C, gUnknown_203B230->unk24, 0); // $m0 + sub_8014FF0(4, 16, gUnknown_203B230->unk10[gUnknown_203B230->unk8]->unk4, gUnknown_203B230->unk24, 0); + sub_80073E0(gUnknown_203B230->unk24); + break; + case 2: + default: + break; + } +} + +void sub_801B51C(void) +{ + if(gUnknown_203B230->unkC != 0) + { + if(gUnknown_203B230->unk20 & 8) + sub_8013F84(); + gUnknown_203B230->unk20++; + } + switch(sub_8012A64(&gUnknown_203B230->unk88, gUnknown_203B230->unk24)) + { + case 1: + PlayMenuSoundEffect(0); + if(gUnknown_203B230->unkC != 0) + { + gUnknown_203B230->unk8 = 0; + sub_801B46C(1); + } + else + sub_801B46C(3); + break; + case 2: + PlayMenuSoundEffect(1); + sub_801B46C(2); + break; + default: + break; + } +} + +void sub_801B590(void) +{ + + if (gUnknown_203B230->unk8 < (gUnknown_203B230->unkC - 1)) { + if ((gUnknown_203B230->unk20 & 8)) { + sub_8013F84(); + } + gUnknown_203B230->unk20++; + } + switch(sub_8012A64(&gUnknown_203B230->unk88,gUnknown_203B230->unk24)) + { + case 1: + PlayMenuSoundEffect(0); + gUnknown_203B230->unk8++; + if (gUnknown_203B230->unk8 < gUnknown_203B230->unkC) { + sub_801B46C(1); + } + else { + sub_801B46C(0); + } + break; + case 2: + PlayMenuSoundEffect(1); + sub_801B46C(2); + break; + } +} |