diff --git a/asm/code_2.s b/asm/code_2.s index 81d8a8659..311dae02c 100644 --- a/asm/code_2.s +++ b/asm/code_2.s @@ -934,7 +934,7 @@ _08000DAC: cmp r0, 0 beq _08000E00 ldrb r0, [r4] - bl sub_8095228 + bl GetMailatIndex adds r2, r0, 0 adds r0, 0x2C ldrb r1, [r0] diff --git a/asm/code_80428A0.s b/asm/code_80428A0.s index 14595e1c4..523ff0fd1 100644 --- a/asm/code_80428A0.s +++ b/asm/code_80428A0.s @@ -929,7 +929,7 @@ _0804326A: beq _080432F4 mov r0, sp ldrb r0, [r0] - bl sub_8095228 + bl GetMailatIndex adds r2, r0, 0 adds r2, 0x2C movs r0, 0 diff --git a/asm/code_8095014.s b/asm/code_8095014.s index 94ff64080..5f088844f 100644 --- a/asm/code_8095014.s +++ b/asm/code_8095014.s @@ -5,41 +5,4 @@ .text - thumb_func_start sub_80951BC -sub_80951BC: - push {r4,lr} - adds r4, r0, 0 - bl FindOpenMailSlot - adds r2, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - beq _080951F4 - ldr r0, _080951F0 - ldr r1, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 4 - adds r1, r0 - adds r0, r4, 0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - movs r0, 0x1 - b _080951F6 - .align 2, 0 -_080951F0: .4byte gUnknown_203B480 -_080951F4: - movs r0, 0 -_080951F6: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80951BC - .align 2,0 diff --git a/asm/friend_rescue.s b/asm/friend_rescue.s index bd0ab3acc..5388c763a 100644 --- a/asm/friend_rescue.s +++ b/asm/friend_rescue.s @@ -848,7 +848,7 @@ _0803304A: lsls r3, 2 adds r0, r3 ldrb r0, [r0] - bl sub_8095228 + bl GetMailatIndex ldr r1, [r6] adds r1, 0x48 ldm r0!, {r2,r4,r5} @@ -907,7 +907,7 @@ _080330B4: lsls r3, 2 adds r0, r1, r3 ldrb r0, [r0] - bl sub_8095228 + bl GetMailatIndex ldr r1, [r6] adds r1, 0xA8 ldm r0!, {r2-r4} @@ -1202,7 +1202,7 @@ _0803331A: lsls r2, 2 adds r0, r2 ldrb r0, [r0] - bl sub_8095228 + bl GetMailatIndex ldr r1, [r6] adds r1, r4 ldm r0!, {r2,r3,r5} @@ -1420,7 +1420,7 @@ _0803349C: bl GetMailIndex lsls r0, 24 lsrs r0, 24 - bl sub_8095228 + bl GetMailatIndex adds r2, r0, 0 adds r0, 0x22 ldrb r1, [r0] diff --git a/asm/ground_script.s b/asm/ground_script.s index 2b4f95a45..3a5a0c7b0 100644 --- a/asm/ground_script.s +++ b/asm/ground_script.s @@ -1128,7 +1128,7 @@ _0809E524: bl sub_8001658 lsls r0, 24 lsrs r0, 24 - bl sub_8095228 + bl GetMailatIndex adds r4, r0, 0 movs r0, 0x6 bl sub_80023E4 diff --git a/asm/other_menus.s b/asm/other_menus.s index 0f50504ce..1bd67d082 100644 --- a/asm/other_menus.s +++ b/asm/other_menus.s @@ -116,7 +116,7 @@ _080374E4: bl sub_8035D74 lsls r0, 24 lsrs r0, 24 - bl sub_8095228 + bl GetMailatIndex ldr r3, _08037518 ldr r1, [r3] movs r2, 0xE6 @@ -154,7 +154,7 @@ _08037534: bl sub_8035D74 lsls r0, 24 lsrs r0, 24 - bl sub_8095228 + bl GetMailatIndex ldr r3, _08037568 ldr r1, [r3] movs r2, 0x8B @@ -180,7 +180,7 @@ _0803756C: bl sub_8035D74 lsls r0, 24 lsrs r0, 24 - bl sub_8095228 + bl GetMailatIndex ldr r4, _080375CC ldr r1, [r4] movs r5, 0xA3 @@ -1363,7 +1363,7 @@ _08037ED0: bl GetMailIndex lsls r0, 24 lsrs r0, 24 - bl sub_8095228 + bl GetMailatIndex adds r4, r0, 0 adds r1, r4, 0 adds r0, r5, 0 @@ -1434,7 +1434,7 @@ _08037F5E: bl GetMailIndex lsls r0, 24 lsrs r0, 24 - bl sub_8095228 + bl GetMailatIndex adds r2, r0, 0 adds r1, r4, 0 ldm r1!, {r3-r5} diff --git a/include/code_8094F88.h b/include/code_8094F88.h index 744425187..c96fdefbb 100644 --- a/include/code_8094F88.h +++ b/include/code_8094F88.h @@ -5,6 +5,7 @@ struct unkStruct_203B480 { + // size: 0x30 /* 0x0 */ u8 mailType; /* 0x1 */ u8 missionType; /* 0x4 */ struct DungeonLocation dungeon; @@ -37,8 +38,21 @@ struct unkStruct_203B48C s32 unk4[0x20]; }; +extern struct unkStruct_203B480 *gUnknown_203B480; +extern struct unkStruct_203B484 *gUnknown_203B484; +extern u32 *gUnknown_203B488; +extern struct unkStruct_203B48C *gUnknown_203B48C; + +void sub_80950BC(void); +struct unkStruct_203B480 *sub_80950F8(void); +struct unkStruct_203B484 *sub_8095100(void); +u32 *sub_8095108(void); +struct unkStruct_203B48C *sub_8095110(void); +void sub_8095118(void); +s32 FindOpenMailSlot(void); +bool8 sub_80951BC(struct unkStruct_203B480 *mail); bool8 sub_80951FC(struct unkStruct_203B480 *param_1); -struct unkStruct_203B480 * sub_8095228(u8 index); +struct unkStruct_203B480 * GetMailatIndex(u8 index); void DeleteMailAtIndex(u8 index); void sub_8095274(u32 param_1); bool8 sub_8095298(s32 param_1); @@ -49,6 +63,8 @@ u32 CountAllMail(void); s32 sub_8095374(void); s32 GetMailIndex(u8 mailType, u32 param_2); s32 GetFirstIndexofMailType(u8 mailType); +void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b); +void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b); #endif diff --git a/include/code_80958E8.h b/include/code_80958E8.h index b78845ca3..4a6f15e23 100644 --- a/include/code_80958E8.h +++ b/include/code_80958E8.h @@ -1,4 +1,5 @@ #include "wonder_mail.h" +#include "constants/mailbox.h" struct subStruct_203B490 { @@ -12,13 +13,13 @@ struct subStruct_203B490 struct unkStruct_203B490 { // size: 0x330? - /* 0x0 */ struct WonderMail mailboxSlots[4]; - /* 0x50 */ struct WonderMail pelipperBoardJobs[8]; - /* 0xF0 */ struct WonderMail jobSlots[8]; + /* 0x0 */ struct WonderMail mailboxSlots[NUM_MAILBOX_SLOTS]; + /* 0x50 */ struct WonderMail pelipperBoardJobs[MAX_ACCEPTED_JOBS]; + /* 0xF0 */ struct WonderMail jobSlots[MAX_ACCEPTED_JOBS]; u8 unk190[0x28]; u8 unk1B8[0x78]; struct subStruct_203B490 unk230[16]; - u8 PKMNNewsReceived[56]; + u8 PKMNNewsReceived[NUM_POKEMON_NEWS]; bool8 unk328; }; diff --git a/include/save.h b/include/save.h index 206644cbf..c86e57ad4 100644 --- a/include/save.h +++ b/include/save.h @@ -49,10 +49,10 @@ struct UnkStruct_sub_8011DAC { struct UnkStruct_203B184 { /* 0x0 */ struct TeamInventory *MoneyItems; /* 0x4 */ struct unkStruct_203B45C *recruitedPokemon; - /* 0x8 */ u8 *unk8; - /* 0xC */ u8 *unkC; + /* 0x8 */ struct unkStruct_203B480 *unk8; + /* 0xC */ struct unkStruct_203B484 *unkC; /* 0x10 */ u32 *unk10; - /* 0x14 */ u32 *unk14; + /* 0x14 */ struct unkStruct_203B48C *unk14; /* 0x18 */ struct unkStruct_203B490 *mailInfo; /* 0x1C */ struct RescueTeamData *RescueTeamInfo; /* 0x20 */ u32 unk20; diff --git a/include/sub_8095228.h b/include/sub_8095228.h deleted file mode 100644 index 62f905c4e..000000000 --- a/include/sub_8095228.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef GUARD_SUB_8095228_H -#define GUARD_SUB_8095228_H - -#include "dungeon_global_data.h" - -struct unkStruct_8095228 -{ - /* 0x0 */ u8 mailType; // mail type - /* 0x1 */ u8 missionType; // mission type - /* 0x2 */ u8 unk2; - /* 0x3 */ u8 unk3; - /* 0x4 */ struct DungeonLocation dungeon; // dungeon - /* 0x8 */ u32 unk8; - /* 0xC */ s16 clientSpecies; // client pokemon - /* 0xE */ s16 targetSpecies; // target - u32 unk10; // TODO: verify that this is just a union of the 4 bytes in Wonder Mail - u8 padding2[0x20 - 0x14]; - struct Item unk20; - u8 padding3[0x28 - 0x24]; - u32 unk28; - s8 unk2C; - u8 padding4[0x30 - 0x2D]; -}; - -extern struct unkStruct_8095228 *sub_8095228(u8); - -#endif // GUARD_SUB_8095228_H diff --git a/ld_script.txt b/ld_script.txt index a9c0f1667..4a7076269 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -313,8 +313,6 @@ SECTIONS { asm/code_8094D28.o(.text); src/play_time.o(.text); src/code_8094F88.o(.text); - asm/code_8095014.o(.text); - src/code_8095824.o(.text); src/code_80958E8.o(.text); asm/code_80958E8.o(.text); src/code_80958E8_mid.o(.text); diff --git a/src/code_2.c b/src/code_2.c index b1c66909b..198ea8bdd 100644 --- a/src/code_2.c +++ b/src/code_2.c @@ -25,7 +25,6 @@ extern void sub_8097670(void); extern void LoadGameOptions(void); extern void SetWindowBGColor(void); extern void LoadItemParameters(void); -extern void sub_80950BC(void); extern void LoadMailInfo(void); extern void sub_800CD64(u32, u32); extern void SetWindowTitle(char *); diff --git a/src/code_8094F88.c b/src/code_8094F88.c index 06e978f0c..6b5148152 100644 --- a/src/code_8094F88.c +++ b/src/code_8094F88.c @@ -3,6 +3,10 @@ #include "pokemon.h" #include "code_8094F88.h" #include "memory.h" +#include "dungeon.h" +#include "random.h" +#include "save.h" +#include "text_util.h" extern struct unkStruct_203B480 gUnknown_2038C88; extern struct unkStruct_203B480 *gUnknown_203B480; @@ -14,7 +18,17 @@ extern u32 *gUnknown_203B488; extern u32 gUnknown_20392E8; +extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*); +extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*); +extern void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924* a1, struct unkPokeSubStruct_C* unkC); +extern void xxx_restore_poke_sub_c_808F410(struct unkStruct_8094924*, struct unkPokeSubStruct_C*); +extern void SavePokemonMoves(struct unkStruct_8094924 *r0, struct Move *moveSet); +extern void RestorePokemonMoves(struct unkStruct_8094924 *r0, struct Move *moveSet); +extern struct PokemonStruct *GetPlayerPokemonStruct(void); +extern s32 sub_8094E4C(void); +extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon); +extern void sub_8094D28(s32); void sub_80950BC(void) { @@ -47,24 +61,24 @@ struct unkStruct_203B48C *sub_8095110(void) void sub_8095118(void) { - s32 iVar1; + s32 index; struct unkStruct_203B480 *unused; - MemoryFill8((u8*)gUnknown_203B480,0,0x600); - MemoryFill8((u8*)gUnknown_203B484,0,0x5c); - for(iVar1 = 0; iVar1 < 0x20; iVar1++){ + MemoryFill8((u8*)gUnknown_203B480,0, 0x20 * sizeof(struct unkStruct_203B480)); + MemoryFill8((u8*)gUnknown_203B484,0, 0x5c); + for(index = 0; index < 0x20; index++){ // NOTE: we use a temp variable here to force the match - unused = &gUnknown_203B480[iVar1]; - gUnknown_203B480[iVar1].mailType = WONDER_MAIL_TYPE_NONE; - unused = &gUnknown_203B480[iVar1]; - gUnknown_203B480[iVar1].unk20.id = ITEM_NOTHING; - unused = &gUnknown_203B480[iVar1]; - gUnknown_203B480[iVar1].unk2D = 0; + unused = &gUnknown_203B480[index]; + gUnknown_203B480[index].mailType = WONDER_MAIL_TYPE_NONE; + unused = &gUnknown_203B480[index]; + gUnknown_203B480[index].unk20.id = ITEM_NOTHING; + unused = &gUnknown_203B480[index]; + gUnknown_203B480[index].unk2D = 0; } gUnknown_203B48C->unk0 = 0; - for(iVar1 = 0; iVar1 < 0x20; iVar1++){ - gUnknown_203B48C->unk4[iVar1] = -1; + for(index = 0; index < 0x20; index++){ + gUnknown_203B48C->unk4[index] = -1; } } @@ -86,3 +100,370 @@ s32 FindOpenMailSlot(void) } return -1; } + +// Fakematch +bool8 sub_80951BC(struct unkStruct_203B480 *mail) +{ + s32 index; + struct unkStruct_203B480 *preload; + struct unkStruct_203B480 *preload2; + + index = FindOpenMailSlot(); + + if(index == -1) + { + return 0; + } + else + { + preload = gUnknown_203B480; + preload2 = &preload[index]; + *preload2 = *mail; + return 1; + } +} + +struct unkStruct_809542C +{ + struct DungeonLocation unk0; + u32 unk4; +}; + +bool8 sub_80951FC(struct unkStruct_203B480 *param_1) +{ + bool8 bVar1 = gUnknown_203B480[1].mailType != 0; + gUnknown_203B480[1] = *param_1; + return bVar1; +} + +struct unkStruct_203B480 * GetMailatIndex(u8 index) +{ + struct unkStruct_203B480 *ptr; + + ptr = &gUnknown_203B480[index]; + return ptr; +} + +void DeleteMailAtIndex(u8 index) +{ + struct unkStruct_203B480 *unused; + + MemoryFill8((u8*)&gUnknown_203B480[index],0,sizeof(struct unkStruct_203B480)); + unused = &gUnknown_203B480[index]; + gUnknown_203B480[index].mailType = 0; + unused = &gUnknown_203B480[index]; + gUnknown_203B480[index].unk20.id = 0; +} + +void sub_8095274(u32 param_1) +{ + s32 iVar2; + s32 iVar3; + + gUnknown_203B48C->unk4[gUnknown_203B48C->unk0] = param_1; + iVar2 = gUnknown_203B48C->unk0; + iVar3 = 0; + if (iVar2 < 0x1f) { + iVar3 = iVar2 + 1; + } + gUnknown_203B48C->unk0 = iVar3; +} + +bool8 sub_8095298(s32 param_1) +{ + s32 index; + + for(index = 0; index < 0x20; index++) + { + if(gUnknown_203B48C->unk4[index] == param_1) return TRUE; + } + return FALSE; +} + +void sub_80952C4(void) +{ + s32 index; + + gUnknown_203B48C->unk0 = 0; + for(index = 0; index < 0x20; index++) + { + gUnknown_203B48C->unk4[index] = -1; + } +} + +bool8 HasMail(u8 mailType, u32 param_2) +{ + struct unkStruct_203B480 *ptr; + s32 index; + + for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) + { + if ((ptr->mailType == mailType) && (ptr->unk10.unk10 == param_2)) return TRUE; + } + return FALSE; +} + +s32 CountMailType(u8 mailType) +{ + struct unkStruct_203B480 *ptr; + s32 total = 0; + s32 index; + + for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) + { + if (ptr->mailType == mailType) total++; + } + return total; +} + +u32 CountAllMail(void) +{ + struct unkStruct_203B480 *ptr; + u32 total = 0; + s32 index; + + for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) + { + if (ptr->mailType != 0) total++; + } + return total; +} + +s32 sub_8095374(void) +{ + struct unkStruct_203B480 *ptr; + s32 retvar = -1; + s32 index; + + for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) + { + if (ptr->mailType == 1) retvar = index; + } + return retvar; +} + +/* With mailType and (additonal data??), search mail and return exact index */ +s32 GetMailIndex(u8 mailType, u32 param_2) +{ + struct unkStruct_203B480 *ptr; + s32 index; + + for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) + { + if ((ptr->mailType == mailType) && (ptr->unk10.unk10 == param_2)) return index; + } + return -1; +} + +/* Return the index of the first mail of the requested type */ +s32 GetFirstIndexofMailType(u8 mailType) +{ + struct unkStruct_203B480 *ptr; + s32 index; + + for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) + { + if (ptr->mailType == mailType) return index; + } + return -1; +} + +s32 sub_8095400(u32 param_1) +{ + u32 *ptr; + s32 index; + + for(index = 0, ptr = &gUnknown_203B480[0].unk10.unk10; index < 0x20; ptr += 0xC, index++) + { + if (*ptr == param_1) return index; + } + return -1; +} + +void sub_809542C(struct unkStruct_809542C *param_1) +{ + u32 uVar4; + +#ifndef NONMATCHING + register struct unkStruct_203B480 *preload asm("r2"); +#else + struct unkStruct_203B480 *preload; +#endif + + u8 buffer [20]; + + gUnknown_203B480->mailType = 1; + preload = gUnknown_203B480; + uVar4 = param_1->unk4; + preload->dungeon = param_1->unk0; + preload->unk8 = uVar4; + sub_8094D28(Rand32Bit()); + gUnknown_203B480->unk10.unk10 = sub_8094E4C(); + gUnknown_203B480->clientSpecies = GetPlayerPokemonStruct()->speciesNum; + PrintPokeNameToBuffer(buffer, GetPlayerPokemonStruct()); + CopyStringtoBuffer(gUnknown_203B480->playerName, buffer); + gUnknown_203B480->unk24 = sub_8011C34(); + gUnknown_203B480->rescuesAllowed = GetRescuesAllowed(gUnknown_203B480->dungeon.id); +} + +void sub_8095494(struct unkStruct_809542C *param_1, u8 index) +{ + u32 uVar1; + struct DungeonLocation temp; + struct unkStruct_203B480 *mail; + + mail = gUnknown_203B480; + mail += index; + + temp = mail->dungeon; + uVar1 = mail->unk8; + param_1->unk0 = temp; + param_1->unk4 = uVar1; +} + +u32 sub_80954B4(void) +{ + if(CountMailType(3) != 0) + return 1; + else + return 0; +} + +u32 sub_80954CC(u8 *a, u32 b) +{ + struct unkStruct_8094924 backup; + struct PokemonStruct *temp; + s32 index; + + xxx_init_struct_8094924_restore_809485C(&backup, a, b); + for(index = 0; index < 0x20; index++) + { + sub_8095774(&backup, &gUnknown_203B480[index]); + } + RestoreIntegerBits(&backup, &gUnknown_203B484->unk0, 0x20); + temp = &gUnknown_203B484->unk4; + memset(temp, 0, sizeof(struct PokemonStruct)); + RestoreIntegerBits(&backup, &temp->unk0, 2); + RestoreIntegerBits(&backup, &temp->isTeamLeader, 1); + RestoreIntegerBits(&backup, &temp->unkHasNextStage, 7); + RestoreDungeonLocation(&backup, &temp->dungeonLocation); + RestoreIntegerBits(&backup, &temp->speciesNum, 9); + xxx_restore_poke_sub_c_808F410(&backup, &temp->unkC[0]); + xxx_restore_poke_sub_c_808F410(&backup, &temp->unkC[1]); + RestoreIntegerBits(&backup, &temp->IQ, 0xA); + RestoreIntegerBits(&backup, &temp->pokeHP, 0xA); + RestoreIntegerBits(&backup, &temp->offense.att[0], 8); + RestoreIntegerBits(&backup, &temp->offense.att[1], 8); + RestoreIntegerBits(&backup, &temp->offense.def[0], 8); + RestoreIntegerBits(&backup, &temp->offense.def[1], 8); + RestoreIntegerBits(&backup, &temp->unk1C, 0x18); + RestoreIntegerBits(&backup, &temp->IQSkills, 0x18); + RestoreIntegerBits(&backup, &temp->unk24, 4); + RestoreHeldItem(&backup, &temp->heldItem); + RestorePokemonMoves(&backup, temp->moves); + RestoreIntegerBits(&backup, temp->name, 0x50); + + RestoreIntegerBits(&backup, &gUnknown_203B48C->unk0, 0x20); + for(index = 0; index < 0x20; index++) + { + RestoreIntegerBits(&backup, &gUnknown_203B48C->unk4[index], 0x20); + } + nullsub_102(&backup); + return backup.unk8; +} + +u32 sub_8095624(u8 *a, u32 b) +{ + struct unkStruct_8094924 backup; + struct PokemonStruct *temp; + s32 index; + + xxx_init_struct_8094924_save_809486C(&backup, a, b); + for(index = 0; index < 0x20; index++) + { + sub_8095824(&backup, &gUnknown_203B480[index]); + } + SaveIntegerBits(&backup, &gUnknown_203B484->unk0, 0x20); + temp = &gUnknown_203B484->unk4; + SaveIntegerBits(&backup, &temp->unk0, 2); + SaveIntegerBits(&backup, &temp->isTeamLeader, 1); + SaveIntegerBits(&backup, &temp->unkHasNextStage, 7); + SaveDungeonLocation(&backup, &temp->dungeonLocation); + SaveIntegerBits(&backup, &temp->speciesNum, 9); + xxx_save_poke_sub_c_808F41C(&backup, &temp->unkC[0]); + xxx_save_poke_sub_c_808F41C(&backup, &temp->unkC[1]); + SaveIntegerBits(&backup, &temp->IQ, 0xA); + SaveIntegerBits(&backup, &temp->pokeHP, 0xA); + SaveIntegerBits(&backup, &temp->offense.att[0], 8); + SaveIntegerBits(&backup, &temp->offense.att[1], 8); + SaveIntegerBits(&backup, &temp->offense.def[0], 8); + SaveIntegerBits(&backup, &temp->offense.def[1], 8); + SaveIntegerBits(&backup, &temp->unk1C, 0x18); + SaveIntegerBits(&backup, &temp->IQSkills, 0x18); + SaveIntegerBits(&backup, &temp->unk24, 4); + SaveHeldItem(&backup, &temp->heldItem); + SavePokemonMoves(&backup, temp->moves); + SaveIntegerBits(&backup, temp->name, 0x50); + + SaveIntegerBits(&backup, &gUnknown_203B48C->unk0, 0x20); + for(index = 0; index < 0x20; index++) + { + SaveIntegerBits(&backup, &gUnknown_203B48C->unk4[index], 0x20); + } + nullsub_102(&backup); + return backup.unk8; +} + +void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b) +{ + u8 temp; + + RestoreIntegerBits(a, &b->mailType, 4); + RestoreDungeonLocation(a, &b->dungeon); + RestoreIntegerBits(a, &b->unk8, 0x18); + RestoreIntegerBits(a, &b->clientSpecies, 0x9); + RestoreIntegerBits(a, &b->unk10.unk10, 0x20); + RestoreIntegerBits(a, &b->playerName, 0x50); + RestoreIntegerBits(a, &b->unk20.flags, 0x8); + RestoreIntegerBits(a, &b->unk20.quantity, 0x8); + RestoreIntegerBits(a, &b->unk20.id, 0x8); + RestoreIntegerBits(a, &b->unk24, 0x20); + RestoreIntegerBits(a, &b->unk28, 0x20); + RestoreIntegerBits(a, &b->rescuesAllowed, 0x8); + + RestoreIntegerBits(a, &temp, 1); + b->unk2D = temp & 1; +} + +void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b) +{ + u8 neg1; + u8 zero; + u8 *puVar2; + neg1 = -1; + zero = 0; + + SaveIntegerBits(a, &b->mailType, 4); + SaveDungeonLocation(a, &b->dungeon); + SaveIntegerBits(a, &b->unk8, 0x18); + SaveIntegerBits(a, &b->clientSpecies, 0x9); + SaveIntegerBits(a, &b->unk10.unk10, 0x20); + SaveIntegerBits(a, &b->playerName, 0x50); + SaveIntegerBits(a, &b->unk20.flags, 0x8); + SaveIntegerBits(a, &b->unk20.quantity, 0x8); + SaveIntegerBits(a, &b->unk20.id, 0x8); + SaveIntegerBits(a, &b->unk24, 0x20); + SaveIntegerBits(a, &b->unk28, 0x20); + SaveIntegerBits(a, &b->rescuesAllowed, 0x8); + + if(b->unk2D != 0) + puVar2 = &neg1; + else + puVar2 = &zero; + SaveIntegerBits(a, puVar2, 1); +} + +void sub_80958E4(u32 *a, u32 b) +{ + *a = b; +} diff --git a/src/code_8095824.c b/src/code_8095824.c index 8f0056a60..f5e7b6272 100644 --- a/src/code_8095824.c +++ b/src/code_8095824.c @@ -6,368 +6,3 @@ #include "save.h" #include "text_util.h" #include "code_8094F88.h" - -extern struct unkStruct_203B484 *gUnknown_203B484; -extern struct unkStruct_203B480 *gUnknown_203B480; -extern struct unkStruct_203B48C *gUnknown_203B48C; - -extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*); -extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*); -extern void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924* a1, struct unkPokeSubStruct_C* unkC); -extern void xxx_restore_poke_sub_c_808F410(struct unkStruct_8094924*, struct unkPokeSubStruct_C*); -extern void SavePokemonMoves(struct unkStruct_8094924 *r0, struct Move *moveSet); -extern void RestorePokemonMoves(struct unkStruct_8094924 *r0, struct Move *moveSet); - -void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b); -void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b); -s32 CountMailType(u8); - -extern struct PokemonStruct *GetPlayerPokemonStruct(void); -extern s32 sub_8094E4C(void); -extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon); -extern void sub_8094D28(s32); - -struct unkStruct_809542C -{ - struct DungeonLocation unk0; - u32 unk4; -}; - -bool8 sub_80951FC(struct unkStruct_203B480 *param_1) -{ - bool8 bVar1 = gUnknown_203B480[1].mailType != 0; - gUnknown_203B480[1] = *param_1; - return bVar1; -} - -struct unkStruct_203B480 * sub_8095228(u8 index) -{ - struct unkStruct_203B480 *ptr; - - ptr = &gUnknown_203B480[index]; - return ptr; -} - -void DeleteMailAtIndex(u8 index) -{ - struct unkStruct_203B480 *unused; - - MemoryFill8((u8*)&gUnknown_203B480[index],0,sizeof(struct unkStruct_203B480)); - unused = &gUnknown_203B480[index]; - gUnknown_203B480[index].mailType = 0; - unused = &gUnknown_203B480[index]; - gUnknown_203B480[index].unk20.id = 0; -} - -void sub_8095274(u32 param_1) -{ - s32 iVar2; - s32 iVar3; - - gUnknown_203B48C->unk4[gUnknown_203B48C->unk0] = param_1; - iVar2 = gUnknown_203B48C->unk0; - iVar3 = 0; - if (iVar2 < 0x1f) { - iVar3 = iVar2 + 1; - } - gUnknown_203B48C->unk0 = iVar3; -} - -bool8 sub_8095298(s32 param_1) -{ - s32 index; - - for(index = 0; index < 0x20; index++) - { - if(gUnknown_203B48C->unk4[index] == param_1) return TRUE; - } - return FALSE; -} - -void sub_80952C4(void) -{ - s32 index; - - gUnknown_203B48C->unk0 = 0; - for(index = 0; index < 0x20; index++) - { - gUnknown_203B48C->unk4[index] = -1; - } -} - -bool8 HasMail(u8 mailType, u32 param_2) -{ - struct unkStruct_203B480 *ptr; - s32 index; - - for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) - { - if ((ptr->mailType == mailType) && (ptr->unk10.unk10 == param_2)) return TRUE; - } - return FALSE; -} - -s32 CountMailType(u8 mailType) -{ - struct unkStruct_203B480 *ptr; - s32 total = 0; - s32 index; - - for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) - { - if (ptr->mailType == mailType) total++; - } - return total; -} - -u32 CountAllMail(void) -{ - struct unkStruct_203B480 *ptr; - u32 total = 0; - s32 index; - - for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) - { - if (ptr->mailType != 0) total++; - } - return total; -} - -s32 sub_8095374(void) -{ - struct unkStruct_203B480 *ptr; - s32 retvar = -1; - s32 index; - - for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) - { - if (ptr->mailType == 1) retvar = index; - } - return retvar; -} - -/* With mailType and (additonal data??), search mail and return exact index */ -s32 GetMailIndex(u8 mailType, u32 param_2) -{ - struct unkStruct_203B480 *ptr; - s32 index; - - for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) - { - if ((ptr->mailType == mailType) && (ptr->unk10.unk10 == param_2)) return index; - } - return -1; -} - -/* Return the index of the first mail of the requested type */ -s32 GetFirstIndexofMailType(u8 mailType) -{ - struct unkStruct_203B480 *ptr; - s32 index; - - for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) - { - if (ptr->mailType == mailType) return index; - } - return -1; -} - -s32 sub_8095400(u32 param_1) -{ - u32 *ptr; - s32 index; - - for(index = 0, ptr = &gUnknown_203B480[0].unk10.unk10; index < 0x20; ptr += 0xC, index++) - { - if (*ptr == param_1) return index; - } - return -1; -} - -void sub_809542C(struct unkStruct_809542C *param_1) -{ - u32 uVar4; - -#ifndef NONMATCHING - register struct unkStruct_203B480 *preload asm("r2"); -#else - struct unkStruct_203B480 *preload; -#endif - - u8 buffer [20]; - - gUnknown_203B480->mailType = 1; - preload = gUnknown_203B480; - uVar4 = param_1->unk4; - preload->dungeon = param_1->unk0; - preload->unk8 = uVar4; - sub_8094D28(Rand32Bit()); - gUnknown_203B480->unk10.unk10 = sub_8094E4C(); - gUnknown_203B480->clientSpecies = GetPlayerPokemonStruct()->speciesNum; - PrintPokeNameToBuffer(buffer, GetPlayerPokemonStruct()); - CopyStringtoBuffer(gUnknown_203B480->playerName, buffer); - gUnknown_203B480->unk24 = sub_8011C34(); - gUnknown_203B480->rescuesAllowed = GetRescuesAllowed(gUnknown_203B480->dungeon.id); -} - -void sub_8095494(struct unkStruct_809542C *param_1, u8 index) -{ - u32 uVar1; - struct DungeonLocation temp; - struct unkStruct_203B480 *mail; - - mail = gUnknown_203B480; - mail += index; - - temp = mail->dungeon; - uVar1 = mail->unk8; - param_1->unk0 = temp; - param_1->unk4 = uVar1; -} - -u32 sub_80954B4(void) -{ - if(CountMailType(3) != 0) - return 1; - else - return 0; -} - -u32 sub_80954CC(u8 *a, u32 b) -{ - struct unkStruct_8094924 backup; - struct PokemonStruct *temp; - s32 index; - - xxx_init_struct_8094924_restore_809485C(&backup, a, b); - for(index = 0; index < 0x20; index++) - { - sub_8095774(&backup, &gUnknown_203B480[index]); - } - RestoreIntegerBits(&backup, &gUnknown_203B484->unk0, 0x20); - temp = &gUnknown_203B484->unk4; - memset(temp, 0, sizeof(struct PokemonStruct)); - RestoreIntegerBits(&backup, &temp->unk0, 2); - RestoreIntegerBits(&backup, &temp->isTeamLeader, 1); - RestoreIntegerBits(&backup, &temp->unkHasNextStage, 7); - RestoreDungeonLocation(&backup, &temp->dungeonLocation); - RestoreIntegerBits(&backup, &temp->speciesNum, 9); - xxx_restore_poke_sub_c_808F410(&backup, &temp->unkC[0]); - xxx_restore_poke_sub_c_808F410(&backup, &temp->unkC[1]); - RestoreIntegerBits(&backup, &temp->IQ, 0xA); - RestoreIntegerBits(&backup, &temp->pokeHP, 0xA); - RestoreIntegerBits(&backup, &temp->offense.att[0], 8); - RestoreIntegerBits(&backup, &temp->offense.att[1], 8); - RestoreIntegerBits(&backup, &temp->offense.def[0], 8); - RestoreIntegerBits(&backup, &temp->offense.def[1], 8); - RestoreIntegerBits(&backup, &temp->unk1C, 0x18); - RestoreIntegerBits(&backup, &temp->IQSkills, 0x18); - RestoreIntegerBits(&backup, &temp->unk24, 4); - RestoreHeldItem(&backup, &temp->heldItem); - RestorePokemonMoves(&backup, temp->moves); - RestoreIntegerBits(&backup, temp->name, 0x50); - - RestoreIntegerBits(&backup, &gUnknown_203B48C->unk0, 0x20); - for(index = 0; index < 0x20; index++) - { - RestoreIntegerBits(&backup, &gUnknown_203B48C->unk4[index], 0x20); - } - nullsub_102(&backup); - return backup.unk8; -} - -u32 sub_8095624(u8 *a, u32 b) -{ - struct unkStruct_8094924 backup; - struct PokemonStruct *temp; - s32 index; - - xxx_init_struct_8094924_save_809486C(&backup, a, b); - for(index = 0; index < 0x20; index++) - { - sub_8095824(&backup, &gUnknown_203B480[index]); - } - SaveIntegerBits(&backup, &gUnknown_203B484->unk0, 0x20); - temp = &gUnknown_203B484->unk4; - SaveIntegerBits(&backup, &temp->unk0, 2); - SaveIntegerBits(&backup, &temp->isTeamLeader, 1); - SaveIntegerBits(&backup, &temp->unkHasNextStage, 7); - SaveDungeonLocation(&backup, &temp->dungeonLocation); - SaveIntegerBits(&backup, &temp->speciesNum, 9); - xxx_save_poke_sub_c_808F41C(&backup, &temp->unkC[0]); - xxx_save_poke_sub_c_808F41C(&backup, &temp->unkC[1]); - SaveIntegerBits(&backup, &temp->IQ, 0xA); - SaveIntegerBits(&backup, &temp->pokeHP, 0xA); - SaveIntegerBits(&backup, &temp->offense.att[0], 8); - SaveIntegerBits(&backup, &temp->offense.att[1], 8); - SaveIntegerBits(&backup, &temp->offense.def[0], 8); - SaveIntegerBits(&backup, &temp->offense.def[1], 8); - SaveIntegerBits(&backup, &temp->unk1C, 0x18); - SaveIntegerBits(&backup, &temp->IQSkills, 0x18); - SaveIntegerBits(&backup, &temp->unk24, 4); - SaveHeldItem(&backup, &temp->heldItem); - SavePokemonMoves(&backup, temp->moves); - SaveIntegerBits(&backup, temp->name, 0x50); - - SaveIntegerBits(&backup, &gUnknown_203B48C->unk0, 0x20); - for(index = 0; index < 0x20; index++) - { - SaveIntegerBits(&backup, &gUnknown_203B48C->unk4[index], 0x20); - } - nullsub_102(&backup); - return backup.unk8; -} - -void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b) -{ - u8 temp; - - RestoreIntegerBits(a, &b->mailType, 4); - RestoreDungeonLocation(a, &b->dungeon); - RestoreIntegerBits(a, &b->unk8, 0x18); - RestoreIntegerBits(a, &b->clientSpecies, 0x9); - RestoreIntegerBits(a, &b->unk10.unk10, 0x20); - RestoreIntegerBits(a, &b->playerName, 0x50); - RestoreIntegerBits(a, &b->unk20.flags, 0x8); - RestoreIntegerBits(a, &b->unk20.quantity, 0x8); - RestoreIntegerBits(a, &b->unk20.id, 0x8); - RestoreIntegerBits(a, &b->unk24, 0x20); - RestoreIntegerBits(a, &b->unk28, 0x20); - RestoreIntegerBits(a, &b->rescuesAllowed, 0x8); - - RestoreIntegerBits(a, &temp, 1); - b->unk2D = temp & 1; -} - -void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b) -{ - u8 neg1; - u8 zero; - u8 *puVar2; - neg1 = -1; - zero = 0; - - SaveIntegerBits(a, &b->mailType, 4); - SaveDungeonLocation(a, &b->dungeon); - SaveIntegerBits(a, &b->unk8, 0x18); - SaveIntegerBits(a, &b->clientSpecies, 0x9); - SaveIntegerBits(a, &b->unk10.unk10, 0x20); - SaveIntegerBits(a, &b->playerName, 0x50); - SaveIntegerBits(a, &b->unk20.flags, 0x8); - SaveIntegerBits(a, &b->unk20.quantity, 0x8); - SaveIntegerBits(a, &b->unk20.id, 0x8); - SaveIntegerBits(a, &b->unk24, 0x20); - SaveIntegerBits(a, &b->unk28, 0x20); - SaveIntegerBits(a, &b->rescuesAllowed, 0x8); - - if(b->unk2D != 0) - puVar2 = &neg1; - else - puVar2 = &zero; - SaveIntegerBits(a, puVar2, 1); -} - -void sub_80958E4(u32 *a, u32 b) -{ - *a = b; -} diff --git a/src/code_80958E8.c b/src/code_80958E8.c index ad9923b58..30a8c4af5 100644 --- a/src/code_80958E8.c +++ b/src/code_80958E8.c @@ -40,19 +40,19 @@ struct unkStruct_203B490 *GetMailInfo(void) void InitializeMailJobsNews(void) { s32 index; - for(index = 0; index < 4; index++) + for(index = 0; index < NUM_MAILBOX_SLOTS; index++) { ResetMailboxSlot(index); } - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { ResetPelipperBoardSlot(index); } - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { ResetJobSlot(index); } - for(index = 0; index < 56; index++) + for(index = 0; index < NUM_POKEMON_NEWS; index++) { gUnknown_203B490->PKMNNewsReceived[index] = FALSE; } diff --git a/src/code_80972F4.c b/src/code_80972F4.c index 7ae7986a6..685cd0d2a 100644 --- a/src/code_80972F4.c +++ b/src/code_80972F4.c @@ -41,15 +41,15 @@ u32 RestoreMailInfo(u8 *r0, u32 size) u32 temp; xxx_init_struct_8094924_restore_809485C(&backup, r0, size); - for(index = 0; index < 4; index++) + for(index = 0; index < NUM_MAILBOX_SLOTS; index++) { RestoreWonderMail(&backup, &gUnknown_203B490->mailboxSlots[index]); } - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { RestoreWonderMail(&backup, &gUnknown_203B490->pelipperBoardJobs[index]); } - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { RestoreWonderMail(&backup, &gUnknown_203B490->jobSlots[index]); } @@ -86,15 +86,15 @@ u32 SaveMailInfo(u8 *r0, u32 size) u32 temp; xxx_init_struct_8094924_save_809486C(&backup, r0, size); - for(index = 0; index < 4; index++) + for(index = 0; index < NUM_MAILBOX_SLOTS; index++) { SaveWonderMail(&backup, &gUnknown_203B490->mailboxSlots[index]); } - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { SaveWonderMail(&backup, &gUnknown_203B490->pelipperBoardJobs[index]); } - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { SaveWonderMail(&backup, &gUnknown_203B490->jobSlots[index]); } diff --git a/src/friend_list_menu_1.c b/src/friend_list_menu_1.c index c70970248..313cd5231 100644 --- a/src/friend_list_menu_1.c +++ b/src/friend_list_menu_1.c @@ -34,7 +34,7 @@ struct unkStruct_203B2B4 struct MenuStruct unk78; struct MenuItem unkC8[4]; u8 fillE8[0x108 - 0xE8]; - s16 unk108[8]; + u16 unk108[8]; struct UnkTextStruct2 unk118[4]; }; extern struct unkStruct_203B2B4 *gUnknown_203B2B4; diff --git a/src/friend_rescue_1.c b/src/friend_rescue_1.c index d6c7312d1..e12a1f0bc 100644 --- a/src/friend_rescue_1.c +++ b/src/friend_rescue_1.c @@ -17,7 +17,6 @@ extern struct TeamInventory *gTeamInventory_203B460; -extern u8 *gUnknown_203B484; extern void SetFriendRescueMenuState(u32); extern s32 sub_80144A4(s32 *); @@ -82,9 +81,7 @@ extern u16 sub_8023B44(void); extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_203B480 *r0); extern void sub_8095274(u32); -extern void sub_80951BC(struct unkStruct_203B480 *r0); extern u8 sub_800D588(void); -extern s32 FindOpenMailSlot(void); extern struct PokemonStruct *GetPlayerPokemonStruct(void); extern u8 gUnknown_80E44A4[]; @@ -724,7 +721,7 @@ void sub_8033DBC(void) case PASSWORD_ENTRY_AOK_MAIL_SUCCESS: mail.mailType = 5; sub_80951FC(&mail); - mail2 = sub_8095228(GetMailIndex(1, mail.unk10.unk10)); + mail2 = GetMailatIndex(GetMailIndex(1, mail.unk10.unk10)); mail2->mailType = 7; MemoryFill8((u8 *)gUnknown_203B484, 0, sizeof(struct unkStruct_203B484)); SetFriendRescueMenuState(0x40); @@ -1592,7 +1589,7 @@ void sub_8034D74(void) SetFriendRescueMenuState(FRIEND_RESCUE_MENU_ERROR_2); break; case PASSWORD_ENTRY_THANK_YOU_MAIL_SUCCESS: - mail2 = sub_8095228(GetMailIndex(4, mail.unk10.unk10)); + mail2 = GetMailatIndex(GetMailIndex(4, mail.unk10.unk10)); *mail2 = mail; mail2->mailType = 6; gUnknown_203B33C->unk420 = mail.unk10.unk10; @@ -1691,7 +1688,7 @@ void sub_8034F88(void) switch(menuAction) { case 6: - mail = sub_8095228(gUnknown_203B33C->unk218); + mail = GetMailatIndex(gUnknown_203B33C->unk218); if(gUnknown_203B33C->item.id != ITEM_NOTHING) mail->unk20 = gUnknown_203B33C->item; gTeamInventory_203B460->teamStorage[gUnknown_203B33C->item.id]--; @@ -1893,7 +1890,7 @@ void sub_8035210(void) case 0xD: if(gUnknown_203B33C->unk528 == 0x13) { - mail = sub_8095228(GetFirstIndexofMailType(5)); + mail = GetMailatIndex(GetFirstIndexofMailType(5)); if(mail->unk20.id != ITEM_NOTHING) SetFriendRescueMenuState(0x53); else diff --git a/src/mailbox_8095F8C.c b/src/mailbox_8095F8C.c index 92d494a9d..b07250bfa 100644 --- a/src/mailbox_8095F8C.c +++ b/src/mailbox_8095F8C.c @@ -13,7 +13,7 @@ s32 CountFilledMailboxSlots(void) s32 counter; counter = 0; - for(index = 0; index < 4; index++) + for(index = 0; index < NUM_MAILBOX_SLOTS; index++) { if(!IsMailSlotEmpty(index)) counter++; @@ -26,7 +26,7 @@ bool8 sub_8095FB0(struct WonderMail *mail) { s32 index; - for(index = 0; index < 4; index++) + for(index = 0; index < NUM_MAILBOX_SLOTS; index++) { if(gUnknown_203B490->mailboxSlots[index].mailType == WONDER_MAIL_TYPE_NONE) { @@ -53,7 +53,7 @@ bool8 IsMailSlotEmpty(u8 index) void ResetMailbox(void) { s32 index; - for(index = 0; index < 4; index++) + for(index = 0; index < NUM_MAILBOX_SLOTS; index++) { ResetMailboxSlot(index); } diff --git a/src/post_office_guide.c b/src/post_office_guide.c index f15b1c20f..11f3fe530 100644 --- a/src/post_office_guide.c +++ b/src/post_office_guide.c @@ -613,7 +613,7 @@ void DisplayMissionObjectives(void) { case 1: sub_8099394(&local_94); - mail = sub_8095228(local_94); + mail = GetMailatIndex(local_94); sub_803B6B0(10,16,3,gUnknown_203B330->unk10); // %dF sprintfStatic(buffer,gUnknown_80E1F3C,mail->dungeon.floor); diff --git a/src/rescue_password_menu.c b/src/rescue_password_menu.c index 0c5bb49d0..7b9dd3704 100644 --- a/src/rescue_password_menu.c +++ b/src/rescue_password_menu.c @@ -36,10 +36,7 @@ extern void DisplayPasswordAcceptScreen(void); extern u32 sub_8039068(u32, u8 *passwordBuffer, struct unkStruct_203B480 *r0); -extern void sub_80951BC(struct unkStruct_203B480 *r0); -extern bool8 sub_80951FC(struct unkStruct_203B480 *r0); extern u32 sub_80154F0(void); -extern void sub_8095274(u32); extern u32 sub_8031DCC(void); extern void sub_80391F8(void); extern void sub_8031E00(); @@ -53,7 +50,6 @@ bool8 IsInvalidItemReward(u8); bool8 sub_8095298(s32); bool8 sub_803D204(u8 *, struct unkStruct_203B480 *); extern s32 GetDungeonFloorCount(u8); -extern s32 FindOpenMailSlot(void); extern struct UnkTextStruct2 gUnknown_80E71FC; extern struct UnkTextStruct2 gUnknown_80E7278; @@ -118,7 +114,7 @@ void CreateRescuePasswordMenu(u32 currMenu) sub_80151C0(4, gRescuePasswordBuffer); break; case MENU_DISPLAY_RESCUE_PASSWORD: - temp = sub_8095228(0x1F); + temp = GetMailatIndex(0x1F); MemoryFill8((u8 *)temp, 0, sizeof(struct unkStruct_203B480)); temp->mailType = 2; temp->unk20.id = ITEM_NOTHING; @@ -161,12 +157,12 @@ static inline s32 UpdateRescuePasswordMenu_sub(s32 otherMenu) s32 UpdateRescuePasswordMenu(void) { - struct unkStruct_203B480 *puVar5; - struct unkStruct_203B480 *puVar6; + struct unkStruct_203B480 *mailPtr1; + struct unkStruct_203B480 *mailPtr2; u32 iVar7; - struct MainMenu *iVar9; + struct MainMenu *mainMenuPtr; s32 nextMenu; - struct unkStruct_203B480 local_44; + struct unkStruct_203B480 mail; u32 menuAction; u32 subtract; @@ -182,7 +178,7 @@ s32 UpdateRescuePasswordMenu(void) case 3: case 5: iVar7 = sub_80154F0(); - MemoryFill8((u8 *)&local_44, 0, sizeof(struct unkStruct_203B480)); + MemoryFill8((u8 *)&mail, 0, sizeof(struct unkStruct_203B480)); switch(iVar7) { case 1: @@ -196,7 +192,7 @@ s32 UpdateRescuePasswordMenu(void) nextMenu = MENU_FRIEND_RESCUE; break; case 3: - switch(sub_8039068(gRescuePasswordMenu->currMenu, gRescuePasswordBuffer, &local_44)) { + switch(sub_8039068(gRescuePasswordMenu->currMenu, gRescuePasswordBuffer, &mail)) { case PASSWORD_ENTRY_INCORRECT_PASSWORD: nextMenu = PASSWORD_ENTRY_INCORRECT_PASSWORD; DisplayRescuePasswordError(nextMenu); @@ -222,12 +218,12 @@ s32 UpdateRescuePasswordMenu(void) nextMenu = MENU_NO_SCREEN_CHANGE; break; case PASSWORD_ENTRY_SOS_MAIL_SUCCESS: - sub_8095274(local_44.unk10.unk10); + sub_8095274(mail.unk10.unk10); DisplayPasswordAcceptScreen(); gRescuePasswordMenu->state = 9; nextMenu = MENU_NO_SCREEN_CHANGE; - local_44.mailType = 2; - sub_80951BC(&local_44); + mail.mailType = 2; + sub_80951BC(&mail); break; case PASSWORD_ENTRY_NOT_AOK_MAIL: nextMenu = PASSWORD_ENTRY_NOT_AOK_MAIL; @@ -245,10 +241,10 @@ s32 UpdateRescuePasswordMenu(void) DisplayPasswordAcceptScreen(); gRescuePasswordMenu->state = 9; nextMenu = MENU_NO_SCREEN_CHANGE; - local_44.mailType = 5; - sub_80951FC(&local_44); - puVar5 = sub_8095228(GetMailIndex(1, local_44.unk10.unk10)); - puVar5->mailType = WONDER_MAIL_TYPE_OKD; + mail.mailType = 5; + sub_80951FC(&mail); + mailPtr1 = GetMailatIndex(GetMailIndex(1, mail.unk10.unk10)); + mailPtr1->mailType = WONDER_MAIL_TYPE_OKD; MemoryFill8((u8 *)&gUnknown_203B484, 0, sizeof(struct unkStruct_203B484)); break; case PASSWORD_ENTRY_NOT_THANK_YOU_MAIL: @@ -267,11 +263,11 @@ s32 UpdateRescuePasswordMenu(void) DisplayPasswordAcceptScreen(); gRescuePasswordMenu->state = 9; nextMenu = MENU_NO_SCREEN_CHANGE; - puVar6 = sub_8095228(GetMailIndex(4, local_44.unk10.unk10)); - *puVar6 = local_44; - puVar6->mailType = 6; - iVar9 = GetMainMenu(); - iVar9->unk3A = 1; + mailPtr2 = GetMailatIndex(GetMailIndex(4, mail.unk10.unk10)); + *mailPtr2 = mail; + mailPtr2->mailType = 6; + mainMenuPtr = GetMainMenu(); + mainMenuPtr->unk3A = 1; break; } break; diff --git a/src/save.c b/src/save.c index 6e121b632..7e8bb17d6 100644 --- a/src/save.c +++ b/src/save.c @@ -76,10 +76,7 @@ EWRAM_DATA_2 struct QuickSaveWrite *gQuickSaveWrite = {0}; extern s32 gUnknown_202DE28; extern bool8 *gFriendAreas; -extern u8 *gUnknown_203B480; -extern u8 *gUnknown_203B484; extern u32 *gUnknown_203B488; -extern u32 *gUnknown_203B48C; extern u32 gUnknown_203B494; ALIGNED(4) const char sGameInternalVersion[] = _("POKE_DUNGEON__05"); @@ -155,10 +152,6 @@ extern u32 RestoreRecruitedPokemon(void* a, s32 b); extern u32 SavePokemonStruct2(u8 *, u32); extern u32 RestorePokemonStruct2(void* a, s32 b); extern u32 sub_80921C4(u8 *, u32); -extern u8 *sub_8095100(void); -extern u32 *sub_8095108(void); -extern u32 *sub_8095110(void); -extern void sub_8095118(void); extern u32 sub_80954CC(void* a, s32 b); extern u32 sub_8095624(u8 *, u32); extern u32 RestoreMailInfo(void* a, s32 b); @@ -168,7 +161,6 @@ extern u32 sub_8097D60(u8 *, u32); extern u32 sub_8097D98(void* a, s32 b); extern void sub_80993E4(); extern void sub_800135C(void); -extern u8 *sub_80950F8(void); extern void sub_80958E4(u32 *a, u32 b); extern struct unkStruct_203B490 *GetMailInfo(void); extern void InitializeMailJobsNews(void); diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c index 19acf94be..45797e0f5 100644 --- a/src/thank_you_wonder_mail.c +++ b/src/thank_you_wonder_mail.c @@ -287,7 +287,7 @@ u32 CreateThankYouMailPelipper(void) index = GetFirstIndexofMailType(6); if (index != -1) { - mail = sub_8095228(index); + mail = GetMailatIndex(index); gUnknown_203B2C4->unk41C = mail->unk20; gUnknown_203B2C4->mailIndex = index; gUnknown_203B2C4->unk430 = mail->unk10.unk10; @@ -841,7 +841,7 @@ void HandleThankYouMailPasswordMenu(void) break; case PASSWORD_ENTRY_THANK_YOU_MAIL_SUCCESS: mailIndex = GetMailIndex(4,mail1.unk10.unk10); - mail = sub_8095228(mailIndex); + mail = GetMailatIndex(mailIndex); *mail = mail1; mail->mailType = 6; gUnknown_203B2C4->unk430 = mail1.unk10.unk10; @@ -954,7 +954,7 @@ void HandleConfirmItemtoSendMenu(void) switch(menuAction) { case 7: - mail = sub_8095228(gUnknown_203B2C4->mailIndex); + mail = GetMailatIndex(gUnknown_203B2C4->mailIndex); if(gUnknown_203B2C4->unk41C.id != ITEM_NOTHING) { mail->unk20 = gUnknown_203B2C4->unk41C; @@ -1143,7 +1143,7 @@ void HandleMailCommunicationMenu(void) switch(gUnknown_203B2C4->wonderMailMode) { case WONDER_MAIL_MODE_SEND: - mail = sub_8095228(GetFirstIndexofMailType(WONDER_MAIL_TYPE_THANK_YOU)); + mail = GetMailatIndex(GetFirstIndexofMailType(WONDER_MAIL_TYPE_THANK_YOU)); if(mail->unk20.id != ITEM_NOTHING) { SetThankYouMailMenuState(ITEM_EXISTS_ON_THANK_YOU_MAIL); @@ -1330,7 +1330,7 @@ void UpdateThankYouMailText(void) { case 6: MemoryFill8((u8 *)&gUnknown_203B2C4->unk1B8,0, sizeof(struct unkStruct_203B480)); - gUnknown_203B2C4->unk1B8 = *sub_8095228(gUnknown_203B2C4->mailIndex); + gUnknown_203B2C4->unk1B8 = *GetMailatIndex(gUnknown_203B2C4->mailIndex); gUnknown_203B2C4->linkError = sub_8037D64(gUnknown_203B2C4->unk40,&gUnknown_203B2C4->unk1B8,&gUnknown_203B2C4->unk1E8); break; case 7: @@ -1408,7 +1408,7 @@ void UpdateThankYouMailText(void) gUnknown_203B2C4->unk53C.unk16 = 2; // 0x552 gUnknown_203B2C4->unk53C.moneyReward = 0; // 0x554 mailIndex = GetMailIndex(6,gUnknown_203B2C4->unk430); - mail = sub_8095228(mailIndex); + mail = GetMailatIndex(mailIndex); itemIndex = mail->unk20.id; if (itemIndex != ITEM_NOTHING) gUnknown_203B2C4->unk53C.itemRewards[0] = itemIndex; // unk558 diff --git a/src/wonder_mail.c b/src/wonder_mail.c index cf45434a5..c69a5fbd0 100644 --- a/src/wonder_mail.c +++ b/src/wonder_mail.c @@ -28,7 +28,6 @@ extern bool8 sub_80A2824(u8); extern char gUnknown_202E5D8[0x50]; extern char gAvailablePokemonNames[0x50]; -extern s32 FindOpenMailSlot(void); extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32); extern void nullsub_130(void); extern void sub_8028348(void); @@ -48,7 +47,6 @@ extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_203B480 *r0); extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, void *r5, u32); extern void sub_8095274(u32); extern void sub_80155F0(); -extern void sub_80951BC(struct unkStruct_203B480 *r0); extern void sub_8023C60(); extern u32 sub_8023A94(u32); extern void sub_8024458(s16, u32); @@ -628,7 +626,7 @@ void sub_8028348(void) MemoryFill8((u8 *)&gUnknown_203B2C0->unk130, 0, sizeof(struct WonderMailStruct_203B2C0_sub)); gUnknown_203B2C0->unkA8.pokemon.speciesNum = 0; gUnknown_203B2C0->unk130.pokemon.speciesNum = 0; - gUnknown_203B2C0->unkA8.mail = *sub_8095228(gUnknown_203B2C0->mailIndex); + gUnknown_203B2C0->unkA8.mail = *GetMailatIndex(gUnknown_203B2C0->mailIndex); if(gUnknown_203B2C0->speciesNum != -1) { gUnknown_203B2C0->unkA8.pokemon = gRecruitedPokemonRef->pokemon[gUnknown_203B2C0->speciesNum]; @@ -1179,7 +1177,7 @@ void sub_8028FDC(void) switch(menuChoice) { case 8: - mail = sub_8095228(gUnknown_203B2C0->mailIndex); + mail = GetMailatIndex(gUnknown_203B2C0->mailIndex); if(!sub_80A2824(mail->dungeon.id)) { SetFriendRescueCounterState(CANT_GO_TO_DUNGEON); diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c index fef9a17c0..cfbbfde0c 100644 --- a/src/wonder_mail_2.c +++ b/src/wonder_mail_2.c @@ -180,7 +180,7 @@ void sub_802B3E0(void) gUnknown_203B2C8->unk114.unk16 = 2; gUnknown_203B2C8->unk114.moneyReward = 0; sub_8097790(); - mail = sub_8095228(gUnknown_203B2C8->unk1); + mail = GetMailatIndex(gUnknown_203B2C8->unk1); sub_803C37C(&mail->dungeon, 0, gUnknown_203B2C8->unk114.itemRewards); gUnknown_203B2C8->unk114.teamRankPtsReward = GetDungeonTeamRankPts(&mail->dungeon, 0); gUnknown_203B2C8->unk114.itemRewards[1] = ITEM_NOTHING; @@ -241,7 +241,7 @@ void sub_802B5B8(void) if (sub_80144A4(&temp) == 0) { uVar2 = sub_8011C34(); - mail = sub_8095228(gUnknown_203B2C8->unk1); + mail = GetMailatIndex(gUnknown_203B2C8->unk1); mail->mailType = WONDER_MAIL_TYPE_AOK; mail->unk28 = uVar2; sub_802B548(3); diff --git a/src/wonder_mail_4.c b/src/wonder_mail_4.c index 6b0a07e88..3bbdac56c 100644 --- a/src/wonder_mail_4.c +++ b/src/wonder_mail_4.c @@ -284,7 +284,7 @@ void sub_803092C(void) sub_8012BC4(r5,0,gUnknown_203B320->unk42 + 1,1,7,gUnknown_203B320->unk58); for (index = 0; index < gUnknown_203B320->unk3E; index++) { - mail = sub_8095228(gUnknown_203B320->unk0[(gUnknown_203B320->unk42 * gUnknown_203B320->unk40) + index]); + mail = GetMailatIndex(gUnknown_203B320->unk0[(gUnknown_203B320->unk42 * gUnknown_203B320->unk40) + index]); local.unk0[0] = gUnknown_203B320->unk58; local.y = sub_8013800(&gUnknown_203B320->unk24,index); local.unk40 = 7;