summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2021-06-18 17:56:20 -0500
committerSeth Barberee <seth.barberee@gmail.com>2021-06-18 17:56:20 -0500
commitf1fdcc2b0ade13ad1a4cc7360eac70f27396d26a (patch)
tree3ac5b9f61650299f96095e3d3c09ad771793be08 /src
parente806b05526bfcc540cb2c1f3165a96e76f6c235d (diff)
more splitting and labeling with some decomp
Diffstat (limited to 'src')
-rw-r--r--src/code_801AFA4.c4
-rw-r--r--src/code_801B3C0.c189
-rw-r--r--src/code_801C620.c15
-rw-r--r--src/code_801D760.c6
-rw-r--r--src/code_80521D0_1.c1
-rw-r--r--src/code_8057824_1.c1
-rw-r--r--src/code_80958E8.c178
-rw-r--r--src/ds_menus.c2
-rw-r--r--src/event_flag.c1
-rw-r--r--src/exclusive_pokemon.c1
-rw-r--r--src/felicity_bank.c1
-rw-r--r--src/friend_rescue.c1
-rw-r--r--src/friend_rescue_1.c1
-rw-r--r--src/gulpin_shop.c1
-rw-r--r--src/items.c6
-rw-r--r--src/kangaskhan_storage.c1
-rw-r--r--src/kangaskhan_storage_1.c1
-rw-r--r--src/kecleon_items.c17
-rw-r--r--src/kecleon_items_1.c44
-rw-r--r--src/makuhita_dojo.c1
-rw-r--r--src/personality_test.c1
-rw-r--r--src/pokemon.c1
-rw-r--r--src/pokemon_3.c (renamed from src/code_808EAB0.c)0
-rw-r--r--src/pokemon_mid.c1
-rw-r--r--src/post_office_guide.c258
-rw-r--r--src/save.c2
-rw-r--r--src/trade_items_menu.c8
-rw-r--r--src/wonder_mail.c370
-rw-r--r--src/wonder_mail_2.c25
-rw-r--r--src/wonder_mail_3.c49
-rw-r--r--src/wonder_mail_main_menu.c171
-rw-r--r--src/wonder_mail_pre.c1
32 files changed, 1066 insertions, 293 deletions
diff --git a/src/code_801AFA4.c b/src/code_801AFA4.c
index 78c1764..47db0a0 100644
--- a/src/code_801AFA4.c
+++ b/src/code_801AFA4.c
@@ -5,7 +5,7 @@
extern struct unkStruct_203B460 *gUnknown_203B460;
-extern u16 sub_80913CC(u8);
+extern u16 GetItemMove(u8);
extern void sub_8092C84(u8 *, u16);
extern void sub_8099690(u32);
extern u32 sub_801B2F4(void);
@@ -60,7 +60,7 @@ u32 sub_801AFA4(u32 r0)
gUnknown_203B22C = MemoryAlloc(0xA4, 8);
gUnknown_203B22C->unk4 = r0;
gUnknown_203B22C->unk8 = gUnknown_203B460->fill0[r0].itemIndex;
- gUnknown_203B22C->unkA = sub_80913CC(gUnknown_203B22C->unk8);
+ gUnknown_203B22C->unkA = GetItemMove(gUnknown_203B22C->unk8);
sub_8092C84(gUnknown_202E1C8, gUnknown_203B22C->unkA);
sub_8099690(0);
if(sub_801B2F4() == 0)
diff --git a/src/code_801B3C0.c b/src/code_801B3C0.c
new file mode 100644
index 0000000..3d24376
--- /dev/null
+++ b/src/code_801B3C0.c
@@ -0,0 +1,189 @@
+#include "global.h"
+#include "text.h"
+#include "input.h"
+#include "memory.h"
+
+struct subStruct_203B240
+{
+ char * unk0;
+ char * unk4;
+};
+
+struct unkStruct_41C
+{
+ u8 unk41C;
+ u8 unk41D;
+ u8 unk41E;
+ u8 unk41F;
+};
+
+// based off of 203B240..
+struct unkStruct_203B230
+{
+ // size: 0x94
+ s32 state;
+ struct unkStruct_41C unk4;
+ s32 unk8;
+ s32 unkC;
+ struct subStruct_203B240 *unk10[2];
+ u8 fill14[0x20 - 0x18];
+ u32 unk20;
+ u32 unk24;
+ struct UnkTextStruct2 unk28[4];
+ u32 unk88;
+ u32 unk8C;
+ u32 unk90;
+};
+extern struct unkStruct_203B230 *gUnknown_203B230;
+
+extern u8 gAvailablePokemonNames[0x58];
+extern u8 gUnknown_80DBA4C[];
+
+extern void sub_8008C54(u32);
+extern void sub_80073E0(u32);
+extern void sub_80073B8(u32);
+extern void sub_8014FF0(u32, u32, u8 *, u32, u32);
+extern void PlayMenuSoundEffect(u32);
+extern void sub_8013F84(void);
+extern u32 sub_8012A64(u32 *, u32);
+extern s32 sub_80913E0(struct unkStruct_41C *, u32, struct subStruct_203B240 **);
+
+extern void sub_801317C(u32 *);
+extern void sub_80140B4(struct UnkTextStruct2 *);
+extern void sub_801B46C(u32);
+extern void ResetSprites(u32);
+
+void sub_801B51C();
+void sub_801B590();
+void sub_801B480();
+
+
+u32 sub_801B3C0(struct unkStruct_41C *param_1)
+{
+ ResetSprites(1);
+ gUnknown_203B230 = MemoryAlloc(sizeof(struct unkStruct_203B230),8);
+ gUnknown_203B230->unk4 = *param_1;
+ sub_801317C(&gUnknown_203B230->unk88);
+ gUnknown_203B230->unk24 = 0;
+ sub_80140B4(gUnknown_203B230->unk28);
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B230->unk28,1,1);
+ sub_801B46C(0);
+ return 1;
+}
+
+u32 sub_801B410(void)
+{
+ switch(gUnknown_203B230->state)
+ {
+ case 0:
+ sub_801B51C();
+ break;
+ case 1:
+ sub_801B590();
+ break;
+ case 3:
+ return 3;
+ case 2:
+ default:
+ return 2;
+ }
+ return 0;
+}
+
+void sub_801B450(void)
+{
+ if(gUnknown_203B230 != NULL)
+ {
+ MemoryFree(gUnknown_203B230);
+ gUnknown_203B230 = NULL;
+ }
+}
+
+void sub_801B46C(u32 newState)
+{
+ gUnknown_203B230->state = newState;
+ sub_801B480();
+}
+
+void sub_801B480(void)
+{
+ struct subStruct_203B240 *preload;
+ switch(gUnknown_203B230->state)
+ {
+ case 0:
+ sub_8008C54(gUnknown_203B230->unk24);
+ gUnknown_203B230->unkC = sub_80913E0(&gUnknown_203B230->unk4, gUnknown_203B230->unk24, gUnknown_203B230->unk10);
+ gUnknown_203B230->unk20 = 0;
+ break;
+ case 1:
+ sub_8008C54(gUnknown_203B230->unk24);
+ sub_80073B8(gUnknown_203B230->unk24);
+ preload = gUnknown_203B230->unk10[gUnknown_203B230->unk8];
+ strcpy(gAvailablePokemonNames, preload->unk0);
+ sub_8014FF0(16, 0, gUnknown_80DBA4C, gUnknown_203B230->unk24, 0); // $m0
+ sub_8014FF0(4, 16, gUnknown_203B230->unk10[gUnknown_203B230->unk8]->unk4, gUnknown_203B230->unk24, 0);
+ sub_80073E0(gUnknown_203B230->unk24);
+ break;
+ case 2:
+ default:
+ break;
+ }
+}
+
+void sub_801B51C(void)
+{
+ if(gUnknown_203B230->unkC != 0)
+ {
+ if(gUnknown_203B230->unk20 & 8)
+ sub_8013F84();
+ gUnknown_203B230->unk20++;
+ }
+ switch(sub_8012A64(&gUnknown_203B230->unk88, gUnknown_203B230->unk24))
+ {
+ case 1:
+ PlayMenuSoundEffect(0);
+ if(gUnknown_203B230->unkC != 0)
+ {
+ gUnknown_203B230->unk8 = 0;
+ sub_801B46C(1);
+ }
+ else
+ sub_801B46C(3);
+ break;
+ case 2:
+ PlayMenuSoundEffect(1);
+ sub_801B46C(2);
+ break;
+ default:
+ break;
+ }
+}
+
+void sub_801B590(void)
+{
+
+ if (gUnknown_203B230->unk8 < (gUnknown_203B230->unkC - 1)) {
+ if ((gUnknown_203B230->unk20 & 8)) {
+ sub_8013F84();
+ }
+ gUnknown_203B230->unk20++;
+ }
+ switch(sub_8012A64(&gUnknown_203B230->unk88,gUnknown_203B230->unk24))
+ {
+ case 1:
+ PlayMenuSoundEffect(0);
+ gUnknown_203B230->unk8++;
+ if (gUnknown_203B230->unk8 < gUnknown_203B230->unkC) {
+ sub_801B46C(1);
+ }
+ else {
+ sub_801B46C(0);
+ }
+ break;
+ case 2:
+ PlayMenuSoundEffect(1);
+ sub_801B46C(2);
+ break;
+ }
+}
diff --git a/src/code_801C620.c b/src/code_801C620.c
index c2c2c44..8272340 100644
--- a/src/code_801C620.c
+++ b/src/code_801C620.c
@@ -12,7 +12,7 @@ struct subStruct_203B240
struct unkStruct_203B240
{
// size: 0x94
- s32 unk0;
+ s32 state;
u8 unk4;
u8 fill5[3];
s32 unk8;
@@ -72,7 +72,7 @@ u32 sub_801C620(u8 param_1)
u32 sub_801C674(void)
{
- switch(gUnknown_203B240->unk0)
+ switch(gUnknown_203B240->state)
{
case 0:
sub_801C7D4();
@@ -98,9 +98,9 @@ void sub_801C6B4(void)
}
}
-void sub_801C6D0(s32 unk0)
+void sub_801C6D0(s32 newState)
{
- gUnknown_203B240->unk0 = unk0;
+ gUnknown_203B240->state = newState;
sub_801C6E4();
}
@@ -109,7 +109,7 @@ void sub_801C6E4(void)
char *skillName;
struct subStruct_203B240 *preload;
- switch(gUnknown_203B240->unk0)
+ switch(gUnknown_203B240->state)
{
case 0:
sub_8008C54(gUnknown_203B240->unk24);
@@ -139,9 +139,8 @@ void sub_801C6E4(void)
void sub_801C7D4(void)
{
-
if (gUnknown_203B240->unkC != 0) {
- if ((gUnknown_203B240->unk20 & 8) != 0) {
+ if ((gUnknown_203B240->unk20 & 8)) {
sub_8013F84();
}
gUnknown_203B240->unk20++;
@@ -169,7 +168,7 @@ void sub_801C848(void)
{
if (gUnknown_203B240->unk8 < (gUnknown_203B240->unkC - 1)) {
- if ((gUnknown_203B240->unk20 & 8) != 0) {
+ if ((gUnknown_203B240->unk20 & 8)) {
sub_8013F84();
}
gUnknown_203B240->unk20++;
diff --git a/src/code_801D760.c b/src/code_801D760.c
index 3b07d05..db034a7 100644
--- a/src/code_801D760.c
+++ b/src/code_801D760.c
@@ -1,10 +1,12 @@
#include "global.h"
+#include "friend_area.h"
#include "constants/friend_area.h"
#include "file_system.h"
#include "gUnknown_203B460.h"
#include "memory.h"
#include "input.h"
#include "text.h"
+#include "rescue_team_info.h"
struct unkStruct_203B258
{
@@ -57,10 +59,6 @@ extern const char *sub_8098FB4();
extern void xxx_format_string(const char *, u8 *, u32 **, u32);
extern s32 sub_8008ED0(u8 *);
extern void xxx_call_draw_string(s32 size, u32, u8 *, u32, u32);
-extern const char *GetFriendAreaName(u8);
-extern u8 GetRescueTeamRank();
-extern const char *GetTeamRankString(u8);
-extern s32 GetTeamRankPts();
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
diff --git a/src/code_80521D0_1.c b/src/code_80521D0_1.c
index 2abbf88..bb0d928 100644
--- a/src/code_80521D0_1.c
+++ b/src/code_80521D0_1.c
@@ -1,5 +1,4 @@
#include "global.h"
-#include "constants/species.h"
#include "gUnknown_203B418.h"
#include "code_8041D5C.h"
#include "friend_area.h"
diff --git a/src/code_8057824_1.c b/src/code_8057824_1.c
index 4138da4..0337dce 100644
--- a/src/code_8057824_1.c
+++ b/src/code_8057824_1.c
@@ -1,7 +1,6 @@
#include "global.h"
#include "gUnknown_203B418.h"
#include "code_8041D5C.h"
-#include "constants/species.h"
#include "pokemon.h"
extern struct unkStruct_203B418 *gUnknown_203B418;
diff --git a/src/code_80958E8.c b/src/code_80958E8.c
new file mode 100644
index 0000000..462b408
--- /dev/null
+++ b/src/code_80958E8.c
@@ -0,0 +1,178 @@
+#include "global.h"
+#include "memory.h"
+#include "friend_area.h"
+#include "constants/friend_area.h"
+#include "wonder_mail.h"
+#include "constants/wonder_mail.h"
+
+struct subStruct_203B490
+{
+ // size: 0xC
+ u8 unk0;
+ u8 unk1;
+ u8 fill2[2];
+ u32 unk4;
+ u32 unk8;
+};
+
+
+struct unkStruct_203B490
+{
+ // size: 0x330?
+
+ u8 fill0[0x190];
+ u8 unk190[0x28];
+ u8 unk1B8[0x78];
+ struct subStruct_203B490 unk230[16];
+ u8 unk2F0[0x38];
+ u8 unk328;
+};
+
+
+extern u8 sub_809095C(u8);
+extern s32 sub_8090298(u8);
+extern u8 sub_809017C(u8 *);
+extern s16 sub_808E770(s16);
+extern u8 sub_8092040(u8);
+extern u8 sub_803C1D0(u8 *, u8);
+extern u8 sub_8090A60(u8);
+extern u8 sub_8091524(u8);
+extern u8 sub_8091E60(u8 ,u8 );
+extern u32 GetMaxItemCount(u8);
+extern u8 sub_803C0DC(s16);
+extern void sub_8096040(u8);
+extern void sub_80965B8(u8);
+extern void sub_8096C3C(u8);
+extern bool8 ValidateWonderMail(struct WonderMail *);
+
+extern struct unkStruct_203B490 *gUnknown_203B490;
+extern struct unkStruct_203B490 gUnknown_2039448;
+
+void sub_80958E8()
+{
+ gUnknown_203B490 = &gUnknown_2039448;
+}
+
+struct unkStruct_203B490 *sub_80958F8(void)
+{
+ return &gUnknown_2039448;
+}
+
+void sub_8095900(void)
+{
+ s32 iVar2;
+ for(iVar2 = 0; iVar2 < 4; iVar2++)
+ {
+ sub_8096040(iVar2);
+ }
+ for(iVar2 = 0; iVar2 < 8; iVar2++)
+ {
+ sub_80965B8(iVar2);
+ }
+ for(iVar2 = 0; iVar2 < 8; iVar2++)
+ {
+ sub_8096C3C(iVar2);
+ }
+ for(iVar2 = 0; iVar2 < 0x38; iVar2++)
+ {
+ gUnknown_203B490->unk2F0[iVar2] = 0;
+ }
+ gUnknown_203B490->unk328 = 0;
+ MemoryClear8(gUnknown_203B490->unk190, sizeof(gUnknown_203B490->unk190));
+ MemoryClear8(gUnknown_203B490->unk1B8, sizeof(gUnknown_203B490->unk1B8));
+ for(iVar2 = 0; iVar2 < 16; iVar2++)
+ {
+ gUnknown_203B490->unk230[iVar2].unk0 = 0x63;
+ gUnknown_203B490->unk230[iVar2].unk1 = 1;
+ gUnknown_203B490->unk230[iVar2].unk4 = 0;
+ gUnknown_203B490->unk230[iVar2].unk8 = 0;
+ }
+}
+
+bool8 IsValidWonderMail(struct WonderMail *WonderMailData)
+{
+ // Has to equal 5 for Wonder Mail
+ // https://web.archive.org/web/20080913124416/http://www.upokecenter.com/games/dungeon/guides/passwords.html
+ //
+ if(WonderMailData->mailType != 5)
+ {
+ return FALSE;
+ }
+ else
+ {
+ return ValidateWonderMail(WonderMailData);
+ }
+}
+
+bool8 ValidateWonderMail(struct WonderMail *data)
+{
+
+ if(data->missionType > DELIVER_ITEM)
+ return FALSE;
+ else
+ {
+ if(data->missionType == DELIVER_ITEM && GetMaxItemCount(data->dungeon) == 0)
+ return FALSE;
+
+ if(data->unk2 > 9)
+ return FALSE;
+
+ if(sub_809095C(data->dungeon) != 0)
+ return FALSE;
+ if(data->floor >= sub_8090298(data->dungeon))
+ return FALSE;
+ if(sub_809017C(&(data->dungeon)) != 0)
+ return FALSE;
+
+ if(data->clientPoke == SPECIES_NONE)
+ return FALSE;
+ if(data->clientPoke > SPECIES_RAYQUAZA_CUTSCENE)
+ return FALSE;
+ if(data->clientPoke != sub_808E770(data->clientPoke))
+ return FALSE;
+ if(sub_803C0DC(data->clientPoke) == 0)
+ return FALSE;
+
+ if(data->targetPoke > SPECIES_RAYQUAZA_CUTSCENE)
+ return FALSE;
+ if(data->targetPoke != sub_808E770(data->targetPoke))
+ return FALSE;
+ if(sub_803C0DC(data->targetPoke) == 0)
+ return FALSE;
+
+ // Item Delivery/Finding
+ if((u8)(data->missionType - 1) > FIND_POKE)
+ if(data->targetPoke != data->clientPoke)
+ return FALSE;
+
+ if(sub_8092040(data->targetItem) != 0)
+ return FALSE;
+ if(sub_8090A60(data->targetItem) != 0)
+ return FALSE;
+ if(sub_8091524(data->targetItem) == 0)
+ return FALSE;
+
+ // Item finding
+ if(data->missionType == FIND_ITEM && sub_8091E60(data->dungeon, data->targetItem) == 0)
+ return FALSE;
+
+ if(data->rewardType == BLANK_4 || data->rewardType == END_REWARDS || data->rewardType > END_REWARDS)
+ return FALSE;
+
+ if(sub_8092040(data->itemReward) != 0)
+ return FALSE;
+
+ // Friend Area Reward
+ if(data->friendAreaReward > FINAL_ISLAND)
+ return FALSE;
+
+ if(data->rewardType == FRIEND_AREA)
+ {
+ if(GetFriendAreaUnlockCondition(data->friendAreaReward) != UNLOCK_WONDER_MAIL)
+ return FALSE;
+ if(sub_803C1D0(&(data->dungeon), data->missionType) == 0)
+ return FALSE;
+ }
+ return TRUE;
+ }
+}
diff --git a/src/ds_menus.c b/src/ds_menus.c
index 29100b6..7d7bc27 100644
--- a/src/ds_menus.c
+++ b/src/ds_menus.c
@@ -6,7 +6,7 @@ extern u8 *gUnknown_203B3E8;
extern void nullsub_54();
extern void sub_8039E18();
-void sub_803A1C0(u8 r0)
+void SetWonderMailMainMenuState(u8 r0)
{
*gUnknown_203B3E8 = r0;
nullsub_54();
diff --git a/src/event_flag.c b/src/event_flag.c
index 97a01d0..41552b3 100644
--- a/src/event_flag.c
+++ b/src/event_flag.c
@@ -9,6 +9,7 @@ extern u8 sub_8002658(s16);
struct unkEventStruct
{
+ // size: 0x4
s16 unk0;
u8 unk2; // Seems like friend area number
};
diff --git a/src/exclusive_pokemon.c b/src/exclusive_pokemon.c
index 903b189..1e1effc 100644
--- a/src/exclusive_pokemon.c
+++ b/src/exclusive_pokemon.c
@@ -1,5 +1,4 @@
#include "global.h"
-#include "constants/species.h"
#include "exclusive_pokemon.h"
const struct ExclusivePokemon gExclusivePokemon[NUM_EXCLUSIVE_POKEMON] = {
diff --git a/src/felicity_bank.c b/src/felicity_bank.c
index 28550dd..727c957 100644
--- a/src/felicity_bank.c
+++ b/src/felicity_bank.c
@@ -2,7 +2,6 @@
#include "pokemon.h"
#include "file_system.h"
#include "input.h"
-#include "constants/species.h"
#include "felicity_bank.h"
#include "memory.h"
diff --git a/src/friend_rescue.c b/src/friend_rescue.c
index ef1d729..73e937e 100644
--- a/src/friend_rescue.c
+++ b/src/friend_rescue.c
@@ -1,7 +1,6 @@
#include "global.h"
#include "friend_rescue.h"
#include "pokemon.h"
-#include "constants/species.h"
#include "memory.h"
#include "text.h"
diff --git a/src/friend_rescue_1.c b/src/friend_rescue_1.c
index 94baab3..7c0509a 100644
--- a/src/friend_rescue_1.c
+++ b/src/friend_rescue_1.c
@@ -1,7 +1,6 @@
#include "global.h"
#include "friend_rescue.h"
#include "pokemon.h"
-#include "constants/species.h"
extern void sub_80338C4(u32);
extern s32 sub_80144A4(s32 *);
diff --git a/src/gulpin_shop.c b/src/gulpin_shop.c
index 810a191..43dc94b 100644
--- a/src/gulpin_shop.c
+++ b/src/gulpin_shop.c
@@ -2,7 +2,6 @@
#include "file_system.h"
#include "pokemon.h"
#include "memory.h"
-#include "constants/species.h"
#include "text.h"
#include "input.h"
diff --git a/src/items.c b/src/items.c
index d6128f5..2c7dd90 100644
--- a/src/items.c
+++ b/src/items.c
@@ -16,7 +16,7 @@ extern void sub_8091840(u8);
extern u8 GetItemType(u8);
extern u32 GetItemUnkThrow(u8, u32);
extern s32 sub_80915D4(struct ItemStruct_203B460 *);
-extern u8 sub_80914E4(u8);
+extern bool8 sub_80914E4(u8);
extern void sub_8090F58(u32, u8 *, struct ItemStruct_203B460 *, u32);
void LoadItemParameters(void)
@@ -230,7 +230,7 @@ s32 sub_8090C30(struct ItemStruct_203B460 *param_1)
s32 sub_8090C7C(struct ItemStruct_203B460 *param_1)
{
- if (sub_80914E4(param_1->itemIndex) == 0) {
+ if (!sub_80914E4(param_1->itemIndex)) {
return 0;
}
else {
@@ -245,7 +245,7 @@ s32 sub_8090C7C(struct ItemStruct_203B460 *param_1)
s32 sub_8090CCC(struct ItemStruct_203B460 *param_1)
{
- if (sub_80914E4(param_1->itemIndex) == 0) {
+ if (!sub_80914E4(param_1->itemIndex)) {
return 0;
}
else {
diff --git a/src/kangaskhan_storage.c b/src/kangaskhan_storage.c
index f77d129..e23fe89 100644
--- a/src/kangaskhan_storage.c
+++ b/src/kangaskhan_storage.c
@@ -2,7 +2,6 @@
#include "file_system.h"
#include "pokemon.h"
#include "input.h"
-#include "constants/species.h"
#include "kangaskhan_storage.h"
#include "memory.h"
diff --git a/src/kangaskhan_storage_1.c b/src/kangaskhan_storage_1.c
index 25cc2a6..61bcf08 100644
--- a/src/kangaskhan_storage_1.c
+++ b/src/kangaskhan_storage_1.c
@@ -2,7 +2,6 @@
#include "file_system.h"
#include "pokemon.h"
#include "input.h"
-#include "constants/species.h"
#include "kangaskhan_storage.h"
extern struct unkStruct_203B208 *gUnknown_203B208;
diff --git a/src/kecleon_items.c b/src/kecleon_items.c
index f1f2806..da049a2 100644
--- a/src/kecleon_items.c
+++ b/src/kecleon_items.c
@@ -1,7 +1,6 @@
#include "global.h"
#include "file_system.h"
#include "pokemon.h"
-#include "constants/species.h"
#include "input.h"
#include "kecleon_items.h"
#include "memory.h"
@@ -28,7 +27,7 @@ extern void sub_8019D30();
extern void sub_8019D4C();
extern void sub_8019D68();
extern void sub_8018D30();
-extern void sub_8018E88();
+extern void UpdateKecleonStoreDialogue();
u32 DisplayKeckleonDialogueSprite(u32 param_1)
{
@@ -43,7 +42,7 @@ u32 DisplayKeckleonDialogueSprite(u32 param_1)
switch(param_1)
{
case 0:
- gUnknown_203B210->unk4 = 1;
+ gUnknown_203B210->unk4 = TRUE;
gUnknown_203B210->unkE4 = &gUnknown_203B210->faceFile;
CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KECLEON);
CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KECLEON);
@@ -51,15 +50,15 @@ u32 DisplayKeckleonDialogueSprite(u32 param_1)
strcpy(gUnknown_202E1C8 - 0x50, monName);
break;
case 1:
- gUnknown_203B210->unk4 = 1;
- gUnknown_203B210->unkE4 = 0;
+ gUnknown_203B210->unk4 = TRUE;
+ gUnknown_203B210->unkE4 = NULL;
CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KECLEON);
CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KECLEON);
monName = GetMonSpecies( SPECIES_KECLEON);
strcpy(gUnknown_202E1C8 - 0x50, monName);
break;
case 2:
- gUnknown_203B210->unk4 = 0;
+ gUnknown_203B210->unk4 = FALSE;
gUnknown_203B210->unkE4 = &gUnknown_203B210->faceFile;
CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KECLEON);
CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KECLEON);
@@ -67,8 +66,8 @@ u32 DisplayKeckleonDialogueSprite(u32 param_1)
strcpy(gUnknown_202E1C8 - 0x50, monName);
break;
case 3:
- gUnknown_203B210->unk4 = 0;
- gUnknown_203B210->unkE4 = 0;
+ gUnknown_203B210->unk4 = FALSE;
+ gUnknown_203B210->unkE4 = NULL;
CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KECLEON);
CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KECLEON);
monName = GetMonSpecies( SPECIES_KECLEON);
@@ -148,7 +147,7 @@ void UpdateKecleonStoreState(u32 newState)
{
gUnknown_203B210->currState = newState;
sub_8018D30();
- sub_8018E88();
+ UpdateKecleonStoreDialogue();
}
void sub_8018D30(void)
diff --git a/src/kecleon_items_1.c b/src/kecleon_items_1.c
index 0db9bb3..0746f3b 100644
--- a/src/kecleon_items_1.c
+++ b/src/kecleon_items_1.c
@@ -1,7 +1,6 @@
#include "global.h"
#include "file_system.h"
#include "pokemon.h"
-#include "constants/species.h"
#include "input.h"
#include "kecleon_items.h"
#include "gUnknown_203B460.h"
@@ -10,7 +9,7 @@ extern struct unkStruct_203B210 *gUnknown_203B210;
extern struct unkStruct_203B460 *gUnknown_203B460;
extern u32 sub_8090CCC(struct ItemStruct_203B460 *);
-extern u8 sub_80914E4(u8);
+extern bool8 sub_80914E4(u8);
extern u32 sub_8091814(void);
extern u32 sub_8091A48(void);
extern s32 sub_80144A4(s32 *);
@@ -37,13 +36,13 @@ void sub_8019B08(void)
case 3:
gUnknown_203B210->unk24 = sub_801A8AC();
gUnknown_203B210->unk1C = gUnknown_203B460->fill0[gUnknown_203B210->unk24];
- gUnknown_203B210->unk10 = sub_8090CCC(&gUnknown_203B210->unk1C);
+ gUnknown_203B210->itemSellPrice = sub_8090CCC(&gUnknown_203B210->unk1C);
UpdateKecleonStoreState(0x1c);
break;
case 4:
gUnknown_203B210->unk24 = sub_801A8AC();
gUnknown_203B210->unk1C = gUnknown_203B460->fill0[gUnknown_203B210->unk24];
- gUnknown_203B210->unk10 = sub_8090CCC(&gUnknown_203B210->unk1C);
+ gUnknown_203B210->itemSellPrice = sub_8090CCC(&gUnknown_203B210->unk1C);
sub_8099690(0);
UpdateKecleonStoreState(0x1d);
break;
@@ -63,7 +62,7 @@ void sub_8019BBC(void)
int menuAction;
menuAction = 0;
- if (gUnknown_203B210->unk4 != 0) {
+ if (gUnknown_203B210->unk4) {
sub_8019EDC(0);
}
else {
@@ -77,13 +76,11 @@ void sub_8019BBC(void)
if (gUnknown_203B460->teamMoney == 0) {
UpdateKecleonStoreState(0x6);
}
+ else if (gUnknown_203B210->itemSellPrice > gUnknown_203B460->teamMoney) {
+ UpdateKecleonStoreState(0xC);
+ }
else {
- if (gUnknown_203B210->unk10 > gUnknown_203B460->teamMoney) {
- UpdateKecleonStoreState(0xC);
- }
- else {
- UpdateKecleonStoreState(0x16);
- }
+ UpdateKecleonStoreState(0x16);
}
break;
case 7:
@@ -107,17 +104,14 @@ void sub_8019C78(void)
switch(menuAction){
case 3:
sub_8099690(0);
- if (sub_80914E4(gUnknown_203B210->unk1C.itemIndex) == '\0') {
+ if (!sub_80914E4(gUnknown_203B210->unk1C.itemIndex)) {
UpdateKecleonStoreState(0xd);
}
+ else if (gUnknown_203B210->itemSellPrice + gUnknown_203B460->teamMoney > 99999) {
+ UpdateKecleonStoreState(0xe);
+ }
else {
- if (gUnknown_203B210->unk10 + gUnknown_203B460->teamMoney > 99999) {
- UpdateKecleonStoreState(0xe);
-
- }
- else {
- UpdateKecleonStoreState(0x1e);
- }
+ UpdateKecleonStoreState(0x1e);
}
break;
case 7:
@@ -172,7 +166,7 @@ void sub_8019D68(void)
u32 sub_8019D8C(void)
{
- if(gUnknown_203B210->unk4 != 0)
+ if(gUnknown_203B210->unk4)
{
return sub_8091814();
}
@@ -190,22 +184,20 @@ void sub_8019DAC(void)
gUnknown_203B210->unk14 = 0;
gUnknown_203B210->unk18 = 0;
- iVar5 = 0;
- do {
+ for(iVar5 = 0; iVar5 < 0x14; iVar5++){
pbVar4 = &gUnknown_203B460->fill0[iVar5];
- if (((pbVar4->unk0 & 1) != 0) && (sub_80914E4(pbVar4->itemIndex) != 0)) {
+ if (((pbVar4->unk0 & 1) != 0) && (sub_80914E4(pbVar4->itemIndex))) {
iVar3 = sub_8090CCC(pbVar4);
gUnknown_203B210->unk18 += iVar3;
gUnknown_203B210->unk14++;
}
- iVar5 = iVar5 + 1;
- } while (iVar5 < 0x14);
+ }
}
void sub_8019E04(int param_1)
{
- if (gUnknown_203B210->unk4 != 0) {
+ if (gUnknown_203B210->unk4) {
if (param_1 == 1)
gUnknown_203B210->unkE0 = 1;
else
diff --git a/src/makuhita_dojo.c b/src/makuhita_dojo.c
index b01e1a6..1e061da 100644
--- a/src/makuhita_dojo.c
+++ b/src/makuhita_dojo.c
@@ -2,7 +2,6 @@
#include "file_system.h"
#include "pokemon.h"
#include "input.h"
-#include "constants/species.h"
#include "memory.h"
#include "text.h"
diff --git a/src/personality_test.c b/src/personality_test.c
index 1ec55e2..5272c88 100644
--- a/src/personality_test.c
+++ b/src/personality_test.c
@@ -1,7 +1,6 @@
#include "global.h"
#include "personality_test.h"
#include "constants/emotions.h"
-#include "constants/species.h"
#include "random.h"
#include "file_system.h"
#include "pokemon.h"
diff --git a/src/pokemon.c b/src/pokemon.c
index 2499e11..263e482 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -1,7 +1,6 @@
#include "global.h"
#include "pokemon.h"
#include "file_system.h"
-#include "constants/species.h"
extern struct FileArchive gSystemFileArchive;
extern const char gUnknown_81075F4;
diff --git a/src/code_808EAB0.c b/src/pokemon_3.c
index fd03834..fd03834 100644
--- a/src/code_808EAB0.c
+++ b/src/pokemon_3.c
diff --git a/src/pokemon_mid.c b/src/pokemon_mid.c
index 9653217..d5ae74a 100644
--- a/src/pokemon_mid.c
+++ b/src/pokemon_mid.c
@@ -1,6 +1,5 @@
#include "global.h"
#include "pokemon.h"
-#include "constants/species.h"
extern struct gPokemon *gMonsterParameters;
extern const char gUnknown_8107600[];
diff --git a/src/post_office_guide.c b/src/post_office_guide.c
index 2c0f1d6..8fbfe56 100644
--- a/src/post_office_guide.c
+++ b/src/post_office_guide.c
@@ -2,7 +2,6 @@
#include "pokemon.h"
#include "file_system.h"
#include "input.h"
-#include "constants/species.h"
#include "menu.h"
#include "memory.h"
#include "text.h"
@@ -62,14 +61,51 @@ extern const char Delivery_Text[];
extern const char BulletinBoard_Text[];
extern const char PostOffice_Text[];
+enum PostOfficeStates
+{
+ EXIT_POST_OFFICE_MENU,
+ IM_GUIDE_START_MENU,
+ ANYTHING_ELSE_START_MENU,
+ RETURN_TO_START_MENU,
+ DISPLAY_FRIEND_RESCUE_MENU,
+ RETURN_TO_FRIEND_RESCUE,
+ DISPLAY_GO_RESCUE_MENU,
+ RETURN_TO_GO_RESCUE,
+ DISPLAY_GET_HELP_MENU,
+ RETURN_TO_GET_HELP,
+};
+
+enum PostOfficeMenuActions
+{
+ POST_OFFICE,
+ BULLETIN_BOARD,
+ DELIVERY,
+ FRIEND_RESCUE,
+ CANCEL,
+ EXIT,
+ FRIEND_RESCUE_INFO,
+ GO_RESCUE,
+ GET_HELP_MENU,
+ DELETING_MAIL,
+ RESCUE_PROCEDURES,
+ RECEIVE_SOS_MAIL,
+ LEAVE_FOR_RESCUE,
+ SEND_AOK_MAIL,
+ GET_THANK_YOU_MAIL,
+ GETTING_HELP,
+ SEND_SOS_MAIL,
+ RECEIVE_AOK_MAIL,
+ SEND_THANK_YOU_MAIL
+};
+
const struct MenuItem gPostOfficeHelpStartMenu[] =
{
- {PostOffice_Text, 0x0},
- {BulletinBoard_Text, 0x1},
- {Delivery_Text, 0x2},
- {FriendRescue_80E0A80,0x3},
- {Cancel_80E0A78,0x4},
- {NULL,0x5}
+ {PostOffice_Text, POST_OFFICE},
+ {BulletinBoard_Text, BULLETIN_BOARD},
+ {Delivery_Text, DELIVERY},
+ {FriendRescue_80E0A80, FRIEND_RESCUE},
+ {Cancel_80E0A78, CANCEL},
+ {NULL, EXIT}
};
ALIGNED(4) const char Cancel_80E0A78[] = _("Cancel");
@@ -80,12 +116,12 @@ ALIGNED(4) const char PostOffice_Text[] = _("Post Office");
const struct MenuItem gPostOfficeHelpFriendRescueMenu[] =
{
- {FriendRescueInfo_Text, 0x6},
- {GoRescue_Text, 0x7},
- {GetHelp_Text, 0x8},
- {DeletingMailInfo_Text,0x9},
- {Exit_80EA0EC,0x5},
- {NULL,0x5}
+ {FriendRescueInfo_Text, FRIEND_RESCUE_INFO},
+ {GoRescue_Text, GO_RESCUE},
+ {GetHelp_Text, GET_HELP_MENU},
+ {DeletingMailInfo_Text, DELETING_MAIL},
+ {Exit_80EA0EC, EXIT},
+ {NULL, EXIT}
};
ALIGNED(4) const char Exit_80EA0EC[] = _("Exit");
@@ -97,13 +133,13 @@ ALIGNED(4) const char FriendRescueInfo_Text[] = _("Friend Rescue Info");
const struct MenuItem gPostOfficeHelpGoRescueMenu[] =
{
- {RescueProcedures_Text, 0xA},
- {ReceiveSOSMail_Text, 0xB},
- {LeaveForRescue_Text, 0xC},
- {SendAOKMail_Text, 0xD},
- {GetThankYouMail_Text,0xE},
- {Exit_80EA0EC,0x5},
- {NULL,0x5}
+ {RescueProcedures_Text, RESCUE_PROCEDURES},
+ {ReceiveSOSMail_Text, RECEIVE_SOS_MAIL},
+ {LeaveForRescue_Text, LEAVE_FOR_RESCUE},
+ {SendAOKMail_Text, SEND_AOK_MAIL},
+ {GetThankYouMail_Text, GET_THANK_YOU_MAIL},
+ {Exit_80EA0EC, EXIT},
+ {NULL, EXIT}
};
ALIGNED(4) const char GetThankYouMail_Text[] = _("Get Thank-You Mail");
@@ -115,12 +151,12 @@ ALIGNED(4) const char RescueProcedures_Text[] = _("Rescue Procedures");
const struct MenuItem gPostOfficeHelpGetHelpMenu[] =
{
- {GettingHelp_Text, 0xF},
- {SendSOSMail_Text, 0x10},
- {ReceiveAOKMail_Text, 0x11},
- {SendThankYouMail_Text,0x12},
- {Exit_80EA0EC,0x5},
- {NULL,0x5}
+ {GettingHelp_Text, GETTING_HELP},
+ {SendSOSMail_Text, SEND_SOS_MAIL},
+ {ReceiveAOKMail_Text, RECEIVE_AOK_MAIL},
+ {SendThankYouMail_Text, SEND_THANK_YOU_MAIL},
+ {Exit_80EA0EC, EXIT},
+ {NULL, EXIT}
};
ALIGNED(4) const char SendThankYouMail_Text[] = _("Send Thank-You Mail");
@@ -168,13 +204,13 @@ extern void sub_801317C(void *);
void UpdateHelperPelipperState(u8);
void HandlePostOfficeHelpStartMenuSelection();
-void sub_8031848();
+void ReturnToPostOfficeStartMenu();
extern void HandlePostOfficeHelpFriendRescueMenuSelection();
-extern void sub_80318D0();
+extern void ReturnToFriendRescueMenu();
extern void HandlePostOfficeHelpGoRescueMenuSelection();
-extern void sub_803192C();
+extern void ReturntoGoRescueMenu();
extern void HandlePostOfficeHelpGetHelpMenuSelection();
-extern void sub_8031988();
+extern void ReturnToGetHelpMenu();
extern s32 sub_80144A4(s32 *);
extern s32 sub_80969D0(u8);
extern void sub_8012D08(struct UnkTextStruct2 *, s32);
@@ -208,40 +244,40 @@ u32 CreateHelperPelipperMenu(s16 speciesID)
}
}
gPostOfficeHelper->currMenuChoice = 0;
- UpdateHelperPelipperState(1);
+ UpdateHelperPelipperState(IM_GUIDE_START_MENU);
return 1;
}
-u32 sub_8031540(void)
+u32 HelperPelliperCallback(void)
{
switch(gPostOfficeHelper->state) {
- case 1:
- case 2:
+ case IM_GUIDE_START_MENU:
+ case ANYTHING_ELSE_START_MENU:
HandlePostOfficeHelpStartMenuSelection();
break;
- case 3:
- sub_8031848();
+ case RETURN_TO_START_MENU:
+ ReturnToPostOfficeStartMenu();
break;
- case 4:
+ case DISPLAY_FRIEND_RESCUE_MENU:
HandlePostOfficeHelpFriendRescueMenuSelection();
break;
- case 5:
- sub_80318D0();
+ case RETURN_TO_FRIEND_RESCUE:
+ ReturnToFriendRescueMenu();
break;
- case 6:
+ case DISPLAY_GO_RESCUE_MENU:
HandlePostOfficeHelpGoRescueMenuSelection();
break;
- case 7:
- sub_803192C();
+ case RETURN_TO_GO_RESCUE:
+ ReturntoGoRescueMenu();
break;
- case 0:
+ case EXIT_POST_OFFICE_MENU:
return 3;
- case 8:
+ case DISPLAY_GET_HELP_MENU:
HandlePostOfficeHelpGetHelpMenuSelection();
break;
- case 9:
- sub_8031988();
+ case RETURN_TO_GET_HELP:
+ ReturnToGetHelpMenu();
break;
}
return 0;
@@ -271,85 +307,85 @@ void UpdateHelperPelipperText(void)
switch(gPostOfficeHelper->state)
{
- case 8:
+ case DISPLAY_GET_HELP_MENU:
sub_8014248(gWhatdYouWantToKnow, 0, gPostOfficeHelper->currMenuChoice, gPostOfficeHelpGetHelpMenu, 0, 4, 0, faceFile, 0xC);
break;
- case 9:
+ case RETURN_TO_GET_HELP:
switch(gPostOfficeHelper->currMenuChoice)
{
- case 15:
+ case GETTING_HELP:
sub_80141B4(gGettingHelpExplaination, 0, faceFile, 0x10d);
break;
- case 16:
+ case SEND_SOS_MAIL:
sub_80141B4(gSendSOSMailExplaination, 0, faceFile, 0x10d);
break;
- case 17:
+ case RECEIVE_AOK_MAIL:
sub_80141B4(gReceiveAOKMailExplaination, 0, faceFile, 0x10d);
break;
- case 18:
+ case SEND_THANK_YOU_MAIL:
sub_80141B4(gSendThankYouMailExplaination, 0, faceFile, 0x10d);
break;
default:
break;
}
break;
- case 6:
+ case DISPLAY_GO_RESCUE_MENU:
sub_8014248(gWhatdYouWantToKnow, 0, gPostOfficeHelper->currMenuChoice, gPostOfficeHelpGoRescueMenu, 0, 4, 0, faceFile, 0xC);
break;
- case 7:
+ case RETURN_TO_GO_RESCUE:
switch(gPostOfficeHelper->currMenuChoice)
{
- case 10:
+ case RESCUE_PROCEDURES:
sub_80141B4(gRescueProceduresExplaination, 0, faceFile, 0x10d);
break;
- case 11:
+ case RECEIVE_SOS_MAIL:
sub_80141B4(gReceiveSOSMailExplaination, 0, faceFile, 0x10d);
break;
- case 13:
+ case SEND_AOK_MAIL:
sub_80141B4(gSendAOKMailExplaination, 0, faceFile, 0x10d);
break;
- case 12:
+ case LEAVE_FOR_RESCUE:
sub_80141B4(gLeaveForRescueExplaination, 0, faceFile, 0x10d);
break;
- case 14:
+ case GET_THANK_YOU_MAIL:
sub_80141B4(gGetThankYouMailExplaination, 0, faceFile, 0x10d);
break;
default:
break;
}
break;
- case 1:
+ case IM_GUIDE_START_MENU:
sub_8014248(gImYourGuide, 0, gPostOfficeHelper->currMenuChoice, gPostOfficeHelpStartMenu, 0, 4, 0, faceFile, 0xC);
break;
- case 2:
+ case ANYTHING_ELSE_START_MENU:
sub_8014248(gAnythingElse, 0, gPostOfficeHelper->currMenuChoice, gPostOfficeHelpStartMenu, 0, 4, 0, faceFile, 0xC);
break;
- case 3:
+ case RETURN_TO_START_MENU:
switch(gPostOfficeHelper->currMenuChoice)
{
- case 0:
+ case POST_OFFICE:
sub_80141B4(gPostOfficeExplaination, 0, faceFile, 0x10d);
break;
- case 1:
+ case BULLETIN_BOARD:
sub_80141B4(gBulletinBoardExplaination, 0, faceFile, 0x10d);
break;
- case 2:
+ case DELIVERY:
sub_80141B4(gDeliveryExplaination, 0, faceFile, 0x10d);
break;
default:
break;
}
break;
- case 4:
+ case DISPLAY_FRIEND_RESCUE_MENU:
sub_8014248(gWhatdYouWantToKnow, 0, gPostOfficeHelper->currMenuChoice, gPostOfficeHelpFriendRescueMenu, 0, 4, 0, faceFile, 0xC);
break;
- case 5:
+ case RETURN_TO_FRIEND_RESCUE:
switch(gPostOfficeHelper->currMenuChoice)
{
- case 6:
+ case FRIEND_RESCUE_INFO:
sub_80141B4(gFriendRescueExplaination, 0, faceFile, 0x10d);
break;
- case 9:
+ case DELETING_MAIL:
sub_80141B4(gDeletingMailExplaination, 0, faceFile, 0x10d);
break;
default:
@@ -375,30 +411,30 @@ void HandlePostOfficeHelpStartMenuSelection(void)
{
switch(chosenAction)
{
- case 4:
- case 5:
- UpdateHelperPelipperState(0);
+ case CANCEL:
+ case EXIT:
+ UpdateHelperPelipperState(EXIT_POST_OFFICE_MENU);
break;
- case 3:
+ case FRIEND_RESCUE:
gPostOfficeHelper->currMenuChoice = chosenAction;
- UpdateHelperPelipperState(4);
+ UpdateHelperPelipperState(DISPLAY_FRIEND_RESCUE_MENU);
break;
- case 0:
- case 1:
- case 2:
+ case POST_OFFICE:
+ case BULLETIN_BOARD:
+ case DELIVERY:
gPostOfficeHelper->currMenuChoice = chosenAction;
- UpdateHelperPelipperState(3);
+ UpdateHelperPelipperState(RETURN_TO_START_MENU);
break;
}
}
}
-void sub_8031848(void)
+void ReturnToPostOfficeStartMenu(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
- UpdateHelperPelipperState(2);
+ UpdateHelperPelipperState(ANYTHING_ELSE_START_MENU);
}
}
@@ -409,30 +445,30 @@ void HandlePostOfficeHelpFriendRescueMenuSelection(void)
{
switch(chosenAction)
{
- case 5:
- UpdateHelperPelipperState(2);
+ case EXIT:
+ UpdateHelperPelipperState(ANYTHING_ELSE_START_MENU);
break;
- case 7:
- UpdateHelperPelipperState(6);
+ case GO_RESCUE:
+ UpdateHelperPelipperState(DISPLAY_GO_RESCUE_MENU);
break;
- case 8:
- UpdateHelperPelipperState(8);
+ case GET_HELP_MENU:
+ UpdateHelperPelipperState(DISPLAY_GET_HELP_MENU);
break;
- case 6:
- case 9:
+ case FRIEND_RESCUE_INFO:
+ case DELETING_MAIL:
gPostOfficeHelper->currMenuChoice = chosenAction;
- UpdateHelperPelipperState(5);
+ UpdateHelperPelipperState(RETURN_TO_FRIEND_RESCUE);
break;
}
}
}
-void sub_80318D0(void)
+void ReturnToFriendRescueMenu(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
- UpdateHelperPelipperState(4);
+ UpdateHelperPelipperState(DISPLAY_FRIEND_RESCUE_MENU);
}
}
@@ -443,27 +479,27 @@ void HandlePostOfficeHelpGoRescueMenuSelection(void)
{
switch(chosenAction)
{
- case 5:
- UpdateHelperPelipperState(4);
+ case EXIT:
+ UpdateHelperPelipperState(DISPLAY_FRIEND_RESCUE_MENU);
break;
- case 10:
- case 11:
- case 12:
- case 13:
- case 14:
+ case RESCUE_PROCEDURES:
+ case RECEIVE_SOS_MAIL:
+ case LEAVE_FOR_RESCUE:
+ case SEND_AOK_MAIL:
+ case GET_THANK_YOU_MAIL:
gPostOfficeHelper->currMenuChoice = chosenAction;
- UpdateHelperPelipperState(7);
+ UpdateHelperPelipperState(RETURN_TO_GO_RESCUE);
break;
}
}
}
-void sub_803192C(void)
+void ReturntoGoRescueMenu(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
- UpdateHelperPelipperState(6);
+ UpdateHelperPelipperState(DISPLAY_GO_RESCUE_MENU);
}
}
@@ -474,26 +510,26 @@ void HandlePostOfficeHelpGetHelpMenuSelection(void)
{
switch(chosenAction)
{
- case 5:
- UpdateHelperPelipperState(4);
+ case EXIT:
+ UpdateHelperPelipperState(DISPLAY_FRIEND_RESCUE_MENU);
break;
- case 15:
- case 16:
- case 17:
- case 18:
+ case GETTING_HELP:
+ case SEND_SOS_MAIL:
+ case RECEIVE_AOK_MAIL:
+ case SEND_THANK_YOU_MAIL:
gPostOfficeHelper->currMenuChoice = chosenAction;
- UpdateHelperPelipperState(9);
+ UpdateHelperPelipperState(RETURN_TO_GET_HELP);
break;
}
}
}
-void sub_8031988(void)
+void ReturnToGetHelpMenu(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
- UpdateHelperPelipperState(8);
+ UpdateHelperPelipperState(DISPLAY_GET_HELP_MENU);
}
}
@@ -503,7 +539,7 @@ u32 sub_80319A4(u8 param_1,u8 param_2,int param_3)
gUnknown_203B330 = MemoryAlloc(0x78,8);
gUnknown_203B330->unkC = param_1;
gUnknown_203B330->unkD = param_2;
- sub_801317C(gUnknown_203B330);
+ sub_801317C(&gUnknown_203B330->unk0);
gUnknown_203B330->unk10 = param_3;
gUnknown_203B330->unk14 = &gUnknown_203B330->unk18[param_3];
sub_8031A2C();
diff --git a/src/save.c b/src/save.c
index b040f72..a5bc356 100644
--- a/src/save.c
+++ b/src/save.c
@@ -731,7 +731,7 @@ void PrepareSavePakWrite(s16 PokemonID)
gSavePakWrite->pokeID = id_s32;
gSavePakWrite->faceFile = NULL;
gSavePakWrite->faceData = NULL;
- if (PokemonID != 0) {
+ if (PokemonID != SPECIES_NONE) {
file = GetDialogueSpriteDataPtr(PokemonID);
gSavePakWrite->faceFile = file;
gSavePakWrite->faceData = file->data;
diff --git a/src/trade_items_menu.c b/src/trade_items_menu.c
index d9cdc33..0e1d171 100644
--- a/src/trade_items_menu.c
+++ b/src/trade_items_menu.c
@@ -357,7 +357,7 @@ void TradeItem_SendItemConfirm(void)
load -= gTradeItemsMenu->numItemsToSend;
gUnknown_203B460->unk50[gTradeItemsMenu->chosenItem] = load;
SetTradeItemMenu(TRADE_ITEMS_PREPARE_TRADE_SAVING);
- PrepareSavePakWrite(0);
+ PrepareSavePakWrite(SPECIES_NONE);
break;
case 6:
case 0:
@@ -399,7 +399,7 @@ void sub_80368D4(void)
{
TradeItem_AddItem();
SetTradeItemMenu(0x11);
- PrepareSavePakWrite(0);
+ PrepareSavePakWrite(SPECIES_NONE);
}
break;
}
@@ -438,7 +438,7 @@ void sub_8036950(void)
// Link Failure
TradeItem_AddItem(); // Add back the item
SetTradeItemMenu(0xb);
- PrepareSavePakWrite(0);
+ PrepareSavePakWrite(SPECIES_NONE);
}
else {
PrintTradeItemsLinkError(gTradeItemsMenu->linkStatus);
@@ -482,7 +482,7 @@ void sub_8036A34(void)
if(sub_80144A4(&temp) == 0)
{
SetTradeItemMenu(0x10);
- PrepareSavePakWrite(0);
+ PrepareSavePakWrite(SPECIES_NONE);
}
}
diff --git a/src/wonder_mail.c b/src/wonder_mail.c
index 05d3d03..770a1ff 100644
--- a/src/wonder_mail.c
+++ b/src/wonder_mail.c
@@ -2,13 +2,14 @@
#include "save.h"
#include "pokemon.h"
#include "file_system.h"
-#include "constants/species.h"
#include "wonder_mail.h"
#include "memory.h"
#include "text.h"
+#include "gUnknown_203B460.h"
extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0;
extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4;
+extern struct unkStruct_203B460 *gUnknown_203B460;
struct unkStruct_8095228
{
@@ -36,6 +37,8 @@ extern u8 sub_8030C20(u32);
extern u32 sub_8031050();
extern void sub_80310B4();
extern u32 sub_8095350();
+extern u8 sub_801CF14(u32);
+extern u32 sub_802F298();
extern struct unkStruct_8095228 *sub_8095228(u8);
extern u8 sub_80A2824(u32);
@@ -478,7 +481,7 @@ void sub_8028E84()
}
sub_8028B04(24);
sub_8011C28(1);
- PrepareSavePakWrite(0);
+ PrepareSavePakWrite(SPECIES_NONE);
}
void sub_8028EAC()
@@ -522,15 +525,14 @@ void sub_8028F04()
s32 temp;
s32 counter;
- if(sub_80144A4(&temp) != 0)
- {
- return;
- }
- for(counter = 0; counter <= 31; counter++)
+ if(sub_80144A4(&temp) == 0)
{
- sub_8095240(counter);
+ for(counter = 0; counter <= 31; counter++)
+ {
+ sub_8095240(counter);
+ }
+ sub_8028B04(21);
}
- sub_8028B04(21);
}
void sub_8028F30()
@@ -543,7 +545,7 @@ void sub_8028F30()
}
sub_8028B04(22);
sub_8011C28(1);
- PrepareSavePakWrite(0);
+ PrepareSavePakWrite(SPECIES_NONE);
}
void sub_8028F58()
@@ -839,7 +841,7 @@ void sub_8029374(void)
}
sub_8028B04(0x24);
sub_8011C28(1);
- PrepareSavePakWrite(0);
+ PrepareSavePakWrite(SPECIES_NONE);
}
void sub_802939C(void)
@@ -1288,7 +1290,7 @@ void sub_8029AB0(void)
}
sub_8028B04(0x38);
sub_8011C28(1);
- PrepareSavePakWrite(0);
+ PrepareSavePakWrite(SPECIES_NONE);
}
void sub_8029AD8(void)
@@ -1873,7 +1875,7 @@ void sub_802A4AC(void)
{
sub_802B2BC(0x18);
sub_8011C28(1);
- PrepareSavePakWrite(0);
+ PrepareSavePakWrite(SPECIES_NONE);
}
}
@@ -1994,7 +1996,7 @@ void sub_802A6F0(void)
if (sub_80144A4(&temp) == 0) {
sub_802B2BC(0x18);
sub_8011C28(1);
- PrepareSavePakWrite(0);
+ PrepareSavePakWrite(SPECIES_NONE);
}
}
@@ -2005,7 +2007,7 @@ void sub_802A718(void)
if (sub_80144A4(&temp) == 0) {
sub_802B2BC(0x25);
sub_8011C28(1);
- PrepareSavePakWrite(0);
+ PrepareSavePakWrite(SPECIES_NONE);
}
}
@@ -2017,3 +2019,341 @@ void sub_802A740(void)
sub_802B2BC(0x1e);
}
}
+
+void sub_802A75C(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ switch(temp)
+ {
+ case 7:
+ // NOTE: if statement is needed to match
+ if(gUnknown_203B2C4->unk538)
+ sub_802B2BC(0x16);
+ else
+ sub_802B2BC(0x16);
+ break;
+ case 0:
+ sub_802B2BC(1);
+ break;
+ }
+ }
+}
+
+void sub_802A798(void)
+{
+ s32 temp;
+ struct unkStruct_8095228 *return_var;
+ if(sub_80144A4(&temp) == 0)
+ {
+ switch(temp)
+ {
+ case 7:
+ return_var = sub_8095228(gUnknown_203B2C4->unk218);
+ if(gUnknown_203B2C4->unk41C.unk41E != 0)
+ {
+ return_var->unk20 = gUnknown_203B2C4->unk41C;
+ }
+ gUnknown_203B460->unk50[gUnknown_203B2C4->unk41C.unk41E]--;
+ sub_802B2BC(0x29);
+ break;
+ case 8:
+ sub_802B2BC(0xB);
+ break;
+ case 0:
+ sub_802B2BC(1);
+ break;
+ }
+ }
+}
+
+void sub_802A828(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ sub_802B2BC(0x2A);
+ sub_8011C28(1);
+ PrepareSavePakWrite(SPECIES_NONE);
+ }
+}
+
+void sub_802A850(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ if(!WriteSavePak())
+ {
+ FinishWriteSavePak();
+ switch(gUnknown_203B2C4->unk534)
+ {
+ case 3:
+ case 4:
+ sub_802B2BC(0x1D);
+ break;
+ case 5:
+ sub_802B2BC(0x19);
+ break;
+ }
+ }
+ }
+}
+
+void sub_802A8A0(void)
+{
+ s32 temp;
+
+ if (sub_80144A4(&temp) == 0) {
+ sub_802B2BC(0x13);
+ }
+}
+
+void sub_802A8BC(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ switch(temp)
+ {
+ case 0xA:
+ switch(gUnknown_203B2C4->unk534)
+ {
+ case 3:
+ case 4:
+ sub_802B2BC(0x1D);
+ break;
+ case 5:
+ sub_802B2BC(0x19);
+ break;
+ }
+ break;
+ case 0:
+ sub_802B2BC(1);
+ break;
+ }
+ }
+}
+
+void sub_802A910(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ switch(temp)
+ {
+ case 9:
+ if(sub_801CF14(0) != 0)
+ {
+ sub_802B2BC(0xA);
+ }
+ else
+ {
+ sub_802B2BC(0xB);
+ }
+ break;
+ case 0xA:
+ switch(gUnknown_203B2C4->unk534)
+ {
+ case 3:
+ case 4:
+ sub_802B2BC(0x1D);
+ break;
+ case 5:
+ sub_802B2BC(0x19);
+ break;
+ }
+ break;
+ case 0:
+ sub_802B2BC(1);
+ break;
+ }
+ }
+}
+
+void sub_802A98C(void)
+{
+ s32 temp;
+
+ if (sub_80144A4(&temp) == 0) {
+ sub_802B2BC(0x8);
+ }
+}
+
+void sub_802A9A8(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ switch(temp)
+ {
+ case 0x7:
+ switch(gUnknown_203B2C4->unk534)
+ {
+ case 3:
+ case 4:
+ sub_802B2BC(0x1D);
+ break;
+ case 5:
+ sub_802B2BC(0x19);
+ break;
+ }
+ break;
+ case 0:
+ sub_802B2BC(1);
+ break;
+ }
+ }
+}
+
+void sub_802A9FC(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ switch(temp)
+ {
+ case 0x7:
+ sub_802B2BC(0x26);
+ break;
+ case 0:
+ sub_802B2BC(1);
+ break;
+ }
+ }
+}
+
+void sub_802AA28(void)
+{
+ s32 temp;
+ struct unkStruct_8095228 *return_var;
+ if(sub_80144A4(&temp) == 0)
+ {
+ switch(temp)
+ {
+ case 3:
+ case 4:
+ case 5:
+ gUnknown_203B2C4->unk534 = temp;
+ switch(gUnknown_203B2C4->unk538)
+ {
+ case 1:
+ return_var = sub_8095228(sub_80953D4(5));
+ if(return_var->unk20.unk41E != 0)
+ {
+ sub_802B2BC(7);
+ }
+ else
+ {
+ sub_802B2BC(9);
+ }
+ break;
+ default:
+ if(gUnknown_203B2C4->unk534 == 5)
+ {
+ sub_802B2BC(0x26);
+ }
+ else
+ {
+ sub_802B2BC(0x1D);
+ }
+ break;
+ }
+ break;
+ case 0:
+ sub_802B2BC(1);
+ break;
+ }
+ }
+}
+
+void sub_802AAAC(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ sub_802B2BC(1);
+ }
+}
+
+void sub_802AAC8(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ sub_802B2BC(3);
+ }
+}
+
+void sub_802AAE4(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ switch(temp)
+ {
+ case 1:
+ gUnknown_203B2C4->unk40 = 6;
+ gUnknown_203B2C4->unk538 = 1;
+ if(sub_8095324(5) == 0)
+ {
+ sub_802B2BC(4);
+ }
+ else
+ {
+ sub_802B2BC(0xF);
+ }
+ break;
+ case 2:
+ gUnknown_203B2C4->unk40 = 7;
+ gUnknown_203B2C4->unk538 = 2;
+ sub_802B2BC(6);
+ break;
+ case 0:
+ sub_802B2BC(2);
+ break;
+ }
+ }
+}
+
+void sub_802AB60(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ sub_802B2BC(0x22);
+ }
+}
+
+void sub_802AB7C(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ sub_802B2BC(0x22);
+ }
+}
+
+
+void sub_802AB98(void)
+{
+ const char *monName;
+ switch(sub_802F298())
+ {
+ case 3:
+ sub_802F2C0();
+ CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_PELIPPER);
+ monName = GetMonSpecies(SPECIES_PELIPPER);
+ strcpy(gAvailablePokemonNames, monName);
+ sub_8095240(sub_809539C(6, gUnknown_203B2C4->unk430));
+ sub_802B2BC(0x24);
+ break;
+ default:
+ break;
+ }
+}
+
+void nullsub_131(void)
+{
+}
diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c
index 2791d0c..62e4b00 100644
--- a/src/wonder_mail_2.c
+++ b/src/wonder_mail_2.c
@@ -2,10 +2,12 @@
#include "file_system.h"
#include "input.h"
#include "pokemon.h"
-#include "constants/species.h"
#include "memory.h"
#include "text.h"
#include "save.h"
+#include "wonder_mail.h"
+
+extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4;
struct unkStruct_203B2C8
{
@@ -41,15 +43,6 @@ struct unkStruct_203B2C8
extern struct unkStruct_203B2C8 *gUnknown_203B2C8;
-struct unkStruct_41C
-{
- u8 unk41C;
- u8 unk41D;
- u8 unk41E;
- u8 unk41F;
-};
-
-
struct unkStruct_8095228
{
u8 unk0;
@@ -95,6 +88,16 @@ extern const char gUnknown_80DF9F0[];
extern const char gUnknown_80DF9F8[];
extern u8 sub_80023E4(u32);
+extern void nullsub_131(void);
+extern void sub_802ABF8(void);
+
+void sub_802B2BC(u32 newState)
+{
+ gUnknown_203B2C4->state = newState;
+ nullsub_131();
+ sub_802ABF8();
+}
+
u32 sub_802B2D4(void)
{
s32 iVar1;
@@ -255,7 +258,7 @@ void sub_802B5B8(void)
puVar3->unk28 = uVar2;
sub_802B548(3);
sub_8011C28(1);
- PrepareSavePakWrite(0);
+ PrepareSavePakWrite(SPECIES_NONE);
}
}
diff --git a/src/wonder_mail_3.c b/src/wonder_mail_3.c
index 80552f6..88fa520 100644
--- a/src/wonder_mail_3.c
+++ b/src/wonder_mail_3.c
@@ -1,10 +1,12 @@
#include "global.h"
#include "memory.h"
+#include "text.h"
+#include "input.h"
struct unkStruct_203B2F8
{
// size: 0x208
- u32 state; // state
+ s32 state; // state
u32 unk4;
u8 unk8;
u8 unk9;
@@ -15,8 +17,22 @@ struct unkStruct_203B2F8
u32 unk6C;
u32 unk70;
u32 unk74;
+ u8 fill78[0x118 - 0x78];
+ u32 unk118;
+ u8 fill11C[0x158 - 0x11C];
+ u32 unk158;
+ u8 fill15C[0x198 - 0x15C];
+ u16 unk198[8];
+ struct UnkTextStruct2 unk1A8[4];
+ u32 unk1E4;
};
extern struct unkStruct_203B2F8 *gUnknown_203B2F8;
+extern struct UnkTextStruct2 gUnknown_80DFE04;
+extern struct UnkTextStruct2 gUnknown_80DFE1C;
+extern struct UnkTextStruct2 gUnknown_80DFDD4;
+extern void sub_8012CAC(struct UnkTextStruct2 *, u32 *);
+extern void sub_802D63C(void);
+extern void sub_802D5A4(void);
extern u8 sub_8099328(u8 *);
extern u32 sub_8011C1C();
@@ -103,3 +119,34 @@ void sub_802D1A0(u32 newState)
sub_802D1B8();
sub_802D2A8();
}
+
+void sub_802D1B8(void)
+{
+ s32 iVar2;
+ sub_8006518(gUnknown_203B2F8->unk1A8);
+ switch(gUnknown_203B2F8->state)
+ {
+ case 0xD:
+ sub_802D5A4();
+ gUnknown_203B2F8->unk1A8[2] = gUnknown_80DFE04;
+ sub_8012CAC(&gUnknown_203B2F8->unk1A8[2], &gUnknown_203B2F8->unk118);
+ gUnknown_203B2F8->unk1A8[2].unk0c = 6;
+ break;
+ case 0xE:
+ sub_802D63C();
+ gUnknown_203B2F8->unk1A8[3] = gUnknown_80DFE1C;
+ sub_8012CAC(&gUnknown_203B2F8->unk1A8[3], &gUnknown_203B2F8->unk158);
+ gUnknown_203B2F8->unk1A8[3].unk0c = 6;
+ break;
+ default:
+ for(iVar2 = 0; iVar2 < 4; iVar2++)
+ {
+ gUnknown_203B2F8->unk1A8[iVar2] = gUnknown_80DFDD4;
+ }
+ break;
+ case 2:
+ break;
+ }
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B2F8->unk1A8, 1, 1);
+}
diff --git a/src/wonder_mail_main_menu.c b/src/wonder_mail_main_menu.c
index 2b475a8..d6d6c2d 100644
--- a/src/wonder_mail_main_menu.c
+++ b/src/wonder_mail_main_menu.c
@@ -3,30 +3,35 @@
#include "memory.h"
#include "text.h"
#include "input.h"
+#include "wonder_mail.h"
+#define WONDER_MAIL_MAIN_SCREEN 4
#define EXIT_TO_MAIN_MENU 5
+#define COMMUNICATION_ERROR 10
#define PASSWORD_SUCCESS 13
+#define PREPARE_SAVE 14
+#define SAVE_ADVENTURE 15
+#define WONDER_MAIL_ADDED 16
+#define PROMPT_PASSWORD_ENTRY 17
#define PASSWORD_INVALID 19
#define PASSWORD_ENTRY_SCREEN 18
-struct unkWonderMailData
-{
- u8 unk0[20];
-};
-
struct unkStruct_203B3E8
{
// size: 0x49C
- u8 unk0; // state variable?
- u8 PasswordEntryBuffer[0x36]; // Wonder Mail Buffer...
- struct unkWonderMailData unk38; // 0x30 - 0x14
- u8 unk38_1[0x30 - 20]; // TODO: split for the ldm/stm stuff (fix dumb hack)
+ u8 state; // state variable?
+ u8 PasswordEntryBuffer[PASSWORD_BUFFER_SIZE]; // Wonder Mail Buffer...
+ union UNK38
+ {
+ struct WonderMail decodedMail; // 0x14
+ u8 unk38_u8[0x30]; // idk why it fills to 0x30 instead...
+ } UNK38;
u8 fill68[0x1EC - 0x68];
struct UnkTextStruct2 unk1EC[4];
u32 unk24C;
u32 wonderMailStatus;
u8 fill254[0x3C0 - 0x254];
- struct unkWonderMailData unk3C0; // 0x3C0 + 0x14
+ struct WonderMail unk3C0;
u8 fill3D0[0x490 - 0x3D4];
u32 unk490;
u32 unk494;
@@ -40,7 +45,7 @@ extern u32 sub_8095324(u32);
extern u32 sub_80144A4(s32 *);
extern u32 sub_8011C1C(void);
extern struct unkStruct_203B3E8 *gUnknown_203B3E8;
-extern void sub_803A1C0(u8);
+extern void SetWonderMailMainMenuState(u8);
extern void sub_8030DE4(void);
extern void sub_801B450(void);
extern void sub_803084C(void);
@@ -53,25 +58,25 @@ extern u8 sub_802D178();
extern void sub_802D184();
extern s32 sub_80154F0();
-extern bool8 sub_803D358(u8 *, void *);
-extern bool8 sub_80959C0(void *);
+extern bool8 DecodeWonderMailPassword(u8 *, struct WonderMail *);
+extern bool8 IsValidWonderMail(struct WonderMail *WonderMailData);
extern void sub_80141B4(u32 *r0, u32, u32 *r1, u32);
void sub_8039BAC(u32);
-void sub_8039A18(void);
+void HandleWonderMailMainScreen(void);
void sub_8039AA8(void);
void sub_8039B14(void);
void sub_8039B20(void);
void sub_8039B58(void);
void sub_8039D88(void);
-void sub_8039D28(void);
-void sub_8039D68(void);
-void sub_8039DA4(void);
-void sub_8039DCC(void);
+void HandlePasswordSuccess(void);
+void HandlePrepareSaveScreen(void);
+void HandleSaveAdventureScreen(void);
+void HandleWonderMailAddedScreen(void);
void sub_8039B3C(void);
void sub_8039D0C(void);
-void sub_8039C60(void);
-void sub_8039DE8(void);
+void HandlePasswordEntryScreen(void);
+void HandleInvalidPasswordMenu(void);
extern u32 gUnknown_80E7914;
@@ -95,7 +100,7 @@ bool8 CreateWonderMailMenu(void)
gUnknown_203B3E8 = MemoryAlloc(sizeof(struct unkStruct_203B3E8), 8);
MemoryFill8((u8 *)gUnknown_203B3E8, 0, sizeof(struct unkStruct_203B3E8));
- for(iVar2 = 0; iVar2 < 0x36; iVar2++){
+ for(iVar2 = 0; iVar2 < PASSWORD_BUFFER_SIZE; iVar2++){
gUnknown_203B3E8->PasswordEntryBuffer[iVar2] = 0;
}
@@ -103,15 +108,15 @@ bool8 CreateWonderMailMenu(void)
gUnknown_203B3E8->unk494 = 2;
gUnknown_203B3E8->unk498 = 1;
gUnknown_203B3E8->unk490 = 5; // ??? Why?
- sub_803A1C0(0x11); // 0x11 -> Display "Enter Wonder Mail Password"
+ SetWonderMailMainMenuState(PROMPT_PASSWORD_ENTRY); // -> Display "Enter Wonder Mail Password"
return 1;
}
u8 UpdateWonderMailMenu(void)
{
- switch(gUnknown_203B3E8->unk0) {
- case 4:
- sub_8039A18();
+ switch(gUnknown_203B3E8->state) {
+ case WONDER_MAIL_MAIN_SCREEN:
+ HandleWonderMailMainScreen();
break;
case EXIT_TO_MAIN_MENU: // When you exit out of the menu
return 3;
@@ -133,28 +138,28 @@ u8 UpdateWonderMailMenu(void)
sub_8039D88();
break;
case PASSWORD_SUCCESS:
- sub_8039D28();
+ HandlePasswordSuccess();
break;
- case 14:
- sub_8039D68();
+ case PREPARE_SAVE:
+ HandlePrepareSaveScreen();
break;
- case 15: // Saving adventure
- sub_8039DA4();
+ case SAVE_ADVENTURE: // Saving adventure
+ HandleSaveAdventureScreen();
break;
- case 16: // Display "Recieved Wonder Mail was added" and go back to main menu
- sub_8039DCC();
+ case WONDER_MAIL_ADDED: // Display "Recieved Wonder Mail was added" and go back to main menu
+ HandleWonderMailAddedScreen();
break;
- case 10:
+ case COMMUNICATION_ERROR:
sub_8039B3C();
break;
- case 17: // "Please enter the Wonder Mail Password" Screen
+ case PROMPT_PASSWORD_ENTRY: // "Please enter the Wonder Mail Password" Screen
sub_8039D0C();
break;
case PASSWORD_ENTRY_SCREEN: // Password Entry
- sub_8039C60();
+ HandlePasswordEntryScreen();
break;
case PASSWORD_INVALID:
- sub_8039DE8();
+ HandleInvalidPasswordMenu();
}
return 0;
}
@@ -173,25 +178,25 @@ void CleanWonderMailMenu(void)
}
}
-void sub_8039A18(void)
+void HandleWonderMailMainScreen(void)
{
- s32 local_8;
+ s32 menuAction;
- if (sub_80144A4(&local_8) == 0) {
+ if (sub_80144A4(&menuAction) == 0) {
gUnknown_203B3E8->unk24C = 10;
- switch(local_8) {
+ switch(menuAction) {
case 3:
case 4:
gUnknown_203B3E8->unk490 = 3;
- sub_803A1C0(8);
+ SetWonderMailMainMenuState(8);
break;
case 5:
gUnknown_203B3E8->unk490 = 5;
- sub_803A1C0(17);
+ SetWonderMailMainMenuState(PROMPT_PASSWORD_ENTRY);
break;
case 0:
case 8:
- sub_803A1C0(EXIT_TO_MAIN_MENU);
+ SetWonderMailMainMenuState(EXIT_TO_MAIN_MENU);
break;
}
}
@@ -199,24 +204,24 @@ void sub_8039A18(void)
void sub_8039AA8(void)
{
- s32 local_8;
+ s32 menuAction;
- if (sub_80144A4(&local_8) == 0) {
- switch(local_8){
+ if (sub_80144A4(&menuAction) == 0) {
+ switch(menuAction){
case 6:
if (gUnknown_203B3E8->unk494 == 1) {
- sub_803A1C0(2);
+ SetWonderMailMainMenuState(2);
}
else {
- sub_803A1C0(12);
+ SetWonderMailMainMenuState(12);
}
break;
case 0:
if (gUnknown_203B3E8->unk494 == 1) {
- sub_803A1C0(1);
+ SetWonderMailMainMenuState(1);
}
else {
- sub_803A1C0(4);
+ SetWonderMailMainMenuState(WONDER_MAIL_MAIN_SCREEN);
}
break;
}
@@ -225,7 +230,7 @@ void sub_8039AA8(void)
void sub_8039B14(void)
{
- sub_803A1C0(6);
+ SetWonderMailMainMenuState(6);
}
void sub_8039B20(void)
@@ -233,7 +238,7 @@ void sub_8039B20(void)
s32 local_8;
if (sub_80144A4(&local_8) == 0) {
- sub_803A1C0(9);
+ SetWonderMailMainMenuState(9);
}
}
@@ -242,7 +247,7 @@ void sub_8039B3C(void)
s32 local_8;
if (sub_80144A4(&local_8) == 0) {
- sub_803A1C0(4);
+ SetWonderMailMainMenuState(WONDER_MAIL_MAIN_SCREEN);
}
}
@@ -254,16 +259,16 @@ void sub_8039B58(void)
if (gUnknown_203B3E8->wonderMailStatus == 0) {
switch(gUnknown_203B3E8->unk24C){
case 9:
- sub_803A1C0(7);
+ SetWonderMailMainMenuState(7);
break;
case 10:
- sub_803A1C0(PASSWORD_SUCCESS);
+ SetWonderMailMainMenuState(PASSWORD_SUCCESS);
break;
}
}
else {
sub_8039BAC(gUnknown_203B3E8->wonderMailStatus);
- sub_803A1C0(10);
+ SetWonderMailMainMenuState(COMMUNICATION_ERROR);
}
}
}
@@ -305,7 +310,7 @@ void sub_8039BAC(u32 arg)
case 7:
case 8:
case 9:
- case 10:
+ case COMMUNICATION_ERROR:
case 11:
case 12:
case PASSWORD_SUCCESS:
@@ -317,36 +322,36 @@ void sub_8039BAC(u32 arg)
}
}
-void sub_8039C60(void)
+void HandlePasswordEntryScreen(void)
{
int iVar2;
iVar2 = sub_80154F0();
- MemoryFill8((u8 *)&gUnknown_203B3E8->unk38, 0, 0x30);
+ MemoryFill8(gUnknown_203B3E8->UNK38.unk38_u8, 0, sizeof(gUnknown_203B3E8->UNK38));
switch(iVar2){
case 3:
sub_80155F0();
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B3E8->unk1EC,1,1);
- if ( !sub_803D358(gUnknown_203B3E8->PasswordEntryBuffer, &gUnknown_203B3E8->unk38) || !sub_80959C0(&gUnknown_203B3E8->unk38) )
+ if ( !DecodeWonderMailPassword(gUnknown_203B3E8->PasswordEntryBuffer, &gUnknown_203B3E8->UNK38.decodedMail) || !IsValidWonderMail(&gUnknown_203B3E8->UNK38.decodedMail) )
{
// Invalid password
- sub_803A1C0(PASSWORD_INVALID);
+ SetWonderMailMainMenuState(PASSWORD_INVALID);
}
else {
// Successful password
// Copy the decoded data to another buffer?
- gUnknown_203B3E8->unk3C0 = gUnknown_203B3E8->unk38;
+ gUnknown_203B3E8->unk3C0 = gUnknown_203B3E8->UNK38.decodedMail;
gUnknown_203B3E8->unk498 = 1;
- sub_803A1C0(PASSWORD_SUCCESS);
+ SetWonderMailMainMenuState(PASSWORD_SUCCESS);
}
- break;
+ break;
case 2:
sub_80155F0();
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B3E8->unk1EC,1,1);
- sub_803A1C0(EXIT_TO_MAIN_MENU);
+ SetWonderMailMainMenuState(EXIT_TO_MAIN_MENU);
break;
}
}
@@ -356,31 +361,31 @@ void sub_8039D0C(void)
int iVar2;
if(sub_80144A4(&iVar2) == 0)
{
- sub_803A1C0(PASSWORD_ENTRY_SCREEN);
+ SetWonderMailMainMenuState(PASSWORD_ENTRY_SCREEN);
}
}
-void sub_8039D28(void)
+void HandlePasswordSuccess(void)
{
if (sub_802D0E0() == 3) {
gUnknown_203B3E8->unk498 = sub_802D178();
sub_802D184();
if (gUnknown_203B3E8->unk498 != 0) {
- sub_803A1C0(0xe);
+ SetWonderMailMainMenuState(PREPARE_SAVE);
}
else {
- sub_803A1C0(0x10);
+ SetWonderMailMainMenuState(WONDER_MAIL_ADDED);
}
}
}
-void sub_8039D68(void)
+void HandlePrepareSaveScreen(void)
{
int iVar2;
if(sub_80144A4(&iVar2) == 0)
{
- sub_803A1C0(0xF);
- PrepareSavePakWrite(0); // "Saving Adventure.."
+ SetWonderMailMainMenuState(SAVE_ADVENTURE);
+ PrepareSavePakWrite(SPECIES_NONE); // "Saving Adventure.."
}
}
@@ -389,11 +394,11 @@ void sub_8039D88(void)
int iVar2;
if(sub_80144A4(&iVar2) == 0)
{
- sub_803A1C0(8);
+ SetWonderMailMainMenuState(8);
}
}
-void sub_8039DA4(void)
+void HandleSaveAdventureScreen(void)
{
int iVar2;
if(sub_80144A4(&iVar2) == 0)
@@ -401,34 +406,34 @@ void sub_8039DA4(void)
if(!WriteSavePak())
{
FinishWriteSavePak();
- sub_803A1C0(0x10);
+ SetWonderMailMainMenuState(WONDER_MAIL_ADDED);
}
}
}
-void sub_8039DCC(void)
+void HandleWonderMailAddedScreen(void)
{
int iVar2;
if(sub_80144A4(&iVar2) == 0)
{
- sub_803A1C0(EXIT_TO_MAIN_MENU);
+ SetWonderMailMainMenuState(EXIT_TO_MAIN_MENU);
}
}
-void sub_8039DE8(void)
+void HandleInvalidPasswordMenu(void)
{
- int iVar2;
+ s32 menuAction;
// Prompt to re-enter password
- if(sub_80144A4(&iVar2) == 0)
+ if(sub_80144A4(&menuAction) == 0)
{
- switch(iVar2)
+ switch(menuAction)
{
case 6: // Yes
- sub_803A1C0(0x11);
+ SetWonderMailMainMenuState(PROMPT_PASSWORD_ENTRY);
break;
case 0: // No
- sub_803A1C0(EXIT_TO_MAIN_MENU);
+ SetWonderMailMainMenuState(EXIT_TO_MAIN_MENU);
break;
}
}
diff --git a/src/wonder_mail_pre.c b/src/wonder_mail_pre.c
index 4cf76c8..9e2e5cc 100644
--- a/src/wonder_mail_pre.c
+++ b/src/wonder_mail_pre.c
@@ -2,7 +2,6 @@
#include "file_system.h"
#include "input.h"
#include "pokemon.h"
-#include "constants/species.h"
#include "wonder_mail.h"
#include "memory.h"