decomp another func and cleanup code

This commit is contained in:
Seth Barberee
2023-05-15 17:37:34 -07:00
parent 346bcc681f
commit 2116aef8c2
26 changed files with 479 additions and 530 deletions

View File

@@ -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]

View File

@@ -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

View File

@@ -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

View File

@@ -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]

View File

@@ -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

View File

@@ -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}

View File

@@ -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

View File

@@ -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;
};

View File

@@ -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;

View File

@@ -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

View File

@@ -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);

View File

@@ -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 *);

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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]);
}

View File

@@ -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;

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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;

View File

@@ -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);

View File

@@ -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

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;