diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2021-06-10 20:12:11 -0500 |
---|---|---|
committer | Seth Barberee <seth.barberee@gmail.com> | 2021-06-10 20:12:48 -0500 |
commit | e806b05526bfcc540cb2c1f3165a96e76f6c235d (patch) | |
tree | 9796f9b181921ffb335a9627af2986fb44b050f1 /src/code_801AFA4.c | |
parent | 31b46b07829532ba473a2316cd84373f6ae38166 (diff) |
splitting more files and decomp a little more
Diffstat (limited to 'src/code_801AFA4.c')
-rw-r--r-- | src/code_801AFA4.c | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/src/code_801AFA4.c b/src/code_801AFA4.c new file mode 100644 index 0000000..78c1764 --- /dev/null +++ b/src/code_801AFA4.c @@ -0,0 +1,151 @@ +#include "global.h" +#include "memory.h" +#include "text.h" +#include "gUnknown_203B460.h" + +extern struct unkStruct_203B460 *gUnknown_203B460; + +extern u16 sub_80913CC(u8); +extern void sub_8092C84(u8 *, u16); +extern void sub_8099690(u32); +extern u32 sub_801B2F4(void); +extern void sub_801B064(s32); + + +extern void sub_801B200(void); +extern void sub_801B2AC(void); +extern void sub_801B2D8(void); +extern void nullsub_37(); +extern void sub_801B080(); + +extern u32 gUnknown_80DB9BC; +extern u32 gUnknown_80DB9E4; +extern u32 gUnknown_80DBA0C; + +extern u8 gUnknown_202E1C8[0x50]; + +extern bool8 sub_80915A0(u8); +extern void DisplayGulpinDialogueSprite(u32, u32, u32 *); +extern void sub_801B178(void); +extern void sub_8094060(u32 *, u32 *); +extern void PlaySound(u32); +extern void sub_80141B4(u32 *, u32, u32 ,u32); +extern void sub_8014248(u32 *, u32, u32, u32 *, u32, u32, u32, u32, u32); + +struct subStruct_203B22C +{ + u8 fill0[0x2C]; + u32 unk2C; +}; + +struct unkStruct_203B22C +{ + // size: 0xa4 + s32 state; + u32 unk4; + u8 unk8; // item index + u16 unkA; // item move?? + u32 unkC; + u8 fill10[0x58 - 0x10]; + s16 unk58; + u16 unk5A; + struct subStruct_203B22C *unk5C; + u32 unk60; + u32 unk64; +}; +extern struct unkStruct_203B22C *gUnknown_203B22C; + +u32 sub_801AFA4(u32 r0) +{ + gUnknown_203B22C = MemoryAlloc(0xA4, 8); + gUnknown_203B22C->unk4 = r0; + gUnknown_203B22C->unk8 = gUnknown_203B460->fill0[r0].itemIndex; + gUnknown_203B22C->unkA = sub_80913CC(gUnknown_203B22C->unk8); + sub_8092C84(gUnknown_202E1C8, gUnknown_203B22C->unkA); + sub_8099690(0); + if(sub_801B2F4() == 0) + { + sub_801B064(3); + } + else + { + gUnknown_203B22C->unk60 = 4; + sub_801B064(0); + } + return 1; +} + +u32 sub_801B00C(void) +{ + switch(gUnknown_203B22C->state) + { + case 4: + return 3; + case 0: + sub_801B200(); + break; + case 1: + sub_801B2AC(); + break; + default: + sub_801B2D8(); + break; + } + return 0; +} + +void sub_801B048(void) +{ + if(gUnknown_203B22C != NULL) + { + MemoryFree(gUnknown_203B22C); + gUnknown_203B22C = NULL; + } +} + +void sub_801B064(s32 newState) +{ + gUnknown_203B22C->state = newState; + nullsub_37(); + sub_801B080(); +} + +void nullsub_37(void) +{ +} + +void sub_801B080(void) +{ + switch(gUnknown_203B22C->state) + { + case 0: + sub_801B178(); + // #+Who will learn the move + // #+#C5$m7#R? + sub_8014248(&gUnknown_80DB9BC, 0, gUnknown_203B22C->unk60, &gUnknown_203B22C->unk64, 0, 4, 0, 0, 0x20); + break; + case 1: + DisplayGulpinDialogueSprite(2, gUnknown_203B22C->unk58, &gUnknown_203B22C->unkC); + break; + case 2: + sub_8094060(&gUnknown_203B22C->unkC, &gUnknown_203B22C->unk5C->unk2C); + if(!sub_80915A0(gUnknown_203B22C->unk8)) + { + gUnknown_203B460->fill0[gUnknown_203B22C->unk4].numItems = gUnknown_203B22C->unk8 - 0x7D; + gUnknown_203B460->fill0[gUnknown_203B22C->unk4].itemIndex = 0x7C; + } + PlaySound(0x9C << 1); + // #+CM$m8#R learned + // #+the move #C5$m7#R! + sub_80141B4(&gUnknown_80DB9E4, 0, 0, 0x121); + break; + case 3: + // #+No one in the current team + // #+can learn this move. + sub_80141B4(&gUnknown_80DBA0C, 0, 0, 0x121); + break; + default: + case 4: + break; + } +} |