mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-27 19:24:58 -05:00
more menu work and more documentation
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
|
||||
struct subStruct_203B240
|
||||
{
|
||||
char * unk0;
|
||||
char * pokeName;
|
||||
char * unk4;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user