summaryrefslogtreecommitdiff
path: root/src/wonder_mail_3.c
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2021-04-19 21:55:40 -0700
committerGitHub <noreply@github.com>2021-04-19 23:55:40 -0500
commitf65dee5a143bd543c74c010d7252eb76893ee243 (patch)
treed343e826c63f8b501d37873c3c7bc1f010819deb /src/wonder_mail_3.c
parentd316d1e359c7672277a9cf644acd4e40170f5968 (diff)
Wonder mail and some boss dialogues (#36)
* more wonder mail and main menu work * Lots of things.. doc'ing, decomping, and other things * continue decomping boss scenes * up to Suicune * up to Mewtwo dialogue * up to Raquaza * fix spelling error on Rayquaza and decomp a few more * up to groudon * divide > shift
Diffstat (limited to 'src/wonder_mail_3.c')
-rw-r--r--src/wonder_mail_3.c106
1 files changed, 106 insertions, 0 deletions
diff --git a/src/wonder_mail_3.c b/src/wonder_mail_3.c
new file mode 100644
index 0000000..7951efc
--- /dev/null
+++ b/src/wonder_mail_3.c
@@ -0,0 +1,106 @@
+#include "global.h"
+
+struct unkStruct_203B2F8
+{
+ // size: 0x208
+ u32 unk0; // state
+ u32 unk4;
+ u8 unk8;
+ u8 unk9;
+ u8 unkA;
+ u8 unkB;
+ u32 unkC;
+ u8 fill10[0x6C - 0x10];
+ u32 unk6C;
+ u32 unk70;
+ u32 unk74;
+};
+extern struct unkStruct_203B2F8 *gUnknown_203B2F8;
+
+extern void *MemoryAlloc(u32, u32);
+extern void MemoryFree(void *);
+extern u8 sub_8099328(u8 *);
+extern u32 sub_8011C1C();
+extern void sub_802D1A0(u32);
+
+extern void sub_802D7D0();
+extern void sub_802D8CC();
+extern void sub_802D940();
+extern void sub_802D9F0();
+extern void sub_802DA60();
+extern void sub_802D82C();
+extern void sub_802DA84();
+extern void sub_802D1B8();
+extern void sub_802D2A8();
+
+
+u32 sub_802D098(u32 param_1)
+{
+ gUnknown_203B2F8 = MemoryAlloc(0x208,8);
+ gUnknown_203B2F8->unk6C = 0;
+ gUnknown_203B2F8->unk70 = 0;
+ gUnknown_203B2F8->unk74 = 0;
+ gUnknown_203B2F8->unkC = param_1;
+ gUnknown_203B2F8->unk8 = 0;
+ gUnknown_203B2F8->unk9 = sub_8099328(&gUnknown_203B2F8->unkA);
+ if (sub_8011C1C() != 2) {
+ gUnknown_203B2F8->unk9 = 0;
+ }
+ sub_802D1A0(0);
+ return 1;
+}
+
+u32 sub_802D0E0(void)
+{
+ switch(gUnknown_203B2F8->unk0) {
+ case 0:
+ break;
+ case 1:
+ sub_802D7D0();
+ break;
+ case 0xb:
+ case 0xc:
+ sub_802D8CC();
+ break;
+ case 0xd:
+ sub_802D940();
+ break;
+ case 0xe:
+ sub_802D9F0();
+ break;
+ case 0xf:
+ case 0x10:
+ sub_802DA60();
+ break;
+ case 9:
+ sub_802D82C();
+ break;
+ case 2:
+ return 3;
+ default:
+ sub_802DA84();
+ break;
+ }
+ return 0;
+}
+
+u8 sub_802D178(void)
+{
+ return gUnknown_203B2F8->unk8;
+}
+
+void sub_802D184(void)
+{
+ if(gUnknown_203B2F8 != NULL)
+ {
+ MemoryFree(gUnknown_203B2F8);
+ gUnknown_203B2F8 = NULL;
+ }
+}
+
+void sub_802D1A0(u32 newState)
+{
+ gUnknown_203B2F8->unk0 = newState;
+ sub_802D1B8();
+ sub_802D2A8();
+}