more menu work and more documentation

This commit is contained in:
Seth Barberee
2023-05-21 17:09:53 -07:00
parent fae8e0cbfb
commit 5cf2c9effc
19 changed files with 183 additions and 380 deletions

View File

@@ -7753,174 +7753,4 @@ _08022D22:
bx r0
thumb_func_end sub_8022A10
thumb_func_start sub_8022D2C
sub_8022D2C:
push {r4-r7,lr}
movs r6, 0
ldr r4, _08022D78
ldr r0, [r4]
movs r1, 0x9C
lsls r1, 1
adds r0, r1
movs r1, 0
movs r2, 0x10
bl MemoryFill16
ldr r2, [r4]
ldr r0, [r2, 0x48]
cmp r0, 0
beq _08022D80
adds r1, r2, 0
adds r1, 0xF8
ldr r0, _08022D7C
str r0, [r1]
adds r1, 0x4
movs r0, 0x5
str r0, [r1]
adds r0, r2, 0
adds r0, 0x52
ldrb r0, [r0]
bl IsGummiItem
lsls r0, 24
cmp r0, 0
bne _08022D74
ldr r0, [r4]
movs r2, 0x9C
lsls r2, 1
adds r0, r2
movs r1, 0x1
strh r1, [r0]
_08022D74:
movs r6, 0x1
b _08022DBE
.align 2, 0
_08022D78: .4byte gUnknown_203B294
_08022D7C: .4byte gUnknown_80DC8F0
_08022D80:
adds r0, r2, 0
adds r0, 0x52
ldrb r0, [r0]
bl GetItemCategory
lsls r0, 24
lsrs r0, 24
cmp r0, 0x5
bne _08022DA4
ldr r1, [r4]
adds r2, r1, 0
adds r2, 0xF8
ldr r0, _08022E38
str r0, [r2]
adds r1, 0xFC
movs r0, 0x6
str r0, [r1]
movs r6, 0x1
_08022DA4:
ldr r2, [r4]
lsls r3, r6, 3
adds r0, r2, 0
adds r0, 0xF8
adds r0, r3
ldr r1, _08022E3C
ldr r1, [r1]
str r1, [r0]
adds r2, 0xFC
adds r2, r3
movs r0, 0x4
str r0, [r2]
adds r6, 0x1
_08022DBE:
ldr r4, _08022E40
ldr r0, [r4]
mov r12, r0
lsls r1, r6, 3
mov r2, r12
adds r2, 0xF8
adds r3, r2, r1
ldr r0, _08022E44
ldr r0, [r0]
str r0, [r3]
mov r3, r12
adds r3, 0xFC
adds r1, r3, r1
movs r0, 0x7
str r0, [r1]
adds r6, 0x1
lsls r1, r6, 3
adds r2, r1
movs r0, 0
str r0, [r2]
adds r1, r3, r1
movs r0, 0x1
str r0, [r1]
movs r5, 0
adds r7, r4, 0
cmp r5, r6
bge _08022E16
mov r4, r12
adds r4, 0xF4
movs r2, 0x9C
lsls r2, 1
add r2, r12
_08022DFE:
ldrh r0, [r2]
cmp r0, 0
bne _08022E0C
ldr r1, [r3]
ldr r0, [r4]
cmp r1, r0
beq _08022E70
_08022E0C:
adds r2, 0x2
adds r3, 0x8
adds r5, 0x1
cmp r5, r6
blt _08022DFE
_08022E16:
movs r5, 0
cmp r5, r6
bge _08022E70
ldr r1, [r7]
movs r2, 0x9C
lsls r2, 1
adds r0, r1, r2
ldrh r0, [r0]
cmp r0, 0
bne _08022E48
adds r0, r1, 0
adds r0, 0xF4
adds r1, 0xFC
ldr r1, [r1]
str r1, [r0]
b _08022E70
.align 2, 0
_08022E38: .4byte gUnknown_80DC8F8
_08022E3C: .4byte gUnknown_80D4940
_08022E40: .4byte gUnknown_203B294
_08022E44: .4byte gUnknown_80D4970
_08022E48:
adds r5, 0x1
cmp r5, r6
bge _08022E70
ldr r3, [r7]
lsls r0, r5, 1
movs r2, 0x9C
lsls r2, 1
adds r1, r3, r2
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _08022E48
adds r2, r3, 0
adds r2, 0xF4
lsls r1, r5, 3
adds r0, r3, 0
adds r0, 0xFC
adds r0, r1
ldr r0, [r0]
str r0, [r2]
_08022E70:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8022D2C
.align 2,0

