summaryrefslogtreecommitdiff
path: root/src/code_801C620.c
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2021-05-23 16:19:35 -0500
committerGitHub <noreply@github.com>2021-05-23 16:19:35 -0500
commiteaa141c612dd1689936a21bd57018a55ff686b69 (patch)
treefafe2a9a562af6a8e36716ff76a5b3e8b30d4411 /src/code_801C620.c
parentf402e46cd3c8b7236673d6edbae77903a7cc0618 (diff)
Keep on keepin on (#38)
* end of may dump of work * move save text to src * decomp a little more
Diffstat (limited to 'src/code_801C620.c')
-rw-r--r--src/code_801C620.c197
1 files changed, 197 insertions, 0 deletions
diff --git a/src/code_801C620.c b/src/code_801C620.c
new file mode 100644
index 0000000..66269c9
--- /dev/null
+++ b/src/code_801C620.c
@@ -0,0 +1,197 @@
+#include "global.h"
+#include "input.h"
+#include "memory.h"
+
+struct unkData
+{
+ u8 unk0[24];
+};
+
+
+struct subStruct_203B240
+{
+ char * unk0;
+ char * unk4;
+};
+
+struct unkStruct_203B240
+{
+ s32 unk0;
+ u8 unk4;
+ u8 fill5[3];
+ s32 unk8;
+ s32 unkC;
+ struct subStruct_203B240 *unk10[2];
+ u8 fill14[0x20 - 0x18];
+ u32 unk20;
+ u32 unk24;
+ struct unkData unk28[4];
+ u32 unk88;
+};
+
+extern struct unkStruct_203B240 *gUnknown_203B240;
+extern char gUnknown_80DBE2C[]; // $i0
+extern char gUnknown_80DBE30[]; // $m0
+extern u8 gUnknown_202DE58[0x58];
+extern u8 gAvailablePokemonNames[0x58];
+
+
+extern void ResetSprites(u32);
+extern void sub_801317C(u32 *);
+extern void sub_80140B4(struct unkData *);
+extern void sub_800641C(struct unkData *,u32, u32);
+
+
+extern void sub_8014FF0(u32, u32, char *, u32, u32);
+extern void sub_8008C54(u32);
+extern void sub_80073B8(u32);
+extern void xxx_call_draw_string(u32, u32, char *, u32, u32);
+extern void sub_80073E0(u32);
+extern u32 sub_8097DF0(char *, struct subStruct_203B240 **);
+extern u32 sub_8012A64(u32 *, u32);
+extern void sub_8013F84();
+extern void PlayMenuSoundEffect(u32);
+extern char * GetIQSkillName(u8 r0);
+extern char * GetIQSkillDescription(u8 r0);
+
+void sub_801C6D0(s32);
+void sub_801C7D4();
+void sub_801C6E4();
+void sub_801C848();
+
+u32 sub_801C620(u8 param_1)
+{
+ ResetSprites(1);
+ gUnknown_203B240 = MemoryAlloc(0x94,8);
+ gUnknown_203B240->unk4 = param_1;
+ sub_801317C(&gUnknown_203B240->unk88);
+ gUnknown_203B240->unk24 = 0;
+ sub_80140B4(gUnknown_203B240->unk28);
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B240->unk28,1,1);
+ sub_801C6D0(0);
+ return 1;
+}
+
+u32 sub_801C674(void)
+{
+ switch(gUnknown_203B240->unk0)
+ {
+ case 0:
+ sub_801C7D4();
+ break;
+ case 1:
+ sub_801C848();
+ break;
+ case 3:
+ return 3;
+ case 2:
+ default:
+ return 2;
+ }
+ return 0;
+}
+
+void sub_801C6B4(void)
+{
+ if(gUnknown_203B240 != NULL)
+ {
+ MemoryFree(gUnknown_203B240);
+ gUnknown_203B240 = NULL;
+ }
+}
+
+void sub_801C6D0(s32 unk0)
+{
+ gUnknown_203B240->unk0 = unk0;
+ sub_801C6E4();
+}
+
+void sub_801C6E4(void)
+{
+ char *skillName;
+ struct subStruct_203B240 *preload;
+
+ switch(gUnknown_203B240->unk0)
+ {
+ case 0:
+ sub_8008C54(gUnknown_203B240->unk24);
+ sub_80073B8(gUnknown_203B240->unk24);
+ skillName = GetIQSkillName(gUnknown_203B240->unk4);
+ strcpy(gUnknown_202DE58,skillName);
+ sub_8014FF0(16,0,gUnknown_80DBE2C,0,0); // $i0
+ xxx_call_draw_string(8,16,GetIQSkillDescription(gUnknown_203B240->unk4),gUnknown_203B240->unk24,0);
+ sub_80073E0(gUnknown_203B240->unk24);
+ gUnknown_203B240->unkC = sub_8097DF0(GetIQSkillDescription(gUnknown_203B240->unk4),gUnknown_203B240->unk10);
+ gUnknown_203B240->unk20 = 0;
+ break;
+ case 1:
+ sub_8008C54(gUnknown_203B240->unk24);
+ sub_80073B8(gUnknown_203B240->unk24);
+ preload = gUnknown_203B240->unk10[gUnknown_203B240->unk8];
+ strcpy(gAvailablePokemonNames,preload->unk0);
+ sub_8014FF0(16,0,gUnknown_80DBE30,gUnknown_203B240->unk24,0); // $m0
+ sub_8014FF0(4,16,gUnknown_203B240->unk10[gUnknown_203B240->unk8]->unk4, gUnknown_203B240->unk24,0);
+ sub_80073E0(gUnknown_203B240->unk24);
+ break;
+ case 2:
+ case 3:
+ break;
+ }
+}
+
+void sub_801C7D4(void)
+{
+
+ if (gUnknown_203B240->unkC != 0) {
+ if ((gUnknown_203B240->unk20 & 8) != 0) {
+ sub_8013F84();
+ }
+ gUnknown_203B240->unk20++;
+ }
+ switch(sub_8012A64(&gUnknown_203B240->unk88,gUnknown_203B240->unk24))
+ {
+ case 1:
+ PlayMenuSoundEffect(0);
+ if (gUnknown_203B240->unkC != 0) {
+ gUnknown_203B240->unk8 = 0;
+ sub_801C6D0(1);
+ }
+ else {
+ sub_801C6D0(3);
+ }
+ break;
+ case 2:
+ PlayMenuSoundEffect(1);
+ sub_801C6D0(2);
+ break;
+ }
+}
+
+void sub_801C848(void)
+{
+
+ if (gUnknown_203B240->unk8 < (gUnknown_203B240->unkC - 1)) {
+ if ((gUnknown_203B240->unk20 & 8) != 0) {
+ sub_8013F84();
+ }
+ gUnknown_203B240->unk20++;
+ }
+ switch(sub_8012A64(&gUnknown_203B240->unk88,gUnknown_203B240->unk24))
+ {
+ case 1:
+ PlayMenuSoundEffect(0);
+ gUnknown_203B240->unk8++;
+ if (gUnknown_203B240->unk8 < gUnknown_203B240->unkC) {
+ sub_801C6D0(1);
+ }
+ else {
+ sub_801C6D0(0);
+ }
+ break;
+ case 2:
+ PlayMenuSoundEffect(1);
+ sub_801C6D0(2);
+ break;
+ }
+}