diff --git a/asm/wonder_mail_4.s b/asm/wonder_mail_4.s deleted file mode 100644 index df3277c4f..000000000 --- a/asm/wonder_mail_4.s +++ /dev/null @@ -1,388 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8030A74 -sub_8030A74: - push {r4,r5,lr} - movs r2, 0 - ldr r0, _08030A90 - ldr r0, [r0] - ldr r0, [r0, 0x20] - cmp r0, 0x7 - bls _08030A84 - b _08030C0E -_08030A84: - lsls r0, 2 - ldr r1, _08030A94 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08030A90: .4byte gUnknown_203B320 -_08030A94: .4byte _08030A98 - .align 2, 0 -_08030A98: - .4byte _08030AB8 - .4byte _08030B10 - .4byte _08030B3C - .4byte _08030B94 - .4byte _08030B68 - .4byte _08030BC0 - .4byte _08030AE4 - .4byte _08030BEC -_08030AB8: - movs r1, 0 - ldr r5, _08030ADC - ldr r4, _08030AE0 - movs r3, 0 -_08030AC0: - ldr r0, [r5] - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _08030AD2 - ldr r0, [r4] - adds r0, r2 - strb r1, [r0] - adds r2, 0x1 -_08030AD2: - adds r3, 0x30 - adds r1, 0x1 - cmp r1, 0x1F - ble _08030AC0 - b _08030C0E - .align 2, 0 -_08030ADC: .4byte gUnknown_203B480 -_08030AE0: .4byte gUnknown_203B320 -_08030AE4: - movs r1, 0 - ldr r5, _08030B08 - ldr r4, _08030B0C - movs r3, 0 -_08030AEC: - ldr r0, [r5] - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0x6 - bne _08030AFE - ldr r0, [r4] - adds r0, r2 - strb r1, [r0] - adds r2, 0x1 -_08030AFE: - adds r3, 0x30 - adds r1, 0x1 - cmp r1, 0x1F - ble _08030AEC - b _08030C0E - .align 2, 0 -_08030B08: .4byte gUnknown_203B480 -_08030B0C: .4byte gUnknown_203B320 -_08030B10: - movs r1, 0 - ldr r5, _08030B34 - ldr r4, _08030B38 - movs r3, 0 -_08030B18: - ldr r0, [r5] - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08030B2A - ldr r0, [r4] - adds r0, r2 - strb r1, [r0] - adds r2, 0x1 -_08030B2A: - adds r3, 0x30 - adds r1, 0x1 - cmp r1, 0x1F - ble _08030B18 - b _08030C0E - .align 2, 0 -_08030B34: .4byte gUnknown_203B480 -_08030B38: .4byte gUnknown_203B320 -_08030B3C: - movs r1, 0 - ldr r5, _08030B60 - ldr r4, _08030B64 - movs r3, 0 -_08030B44: - ldr r0, [r5] - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0x2 - bne _08030B56 - ldr r0, [r4] - adds r0, r2 - strb r1, [r0] - adds r2, 0x1 -_08030B56: - adds r3, 0x30 - adds r1, 0x1 - cmp r1, 0x1F - ble _08030B44 - b _08030C0E - .align 2, 0 -_08030B60: .4byte gUnknown_203B480 -_08030B64: .4byte gUnknown_203B320 -_08030B68: - movs r1, 0 - ldr r5, _08030B8C - ldr r4, _08030B90 - movs r3, 0 -_08030B70: - ldr r0, [r5] - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0x4 - bne _08030B82 - ldr r0, [r4] - adds r0, r2 - strb r1, [r0] - adds r2, 0x1 -_08030B82: - adds r3, 0x30 - adds r1, 0x1 - cmp r1, 0x1F - ble _08030B70 - b _08030C0E - .align 2, 0 -_08030B8C: .4byte gUnknown_203B480 -_08030B90: .4byte gUnknown_203B320 -_08030B94: - movs r1, 0 - ldr r5, _08030BB8 - ldr r4, _08030BBC - movs r3, 0 -_08030B9C: - ldr r0, [r5] - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0x3 - bne _08030BAE - ldr r0, [r4] - adds r0, r2 - strb r1, [r0] - adds r2, 0x1 -_08030BAE: - adds r3, 0x30 - adds r1, 0x1 - cmp r1, 0x1F - ble _08030B9C - b _08030C0E - .align 2, 0 -_08030BB8: .4byte gUnknown_203B480 -_08030BBC: .4byte gUnknown_203B320 -_08030BC0: - movs r1, 0 - ldr r5, _08030BE4 - ldr r4, _08030BE8 - movs r3, 0 -_08030BC8: - ldr r0, [r5] - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0x5 - bne _08030BDA - ldr r0, [r4] - adds r0, r2 - strb r1, [r0] - adds r2, 0x1 -_08030BDA: - adds r3, 0x30 - adds r1, 0x1 - cmp r1, 0x1F - ble _08030BC8 - b _08030C0E - .align 2, 0 -_08030BE4: .4byte gUnknown_203B480 -_08030BE8: .4byte gUnknown_203B320 -_08030BEC: - movs r1, 0 - ldr r5, _08030C18 - ldr r4, _08030C1C - movs r3, 0 -_08030BF4: - ldr r0, [r5] - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0x7 - bne _08030C06 - ldr r0, [r4] - adds r0, r2 - strb r1, [r0] - adds r2, 0x1 -_08030C06: - adds r3, 0x30 - adds r1, 0x1 - cmp r1, 0x1F - ble _08030BF4 -_08030C0E: - adds r0, r2, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08030C18: .4byte gUnknown_203B480 -_08030C1C: .4byte gUnknown_203B320 - thumb_func_end sub_8030A74 - - thumb_func_start sub_8030C20 -sub_8030C20: - push {lr} - cmp r0, 0x7 - bls _08030C28 - b _08030D34 -_08030C28: - lsls r0, 2 - ldr r1, _08030C34 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08030C34: .4byte _08030C38 - .align 2, 0 -_08030C38: - .4byte _08030C58 - .4byte _08030C90 - .4byte _08030CAC - .4byte _08030CE4 - .4byte _08030CC8 - .4byte _08030D00 - .4byte _08030C74 - .4byte _08030D20 -_08030C58: - movs r1, 0 - ldr r0, _08030C70 - ldr r2, [r0] -_08030C5E: - ldrb r0, [r2] - cmp r0, 0 - bne _08030D1C - adds r2, 0x30 - adds r1, 0x1 - cmp r1, 0x1F - ble _08030C5E - b _08030D34 - .align 2, 0 -_08030C70: .4byte gUnknown_203B480 -_08030C74: - movs r1, 0 - ldr r0, _08030C8C - ldr r2, [r0] -_08030C7A: - ldrb r0, [r2] - cmp r0, 0x6 - beq _08030D1C - adds r2, 0x30 - adds r1, 0x1 - cmp r1, 0x1F - ble _08030C7A - b _08030D34 - .align 2, 0 -_08030C8C: .4byte gUnknown_203B480 -_08030C90: - movs r1, 0 - ldr r0, _08030CA8 - ldr r2, [r0] -_08030C96: - ldrb r0, [r2] - cmp r0, 0x1 - beq _08030D1C - adds r2, 0x30 - adds r1, 0x1 - cmp r1, 0x1F - ble _08030C96 - b _08030D34 - .align 2, 0 -_08030CA8: .4byte gUnknown_203B480 -_08030CAC: - movs r1, 0 - ldr r0, _08030CC4 - ldr r2, [r0] -_08030CB2: - ldrb r0, [r2] - cmp r0, 0x2 - beq _08030D1C - adds r2, 0x30 - adds r1, 0x1 - cmp r1, 0x1F - ble _08030CB2 - b _08030D34 - .align 2, 0 -_08030CC4: .4byte gUnknown_203B480 -_08030CC8: - movs r1, 0 - ldr r0, _08030CE0 - ldr r2, [r0] -_08030CCE: - ldrb r0, [r2] - cmp r0, 0x4 - beq _08030D1C - adds r2, 0x30 - adds r1, 0x1 - cmp r1, 0x1F - ble _08030CCE - b _08030D34 - .align 2, 0 -_08030CE0: .4byte gUnknown_203B480 -_08030CE4: - movs r1, 0 - ldr r0, _08030CFC - ldr r2, [r0] -_08030CEA: - ldrb r0, [r2] - cmp r0, 0x3 - beq _08030D1C - adds r2, 0x30 - adds r1, 0x1 - cmp r1, 0x1F - ble _08030CEA - b _08030D34 - .align 2, 0 -_08030CFC: .4byte gUnknown_203B480 -_08030D00: - movs r1, 0 - ldr r0, _08030D18 - ldr r2, [r0] -_08030D06: - ldrb r0, [r2] - cmp r0, 0x5 - beq _08030D1C - adds r2, 0x30 - adds r1, 0x1 - cmp r1, 0x1F - ble _08030D06 - b _08030D34 - .align 2, 0 -_08030D18: .4byte gUnknown_203B480 -_08030D1C: - movs r0, 0 - b _08030D36 -_08030D20: - movs r1, 0 - ldr r0, _08030D3C - ldr r2, [r0] -_08030D26: - ldrb r0, [r2] - cmp r0, 0x7 - beq _08030D1C - adds r2, 0x30 - adds r1, 0x1 - cmp r1, 0x1F - ble _08030D26 -_08030D34: - movs r0, 0x1 -_08030D36: - pop {r1} - bx r1 - .align 2, 0 -_08030D3C: .4byte gUnknown_203B480 - thumb_func_end sub_8030C20 - - .align 2,0 diff --git a/include/code_8094F88.h b/include/code_8094F88.h index 9af6c7a72..967bd0f33 100644 --- a/include/code_8094F88.h +++ b/include/code_8094F88.h @@ -1,9 +1,11 @@ #ifndef GUARD_CODE_8094F88_H -#define GUARD_CODE_8094F88_H +#define GUARD_CODE_8094F88_H + +#include "global.h" struct unkStruct_203B480 { - u8 unk0; + u8 mailType; struct DungeonLocation unk4; u32 unk8; u32 unkC; diff --git a/include/constants/wonder_mail.h b/include/constants/wonder_mail.h index c9626ae5a..9d4e1f9e2 100644 --- a/include/constants/wonder_mail.h +++ b/include/constants/wonder_mail.h @@ -16,6 +16,36 @@ enum RewardType END_REWARDS }; +enum WonderMailMode { + WONDER_MAIL_MODE_SEND = 1, + WONDER_MAIL_MODE_RECEIVE = 2, +}; + +enum WonderMailMethod { + WONDER_MAIL_GAME_LINK = 3, + WONDER_MAIL_PASSWORD = 5, +}; + +enum WonderMailTypes { + WONDER_MAIL_TYPE_SOS = 1, + //WONDER_MAIL_TYPE_SOS = 2, // SOS MAIL is 1 and 2? + WONDER_MAIL_TYPE_AOK = 4, + WONDER_MAIL_TYPE_THANK_YOU = 5, + WONDER_MAIL_TYPE_WONDER = 5, + WONDER_MAIL_TYPE_COMPLETED = 6, + WONDER_MAIL_TYPE_OKD = 7, +}; + +enum WonderMailMissionTypes +{ + WONDER_MAIL_MISSION_TYPE_RESCUE_CLIENT = 0, + WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET = 1, + WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT = 2, + WONDER_MAIL_MISSION_TYPE_FIND_ITEM = 3, + WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM = 4, +}; + + #define NUM_POKEMON_NEWS 56 // 50 normal + 6 special issues #define PASSWORD_BUFFER_SIZE 54 #define MAX_ITEM_REWARDS 3 diff --git a/include/wonder_mail.h b/include/wonder_mail.h index cfe7ee05b..9ae464859 100644 --- a/include/wonder_mail.h +++ b/include/wonder_mail.h @@ -119,31 +119,4 @@ struct WonderMailStruct_203B2C4 void sub_8028B04(u32 r0); -enum WonderMailMode { - WONDER_MAIL_MODE_SEND = 1, - WONDER_MAIL_MODE_RECEIVE = 2, -}; - -enum WonderMailMethod { - WONDER_MAIL_GAME_LINK = 3, - WONDER_MAIL_PASSWORD = 5, -}; - -enum WonderMailTypes { - WONDER_MAIL_TYPE_SOS = 1, - WONDER_MAIL_TYPE_AOK = 4, - WONDER_MAIL_TYPE_THANK_YOU = 5, - WONDER_MAIL_TYPE_WONDER = 5, - // TODO: document 7 -}; - -enum WonderMailMissionTypes -{ - WONDER_MAIL_MISSION_TYPE_RESCUE_CLIENT = 0, - WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET = 1, - WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT = 2, - WONDER_MAIL_MISSION_TYPE_FIND_ITEM = 3, - WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM = 4, -}; - #endif diff --git a/ld_script.txt b/ld_script.txt index 13c486c08..823c9b68b 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -146,7 +146,6 @@ SECTIONS { asm/makuhita_dojo.o(.text); src/makuhita_dojo_1.o(.text); src/wonder_mail_4.o(.text); - asm/wonder_mail_4.o(.text); src/wonder_mail_5.o(.text); asm/wonder_mail_5.o(.text); src/wonder_mail_6.o(.text); diff --git a/src/code_8094F88.c b/src/code_8094F88.c index 0ca6de96f..2a6f6b273 100644 --- a/src/code_8094F88.c +++ b/src/code_8094F88.c @@ -44,19 +44,21 @@ struct unkStruct_203B48C *sub_8095110(void) } -#ifdef NONMATCHING void sub_8095118(void) { - int iVar1; + s32 iVar1; + struct unkStruct_203B480 *unused; MemoryFill8((u8*)gUnknown_203B480,0,0x600); - MemoryFill8(gUnknown_203B484,0,0x5c); + MemoryFill8((u8*)gUnknown_203B484,0,0x5c); for(iVar1 = 0; iVar1 < 0x20; iVar1++){ - // NOTE: when it adds the index regs flip - // Instead of add r0, r0, r1 -> add r0, r1, r0 - // Everything else matches... - gUnknown_203B480[iVar1].unk0 = 0; + + // NOTE: we use a temp variable here to force the match + unused = &gUnknown_203B480[iVar1]; + gUnknown_203B480[iVar1].mailType = 0; + unused = &gUnknown_203B480[iVar1]; gUnknown_203B480[iVar1].unk22 = 0; + unused = &gUnknown_203B480[iVar1]; gUnknown_203B480[iVar1].unk2D = 0; } gUnknown_203B48C->unk0 = 0; @@ -64,66 +66,6 @@ void sub_8095118(void) gUnknown_203B48C->unk4[iVar1] = -1; } } -#else -NAKED -void sub_8095118(void) -{ - asm_unified("\tpush {r4,lr}\n" - "\tldr r4, _0809517C\n" - "\tldr r0, [r4]\n" - "\tmovs r2, 0xC0\n" - "\tlsls r2, 3\n" - "\tmovs r1, 0\n" - "\tbl MemoryFill8\n" - "\tldr r0, _08095180\n" - "\tldr r0, [r0]\n" - "\tmovs r1, 0\n" - "\tmovs r2, 0x5C\n" - "\tbl MemoryFill8\n" - "\tmovs r2, 0\n" - "\tmovs r1, 0\n" - "\tmovs r3, 0x1F\n" -"_0809513A:\n" - "\tldr r0, [r4]\n" - "\tadds r0, r1\n" - "\tstrb r2, [r0]\n" - "\tldr r0, [r4]\n" - "\tadds r0, r1\n" - "\tadds r0, 0x22\n" - "\tstrb r2, [r0]\n" - "\tldr r0, [r4]\n" - "\tadds r0, r1\n" - "\tadds r0, 0x2D\n" - "\tstrb r2, [r0]\n" - "\tadds r1, 0x30\n" - "\tsubs r3, 0x1\n" - "\tcmp r3, 0\n" - "\tbge _0809513A\n" - "\tldr r2, _08095184\n" - "\tldr r1, [r2]\n" - "\tmovs r0, 0\n" - "\tstr r0, [r1]\n" - "\tmovs r3, 0\n" - "\tmovs r4, 0x1\n" - "\tnegs r4, r4\n" -"_08095166:\n" - "\tldr r0, [r2]\n" - "\tlsls r1, r3, 2\n" - "\tadds r0, 0x4\n" - "\tadds r0, r1\n" - "\tstr r4, [r0]\n" - "\tadds r3, 0x1\n" - "\tcmp r3, 0x1F\n" - "\tble _08095166\n" - "\tpop {r4}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_0809517C: .4byte gUnknown_203B480\n" -"_08095180: .4byte gUnknown_203B484\n" -"_08095184: .4byte gUnknown_203B48C"); -} -#endif void nullsub_206(void) { @@ -138,7 +80,7 @@ s32 sub_8095190(void) int index; for(index = 2; index < 0x20; index++){ - if(gUnknown_203B480[index].unk0 == 0) + if(gUnknown_203B480[index].mailType == 0) return index; } return -1; diff --git a/src/code_8095824.c b/src/code_8095824.c index 803e9ce8d..6289a1db5 100644 --- a/src/code_8095824.c +++ b/src/code_8095824.c @@ -114,7 +114,7 @@ void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b) { u8 temp; - RestoreIntegerBits(a, &b->unk0, 4); + RestoreIntegerBits(a, &b->mailType, 4); RestoreDungeonLocation(a, &b->unk4); RestoreIntegerBits(a, &b->unk8, 0x18); RestoreIntegerBits(a, &b->unkC, 0x9); @@ -139,7 +139,7 @@ void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b) neg1 = -1; zero = 0; - SaveIntegerBits(a, &b->unk0, 4); + SaveIntegerBits(a, &b->mailType, 4); SaveDungeonLocation(a, &b->unk4); SaveIntegerBits(a, &b->unk8, 0x18); SaveIntegerBits(a, &b->unkC, 0x9); diff --git a/src/rescue_password_menu.c b/src/rescue_password_menu.c index b650c1153..57b42332c 100644 --- a/src/rescue_password_menu.c +++ b/src/rescue_password_menu.c @@ -453,7 +453,7 @@ u32 ConvertMenutoRescuePasswordState(u32 unused) u32 sub_8039068(u32 mailMode, u8 *passwordBuffer, struct unkStruct_8095228 *param_3) { - if ( (!sub_803D204(passwordBuffer, param_3)) || (7 < param_3->mailType) || + if ( (!sub_803D204(passwordBuffer, param_3)) || (WONDER_MAIL_TYPE_OKD < param_3->mailType) || (param_3->dungeon.dungeonFloor >= GetDungeonFloorCount(param_3->dungeon.dungeonIndex)) || (param_3->clientSpecies == SPECIES_NONE) || (SPECIES_RAYQUAZA_CUTSCENE < param_3->clientSpecies) || (IsInvalidItemReward(param_3->unk20.itemIndex))) { diff --git a/src/wonder_mail.c b/src/wonder_mail.c index 4eea9273b..f2958d6b0 100644 --- a/src/wonder_mail.c +++ b/src/wonder_mail.c @@ -20,7 +20,7 @@ extern void sub_8011C28(u32); extern void sub_8095240(u8); extern void sub_809927C(u8); -extern u8 sub_8030C20(u32); +extern bool8 HasNoWonderMailType(u32); extern u32 sub_8031050(); extern void sub_80310B4(); extern u32 sub_8095350(); @@ -942,7 +942,7 @@ void sub_8028D4C() switch(gUnknown_203B2C0->unk538) { case 5: - if(sub_8030C20(2) != 0) + if(HasNoWonderMailType(2)) { sub_8028B04(12); } @@ -952,7 +952,7 @@ void sub_8028D4C() } break; case 6: - if(sub_8030C20(4) != 0) + if(HasNoWonderMailType(4)) { sub_8028B04(14); } @@ -962,7 +962,7 @@ void sub_8028D4C() } break; case 7: - if(sub_8030C20(0) != 0) + if(HasNoWonderMailType(0)) { sub_8028B04(16); } diff --git a/src/wonder_mail_4.c b/src/wonder_mail_4.c index af3338e3b..20cef191d 100644 --- a/src/wonder_mail_4.c +++ b/src/wonder_mail_4.c @@ -4,13 +4,16 @@ #include "memory.h" #include "item.h" #include "sub_8095228.h" +#include "pokemon.h" +#include "code_8094F88.h" +#include "constants/wonder_mail.h" struct unkStruct_203B320 { // size: 0xC4 u8 unk0[4]; u8 fill4[0x20 - 4]; - u32 wonderMailMode; + u32 wonderMailType; u32 unk24; u8 fill28[0x3C - 0x28]; s16 unk3C; @@ -29,6 +32,7 @@ extern struct unkStruct_203B320 *gUnknown_203B320; extern struct UnkTextStruct2 gUnknown_80E083C; extern struct UnkTextStruct2 gUnknown_80E0854; extern u8 *gUnknown_80E086C[]; +extern struct unkStruct_203B480 *gUnknown_203B480; struct unkStruct_802C39C { @@ -46,7 +50,7 @@ struct unkStruct_802C39C /* 0x50 */ u32 unk50[3]; }; -extern u8 sub_8030C20(u32); +extern bool8 HasNoWonderMailType(u32); extern s32 sub_8030A74(void); extern void sub_80308A0(void); extern void sub_803092C(void); @@ -67,12 +71,12 @@ extern void sub_80073B8(u32); extern void sub_80073E0(u32); extern void CreateRescueTitle(void *); -u32 sub_80306A8(u32 wonderMailMode, u32 r1, struct UnkTextStruct2_sub *r2, u32 r3) +u32 sub_80306A8(u32 wonderMailType, u32 r1, struct UnkTextStruct2_sub *r2, u32 r3) { - if(sub_8030C20(wonderMailMode)) + if(HasNoWonderMailType(wonderMailType)) return 0; gUnknown_203B320 = MemoryAlloc(sizeof(struct unkStruct_203B320), 0x8); - gUnknown_203B320->wonderMailMode = wonderMailMode; + gUnknown_203B320->wonderMailType = wonderMailType; gUnknown_203B320->unk58 = r1; gUnknown_203B320->unk5C = &gUnknown_203B320->unk60[gUnknown_203B320->unk58]; @@ -246,7 +250,7 @@ void sub_803092C(void) r4 = gUnknown_203B320->unk42 * 8; r5 = r4; r5 += 10; - xxx_call_draw_string(r5,0,gUnknown_80E086C[gUnknown_203B320->wonderMailMode],gUnknown_203B320->unk58,0); + xxx_call_draw_string(r5,0,gUnknown_80E086C[gUnknown_203B320->wonderMailType],gUnknown_203B320->unk58,0); r4 += 4; r5 = r4 + gUnknown_203B320->unkC0[2] * 8; sub_8012BC4(r5,0,gUnknown_203B320->unk42 + 1,1,7,gUnknown_203B320->unk58); @@ -291,3 +295,168 @@ void sub_803092C(void) } sub_80073E0(gUnknown_203B320->unk58); } + +s32 sub_8030A74(void) +{ + s32 index; + s32 count = 0; + switch(gUnknown_203B320->wonderMailType) { + case 0: + for (index = 0; index < 0x20; index++) + { + struct unkStruct_203B480 *p = gUnknown_203B480 + index; + if (p->mailType != 0) { + gUnknown_203B320->unk0[count] = index; + count++; + } + } + break; + case 6: + for (index = 0; index < 0x20; index++) + { + struct unkStruct_203B480 *p = gUnknown_203B480 + index; + if (p->mailType == 6) { + gUnknown_203B320->unk0[count] = index; + count++; + } + } + break; + case 1: + for (index = 0; index < 0x20; index++) + { + struct unkStruct_203B480 *p = gUnknown_203B480 + index; + if (p->mailType == 1) { + gUnknown_203B320->unk0[count] = index; + count++; + } + } + break; + case 2: + for (index = 0; index < 0x20; index++) + { + struct unkStruct_203B480 *p = gUnknown_203B480 + index; + if (p->mailType == 2) { + gUnknown_203B320->unk0[count] = index; + count++; + } + } + break; + case 4: + for (index = 0; index < 0x20; index++) + { + struct unkStruct_203B480 *p = gUnknown_203B480 + index; + if (p->mailType == 4) { + gUnknown_203B320->unk0[count] = index; + count++; + } + } + break; + case 3: + for (index = 0; index < 0x20; index++) + { + struct unkStruct_203B480 *p = gUnknown_203B480 + index; + if (p->mailType == 3) { + gUnknown_203B320->unk0[count] = index; + count++; + } + } + break; + case 5: + for (index = 0; index < 0x20; index++) + { + struct unkStruct_203B480 *p = gUnknown_203B480 + index; + if (p->mailType == 5) { + gUnknown_203B320->unk0[count] = index; + count++; + } + } + break; + + case 7: + for (index = 0; index < 0x20; index++) + { + struct unkStruct_203B480 *p = gUnknown_203B480 + index; + if (p->mailType == 7) { + gUnknown_203B320->unk0[count] = index; + count++; + } + } + break; + } + return count; +} + +bool8 HasNoWonderMailType(u32 wonderMailType) +{ + s32 index; + + switch(wonderMailType) { + case 0: + for (index = 0; index < 0x20; index++) + { + if (gUnknown_203B480[index].mailType != 0) { + return FALSE; + } + } + break; + case 6: + for (index = 0; index < 0x20; index++) + { + if (gUnknown_203B480[index].mailType == 6) { + return FALSE; + } + } + break; + case 1: + for (index = 0; index < 0x20; index++) + { + if (gUnknown_203B480[index].mailType == 1) { + return FALSE; + } + } + break; + case 2: + for (index = 0; index < 0x20; index++) + { + if (gUnknown_203B480[index].mailType == 2) { + return FALSE; + } + } + break; + case 4: + for (index = 0; index < 0x20; index++) + { + if (gUnknown_203B480[index].mailType == 4) { + return FALSE; + } + } + break; + case 3: + for (index = 0; index < 0x20; index++) + { + if (gUnknown_203B480[index].mailType == 3) { + return FALSE; + } + } + break; + + case 5: + for (index = 0; index < 0x20; index++) + { + if (gUnknown_203B480[index].mailType == 5) { + return FALSE; + } + } + break; + + case 7: + for (index = 0; index < 0x20; index++) + { + if (gUnknown_203B480[index].mailType == 7) { + return FALSE; + } + } + break; + } + return TRUE; +} diff --git a/src/wonder_mail_6.c b/src/wonder_mail_6.c index c5f3dc77a..8da1e098f 100644 --- a/src/wonder_mail_6.c +++ b/src/wonder_mail_6.c @@ -7,7 +7,7 @@ #include "menu.h" #include "code_8094F88.h" -extern bool8 sub_8030C20(u32); +extern bool8 HasNoWonderMailType(u32); struct unkStruct_203B328 { @@ -26,7 +26,7 @@ struct unkStruct_203B328 /* 0x114 */ u8 unk114; /* 0x115 */ u8 unk115; /* 0x116 */ u8 unk116; - u32 wonderMailMode; + u32 wonderMailType; }; extern struct unkStruct_203B328 *gUnknown_203B328; extern struct unkStruct_203B480 *gUnknown_203B480; @@ -103,7 +103,7 @@ extern u8 sub_8012FD8(u32 *); extern void sub_8013114(u32 *, s32 *); extern void sub_8095240(u8); -bool8 sub_8030F58(u32 wonderMailMode) +bool8 sub_8030F58(u32 wonderMailType) { struct OpenedFile *iVar3; @@ -113,7 +113,7 @@ bool8 sub_8030F58(u32 wonderMailMode) gUnknown_203B328 = MemoryAlloc(sizeof(struct unkStruct_203B328),8); MemoryFill8((u8 *)gUnknown_203B328,0,sizeof(struct unkStruct_203B328)); } - gUnknown_203B328->wonderMailMode = wonderMailMode; + gUnknown_203B328->wonderMailType = wonderMailType; iVar3 = GetDialogueSpriteDataPtr(SPECIES_PELIPPER); gUnknown_203B328->faceFile = iVar3; gUnknown_203B328->faceData = iVar3->data; @@ -123,8 +123,8 @@ bool8 sub_8030F58(u32 wonderMailMode) gUnknown_203B328->unk110 = 2; gUnknown_203B328->unk112 = 8; - if (sub_8030C20(wonderMailMode)) { - switch(wonderMailMode) + if (HasNoWonderMailType(wonderMailType)) { + switch(wonderMailType) { case 2: // "You don{APOSTROPHE}t have any {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1}.\0" @@ -139,7 +139,7 @@ bool8 sub_8030F58(u32 wonderMailMode) } else { gUnknown_203B328->state = 0; - sub_80306A8(wonderMailMode,0,0,8); + sub_80306A8(wonderMailType,0,0,8); } return TRUE; } @@ -328,14 +328,14 @@ void sub_80313D8(u32 param_1) for(iVar2 = 0; iVar2 < 0x20; iVar2++) { unused = &gUnknown_203B480[iVar2]; - gUnknown_203B480[iVar2].unk0 = 0; + gUnknown_203B480[iVar2].mailType = 0; unused = &gUnknown_203B480[iVar2]; gUnknown_203B480[iVar2].unk22 = 0; } break; } - if ((gUnknown_203B328->wonderMailMode == 2) || (gUnknown_203B328->wonderMailMode == 4)) { - if (sub_8030C20(gUnknown_203B328->wonderMailMode) != 0) { + if ((gUnknown_203B328->wonderMailType == 2) || (gUnknown_203B328->wonderMailType == 4)) { + if (HasNoWonderMailType(gUnknown_203B328->wonderMailType)) { sub_80310E4(5); } else {