major code refactor for sub_8095228

This commit is contained in:
Seth Barberee
2022-12-23 12:33:27 -08:00
parent a0aa6c9233
commit 71e0c74add
19 changed files with 310 additions and 540 deletions

View File

@@ -42,414 +42,4 @@ _080951F6:
bx r1
thumb_func_end sub_80951BC
thumb_func_start sub_80951FC
sub_80951FC:
push {r4,r5,lr}
ldr r1, _08095224
ldr r1, [r1]
adds r1, 0x30
ldrb r2, [r1]
negs r3, r2
orrs r3, r2
lsrs r3, 31
ldm r0!, {r2,r4,r5}
stm r1!, {r2,r4,r5}
ldm r0!, {r2,r4,r5}
stm r1!, {r2,r4,r5}
ldm r0!, {r2,r4,r5}
stm r1!, {r2,r4,r5}
ldm r0!, {r2,r4,r5}
stm r1!, {r2,r4,r5}
adds r0, r3, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08095224: .4byte gUnknown_203B480
thumb_func_end sub_80951FC
thumb_func_start sub_8095228
sub_8095228:
lsls r0, 24
lsrs r0, 24
ldr r2, _0809523C
lsls r1, r0, 1
adds r1, r0
lsls r1, 4
ldr r0, [r2]
adds r0, r1
bx lr
.align 2, 0
_0809523C: .4byte gUnknown_203B480
thumb_func_end sub_8095228
thumb_func_start sub_8095240
sub_8095240:
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
ldr r5, _08095270
lsls r4, r0, 1
adds r4, r0
lsls r4, 4
ldr r0, [r5]
adds r0, r4
movs r1, 0
movs r2, 0x30
bl MemoryFill8
ldr r0, [r5]
adds r0, r4
movs r1, 0
strb r1, [r0]
ldr r0, [r5]
adds r0, r4
adds r0, 0x22
strb r1, [r0]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08095270: .4byte gUnknown_203B480
thumb_func_end sub_8095240
thumb_func_start sub_8095274
sub_8095274:
push {lr}
ldr r1, _08095294
ldr r3, [r1]
adds r2, r3, 0
ldm r2!, {r1}
lsls r1, 2
adds r2, r1
str r0, [r2]
ldr r0, [r3]
movs r1, 0
cmp r0, 0x1E
bgt _0809528E
adds r1, r0, 0x1
_0809528E:
str r1, [r3]
pop {r0}
bx r0
.align 2, 0
_08095294: .4byte gUnknown_203B48C
thumb_func_end sub_8095274
thumb_func_start sub_8095298
sub_8095298:
push {lr}
adds r3, r0, 0
movs r2, 0
ldr r0, _080952B0
ldr r0, [r0]
adds r1, r0, 0x4
_080952A4:
ldr r0, [r1]
cmp r0, r3
bne _080952B4
movs r0, 0x1
b _080952BE
.align 2, 0
_080952B0: .4byte gUnknown_203B48C
_080952B4:
adds r1, 0x4
adds r2, 0x1
cmp r2, 0x1F
ble _080952A4
movs r0, 0
_080952BE:
pop {r1}
bx r1
thumb_func_end sub_8095298
thumb_func_start sub_80952C4
sub_80952C4:
push {r4,lr}
ldr r2, _080952EC
ldr r1, [r2]
movs r0, 0
str r0, [r1]
movs r3, 0
adds r4, r2, 0
movs r2, 0x1
negs r2, r2
_080952D6:
ldr r0, [r4]
lsls r1, r3, 2
adds r0, 0x4
adds r0, r1
str r2, [r0]
adds r3, 0x1
cmp r3, 0x1F
ble _080952D6
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080952EC: .4byte gUnknown_203B48C
thumb_func_end sub_80952C4
thumb_func_start sub_80952F0
sub_80952F0:
push {r4,lr}
adds r4, r1, 0
lsls r0, 24
lsrs r1, r0, 24
movs r3, 0
ldr r0, _08095310
ldr r2, [r0]
_080952FE:
ldrb r0, [r2]
cmp r0, r1
bne _08095314
ldr r0, [r2, 0x10]
cmp r0, r4
bne _08095314
movs r0, 0x1
b _0809531E
.align 2, 0
_08095310: .4byte gUnknown_203B480
_08095314:
adds r2, 0x30
adds r3, 0x1
cmp r3, 0x1F
ble _080952FE
movs r0, 0
_0809531E:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80952F0
thumb_func_start sub_8095324
sub_8095324:
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
movs r3, 0
ldr r0, _0809534C
ldr r1, [r0]
movs r2, 0x1F
_08095332:
ldrb r0, [r1]
cmp r0, r4
bne _0809533A
adds r3, 0x1
_0809533A:
adds r1, 0x30
subs r2, 0x1
cmp r2, 0
bge _08095332
adds r0, r3, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0809534C: .4byte gUnknown_203B480
thumb_func_end sub_8095324
thumb_func_start sub_8095350
sub_8095350:
push {lr}
movs r3, 0
ldr r0, _08095370
ldr r1, [r0]
movs r2, 0x1F
_0809535A:
ldrb r0, [r1]
cmp r0, 0
beq _08095362
adds r3, 0x1
_08095362:
adds r1, 0x30
subs r2, 0x1
cmp r2, 0
bge _0809535A
adds r0, r3, 0
pop {r1}
bx r1
.align 2, 0
_08095370: .4byte gUnknown_203B480
thumb_func_end sub_8095350
thumb_func_start sub_8095374
sub_8095374:
push {lr}
movs r3, 0x1
negs r3, r3
movs r2, 0
ldr r0, _08095398
ldr r1, [r0]
_08095380:
ldrb r0, [r1]
cmp r0, 0x1
bne _08095388
adds r3, r2, 0
_08095388:
adds r1, 0x30
adds r2, 0x1
cmp r2, 0x1F
ble _08095380
adds r0, r3, 0
pop {r1}
bx r1
.align 2, 0
_08095398: .4byte gUnknown_203B480
thumb_func_end sub_8095374
thumb_func_start sub_809539C
sub_809539C:
push {r4,lr}
adds r4, r1, 0
lsls r0, 24
lsrs r1, r0, 24
movs r3, 0
ldr r0, _080953BC
ldr r2, [r0]
_080953AA:
ldrb r0, [r2]
cmp r0, r1
bne _080953C0
ldr r0, [r2, 0x10]
cmp r0, r4
bne _080953C0
adds r0, r3, 0
b _080953CC
.align 2, 0
_080953BC: .4byte gUnknown_203B480
_080953C0:
adds r2, 0x30
adds r3, 0x1
cmp r3, 0x1F
ble _080953AA
movs r0, 0x1
negs r0, r0
_080953CC:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_809539C
thumb_func_start sub_80953D4
sub_80953D4:
push {lr}
lsls r0, 24
lsrs r3, r0, 24
movs r2, 0
ldr r0, _080953EC
ldr r1, [r0]
_080953E0:
ldrb r0, [r1]
cmp r0, r3
bne _080953F0
adds r0, r2, 0
b _080953FC
.align 2, 0
_080953EC: .4byte gUnknown_203B480
_080953F0:
adds r1, 0x30
adds r2, 0x1
cmp r2, 0x1F
ble _080953E0
movs r0, 0x1
negs r0, r0
_080953FC:
pop {r1}
bx r1
thumb_func_end sub_80953D4
thumb_func_start sub_8095400
sub_8095400:
push {lr}
adds r3, r0, 0
movs r2, 0
ldr r0, _08095418
ldr r0, [r0]
adds r1, r0, 0
adds r1, 0x10
_0809540E:
ldr r0, [r1]
cmp r0, r3
bne _0809541C
adds r0, r2, 0
b _08095428
.align 2, 0
_08095418: .4byte gUnknown_203B480
_0809541C:
adds r1, 0x30
adds r2, 0x1
cmp r2, 0x1F
ble _0809540E
movs r0, 0x1
negs r0, r0
_08095428:
pop {r1}
bx r1
thumb_func_end sub_8095400
thumb_func_start sub_809542C
sub_809542C:
push {r4,lr}
sub sp, 0x14
ldr r4, _08095490
ldr r2, [r4]
movs r1, 0x1
strb r1, [r2]
ldr r2, [r4]
ldr r1, [r0, 0x4]
ldr r0, [r0]
str r0, [r2, 0x4]
str r1, [r2, 0x8]
bl Random
bl sub_8094D28
bl sub_8094E4C
ldr r1, [r4]
str r0, [r1, 0x10]
bl GetPlayerPokemonStruct
ldr r1, [r4]
ldrh r0, [r0, 0x8]
strh r0, [r1, 0xC]
bl GetPlayerPokemonStruct
adds r1, r0, 0
mov r0, sp
bl PrintPokeNameToBuffer
ldr r0, [r4]
adds r0, 0x14
mov r1, sp
bl CopyStringtoBuffer
bl sub_8011C34
ldr r1, [r4]
str r0, [r1, 0x24]
ldrb r0, [r1, 0x4]
bl GetUnk3
ldr r1, [r4]
adds r1, 0x2C
strb r0, [r1]
add sp, 0x14
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08095490: .4byte gUnknown_203B480
thumb_func_end sub_809542C
thumb_func_start sub_8095494
sub_8095494:
lsls r1, 24
lsrs r1, 24
ldr r2, _080954B0
ldr r3, [r2]
lsls r2, r1, 1
adds r2, r1
lsls r2, 4
adds r3, r2
ldr r1, [r3, 0x4]
ldr r2, [r3, 0x8]
str r1, [r0]
str r2, [r0, 0x4]
bx lr
.align 2, 0
_080954B0: .4byte gUnknown_203B480
thumb_func_end sub_8095494
.align 2,0

