diff options
Diffstat (limited to 'src/wonder_mail_mid.c')
-rw-r--r-- | src/wonder_mail_mid.c | 399 |
1 files changed, 399 insertions, 0 deletions
diff --git a/src/wonder_mail_mid.c b/src/wonder_mail_mid.c new file mode 100644 index 0000000..93b2f5e --- /dev/null +++ b/src/wonder_mail_mid.c @@ -0,0 +1,399 @@ +#include "global.h" +#include "file_system.h" + +struct unkStruct_203B2C4 +{ + // size: 0x564 + u8 unk0; + u8 padding[3]; + u32 unk4; // wonder mail link status?? + u8 unk8[0x36]; + u8 unk3E; + u32 unk40; + u32 unk44; // another link status + u8 filler48[0x218 - 0x48]; + s8 unk218; + u32 unk21C; + u8 filler220[0x30C - 0x220]; + u32 unk30C; + u8 filler310[0x35C - 0x310]; + u32 unk35C; + u8 filler360[0x3BC - 0x360]; + u32 unk3BC; + u8 filler3C0[0x41C - 0x3C0]; + u8 unk41C[4]; // TODO: unify this with wonder_mail.c + struct OpenedFile *faceFile; + u8 *faceData; + u16 unk428; + u16 unk42A; + u8 unk42C; + u8 unk42D; + u8 unk42E; + u32 unk430; + u8 filler434[0x534 - 0x434]; + s32 unk534; + u32 unk538; +}; +extern struct unkStruct_203B2C4 *gUnknown_203B2C4; + + +extern u16 gUnknown_80E5990[]; +extern struct unkStruct_203B340 *gUnknown_203B340; +extern s32 sub_8001658(u32, u32); +extern u32 gUnknown_80E4A40[]; +extern u8 sub_8099B94(); + +extern void sub_8099A5C(u32, u32, u32*); +extern void sub_8099AFC(u32, u32, u32*); +extern void sub_800641C(void *, u32, u32); +extern void ResetUnusedInputStruct(); +extern void sub_8099690(u32); +extern void sub_80141B4(u32 *r0, u32, u32 *r1, u32); + + +extern void MemoryFill8(u8 *dest, u8 value, s32 size); +extern u32 gUnknown_80DF194; +extern void sub_8029EC4(u32 param_1); + +extern void sub_802B2BC(u32); +extern u32 sub_80144A4(s32 *r0); +extern u32 sub_8031DCC(void); +extern void sub_8031E00(void); +extern void sub_8031E10(void); +extern void sub_8030D40(u8, u32); +extern u32 sub_8030768(u32); +extern void sub_803084C(void); +extern s8 sub_80307EC(void); +extern void sub_8006518(u32 *); +extern u8 sub_8012FD8(u32 *r0); +extern void sub_8013114(u32 *, s32 *); +extern void sub_8035CC0(u32 *, u32); +extern void sub_8030810(u32); +extern u32 sub_8030DA0(); +extern void sub_8030DE4(); +extern void sub_803092C(); +extern void sub_8035CF4(u32 *, u32, u32); +extern u32 sub_801CA08(u32); +extern void sub_801CBB8(); +extern void sub_801B3C0(u8 *); +extern u8 sub_801CB24(); +extern void sub_801B450(); +extern u32 sub_801B410(); +extern void sub_801CB5C(u32); +extern void sub_801CCD8(); +extern void sub_8011C28(u32); +extern void sub_8012574(u32); + +void sub_8029F98(void) +{ + s32 auStack20; + + if (sub_80144A4(&auStack20) != 0) { + return; + } + MemoryFill8(gUnknown_203B2C4->unk41C, 0, 4); + gUnknown_203B2C4->unk41C[2] = 0; + gUnknown_203B2C4->unk41C[1] = 1; + gUnknown_203B2C4->unk41C[0] = 0; + if (gUnknown_203B2C4->unk44 == 0) { + switch(gUnknown_203B2C4->unk40) + { + case 6: + switch(gUnknown_203B2C4->unk534) + { + case 3: + case 5: + case 6: + sub_80141B4(&gUnknown_80DF194, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d); + break; + case 4: + default: + break; + } + sub_802B2BC(0xD); + return; + case 7: + sub_802B2BC(0x21); + return; + default: + return; + } + } + else + { + sub_8029EC4(gUnknown_203B2C4->unk44); + sub_802B2BC(0x1F); + } +} + +void sub_802A050(void) +{ + switch(sub_8031DCC()) + { + + case 3: + case 2: + sub_8031E10(); + ResetUnusedInputStruct(); + sub_800641C(&gUnknown_203B2C4->unk3BC, 1, 1); + sub_802B2BC(0x1B); + break; + case 1: + sub_8031E00(); + break; + default: + return; + } +} + +void sub_802A090(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 7: + sub_802B2BC(6); + break; + case 8: + case 0: + sub_802B2BC(1); + break; + default: + break; + } + } +} + +void sub_802A0C8(void) +{ + switch(sub_8030768(1)) + { + case 2: + sub_803084C(); + sub_802B2BC(1); + break; + case 3: + gUnknown_203B2C4->unk218 = sub_80307EC(); + sub_802B2BC(0x11); + break; + case 4: + gUnknown_203B2C4->unk4 = 0x10; + gUnknown_203B2C4->unk218 = sub_80307EC(); + sub_8006518(&gUnknown_203B2C4->unk3BC); + ResetUnusedInputStruct(); + sub_800641C(0,1,1); + sub_8030D40(gUnknown_203B2C4->unk218,0); + sub_802B2BC(0x12); + } +} + +void sub_802A158(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(0x10); + } +} + +void sub_802A174(void) +{ + s32 temp; + + temp = -1; + sub_8030768(0); + if (sub_8012FD8(&gUnknown_203B2C4->unk30C) == 0) { + sub_8013114(&gUnknown_203B2C4->unk30C, &temp); + } + + switch(temp) + { + case 0xB: + sub_803084C(); + sub_802B2BC(0xe); + break; + case 0xC: + gUnknown_203B2C4->unk4 = 0x2b; + sub_8006518(&gUnknown_203B2C4->unk3BC); + ResetUnusedInputStruct(); + sub_800641C(0,1,1); + sub_8030D40(gUnknown_203B2C4->unk218,0); + sub_802B2BC(0x12); + break; + case 0: + case 0xD: + sub_8035CC0(&gUnknown_203B2C4->unk35C,2); + sub_8030810(1); + sub_802B2BC(0x10); + default: + break; + } +} + +void sub_802A230(void) +{ + switch(sub_8030DA0()) + { + case 2: + case 3: + sub_8030DE4(); + ResetUnusedInputStruct(); + sub_800641C(&gUnknown_203B2C4->unk3BC, 1, 1); + sub_803092C(); + if (gUnknown_203B2C4->unk4 == 0x2b) { + sub_8035CF4(&gUnknown_203B2C4->unk21C, 3, 1); + sub_802B2BC(0x11); + } + else { + sub_802B2BC(gUnknown_203B2C4->unk4); + } + break; + default: + break; + } +} + +void sub_802A28C(void) +{ + + gUnknown_203B2C4->unk41C[2] = 0; + gUnknown_203B2C4->unk41C[1] = 1; + gUnknown_203B2C4->unk41C[0] = 0; + + switch(sub_801CA08(1)) + { + case 2: + sub_801CBB8(); + sub_802B2BC(1); + break; + case 3: + gUnknown_203B2C4->unk41C[2] = sub_801CB24(); + sub_802B2BC(0x14); + break; + case 4: + gUnknown_203B2C4->unk4 = 0x13; + gUnknown_203B2C4->unk41C[2] = sub_801CB24(); + sub_8006518(&gUnknown_203B2C4->unk3BC); + ResetUnusedInputStruct(); + sub_800641C(0,1,1); + sub_801B3C0(gUnknown_203B2C4->unk41C); + sub_802B2BC(0x15); + break; + } +} + +void sub_802A33C(void) +{ + switch(sub_801B410()) + { + case 2: + case 3: + sub_801B450(); + ResetUnusedInputStruct(); + sub_800641C(&gUnknown_203B2C4->unk3BC,1,1); + sub_801CB5C(1); + if (gUnknown_203B2C4->unk4 == 0x2b) { + sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1); + sub_802B2BC(0x14); + } + else { + sub_802B2BC(gUnknown_203B2C4->unk4); + } + break; + case 1: + default: + break; + } +} + +void sub_802A39C(void) +{ + s32 temp; + + temp = -1; + sub_801CA08(0); + if (sub_8012FD8(&gUnknown_203B2C4->unk30C) == 0) { + sub_8013114(&gUnknown_203B2C4->unk30C, &temp); + } + + switch(temp) + { + case 0xB: + sub_801CBB8(); + sub_802B2BC(0xC); + break; + case 0xC: + gUnknown_203B2C4->unk4 = 0x2b; + sub_8006518(&gUnknown_203B2C4->unk3BC); + ResetUnusedInputStruct(); + sub_800641C(0,1,1); + sub_801B3C0(gUnknown_203B2C4->unk41C); + sub_802B2BC(0x15); + break; + case 0: + case 0xD: + sub_8035CC0(&gUnknown_203B2C4->unk35C, 3); + sub_801CCD8(); + sub_802B2BC(0x13); + default: + break; + } +} + +void sub_802A458(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(0xD); + } +} + +void sub_802A474(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(0x3); + } +} + +void sub_802A490(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(0x3); + } +} + +void sub_802A4AC(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(0x18); + sub_8011C28(1); + sub_8012574(0); + } +} + +void sub_802A4D4(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(0x1A); + } +} + +void sub_802A4F0(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(0x27); + } +} |