View File

@@ -1,147 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_802CAA4
sub_802CAA4:
push {r4-r7,lr}
movs r7, 0
ldr r5, _0802CAC8
ldr r0, [r5]
ldrb r0, [r0, 0xC]
bl GetJobSlotInfo
adds r4, r0, 0
ldr r2, [r5]
ldr r0, [r2]
cmp r0, 0
bne _0802CB26
ldrb r0, [r4]
cmp r0, 0x5
beq _0802CACC
cmp r0, 0x6
beq _0802CB10
b _0802CB26
.align 2, 0
_0802CAC8: .4byte gUnknown_203B2F0
_0802CACC:
movs r0, 0x86
lsls r0, 1
adds r1, r2, r0
ldr r0, _0802CAFC
str r0, [r1]
adds r0, r4, 0
bl sub_809693C
lsls r0, 24
cmp r0, 0
bne _0802CAEE
ldrb r0, [r4, 0x4]
bl sub_80A2824
lsls r0, 24
cmp r0, 0
bne _0802CB00
_0802CAEE:
ldr r0, [r5]
movs r1, 0x88
lsls r1, 1
adds r0, r1
movs r1, 0x1
negs r1, r1
b _0802CB0A
.align 2, 0
_0802CAFC: .4byte gUnknown_80DFD70
_0802CB00:
ldr r0, [r5]
movs r1, 0x88
lsls r1, 1
adds r0, r1
movs r1, 0x2
_0802CB0A:
str r1, [r0]
adds r7, 0x1
b _0802CB26
_0802CB10:
movs r0, 0x86
lsls r0, 1
adds r1, r2, r0
ldr r0, _0802CB9C
str r0, [r1]
movs r0, 0x88
lsls r0, 1
adds r1, r2, r0
movs r0, 0x3
str r0, [r1]
movs r7, 0x1
_0802CB26:
ldr r4, _0802CBA0
ldr r6, [r4]
lsls r1, r7, 3
movs r0, 0x86
lsls r0, 1
adds r3, r6, r0
adds r2, r3, r1
ldr r0, _0802CBA4
ldr r0, [r0]
str r0, [r2]
movs r0, 0x88
lsls r0, 1
adds r5, r6, r0
adds r1, r5, r1
movs r0, 0x4
str r0, [r1]
adds r7, 0x1
lsls r1, r7, 3
adds r2, r3, r1
ldr r0, _0802CBA8
ldr r0, [r0]
str r0, [r2]
adds r1, r5, r1
movs r0, 0x7
str r0, [r1]
adds r7, 0x1
lsls r1, r7, 3
adds r3, r1
movs r0, 0
str r0, [r3]
adds r1, r5, r1
movs r0, 0x1
str r0, [r1]
movs r3, 0
mov r12, r4
cmp r3, r7
bge _0802CB8C
adds r4, r6, 0
adds r1, r5, 0
movs r5, 0x1
negs r5, r5
_0802CB78:
ldr r2, [r1]
cmp r2, r5
beq _0802CB84
ldr r0, [r4, 0x68]
cmp r2, r0
beq _0802CB94
_0802CB84:
adds r1, 0x8
adds r3, 0x1
cmp r3, r7
blt _0802CB78
_0802CB8C:
mov r0, r12
ldr r1, [r0]
movs r0, 0x7
str r0, [r1, 0x68]
_0802CB94:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802CB9C: .4byte gUnknown_80DFD7C
_0802CBA0: .4byte gUnknown_203B2F0
_0802CBA4: .4byte gUnknown_80D494C
_0802CBA8: .4byte gUnknown_80D4970
thumb_func_end sub_802CAA4
.align 2,0

View File

@@ -4,4 +4,18 @@
#define MAX_ACCEPTED_JOBS 8
#define NUM_MAILBOX_SLOTS 4
enum JOB_LIST_MAIL_TYPES
{
MAIL_TYPE_NONE = 0,
MAIL_TYPE_UNK1,
MAIL_TYPE_UNK2,
MAIL_TYPE_UNK3,
MAIL_TYPE_UNK4,
MAIL_TYPE_SUSPENDED_JOB = 5,
MAIL_TYPE_TAKEN_JOB,
MAIL_TYPE_UNK7,
MAIL_TYPE_UNK8,
MAIL_TYPE_UNK9,
};
#endif // GUARD_CONSTANTS_MAILBOX_H

