Miscellaneous things

- Decomp sub_8035D80
- Clean up other funcs with unkStruct_203B480 and unkStruct_8035D94
This commit is contained in:
Seth Barberee 2023-01-01 17:40:40 -08:00
parent 31e1c409e8
commit 1de6d5eadd
13 changed files with 382 additions and 117 deletions

View File

@ -1,7 +1,29 @@
#ifndef GUARD_FRIEND_RESCUE_H
#define GUARD_FRIEND_RESCUE_H
#include "code_8094F88.h"
#include "item.h"
#include "pokemon.h"
struct WonderMailStruct_203B2C0_sub
{
struct unkStruct_203B480 mail;
struct PokemonStruct pokemon;
};
struct unkStruct_802F204
{
/* 0x0 */ u8 clientName[POKEMON_NAME_LENGTH]; // client name?
/* 0xA */ u8 name2[POKEMON_NAME_LENGTH]; // target name?
/* 0x14 */ s16 unk14; // poke species (client??)
/* 0x16 */ u8 unk16;
/* 0x18 */ s32 moneyReward;
/* 0x1C */ u8 itemRewards[3]; // MAX_ITEM_REWARDS
/* 0x1F */ u8 numItems;
/* 0x20 */ u8 friendAreaReward;
u8 fill21[0x24 - 0x21];
/* 0x24 */ u32 teamRankPtsReward;
};
struct WonderMailStruct_203B33C
{
@ -11,11 +33,12 @@ struct WonderMailStruct_203B33C
u8 passwordBuffer[0x36];
u32 unk40;
u32 status;
u16 unk48[(0xE0 - 0x48) / 2];
s16 unkE0;
u8 unkE2[0x168 - 0xE2];
s16 unk168;
u8 unk16A[0x218 - 0x16A];
struct unkStruct_203B480 unk48;
struct unkStruct_203B480 unk78;
struct WonderMailStruct_203B2C0_sub unkA8;
struct WonderMailStruct_203B2C0_sub unk130;
struct unkStruct_203B480 unk1B8;
struct unkStruct_203B480 unk1E8;
u8 unk218;
u8 padding7[3];
u32 unk21C;
@ -24,12 +47,11 @@ struct WonderMailStruct_203B33C
u8 padding6[0x6C];
u32 unk30C;
u8 padding8[0x4C];
u32 unk35C;
u8 padding5[0x5C];
struct UnkTextStruct2 unk35C[4];
struct UnkTextStruct2 unk3BC[4];
struct ItemSlot unk41C;
u32 unk420; // Is this supposed to be a File like 203B2C4?
u8 fill424[0x524 - 0x424];
u8 unk424[0x100];
s32 unk524;
u32 unk528;
u8 unk52C;
@ -38,10 +60,7 @@ struct WonderMailStruct_203B33C
u32 unk530;
u32 unk534;
s16 speciesNum; // A7 << 3
u32 unk53C;
u32 unk540; // A8 << 4
s16 unk544;
u8 filler546[0x564 - 0x546];
struct unkStruct_802F204 unk53C;
s32 unk564;
};

View File

