summaryrefslogtreecommitdiff
path: root/src/code_801AFA4.c
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2021-06-10 20:12:11 -0500
committerSeth Barberee <seth.barberee@gmail.com>2021-06-10 20:12:48 -0500
commite806b05526bfcc540cb2c1f3165a96e76f6c235d (patch)
tree9796f9b181921ffb335a9627af2986fb44b050f1 /src/code_801AFA4.c
parent31b46b07829532ba473a2316cd84373f6ae38166 (diff)
splitting more files and decomp a little more
Diffstat (limited to 'src/code_801AFA4.c')
-rw-r--r--src/code_801AFA4.c151
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;
+ }
+}