View File

@@ -3,8 +3,9 @@
struct subStruct_203B240
{
char * unk0;
char * pokeName;
char * unk4;
};
#endif
#endif

View File

@@ -43,7 +43,6 @@ struct unkStruct_203B2F8
u8 unkB;
struct unkSubStruct_203B2F8 *mail;
u8 jobSlotIndex;
u8 fill11[0x14 - 0x11];
struct unkStruct_802C39C unk14;
u32 menuAction1;
u32 menuAction2;

View File

@@ -134,7 +134,6 @@ SECTIONS {
src/pokemon_news.o(.text);
src/wonder_mail_2_mid.o(.text);
src/wonder_mail_2_1.o(.text);
asm/wonder_mail_802C860.o(.text);
src/wonder_mail_3.o(.text);
src/wonder_mail_802DF88.o(.text);
src/mailbox.o(.text);

View File

@@ -8,12 +8,7 @@
#include "pokemon.h"
#include "team_inventory.h"
#include "menu_input.h"
struct subStruct_203B240
{
char * pokeName;
char * unk4;
};
#include "subStruct_203B240.h"
// based off of 203B240..
struct unkStruct_203B230

View File

@@ -121,7 +121,6 @@ struct unk_203B250
u8 unk7;
u8 unk8;
u8 unk9;
u8 fillA[0xC - 0xA];
struct PokemonStruct *unkC;
u32 state;
u32 menuAction;
@@ -914,7 +913,7 @@ void sub_801C6E4(void)
sub_8008C54(gUnknown_203B240->unk24);
sub_80073B8(gUnknown_203B240->unk24);
preload = gUnknown_203B240->unk10[gUnknown_203B240->unk8];
strcpy(gAvailablePokemonNames,preload->unk0);
strcpy(gAvailablePokemonNames,preload->pokeName);
xxx_format_and_draw(16,0,gUnknown_80DBE30,gUnknown_203B240->unk24,0); // {ARG_POKEMON_0}
xxx_format_and_draw(4,16,gUnknown_203B240->unk10[gUnknown_203B240->unk8]->unk4, gUnknown_203B240->unk24,0);
sub_80073E0(gUnknown_203B240->unk24);

View File

@@ -71,20 +71,25 @@ struct unkStruct_203B294
struct MenuStruct unk54;
struct MenuStruct unkA4;
u32 menuAction;
u32 unkF8;
u16 unkFC;
struct MenuItem unkF8[0x8];
u16 unk138[0x8];
};
struct unkStruct_203B294 *gUnknown_203B294;
extern u8 gUnknown_80DC5EC[];
extern u8 gUnknown_202DE58[];
extern u8 gUnknown_80DC8F0[];
extern u8 gUnknown_80DC8F8[];
extern u8 *gUnknown_80D4940[];
extern u8 *gUnknown_80D4970[];
extern void sub_8022924(s32);
extern s32 sub_80144A4(s32 *);
extern u32 sub_801B00C(void);
extern void sub_801B048(void);
extern u32 sub_801B410(void);
extern void sub_801B450(void);
void GetGummiItemStatBoost(struct PokemonStruct* pokemon, u8 id, bool8 checkBoostFlags, struct Gummi* gummi);
extern u32 sub_801A6E8(u32);
@@ -93,6 +98,56 @@ extern void sub_801A928(void);
s32 GetNumAvailableIQSkills(u8 *iqSkillBuffer, s32 pokeIQ);
extern u32 sub_801A8AC(void);
void sub_8022D2C(void) {
s32 index;
s32 loopMax = 0;
MemoryFill16(gUnknown_203B294->unk138, 0, sizeof(gUnknown_203B294->unk138));
if(gUnknown_203B294->pokeStruct)
{
gUnknown_203B294->unkF8[loopMax].text = gUnknown_80DC8F0;
gUnknown_203B294->unkF8[loopMax].menuAction = 5;
if(!IsGummiItem(gUnknown_203B294->item.id))
{
gUnknown_203B294->unk138[loopMax] = 1;
}
loopMax += 1;
}
else {
if(GetItemCategory(gUnknown_203B294->item.id) == 5)
{
gUnknown_203B294->unkF8[loopMax].text = gUnknown_80DC8F8;
gUnknown_203B294->unkF8[loopMax].menuAction = 6;
loopMax += 1;
}
gUnknown_203B294->unkF8[loopMax].text = *gUnknown_80D4940;
gUnknown_203B294->unkF8[loopMax].menuAction = 4;
loopMax += 1;
}
gUnknown_203B294->unkF8[loopMax].text = *gUnknown_80D4970;
gUnknown_203B294->unkF8[loopMax].menuAction = 7;
loopMax += 1;
gUnknown_203B294->unkF8[loopMax].text = NULL;
gUnknown_203B294->unkF8[loopMax].menuAction = 1;
for(index = 0; index < loopMax; index++)
{
if(gUnknown_203B294->unk138[index] == 0)
{
if(gUnknown_203B294->unkF8[index].menuAction == gUnknown_203B294->menuAction)
return;
}
}
for(index = 0; index < loopMax; index++)
{
if(gUnknown_203B294->unk138[index] == 0)
{
gUnknown_203B294->menuAction = gUnknown_203B294->unkF8[index].menuAction;
break;
}
}
}
void sub_8022E78(void)
{
switch(sub_801A6E8(1))

View File

@@ -1,3 +1,4 @@
#include "constants/mailbox.h"
#include "global.h"
#include "constants/dungeon.h"
#include "constants/monster.h"
@@ -35,11 +36,11 @@ void SortPelipperJobs(void)
struct WonderMail mail;
for(index1 = 0; index1 < 7; index1++)
for(index1 = 0; index1 < MAX_ACCEPTED_JOBS - 1; index1++)
{
for(index2 = index1 + 1; index2 < 8; index2++)
for(index2 = index1 + 1; index2 < MAX_ACCEPTED_JOBS; index2++)
{
if(gUnknown_203B490->pelipperBoardJobs[index2].mailType != WONDER_MAIL_TYPE_NONE)
if(gUnknown_203B490->pelipperBoardJobs[index2].mailType != MAIL_TYPE_NONE)
{
if((gUnknown_203B490->pelipperBoardJobs[index1].dungeon.id > gUnknown_203B490->pelipperBoardJobs[index2].dungeon.id) ||
((gUnknown_203B490->pelipperBoardJobs[index1].dungeon.id == gUnknown_203B490->pelipperBoardJobs[index2].dungeon.id) && (gUnknown_203B490->pelipperBoardJobs[index1].dungeon.floor > gUnknown_203B490->pelipperBoardJobs[index2].dungeon.floor)))
@@ -60,15 +61,15 @@ void GeneratePelipperJobs(void)
s32 index;
range = RandRange(4,8);
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
gUnknown_203B490->pelipperBoardJobs[index].mailType = WONDER_MAIL_TYPE_NONE;
gUnknown_203B490->pelipperBoardJobs[index].mailType = MAIL_TYPE_NONE;
}
index = 0;
if (sub_8097318(0xe) != 0) {
mail = GetPelipperBoardSlotInfo(0);
mail->mailType = 2;
mail->mailType = MAIL_TYPE_UNK2;
mail->missionType = WONDER_MAIL_MISSION_TYPE_UNK6;
mail->unk2 = 1;
mail->dungeon.id = DUNGEON_UPROAR_FOREST;
@@ -86,7 +87,7 @@ void GeneratePelipperJobs(void)
if (sub_8097318(0xf) != 0) {
mail = GetPelipperBoardSlotInfo(index);
mail->mailType = 3;
mail->mailType = MAIL_TYPE_UNK3;
mail->missionType = WONDER_MAIL_MISSION_TYPE_UNK6;
mail->unk2 = 2;
mail->dungeon.id = DUNGEON_HOWLING_FOREST;
@@ -103,7 +104,7 @@ void GeneratePelipperJobs(void)
if (sub_8097318(0x1c) != 0) {
mail = GetPelipperBoardSlotInfo(index);
mail->mailType = 4;
mail->mailType = MAIL_TYPE_UNK4;
mail->missionType = WONDER_MAIL_MISSION_TYPE_UNK6;
mail->unk2 = 3;
mail->dungeon.id = DUNGEON_WISH_CAVE;
@@ -130,9 +131,9 @@ bool8 IsMailinJobSlot(struct WonderMail *mail)
struct WonderMail *jobSlot;
s32 index;
for(index = 0, jobSlot = &gUnknown_203B490->jobSlots[0]; index < 8; jobSlot++, index++)
for(index = 0, jobSlot = &gUnknown_203B490->jobSlots[0]; index < MAX_ACCEPTED_JOBS; jobSlot++, index++)
{
if(jobSlot->mailType != WONDER_MAIL_TYPE_NONE)
if(jobSlot->mailType != MAIL_TYPE_NONE)
if(mail->missionType == jobSlot->missionType)
if(mail->unk2 == jobSlot->unk2)
if(mail->dungeon.id == jobSlot->dungeon.id)
@@ -166,9 +167,9 @@ bool8 sub_809693C(struct WonderMail *mail)
{
if(mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT)
escortMission = TRUE;
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
if ((gUnknown_203B490->jobSlots[index].mailType == 6) &&
if ((gUnknown_203B490->jobSlots[index].mailType == MAIL_TYPE_TAKEN_JOB) &&
(sub_8095E38(&gUnknown_203B490->jobSlots[index],dungeonIndex,floor,escortMission) != 0))
{
return TRUE;
@@ -184,7 +185,7 @@ s32 GetNumAcceptedJobs(void)
s32 count;
count = 0;
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
if (!IsJobSlotEmpty(index)) {
count++;
@@ -200,11 +201,11 @@ s32 CountJobsinDungeon(u8 dungeon)
s32 count;
count = 0;
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
mail = GetJobSlotInfo(index);
if ((mail->dungeon.id == dungeon) &&
(((mail->mailType == 6 || (mail->mailType == 8)) || (mail->mailType == 9)))) {
(((mail->mailType == MAIL_TYPE_TAKEN_JOB || (mail->mailType == MAIL_TYPE_UNK8)) || (mail->mailType == MAIL_TYPE_UNK9)))) {
count++;
}
}
@@ -218,11 +219,11 @@ bool8 sub_8096A08(u8 dungeon, s32 param_2)
u32 local_14;
s32 temp;
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
mail = GetJobSlotInfo(index);
if(mail->dungeon.id == dungeon)
if(mail->mailType == 6)
if(mail->mailType == MAIL_TYPE_TAKEN_JOB)
if(mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT)
{
temp = 0xffffff00;
@@ -246,9 +247,9 @@ bool8 AcceptJob(struct WonderMail *mail)
{
s32 index;
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
if(gUnknown_203B490->jobSlots[index].mailType == WONDER_MAIL_TYPE_NONE)
if(gUnknown_203B490->jobSlots[index].mailType == MAIL_TYPE_NONE)
{
gUnknown_203B490->jobSlots[index] = *mail;
return FALSE;
@@ -264,7 +265,7 @@ struct WonderMail *GetJobSlotInfo(u8 index)
bool8 IsJobSlotEmpty(u8 index)
{
if(gUnknown_203B490->jobSlots[index].mailType == WONDER_MAIL_TYPE_NONE)
if(gUnknown_203B490->jobSlots[index].mailType == MAIL_TYPE_NONE)
return TRUE;
else
return FALSE;
@@ -283,7 +284,7 @@ void sub_8096AF8(struct unkStruct_8096AF8 *param_1, u8 slotIndex,u8 dungeon)
if (jobSlot->dungeon.id == dungeon) {
switch(jobSlot->missionType) {
case WONDER_MAIL_MISSION_TYPE_FIND_ITEM:
if (jobSlot->mailType == 6) {
if (jobSlot->mailType == MAIL_TYPE_TAKEN_JOB) {
for(index = 0; index < INVENTORY_SIZE; index++)
{
item = &gTeamInventory_203B460->teamItems[index];
@@ -295,13 +296,13 @@ void sub_8096AF8(struct unkStruct_8096AF8 *param_1, u8 slotIndex,u8 dungeon)
break;
case WONDER_MAIL_MISSION_TYPE_RESCUE_CLIENT:
case WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM:
if (jobSlot->mailType == 9) {
if (jobSlot->mailType == MAIL_TYPE_UNK9) {
param_1->unk0 = TRUE;
}
break;
case WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET:
case WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT:
if (jobSlot->mailType == 9) {
if (jobSlot->mailType == MAIL_TYPE_UNK9) {
param_1->unk0 = TRUE;
param_1->targetSpecies = jobSlot->targetSpecies;
}
@@ -316,10 +317,10 @@ s16 sub_8096B98(u8 dungeon)
struct WonderMail *mail;
s32 index;
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
mail = GetJobSlotInfo(index);
if(mail->mailType == 6)
if(mail->mailType == MAIL_TYPE_TAKEN_JOB)
if(mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT)
if(mail->dungeon.id == dungeon)
return mail->targetSpecies;
@@ -332,13 +333,13 @@ void sub_8096BD0(void)
s32 index;
struct WonderMail *mail;
for(mail = &gUnknown_203B490->jobSlots[0], index = 0; index < 8; mail++, index++)
for(mail = &gUnknown_203B490->jobSlots[0], index = 0; index < MAX_ACCEPTED_JOBS; mail++, index++)
{
switch(mail->mailType)
{
case 7:
case 8:
case 9:
case MAIL_TYPE_UNK7:
case MAIL_TYPE_UNK8:
case MAIL_TYPE_UNK9:
ResetJobSlot(index);
break;
}
@@ -352,7 +353,7 @@ bool8 sub_8096C08(u8 *jobIndex)
s32 index;
struct WonderMail *mail;
for(mail = &gUnknown_203B490->jobSlots[0], index = 0; index < 8; mail++, index++)
for(mail = &gUnknown_203B490->jobSlots[0], index = 0; index < MAX_ACCEPTED_JOBS; mail++, index++)
{
if(mail->mailType > 4 && mail->unk2 == 4)
{
@@ -366,7 +367,7 @@ bool8 sub_8096C08(u8 *jobIndex)
void ResetJobSlot(u8 index)
{
gUnknown_203B490->jobSlots[index].mailType = WONDER_MAIL_TYPE_NONE;
gUnknown_203B490->jobSlots[index].mailType = MAIL_TYPE_NONE;
gUnknown_203B490->jobSlots[index].dungeon.id = 99;
gUnknown_203B490->jobSlots[index].dungeon.floor = 0;
gUnknown_203B490->jobSlots[index].rewardType = MONEY1;

View File

@@ -95,7 +95,7 @@ bool8 GenerateMailJobDungeonInfo(struct WonderMail *mail)
bool8 sub_8095E38(struct WonderMail *mail, u8 dungeon, u32 floor, u8 param_4)
{
if (mail->mailType != 0) {
if (mail->mailType != MAIL_TYPE_NONE) {
if ((mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT) && (param_4 == 1)) {
if (mail->dungeon.id == dungeon) {
return TRUE;
@@ -127,14 +127,14 @@ u8 sub_8095E78(void)
for(index = 0; index < 4; index++)
{
if((gUnknown_203B490->mailboxSlots[index].mailType != 0) && (gUnknown_203B490->mailboxSlots[index].rewardType == FRIEND_AREA))
if((gUnknown_203B490->mailboxSlots[index].mailType != MAIL_TYPE_NONE) && (gUnknown_203B490->mailboxSlots[index].rewardType == FRIEND_AREA))
flag = TRUE;
}
for(index = 0; index < 8; index++)
{
if((gUnknown_203B490->jobSlots[index].mailType != 0) && (gUnknown_203B490->jobSlots[index].rewardType == FRIEND_AREA))
if((gUnknown_203B490->jobSlots[index].mailType != MAIL_TYPE_NONE) && (gUnknown_203B490->jobSlots[index].rewardType == FRIEND_AREA))
flag = TRUE;
}

View File

@@ -17,7 +17,8 @@ extern u32 sub_801F890(void);
extern void sub_801F8D0(void);
extern u8 IsNextMoveLinked(u32, struct Move *);
extern void PlaySound(u32);
extern void sub_801EF38(u32);
extern u32 sub_801EF38(u32);
extern u32 sub_801F194(void);
void sub_801ED28(void)
{

View File

@@ -28,7 +28,7 @@ bool8 sub_8095FB0(struct WonderMail *mail)
for(index = 0; index < NUM_MAILBOX_SLOTS; index++)
{
if(gUnknown_203B490->mailboxSlots[index].mailType == WONDER_MAIL_TYPE_NONE)
if(gUnknown_203B490->mailboxSlots[index].mailType == MAIL_TYPE_NONE)
{
gUnknown_203B490->mailboxSlots[index] = *mail;
return FALSE;
@@ -44,7 +44,7 @@ struct WonderMail *GetMailboxSlotInfo(u8 index)
bool8 IsMailSlotEmpty(u8 index)
{
if(gUnknown_203B490->mailboxSlots[index].mailType == WONDER_MAIL_TYPE_NONE)
if(gUnknown_203B490->mailboxSlots[index].mailType == MAIL_TYPE_NONE)
return TRUE;
else
return FALSE;
@@ -61,7 +61,7 @@ void ResetMailbox(void)
void ResetMailboxSlot(u8 index)
{
gUnknown_203B490->mailboxSlots[index].mailType = WONDER_MAIL_TYPE_NONE;
gUnknown_203B490->mailboxSlots[index].mailType = MAIL_TYPE_NONE;
gUnknown_203B490->mailboxSlots[index].dungeon.id = 99;
gUnknown_203B490->mailboxSlots[index].dungeon.floor = 0;
gUnknown_203B490->mailboxSlots[index].rewardType = MONEY1;

View File

@@ -384,21 +384,21 @@ void sub_802EDBC(void)
mail = GetPelipperBoardSlotInfo(gPelipperBoard->jobIndex);
switch(mail->mailType)
{
case 2:
case MAIL_TYPE_UNK2:
gPelipperBoard->unk4 = 1;
ResetPelipperBoardSlot(gPelipperBoard->jobIndex);
sub_80965F4();
sub_802C2D4();
SetPelipperBoardState(PELIPPER_BOARD_EXIT);
break;
case 3:
case MAIL_TYPE_UNK3:
gPelipperBoard->unk4 = 2;
ResetPelipperBoardSlot(gPelipperBoard->jobIndex);
sub_80965F4();
sub_802C2D4();
SetPelipperBoardState(PELIPPER_BOARD_EXIT);
break;
case 4:
case MAIL_TYPE_UNK4:
gPelipperBoard->unk4 = 3;
ResetPelipperBoardSlot(gPelipperBoard->jobIndex);
sub_80965F4();

View File

@@ -6,7 +6,7 @@
#include "constants/iq_skill.h"
#include "constants/tactic.h"
extern u32 gIQSkillNames[];
extern u8 *gIQSkillNames[];
extern u32 gIQSkillDescriptions[];
extern u32 gTacticsDescriptions[];
extern u8 *gTactics[];
@@ -461,7 +461,7 @@ void sub_808E9EC(struct PokemonStruct *r0, struct unkStruct_808E9EC *r1)
}
#endif
u32 GetIQSkillName(u8 r0)
u8 *GetIQSkillName(u8 r0)
{
return gIQSkillNames[r0];
}

View File

@@ -923,7 +923,7 @@ char* sub_808E4FC(s32 a1)
{
struct subStruct_203B240 *result[4];
sub_8097DF0(gFormattedStatusNames[a1], result);
return result[0]->unk0;
return result[0]->pokeName;
}
char* sub_808E51C(s32 a1)

View File

@@ -636,7 +636,7 @@ void DisplayMissionObjectives(void)
{
jobInfo = GetJobSlotInfo(jobSlotIdx);
if ((((jobInfo->dungeon.id == gUnknown_203B330->dungeonIndex) && (jobInfo->mailType != 0)
) && (jobInfo->mailType != 5)) && (jobInfo->mailType != 7)) {
) && (jobInfo->mailType != MAIL_TYPE_SUSPENDED_JOB)) && (jobInfo->mailType != MAIL_TYPE_UNK7)) {
sub_803B6B0(10,yCoord,3,gUnknown_203B330->unk10);
if (jobInfo->missionType != WONDER_MAIL_MISSION_TYPE_FIND_ITEM) {
sprintfStatic(buffer1,gUnknown_80E1F3C,jobInfo->dungeon.floor);

View File

@@ -104,7 +104,7 @@ void CreateMailMenu(void)
mail = GetMailboxSlotInfo(gUnknown_203B2D8->unk0[(gUnknown_203B2D8->unk22 * gUnknown_203B2D8->unk20) + index]);
local.unk0[0] = gUnknown_203B2D8->unk38;
local.y = sub_8013800(&gUnknown_203B2D8->unk4, index);
if (mail->mailType == 1) {
if (mail->mailType == MAIL_TYPE_UNK1) {
y = sub_8013800(&gUnknown_203B2D8->unk4, index);
sub_803B6B0(10,y,6,gUnknown_203B2D8->unk38);
PrintPokeNameToBuffer(gAvailablePokemonNames, GetPlayerPokemonStruct());

View File

@@ -1,3 +1,4 @@
#include "constants/mailbox.h"
#include "global.h"
#include "constants/dungeon.h"
#include "constants/input.h"
@@ -184,6 +185,61 @@ extern u8 *gUnknown_80D4920[];
extern u8 *gUnknown_80D4928[];
extern u8 *gUnknown_80D494C[];
extern u8 *gUnknown_80D4970[];
extern u8 gUnknown_80DFD70[];
extern u8 gUnknown_80DFD7C[];
extern bool8 sub_809693C(struct WonderMail *);
extern bool8 sub_80A2824(u8);
void sub_802CAA4(void) {
s32 loopMax;
struct WonderMail *mail;
s32 index;
loopMax = 0;
mail = GetJobSlotInfo(gUnknown_203B2F0->unkC);
if(gUnknown_203B2F0->unk0 == 0)
{
switch(mail->mailType)
{
case 5:
gUnknown_203B2F0->unk10C[loopMax].text = gUnknown_80DFD70; // Take Job
if(sub_809693C(mail) || !sub_80A2824(mail->dungeon.id))
{
gUnknown_203B2F0->unk10C[loopMax].menuAction = -1;
}
else
{
gUnknown_203B2F0->unk10C[loopMax].menuAction = 2;
}
loopMax += 1;
break;
case 6:
gUnknown_203B2F0->unk10C[loopMax].text = gUnknown_80DFD7C; // Suspend
gUnknown_203B2F0->unk10C[loopMax].menuAction = 3;
loopMax += 1;
break;
}
}
gUnknown_203B2F0->unk10C[loopMax].text = *gUnknown_80D494C;
gUnknown_203B2F0->unk10C[loopMax].menuAction = 4;
loopMax += 1;
gUnknown_203B2F0->unk10C[loopMax].text = *gUnknown_80D4970;
gUnknown_203B2F0->unk10C[loopMax].menuAction = 7;
loopMax += 1;
gUnknown_203B2F0->unk10C[loopMax].text = NULL;
gUnknown_203B2F0->unk10C[loopMax].menuAction = 1;
for(index = 0; index < loopMax; index++)
{
if(gUnknown_203B2F0->unk10C[index].menuAction != -1)
{
if(gUnknown_203B2F0->unk10C[index].menuAction == gUnknown_203B2F0->menuAction)
return;
}
}
gUnknown_203B2F0->menuAction = 7;
}
void sub_802CBAC(void)
{
@@ -239,13 +295,13 @@ void sub_802CC70(void)
case 2:
PlaySound(0x133);
mail = GetJobSlotInfo(gUnknown_203B2F0->unkC);
mail->mailType = 6;
mail->mailType = MAIL_TYPE_TAKEN_JOB;
SetJobListState(1);
break;
case 3:
PlaySound(0x133);
mail2 = GetJobSlotInfo(gUnknown_203B2F0->unkC);
mail2->mailType = 5;
mail2->mailType = MAIL_TYPE_SUSPENDED_JOB;
SetJobListState(1);
break;
case 4:
@@ -890,7 +946,7 @@ void sub_802D940(void)
{
// Delete
case 2:
if ((gUnknown_203B2F8->unk9) && (((mail = &gUnknown_203B490->jobSlots[gUnknown_203B2F8->jobSlotIndex]), mail->mailType > 5) && (gUnknown_203B2F8->dungeonID == mail->dungeon.id)))
if ((gUnknown_203B2F8->unk9) && (((mail = &gUnknown_203B490->jobSlots[gUnknown_203B2F8->jobSlotIndex]), mail->mailType > MAIL_TYPE_SUSPENDED_JOB) && (gUnknown_203B2F8->dungeonID == mail->dungeon.id)))
{
sub_802D1A0(7);
}