@ -33,6 +33,16 @@ enum MainMenuScreens
MENU_NO_SCREEN_CHANGE = 0xffdc
};
struct unkStruct_8035D94
{
union {
u8 itemIndex_u8;
u32 itemIndex_u32;
} itemIndex;
u32 numItems;
};
struct MainMenuSub
{
u8 unk2C;
@ -47,8 +57,7 @@ struct MainMenu
/* 0x8 */ s32 lastMenu;
u8 padding[0x20];
/* 0x2C */ struct MainMenuSub sub;
u8 unk30;
u32 unk34;
/* 0x30 */ struct unkStruct_8035D94 unk30;
s16 unk38;
u8 unk3A;
u8 unk3B;
@ -63,5 +72,7 @@ void SetUpMenu(void);
s32 UpdateMenu(void);
void CleanUpMenu(void);
bool8 sub_80363E0(void);
struct unkStruct_8035D94 *sub_8035D94(void);
void sub_8035DA0(void);
#endif // GUARD_MAIN_MENU_H

View File

@ -55,8 +55,8 @@ struct WonderMailStruct_203B2C0
u8 unk3E;
u32 unk40;
u32 linkError;
u8 unk48[0x30];
u8 unk78[0x30];
struct unkStruct_203B480 unk48;
struct unkStruct_203B480 unk78;
struct WonderMailStruct_203B2C0_sub unkA8;
struct WonderMailStruct_203B2C0_sub unk130;
u8 fill16A[0x218 - 0x1B8];

View File

@ -40,7 +40,7 @@ const struct UnkTextStruct2 gUnknown_80E2008 = {
// Adventure Log Text
const u8 gAdventureLogHeaderText[] = "Adventure Log";
const u8 gUnknown_80E2030[] = "~95~95~95~95~95~95~95~95~95~95~95~95~95~95~95 "; // string of ???????
const u8 gAdventureLogTextPlaceholder[] = "~95~95~95~95~95~95~95~95~95~95~95~95~95~95~95 "; // string of ???????
const u8 fill_adven[] = "pksdir0";
void sub_8032084();
@ -267,7 +267,7 @@ void DisplayAdventureLog(void)
else
{
// Draw the ?????????? across the row
xxx_call_draw_string(8, sub_8013800(gAdventureLog, counter), gUnknown_80E2030, gAdventureLog->unk34, 0);
xxx_call_draw_string(8, sub_8013800(gAdventureLog, counter), gAdventureLogTextPlaceholder, gAdventureLog->unk34, 0);
}
}
sub_80073E0(gAdventureLog->unk34);

View File

@ -46,7 +46,7 @@ struct DungeonLocation *GetDungeonLocationInfo(void)
void sub_80976A8(void)
{
s32 iVar2;
s32 index;
gUnknown_203B494->unk0 = 0;
gUnknown_203B494->unk14 = 0;
@ -56,14 +56,14 @@ void sub_80976A8(void)
gUnknown_203B494->unk8 = 0;
gUnknown_203B494->unkC = 0;
for(iVar2 = 0; iVar2 < 0xE; iVar2++)
for(index = 0; index < 0xE; index++)
{
gUnknown_203B494->unk1C[iVar2] = 0;
gUnknown_203B494->unk1C[index] = 0;
}
for(iVar2 = 0; iVar2 < 0xD; iVar2++)
for(index = 0; index < 0xD; index++)
{
gUnknown_203B494->unk8C[iVar2] = 0;
gUnknown_203B494->unk8C[index] = 0;
}
}

View File

@ -1,4 +1,5 @@
#include "global.h"
#include "constants/dungeon.h"
#include "item.h"
#include "pokemon.h"
#include "text.h"
@ -40,7 +41,7 @@ extern struct UnkTextStruct2 gUnknown_80DD370;
extern u32 sub_8026F04(struct PokemonStruct *);
extern void sub_8026074(u32);
extern void PlaySound(u32);
bool8 sub_8026F38(struct PokemonStruct *r0);
bool8 CanTakePokemonHeldItem(struct PokemonStruct *r0);
extern bool8 sub_80023E4(u8);
extern struct PokemonStruct *sub_808D3F8(void);
extern struct PokemonStruct *sub_808D3BC(void);
@ -428,28 +429,28 @@ void sub_8026E08(u32 r0)
u32 sub_8026E88(struct PokemonStruct *r0)
{
u8 iVar3;
if(r0->isLeader == 0)
bool8 flag;
if(!r0->isLeader)
{
iVar3 = (r0->dungeonLocation.dungeonIndex == 0x41);
if(iVar3 != 0)
flag = (r0->dungeonLocation.dungeonIndex == DUNGEON_JOIN_LOCATION_PARTNER);
if(flag)
if(!sub_80023E4(0x8))
return 0;
return FALSE;
}
else
return 0;
return 1;
return FALSE;
return TRUE;
}
u32 sub_8026EB8(struct PokemonStruct *r0)
bool8 sub_8026EB8(struct PokemonStruct *r0)
{
u8 iVar3;
bool8 flag;
if(sub_808D3BC() != r0)
if(sub_808D3F8() != r0)
if(!r0->isLeader)
{
iVar3 = (r0->dungeonLocation.dungeonIndex == 0x41);
if(iVar3 != 0)
flag = (r0->dungeonLocation.dungeonIndex == DUNGEON_JOIN_LOCATION_PARTNER);
if(flag)
{
if(sub_80023E4(0x8))
goto check;
@ -457,9 +458,9 @@ u32 sub_8026EB8(struct PokemonStruct *r0)
else
check:
if(sub_8026F04(r0) != 3)
return 1;
return TRUE;
}
return 0;
return FALSE;
}
@ -469,13 +470,13 @@ u32 sub_8026F04(struct PokemonStruct *r0)
return 0;
else if(GetNumberOfFilledInventorySlots() < INVENTORY_SIZE)
return 1;
else if(sub_8026F38(r0))
else if(CanTakePokemonHeldItem(r0))
return 2;
else
return 3;
}
bool8 sub_8026F38(struct PokemonStruct *r0)
bool8 CanTakePokemonHeldItem(struct PokemonStruct *r0)
{
if(IsNotMoneyOrUsedTMItem(r0->heldItem.itemIndex))
{

View File

@ -83,7 +83,7 @@ extern void sub_801BEEC(s16);
extern void sub_8023B7C(u32);
extern void sub_8023DA4(void);
extern void sub_809401C(struct PokemonMove *, struct PokemonMove *); // TODO convert arg 0 to PokemonMove struct *
extern void sub_809401C(struct PokemonMove *, struct PokemonMove *);
extern void sub_801EE10(u32, s16, struct PokemonMove *, u32, u32, u32);
extern void sub_8093560(u32, struct PokemonMove *, u32 *);
extern void sub_801F808(u32 *);

View File

@ -2,15 +2,13 @@
#include "text.h"
#include "input.h"
#include "item.h"
#include "team_inventory.h"
#include "friend_rescue.h"
#include "pokemon.h"
#include "friend_rescue.h"
#include "memory.h"
extern void SetFriendRescueMenuState(u32);
extern s32 sub_80144A4(s32 *);
extern void sub_802F2C0();
extern u8 sub_809539C(u32, u32);
extern void sub_8095240(u8);
extern u32 sub_802F298();

View File

@ -1,18 +1,19 @@
#include "global.h"
#include "constants/wonder_mail.h"
#include "constants/communication_error_codes.h"
#include "constants/species.h"
#include "constants/wonder_mail.h"
#include "text.h"
#include "pokemon.h"
#include "save.h"
#include "memory.h"
#include "input.h"
#include "team_inventory.h"
#include "friend_rescue.h"
#include "item.h"
#include "code_8094F88.h"
#include "team_inventory.h"
#include "pokemon.h"
#include "friend_rescue.h"
#include "memory.h"
#include "save.h"
#include "menu.h"
#include "rescue_password_menu.h"
extern struct TeamInventory *gTeamInventory_203B460;
extern u8 *gUnknown_203B484;
@ -30,7 +31,6 @@ extern struct WonderMailStruct_203B33C *gUnknown_203B33C;
extern u8 sub_801CF14(u32);
extern u8 gUnknown_80E48A8[];
extern struct MenuItem gUnknown_80E2440[];
extern u8 gUnknown_80E49C4[];
extern u8 gUnknown_80E4704[];
extern u8 gUnknown_80E48E8[];
@ -38,7 +38,6 @@ extern u8 gUnknown_80E4928[];
extern u8 gUnknown_80E4964[];
extern u8 gUnknown_80E499C[];
extern u8 gUnknown_80E460C[];
extern struct MenuItem gUnknown_80E2290[];
extern u8 gUnknown_80E31FC[];
@ -46,13 +45,14 @@ extern u32 sub_80154F0();
extern void sub_80155F0();
extern void sub_80141B4(u8 *r0, u32, u32 *r1, u32);
extern void sub_8014248(const char *r0, u32, u32, struct MenuItem *r4, u32, u32, u32, u32 *r5, u32);
extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, s32 *);
extern u32 sub_801CA08(u32);
extern void sub_801CBB8(void);
extern void sub_801CB5C(u32);
extern void sub_8035CC0(u32 *, u32);
extern void sub_8035CC0(struct UnkTextStruct2 *, u32);
extern void sub_801B3C0(struct ItemSlot *);
extern u32 sub_801B410(void);
extern void sub_801B450(void);
@ -87,6 +87,7 @@ extern void sub_8095274(u32);
extern void sub_80951BC(struct unkStruct_203B480 *r0);
extern u8 sub_800D588(void);
extern s32 FindOpenMailSlot(void);
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
extern u8 gUnknown_80E44A4[];
extern u8 gUnknown_80E4500[];
@ -102,11 +103,255 @@ extern u8 gUnknown_80E4788[];
extern u8 gUnknown_80E47D8[];
extern u8 gUnknown_80E4480[];
extern u8 gUnknown_80E482C[];
extern u8 gUnknown_80E25F4[];
extern u8 gUnknown_80E2D7C[];
extern u8 gUnknown_80E2E20[];
extern u8 gUnknown_80E319C[];
extern u8 gUnknown_80E311C[];
extern u8 gUnknown_80E32C4[];
extern u8 gUnknown_80E4314[];
extern u8 gUnknown_80E41DC[];
extern u8 gUnknown_80E2FEC[];
extern u8 gUnknown_80E2898[];
extern u8 gUnknown_80E2B54[];
extern u8 gUnknown_80E29D0[];
extern u8 gUnknown_80E3220[];
extern u8 gUnknown_80E2A0C[];
extern u8 gUnknown_80E2610[];
extern u8 gUnknown_80E2640[];
extern u8 gUnknown_80E2680[];
extern u8 gUnknown_80E26B0[];
extern u8 gUnknown_80E26F0[];
extern u8 gUnknown_80E2728[];
extern u8 gUnknown_80E3690[];
extern u8 gUnknown_80E3818[];
extern u8 gUnknown_80E3998[];
extern u8 gUnknown_80E3B1C[];
extern u8 gUnknown_80E367C[];
extern u8 gUnknown_80E3BF8[];
extern u8 gUnknown_80E3DE4[];
extern u8 gUnknown_80E4014[];
extern u8 gUnknown_80E3E98[];
extern u8 gUnknown_80E4130[];
extern u8 gUnknown_80E2E54[];
extern u8 gUnknown_80E2EB4[];
extern u8 gUnknown_80E2DD0[];
extern u8 gUnknown_80E2FA0[];
extern u8 gUnknown_80E2F14[];
extern u8 gUnknown_80E2F44[];
extern u8 gUnknown_80E30A4[];
extern u8 gUnknown_80E2F78[];
extern u8 gUnknown_80E360C[];
extern u8 gUnknown_80E3644[];
extern u8 gUnknown_80E35E8[];
extern u8 gUnknown_80E35AC[];
extern u8 gUnknown_80E355C[];
extern u8 gUnknown_80E352C[];
extern u8 gUnknown_80E34F0[];
extern u8 gUnknown_80E34B0[];
extern u8 gUnknown_80E3430[];
extern u8 gUnknown_80E33D8[];
extern u8 gUnknown_80E339C[];
extern u8 gUnknown_80E3378[];
extern u8 gUnknown_80E331C[];
extern u8 gUnknown_80E3288[];
extern u8 gUnknown_80E3248[];
extern u8 gUnknown_80E31FC[];
extern u8 gUnknown_80E276C[];
extern u8 gUnknown_80E27A4[];
extern u8 gUnknown_80E2CD4[];
extern u8 gUnknown_80E3030[];
extern u8 gUnknown_80E3078[];
extern u8 gUnknown_80E31D8[];
extern u8 gUnknown_80E2CE8[];
extern u8 gUnknown_80E2B90[];
extern u8 gUnknown_80E2AE4[];
extern u8 gUnknown_80E2A80[];
extern u8 gUnknown_80E2AA8[];
extern u8 gUnknown_80E2D60[];
extern u8 gUnknown_80E2BE0[];
extern u8 gUnknown_80E2C48[];
extern u8 gUnknown_80E29A0[];
extern u8 gUnknown_80E2A5C[];
extern u8 gUnknown_80E2904[];
extern u8 gUnknown_80E2C94[];
extern u8 gUnknown_80E2D30[];
extern u8 gUnknown_80E296C[];
extern u8 gUnknown_80E314C[];
extern u8 gUnknown_80E2A1C[];
extern u8 gUnknown_80E2840[];
extern u8 gUnknown_80E2874[];
extern u8 gUnknown_80E317C[];
extern u8 gUnknown_80E28D8[];
extern u8 gUnknown_80E2814[];
extern u8 gUnknown_80E30D0[];
extern struct MenuItem gUnknown_80E20B8;
extern struct MenuItem gUnknown_80E2108;
extern struct MenuItem gUnknown_80E20E0;
extern struct MenuItem gUnknown_80E2068;
extern struct MenuItem gUnknown_80E24F8;
extern struct MenuItem gUnknown_80E2554;
extern struct MenuItem gUnknown_80E22F0;
extern struct MenuItem gUnknown_80E236C;
extern struct MenuItem gUnknown_80E2440;
extern struct MenuItem gUnknown_80E2470;
extern struct MenuItem gUnknown_80E24B0;
extern struct MenuItem gUnknown_80E2130;
extern struct MenuItem gUnknown_80E2190;
extern struct MenuItem gUnknown_80E21B8;
extern struct MenuItem gUnknown_80E2268;
extern struct MenuItem gUnknown_80E2218;
extern struct MenuItem gUnknown_80E2240;
extern struct MenuItem gUnknown_80E2290;
extern struct MenuItem gUnknown_80E22D0;
extern struct MenuItem gUnknown_80E234C;
extern struct MenuItem gUnknown_80E24D8;
extern struct MenuItem gUnknown_80E2458;
extern struct MenuItem gUnknown_80E2408;
extern struct MenuItem gUnknown_80E23A8;
extern struct MenuItem gUnknown_80E22B4;
extern struct UnkTextStruct2 gUnknown_80E231C;
extern struct UnkTextStruct2 gUnknown_80E23F0;
extern struct UnkTextStruct2 gUnknown_80E2334;
extern struct MenuItem gUnknown_80E25B4;
extern void nullsub_40();
extern void sub_8032828();
extern u8 sub_800D588(void);
extern void sub_8011830(void);
extern u32 sub_8030894(void);
extern void sub_8031D70(u32, u32);
extern u32 sub_8023CE8(void);
extern void sub_80922B4(u8 *buffer, u8 *string, s32 size);
extern void sub_80306A8(u32, u32, u32, u32);
extern void sub_8023868(u32, u32, u32, u32);
extern u32 sub_801D008(void);
extern void sub_8023DA4(void);
extern void sub_8023C60(void);
extern void sub_8035CF4(u32 *, u32, u32);
extern s32 sub_8037B28(u32);
extern void sub_803092C(void);
extern void sub_801CCD8(void);
extern void sub_80151C0(u32, u8 *);
extern void sub_801C8C4(u32, u32, s32 * , u32);
extern void xxx_call_start_bg_music(void);
extern u32 GetDungeonTeamRankPts(struct DungeonLocation *, u32);
extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32);
extern void sub_802F204(struct unkStruct_802F204 *, u32);
extern void nullsub_23(u32);
extern s32 sub_8037D64(u32, void *, void *);
extern s32 sub_80381F4(u32, void *, void *);
void sprintf_2(char *buffer, const char *text, ...);
extern void SetFriendRescueMenuState(u32);
extern s32 sub_80144A4(s32 *);
extern void sub_802F2C0();
extern void sub_8095240(u8);
extern u32 sub_802F298();
extern char gUnknown_202E5D8[0x50];
extern char gAvailablePokemonNames[0x50];
extern struct WonderMailStruct_203B33C *gUnknown_203B33C;
extern u8 sub_8039880(void);
extern void sub_8035300(void);
extern void sub_8035404(u32);
extern void nullsub_41(void);
extern void nullsub_42(void);
extern void nullsub_43(void);
extern void nullsub_44(void);
extern void nullsub_45(void);
extern void nullsub_46(void);
extern void nullsub_47(void);
extern void nullsub_48(void);
extern void nullsub_49(void);
extern void nullsub_50(void);
extern void nullsub_51(void);
extern void sub_8035374(void);
extern void sub_80353BC(void);
extern void sub_8033A2C(void);
extern void sub_803477C(void);
extern void sub_80347AC(void);
extern void sub_80347C8(void);
extern void sub_80347E4(void);
extern void sub_8034804(void);
extern void sub_80344C0(void);
extern void sub_8034478(void);
extern void sub_80344A0(void);
extern void sub_803418C(void);
extern void sub_8034254(void);
extern void sub_8034310(void);
extern void sub_8034378(void);
extern void sub_80343C4(void);
extern void sub_8034404(void);
extern void sub_8034500(void);
extern void sub_8034590(void);
extern void sub_803464C(void);
extern void sub_80346A8(void);
extern void sub_80346D8(void);
extern void sub_8034700(void);
extern void sub_8034720(void);
extern void sub_803473C(void);
extern void sub_8033FB4(void);
extern void sub_8034074(void);
extern void sub_8034130(void);
extern void sub_8033FE4(void);
extern void sub_8033D74(void);
extern void sub_8033D94(void);
extern void sub_8033DBC(void);
extern void sub_8033F64(void);
extern void sub_8033C54(void);
extern void sub_8033CAC(void);
extern void sub_8033D48(void);
extern void sub_8035424(void);
extern void sub_8034970(void);
extern void sub_80351E0(void);
extern void sub_8034D74(void);
extern void sub_8034EF0(void);
extern void sub_8034F38(void);
extern void sub_80352A4(void);
extern void sub_8034EC8(void);
extern void sub_8033B8C(void);
extern void sub_80339C8(void);
extern void sub_80348C4(void);
extern void sub_803482C(void);
extern void sub_80349B0(void);
extern void sub_8034A70(void);
extern void sub_8034B2C(void);
extern void sub_80349E0(void);
extern void sub_8034B88(void);
extern void sub_8034C98(void);
extern void sub_8034C38(void);
extern void sub_8034D54(void);
extern void sub_8034F18(void);
extern void sub_8034F58(void);
extern void sub_8034F88(void);
extern void sub_8035018(void);
extern void sub_8035038(void);
extern void sub_8035094(void);
extern void sub_80350F4(void);
extern void sub_803517C(void);
extern void sub_8035210(void);
extern void sub_8035430(void);
extern void sub_8034848(void);
extern void sub_803084C(void);
extern void sub_8031E10(void);
extern void sub_8023C60(void);
extern void sub_80155F0(void);
extern void sub_801CBB8(void);
extern void sub_802F2C0(void);
extern void sub_8030DE4(void);
extern void sub_802453C(void);
extern void sub_801B450(void);
void SetFriendRescueMenuState(u32 newState)
{
gUnknown_203B33C->state = newState;
@ -343,7 +588,7 @@ void nullsub_41(void)
void sub_8033CAC(void)
{
s32 temp;
u32 test_var;
u32 speciesNum;
if(sub_80144A4(&temp) == 0)
{
if(gUnknown_203B33C->status == COMMS_GOOD)
@ -358,10 +603,10 @@ void sub_8033CAC(void)
break;
case 0x12:
if(sub_800D588() != 0)
test_var = gUnknown_203B33C->unk168;
speciesNum = gUnknown_203B33C->unk130.pokemon.speciesNum;
else
test_var = gUnknown_203B33C->unkE0;
if(test_var != 0)
speciesNum = gUnknown_203B33C->unkA8.pokemon.speciesNum;
if(speciesNum != SPECIES_NONE)
SetFriendRescueMenuState(0x3F);
else
SetFriendRescueMenuState(0x40);
@ -455,7 +700,7 @@ void sub_8033DBC(void)
switch(sub_8039068(mailMode, gUnknown_203B33C->passwordBuffer, &mail))
{
case PASSWORD_ENTRY_INCORRECT_PASSWORD:
sub_8014248(gUnknown_80E48A8, 0, 6, gUnknown_80E2290, 0, 4, 0, 0, 0x101);
sub_8014248(gUnknown_80E48A8, 0, 6, &gUnknown_80E2290, 0, 4, 0, 0, 0x101);
SetFriendRescueMenuState(0x1B);
break;
case PASSWORD_ENTRY_NOT_SOS_MAIL:
@ -601,7 +846,7 @@ void sub_8034074(void)
break;
case 5:
case 8:
sub_8035CC0(&gUnknown_203B33C->unk35C, 2);
sub_8035CC0(gUnknown_203B33C->unk35C, 2);
sub_8030810(0x1);
SetFriendRescueMenuState(0x1D);
break;
@ -684,7 +929,7 @@ void sub_8034254(void)
break;
case 5:
case 8:
sub_8035CC0(&gUnknown_203B33C->unk35C, 3);
sub_8035CC0(gUnknown_203B33C->unk35C, 3);
sub_8023DA4();
SetFriendRescueMenuState(0x26);
break;
@ -879,7 +1124,7 @@ void sub_8034590(void)
break;
case 5:
case 8:
sub_8035CC0(&gUnknown_203B33C->unk35C, 2);
sub_8035CC0(gUnknown_203B33C->unk35C, 2);
sub_8030810(0x1);
SetFriendRescueMenuState(0x32);
break;
@ -1052,7 +1297,7 @@ void sub_8034848(void)
s32 temp;
if(sub_80144A4(&temp) == 0)
{
MemoryFill8((u8 *)&gUnknown_203B33C->unk41C, 0 , 4);
MemoryFill8((u8 *)&gUnknown_203B33C->unk41C, 0 , sizeof(struct ItemSlot));
gUnknown_203B33C->unk41C.itemIndex = ITEM_ID_NOTHING;
gUnknown_203B33C->unk41C.numItems = 1;
gUnknown_203B33C->unk41C.itemFlags = 0;
@ -1082,7 +1327,7 @@ void sub_80348C4(void)
s32 temp;
if(sub_80144A4(&temp) == 0)
{
MemoryFill8((u8 *)&gUnknown_203B33C->unk41C, 0 , 4);
MemoryFill8((u8 *)&gUnknown_203B33C->unk41C, 0 , sizeof(struct ItemSlot));
gUnknown_203B33C->unk41C.itemIndex = ITEM_ID_NOTHING;
gUnknown_203B33C->unk41C.numItems = 1;
gUnknown_203B33C->unk41C.itemFlags = 0;
@ -1204,7 +1449,7 @@ void sub_8034A70(void)
break;
case 5:
case 8:
sub_8035CC0(&gUnknown_203B33C->unk35C, 2);
sub_8035CC0(gUnknown_203B33C->unk35C, 2);
sub_8030810(0x1);
SetFriendRescueMenuState(0x5C);
break;
@ -1309,7 +1554,7 @@ void sub_8034C98(void)
break;
case 5:
case 8:
sub_8035CC0(&gUnknown_203B33C->unk35C, 3);
sub_8035CC0(gUnknown_203B33C->unk35C, 3);
sub_801CB5C(0x1);
SetFriendRescueMenuState(0x5F);
break;
@ -1340,7 +1585,7 @@ void sub_8034D74(void)
switch(sub_8039068(PASSWORD_ENTRY_THANK_YOU_MAIL_MODE, gUnknown_203B33C->passwordBuffer, &mail))
{
case PASSWORD_ENTRY_INCORRECT_PASSWORD:
sub_8014248(gUnknown_80E48A8, 0, 6, gUnknown_80E2440, 0, 4, 0, 0, 0x101);
sub_8014248(gUnknown_80E48A8, 0, 6, &gUnknown_80E2440, 0, 4, 0, 0, 0x101);
SetFriendRescueMenuState(0x74);
break;
case PASSWORD_ENTRY_NOT_THANK_YOU_MAIL:
@ -1444,16 +1689,16 @@ void sub_8034F58(void)
void sub_8034F88(void)
{
s32 temp;
struct unkStruct_203B480 *temp2;
struct unkStruct_203B480 *mail;
if(sub_80144A4(&temp) == 0)
{
switch(temp)
{
case 6:
temp2 = sub_8095228(gUnknown_203B33C->unk218);
mail = sub_8095228(gUnknown_203B33C->unk218);
if(gUnknown_203B33C->unk41C.itemIndex != ITEM_ID_NOTHING)
temp2->unk20 = gUnknown_203B33C->unk41C;
mail->unk20 = gUnknown_203B33C->unk41C;
gTeamInventory_203B460->teamStorage[gUnknown_203B33C->unk41C.itemIndex]--;
SetFriendRescueMenuState(0x75);
break;

View File

@ -6,6 +6,7 @@
#include "adventure_log.h"
#include "debug_menu.h"
#include "ds_menus.h"
#include "pokemon.h"
#include "friend_rescue.h"
#include "load_screen.h"
#include "main_menu.h"
@ -78,7 +79,6 @@ extern void CleanSaveMenu(void);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, s32 *);
extern u8 sub_803D0D8();
extern s32 CountMailType(u32);
extern void sub_8012D60(struct unkStruct_Menu *, const struct MenuItem *, u32, u32, u32, u32);
extern void sub_8012E04(struct unkStruct_Menu *, const struct MenuItem *, u32, u32, u32, u32);
@ -88,7 +88,6 @@ s32 sub_8035DB4(u32);
void sub_803623C(void);
bool8 SetMainMenuText();
void SetMainMenuItems();
void sub_8035DA0(void);
static const u8 sUnknown_80E5CE4[];
static const u8 sUnknown_80E5CE8[];
@ -729,33 +728,35 @@ s32 sub_8035D74(void)
return gMainMenu->unk3C;
}
// Unused
NAKED
void sub_8035D80(void *r0)
void sub_8035D80(struct unkStruct_8035D94 *item)
{
asm_unified(
"\tldr r1, _08035D90\n"
"\tldr r2, [r1]\n"
"\tldr r1, [r0, 0x4]\n"
"\tldr r0, [r0]\n"
"\tstr r0, [r2, 0x30]\n"
"\tstr r1, [r2, 0x34]\n"
"\tbx lr\n"
"\t.align 2, 0\n"
"_08035D90: .4byte gMainMenu");
#ifndef NONMATCHING
register u32 numItem asm("r1");
#else
u32 numItem;
#endif
u32 itemIndex;
struct MainMenu *preload;
preload = gMainMenu;
numItem = item->numItems;
itemIndex = item->itemIndex.itemIndex_u32;
preload->unk30.itemIndex.itemIndex_u32 = itemIndex;
preload->unk30.numItems = numItem;
}
u8 *sub_8035D94(void)
struct unkStruct_8035D94 *sub_8035D94(void)
{
return &gMainMenu->unk30;
}
void sub_8035DA0(void)
{
gMainMenu->unk30 = 0;
gMainMenu->unk34 = 0;
gMainMenu->unk30.itemIndex.itemIndex_u8 = ITEM_ID_NOTHING;
gMainMenu->unk30.numItems = 0;
}
s32 sub_8035DB4(u32 currMenu)

View File

@ -1,4 +1,5 @@
#include "global.h"
#include "constants/communication_error_codes.h"
#include "input.h"
#include "main_menu.h"
#include "item.h"
@ -11,8 +12,8 @@ struct unkStruct_203B35C
{
// size: 0x504
u32 unk0;
u32 unk4; // link status?
u32 state; // state var?
u32 linkStatus;
u32 state;
u8 fillC[0x1C - 0xC];
u32 unk1C;
u8 fill20[0x15C - 0x20];
@ -53,15 +54,6 @@ extern struct MenuItem gUnknown_80E6DF4[];
extern struct UnkTextStruct2 gUnknown_80E6D54;
extern struct MenuItem gUnknown_80E6D6C[];
struct unkStruct_8035D94
{
u8 unk0;
u8 fill[0x3];
u32 unk4;
};
extern struct unkStruct_8035D94 *sub_8035D94();
extern void sub_8037400(void);
extern void ResetSprites(u32);
extern void sub_8035CF4(u32 *,u32, u32);
@ -275,7 +267,7 @@ u32 sub_80370F0(void)
sub_80371B8();
break;
case 2:
if (((gUnknown_203B35C->unk0 < 2) && (gUnknown_203B35C->unk4 == 0)) && (sub_8037C10(0) == 0) ) {
if (((gUnknown_203B35C->unk0 < 2) && (gUnknown_203B35C->linkStatus == COMMS_GOOD)) && (sub_8037C10(0) == 0) ) {
return 0x29; // TODO: what screen is this?
}
else {
@ -296,14 +288,14 @@ u32 sub_80370F0(void)
void sub_80371B8(void)
{
struct unkStruct_8035D94 *pbVar2;
struct unkStruct_8035D94 *item;
struct MenuItem *MenuItems;
struct UnkTextStruct2 *puVar5;
puVar5 = NULL;
MenuItems = NULL;
sub_8037400();
if ((gUnknown_203B35C->unk0 < 2) &&(gUnknown_203B35C->unk4 == 0)) {
if ((gUnknown_203B35C->unk0 < 2) &&(gUnknown_203B35C->linkStatus == COMMS_GOOD)) {
if (sub_8037C10(0) != 0) {
sub_80376CC();
sub_8035CC0(gUnknown_203B35C->unk15C,0);
@ -317,7 +309,7 @@ void sub_80371B8(void)
else {
sub_80376CC();
sub_8035CC0(gUnknown_203B35C->unk15C, 0);
switch(gUnknown_203B35C->unk4) {
switch(gUnknown_203B35C->linkStatus) {
case 0:
puVar5 = &gUnknown_80E66BC;
MenuItems = gUnknown_80E66D4;
@ -372,11 +364,9 @@ void sub_80371B8(void)
}
SetMenuItems(&gUnknown_203B35C->unk1C, gUnknown_203B35C->unk15C, 0, puVar5, MenuItems, 0, 6, 0);
sub_8035CF4(&gUnknown_203B35C->unk1C, 0, 1);
// TODO clean this if statement up...
if ((((gUnknown_203B35C->unk4 != 0) &&(gUnknown_203B35C->unk0 == 0)) &&
(pbVar2 = sub_8035D94(), pbVar2->unk0 != 0)) && (pbVar2->unk4 != 0)) {
// We received something..
gTeamInventory_203B460->teamStorage[pbVar2->unk0] += pbVar2->unk4;
if ((gUnknown_203B35C->linkStatus != COMMS_GOOD) && (gUnknown_203B35C->unk0 == 0) &&
(item = sub_8035D94(), item->itemIndex.itemIndex_u8 != ITEM_ID_NOTHING) && (item->numItems != 0)) {
gTeamInventory_203B460->teamStorage[item->itemIndex.itemIndex_u8] += item->numItems;
}
}
}

View File

@ -2,6 +2,7 @@
#include "constants/communication_error_codes.h"
#include "input.h"
#include "item.h"
#include "main_menu.h"
#include "team_inventory.h"
#include "trade_items_menu.h"
#include "memory.h"
@ -81,7 +82,6 @@ const struct MenuItem gUnknown_80E618C[3] = {
extern void sub_8013AA0(u32 *);
extern void sub_8035C1C();
extern void sub_8035DA0();
extern s32 sub_80144A4(s32 *);
extern u32 sub_801CA08(u32);
extern void sub_801CBB8();

View File

@ -584,18 +584,18 @@ void sub_8028348(void)
sub_80141B4(gUnknown_80DE01C, 0 , 0, 0);
break;
case 6:
gUnknown_203B2C0->linkError = 0;
gUnknown_203B2C0->linkError = COMMS_GOOD;
sub_8011830();
linkError = sub_8037B28(gUnknown_203B2C0->unk40);
gUnknown_203B2C0->linkError = linkError;
if(linkError == 0)
if(linkError == COMMS_GOOD)
{
switch(gUnknown_203B2C0->unk40)
{
case 3:
MemoryFill8(gUnknown_203B2C0->unk48, 0, 0x30);
MemoryFill8(gUnknown_203B2C0->unk78, 0, 0x30);
gUnknown_203B2C0->linkError = sub_8037D64(gUnknown_203B2C0->unk40, gUnknown_203B2C0->unk48, gUnknown_203B2C0->unk78);
MemoryFill8((u8 *)&gUnknown_203B2C0->unk48, 0, sizeof(struct unkStruct_203B480));
MemoryFill8((u8 *)&gUnknown_203B2C0->unk78, 0, sizeof(struct unkStruct_203B480));
gUnknown_203B2C0->linkError = sub_8037D64(gUnknown_203B2C0->unk40, &gUnknown_203B2C0->unk48, &gUnknown_203B2C0->unk78);
break;
case 4:
MemoryFill8((u8 *)&gUnknown_203B2C0->unkA8, 0, sizeof(struct WonderMailStruct_203B2C0_sub));
@ -610,12 +610,12 @@ void sub_8028348(void)
gUnknown_203B2C0->linkError = sub_8037D64(gUnknown_203B2C0->unk40, &gUnknown_203B2C0->unkA8, &gUnknown_203B2C0->unk130);
break;
}
if(gUnknown_203B2C0->linkError == 0)
if(gUnknown_203B2C0->linkError == COMMS_GOOD)
{
switch(gUnknown_203B2C0->unk40)
{
case 3:
gUnknown_203B2C0->linkError = sub_80381F4(3, gUnknown_203B2C0->unk48, gUnknown_203B2C0->unk78);
gUnknown_203B2C0->linkError = sub_80381F4(3, &gUnknown_203B2C0->unk48, &gUnknown_203B2C0->unk78);
break;
case 4:
gUnknown_203B2C0->linkError = sub_80381F4(4, &gUnknown_203B2C0->unkA8, &gUnknown_203B2C0->unk130);
@ -1362,7 +1362,7 @@ void sub_80292EC(void)
{
return;
}
if(gUnknown_203B2C0->linkError == 0)
if(gUnknown_203B2C0->linkError == COMMS_GOOD)
{
switch(gUnknown_203B2C0->unk538)
{