summaryrefslogtreecommitdiff
path: root/src/wonder_mail_4.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/wonder_mail_4.c')
-rw-r--r--src/wonder_mail_4.c137
1 files changed, 137 insertions, 0 deletions
diff --git a/src/wonder_mail_4.c b/src/wonder_mail_4.c
new file mode 100644
index 0000000..873daf4
--- /dev/null
+++ b/src/wonder_mail_4.c
@@ -0,0 +1,137 @@
+#include "global.h"
+#include "text.h"
+#include "input.h"
+#include "memory.h"
+
+struct unkStruct_203B320
+{
+ // size: 0xC4
+ u8 unk0[4];
+ u8 fill4[0x20 - 4];
+ u32 unk20;
+ u8 fill24[0x3C - 0x24];
+ s16 unk3C;
+ s16 unk3E;
+ s16 unk40;
+ s16 unk42;
+ s16 unk44;
+ s16 unk46;
+ u8 fill48[0x58 - 0x48];
+ u32 unk58;
+ struct UnkTextStruct2 *unk5C;
+ struct UnkTextStruct2 unk60[4];
+ u8 unkC0[4];
+};
+extern struct unkStruct_203B320 *gUnknown_203B320;
+extern struct UnkTextStruct2 gUnknown_80E083C;
+extern struct UnkTextStruct2 gUnknown_80E0854;
+
+extern u8 sub_8030C20(u32);
+extern s32 sub_8030A74(void);
+extern void sub_80308A0(void);
+extern void sub_803092C(void);
+extern void sub_8012D08(struct UnkTextStruct2 *, s32);
+extern void sub_8013818(void *, u32, u32, u32);
+
+extern u8 sub_80138B8(u8 *, u32);
+extern void sub_8013660(u8 *);
+extern s32 GetKeyPress(u8 *);
+extern void PlayMenuSoundEffect(u32);
+extern void sub_8013984(u8 *);
+extern void AddMenuCursorSprite(u8 *);
+
+u32 sub_80306A8(u32 r0, u32 r1, struct UnkTextStruct2_sub *r2, u32 r3)
+{
+ if(sub_8030C20(r0))
+ return 0;
+ gUnknown_203B320 = MemoryAlloc(sizeof(struct unkStruct_203B320), 0x8);
+ gUnknown_203B320->unk20 = r0;
+ gUnknown_203B320->unk58 = r1;
+
+ gUnknown_203B320->unk5C = &gUnknown_203B320->unk60[gUnknown_203B320->unk58];
+ sub_8006518(gUnknown_203B320->unk60);
+
+ gUnknown_203B320->unk60[gUnknown_203B320->unk58] = gUnknown_80E0854;
+ gUnknown_203B320->unk5C->unk14 = gUnknown_203B320->unkC0;
+
+ if(r2 != 0)
+ {
+ gUnknown_203B320->unk60[gUnknown_203B320->unk58].unk08 = *r2;
+ }
+
+
+ sub_8012D08(gUnknown_203B320->unk5C, r3);
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B320->unk60, 1, 1);
+ sub_8013818(gUnknown_203B320->fill24, sub_8030A74(), r3, r1);
+ sub_80308A0();
+ sub_803092C();
+ return 1;
+}
+
+u32 sub_8030768(u8 r0)
+{
+ if(r0 == 0)
+ {
+ sub_8013660(gUnknown_203B320->fill24);
+ return 0;
+ }
+ switch(GetKeyPress(gUnknown_203B320->fill24))
+ {
+ case 4:
+ PlayMenuSoundEffect(4);
+ return 4;
+ case 2:
+ PlayMenuSoundEffect(1);
+ return 2;
+ case 1:
+ PlayMenuSoundEffect(0);
+ return 3;
+ default:
+ if(sub_80138B8(gUnknown_203B320->fill24, 1) != 0)
+ {
+ sub_80308A0();
+ sub_803092C();
+ return 1;
+ }
+ else
+ return 0;
+ }
+}
+
+u8 sub_80307EC(void)
+{
+ return gUnknown_203B320->unk0[(gUnknown_203B320->unk42 * gUnknown_203B320->unk40) + gUnknown_203B320->unk3C];
+}
+
+void sub_8030810(u32 r0)
+{
+ u8 r0_u8;
+
+ r0_u8 = r0; // cast needed..
+
+ gUnknown_203B320->unk46 = sub_8030A74();
+ sub_8013984(gUnknown_203B320->fill24);
+
+ sub_80308A0();
+ sub_803092C();
+ if(r0_u8 != 0)
+ AddMenuCursorSprite(gUnknown_203B320->fill24);
+}
+
+void sub_803084C()
+{
+ if(gUnknown_203B320 != NULL)
+ {
+ gUnknown_203B320->unk60[gUnknown_203B320->unk58] = gUnknown_80E083C;
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B320->unk60, 1, 1);
+ MemoryFree(gUnknown_203B320);
+ gUnknown_203B320 = NULL;
+ }
+}
+
+u8 *sub_8030894()
+{
+ return gUnknown_203B320->unk0;
+}