View File

@@ -1,25 +1,25 @@
#ifndef GUARD_CODE_8094F88_H
#define GUARD_CODE_8094F88_H
#include "global.h"
#include "item.h"
// TODO: same as unkStruct_8095228
struct unkStruct_203B480
{
u8 mailType;
struct DungeonLocation unk4;
u32 unk8;
u32 unkC;
u32 unk10;
u32 unk14;
u32 unk18;
u32 unk1C;
u8 unk20;
u8 unk21;
u8 unk22;
/* 0x0 */ u8 mailType;
/* 0x1 */ u8 missionType;
/* 0x4 */ struct DungeonLocation dungeon;
/* 0x8 */ u32 unk8;
/* 0xC */ s16 clientSpecies;
/* 0xE */ s16 targetSpecies;
/* 0x10 */ u32 unk10;
/* 0x14 */ u8 playerName[0x20 - 0x14];;
struct ItemSlot unk20;
u32 unk24;
u32 unk28;
u8 unk2C;
s8 unk2C;
u8 unk2D;
u8 padding4[0x30 - 0x2E];
};
struct unkStruct_203B484
@@ -34,4 +34,18 @@ struct unkStruct_203B48C
s32 unk4[0x20];
};
bool8 sub_80951FC(struct unkStruct_203B480 *param_1);
struct unkStruct_203B480 * sub_8095228(u8 index);
void sub_8095240(u8 index);
void sub_8095274(u32 param_1);
bool8 sub_8095298(s32 param_1);
void sub_80952C4(void);
bool8 sub_80952F0(u8 mailType, u32 param_2);
s32 sub_8095324(u8 mailType);
u32 sub_8095350(void);
s32 sub_8095374(void);
s32 sub_809539C(u8 mailType, u32 param_2);
s32 sub_80953D4(u8 param_1);
#endif

View File

@@ -31,6 +31,7 @@ const u8 *GetDungeonName1(u8 dungeon);
u32 sub_80908D8(struct DungeonLocation *dungeon);
u8 sub_8090910(struct DungeonLocation *dungeon, u32 param_2);
bool8 sub_809095C(u8 dungeon);
s8 GetUnk3(u8 dungeon);
u8 GetUnk9(u8 dungeon);
#endif //GUARD_DUNGEON_H

View File

@@ -1,25 +0,0 @@
#ifndef GUARD_SUB_8095228_H
#define GUARD_SUB_8095228_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 ItemSlot 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

@@ -5,7 +5,7 @@
#include "text.h"
#include "item.h"
#include "pokemon.h"
#include "sub_8095228.h"
#include "code_8094F88.h"
#include "constants/wonder_mail.h"
@@ -51,7 +51,7 @@ struct WonderMailStruct_203B2C0
u32 linkError;
u8 unk48[0x30];
u8 unk78[0x30];
struct unkStruct_8095228 unkA8;
struct unkStruct_203B480 unkA8;
struct PokemonStruct unkD8;
u8 unk130;
u8 fill131[0x168 - 0x131];
@@ -93,8 +93,8 @@ struct WonderMailStruct_203B2C4
u32 unk40;
/* 0x44 */ u32 linkError; // another link status
u8 filler48[0x1B8 - 0x48];
struct unkStruct_8095228 unk1B8;
struct unkStruct_8095228 unk1E8;
struct unkStruct_203B480 unk1B8;
struct unkStruct_203B480 unk1E8;
s8 unk218;
u32 unk21C;
u8 filler220[0x30C - 0x220];

View File

@@ -16,7 +16,7 @@ struct unkStruct_802C39C
{
/* 0x0 */ u32 unk0[2];
/* 0x8 */ struct DungeonLocation *unk8;
/* 0xC */ u8 *unkC;
/* 0xC */ u8 *playerName;
/* 0x10 */ s16 unk10;
/* 0x12 */ s16 unk12;
/* 0x14 */ u8 unk14;

View File

@@ -57,7 +57,7 @@ void sub_8095118(void)
unused = &gUnknown_203B480[iVar1];
gUnknown_203B480[iVar1].mailType = 0;
unused = &gUnknown_203B480[iVar1];
gUnknown_203B480[iVar1].unk22 = 0;
gUnknown_203B480[iVar1].unk20.itemIndex = 0;
unused = &gUnknown_203B480[iVar1];
gUnknown_203B480[iVar1].unk2D = 0;
}

View File

@@ -1,5 +1,10 @@
#include "global.h"
#include "dungeon.h"
#include "memory.h"
#include "pokemon.h"
#include "random.h"
#include "save.h"
#include "text_util.h"
#include "code_8094F88.h"
extern struct unkStruct_203B484 *gUnknown_203B484;
@@ -15,7 +20,208 @@ extern void RestorePokemonMoves(struct unkStruct_8094924 *r0, struct PokemonMove
void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b);
void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b);
extern u32 sub_8095324(u32);
s32 sub_8095324(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 sub_8095240(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.itemIndex = 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 sub_80952F0(u8 mailType, u32 param_2)
{
struct unkStruct_203B480 *piVar1;
s32 index;
for(index = 0, piVar1 = &gUnknown_203B480[0]; index < 0x20; piVar1++, index++)
{
if ((piVar1->mailType == mailType) && (piVar1->unk10 == param_2)) return TRUE;
}
return FALSE;
}
s32 sub_8095324(u8 mailType)
{
struct unkStruct_203B480 *piVar1;
s32 total = 0;
s32 index;
for(index = 0, piVar1 = &gUnknown_203B480[0]; index < 0x20; piVar1++, index++)
{
if (piVar1->mailType == mailType) total++;
}
return total;
}
u32 sub_8095350(void)
{
struct unkStruct_203B480 *piVar1;
u32 total = 0;
s32 index;
for(index = 0, piVar1 = &gUnknown_203B480[0]; index < 0x20; piVar1++, index++)
{
if (piVar1->mailType != 0) total++;
}
return total;
}
s32 sub_8095374(void)
{
struct unkStruct_203B480 *piVar1;
s32 retvar = -1;
s32 index;
for(index = 0, piVar1 = &gUnknown_203B480[0]; index < 0x20; piVar1++, index++)
{
if (piVar1->mailType == 1) retvar = index;
}
return retvar;
}
s32 sub_809539C(u8 mailType, u32 param_2)
{
struct unkStruct_203B480 *piVar1;
s32 index;
for(index = 0, piVar1 = &gUnknown_203B480[0]; index < 0x20; piVar1++, index++)
{
if ((piVar1->mailType == mailType) && (piVar1->unk10 == param_2)) return index;
}
return -1;
}
s32 sub_80953D4(u8 param_1)
{
struct unkStruct_203B480 *piVar1;
s32 index;
for(index = 0, piVar1 = &gUnknown_203B480[0]; index < 0x20; piVar1++, index++)
{
if (piVar1->mailType == param_1) return index;
}
return -1;
}
s32 sub_8095400(u32 param_1)
{
u32 *piVar1;
s32 index;
for(index = 0, piVar1 = &gUnknown_203B480[0].unk10; index < 0x20; piVar1 += 0xC, index++)
{
if (*piVar1 == 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(Random());
gUnknown_203B480->unk10 = sub_8094E4C();
gUnknown_203B480->clientSpecies = GetPlayerPokemonStruct()->speciesNum;
PrintPokeNameToBuffer(buffer, GetPlayerPokemonStruct());
CopyStringtoBuffer(gUnknown_203B480->playerName, buffer);
gUnknown_203B480->unk24 = sub_8011C34();
gUnknown_203B480->unk2C = GetUnk3(gUnknown_203B480->dungeon.dungeonIndex);
}
void sub_8095494(struct unkStruct_809542C *param_1, u8 index)
{
u32 uVar1;
struct DungeonLocation temp;
struct unkStruct_203B480 *iVar2;
iVar2 = gUnknown_203B480;
iVar2 += index;
temp = iVar2->dungeon;
uVar1 = iVar2->unk8;
param_1->unk0 = temp;
param_1->unk4 = uVar1;
}
u32 sub_80954B4(void)
{
@@ -115,14 +321,14 @@ void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b)
u8 temp;
RestoreIntegerBits(a, &b->mailType, 4);
RestoreDungeonLocation(a, &b->unk4);
RestoreDungeonLocation(a, &b->dungeon);
RestoreIntegerBits(a, &b->unk8, 0x18);
RestoreIntegerBits(a, &b->unkC, 0x9);
RestoreIntegerBits(a, &b->clientSpecies, 0x9);
RestoreIntegerBits(a, &b->unk10, 0x20);
RestoreIntegerBits(a, &b->unk14, 0x50);
RestoreIntegerBits(a, &b->unk20, 0x8);
RestoreIntegerBits(a, &b->unk21, 0x8);
RestoreIntegerBits(a, &b->unk22, 0x8);
RestoreIntegerBits(a, &b->playerName, 0x50);
RestoreIntegerBits(a, &b->unk20.itemFlags, 0x8);
RestoreIntegerBits(a, &b->unk20.numItems, 0x8);
RestoreIntegerBits(a, &b->unk20.itemIndex, 0x8);
RestoreIntegerBits(a, &b->unk24, 0x20);
RestoreIntegerBits(a, &b->unk28, 0x20);
RestoreIntegerBits(a, &b->unk2C, 0x8);
@@ -140,14 +346,14 @@ void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b)
zero = 0;
SaveIntegerBits(a, &b->mailType, 4);
SaveDungeonLocation(a, &b->unk4);
SaveDungeonLocation(a, &b->dungeon);
SaveIntegerBits(a, &b->unk8, 0x18);
SaveIntegerBits(a, &b->unkC, 0x9);
SaveIntegerBits(a, &b->clientSpecies, 0x9);
SaveIntegerBits(a, &b->unk10, 0x20);
SaveIntegerBits(a, &b->unk14, 0x50);
SaveIntegerBits(a, &b->unk20, 0x8);
SaveIntegerBits(a, &b->unk21, 0x8);
SaveIntegerBits(a, &b->unk22, 0x8);
SaveIntegerBits(a, &b->playerName, 0x50);
SaveIntegerBits(a, &b->unk20.itemFlags, 0x8);
SaveIntegerBits(a, &b->unk20.numItems, 0x8);
SaveIntegerBits(a, &b->unk20.itemIndex, 0x8);
SaveIntegerBits(a, &b->unk24, 0x20);
SaveIntegerBits(a, &b->unk28, 0x20);
SaveIntegerBits(a, &b->unk2C, 0x8);

View File

@@ -3,12 +3,12 @@
#include "item.h"
#include "friend_area.h"
#include "constants/friend_area.h"
#include "sub_8095228.h"
#include "wonder_mail.h"
#include "constants/wonder_mail.h"
#include "dungeon.h"
#include "code_80958E8.h"
#include "pokemon.h"
#include "code_8094F88.h"
extern s32 GetDungeonFloorCount(u8);
extern bool8 sub_809017C(struct DungeonLocation *);

View File

@@ -6,9 +6,9 @@
#include "input.h"
#include "team_inventory.h"
#include "friend_rescue.h"
#include "sub_8095228.h"
#include "item.h"
#include "code_8094F88.h"
#include "menu.h"
#include "rescue_password_menu.h"
extern struct TeamInventory *gTeamInventory_203B460;
@@ -17,7 +17,6 @@ extern u8 *gUnknown_203B484;
extern void SetFriendRescueMenuState(u32);
extern s32 sub_80144A4(s32 *);
extern void sub_802F2C0();
extern u8 sub_809539C(u32, u32);
extern void sub_8095240(u8);
extern u32 sub_802F298();
@@ -26,7 +25,6 @@ extern char gAvailablePokemonNames[0x50];
extern struct WonderMailStruct_203B33C *gUnknown_203B33C;
extern u8 sub_80953D4(u32);
extern u8 sub_801CF14(u32);
extern u8 gUnknown_80E48A8[];
@@ -44,7 +42,7 @@ extern u8 gUnknown_80E31FC[];
extern u32 sub_80154F0();
extern void sub_80155F0();
struct unkStruct_8095228 *sub_8095228(u8);
struct unkStruct_203B480 *sub_8095228(u8);
extern void sub_80141B4(u8 *r0, u32, u32 *r1, u32);
extern void sub_8014248(const char *r0, u32, u32, struct MenuItem *r4, u32, u32, u32, u32 *r5, u32);
@@ -83,13 +81,10 @@ extern void sub_8023DA4(void);
extern void sub_8035D1C(void);
extern u16 sub_8023B44(void);
extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_8095228 *r0);
extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_203B480 *r0);
extern void sub_8095274(u32);
extern void sub_80951BC(struct unkStruct_8095228 *r0);
extern void sub_80951FC(struct unkStruct_8095228 *r0);
extern u8 sub_809539C(u32, u32);
extern void sub_80951BC(struct unkStruct_203B480 *r0);
extern u8 sub_800D588(void);
extern u32 sub_8095324(u32);
extern s32 sub_8095190(void);
extern u8 gUnknown_80E44A4[];
@@ -436,11 +431,11 @@ void sub_8033DBC(void)
{
u32 return_var;
u32 input_var;
struct unkStruct_8095228 temp;
struct unkStruct_8095228 *temp2;
struct unkStruct_203B480 temp;
struct unkStruct_203B480 *temp2;
return_var = sub_80154F0();
MemoryFill8((u8 *)&temp, 0, sizeof(struct unkStruct_8095228));
MemoryFill8((u8 *)&temp, 0, sizeof(struct unkStruct_203B480));
switch(return_var)
{
case 3:
@@ -490,7 +485,8 @@ void sub_8033DBC(void)
sub_80951FC(&temp);
temp2 = sub_8095228(sub_809539C(1, temp.unk10));
temp2->mailType = 7;
MemoryFill8((u8 *)gUnknown_203B484, 0, sizeof(struct unkStruct_203B484));
//MemoryFill8((u8 *)gUnknown_203B484, 0, sizeof(struct unkStruct_203B484));
MemoryFill8((u8 *)gUnknown_203B484, 0, 0x5C);
SetFriendRescueMenuState(0x40);
break;
case 24:
@@ -1333,11 +1329,11 @@ void sub_8034D54(void)
void sub_8034D74(void)
{
u32 return_var;
struct unkStruct_8095228 temp;
struct unkStruct_8095228 *temp2;
struct unkStruct_203B480 temp;
struct unkStruct_203B480 *temp2;
return_var = sub_80154F0();
MemoryFill8((u8 *)&temp, 0, sizeof(struct unkStruct_8095228));
MemoryFill8((u8 *)&temp, 0, sizeof(struct unkStruct_203B480));
switch(return_var)
{
case 3:
@@ -1448,7 +1444,7 @@ void sub_8034F58(void)
void sub_8034F88(void)
{
s32 temp;
struct unkStruct_8095228 *temp2;
struct unkStruct_203B480 *temp2;
if(sub_80144A4(&temp) == 0)
{
@@ -1644,7 +1640,7 @@ void sub_80351E0(void)
void sub_8035210(void)
{
s32 temp;
struct unkStruct_8095228 *temp2;
struct unkStruct_203B480 *temp2;
if(sub_80144A4(&temp) == 0)
{

View File

@@ -47,7 +47,6 @@ extern void sub_8035CF4(u32 *, u32, u32);
extern void SetMenuItems(u32 *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern void sub_8095240(u32);
extern void sub_80920D8(u8 *);
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
@@ -58,7 +57,6 @@ extern u32 GetNumAdventures(void);
extern void xxx_call_draw_string(u32 x, u32 y, const u8 *, u32, u32);
extern void PrintDungeonLocationtoBuffer(u8 *, u8 *);
extern void sub_80922B4(u8 *, const u8 *, u32);
extern s32 sub_8095324(u32);
extern u32 sub_8001658(u32, u32);
extern void sub_80073E0(u32);

View File

@@ -6,8 +6,8 @@
#include "menu.h"
#include "memory.h"
#include "text.h"
#include "sub_8095228.h"
#include "wonder_mail.h"
#include "code_8094F88.h"
struct PostOfficeHelper
{
@@ -597,7 +597,7 @@ void DisplayMissionObjectives(void)
{
s32 yCoord;
s32 jobSlotIdx;
struct unkStruct_8095228 *iVar8;
struct unkStruct_203B480 *iVar8;
struct WonderMail *jobInfo;
u8 auStack248 [100];
volatile u8 local_94;

View File

@@ -5,7 +5,6 @@
#include "menu.h"
#include "pokemon.h"
#include "save.h"
#include "sub_8095228.h"
#include "text.h"
#include "main_menu.h"
#include "rescue_password_menu.h"
@@ -31,14 +30,14 @@ extern void sub_8031E10(void);
extern void DisplayPasswordAcceptScreen(void);
extern u32 sub_8039068(u32, u8 *passwordBuffer, struct unkStruct_8095228 *r0);
extern u32 sub_8039068(u32, u8 *passwordBuffer, struct unkStruct_203B480 *r0);
extern void sub_80951BC(struct unkStruct_8095228 *r0);
extern void sub_80951FC(struct unkStruct_8095228 *r0);
extern void sub_80951BC(struct unkStruct_203B480 *r0);
extern bool8 sub_80951FC(struct unkStruct_203B480 *r0);
extern u8 sub_8012FD8(u32 *r0);
extern void sub_8013114(u32 *, s32 *);
extern u32 sub_80154F0(void);
extern u8 sub_809539C(u32, u32);
extern s32 sub_809539C(u8, u32);
extern void sub_8095274(u32);
extern u32 sub_8031DCC(void);
extern void sub_80391F8(void);
@@ -47,13 +46,12 @@ extern void DisplayRescuePasswordError(u32);
extern struct MainMenu *GetMainMenu(void);
extern void sub_8039174(void);
extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32);
extern void sub_8035CF4(u32 *r0, u32, u32);
bool8 IsInvalidItemReward(u8);
bool8 sub_80952F0(u32, u32);
bool8 sub_8095298(u32);
bool8 sub_803D204(u8 *, struct unkStruct_8095228 *);
bool8 sub_80952F0(u8, u32);
bool8 sub_8095298(s32);
bool8 sub_803D204(u8 *, struct unkStruct_203B480 *);
extern s32 GetDungeonFloorCount(u8);
extern s32 sub_8095190(void);
@@ -81,7 +79,7 @@ extern struct MenuItem gUnknown_80E75A0[];
void CreateRescuePasswordMenu(u32 currMenu)
{
struct unkStruct_8095228 *temp;
struct unkStruct_203B480 *temp;
s32 counter;
if(gRescuePasswordMenu == NULL)
@@ -121,7 +119,7 @@ void CreateRescuePasswordMenu(u32 currMenu)
break;
case MENU_DISPLAY_RESCUE_PASSWORD:
temp = sub_8095228(0x1F);
MemoryFill8((u8 *)temp, 0, sizeof(struct unkStruct_8095228));
MemoryFill8((u8 *)temp, 0, sizeof(struct unkStruct_203B480));
temp->mailType = 2;
temp->unk20.itemIndex = ITEM_ID_NOTHING;
sub_8031D70(0x1F, 0);
@@ -163,12 +161,12 @@ static inline s32 UpdateRescuePasswordMenu_sub(s32 otherMenu)
s32 UpdateRescuePasswordMenu(void)
{
struct unkStruct_8095228 *puVar5;
struct unkStruct_8095228 *puVar6;
struct unkStruct_203B480 *puVar5;
struct unkStruct_203B480 *puVar6;
u32 iVar7;
struct MainMenu *iVar9;
s32 nextMenu;
struct unkStruct_8095228 local_44;
struct unkStruct_203B480 local_44;
u32 local_14;
u32 subtract;
@@ -184,7 +182,7 @@ s32 UpdateRescuePasswordMenu(void)
case 3:
case 5:
iVar7 = sub_80154F0();
MemoryFill8((u8 *)&local_44, 0, sizeof(struct unkStruct_8095228));
MemoryFill8((u8 *)&local_44, 0, sizeof(struct unkStruct_203B480));
switch(iVar7)
{
case 1:
@@ -451,7 +449,7 @@ u32 ConvertMenutoRescuePasswordState(u32 unused)
return uVar1;
}
u32 sub_8039068(u32 mailMode, u8 *passwordBuffer, struct unkStruct_8095228 *param_3)
u32 sub_8039068(u32 mailMode, u8 *passwordBuffer, struct unkStruct_203B480 *param_3)
{
if ( (!sub_803D204(passwordBuffer, param_3)) || (WONDER_MAIL_TYPE_OKD < param_3->mailType) ||
(param_3->dungeon.dungeonFloor >= GetDungeonFloorCount(param_3->dungeon.dungeonIndex)) ||

View File

@@ -4,7 +4,7 @@
#include "pokemon.h"
#include "file_system.h"
#include "item.h"
#include "sub_8095228.h"
#include "code_8094F88.h"
#include "wonder_mail.h"
#include "memory.h"
#include "menu.h"
@@ -15,6 +15,7 @@
#include "code_800D090.h"
extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4;
struct unkStruct_203B480 * sub_8095228(u8 index);
#define THANK_YOU_MAIL_MAIN_MENU 0
#define ANYTHING_ELSE_THANK_YOU_MAIN_MENU 1
@@ -153,13 +154,11 @@ const struct MenuItem gUnknown_80DEEE4[4] =
#include "data/thank_you_wonder_mail.h"
extern s32 sub_80953D4(u32);
extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, struct OpenedFile **r5, u32);
extern u8 sub_8012FD8(u32 *r0);
extern void sub_8035CC0(struct UnkTextStruct2 *r0, u32);
extern void sub_8030810(u32);
extern u32 sub_8095324(u32);
extern u32 sub_8031DCC(void);
extern void sub_8031E00(void);
extern void sub_8095240(u8);
@@ -236,7 +235,6 @@ extern void sub_80306A8(u32, u32, u32, u32);
extern s32 sub_8037D64(u32, void *, void *);
extern s32 sub_80381F4(u32, void *, void *);
extern void sub_801C8C4(u32, u32, s32 * , u32);
extern u8 sub_809539C(u32, u32);
extern u8 sub_800D588(void);
extern u32 GetDungeonTeamRankPts(struct DungeonLocation *, u32);
extern void sub_8031D70(u8, u32);
@@ -253,8 +251,7 @@ extern void sub_801CB5C(u32);
extern void sub_801CCD8(void);
extern void sub_8011C28(u32);
extern u32 sub_80154F0(void);
extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_8095228 *r0);
extern u8 sub_809539C(u32, u32);
extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_203B480 *r0);
u32 CreateThankYouMailPelipper(void)
@@ -263,7 +260,7 @@ u32 CreateThankYouMailPelipper(void)
struct OpenedFile *faceFile;
s32 uVar2;
int counter;
struct unkStruct_8095228 *temp;
struct unkStruct_203B480 *temp;
ResetUnusedInputStruct();
sub_800641C(0,1,1);
@@ -822,12 +819,12 @@ void AdvanceToThankYouPasswordProcessing(void)
void HandleThankYouMailPasswordMenu(void)
{
u8 uVar1;
struct unkStruct_8095228 *puVar5;
struct unkStruct_203B480 *puVar5;
u32 return_var;
struct unkStruct_8095228 temp;
struct unkStruct_203B480 temp;
return_var = sub_80154F0();
MemoryFill8((u8 *)&temp, 0, sizeof(struct unkStruct_8095228));
MemoryFill8((u8 *)&temp, 0, sizeof(struct unkStruct_203B480));
switch(return_var)
{
case 3:
@@ -954,7 +951,7 @@ void sub_802A75C(void)
void HandleConfirmItemtoSendMenu(void)
{
s32 temp;
struct unkStruct_8095228 *return_var;
struct unkStruct_203B480 *return_var;
if(sub_80144A4(&temp) == 0)
{
switch(temp)
@@ -1137,7 +1134,7 @@ void sub_802A9FC(void)
void HandleMailCommunicationMenu(void)
{
s32 temp;
struct unkStruct_8095228 *return_var;
struct unkStruct_203B480 *return_var;
if(sub_80144A4(&temp) == 0)
{
switch(temp)
@@ -1278,7 +1275,7 @@ void UpdateThankYouMailText(void)
struct PokemonStruct *pokeStruct;
struct PokemonStruct *pokeStruct2;
s32 linkStatus;
struct unkStruct_8095228 *puVar4;
struct unkStruct_203B480 *puVar4;
switch(gUnknown_203B2C4->state) {
case 5:
@@ -1335,13 +1332,13 @@ void UpdateThankYouMailText(void)
switch(gUnknown_203B2C4->unk40)
{
case 6:
MemoryFill8((u8 *)&gUnknown_203B2C4->unk1B8,0, sizeof(struct unkStruct_8095228));
MemoryFill8((u8 *)&gUnknown_203B2C4->unk1B8,0, sizeof(struct unkStruct_203B480));
gUnknown_203B2C4->unk1B8 = *sub_8095228(gUnknown_203B2C4->unk218);
gUnknown_203B2C4->linkError = sub_8037D64(gUnknown_203B2C4->unk40,&gUnknown_203B2C4->unk1B8,&gUnknown_203B2C4->unk1E8);
break;
case 7:
MemoryFill8((u8 *)&gUnknown_203B2C4->unk1B8,0, sizeof(struct unkStruct_8095228));
MemoryFill8((u8 *)&gUnknown_203B2C4->unk1E8,0, sizeof(struct unkStruct_8095228));
MemoryFill8((u8 *)&gUnknown_203B2C4->unk1B8,0, sizeof(struct unkStruct_203B480));
MemoryFill8((u8 *)&gUnknown_203B2C4->unk1E8,0, sizeof(struct unkStruct_203B480));
gUnknown_203B2C4->linkError = sub_8037D64(gUnknown_203B2C4->unk40,&gUnknown_203B2C4->unk1B8,&gUnknown_203B2C4->unk1E8);
break;
}

View File

@@ -5,7 +5,6 @@
#include "file_system.h"
#include "item.h"
#include "input.h"
#include "sub_8095228.h"
#include "wonder_mail.h"
#include "memory.h"
#include "menu.h"
@@ -25,13 +24,11 @@ extern u32 sub_8031050();
extern void sub_80310B4();
extern u32 sub_8095350();
extern u8 sub_80A2824(u8);
extern u8 sub_809539C(u32, u32);
extern char gUnknown_202E5D8[0x50];
extern char gAvailablePokemonNames[0x50];
extern s32 sub_8095190(void);
extern u32 sub_8095324(u32);
extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
extern void nullsub_130(void);
extern void sub_8028348(void);
@@ -48,11 +45,11 @@ extern void sub_8030DE4(void);
extern void sub_803092C(void);
extern u32 sub_80154F0();
extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_8095228 *r0);
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_8095228 *r0);
extern void sub_80951BC(struct unkStruct_203B480 *r0);
extern void sub_8013114(u32 *r0, s32 *r1);
extern void sub_8023C60();
extern u32 sub_8023A94(u32);
@@ -1162,7 +1159,7 @@ void sub_8028FC0()
void sub_8028FDC(void)
{
s32 temp;
struct unkStruct_8095228 *return_var;
struct unkStruct_203B480 *return_var;
if(sub_80144A4(&temp) != 0)
{
@@ -1453,10 +1450,10 @@ void sub_80293D8(void)
void sub_80293F4(void)
{
u32 return_var;
struct unkStruct_8095228 temp;
struct unkStruct_203B480 temp;
return_var = sub_80154F0();
MemoryFill8((u8 *)&temp, 0, sizeof(struct unkStruct_8095228));
MemoryFill8((u8 *)&temp, 0, sizeof(struct unkStruct_203B480));
switch(return_var)
{
case 3:

View File

@@ -7,10 +7,10 @@
#include "text.h"
#include "menu.h"
#include "save.h"
#include "sub_8095228.h"
#include "gUnknown_203B46C.h"
#include "wonder_mail.h"
#include "code_800D090.h"
#include "code_8094F88.h"
struct unkStruct_203B2C8
{
@@ -359,7 +359,7 @@ void nullsub_132(void)
void sub_802B3E0(void)
{
struct unkStruct_8095228 *iVar3;
struct unkStruct_203B480 *iVar3;
char *monName;
char teamNameBuffer[40];
@@ -441,7 +441,7 @@ void sub_802B57C(void)
void sub_802B5B8(void)
{
u32 uVar2;
struct unkStruct_8095228 *puVar3;
struct unkStruct_203B480 *puVar3;
s32 temp;
if (sub_80144A4(&temp) == 0) {

View File

@@ -3,7 +3,6 @@
#include "input.h"
#include "memory.h"
#include "item.h"
#include "sub_8095228.h"
#include "pokemon.h"
#include "code_8094F88.h"
#include "constants/wonder_mail.h"
@@ -239,7 +238,7 @@ void sub_80308A0(void)
void sub_803092C(void)
{
struct unkStruct_8095228 *pbVar2;
struct unkStruct_203B480 *pbVar2;
s32 r4;
s32 r5;
s32 r6;
@@ -266,7 +265,7 @@ void sub_803092C(void)
local.unk3C[12] = 0;
local.unk8 = &pbVar2->dungeon;
local.unkC = pbVar2->padding2;
local.unkC = pbVar2->playerName;
local.unk10 = (pbVar2->clientSpecies);
local.unk12 = (pbVar2->clientSpecies);

View File

@@ -330,7 +330,7 @@ void sub_80313D8(u32 param_1)
unused = &gUnknown_203B480[iVar2];
gUnknown_203B480[iVar2].mailType = 0;
unused = &gUnknown_203B480[iVar2];
gUnknown_203B480[iVar2].unk22 = 0;
gUnknown_203B480[iVar2].unk20.itemIndex = 0;
}
break;
}

View File

@@ -3,9 +3,9 @@
#include "memory.h"
#include "text.h"
#include "input.h"
#include "sub_8095228.h"
#include "wonder_mail.h"
#include "menu.h"
#include "code_8094F88.h"
#define SELECT_WONDER_MAIL_MODE_MAIN_SCREEN 0
#define SEND_WONDER_MAIL_MAIN_SCREEN 1
@@ -118,7 +118,6 @@ struct unkStruct_203B3E8
EWRAM_DATA struct unkStruct_203B3E8 *gUnknown_203B3E8;
extern u32 sub_8095324(u32);
extern u32 sub_80144A4(s32 *);
extern u32 sub_8011C1C(void);
extern void SetWonderMailMainMenuState(u8);