diff --git a/include/code_801AFA4.h b/include/code_801AFA4.h index 65d959e30..39e73613f 100644 --- a/include/code_801AFA4.h +++ b/include/code_801AFA4.h @@ -16,7 +16,7 @@ typedef struct unkStruct_203B22C /* 0x4C */ s32 monsAbleToLearnMove; // number of party members able to learn move /* 0x50 */ s16 unk50[MAX_TEAM_MEMBERS]; // species IDs of each member able to learn move /* 0x58 */ s16 chosenPokemon; // species of pokemon that will learn move - /* 0x5C */ PokemonStruct1 *pokeStruct; // PokemonStruct of said pokemon + /* 0x5C */ Pokemon *pokeStruct; // PokemonStruct of said pokemon u32 unk60; /* 0x64 */ MenuItem menuItems[8]; } unkStruct_203B22C; diff --git a/include/code_801D014.h b/include/code_801D014.h index a79d975e8..a68229345 100644 --- a/include/code_801D014.h +++ b/include/code_801D014.h @@ -9,13 +9,13 @@ // size: 0x118 struct unk_203B250 { - /* 0x0 */ PokemonStruct1 *pokeStruct; + /* 0x0 */ Pokemon *pokeStruct; /* 0x4 */ s16 index; /* 0x6 */ u8 currFriendAreaLocation; // 0 when not in a friend area u8 unk7; u8 unk8; u8 unk9; - PokemonStruct1 *unkC; + Pokemon *unkC; /* 0x10 */ u32 state; /* 0x14 */ u32 menuAction; MenuStruct unk18; @@ -31,7 +31,7 @@ struct TeamBadgeData /* 0x4 */ RGB *palette; // Pics share common palette }; -bool8 sub_801D014(PokemonStruct1 *); +bool8 sub_801D014(Pokemon *); u32 sub_801D0DC(void); u32 sub_801D178(void); u8 sub_801D1D4(void); diff --git a/include/code_801EE10.h b/include/code_801EE10.h index a519b0572..4734e1de7 100644 --- a/include/code_801EE10.h +++ b/include/code_801EE10.h @@ -14,7 +14,7 @@ typedef struct unkStruct_203B270 u8 unk5; u8 unk6; u8 unk7; - /* 0x8 */ PokemonStruct1 *pokeStruct; + /* 0x8 */ Pokemon *pokeStruct; /* 0xC */ u8 isTeamLeader; /* 0x10 */ Move *moves; u8 fill14[0x1C - 0x14]; diff --git a/include/code_80227B8.h b/include/code_80227B8.h index 4e8d7658c..63a1125bf 100644 --- a/include/code_80227B8.h +++ b/include/code_80227B8.h @@ -18,7 +18,7 @@ typedef struct unkStruct_203B294 /* 0x3C */ s32 availIQSkillPostGummi; s32 unk40; // Gummi eaten flag? /* 0x44 */ Gummi gummi; - /* 0x48 */ PokemonStruct1 *pokeStruct; + /* 0x48 */ Pokemon *pokeStruct; /* 0x4C */ u32 itemIndex; /* 0x50 */ Item item; MenuStruct unk54; @@ -29,7 +29,7 @@ typedef struct unkStruct_203B294 WindowTemplates windows; } unkStruct_203B294; -bool8 sub_80227B8(PokemonStruct1 *pkmn); +bool8 sub_80227B8(Pokemon *pkmn); u32 sub_8022860(void); void sub_8022908(void); diff --git a/include/code_8094F88.h b/include/code_8094F88.h index fd0bda84f..cd7c61e50 100644 --- a/include/code_8094F88.h +++ b/include/code_8094F88.h @@ -11,7 +11,7 @@ typedef struct unkStruct_203B484 { /* 0x0 */ u32 unk0; - /* 0x4 */ PokemonStruct1 unk4; + /* 0x4 */ Pokemon unk4; } unkStruct_203B484; // size: 0x84 diff --git a/include/debug_menu4.h b/include/debug_menu4.h index 9c78bd347..f0f86e2d6 100644 --- a/include/debug_menu4.h +++ b/include/debug_menu4.h @@ -11,7 +11,7 @@ typedef struct unkStruct_203B3F8 /* 0x0 */ u32 state; s16 unk4; u16 unk6; - /* 0x8 */ PokemonStruct1 *pokemon; + /* 0x8 */ Pokemon *pokemon; /* 0xC */ u32 menuAction; MenuStruct unk10; unkStructFor8013AA0 unk60; diff --git a/include/dungeon_misc.h b/include/dungeon_misc.h index 06a836234..a72a340c6 100644 --- a/include/dungeon_misc.h +++ b/include/dungeon_misc.h @@ -31,7 +31,7 @@ OpenedFile *GetSpriteData(s32 _species); void LoadPokemonSprite(s32 _id, bool32 _ignoreDeoxys); void CloseAllSpriteFiles(void); void sub_806890C(void); -void sub_8068A84(PokemonStruct1 *pokemon); +void sub_8068A84(Pokemon *pokemon); void sub_8068BDC(bool8 a0); void sub_8068F28(void); void sub_8068F80(void); diff --git a/include/friend_area_action_menu.h b/include/friend_area_action_menu.h index b95fb01a6..6b35ea7fc 100644 --- a/include/friend_area_action_menu.h +++ b/include/friend_area_action_menu.h @@ -49,7 +49,7 @@ struct unkStruct_203B2BC u32 id; BulkItem itemToGive; BulkItem item2; - PokemonStruct1 *pokeStruct; + Pokemon *pokeStruct; bool8 isTeamLeader; u32 moveIndex; // some sort of move index u16 moveID; diff --git a/include/friend_list_menu.h b/include/friend_list_menu.h index d60b1af81..5de7fe06a 100644 --- a/include/friend_list_menu.h +++ b/include/friend_list_menu.h @@ -21,7 +21,7 @@ typedef struct unkStruct_203B2B4 u32 itemIndex; BulkItem item1; BulkItem item2; - /* 0x1C */ PokemonStruct1 *pokeStruct; + /* 0x1C */ Pokemon *pokeStruct; u32 moveIndex; // some sort of move index u16 moveID; Move moves[8]; diff --git a/include/gulpin_shop_801FB50.h b/include/gulpin_shop_801FB50.h index f087c3ac8..e6dce2655 100644 --- a/include/gulpin_shop_801FB50.h +++ b/include/gulpin_shop_801FB50.h @@ -14,7 +14,7 @@ typedef struct unkStruct_203B27C /* 0x4 */ s32 state; /* 0x8 */ u32 fallbackState; /* 0xC */ s16 speciesNum; - /* 0x10 */ PokemonStruct1 *pokeStruct; + /* 0x10 */ Pokemon *pokeStruct; /* 0x14 */ bool8 isNextMoveLinked; bool8 unk15; /* 0x16 */ bool8 isTeamLeader; diff --git a/include/iq_skill_list_menu.h b/include/iq_skill_list_menu.h index 1e8ffe465..6a0047da9 100644 --- a/include/iq_skill_list_menu.h +++ b/include/iq_skill_list_menu.h @@ -11,7 +11,7 @@ struct IQSkillListMenu { /* 0x0 */ s16 species; - /* 0x4 */ PokemonStruct1 *pokeStruct; + /* 0x4 */ Pokemon *pokeStruct; /* 0x8 */ u8 iqSkills[NUM_IQ_SKILLS]; /* 0x20 */ s32 numIQSkills; /* 0x24 */ MenuHeaderWindow s24; diff --git a/include/iq_skill_menu.h b/include/iq_skill_menu.h index 06acfe5e8..de9451bff 100644 --- a/include/iq_skill_menu.h +++ b/include/iq_skill_menu.h @@ -11,7 +11,7 @@ struct IQSkillMenu { /* 0x0 */ u32 state; /* 0x4 */ s16 species; - /* 0x8 */ PokemonStruct1 *pokeStruct; + /* 0x8 */ Pokemon *pokeStruct; /* 0xC */ u8 iqSkills[NUM_IQ_SKILLS]; /* 0x24 */ u32 menuIndex; /* 0x28 */ u8 iqSkillIndex; diff --git a/include/items.h b/include/items.h index aaa5f6dbf..212f5e592 100644 --- a/include/items.h +++ b/include/items.h @@ -97,7 +97,7 @@ bool8 IsEdibleItem(u8 id); u8 xxx_bit_lut_lookup_8091E50(u8 i0, u8 i1); bool8 IsInvalidItemReward(u8 itemID); bool8 HasGummiItem(void); -void GetGummiItemStatBoost(PokemonStruct1* pokemon, u8 id, bool8 checkBoostFlags, Gummi *gummi); +void GetGummiItemStatBoost(Pokemon* pokemon, u8 id, bool8 checkBoostFlags, Gummi *gummi); void ReadHeldItemBits(DataSerializer *, BulkItem *); void WriteHeldItemBits(DataSerializer *, BulkItem *); @@ -143,4 +143,9 @@ static inline bool8 ItemInShop(Item *item) return (item->flags & ITEM_FLAG_IN_SHOP); } +static inline bool8 BulkItemExists(BulkItem *item) +{ + return item->id != 0; +} + #endif // GUARD_ITEMS_H diff --git a/include/luminous_cave.h b/include/luminous_cave.h index 3f0cb84e3..e70e3a7a1 100644 --- a/include/luminous_cave.h +++ b/include/luminous_cave.h @@ -12,7 +12,7 @@ typedef struct LuminousCaveWork { /* 0x0 */ bool8 evolutionComplete; /* 0x4 */ EvolveStatus evolveStatus; - /* 0xC */ PokemonStruct1 *pokeStruct; + /* 0xC */ Pokemon *pokeStruct; /* 0x10 */ bool8 pokeRenamed; /* 0x14 */ u32 evoItem1_InvIndex; // inventory index of item /* 0x18 */ u32 evoItem2_InvIndex; // inventory index of item diff --git a/include/moves.h b/include/moves.h index 72f13f57a..8b29f0cc1 100644 --- a/include/moves.h +++ b/include/moves.h @@ -107,6 +107,11 @@ void sub_8094060(Move *srcMoves, Move *destMoves); void WritePoke2MovesBits(DataSerializer *, struct Moves *); void ReadPoke2MovesBits(DataSerializer *, struct Moves *); +// Note: The reason for both macros and static inlines is that some functions require the '!= 0', while others don't. +#define MOVE_FLAG_LINK_CHAIN(move)((move)->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN) +#define MOVE_FLAG_SET_LINK_CHAIN(move)((move)->moveFlags |= MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN) +#define MOVE_FLAG_CLEAR_LINK_CHAIN(move)((move)->moveFlags &= ~(MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN)) + static inline void ResetMoveFlags(Move *move) { move->moveFlags = 0; @@ -129,7 +134,7 @@ static inline bool8 MoveFlagLastUsed(Move *move) static inline bool8 MoveFlagLinkChain(Move *move) { - return (move->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN); + return MOVE_FLAG_LINK_CHAIN(move) != 0; } static inline bool8 MoveFlagDisabled(Move *move) diff --git a/include/other_menus1.h b/include/other_menus1.h index c87546e97..b5f8c79b3 100644 --- a/include/other_menus1.h +++ b/include/other_menus1.h @@ -25,9 +25,9 @@ typedef struct unkStruct_203B35C unkStruct_203B480 unk22C; unkStruct_203B480 unk25C; unkStruct_203B480 unk28C; - PokemonStruct1 unk2BC; + Pokemon unk2BC; unkStruct_203B480 unk314; - PokemonStruct1 unk344; + Pokemon unk344; u8 unk39C[0xB4]; // unkStruct_803B344? u8 unk450[0xB4]; // unkStruct_803B344? } unkStruct_203B35C; diff --git a/include/party_list_menu.h b/include/party_list_menu.h index c698012f1..3e7bf2df0 100644 --- a/include/party_list_menu.h +++ b/include/party_list_menu.h @@ -17,7 +17,7 @@ typedef struct unkStruct_203B2B8 /* 0xC */ u32 id; /* 0x10 */ BulkItem item1; /* 0x14 */ BulkItem item2; - /* 0x18 */ PokemonStruct1 *pokeStruct; + /* 0x18 */ Pokemon *pokeStruct; /* 0x1C */ bool8 isTeamLeader; /* 0x20 */ u32 moveIndex; /* 0x24 */ u16 moveID; @@ -35,7 +35,7 @@ typedef struct unkStruct_203B2B8 WindowTemplates unk220; } unkStruct_203B2B8; -bool8 CreatePartyListMenu(PokemonStruct1 *pokeStruct); +bool8 CreatePartyListMenu(Pokemon *pokeStruct); u32 sub_8025F68(void); bool8 sub_802604C(void); void CleanPartyListMenu(void); diff --git a/include/pokemon.h b/include/pokemon.h index 40c9728c3..4bab4edec 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -43,13 +43,13 @@ u8 GetBodySize(s32 index); void CopyMonsterNameToBuffer(u8 * buffer, s32 index); void CopyYellowMonsterNametoBuffer(u8 *buffer, s16 index); void CopyCyanMonsterNametoBuffer(u8 *buffer, s32 index_); -void PrintColoredPokeNameToBuffer(u8 *buffer, PokemonStruct1 *pokemon, s32 colorNum); +void PrintColoredPokeNameToBuffer(u8 *buffer, Pokemon *pokemon, s32 colorNum); void sub_808D930(u8 *buffer, s32 index); -void sub_808D9DC(u8 *buffer, PokemonStruct2 *, s32 colorNum); -void sub_808DA0C(u8 *buffer, PokemonStruct2 *); +void sub_808D9DC(u8 *buffer, DungeonMon *, s32 colorNum); +void sub_808DA0C(u8 *buffer, DungeonMon *); void PeekPokemonItem(s16 index_, BulkItem* item); void GivePokemonItem(s16 index_, BulkItem* item); -bool8 IsPokemonRenamed(PokemonStruct1* pokemon); +bool8 IsPokemonRenamed(Pokemon* pokemon); bool8 CanMonLearnMove(u16 moveID, s16 _species); u8 *GetCategoryString(s16 index); @@ -83,73 +83,75 @@ OpenedFile *OpenPokemonDialogueSpriteFile(s16 index); OpenedFile *GetDialogueSpriteDataPtr(s32 index); s32 GetUnownIndex(s16 index); void GenerateHiddenPower(HiddenPower *); -s32 GetEvolutionSequence(PokemonStruct1 *pokemon, EvolveStage *); +s32 GetEvolutionSequence(Pokemon *pokemon, EvolveStage *); s32 sub_808E400(s32 _species, s16* _a2, bool32 _bodySizeCheck, bool32 _shedinjaCheck); void sub_808E490(Move* a1, s32 species); -void xxx_pokemonstruct_to_pokemon2_808DE50(PokemonStruct2 *, PokemonStruct1 *, s32); -void WritePoke1Bits(DataSerializer *, PokemonStruct1 *pokemon); -void ReadPoke1Bits(DataSerializer *, PokemonStruct1 *); -s32 sub_808E218(unkStruct_808E218_arg *, PokemonStruct1 *pokemon); -void sub_808CFD0(PokemonStruct1 *pokemon, s16 _species, u8* name, u32 _itemID, DungeonLocation *location, u16 *moveID); -void sub_808D0D8(PokemonStruct1 *pokemon); -PokemonStruct1 *GetPlayerPokemonStruct(void); -PokemonStruct1 *sub_808D1DC(PokemonStruct1*); -PokemonStruct1 *sub_808D378(void); -PokemonStruct1 *sub_808D3BC(void); -PokemonStruct1 *sub_808D3F8(void); -PokemonStruct1 * sub_808D434(s16 species, s32 param_2); +void PokemonToDungeonMon(DungeonMon *, Pokemon *, s32); +void DungeonMonToRecruitedPokemon(s32 id, DungeonMon* src); +void DungeonMonToPokemon(Pokemon* dst, DungeonMon* src); +void WritePoke1Bits(DataSerializer *, Pokemon *pokemon); +void ReadPoke1Bits(DataSerializer *, Pokemon *); +s32 sub_808E218(unkStruct_808E218_arg *, Pokemon *pokemon); +void sub_808CFD0(Pokemon *pokemon, s16 _species, u8* name, u32 _itemID, DungeonLocation *location, u16 *moveID); +void sub_808D0D8(Pokemon *pokemon); +Pokemon *GetPlayerPokemonStruct(void); +Pokemon *sub_808D1DC(Pokemon*); +Pokemon *sub_808D378(void); +Pokemon *sub_808D3BC(void); +Pokemon *sub_808D3F8(void); +Pokemon * sub_808D434(s16 species, s32 param_2); s32 GetFriendSum_808D480(void); bool8 sub_808D4B0(void); bool8 sub_808D500(void); s32 GetUnitSum_808D544(s32 *); s32 sub_808D580(s32 *); bool8 ComparePokemonNames(s16, s16); -void PrintPokeNameToBuffer(u8 *buffer, PokemonStruct1 *pokemon); +void PrintPokeNameToBuffer(u8 *buffer, Pokemon *pokemon); void GetPokemonLevelData(LevelData* a1, s32 _id, s32 level); const u8* DecompressMoveID(const u8* a1, u16* moveID); bool8 sub_808DA44(s32, u32); -void ConvertStoryMonToPokemon(PokemonStruct1 *dst, struct StoryMonData *src); +void ConvertStoryMonToPokemon(Pokemon *dst, struct StoryMonData *src); void sub_808CE74(s16 _species, bool32 _isLeader, u8* name); -PokemonStruct1 *sub_808D278(s32 species); +Pokemon *sub_808D278(s32 species); -static inline bool8 PokemonExists(PokemonStruct1 *mon) +static inline bool8 PokemonExists(Pokemon *mon) { return (mon->flags & POKEMON_FLAG_EXISTS) != 0; } -static inline bool8 PokemonFlag1Struct2(PokemonStruct2 *mon) +static inline bool8 DungeonMonExists(DungeonMon *mon) { return (mon->flags & POKEMON_FLAG_EXISTS) != 0; } -static inline bool8 PokemonFlag2(PokemonStruct1 *mon) +static inline bool8 PokemonFlag2(Pokemon *mon) { return (mon->flags & POKEMON_FLAG_ON_TEAM) != 0; } -static inline bool8 PokemonFlag2Struct2(PokemonStruct2 *mon) +static inline bool8 PokemonFlag2Struct2(DungeonMon *mon) { return (mon->flags & POKEMON_FLAG_ON_TEAM) != 0; } -static inline void SetPokemonFlag2(PokemonStruct1 *mon) +static inline void SetPokemonFlag2(Pokemon *mon) { mon->flags |= POKEMON_FLAG_ON_TEAM; } -static inline bool8 IsMonTeamLeader(PokemonStruct1 *pokemon) +static inline bool8 IsMonTeamLeader(Pokemon *pokemon) { return pokemon->isTeamLeader != FALSE; } #include "constants/dungeon.h" -static inline bool8 IsMonPartner(PokemonStruct1 *mon) +static inline bool8 IsMonPartner(Pokemon *mon) { return (mon->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER); } -static inline bool8 IsMonLeader(PokemonStruct1 *mon) +static inline bool8 IsMonLeader(Pokemon *mon) { return (mon->dungeonLocation.id == DUNGEON_JOIN_LOCATION_LEADER); } diff --git a/include/pokemon_evolution.h b/include/pokemon_evolution.h index 0bfa1abe8..bf84836aa 100644 --- a/include/pokemon_evolution.h +++ b/include/pokemon_evolution.h @@ -23,9 +23,9 @@ typedef struct EvolveStatus /* 0x6 */ s16 targetEvolveSpecies; } EvolveStatus; -void SetMonEvolveStatus(struct PokemonStruct1 *pokemon, EvolveStatus *evolveStatus,bool8 param_3); -s32 GetMonSummaryScreenEvoStringId(PokemonStruct1 *pokemon); -PokemonStruct1 *sub_808F734(PokemonStruct1 *pokemon, s16 _species); -PokemonStruct1 *sub_808F798(PokemonStruct1 *pokemon, s16 _species); +void SetMonEvolveStatus(struct Pokemon *pokemon, EvolveStatus *evolveStatus,bool8 param_3); +s32 GetMonSummaryScreenEvoStringId(Pokemon *pokemon); +Pokemon *sub_808F734(Pokemon *pokemon, s16 _species); +Pokemon *sub_808F798(Pokemon *pokemon, s16 _species); #endif // GUARD_POKEMON_EVOLUTION_H diff --git a/include/pokemon_summary_window.h b/include/pokemon_summary_window.h index a6ce6201e..89f45cd5b 100644 --- a/include/pokemon_summary_window.h +++ b/include/pokemon_summary_window.h @@ -55,6 +55,6 @@ struct UnkInfoTabStruct }; void ShowPokemonSummaryWindow(s32 which, s32 currSubWindowId, struct MonSummaryInfo *monInfo, struct UnkInfoTabStruct *param_4, u32 windowId); -void SetMonSummaryInfo(struct MonSummaryInfo *dst, struct PokemonStruct1 *pokemon, bool8 param_3); +void SetMonSummaryInfo(struct MonSummaryInfo *dst, struct Pokemon *pokemon, bool8 param_3); #endif // GUARD_POKEMON_SUMMARY_WINDOW_H diff --git a/include/structs/str_dungeon_setup.h b/include/structs/str_dungeon_setup.h index bdba5a548..78bd6559e 100644 --- a/include/structs/str_dungeon_setup.h +++ b/include/structs/str_dungeon_setup.h @@ -27,7 +27,7 @@ typedef struct DungeonSetupInfo { DungeonSetupSubstruct sub0; // TODO: find a better name DungeonMailSeed dungeonSeed; - PokemonStruct1 mon; + Pokemon mon; u8 *unk74; Dungeon *dungeon; s16 unk7C; // Set to 5 if the dungeon was skipped (quicksave read failed) diff --git a/include/structs/str_pokemon.h b/include/structs/str_pokemon.h index 4e150ca8a..39a9054db 100644 --- a/include/structs/str_pokemon.h +++ b/include/structs/str_pokemon.h @@ -21,7 +21,7 @@ typedef struct unkPokeSubStruct_C } unkPokeSubStruct_C; // size: R=0x58 | B=0x40 -typedef struct PokemonStruct1 +typedef struct Pokemon { /* R=0x0 | B=0x0 */ u16 flags; /* R=0x2 | B=0x2 */ bool8 isTeamLeader; @@ -38,7 +38,7 @@ typedef struct PokemonStruct1 /* R=0x28 | B=0x1C */ BulkItem heldItem; /* R=0x2C | B=0x1E */ Move moves[MAX_MON_MOVES]; /* R=0x4C | B=0x36 */ u8 name[POKEMON_NAME_LENGTH]; -} PokemonStruct1; +} Pokemon; // size: 0x4 typedef struct EvolveStage @@ -47,15 +47,18 @@ typedef struct EvolveStage /* 0x2 */ u8 level; } EvolveStage; +#define UNK_RECRUITED_POKEMON_ID_55AA 0x55AA +#define UNK_RECRUITED_POKEMON_ID_5AA5 0x5AA5 + // size: R=0x64 | B=0x54 -typedef struct PokemonStruct2 +typedef struct DungeonMon { /* R=0x0 | B=0x0 */ u16 flags; // corresponds to flags in PokemonStruct. /* R=0x2 | B=0x2 */ bool8 isTeamLeader; /* R=0x3 | B=0x3 */ u8 level; /* R=0x4 | B=0x4 */ DungeonLocation dungeonLocation; /* R=0x8 | B=0x6 */ s16 IQ; - /* R=0xA | B=0x8 */ s16 unkA; + /* R=0xA | B=0x8 */ s16 recruitedPokemonId; // id of corresponding gRecruitedPokemonRef->pokemon[] /* R=0xC | B=0xA */ u16 unkC; /* R=0xE | B=0xC */ s16 speciesNum; /* R=0x10 | B=0xE */ u16 unk10; // pokeHP @@ -70,14 +73,14 @@ typedef struct PokemonStruct2 /* R=0x50 | B=0x45 */ u8 tacticIndex; /* R=0x54 | B=0x46 */ HiddenPower hiddenPower; /* R=0x58 | B=0x4A */ u8 name[POKEMON_NAME_LENGTH]; // name (other offset) -} PokemonStruct2; +} DungeonMon; // size: R=0x90E8 | B=0x6990 typedef struct RecruitedMon { - /* R=0x0 | B=0x0 */ PokemonStruct1 pokemon[NUM_MONSTERS]; - /* R=0x8DF8 | B=0x6740 */ PokemonStruct2 pokemon2[4]; - /* R=0x8F88 | B=0x6890 */ PokemonStruct1 team[MAX_TEAM_MEMBERS]; + /* R=0x0 | B=0x0 */ Pokemon pokemon[NUM_MONSTERS]; + /* R=0x8DF8 | B=0x6740 */ DungeonMon dungeonTeam[MAX_TEAM_MEMBERS]; + /* R=0x8F88 | B=0x6890 */ Pokemon team[MAX_TEAM_MEMBERS]; } RecruitedMon; // size: 0x4 diff --git a/include/structs/str_wonder_mail.h b/include/structs/str_wonder_mail.h index f63dcdcf8..b73bdcb40 100644 --- a/include/structs/str_wonder_mail.h +++ b/include/structs/str_wonder_mail.h @@ -70,7 +70,7 @@ typedef struct unkStruct_203B480 typedef struct WonderMailStruct_203B2C0_sub { /* 0x0 */ unkStruct_203B480 mail; - /* 0x30 */ PokemonStruct1 pokemon; + /* 0x30 */ Pokemon pokemon; } WonderMailStruct_203B2C0_sub; #endif // GUARD_STR_WONDER_MAIL_H diff --git a/include/world_map.h b/include/world_map.h index ca9cc9582..3c42be4ff 100644 --- a/include/world_map.h +++ b/include/world_map.h @@ -42,7 +42,7 @@ struct WorldMapInfo { DungeonLocation startLocation; DungeonSetupSubstruct unk4; - PokemonStruct1 mon; + Pokemon mon; u8 unk6C; u8 unk6D[WORLD_MAP_UNK_6D_COUNT]; }; diff --git a/src/code_801AFA4.c b/src/code_801AFA4.c index 1daa33ba0..8586c6fce 100644 --- a/src/code_801AFA4.c +++ b/src/code_801AFA4.c @@ -192,7 +192,7 @@ static s32 GetNumMonsAbleToLearnItemMove(void) s32 numMons; s32 i; s32 team[MAX_TEAM_MEMBERS]; - PokemonStruct1 *preload; + Pokemon *preload; length = sub_808D580(team); sUnknown_203B22C->monsAbleToLearnMove = 0; @@ -214,7 +214,7 @@ static s32 GetNumMonsAbleToLearnItemMove(void) UNUSED static bool8 sub_801B374(u8 id) { u16 moveID; - PokemonStruct1 *pokeStruct; + Pokemon *pokeStruct; s32 i; pokeStruct = &gRecruitedPokemonRef->pokemon[0]; diff --git a/src/code_801D014.c b/src/code_801D014.c index 89c1dc6e7..233b532a9 100644 --- a/src/code_801D014.c +++ b/src/code_801D014.c @@ -55,10 +55,10 @@ static void sub_801D85C(void); static void sub_801D878(void); static void sub_801D894(void); -bool8 sub_801D014(PokemonStruct1 *a0) +bool8 sub_801D014(Pokemon *a0) { s32 index; - PokemonStruct1 *pokemon; + Pokemon *pokemon; struct unk_203B250 *preload; ResetUnusedInputStruct(); @@ -139,8 +139,6 @@ u32 sub_801D0DC(void) u32 sub_801D178(void) { - PokemonStruct1 *pokeStruct; - if (sUnknown_203B250->unk9 != 0) return 2; @@ -151,17 +149,15 @@ u32 sub_801D178(void) return 1; if (sUnknown_203B250->unkC != GetPlayerPokemonStruct()) - goto _ret4; + return 4; if ((s16) sub_80A7AE8(7) < 0) return 0; - pokeStruct = sub_808D3F8(); - if (!(pokeStruct->flags >> 1 & 1)) -_ret4: - return 4; + if (PokemonFlag2(sub_808D3F8())) + return 0; - return 0; + return 4; } u8 sub_801D1D4(void) diff --git a/src/code_801EE10.c b/src/code_801EE10.c index 7d13af7ff..be7dbc0ef 100644 --- a/src/code_801EE10.c +++ b/src/code_801EE10.c @@ -215,7 +215,7 @@ _134: { move = &gUnknown_203B270->moves[index2]; if ((move->moveFlags & MOVE_FLAG_EXISTS)) { - if ((move->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN)) { + if (MOVE_FLAG_LINK_CHAIN(move)) { gUnknown_203B270->fill14[index2] = 1; } else { @@ -318,7 +318,7 @@ void sub_801F280(bool8 param_1) BufferDefaultMoveName(gFormatBuffer_Items[0],move,&uStack_30); y = GetMenuEntryYCoord(&gUnknown_203B270->input,i); - linkChain = MoveFlagLinkChain(move); + linkChain = MOVE_FLAG_LINK_CHAIN(move); x = !linkChain ? 0x8 : 0xD; if (!linkChain && i != 0) { AddUnderScoreHighlight(gUnknown_203B270->unk50,0xc,y - 2,0x78,7); diff --git a/src/code_801F428.c b/src/code_801F428.c index 096a80931..3ba1fe1f1 100644 --- a/src/code_801F428.c +++ b/src/code_801F428.c @@ -14,7 +14,7 @@ struct unkStruct_203B274 { // size: 0x3e8 - PokemonStruct1 *pokeStruct; + Pokemon *pokeStruct; unkStruct_808E218_arg *unk4; unkStruct_808E218_arg unk8; MenuHeaderWindow s348; diff --git a/src/code_80227B8.c b/src/code_80227B8.c index 0cfc473f8..2addcc82f 100644 --- a/src/code_80227B8.c +++ b/src/code_80227B8.c @@ -31,7 +31,7 @@ static void sub_80230E8(void); static void sub_8023104(void); static void sub_8023120(void); -bool8 sub_80227B8(PokemonStruct1 *pkmn) +bool8 sub_80227B8(Pokemon *pkmn) { ResetUnusedInputStruct(); ShowWindows(NULL, TRUE, TRUE); diff --git a/src/code_8024458.c b/src/code_8024458.c index e812f85cc..f265ff922 100644 --- a/src/code_8024458.c +++ b/src/code_8024458.c @@ -88,7 +88,7 @@ static void sub_80245D0(void) static void sub_8024604(void) { - PokemonStruct1 *pokeStruct; + Pokemon *pokeStruct; struct MonSummaryInfo *iVar3; sUnknown_203B2AC->unk34[0] = 2; diff --git a/src/code_8066D04.c b/src/code_8066D04.c index 1250f4c2b..112f96eae 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -730,12 +730,12 @@ void sub_8067794(Entity *entity, Entity *targetEntity, s32 a2) stringPtr2 = gUnknown_80F913C; teamIndex = info2->teamIndex; if (teamIndex >= 0) { - PokemonStruct2 *pokeStruct = &gRecruitedPokemonRef->pokemon2[teamIndex]; - if (sub_806A564(pokeStruct->unkA)) { + DungeonMon *pokeStruct = &gRecruitedPokemonRef->dungeonTeam[teamIndex]; + if (sub_806A564(pokeStruct->recruitedPokemonId)) { stringPtr1 = gUnknown_80F9114; stringPtr2 = gMonDisappointedAndLeft; } - else if (sub_806A58C(pokeStruct->unkA)) { + else if (sub_806A58C(pokeStruct->recruitedPokemonId)) { if (IsMakuhitaTrainingMaze()) { stringPtr1 = gSendMonBackQ; } diff --git a/src/code_8069E0C.c b/src/code_8069E0C.c index 9ea72b09f..a4a123d07 100644 --- a/src/code_8069E0C.c +++ b/src/code_8069E0C.c @@ -68,7 +68,7 @@ extern void sub_806A6E8(Entity *entity); s32 sub_806C444(s32 species, s32 level); s32 sub_806C488(s32 species, s32 level, s32 categoryIndex); s32 sub_806C4D4(s32 species, s32 level, s32 categoryIndex); -bool8 sub_806B8CC(s16 _species, s32 x, s32 y, PokemonStruct2 *monPtr, Entity **a4, bool32 _a5, u32 _a6); +bool8 sub_806B8CC(s16 _species, s32 x, s32 y, DungeonMon *monPtr, Entity **a4, bool32 _a5, u32 _a6); void sub_806BC68(bool8 a0, Entity *entity, struct unkStruct_806B7F8 *structPtr, DungeonPos *pos); void ResetMonEntityData(EntityInfo *, bool8 a1); void sub_806C264(s32 teamIndex, EntityInfo *entInfo); @@ -217,9 +217,9 @@ UNUSED static s32 sub_806B09C(SpawnPokemonData *unkPtr, bool8 a1) SpawnPokemonData *loopPtr; for (i = 0, unk2Field = unkPtr->randNum, loopPtr = unkPtr; i < MAX_TEAM_MEMBERS; i++) { - PokemonStruct2 *monStructPtr = &gRecruitedPokemonRef->pokemon2[i]; + DungeonMon *monStructPtr = &gRecruitedPokemonRef->dungeonTeam[i]; - if (PokemonFlag1Struct2(monStructPtr) && PokemonFlag2Struct2(monStructPtr)) + if (DungeonMonExists(monStructPtr) && PokemonFlag2Struct2(monStructPtr)) { for (j = 0; j < count; j++) { if (ExtractSpeciesIndex(&unkPtr[j]) == monStructPtr->speciesNum) @@ -253,21 +253,21 @@ extern const DungeonPos gUnknown_80F4598[]; void sub_806B168(void) { s32 count; - PokemonStruct2 *monPtrs[MAX_TEAM_MEMBERS]; - PokemonStruct2 *monPtrs2[MAX_TEAM_MEMBERS]; // Leader and partner? + DungeonMon *monPtrs[MAX_TEAM_MEMBERS]; + DungeonMon *monPtrs2[MAX_TEAM_MEMBERS]; // Leader and partner? u8 playerSpawnRoomId = GetTile(gDungeon->playerSpawn.x, gDungeon->playerSpawn.y)->room; s32 i; for (i = 0; i < MAX_TEAM_MEMBERS; i++) { - PokemonStruct2 *currMonPtr = &gRecruitedPokemonRef->pokemon2[i]; + DungeonMon *currMonPtr = &gRecruitedPokemonRef->dungeonTeam[i]; currMonPtr->unkC = i; } // Populate monPtrs count = 0; for (i = 0; i < MAX_TEAM_MEMBERS; i++) { - PokemonStruct2 *currMonPtr = &gRecruitedPokemonRef->pokemon2[i]; - if (PokemonFlag1Struct2(currMonPtr) && PokemonFlag2Struct2(currMonPtr)) { + DungeonMon *currMonPtr = &gRecruitedPokemonRef->dungeonTeam[i]; + if (DungeonMonExists(currMonPtr) && PokemonFlag2Struct2(currMonPtr)) { monPtrs[count++] = currMonPtr; } } @@ -278,7 +278,7 @@ void sub_806B168(void) // Populate monPtrs2 count = 0; for (i = 0; i < MAX_TEAM_MEMBERS; i++) { - PokemonStruct2 *currMonPtr = monPtrs[i]; + DungeonMon *currMonPtr = monPtrs[i]; if (currMonPtr != NULL && currMonPtr->isTeamLeader) { monPtrs[i] = NULL; monPtrs2[count++] = currMonPtr; @@ -287,7 +287,7 @@ void sub_806B168(void) if (gDungeon->unk644.unk18 == 0) { for (i = 0; i < MAX_TEAM_MEMBERS; i++) { - PokemonStruct2 *currMonPtr = monPtrs[i]; + DungeonMon *currMonPtr = monPtrs[i]; if (currMonPtr != NULL && currMonPtr->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER) { monPtrs[i] = NULL; monPtrs2[count++] = currMonPtr; @@ -296,7 +296,7 @@ void sub_806B168(void) } for (i = 0; i < MAX_TEAM_MEMBERS; i++) { - PokemonStruct2 *currMonPtr = monPtrs[i]; + DungeonMon *currMonPtr = monPtrs[i]; if (monPtrs[i] != NULL) { monPtrs[i] = NULL; monPtrs2[count++] = currMonPtr; @@ -308,7 +308,7 @@ void sub_806B168(void) // Do something else for (i = 0; i < MAX_TEAM_MEMBERS; i++) { - PokemonStruct2 *currMonPtr = monPtrs2[i]; + DungeonMon *currMonPtr = monPtrs2[i]; if (currMonPtr != NULL) { DungeonPos unkPosition; @@ -362,14 +362,14 @@ void sub_806B404(void) { Entity *leader; s32 i; - PokemonStruct2 *monPtrs[MAX_TEAM_MEMBERS]; + DungeonMon *monPtrs[MAX_TEAM_MEMBERS]; u8 roomId; DungeonPos pos; s32 count = 0; for (i = 0; i < MAX_TEAM_MEMBERS; i++) { - PokemonStruct2 *currMonPtr = &gRecruitedPokemonRef->pokemon2[i]; - if (PokemonFlag1Struct2(currMonPtr) && PokemonFlag2Struct2(currMonPtr) && currMonPtr->unkA == 0x55AA) { + DungeonMon *currMonPtr = &gRecruitedPokemonRef->dungeonTeam[i]; + if (DungeonMonExists(currMonPtr) && PokemonFlag2Struct2(currMonPtr) && currMonPtr->recruitedPokemonId == UNK_RECRUITED_POKEMON_ID_55AA) { monPtrs[count++] = currMonPtr; break; } @@ -395,10 +395,10 @@ void sub_806B404(void) bool8 skipNextLoop; const Tile *tile; s32 j; - PokemonStruct2 *currMonPtr = monPtrs[i]; + DungeonMon *currMonPtr = monPtrs[i]; - if (currMonPtr != NULL && PokemonFlag1Struct2(currMonPtr) && PokemonFlag2Struct2(currMonPtr) && currMonPtr->unkA == 0x55AA) { - currMonPtr->unkA = 0x5AA5; + if (currMonPtr != NULL && DungeonMonExists(currMonPtr) && PokemonFlag2Struct2(currMonPtr) && currMonPtr->recruitedPokemonId == UNK_RECRUITED_POKEMON_ID_55AA) { + currMonPtr->recruitedPokemonId = UNK_RECRUITED_POKEMON_ID_5AA5; skipNextLoop = FALSE; j = 0; while (1) { @@ -561,7 +561,7 @@ Entity* sub_806B7F8(struct unkStruct_806B7F8 *structPtr, bool8 a1) return entity; } -bool8 sub_806B8CC(s16 _species, s32 x, s32 y, PokemonStruct2 *monPtr, Entity **a4, bool32 _a5, u32 _a6) +bool8 sub_806B8CC(s16 _species, s32 x, s32 y, DungeonMon *monPtr, Entity **a4, bool32 _a5, u32 _a6) { s32 i; DungeonPos unkPosition; @@ -964,7 +964,7 @@ void sub_806C1D8(void) void sub_806C264(s32 teamIndex, EntityInfo *entInfo) { s32 i; - PokemonStruct2 *monPtr = &gRecruitedPokemonRef->pokemon2[teamIndex]; + DungeonMon *monPtr = &gRecruitedPokemonRef->dungeonTeam[teamIndex]; monPtr->unk10 = entInfo->HP; monPtr->unk12 = entInfo->maxHPStat; @@ -987,8 +987,8 @@ void sub_806C264(s32 teamIndex, EntityInfo *entInfo) monPtr->belly = entInfo->belly; monPtr->maxBelly = entInfo->maxBelly; monPtr->itemSlot = entInfo->heldItem; - if (monPtr->unkA == 0x55AA) { - monPtr->unkA = 0x5AA5; + if (monPtr->recruitedPokemonId == UNK_RECRUITED_POKEMON_ID_55AA) { + monPtr->recruitedPokemonId = UNK_RECRUITED_POKEMON_ID_5AA5; } } diff --git a/src/code_806FDF4.c b/src/code_806FDF4.c index eeeca0db9..b1dc4c941 100644 --- a/src/code_806FDF4.c +++ b/src/code_806FDF4.c @@ -127,7 +127,7 @@ bool8 sub_806F660(Entity *pokemon, Entity *target) } for (i = 0; i < 4; i++) { - if (!PokemonFlag1Struct2(&gRecruitedPokemonRef->pokemon2[i])) + if (!DungeonMonExists(&gRecruitedPokemonRef->dungeonTeam[i])) break; } if (i == 4) { @@ -236,7 +236,7 @@ bool8 sub_806FA5C(Entity *entity1, Entity *entity2, struct unkStruct_8069D4C *pa u8 friendArea; bool8 flag; Entity *leader; - PokemonStruct2 *pokeStruct2; + DungeonMon *pokeStruct2; int pokeIndex; Entity *local_2c; s32 iVar2; @@ -261,7 +261,7 @@ bool8 sub_806FA5C(Entity *entity1, Entity *entity2, struct unkStruct_8069D4C *pa { for(pokeIndex = 0; pokeIndex < MAX_TEAM_MEMBERS; pokeIndex++) { - if (!(PokemonFlag1Struct2(&gRecruitedPokemonRef->pokemon2[pokeIndex]))) + if (!(DungeonMonExists(&gRecruitedPokemonRef->dungeonTeam[pokeIndex]))) break; } @@ -275,7 +275,7 @@ bool8 sub_806FA5C(Entity *entity1, Entity *entity2, struct unkStruct_8069D4C *pa flag = TRUE; } sub_8068FE0(entity2,500,entity1); - pokeStruct2 = &gRecruitedPokemonRef->pokemon2[pokeIndex]; + pokeStruct2 = &gRecruitedPokemonRef->dungeonTeam[pokeIndex]; pokeStruct2->flags = 3; pokeStruct2->isTeamLeader = FALSE; pokeStruct2->level = param_3->level; @@ -283,7 +283,7 @@ bool8 sub_806FA5C(Entity *entity1, Entity *entity2, struct unkStruct_8069D4C *pa SetDefaultIQSkills(&pokeStruct2->IQSkills,FALSE); pokeStruct2->hiddenPower = param_3->hiddenPower; pokeStruct2->tacticIndex = 0; - pokeStruct2->unkA = -1; + pokeStruct2->recruitedPokemonId = -1; pokeStruct2->unkC = pokeIndex; pokeStruct2->speciesNum = param_3->id; (pokeStruct2->dungeonLocation) = gDungeon->unk644.dungeonLocation; @@ -363,7 +363,7 @@ bool8 sub_806FD18(Entity *param_1) for (i = 0; i < 4; i++) { - if (!(PokemonFlag1Struct2(&gRecruitedPokemonRef->pokemon2[i]))) + if (!(DungeonMonExists(&gRecruitedPokemonRef->dungeonTeam[i]))) break; } @@ -385,7 +385,7 @@ bool8 sub_806FDF4(Entity *entity1,Entity *entity2,Entity **entityPtr) u8 friendArea; bool8 flag; Entity *leader; - PokemonStruct2 *pokeStruct2; + DungeonMon *pokeStruct2; int index; struct unkStruct_8069D4C local_74; Entity *local_2c; @@ -399,7 +399,7 @@ bool8 sub_806FDF4(Entity *entity1,Entity *entity2,Entity **entityPtr) for(index = 0; index < MAX_TEAM_MEMBERS; index++) { - if (((u8)(index[gRecruitedPokemonRef->pokemon2].flags) & 1) == 0) break; + if (!DungeonMonExists(&gRecruitedPokemonRef->dungeonTeam[index])) break; } if (index == MAX_TEAM_MEMBERS) { @@ -407,7 +407,7 @@ bool8 sub_806FDF4(Entity *entity1,Entity *entity2,Entity **entityPtr) } else { friendArea = GetFriendArea(local_74.id); - pokeStruct2 = &gRecruitedPokemonRef->pokemon2[index]; + pokeStruct2 = &gRecruitedPokemonRef->dungeonTeam[index]; pokeStruct2->flags = 3; pokeStruct2->isTeamLeader = FALSE; pokeStruct2->level = local_74.level; @@ -415,7 +415,7 @@ bool8 sub_806FDF4(Entity *entity1,Entity *entity2,Entity **entityPtr) SetDefaultIQSkills(&pokeStruct2->IQSkills,FALSE); pokeStruct2->hiddenPower = local_74.hiddenPower; pokeStruct2->tacticIndex = 0; - pokeStruct2->unkA = -1; + pokeStruct2->recruitedPokemonId = -1; pokeStruct2->unkC = index; pokeStruct2->speciesNum = local_74.id; pokeStruct2->dungeonLocation = gDungeon->unk644.dungeonLocation; diff --git a/src/code_8094F88.c b/src/code_8094F88.c index f97824340..80fc7bbfa 100644 --- a/src/code_8094F88.c +++ b/src/code_8094F88.c @@ -327,7 +327,7 @@ u32 sub_80954B4(void) u32 sub_80954CC(u8 *buffer, u32 size) { DataSerializer backup; - PokemonStruct1 *mon; + Pokemon *mon; s32 i; InitBitReader(&backup, buffer, size); @@ -339,7 +339,7 @@ u32 sub_80954CC(u8 *buffer, u32 size) ReadBits(&backup, &gUnknown_203B484->unk0, 32); mon = &gUnknown_203B484->unk4; - memset(mon, 0, sizeof(PokemonStruct1)); + memset(mon, 0, sizeof(Pokemon)); ReadBits(&backup, &mon->flags, 2); ReadBits(&backup, &mon->isTeamLeader, 1); @@ -373,7 +373,7 @@ u32 sub_80954CC(u8 *buffer, u32 size) u32 sub_8095624(u8 *buffer, u32 b) { DataSerializer backup; - PokemonStruct1 *mon; + Pokemon *mon; s32 i; InitBitWriter(&backup, buffer, b); diff --git a/src/code_80958E8.c b/src/code_80958E8.c index 61d075860..5450afcdd 100644 --- a/src/code_80958E8.c +++ b/src/code_80958E8.c @@ -1007,7 +1007,7 @@ s32 CountJobsinDungeon(u8 dungeon) return count; } -bool8 sub_8096A08(u8 dungeon, PokemonStruct1 *pokemon) +bool8 sub_8096A08(u8 dungeon, Pokemon *pokemon) { WonderMail *mail; s32 index; diff --git a/src/code_809A560.c b/src/code_809A560.c index 9f837f135..0dcecffbe 100644 --- a/src/code_809A560.c +++ b/src/code_809A560.c @@ -48,9 +48,9 @@ void sub_809A62C(void); void sub_809A7EC(void); void sub_809A83C(s16 index); extern void sub_80A8EC0(u8 *, u32); -PokemonStruct1 *sub_808D3BC(void); -PokemonStruct1 *sub_808D3F8(void); -PokemonStruct1 *sub_80A8D54(s16); +Pokemon *sub_808D3BC(void); +Pokemon *sub_808D3F8(void); +Pokemon *sub_80A8D54(s16); void sub_80A7DDC(s16 *, s16*); u8 IsStarterMonster(s16); s16 sub_80A8BFC(s32); @@ -333,7 +333,7 @@ bool8 sub_809A8B8(s32 param_1, s32 param_2) sub_80A7DDC(&local_28,&local_26); if (local_28 >= 10 && local_28 <= 29) { - PokemonStruct1 *pPVar6 = sub_80A8D54(local_28); + Pokemon *pPVar6 = sub_80A8D54(local_28); if (pPVar6 == NULL) { uVar9 = '\0'; } diff --git a/src/debug_menu1.c b/src/debug_menu1.c index 43d618f9d..b0270230e 100644 --- a/src/debug_menu1.c +++ b/src/debug_menu1.c @@ -139,7 +139,7 @@ static void sub_803A3BC(void) item = ITEM_CHERI_BERRY; for (i = 0; i < 300; i++) { - PokemonStruct1 pokemon; + Pokemon pokemon; u16 moves[MAX_MON_MOVES]; u8 buffer[20]; DungeonLocation dungeonLoc = {.id = DUNGEON_MT_THUNDER_PEAK, .floor = 16}; diff --git a/src/debug_menu3.c b/src/debug_menu3.c index 5bf54736d..eca526f58 100644 --- a/src/debug_menu3.c +++ b/src/debug_menu3.c @@ -213,20 +213,13 @@ static void sub_803ABAC(void) static bool8 sub_803ABC8(void) { - PokemonStruct1 *mon; s32 i; - s32 mask; - for (i = 0, mask = 1; i < NUM_MONSTERS; i++) { - // Some check was optimized out. Needed for matching. Thanks kaz - if (i) { - u8 unk = -unk; - } + for (i = 0; i < NUM_MONSTERS; i++) { + Pokemon *mon = &gRecruitedPokemonRef->pokemon[i]; - mon = &gRecruitedPokemonRef->pokemon[i]; - - if ((mask & mon->flags) != 0 - && ((mon->flags >> 1) & mask) != 0 + if (PokemonExists(mon) + && PokemonFlag2(mon) && sUnknown_203B3F4->friendArea == GetFriendArea(mon->speciesNum)) return FALSE; diff --git a/src/dungeon_8067A80.c b/src/dungeon_8067A80.c index 915da7921..35129c925 100644 --- a/src/dungeon_8067A80.c +++ b/src/dungeon_8067A80.c @@ -41,12 +41,12 @@ extern void sub_80684C4(void); void sub_8045064(void); extern void sub_8068344(void); bool8 CanSubMenuItemBeChosen(s32 param_1); -void sub_8068310(s32 n, PokemonStruct1 **monPtrs); -void sub_8067F00(u8 a0, PokemonStruct1 **a1, s32 a2, s32 a3, s32 a4); +void sub_8068310(s32 n, Pokemon **monPtrs); +void sub_8067F00(u8 a0, Pokemon **a1, s32 a2, s32 a3, s32 a4); void sub_8083D1C(void); void PlayDungeonConfirmationSE(void); void PlayDungeonCancelSE(void); -void sub_806806C(PokemonStruct1 *a0); +void sub_806806C(Pokemon *a0); void CreateDungeonMenuSubWindow(WindowTemplates *a0, s32 a1); extern const s32 gUnknown_8106E80[]; @@ -92,7 +92,7 @@ static const WindowTemplates gUnknown_8106DC8 = { } }; -void sub_8067A80(u8 a0, s32 a1, s32 a2, PokemonStruct1 **a3) +void sub_8067A80(u8 a0, s32 a1, s32 a2, Pokemon **a3) { s32 i; s32 r10; @@ -331,7 +331,7 @@ void sub_8067A80(u8 a0, s32 a1, s32 a2, PokemonStruct1 **a3) } } -void sub_8067F00(u8 a0, PokemonStruct1 **a1, s32 a2_, s32 a3, s32 a4) +void sub_8067F00(u8 a0, Pokemon **a1, s32 a2_, s32 a3, s32 a4) { s32 i, y; s32 a2; @@ -385,7 +385,7 @@ void sub_8067F00(u8 a0, PokemonStruct1 **a1, s32 a2_, s32 a3, s32 a4) sub_80073E0(1); } -void sub_806806C(PokemonStruct1 *a0) +void sub_806806C(Pokemon *a0) { struct MonSummaryInfo unkStruct; struct UnkInfoTabStruct var_C8; @@ -516,7 +516,7 @@ void sub_806806C(PokemonStruct1 *a0) sub_803EAF0(0, NULL); } -void sub_8068310(s32 n, PokemonStruct1 **monPtrs) +void sub_8068310(s32 n, Pokemon **monPtrs) { s32 i; s32 counter = 0; diff --git a/src/dungeon_ai_attack.c b/src/dungeon_ai_attack.c index c41ca3859..4858f4544 100644 --- a/src/dungeon_ai_attack.c +++ b/src/dungeon_ai_attack.c @@ -153,7 +153,7 @@ void ChooseAIMove(Entity *pokemon) { break; } - if (i != 0 && !(move->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN)) + if (i != 0 && !MOVE_FLAG_LINK_CHAIN(move)) { if (linkedMoveStartIndex + 1 < i && minPP <= 1 && linkedMoveStartIndex + 1 <= i) { diff --git a/src/dungeon_ai_item_weight.c b/src/dungeon_ai_item_weight.c index edfa6a92c..e2a1b478e 100644 --- a/src/dungeon_ai_item_weight.c +++ b/src/dungeon_ai_item_weight.c @@ -13,8 +13,8 @@ u32 GetAIUseItemProbability(Entity *targetPokemon, Item *item, u32 itemTargetFla { EntityInfo *pokemonInfo = GetEntInfo(targetPokemon); s32 itemWeight = 0; - bool8 targetOther = itemTargetFlags & 1; - u16 targetAlly = (itemTargetFlags >> 1) & 1; + bool8 targetOther = (itemTargetFlags & 1) != 0; + u16 targetAlly = (itemTargetFlags & 2) != 0; s32 i; Move *move; Move *move2; diff --git a/src/dungeon_damage.c b/src/dungeon_damage.c index be137655d..f3b137fbf 100644 --- a/src/dungeon_damage.c +++ b/src/dungeon_damage.c @@ -513,7 +513,7 @@ static bool8 HandleDealingDamageInternal(Entity *attacker, Entity *target, struc } } else { - PokemonStruct2 *recruitedMon = &gRecruitedPokemonRef->pokemon2[targetData->teamIndex]; + DungeonMon *recruitedMon = &gRecruitedPokemonRef->dungeonTeam[targetData->teamIndex]; if (targetData->isTeamLeader || (targetData->joinedAt.id == DUNGEON_JOIN_LOCATION_PARTNER && gDungeon->unk644.unk18 == 0)) { DisplayDungeonLoggableMessageTrue(attacker, gUnknown_80F9CEC[r8]); } @@ -523,7 +523,7 @@ static bool8 HandleDealingDamageInternal(Entity *attacker, Entity *target, struc else if (targetData->monsterBehavior == BEHAVIOR_RESCUE_TARGET) { DisplayDungeonLoggableMessageTrue(attacker, gUnknown_80F9DF0[r8]); } - else if (sub_806A58C(recruitedMon->unkA)) { + else if (sub_806A58C(recruitedMon->recruitedPokemonId)) { if (gDungeon->unk644.unk19 != 0) { DisplayDungeonLoggableMessageTrue(attacker, gUnknown_80F9D8C[r8]); } diff --git a/src/dungeon_generation_fixed.c b/src/dungeon_generation_fixed.c index f89c68f16..1d1d51a91 100644 --- a/src/dungeon_generation_fixed.c +++ b/src/dungeon_generation_fixed.c @@ -1059,7 +1059,7 @@ void sub_8051E7C(Entity *pokemon) } } -static inline bool8 MonHasItem(PokemonStruct1 *mon) +static inline bool8 MonHasItem(Pokemon *mon) { return (mon->heldItem.id != 0); } @@ -1076,8 +1076,8 @@ static bool8 sub_805210C(u8 itemId) } for (i = 0; i < MAX_TEAM_MEMBERS; i++) { - if (PokemonFlag1Struct2(&gRecruitedPokemonRef->pokemon2[i]) && ItemExists(&gRecruitedPokemonRef->pokemon2[i].itemSlot)) { - if (gRecruitedPokemonRef->pokemon2[i].itemSlot.id == itemId) + if (DungeonMonExists(&gRecruitedPokemonRef->dungeonTeam[i]) && ItemExists(&gRecruitedPokemonRef->dungeonTeam[i].itemSlot)) { + if (gRecruitedPokemonRef->dungeonTeam[i].itemSlot.id == itemId) return TRUE; } } diff --git a/src/dungeon_info.c b/src/dungeon_info.c index a56d930a1..7ccec393b 100644 --- a/src/dungeon_info.c +++ b/src/dungeon_info.c @@ -2566,7 +2566,7 @@ u32 sub_809034C(u8 dungeonIndex, s32 speciesId_, u8 *buffer, bool32 requireHm_, sp_0xf0 = 0; for (i = 0; i < NUM_MONSTERS; i++) { - struct PokemonStruct1 *mon = &gRecruitedPokemonRef->pokemon[i]; + struct Pokemon *mon = &gRecruitedPokemonRef->pokemon[i]; if (PokemonExists(mon) && PokemonFlag2(mon)) { if (mon->heldItem.id != 0) { sp_0xf0++; @@ -2610,7 +2610,7 @@ u32 sub_809034C(u8 dungeonIndex, s32 speciesId_, u8 *buffer, bool32 requireHm_, } bodySize = GetBodySize(speciesId); for (i = 0; i < NUM_MONSTERS; i++) { - struct PokemonStruct1 *mon = &gRecruitedPokemonRef->pokemon[i]; + struct Pokemon *mon = &gRecruitedPokemonRef->pokemon[i]; if (PokemonExists(mon) && PokemonFlag2(mon)){ bodySize += GetBodySize(mon->speciesNum); @@ -2654,7 +2654,7 @@ u32 sub_809034C(u8 dungeonIndex, s32 speciesId_, u8 *buffer, bool32 requireHm_, if (otherSpeciesId == NUM_MONSTERS) { for (otherSpeciesId = 0; otherSpeciesId < NUM_MONSTERS; otherSpeciesId++) { - struct PokemonStruct1 *mon = &gRecruitedPokemonRef->pokemon[otherSpeciesId]; + struct Pokemon *mon = &gRecruitedPokemonRef->pokemon[otherSpeciesId]; if (PokemonExists(mon) && PokemonFlag2(mon) && (GetPokemonType(mon->speciesNum,0) == TYPE_WATER || GetPokemonType(mon->speciesNum,1) == TYPE_WATER)) @@ -2725,7 +2725,7 @@ static bool8 TeamMonWithMove(u16 moveID) s32 speciesId, moveIndex; for (speciesId = 0; speciesId < NUM_MONSTERS; speciesId++) { - PokemonStruct1 *pokeStruct = &gRecruitedPokemonRef->pokemon[speciesId]; + Pokemon *pokeStruct = &gRecruitedPokemonRef->pokemon[speciesId]; if (PokemonExists(pokeStruct) && PokemonFlag2(pokeStruct)) { for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++) { Move *move = &pokeStruct->moves[moveIndex]; diff --git a/src/dungeon_item_action.c b/src/dungeon_item_action.c index 4c343a4b2..6bc1c0df2 100644 --- a/src/dungeon_item_action.c +++ b/src/dungeon_item_action.c @@ -797,7 +797,7 @@ bool8 sub_8048A68(Entity *param_1,Item *item) Entity *entity; EntityInfo *pEVar6; s32 index; - PokemonStruct2 *pokemon; + DungeonMon *pokemon; if ((item->flags & ITEM_FLAG_STICKY)) { DisplayDungeonMessage(0,*gItemStickyDoesntWorkText,1); @@ -821,8 +821,8 @@ bool8 sub_8048A68(Entity *param_1,Item *item) flag = FALSE; else { - pokemon = &gRecruitedPokemonRef->pokemon2[pEVar6->teamIndex]; - if (sub_806A538(pokemon->unkA)) + pokemon = &gRecruitedPokemonRef->dungeonTeam[pEVar6->teamIndex]; + if (sub_806A538(pokemon->recruitedPokemonId)) flag = FALSE; } diff --git a/src/dungeon_logic.c b/src/dungeon_logic.c index 89c8d8873..960ad3267 100644 --- a/src/dungeon_logic.c +++ b/src/dungeon_logic.c @@ -418,7 +418,7 @@ void SetMessageArgument_2(u8 *buffer, EntityInfo *param_2, s32 colorNum) } else { - sub_808D9DC(buffer, &gRecruitedPokemonRef->pokemon2[param_2->teamIndex],colorNum); + sub_808D9DC(buffer, &gRecruitedPokemonRef->dungeonTeam[param_2->teamIndex],colorNum); } } } @@ -433,7 +433,7 @@ void sub_8070968(u8 *buffer, EntityInfo *entityInfo, s32 colorNum) CopyCyanMonsterNametoBuffer(buffer, entityInfo->apparentID); } else { - sub_808D9DC(buffer, &gRecruitedPokemonRef->pokemon2[entityInfo->teamIndex], colorNum); + sub_808D9DC(buffer, &gRecruitedPokemonRef->dungeonTeam[entityInfo->teamIndex], colorNum); } } @@ -458,7 +458,7 @@ void sub_80709C8(u8 *buffer, EntityInfo *entityInfo) } else { - sub_808DA0C(buffer, &gRecruitedPokemonRef->pokemon2[entityInfo->teamIndex]); + sub_808DA0C(buffer, &gRecruitedPokemonRef->dungeonTeam[entityInfo->teamIndex]); } } } diff --git a/src/dungeon_main.c b/src/dungeon_main.c index 30935e048..6d97aa3da 100644 --- a/src/dungeon_main.c +++ b/src/dungeon_main.c @@ -1111,12 +1111,12 @@ void sub_805F02C(void) r8->isTeamLeader = TRUE; leaderInfo->isTeamLeader = FALSE; for (i = 0; i < 4; i++) { - PokemonStruct2 *mon = &gRecruitedPokemonRef->pokemon2[i]; - PokemonStruct1 *r5 = NULL; + DungeonMon *mon = &gRecruitedPokemonRef->dungeonTeam[i]; + Pokemon *r5 = NULL; if ((u8)mon->flags & 1) { - if (!sub_806A538(mon->unkA)) { - r5 = &gRecruitedPokemonRef->pokemon[mon->unkA]; + if (!sub_806A538(mon->recruitedPokemonId)) { + r5 = &gRecruitedPokemonRef->pokemon[mon->recruitedPokemonId]; } if (i == r8->teamIndex) { mon->isTeamLeader = TRUE; diff --git a/src/dungeon_menu_moves.c b/src/dungeon_menu_moves.c index bd124cde2..b22220e0a 100644 --- a/src/dungeon_menu_moves.c +++ b/src/dungeon_menu_moves.c @@ -468,7 +468,7 @@ static void ShowMovesMenuWindows(Entity *entity, EntityInfo *entInfo, bool8 redC gDungeonMenu.menuIndex = 0; } } - else if (MoveFlagLinkChain(move)) { + else if MOVE_FLAG_LINK_CHAIN(move) { arg5[i] = 1; } } @@ -503,7 +503,7 @@ static void PrintMoveNamesOnWindow(s32 count, Entity *entity, Move *moves, s32 w movStruct.redColor = (CanMonsterUseMove(entity, move, TRUE) == FALSE); BufferMoveName(gFormatBuffer_Items[0], move, &movStruct); y = GetMenuEntryYCoord(&gDungeonMenu, i); - if (MoveFlagLinkChain(move)) { + if MOVE_FLAG_LINK_CHAIN(move) { x = 13; } else { @@ -611,7 +611,7 @@ static void ShowMovesInfoWindow(Move *moves, s32 firstMoveId, s32 movesCount) for (i = firstMoveId + 1; i < movesCount; i++) { if (!MoveFlagExists(&moves[i])) break; - if (!MoveFlagLinkChain(&moves[i])) + if (!MOVE_FLAG_LINK_CHAIN(&moves[i])) break; count++; } @@ -787,7 +787,7 @@ void ActionLinkMoves(ActionContainer *a0) for (id++; id < MAX_MON_MOVES; id++) { if (!MoveFlagExists(&entInfo->moves.moves[id])) break; - if (!MoveFlagLinkChain(&entInfo->moves.moves[id])) + if (!MOVE_FLAG_LINK_CHAIN(&entInfo->moves.moves[id])) break; if (++linkedCount >= MAX_MON_MOVES) break; @@ -823,7 +823,7 @@ static bool8 IsMoveLinkedAndNotCharging(EntityInfo *entInfo, s32 moveId_) if (!MoveFlagExists(move)) break; - if (!MoveFlagLinkChain(move)) { + if (!MOVE_FLAG_LINK_CHAIN(move)) { ret = TRUE; break; } @@ -848,7 +848,7 @@ void ActionDelinkMoves(ActionContainer *a0, bool8 showMsg) id++; for (linkedCount = 0; linkedCount < MAX_MON_MOVES && id < MAX_MON_MOVES; id++, linkedCount++) { Move *move = &entInfo->moves.moves[id]; - if (MoveFlagLinkChain(move)) { + if MOVE_FLAG_LINK_CHAIN(move) { move->moveFlags &= ~(MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN); unlInked = TRUE; } @@ -879,7 +879,7 @@ static bool8 IsMoveLinked(EntityInfo *entInfo, s32 id) for (linkedCount = 0; linkedCount < MAX_MON_MOVES && id < MAX_MON_MOVES; linkedCount++) { Move *move = &entInfo->moves.moves[id]; - if (MoveFlagLinkChain(move)) { + if MOVE_FLAG_LINK_CHAIN(move) { linkFound = TRUE; id++; } @@ -899,7 +899,7 @@ static void sub_8063E30(Move *moves, s32 id) id++; for (i = 0; i < 8 && id < 8; id++, i++) { - if (MoveFlagLinkChain(&moves[id])) { + if (MOVE_FLAG_LINK_CHAIN(&moves[id])) { moves[id].moveFlags &= ~(MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN); } else { @@ -1050,8 +1050,8 @@ bool8 sub_8063E70(Entity *entity, Move *moves, bool8 showYesNoBox, bool8 allowBP Move *move = &moves[sChosenMoveSlotId]; s32 nextMoveId = sChosenMoveSlotId + 1; - if (nextMoveId < 8 && MoveFlagExists(&moves[nextMoveId])) { - linked = MoveFlagLinkChain(&moves[nextMoveId]) != 0; + if (nextMoveId < 8 && MoveFlagExists(&moves[nextMoveId]) && MOVE_FLAG_LINK_CHAIN(&moves[nextMoveId])) { + linked = TRUE; } BufferMoveName(gFormatBuffer_Items[0], move, NULL); yesNoAnswer = DisplayDungeonYesNoMessage(NULL, (!linked) ? gUnknown_80FDF70 : gUnknown_80FDF00, FALSE); @@ -1066,7 +1066,7 @@ bool8 sub_8063E70(Entity *entity, Move *moves, bool8 showYesNoBox, bool8 allowBP Move *move = &moves[i]; if (!MoveFlagExists(move)) break; - if (!(move->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN)) + if (!MOVE_FLAG_LINK_CHAIN(move)) break; ResetMoveFlags(move); @@ -1156,7 +1156,7 @@ static bool8 sub_8064358(Move *moves, s32 id) for (linkedCount = 0; linkedCount < 8 && id < 8; linkedCount++) { Move *move = &moves[id]; - if (MoveFlagLinkChain(move)) { + if MOVE_FLAG_LINK_CHAIN(move) { linkFound = TRUE; id++; } diff --git a/src/dungeon_menu_recruitment.c b/src/dungeon_menu_recruitment.c index a7e846ba1..5cc0f8efa 100644 --- a/src/dungeon_menu_recruitment.c +++ b/src/dungeon_menu_recruitment.c @@ -351,12 +351,12 @@ static void SetRecruitableMons(struct MonRecruitList *tabsData) } if (!monIsRecruited) { - for (k = 0; k < 4; k++) { - PokemonStruct2 *mon = &gRecruitedPokemonRef->pokemon2[k]; - if (PokemonFlag1Struct2(mon) && !sub_806A564(mon->unkA) && mon->speciesNum == speciesId) + for (k = 0; k < MAX_TEAM_MEMBERS; k++) { + DungeonMon *mon = &gRecruitedPokemonRef->dungeonTeam[k]; + if (DungeonMonExists(mon) && !sub_806A564(mon->recruitedPokemonId) && mon->speciesNum == speciesId) break; } - if (k != 4) { + if (k != MAX_TEAM_MEMBERS) { monIsRecruited = TRUE; monNameColor = 6; } diff --git a/src/dungeon_menu_team.c b/src/dungeon_menu_team.c index 59cbc58bf..70d3949de 100644 --- a/src/dungeon_menu_team.c +++ b/src/dungeon_menu_team.c @@ -385,7 +385,7 @@ static void PrintOnDungeonTeamMenu(struct UnkFieldTeamMenuStruct *a0, WindowTemp s32 color = (a0->unk14[i] != 0) ? 6 : 2; sub_8070968(gFormatBuffer_Monsters[0], monInfo, color); - if (sub_806A538(gRecruitedPokemonRef->pokemon2[monInfo->teamIndex].unkA)) { + if (sub_806A538(gRecruitedPokemonRef->dungeonTeam[monInfo->teamIndex].recruitedPokemonId)) { if (monInfo->HP <= monInfo->maxHPStat / 4) { InlineStrcpy(gFormatBuffer_Monsters[1], _("{HEART_RED_TINY}")); } @@ -459,8 +459,8 @@ static void AddTeamSubMenuOptions(struct UnkFieldTeamMenuStruct *a0) r5 = FALSE; } else { - PokemonStruct2 *mon = &gRecruitedPokemonRef->pokemon2[monInfo->teamIndex]; - if (sub_806A538(mon->unkA)) { + DungeonMon *mon = &gRecruitedPokemonRef->dungeonTeam[monInfo->teamIndex]; + if (sub_806A538(mon->recruitedPokemonId)) { r5 = FALSE; } } @@ -1581,7 +1581,7 @@ static void PrintMoveNamesOnBottomWindow(Entity *entity) movStruct.redColor = (CanMonsterUseMove(entity, move, TRUE) == FALSE); BufferMoveName(gFormatBuffer_Items[0], move, &movStruct); - if (MoveFlagLinkChain(move)) { + if MOVE_FLAG_LINK_CHAIN(move) { x = 13; } else { diff --git a/src/dungeon_message.c b/src/dungeon_message.c index 66855bc2e..708b1e11a 100644 --- a/src/dungeon_message.c +++ b/src/dungeon_message.c @@ -393,7 +393,7 @@ void DisplayDungeonDialogue(const struct DungeonDialogueStruct *dialogueInfo) if (leader != NULL) { EntityInfo *leaderInfo = GetEntInfo(leader); - PokemonStruct2 *monStruct2 = &gRecruitedPokemonRef->pokemon2[leaderInfo->teamIndex]; + DungeonMon *monStruct2 = &gRecruitedPokemonRef->dungeonTeam[leaderInfo->teamIndex]; sub_808DA0C(gFormatBuffer_Monsters[0], monStruct2); leaderId = leaderInfo->apparentID; @@ -405,7 +405,7 @@ void DisplayDungeonDialogue(const struct DungeonDialogueStruct *dialogueInfo) if (partner != NULL) { EntityInfo *partnerInfo = GetEntInfo(partner); - PokemonStruct2 *monStruct2 = &gRecruitedPokemonRef->pokemon2[partnerInfo->teamIndex]; + DungeonMon *monStruct2 = &gRecruitedPokemonRef->dungeonTeam[partnerInfo->teamIndex]; sub_808DA0C(gFormatBuffer_Monsters[1], monStruct2); partnerId = partnerInfo->apparentID; diff --git a/src/dungeon_misc.c b/src/dungeon_misc.c index caa1163d5..08e8869f4 100644 --- a/src/dungeon_misc.c +++ b/src/dungeon_misc.c @@ -53,10 +53,8 @@ extern void sub_806C264(s32 teamIndex, EntityInfo *entInfo); extern bool8 sub_806A58C(s16 r0); extern void sub_8084E00(Entity *entity, u8 param_2, u8 param_3); extern void sub_8078084(Entity * pokemon); -extern void xxx_pokemon2_to_pokemonstruct_index_808DF2C(s32 a1, PokemonStruct2* a2); -extern void sub_808DFDC(s32 a1, PokemonStruct2* a2); -extern void xxx_pokemon2_to_pokemonstruct_808DF44(PokemonStruct1*, PokemonStruct2*); -extern void sub_8067A80(u8 a0, s32 a1, s32 a2, PokemonStruct1 **a3); +extern void sub_808DFDC(s32 a1, DungeonMon* a2); +extern void sub_8067A80(u8 a0, s32 a1, s32 a2, Pokemon **a3); extern bool8 sub_8070F80(Entity * pokemon, s32 direction); extern s32 sub_806A4DC(EntityInfo *info); extern void sub_8042900(Entity *r0); @@ -133,8 +131,8 @@ void LoadDungeonPokemonSprites(void) } for(index = 0; index < 4; index++) { - PokemonStruct2 *ptr = &gRecruitedPokemonRef->pokemon2[index]; - if(PokemonFlag1Struct2(ptr)) + DungeonMon *ptr = &gRecruitedPokemonRef->dungeonTeam[index]; + if(DungeonMonExists(ptr)) if(PokemonFlag2Struct2(ptr)) LoadPokemonSprite(ptr->speciesNum, FALSE); } @@ -142,7 +140,7 @@ void LoadDungeonPokemonSprites(void) { for(index = 0; index < MAX_TEAM_MEMBERS; index++) { - PokemonStruct1 *ptr = &gRecruitedPokemonRef->team[index]; + Pokemon *ptr = &gRecruitedPokemonRef->team[index]; if(PokemonExists(ptr)) LoadPokemonSprite(ptr->speciesNum, TRUE); } @@ -232,45 +230,45 @@ void sub_806890C(void) index = 0; for (speciesId = 0; speciesId < NUM_MONSTERS; speciesId++) { - PokemonStruct1 stack; - PokemonStruct1 *pokeStruct = &gRecruitedPokemonRef->pokemon[speciesId]; + Pokemon stack; + Pokemon *pokeStruct = &gRecruitedPokemonRef->pokemon[speciesId]; if (PokemonExists(pokeStruct) && PokemonFlag2(pokeStruct)) { - xxx_pokemonstruct_index_to_pokemon2_808DE30(&gRecruitedPokemonRef->pokemon2[index],speciesId); + xxx_pokemonstruct_index_to_pokemon2_808DE30(&gRecruitedPokemonRef->dungeonTeam[index],speciesId); if (IsLevelResetTo1(gDungeon->unk644.dungeonLocation.id)) { struct DungeonLocation dungeonLoc = {.id = DUNGEON_TINY_WOODS, .floor = 1}; sub_808CFD0(&stack,pokeStruct->speciesNum,0,0,&dungeonLoc,0); - gRecruitedPokemonRef->pokemon2[index].level = stack.level; - gRecruitedPokemonRef->pokemon2[index].IQ = stack.IQ; - gRecruitedPokemonRef->pokemon2[index].unk10 = stack.pokeHP; - gRecruitedPokemonRef->pokemon2[index].unk12 = stack.pokeHP; - gRecruitedPokemonRef->pokemon2[index].offense.att[0] = stack.offense.att[0]; - gRecruitedPokemonRef->pokemon2[index].offense.att[1] = stack.offense.att[1]; - gRecruitedPokemonRef->pokemon2[index].offense.def[0] = stack.offense.def[0]; - gRecruitedPokemonRef->pokemon2[index].offense.def[1] = stack.offense.def[1]; - gRecruitedPokemonRef->pokemon2[index].currExp = stack.currExp; - gRecruitedPokemonRef->pokemon2[index].IQSkills = stack.IQSkills; - gRecruitedPokemonRef->pokemon2[index].tacticIndex = stack.tacticIndex; - CopyAndResetMoves(&gRecruitedPokemonRef->pokemon2[index].moves, stack.moves); + gRecruitedPokemonRef->dungeonTeam[index].level = stack.level; + gRecruitedPokemonRef->dungeonTeam[index].IQ = stack.IQ; + gRecruitedPokemonRef->dungeonTeam[index].unk10 = stack.pokeHP; + gRecruitedPokemonRef->dungeonTeam[index].unk12 = stack.pokeHP; + gRecruitedPokemonRef->dungeonTeam[index].offense.att[0] = stack.offense.att[0]; + gRecruitedPokemonRef->dungeonTeam[index].offense.att[1] = stack.offense.att[1]; + gRecruitedPokemonRef->dungeonTeam[index].offense.def[0] = stack.offense.def[0]; + gRecruitedPokemonRef->dungeonTeam[index].offense.def[1] = stack.offense.def[1]; + gRecruitedPokemonRef->dungeonTeam[index].currExp = stack.currExp; + gRecruitedPokemonRef->dungeonTeam[index].IQSkills = stack.IQSkills; + gRecruitedPokemonRef->dungeonTeam[index].tacticIndex = stack.tacticIndex; + CopyAndResetMoves(&gRecruitedPokemonRef->dungeonTeam[index].moves, stack.moves); } - gRecruitedPokemonRef->pokemon2[index].unkC = index; + gRecruitedPokemonRef->dungeonTeam[index].unkC = index; index++; if (index == 4) break; } } for (; index < 4; index++) { - gRecruitedPokemonRef->pokemon2[index].flags = 0; + gRecruitedPokemonRef->dungeonTeam[index].flags = 0; } } -void sub_8068A84(PokemonStruct1 *pokemon) +void sub_8068A84(Pokemon *pokemon) { s32 i, totalBodySize; totalBodySize = 0; for (i = 0; i < MAX_TEAM_MEMBERS; i++) { - PokemonStruct2 *ptr = &gRecruitedPokemonRef->pokemon2[i]; - if (PokemonFlag1Struct2(ptr)) { + DungeonMon *ptr = &gRecruitedPokemonRef->dungeonTeam[i]; + if (DungeonMonExists(ptr)) { totalBodySize += GetBodySize(ptr->speciesNum); } } @@ -290,9 +288,9 @@ void sub_8068A84(PokemonStruct1 *pokemon) } else { for (i = 0; i < MAX_TEAM_MEMBERS; i++) { - PokemonStruct2 *monPtr = &gRecruitedPokemonRef->pokemon2[i]; - if (!PokemonFlag1Struct2(monPtr)) { - xxx_pokemonstruct_to_pokemon2_808DE50(monPtr,pokemon,0x55aa); + DungeonMon *monPtr = &gRecruitedPokemonRef->dungeonTeam[i]; + if (!DungeonMonExists(monPtr)) { + PokemonToDungeonMon(monPtr,pokemon,0x55aa); monPtr->flags |= POKEMON_FLAG_EXISTS; if (monPtr->IQ < 0x1a) { monPtr->IQ = 0x1a; @@ -337,8 +335,8 @@ static inline bool8 IsUnkDungeon(u8 joinedDungeon) void sub_8068BDC(bool8 a0) { bool8 spArr[NUM_FRIEND_AREAS]; - PokemonStruct1 *monPointers[21]; - PokemonStruct1 mon1Structs[MAX_TEAM_MEMBERS]; + Pokemon *monPointers[21]; + Pokemon mon1Structs[MAX_TEAM_MEMBERS]; u16 arr2[18]; FriendAreaCapacity areaCapacity; s32 i, j, id; @@ -348,8 +346,8 @@ void sub_8068BDC(bool8 a0) } for (id = 0; id < MAX_TEAM_MEMBERS; id++) { - PokemonStruct2 *monPtr = &gRecruitedPokemonRef->pokemon2[id]; - if (PokemonFlag1Struct2(monPtr) && !sub_806A564(monPtr->unkA)) { + DungeonMon *monPtr = &gRecruitedPokemonRef->dungeonTeam[id]; + if (DungeonMonExists(monPtr) && !sub_806A564(monPtr->recruitedPokemonId)) { Item *monItem = &monPtr->itemSlot; if (ItemExists(monItem) && monItem->id == ITEM_POKE) { AddToTeamMoney(GetMoneyValue(monItem)); @@ -359,18 +357,18 @@ void sub_8068BDC(bool8 a0) } for (id = 0; id < MAX_TEAM_MEMBERS; id++) { - PokemonStruct2 *monPtr = &gRecruitedPokemonRef->pokemon2[id]; - if (PokemonFlag1Struct2(monPtr) && !sub_806A564(monPtr->unkA)) { + DungeonMon *monPtr = &gRecruitedPokemonRef->dungeonTeam[id]; + if (DungeonMonExists(monPtr) && !sub_806A564(monPtr->recruitedPokemonId)) { if (IS_CASTFORM_FORM_MONSTER(monPtr->speciesNum)) { monPtr->speciesNum = MONSTER_CASTFORM; } - if (sub_806A58C(monPtr->unkA)) { + if (sub_806A58C(monPtr->recruitedPokemonId)) { if (IsLevelResetTo1(gDungeon->unk644.dungeonLocation.id)) { - sub_808DFDC(monPtr->unkA, monPtr); + sub_808DFDC(monPtr->recruitedPokemonId, monPtr); } else { - xxx_pokemon2_to_pokemonstruct_index_808DF2C(monPtr->unkA, monPtr); + DungeonMonToRecruitedPokemon(monPtr->recruitedPokemonId, monPtr); } } else { @@ -393,10 +391,10 @@ void sub_8068BDC(bool8 a0) } for (id = 0; id < MAX_TEAM_MEMBERS; id++) { - PokemonStruct2 *monPtr = &gRecruitedPokemonRef->pokemon2[id]; - if (PokemonFlag1Struct2(monPtr) && sub_806A5A4(monPtr->unkA) && GetFriendArea(monPtr->speciesNum) == friendAreaId && a0) { + DungeonMon *monPtr = &gRecruitedPokemonRef->dungeonTeam[id]; + if (DungeonMonExists(monPtr) && sub_806A5A4(monPtr->recruitedPokemonId) && GetFriendArea(monPtr->speciesNum) == friendAreaId && a0) { monPointers[j] = &mon1Structs[id]; - xxx_pokemon2_to_pokemonstruct_808DF44(monPointers[j], monPtr); + DungeonMonToPokemon(monPointers[j], monPtr); monPointers[j]->flags |= POKEMON_FLAG_x4000; monPointers[j]->unkC[0].level = 0; monPointers[j]->unkC[1].level = 0; @@ -418,7 +416,7 @@ void sub_8068BDC(bool8 a0) while (1) { sub_8067A80(friendAreaId, j - areaCapacity.maxPokemon, j, monPointers); for (id = 0; id < j; id++) { - PokemonStruct1 *monPtr = monPointers[id]; + Pokemon *monPtr = monPointers[id]; if (PokemonExists(monPtr) && (monPtr->flags & POKEMON_FLAG_x8000)) { if (IsUnkDungeon(monPtr->dungeonLocation.id)) { break; @@ -452,12 +450,12 @@ void sub_8068F28(void) s32 i; for (i = 0; i < MAX_TEAM_MEMBERS; i++) { - PokemonStruct2 *monStruct2Ptr = &gRecruitedPokemonRef->pokemon2[i]; - if (PokemonFlag1Struct2(monStruct2Ptr)) { - if (sub_806A564(monStruct2Ptr->unkA)) { + DungeonMon *monStruct2Ptr = &gRecruitedPokemonRef->dungeonTeam[i]; + if (DungeonMonExists(monStruct2Ptr)) { + if (sub_806A564(monStruct2Ptr->recruitedPokemonId)) { monStruct2Ptr->flags = 0; } - else if (sub_806A538(monStruct2Ptr->unkA)) { + else if (sub_806A538(monStruct2Ptr->recruitedPokemonId)) { monStruct2Ptr->flags = 0; } } @@ -481,12 +479,12 @@ void sub_8068F80(void) } } -static inline void ClearOnTeamFlag(PokemonStruct1 *mon) +static inline void ClearOnTeamFlag(Pokemon *mon) { mon->flags &= ~(POKEMON_FLAG_ON_TEAM); } -static inline void ClearMonItemId(PokemonStruct1 *mon) +static inline void ClearMonItemId(Pokemon *mon) { mon->heldItem.id = ITEM_NOTHING; } @@ -587,14 +585,14 @@ void sub_8068FE0(Entity *entity, s32 param_2, Entity *param_3) } } if (partnerInfo != NULL) { - PokemonStruct2 *partnerStruct = &gRecruitedPokemonRef->pokemon2[partnerInfo->teamIndex]; + DungeonMon *partnerStruct = &gRecruitedPokemonRef->dungeonTeam[partnerInfo->teamIndex]; sub_806C264(partnerInfo->teamIndex,partnerInfo); - if (sub_806A58C(partnerStruct->unkA) != 0) { + if (sub_806A58C(partnerStruct->recruitedPokemonId) != 0) { if (IsLevelResetTo1(gDungeon->unk644.dungeonLocation.id) == 0) { - xxx_pokemon2_to_pokemonstruct_index_808DF2C(partnerStruct->unkA, partnerStruct); + DungeonMonToRecruitedPokemon(partnerStruct->recruitedPokemonId, partnerStruct); } if (!IsMakuhitaTrainingMaze()) { - ClearMonItemId(&gRecruitedPokemonRef->pokemon[partnerStruct->unkA]); + ClearMonItemId(&gRecruitedPokemonRef->pokemon[partnerStruct->recruitedPokemonId]); } } partnerStruct->flags = 0; @@ -633,16 +631,16 @@ void sub_8068FE0(Entity *entity, s32 param_2, Entity *param_3) } if (!entInfo->isNotTeamMember) { - PokemonStruct2 *mon2Ptr = &gRecruitedPokemonRef->pokemon2[entInfo->teamIndex]; + DungeonMon *mon2Ptr = &gRecruitedPokemonRef->dungeonTeam[entInfo->teamIndex]; sub_806C264(entInfo->teamIndex,entInfo); - if (sub_806A58C(mon2Ptr->unkA) != 0) { + if (sub_806A58C(mon2Ptr->recruitedPokemonId) != 0) { bool8 uVar10; if (IsLevelResetTo1(gDungeon->unk644.dungeonLocation.id) == 0) { - xxx_pokemon2_to_pokemonstruct_index_808DF2C(mon2Ptr->unkA, mon2Ptr); + DungeonMonToRecruitedPokemon(mon2Ptr->recruitedPokemonId, mon2Ptr); } if (!IsMakuhitaTrainingMaze()) { - ClearMonItemId(&gRecruitedPokemonRef->pokemon[mon2Ptr->unkA]); + ClearMonItemId(&gRecruitedPokemonRef->pokemon[mon2Ptr->recruitedPokemonId]); } uVar10 = FALSE; @@ -654,7 +652,7 @@ void sub_8068FE0(Entity *entity, s32 param_2, Entity *param_3) } if (!uVar10) { - ClearOnTeamFlag(&gRecruitedPokemonRef->pokemon[mon2Ptr->unkA]); + ClearOnTeamFlag(&gRecruitedPokemonRef->pokemon[mon2Ptr->recruitedPokemonId]); } } mon2Ptr->flags = 0; @@ -1398,7 +1396,7 @@ bool8 sub_806A458(Entity *pokemon) s32 sub_806A4DC(EntityInfo *info) { - PokemonStruct1 pokemon; + Pokemon pokemon; DungeonLocation loc; loc.id = 0; @@ -1418,9 +1416,9 @@ s32 sub_806A4DC(EntityInfo *info) bool8 sub_806A538(s16 r0) { s32 r0_1 = Self_s16(r0); - if (r0 == 0x55AA) + if (r0 == UNK_RECRUITED_POKEMON_ID_55AA) return TRUE; - if (r0 == 0x5AA5) + if (r0 == UNK_RECRUITED_POKEMON_ID_5AA5) return TRUE; if (r0_1 >= 0) @@ -1431,9 +1429,9 @@ bool8 sub_806A538(s16 r0) bool8 sub_806A564(s16 r0) { - if (r0 == 0x55AA) + if (r0 == UNK_RECRUITED_POKEMON_ID_55AA) return TRUE; - if (r0 == 0x5AA5) + if (r0 == UNK_RECRUITED_POKEMON_ID_5AA5) return TRUE; return FALSE; @@ -1702,13 +1700,13 @@ void sub_806AA70(void) else { if (teamIndex >= 0) { bool8 unkBool = FALSE; - PokemonStruct2 *monStruct2Ptr = &gRecruitedPokemonRef->pokemon2[teamIndex]; + DungeonMon *monStruct2Ptr = &gRecruitedPokemonRef->dungeonTeam[teamIndex]; if (gDungeon->unk11) unkBool = TRUE; - else if (sub_806A564(monStruct2Ptr->unkA)) + else if (sub_806A564(monStruct2Ptr->recruitedPokemonId)) unkBool = TRUE; - else if (sub_806A58C(monStruct2Ptr->unkA)) + else if (sub_806A58C(monStruct2Ptr->recruitedPokemonId)) unkBool = TRUE; if (unkBool) { diff --git a/src/dungeon_move_util.c b/src/dungeon_move_util.c index 88093bb65..c3fbe7602 100644 --- a/src/dungeon_move_util.c +++ b/src/dungeon_move_util.c @@ -200,7 +200,7 @@ bool32 sub_8055A00(Entity *attacker, s32 firstMoveId, s32 var_34, s32 itemId, s3 break; if (++moveId >= MAX_MON_MOVES) break; - if (!MoveFlagLinkChain(&attackerInfo->moves.moves[moveId])) + if (!MOVE_FLAG_LINK_CHAIN(&attackerInfo->moves.moves[moveId])) break; } @@ -1253,7 +1253,7 @@ bool8 CanAIUseMove(Entity *pokemon, s32 moveIndex, bool8 hasPPChecker) Move *move = &pokemonInfo->moves.moves[moveIndex]; if (!MoveFlagExists(move)) return FALSE; - if (MoveFlagLinkChain(move) || MoveFlagDisabled(move) || MoveFlagSealed(move)) + if (MOVE_FLAG_LINK_CHAIN(move) || MoveFlagDisabled(move) || MoveFlagSealed(move)) return FALSE; for (i = 0; i < MAX_MON_MOVES; i++) { @@ -1262,7 +1262,7 @@ bool8 CanAIUseMove(Entity *pokemon, s32 moveIndex, bool8 hasPPChecker) move++; if (move >= &pokemonInfo->moves.moves[MAX_MON_MOVES]) break; - if (!(move->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN)) + if (!MOVE_FLAG_LINK_CHAIN(move)) break; } diff --git a/src/friend_area.c b/src/friend_area.c index 6fac04659..5b5669cc3 100644 --- a/src/friend_area.c +++ b/src/friend_area.c @@ -76,7 +76,7 @@ void sub_809249C(u8 friendArea, bool8 clear) return; for (i = 0; i < NUM_MONSTERS; i++) { - PokemonStruct1 *pokemon = &gRecruitedPokemonRef->pokemon[i]; + Pokemon *pokemon = &gRecruitedPokemonRef->pokemon[i]; if (PokemonExists(pokemon) && sub_80923D4(i) == friendArea) { if (IsMonPartner(pokemon) || IsMonTeamLeader(pokemon)) @@ -152,7 +152,7 @@ bool8 HasAllFriendAreas(void) void GetFriendAreaCapacity2(u8 friendArea, FriendAreaCapacity *dst, bool8 checkLeader, bool8 checkPartner) { - PokemonStruct1 *pokeStruct; + Pokemon *pokeStruct; s32 i; s32 iVar4; @@ -186,7 +186,7 @@ void GetFriendAreaCapacity2(u8 friendArea, FriendAreaCapacity *dst, bool8 checkL void GetFriendAreaCapacity(u8 areaId, FriendAreaCapacity *dst, bool8 checkPartner) { - PokemonStruct1 *mon; + Pokemon *mon; s32 r5; s32 i; s32 max; diff --git a/src/friend_area_action_menu.c b/src/friend_area_action_menu.c index d6e88357d..90e93767d 100644 --- a/src/friend_area_action_menu.c +++ b/src/friend_area_action_menu.c @@ -46,15 +46,15 @@ extern void sub_8027CA0(); extern void sub_8027D00(); extern void CreateFriendActionMenu(); extern void sub_80276A8(); -bool8 sub_8027D9C(PokemonStruct1 *pokeStruct); -extern u8 sub_8027DCC(PokemonStruct1 *); +bool8 sub_8027D9C(Pokemon *pokeStruct); +extern u8 sub_8027DCC(Pokemon *); extern void SetFriendAreaActionMenuState(u32); extern void PlaySound(u32); -extern void sub_808D31C(PokemonStruct1 *); +extern void sub_808D31C(Pokemon *); extern bool8 sub_808D750(s16 index_); -u32 sub_8027E18(PokemonStruct1 *); -u8 sub_8027E4C(PokemonStruct1 *r0); +u32 sub_8027E18(Pokemon *); +u8 sub_8027E4C(Pokemon *r0); void sub_8027EB8(void); #include "data/friend_area_action_menu.h" @@ -239,14 +239,13 @@ void CreateFriendActionMenu(void) { int index; s32 loopMax; - PokemonStruct1 *pokeStruct; + Pokemon *pokeStruct; loopMax = 0; pokeStruct = &gRecruitedPokemonRef->pokemon[sUnknown_203B2BC->targetPoke]; MemoryFill16(sUnknown_203B2BC->unk16C,0,sizeof(sUnknown_203B2BC->unk16C)); - if((pokeStruct->flags >> 1) % 2) - { + if (PokemonFlag2(pokeStruct)) { sUnknown_203B2BC->menuItems[loopMax].text = sStandBy; sUnknown_203B2BC->menuItems[loopMax].menuAction = FRIEND_AREA_ACTION_MENU_ACTION_STANDBY; if(!sub_8027D9C(pokeStruct)) @@ -381,7 +380,7 @@ void sub_8027794(void) void sub_80277FC(void) { - PokemonStruct1 *pokeStruct; + Pokemon *pokeStruct; switch(FriendList_HandleInput(TRUE)) { case 0: @@ -412,8 +411,8 @@ void sub_80277FC(void) void sub_80278B4(void) { - PokemonStruct1 *playerStruct; - PokemonStruct1 *newLeader; + Pokemon *playerStruct; + Pokemon *newLeader; u32 menuAction; menuAction = 0; @@ -696,7 +695,7 @@ void sub_8027D40(u32 r0, BulkItem *heldItem) sub_80073E0(r0); } -bool8 sub_8027D9C(PokemonStruct1 *pokeStruct) +bool8 sub_8027D9C(Pokemon *pokeStruct) { u32 var1; if(!pokeStruct->isTeamLeader) @@ -715,7 +714,7 @@ bool8 sub_8027D9C(PokemonStruct1 *pokeStruct) return TRUE; } -bool8 sub_8027DCC(PokemonStruct1 *pokeStruct) +bool8 sub_8027DCC(Pokemon *pokeStruct) { u32 var1; if(sub_808D3BC() != pokeStruct) @@ -740,7 +739,7 @@ bool8 sub_8027DCC(PokemonStruct1 *pokeStruct) return FALSE; } -u32 sub_8027E18(PokemonStruct1 *pokeStruct) +u32 sub_8027E18(Pokemon *pokeStruct) { if(pokeStruct->heldItem.id == ITEM_NOTHING) return 0; @@ -752,7 +751,7 @@ u32 sub_8027E18(PokemonStruct1 *pokeStruct) return 3; } -bool8 sub_8027E4C(PokemonStruct1 *pokeStruct) +bool8 sub_8027E4C(Pokemon *pokeStruct) { if(!IsNotMoneyOrUsedTMItem(pokeStruct->heldItem.id)) return FALSE; diff --git a/src/friend_areas_map_util.c b/src/friend_areas_map_util.c index 3869a9798..b482416e7 100644 --- a/src/friend_areas_map_util.c +++ b/src/friend_areas_map_util.c @@ -60,7 +60,7 @@ void FriendAreasMap_InitGfx(void) u8 filename[12]; s32 i, size; - PokemonStruct1 *pokeStruct = GetPlayerPokemonStruct(); + Pokemon *pokeStruct = GetPlayerPokemonStruct(); OpenedFile *file = OpenFileAndGetFileDataPtr(gUnknown_80D408C[0], &gTitleMenuFileArchive); OpenedFile *file2 = OpenFileAndGetFileDataPtr(gUnknown_80D408C[1], &gTitleMenuFileArchive); diff --git a/src/friend_list.c b/src/friend_list.c index 2b288be25..dcd5eec07 100644 --- a/src/friend_list.c +++ b/src/friend_list.c @@ -24,7 +24,7 @@ static IWRAM_INIT struct unkStruct_3001B60 *sFriendList = {NULL}; static void SortbyAlphabetNo(s32, s32); static void SortbyInternalNo(s32, s32); static void SortbyName(s32, s32); -static bool8 MonHasFriendArea(PokemonStruct1 *pokemon, u8 area); +static bool8 MonHasFriendArea(Pokemon *pokemon, u8 area); static void SortNames(void); static void SetUpWindowHeader(void); static s32 sub_8023BD8(void); @@ -260,7 +260,7 @@ void FriendList_ShowWindow(void) for (i = 0; i < sFriendList->unk358.m.input.currPageEntries; i++) { s32 id = sFriendList->unk1A[(sFriendList->unk358.m.input.currPage * sFriendList->unk358.m.input.entriesPerPage) + i]; - PokemonStruct1 *pokePtr = &gRecruitedPokemonRef->pokemon[id]; + Pokemon *pokePtr = &gRecruitedPokemonRef->pokemon[id]; u8 color = 7; if (PokemonFlag2(pokePtr)) { @@ -302,7 +302,7 @@ void FriendList_ShowWindow(void) static s32 sub_8023F8C(void) { s32 i; - PokemonStruct1 *pokeStruct; + Pokemon *pokeStruct; sFriendList->unk8 = 0; if (!sFriendList->unk15) { @@ -357,7 +357,7 @@ bool8 sub_8024108(s32 param_1) s32 i; for (i = 0; i < NUM_MONSTERS; i++) { - PokemonStruct1 *pokeStruct = &gRecruitedPokemonRef->pokemon[i]; + Pokemon *pokeStruct = &gRecruitedPokemonRef->pokemon[i]; if (PokemonExists(pokeStruct)) { if (param_1 == 2) { if (!PokemonFlag2(pokeStruct)) continue; @@ -378,7 +378,7 @@ bool8 sub_8024108(s32 param_1) return TRUE; } -static bool8 MonHasFriendArea(PokemonStruct1 *pokemon, u8 area) +static bool8 MonHasFriendArea(Pokemon *pokemon, u8 area) { if (area == GetFriendArea(pokemon->speciesNum)) return TRUE; @@ -464,11 +464,11 @@ static void SortbyName(s32 startId, s32 arrId) } } -UNUSED static PokemonStruct1 *sub_80243E8(void) +UNUSED static Pokemon *sub_80243E8(void) { u8 buffer[40]; u8 nameBuffer[20]; - PokemonStruct1 *pokeStruct = &gRecruitedPokemonRef->pokemon[sFriendList->unk1A[GET_CURRENT_MENU_ENTRY(sFriendList->unk358.m.input)]]; + Pokemon *pokeStruct = &gRecruitedPokemonRef->pokemon[sFriendList->unk1A[GET_CURRENT_MENU_ENTRY(sFriendList->unk358.m.input)]]; StrncpyCustom(nameBuffer, pokeStruct->name, POKEMON_NAME_LENGTH); sprintfStatic(buffer, "%s", nameBuffer); diff --git a/src/friend_list_menu.c b/src/friend_list_menu.c index 5c2eca137..c010fab00 100644 --- a/src/friend_list_menu.c +++ b/src/friend_list_menu.c @@ -51,7 +51,7 @@ void sub_8025E08(void); void sub_8025E24(void); void FriendListMenu_GotoFallbackState(void); void sub_8025E68(u32 , BulkItem *); -bool8 FriendListMenu_isOnTeam(PokemonStruct1 *); +bool8 FriendListMenu_isOnTeam(Pokemon *); bool8 CreateFriendListMenu(s32 param_1) @@ -261,7 +261,7 @@ void sub_8025518(void) void sub_8025728(void) { int index; - PokemonStruct1 *pokeStruct; + Pokemon *pokeStruct; s32 loopMax = 0; pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B2B4->species]; @@ -644,7 +644,7 @@ void sub_8025E68(u32 r0, BulkItem *heldItem) sub_80073E0(r0); } -bool8 FriendListMenu_isOnTeam(PokemonStruct1 *pokeStruct) +bool8 FriendListMenu_isOnTeam(Pokemon *pokeStruct) { bool32 flag; if (pokeStruct->isTeamLeader) diff --git a/src/ground_lives.c b/src/ground_lives.c index c045b952a..db926ecbb 100644 --- a/src/ground_lives.c +++ b/src/ground_lives.c @@ -121,7 +121,7 @@ extern bool8 CheckMapCollision_80A585C(PixelPos *, PixelPos *); extern bool8 sub_80A58C8(PixelPos *, PixelPos *); extern s32 sub_80AC4C8(u32 a0, PixelPos *, PixelPos *); extern void sub_809CD8C(struct Struct3001B84_sub120 *dst, s32 a1); -extern bool8 sub_809B1C0(s32 a0, u32 kind, PokemonStruct1 *a2); +extern bool8 sub_809B1C0(s32 a0, u32 kind, Pokemon *a2); extern bool8 GetPredefinedScript(Action *param_1, ScriptInfoSmall *script, s32 _index); extern bool8 sub_809D678(Action *action); extern bool8 sub_80AC274(s32 a0, ScriptInfoSmall *scriptInfo, s32 a2); @@ -129,7 +129,7 @@ extern void GroundObject_ExecuteScript(s32, void *, ScriptInfoSmall *); extern bool8 sub_80ADC64(s32 id, ScriptInfoSmall *dst); extern bool8 GroundScriptNotify(Action *param_1, s32 param_2); extern bool8 GroundScript_Cancel(Action *r0); -extern PokemonStruct1 *sub_80A8D54(s32); +extern Pokemon *sub_80A8D54(s32); extern s32 sub_809CDB8(struct Struct3001B84_sub120 *dst); extern void sub_80A6688(struct UnkGroundSpriteStruct *ptr, s32 a0); extern s32 sub_808D6A4(s32 *ptr); @@ -425,7 +425,7 @@ s32 sub_80A7B94(s16 *a0) *a0 = 2; break; case 2: { - PokemonStruct1 *playerMonStruct = GetPlayerPokemonStruct(); + Pokemon *playerMonStruct = GetPlayerPokemonStruct(); if (sub_808D3BC() == playerMonStruct) { *a0 = 1; } @@ -471,7 +471,7 @@ s32 sub_80A7B94(s16 *a0) *a0 = 7; break; case 3: { - PokemonStruct1 *playerMonStruct = GetPlayerPokemonStruct(); + Pokemon *playerMonStruct = GetPlayerPokemonStruct(); if (sub_808D3BC() == playerMonStruct) { *a0 = 6; } @@ -539,7 +539,7 @@ s32 sub_80A7B94(s16 *a0) s32 id = *a0 - 14; GetFriendAreaCapacity2(map, &fAreaCapacity, FALSE, FALSE); if (id < fAreaCapacity.maxPokemon) { - PokemonStruct1 *monStrPtr = &gRecruitedPokemonRef->pokemon[fAreaCapacity.unk8 + id]; + Pokemon *monStrPtr = &gRecruitedPokemonRef->pokemon[fAreaCapacity.unk8 + id]; if (sub_80023E4(9)) { if (PokemonExists(monStrPtr) && !monStrPtr->isTeamLeader) { return -1; @@ -557,7 +557,7 @@ s32 sub_80A7B94(s16 *a0) return -1; } else if (id == 0x23) { - PokemonStruct1 *playerMonStruct = GetPlayerPokemonStruct(); + Pokemon *playerMonStruct = GetPlayerPokemonStruct(); if (sub_808D3BC() == playerMonStruct) { *a0 = 0x21; } @@ -604,7 +604,7 @@ s32 sub_80A7DDC(s16 *a0, s16 *speciesDst) } if (id < val) { - PokemonStruct1 *monStrPtr = &gRecruitedPokemonRef->pokemon[sp[id]]; + Pokemon *monStrPtr = &gRecruitedPokemonRef->pokemon[sp[id]]; *speciesDst = monStrPtr->speciesNum; return -1; } @@ -617,7 +617,7 @@ s32 sub_80A7DDC(s16 *a0, s16 *speciesDst) s32 id = *a0 - 14; GetFriendAreaCapacity2(map, &fAreaCapacity, FALSE, FALSE); if (id < fAreaCapacity.maxPokemon) { - PokemonStruct1 *monStrPtr = &gRecruitedPokemonRef->pokemon[fAreaCapacity.unk8 + id]; + Pokemon *monStrPtr = &gRecruitedPokemonRef->pokemon[fAreaCapacity.unk8 + id]; if (sub_80023E4(9)) { if (PokemonExists(monStrPtr) && !monStrPtr->isTeamLeader) { *speciesDst = monStrPtr->speciesNum; @@ -1014,7 +1014,7 @@ void sub_80A87AC(s32 id_, s32 a1) } } -bool8 sub_80A87E0(s32 id_, PokemonStruct1 *a1) +bool8 sub_80A87E0(s32 id_, Pokemon *a1) { s32 id = (s16) id_; struct GroundLive *livesPtr = &gGroundLives->array[id]; @@ -1240,7 +1240,7 @@ s32 sub_80A8C4C(s32 id_, DungeonLocation *dungLoc) struct GroundLive *livesPtr = &gGroundLives->array[id]; if (livesPtr->unk2 != -1) { - PokemonStruct1 *monStrPtr = sub_80A8D54(livesPtr->unk2); + Pokemon *monStrPtr = sub_80A8D54(livesPtr->unk2); if (monStrPtr != NULL) { *dungLoc = monStrPtr->dungeonLocation; } @@ -1295,7 +1295,7 @@ bool8 sub_80A8D20(void) return (val == 1); } -PokemonStruct1 *sub_80A8D54(s32 a0) +Pokemon *sub_80A8D54(s32 a0) { s16 sp = a0; @@ -1331,7 +1331,7 @@ PokemonStruct1 *sub_80A8D54(s32 a0) return &gRecruitedPokemonRef->pokemon[spArray[id]]; } else if (sp >= 14 && sp <= 29) { - PokemonStruct1 *monPtr; + Pokemon *monPtr; s32 id; FriendAreaCapacity fAreaCapacity; u8 map = sub_8002658(GetScriptVarValue(NULL, GROUND_MAP)); @@ -1360,7 +1360,7 @@ PokemonStruct1 *sub_80A8D54(s32 a0) return NULL; } -PokemonStruct1 *sub_80A8E9C(s32 id_) +Pokemon *sub_80A8E9C(s32 id_) { s32 id = (s16) id_; struct GroundLive *livesPtr = &gGroundLives->array[id]; @@ -1372,7 +1372,7 @@ void sub_80A8EC0(u8 *buffer,s32 a1) { s16 sp = a1; s16 species; - PokemonStruct1 *monStruct; + Pokemon *monStruct; sub_80A7DDC(&sp, &species); monStruct = sub_80A8D54(sp); diff --git a/src/ground_script.c b/src/ground_script.c index 3a306def3..82e747494 100644 --- a/src/ground_script.c +++ b/src/ground_script.c @@ -115,7 +115,7 @@ void sub_80A87AC(s32, s32); void sub_80A8BD8(s16, s32*); u32 sub_80A8C2C(); u32 GroundLives_IsStarterMon(); -PokemonStruct1 *sub_80A8D54(s16); +Pokemon *sub_80A8D54(s16); s16 sub_80A8F9C(s32, PixelPos*); u32 sub_80A9050(); u32 sub_80A9090(); @@ -172,7 +172,7 @@ u8 sub_80A8D20(); bool8 sub_80A87E0(); s16 sub_80A8BFC(s16); void sub_80A8F50(const u8 *buffer, s32, s32 size); -PokemonStruct1 *sub_808D2E8(s32 species, u8 *name, u32 _itemID, DungeonLocation *location, u16 *moveID); +Pokemon *sub_808D2E8(s32 species, u8 *name, u32 _itemID, DungeonLocation *location, u16 *moveID); bool8 HasRecruitedMon(s32 species); extern Item gUnknown_8116844; extern Item gUnknown_81167E4; @@ -1162,7 +1162,7 @@ s16 HandleAction(Action *action, DebugLocation *debug) if (val == 1) { s32 id = (s16)cmd.arg1; if (id != -1) { - PokemonStruct1 *mon = sub_80A8D54(id); + Pokemon *mon = sub_80A8D54(id); s32 i; for (i = 0; i < POKEMON_NAME_LENGTH; i++) { mon->name[i] = gUnknown_2039D98[i]; @@ -1975,7 +1975,7 @@ s32 ExecuteScriptCommand(Action *action) case 0x3d: { int i; if ((s16)curCmd.arg1 != -1) { - PokemonStruct1 *mon = sub_80A8D54(curCmd.arg1); + Pokemon *mon = sub_80A8D54(curCmd.arg1); if (mon != NULL) { for (i = 0; i < POKEMON_NAME_LENGTH; i++) { gUnknown_2039D98[i] = mon->name[i]; @@ -3200,7 +3200,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) case 0x13: { - PokemonStruct1 *ptr; + Pokemon *ptr; ptr = sub_80A8D54(r2); if(ptr) @@ -3237,7 +3237,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) case 0x16: { s32 index; - PokemonStruct1 *ptr; ptr = sub_80A8D54(1); + Pokemon *ptr; ptr = sub_80A8D54(1); if(ptr) { for(index = 0; index < POKEMON_NAME_LENGTH; index++) @@ -3271,8 +3271,8 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) .offenseDef = {20, 18}, .currExp = 4560, }; - PokemonStruct1 sp_2c; - PokemonStruct1 *ptr; + Pokemon sp_2c; + Pokemon *ptr; s32 index; ConvertStoryMonToPokemon(&sp_2c, &sp_4); @@ -3292,9 +3292,9 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) return 0; case 0x1B: { - PokemonStruct1 *pokemon; + Pokemon *pokemon; struct StoryMonData sp_84; - PokemonStruct1 sp_ac; + Pokemon sp_ac; UnlockFriendArea(GetFriendArea(MONSTER_ABSOL)); sp_84 = gUnknown_8116738; @@ -3307,7 +3307,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) } case 0x1C: { - PokemonStruct1 *pokemon = sub_808D434(MONSTER_ABSOL, 0); + Pokemon *pokemon = sub_808D434(MONSTER_ABSOL, 0); if(pokemon == NULL) return 1; pokemon->flags |= POKEMON_FLAG_ON_TEAM; return 0; @@ -3325,10 +3325,10 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) case 0x1F: { - PokemonStruct1 *pokemon; + Pokemon *pokemon; s32 index; struct StoryMonData sp_108; - PokemonStruct1 sp_130; + Pokemon sp_130; sp_108 = gUnknown_8116760; ConvertStoryMonToPokemon(&sp_130, &sp_108); @@ -3376,7 +3376,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) return 0; case 0x22: { - PokemonStruct1 *pokemon = GetPlayerPokemonStruct(); + Pokemon *pokemon = GetPlayerPokemonStruct(); if(pokemon->speciesNum != MONSTER_ARTICUNO && pokemon->speciesNum != MONSTER_ZAPDOS && pokemon->speciesNum != MONSTER_MOLTRES) return 1; @@ -3384,7 +3384,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) return 0; case 0x23: { - PokemonStruct1 *pokemon; + Pokemon *pokemon; pokemon = GetPlayerPokemonStruct(); if (pokemon != NULL && pokemon->speciesNum == MONSTER_HO_OH) return 2; @@ -3398,10 +3398,10 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) case 0x25: { - PokemonStruct1 *pokemon; + Pokemon *pokemon; s32 index; struct StoryMonData sp_188; - PokemonStruct1 sp_1b0; + Pokemon sp_1b0; if(!GetFriendAreaStatus(GetFriendArea(MONSTER_LATIOS))) UnlockFriendArea(GetFriendArea(MONSTER_LATIOS)); @@ -3423,10 +3423,10 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) return 0; case 0x27: { - PokemonStruct1 *pokemon; + Pokemon *pokemon; s32 index; struct StoryMonData sp_208; - PokemonStruct1 sp_230; + Pokemon sp_230; sp_208 = gUnknown_81167BC; ConvertStoryMonToPokemon(&sp_230, &sp_208); @@ -3552,7 +3552,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) return 0; case 0x2C: { - PokemonStruct1 *pokemon; + Pokemon *pokemon; s32 index; if(r2 != 0) { @@ -3621,7 +3621,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) case 0x32: { struct StoryMonData sp_288; - PokemonStruct1 sp_2b0; + Pokemon sp_2b0; sp_288 = gUnknown_811681C; ConvertStoryMonToPokemon(&sp_2b0, &sp_288); if(sub_808D1DC(&sp_2b0) == 0) { @@ -3676,7 +3676,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) return 0; case 0x35: { - PokemonStruct1 *pokemon = GetPlayerPokemonStruct(); + Pokemon *pokemon = GetPlayerPokemonStruct(); if(pokemon != NULL && pokemon->speciesNum == MONSTER_CHANSEY) return 2; else diff --git a/src/iq_skill_list_menu.c b/src/iq_skill_list_menu.c index e96025223..b9e05c1c1 100644 --- a/src/iq_skill_list_menu.c +++ b/src/iq_skill_list_menu.c @@ -151,7 +151,7 @@ bool8 HasNoAvailIQSkills(s16 species) { s32 species_s32; u8 iqSkillBuffer[NUM_IQ_SKILLS]; - PokemonStruct1 *pokeStruct; + Pokemon *pokeStruct; species_s32 = species; pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32]; diff --git a/src/items.c b/src/items.c index 46ae3ea03..4e2bf0448 100644 --- a/src/items.c +++ b/src/items.c @@ -595,7 +595,7 @@ s32 GetItemPossessionCount(u8 id) s32 i = 0; for (i = 0; i < NUM_MONSTERS; i++) { - PokemonStruct1 *mon = &gRecruitedPokemonRef->pokemon[i]; + Pokemon *mon = &gRecruitedPokemonRef->pokemon[i]; if (PokemonExists(mon) && PokemonFlag2(mon) && (mon->heldItem.id != ITEM_NOTHING) @@ -860,7 +860,7 @@ u32 GetMoneyValueHeld(BulkItem* slot) static const u16 sGummiStatBoostsFlags[] = {1, 2, 4, 8}; // arm9.bin::0205FC30 -void GetGummiItemStatBoost(PokemonStruct1* pokemon, u8 id, bool8 checkBoostFlags, Gummi *gummi) +void GetGummiItemStatBoost(Pokemon* pokemon, u8 id, bool8 checkBoostFlags, Gummi *gummi) { // item stat buff? s8 result; @@ -1401,7 +1401,7 @@ void ClearAllItems_8091FB4(void) FillInventoryGaps(); for (i = 0; i < NUM_MONSTERS; i++) { if (PokemonExists(&gRecruitedPokemonRef->pokemon[i])) { - PokemonStruct1 *pokemon = &gRecruitedPokemonRef->pokemon[i]; + Pokemon *pokemon = &gRecruitedPokemonRef->pokemon[i]; if (pokemon->heldItem.id) { if (pokemon->heldItem.id == ITEM_POKE) { AddToTeamMoney(GetMoneyValueHeld(&pokemon->heldItem)); diff --git a/src/load_screen.c b/src/load_screen.c index d0c4485be..b074c8559 100644 --- a/src/load_screen.c +++ b/src/load_screen.c @@ -270,7 +270,7 @@ void DrawLoadScreenText(void) u32 hours; u32 minutes; u32 seconds; - PokemonStruct1 *playerInfo; + Pokemon *playerInfo; unkStruct_203B484 *temp2; u8 *r2; diff --git a/src/luminous_cave.c b/src/luminous_cave.c index 47d86cb48..24cf6abfd 100644 --- a/src/luminous_cave.c +++ b/src/luminous_cave.c @@ -740,18 +740,17 @@ static void sub_8025254(void) static bool8 LuminousCave_HasOnly1Member(void) { s32 memberCount; - s32 index; - PokemonStruct1 *preload; + s32 i; + Pokemon *mon; - preload = &gRecruitedPokemonRef->pokemon[0]; + mon = &gRecruitedPokemonRef->pokemon[0]; memberCount = 0; - for(index = 0; index < NUM_MONSTERS; index++, preload++) - { - if((preload->flags >> 1) & 1) + for (i = 0; i < NUM_MONSTERS; i++, mon++) { + if (PokemonFlag2(mon)) memberCount++; } - if(memberCount == 1) + if (memberCount == 1) return TRUE; else return FALSE; diff --git a/src/main_loops.c b/src/main_loops.c index 726c60602..c3159416b 100644 --- a/src/main_loops.c +++ b/src/main_loops.c @@ -84,7 +84,7 @@ static u32 xxx_script_related_8001334(u32 r0); static void MainLoops_RunFrameActions(u32 unused); extern u8 sub_80990EC(DungeonSetupInfo *param_1, s32 param_2); -extern bool8 sub_8096A08(u8 dungeon, PokemonStruct1 *pokemon); +extern bool8 sub_8096A08(u8 dungeon, Pokemon *pokemon); extern u8 sub_80991E0(DungeonSetupInfo *param_1,short *param_2); extern u32 xxx_script_related_8098468(u32); extern void IncrementNumAdventures(void); @@ -1073,7 +1073,7 @@ static void RemoveMoneyAndRandomItems(void) FillInventoryGaps(); for (i = 0; i < NUM_MONSTERS; i++) { - PokemonStruct1 *mon = &gRecruitedPokemonRef->pokemon[i]; + Pokemon *mon = &gRecruitedPokemonRef->pokemon[i]; if (PokemonExists(mon) && PokemonFlag2(mon)) mon->heldItem.id = ITEM_NOTHING; } @@ -1093,7 +1093,7 @@ static void RemoveAllMoneyAndItems(void) FillInventoryGaps(); for (i = 0; i < NUM_MONSTERS; i++) { - PokemonStruct1 *mon = &gRecruitedPokemonRef->pokemon[i]; + Pokemon *mon = &gRecruitedPokemonRef->pokemon[i]; if (PokemonExists(mon) && PokemonFlag2(mon)) mon->heldItem.id = ITEM_NOTHING; } diff --git a/src/moves.c b/src/moves.c index 4205dcc5f..1ae0c212b 100644 --- a/src/moves.c +++ b/src/moves.c @@ -281,17 +281,13 @@ s32 unk_FindMoveEnabledForAIAfter4(Move *moves, s32 index) s32 i; for (i = 0; i < MAX_MON_MOVES; i++) { - u8 flag; - if (++index == MAX_MON_MOVES) return 0; - if (!(moves[index].moveFlags & MOVE_FLAG_EXISTS)) + if (!MoveFlagExists(&moves[index])) return 0; - // checks MOVE_FLAG_ENABLED_FOR_AI - flag = (moves[index].moveFlags >> 1); - if (!(flag & 1)) + if (!MoveFlagLinkChain(&moves[index])) return index; } @@ -303,8 +299,6 @@ s32 sub_8092DB8(Move *moves, s32 index) s32 i, j; for (i = 0; i < MAX_MON_MOVES; i++) { - u8 flag; - if (--index < 0) { for (j = MAX_MON_MOVES - 1; j >= 0; j--) { if (!(moves[j].moveFlags & MOVE_FLAG_EXISTS)) { @@ -320,12 +314,10 @@ s32 sub_8092DB8(Move *moves, s32 index) return 0; } - if (!(moves[index].moveFlags & MOVE_FLAG_EXISTS)) + if (!MoveFlagExists(&moves[index])) return 0; - // checks MOVE_FLAG_ENABLED_FOR_AI - flag = (moves[index].moveFlags >> 1); - if (!(flag & 1)) + if (!(MoveFlagLinkChain(&moves[index]))) return index; } @@ -337,17 +329,13 @@ s32 unk_FindMoveEnabledForAIAfter8(Move *moves, s32 index) s32 i; for (i = 0; i < 8; i++) { - u8 flag; - if (++index == 8) return 0; - if (!(moves[index].moveFlags & 1)) + if (!MoveFlagExists(&moves[index])) return 0; - // checks MOVE_FLAG_ENABLED_FOR_AI - flag = (moves[index].moveFlags >> 1); - if (!(flag & 1)) + if (!(MoveFlagLinkChain(&moves[index]))) return index; } @@ -359,17 +347,13 @@ s32 unk_FindMoveEnabledForAIAfter8_v2(Move *moves, s32 index) s32 i; for (i = 0; i < 8; i++) { - u8 flag; - if (++index == 8) return 0; - if (!(moves[index].moveFlags & 1)) + if (!MoveFlagExists(&moves[index])) return 0; - // checks MOVE_FLAG_ENABLED_FOR_AI - flag = (moves[index].moveFlags >> 1); - if (!(flag & 1)) + if (!(MoveFlagLinkChain(&moves[index]))) return index; } @@ -383,27 +367,21 @@ s32 unk_FindMoveEnabledForAIBefore8(Move *moves, s32 index) s32 i, j; for (i = 0; i < 8; i++) { - u8 flag; - if (--index < 0) { for (j = 7; j > 0; j--) { - if (!(moves[j].moveFlags & MOVE_FLAG_EXISTS)) + if (!MoveFlagExists(&moves[j])) continue; - // checks MOVE_FLAG_ENABLED_FOR_AI - flag = (moves[j].moveFlags >> 1); - if (!(flag & 1)) + if (!(MoveFlagLinkChain(&moves[j]))) return j; } return 0; } - if (!(moves[index].moveFlags & MOVE_FLAG_EXISTS)) + if (!MoveFlagExists(&moves[index])) return 0; - // checks MOVE_FLAG_ENABLED_FOR_AI - flag = (moves[index].moveFlags >> 1); - if (!(flag & 1)) + if (!(MoveFlagLinkChain(&moves[index]))) return index; } @@ -415,27 +393,21 @@ s32 unk_FindMoveEnabledForAIBefore8_v2(Move *moves, s32 index) s32 i, j; for (i = 0; i < 8; i++) { - u8 flag; - if (--index < 0) { for (j = 7; j > 0; j--) { - if (!(moves[j].moveFlags & MOVE_FLAG_EXISTS)) + if (!MoveFlagExists(&moves[j])) continue; - // checks MOVE_FLAG_ENABLED_FOR_AI - flag = (moves[j].moveFlags >> 1); - if (!(flag & 1)) + if (!(MoveFlagLinkChain(&moves[j]))) return j; } return 0; } - if (!(moves[index].moveFlags & MOVE_FLAG_EXISTS)) + if (!MoveFlagExists(&moves[index])) return 0; - // checks MOVE_FLAG_ENABLED_FOR_AI - flag = (moves[index].moveFlags >> 1); - if (!(flag & 1)) + if (!(MoveFlagLinkChain(&moves[index]))) return index; } @@ -448,14 +420,11 @@ s32 sub_8092F4C(Move *moves, s32 index) for (i = index; i > 0; i--) { Move* move = &moves[i]; - u8 flag; - if (!(move->moveFlags & MOVE_FLAG_EXISTS)) + if (!MoveFlagExists(move)) return 0; - // checks MOVE_FLAG_ENABLED_FOR_AI - flag = (move->moveFlags >> 1); - if (!(flag & 1)) + if (!(MoveFlagLinkChain(move))) return i; } @@ -729,7 +698,7 @@ bool8 IsAnyMoveLinked(s32 unused, Move *moves) counter = 0; for (i = 0; i < 8; i++) { - if ((moves[i].moveFlags & MOVE_FLAG_EXISTS) && !(moves[i].moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN)) + if ((moves[i].moveFlags & MOVE_FLAG_EXISTS) && !(MOVE_FLAG_LINK_CHAIN(&moves[i]))) counter++; } @@ -755,13 +724,13 @@ bool8 TryLinkMovesAfter(s32 index, Move *moves) return FALSE; for (i = index + 1; i < 8; i++) { - if (!(moves[i].moveFlags & MOVE_FLAG_EXISTS)) + if (!MoveFlagExists(&moves[i])) return FALSE; if (DoesMoveCharge(moves[i].id)) return FALSE; - if (!(moves[i].moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN)) { + if (!(MOVE_FLAG_LINK_CHAIN(&moves[i]))) { moves[i].moveFlags |= MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN; unk_FixLinkedMovesSetEnabled8_v2(moves); return TRUE; @@ -778,13 +747,15 @@ bool8 UnlinkMovesAfter(s32 index, Move *moves) s32 r4; for (i = index + 1, r4 = 0; r4 < 8 && i < 8; i++, r4++) { - if (!(moves[i].moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN)) - goto label; // for some reason we can't use break here - - moves[i].moveFlags &= ~MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN; - result = TRUE; + if (MOVE_FLAG_LINK_CHAIN(&moves[i])) { + MOVE_FLAG_CLEAR_LINK_CHAIN(&moves[i]); + result = TRUE; + } + else { + break; + } } -label: + unk_FixLinkedMovesSetEnabled8_v2(moves); return result; } @@ -801,7 +772,7 @@ bool8 IsNextMoveLinked(s32 index, Move *moves) if (!(move->moveFlags & MOVE_FLAG_EXISTS)) return FALSE; - if (move->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN) + if MOVE_FLAG_LINK_CHAIN(move) return TRUE; return FALSE; @@ -862,7 +833,7 @@ s32 GetLinkedSequence(s32 index, Move *moves, u16 *sequenceMoveIDs) for (index++, sequenceMoveIDs++; index < 8 && linkedSequenceLength <= 3; index++) { move = &moves[index]; - if (!(move->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN)) + if (!MOVE_FLAG_LINK_CHAIN(move)) return linkedSequenceLength; *sequenceMoveIDs++ = move->id; @@ -889,7 +860,7 @@ s32 sub_80935B8(Move *moves, s32 index) while (linkSequenceStart >= 0) { Move *move = &moves[linkSequenceStart]; - if (!((move->moveFlags & MOVE_FLAG_EXISTS) && (move->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN))) + if (!((move->moveFlags & MOVE_FLAG_EXISTS) && MOVE_FLAG_LINK_CHAIN(move))) break; linkSequenceStart--; @@ -901,7 +872,7 @@ s32 sub_80935B8(Move *moves, s32 index) for (i = linkSequenceStart + 1; i < MAX_MON_MOVES; i++) { Move *move = &moves[i]; - if (!((move->moveFlags & MOVE_FLAG_EXISTS) && (move->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN))) + if (!((move->moveFlags & MOVE_FLAG_EXISTS) && MOVE_FLAG_LINK_CHAIN(move))) break; isNonTrivialLinkSequence = TRUE; @@ -915,7 +886,7 @@ s32 sub_80935B8(Move *moves, s32 index) while (--i >= linkSequenceStart) { Move* move = &moves[i]; - if (!(move->moveFlags & MOVE_FLAG_EXISTS)) + if (!MoveFlagExists(move)) break; if (pp > move->PP) @@ -930,12 +901,12 @@ s32 sub_80935B8(Move *moves, s32 index) return pp; for (i = linkSequenceStart + 1; i < MAX_MON_MOVES; i++) { - Move* move = &moves[i]; + Move *move = &moves[i]; - if (!(moves[i].moveFlags & MOVE_FLAG_EXISTS)) + if (!MoveFlagExists(move)) break; - if (move->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN) { + if MOVE_FLAG_LINK_CHAIN(move) { move->moveFlags &= ~MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN; any_move_linked = TRUE; } @@ -1125,7 +1096,7 @@ static void unk_GetLinkedSequences8(Move *moves, Move linkedSequences[8][8]) for (j = 0, k = 0; k < 8; j++, k++) { Move* move = &moves[k]; - if (k == 0 || !(move->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN)) { + if (k == 0 || !MOVE_FLAG_LINK_CHAIN(move)) { moveSetIndex++; j = 0; } @@ -1291,7 +1262,7 @@ UNUSED static void RemoveLinkSequenceFromMoves8_v2(Move *moves, s32 index) for (i = index + 1; i < 8; i++) { Move* move = &moves[i]; - if (!MoveFlagExists(move) || !(move->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN)) + if (!MoveFlagExists(move) || !MOVE_FLAG_LINK_CHAIN(move)) break; move->moveFlags = 0; @@ -1322,7 +1293,7 @@ void RemoveLinkSequenceFromMoves8(Move *moves, s32 index) for (i = index + 1; i < 8; i++) { Move* move = &moves[i]; - if (!MoveFlagExists(move) || !(move->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN)) + if (!MoveFlagExists(move) || !MOVE_FLAG_LINK_CHAIN(move)) break; move->moveFlags = 0; diff --git a/src/other_menus1.c b/src/other_menus1.c index 34e3be98c..1aff69ce4 100644 --- a/src/other_menus1.c +++ b/src/other_menus1.c @@ -397,8 +397,8 @@ static void sub_8037810(void) MemoryFill8(&sUnknown_203B35C->unk25C, 0, sizeof(unkStruct_203B480)); MemoryFill8(&sUnknown_203B35C->unk28C, 0, sizeof(unkStruct_203B480)); MemoryFill8(&sUnknown_203B35C->unk314, 0, sizeof(unkStruct_203B480)); - MemoryFill8(&sUnknown_203B35C->unk2BC, 0, sizeof(PokemonStruct1)); - MemoryFill8(&sUnknown_203B35C->unk344, 0, sizeof(PokemonStruct1)); + MemoryFill8(&sUnknown_203B35C->unk2BC, 0, sizeof(Pokemon)); + MemoryFill8(&sUnknown_203B35C->unk344, 0, sizeof(Pokemon)); MemoryFill8(sUnknown_203B35C->unk39C, 0, 0xb4); // unkStruct_803B344? MemoryFill8(sUnknown_203B35C->unk450, 0, 0xb4); // unkStruct_803B344? diff --git a/src/party_list_menu.c b/src/party_list_menu.c index 8f343af97..ec34ceb22 100644 --- a/src/party_list_menu.c +++ b/src/party_list_menu.c @@ -32,16 +32,16 @@ static EWRAM_INIT unkStruct_203B2B8 *sUnknown_203B2B8 = {NULL}; #include "data/party_list_menu.h" -extern u32 sub_8026F04(PokemonStruct1 *); -bool8 CanTakePokemonHeldItem(PokemonStruct1 *r0); +extern u32 sub_8026F04(Pokemon *); +bool8 CanTakePokemonHeldItem(Pokemon *r0); extern bool8 sub_808D750(s16 index_); -bool8 sub_8026E88(PokemonStruct1 *r0); -bool8 sub_8026EB8(PokemonStruct1 *r0); +bool8 sub_8026E88(Pokemon *r0); +bool8 sub_8026EB8(Pokemon *r0); void sub_8026E08(u32 r0); void sub_8026DAC(u32 r0, BulkItem *item); void sub_8026FA4(void); void PartyListMenu_BuildYesNoMenu(void); -extern void sub_808D31C(PokemonStruct1 *); +extern void sub_808D31C(Pokemon *); void PartyListMenu_CreateMenu2(void); void PartyListMenu_CreateMenu1(void); @@ -63,7 +63,7 @@ void PartyListMenu_GotoFallbackState(void); static void SetPartyListMenuState(s32 newState); static void sub_802608C(void); -bool8 CreatePartyListMenu(PokemonStruct1 *pokeStruct) +bool8 CreatePartyListMenu(Pokemon *pokeStruct) { s32 i; @@ -304,10 +304,8 @@ void HandlePartyListMenuCallback(void) } void PartyListMenu_CreateMenu1(void) { - PokemonStruct1 *pokeStruct; + Pokemon *pokeStruct; s32 index; - s32 one; - u16 temp; s32 loopMax = 0; pokeStruct = &gRecruitedPokemonRef->pokemon[sUnknown_203B2B8->pokeSpecies]; MemoryFill16(sUnknown_203B2B8->unk20C, 0, sizeof(sUnknown_203B2B8->unk20C)); @@ -315,7 +313,7 @@ void PartyListMenu_CreateMenu1(void) { PeekPokemonItem(sUnknown_203B2B8->pokeSpecies, &sUnknown_203B2B8->item2); - if(temp = pokeStruct->flags >> 1, one = 1, temp & one) + if (PokemonFlag2(pokeStruct)) { sUnknown_203B2B8->unk16C[loopMax].text = sPartyMenuStandBy; sUnknown_203B2B8->unk16C[loopMax].menuAction = PARTY_LIST_MENU_STANDBY; @@ -367,7 +365,7 @@ void PartyListMenu_CreateMenu1(void) { } loopMax += 1; - if((temp = pokeStruct->flags >> 1, one = 1, temp & one) == 0) + if (!PokemonFlag2(pokeStruct)) { sUnknown_203B2B8->unk16C[loopMax].text = sPartyMenuSayFarewell; sUnknown_203B2B8->unk16C[loopMax].menuAction = PARTY_LIST_MENU_SAY_FAREWELL; @@ -458,8 +456,8 @@ void PartyListMenu_BuildYesNoMenu(void) { void PartyListMenu_HandleMenu1(void) { - PokemonStruct1 *playerPokemon; - PokemonStruct1 *newLeader; + Pokemon *playerPokemon; + Pokemon *newLeader; s32 choice; choice = 0; @@ -788,7 +786,7 @@ void sub_8026E08(u32 r0) sub_80073E0(r0); } -bool8 sub_8026E88(PokemonStruct1 *r0) +bool8 sub_8026E88(Pokemon *r0) { bool8 flag; if(!r0->isTeamLeader) @@ -803,7 +801,7 @@ bool8 sub_8026E88(PokemonStruct1 *r0) return TRUE; } -bool8 sub_8026EB8(PokemonStruct1 *r0) +bool8 sub_8026EB8(Pokemon *r0) { bool8 flag; if(sub_808D3BC() != r0) @@ -825,7 +823,7 @@ bool8 sub_8026EB8(PokemonStruct1 *r0) } -u32 sub_8026F04(PokemonStruct1 *r0) +u32 sub_8026F04(Pokemon *r0) { if(r0->heldItem.id == ITEM_NOTHING) return 0; @@ -837,7 +835,7 @@ u32 sub_8026F04(PokemonStruct1 *r0) return 3; } -bool8 CanTakePokemonHeldItem(PokemonStruct1 *r0) +bool8 CanTakePokemonHeldItem(Pokemon *r0) { if(IsNotMoneyOrUsedTMItem(r0->heldItem.id)) { diff --git a/src/pokemon.c b/src/pokemon.c index 28e73698b..e26fbc727 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -39,7 +39,7 @@ extern s16 gBlastBurnIQReq; // 0x14d extern s16 gVoltTackleIQReq; // 0x14d extern char* gFormattedStatusNames[]; -extern void xxx_pokemon2_to_pokemonstruct_808DF44(PokemonStruct1*, PokemonStruct2*); +extern void DungeonMonToPokemon(Pokemon*, DungeonMon*); // arm9.bin::0205C34C void LoadMonsterParameters(void) @@ -66,7 +66,7 @@ void InitializeRecruitedPokemon(void) gRecruitedPokemonRef->pokemon[index].flags = 0; for (index = 0; index < 4; index++) - gRecruitedPokemonRef->pokemon2[index].flags = 0; + gRecruitedPokemonRef->dungeonTeam[index].flags = 0; for (index = 0; index < MAX_TEAM_MEMBERS; index++) { gRecruitedPokemonRef->team[index].speciesNum = 0; @@ -76,7 +76,7 @@ void InitializeRecruitedPokemon(void) void sub_808CE74(s16 _species, bool32 _isLeader, u8* name) { - struct PokemonStruct1 pokemon; + struct Pokemon pokemon; u8 name_buffer[20]; u32 friendArea; s32 i; @@ -134,7 +134,7 @@ void sub_808CE74(s16 _species, bool32 _isLeader, u8* name) } } -void sub_808CFD0(PokemonStruct1 *pokemon, s16 _species, u8* name, u32 _itemID, DungeonLocation *location, u16 *moveID) +void sub_808CFD0(Pokemon *pokemon, s16 _species, u8* name, u32 _itemID, DungeonLocation *location, u16 *moveID) { u8 name_buffer[20]; s32 i; @@ -191,7 +191,7 @@ void sub_808CFD0(PokemonStruct1 *pokemon, s16 _species, u8* name, u32 _itemID, D } } -void sub_808D0D8(PokemonStruct1 *pokemon) +void sub_808D0D8(Pokemon *pokemon) { pokemon->level = 1; pokemon->pokeHP = GetBaseHP(pokemon->speciesNum); @@ -206,7 +206,7 @@ void sub_808D0D8(PokemonStruct1 *pokemon) sub_808E490(pokemon->moves, pokemon->speciesNum); } -void ConvertStoryMonToPokemon(PokemonStruct1 *dst, struct StoryMonData *src) +void ConvertStoryMonToPokemon(Pokemon *dst, struct StoryMonData *src) { s32 i; @@ -242,7 +242,7 @@ void ConvertStoryMonToPokemon(PokemonStruct1 *dst, struct StoryMonData *src) } } -PokemonStruct1 *sub_808D1DC(PokemonStruct1 *pokemon) +Pokemon *sub_808D1DC(Pokemon *pokemon) { u32 friendArea; s32 i; @@ -256,7 +256,7 @@ PokemonStruct1 *sub_808D1DC(PokemonStruct1 *pokemon) u8 speciesFriendArea = sub_80923D4(i); if (speciesFriendArea == friendArea) { gRecruitedPokemonRef->pokemon[i] = *pokemon; - gRecruitedPokemonRef->pokemon[i].flags &= 0xbfff; + gRecruitedPokemonRef->pokemon[i].flags &= ~(POKEMON_FLAG_x4000); sub_80980B4(pokemon->speciesNum); return &gRecruitedPokemonRef->pokemon[i]; } @@ -265,7 +265,7 @@ PokemonStruct1 *sub_808D1DC(PokemonStruct1 *pokemon) return NULL; } -PokemonStruct1 *sub_808D278(s32 species) +Pokemon *sub_808D278(s32 species) { u32 friendArea; s32 i; @@ -286,21 +286,21 @@ PokemonStruct1 *sub_808D278(s32 species) return NULL; } -PokemonStruct1 *sub_808D2E8(s32 species, u8 *name, u32 _itemID, DungeonLocation *location, u16 *moveID) +Pokemon *sub_808D2E8(s32 species, u8 *name, u32 _itemID, DungeonLocation *location, u16 *moveID) { - PokemonStruct1 pokemon; + Pokemon pokemon; sub_808CFD0(&pokemon, species, name, (u8)_itemID, location, moveID); return sub_808D1DC(&pokemon); } -void sub_808D31C(PokemonStruct1 *param_1) +void sub_808D31C(Pokemon *param_1) { if ((!IsMonTeamLeader(param_1)) && !IsMonPartner(param_1)) param_1->flags = 0; } -PokemonStruct1 * GetPlayerPokemonStruct(void) +Pokemon * GetPlayerPokemonStruct(void) { s32 index; @@ -315,7 +315,7 @@ PokemonStruct1 * GetPlayerPokemonStruct(void) return NULL; } -PokemonStruct1 * sub_808D378(void) +Pokemon * sub_808D378(void) { s32 index; @@ -330,7 +330,7 @@ PokemonStruct1 * sub_808D378(void) return NULL; } -PokemonStruct1 * sub_808D3BC(void) +Pokemon * sub_808D3BC(void) { s32 index; for (index = 0; index < NUM_MONSTERS; index++) { @@ -343,7 +343,7 @@ PokemonStruct1 * sub_808D3BC(void) return NULL; } -PokemonStruct1 * sub_808D3F8(void) +Pokemon * sub_808D3F8(void) { s32 index; for (index = 0; index < NUM_MONSTERS; index++) { @@ -356,9 +356,9 @@ PokemonStruct1 * sub_808D3F8(void) return NULL; } -PokemonStruct1 * sub_808D434(s16 species, s32 param_2) +Pokemon * sub_808D434(s16 species, s32 param_2) { - PokemonStruct1 *pokeStruct; + Pokemon *pokeStruct; s32 index; s32 counter; s32 species_s32 = species; @@ -380,7 +380,7 @@ s32 GetFriendSum_808D480(void) { s32 index; s32 count; - PokemonStruct1 *pokeStruct; + Pokemon *pokeStruct; pokeStruct = gRecruitedPokemonRef->pokemon; count = 0; @@ -396,7 +396,7 @@ s32 GetFriendSum_808D480(void) bool8 sub_808D4B0(void) { s32 index; - PokemonStruct1 *pokeStruct; + Pokemon *pokeStruct; bool8 flag; pokeStruct = gRecruitedPokemonRef->pokemon; @@ -414,7 +414,7 @@ bool8 sub_808D4B0(void) bool8 sub_808D500(void) { s32 index; - PokemonStruct1 *pokeStruct; + Pokemon *pokeStruct; bool8 flag; pokeStruct = gRecruitedPokemonRef->pokemon; @@ -432,7 +432,7 @@ bool8 sub_808D500(void) s32 GetUnitSum_808D544(s32 *team) { s32 count, i; - PokemonStruct1 *mon = gRecruitedPokemonRef->pokemon; + Pokemon *mon = gRecruitedPokemonRef->pokemon; count = 0; for (i = 0; i < NUM_MONSTERS; i++, mon++) { @@ -449,7 +449,7 @@ s32 GetUnitSum_808D544(s32 *team) s32 sub_808D580(s32 *team) { - PokemonStruct1 *mon; + Pokemon *mon; s32 index; s32 counter; @@ -492,7 +492,7 @@ s32 sub_808D580(s32 *team) s32 sub_808D654(s32 *ptr) { s32 i; - PokemonStruct1 *mon = &gRecruitedPokemonRef->pokemon[0]; + Pokemon *mon = &gRecruitedPokemonRef->pokemon[0]; s32 count = 0; s32 *ptr2; @@ -513,7 +513,7 @@ s32 sub_808D654(s32 *ptr) s32 sub_808D6A4(s32 *ptr) { s32 i; - PokemonStruct1 *mon = &gRecruitedPokemonRef->pokemon[0]; + Pokemon *mon = &gRecruitedPokemonRef->pokemon[0]; s32 count = 0; s32 *ptr2; @@ -536,7 +536,7 @@ bool8 sub_808D6E8() s32 count = 0; s32 size_count = 0; for (i = 0; i < NUM_MONSTERS; i++) { - PokemonStruct1* pokemon = &gRecruitedPokemonRef->pokemon[i]; + Pokemon* pokemon = &gRecruitedPokemonRef->pokemon[i]; if (PokemonExists(pokemon) && PokemonFlag2(pokemon)) { size_count += GetBodySize(pokemon->speciesNum); count++; @@ -550,7 +550,7 @@ bool8 sub_808D6E8() bool8 sub_808D750(s32 index_) { - PokemonStruct1* pokemon; + Pokemon* pokemon; s32 i; s32 index = (s16) index_; s32 count = 0; @@ -577,19 +577,19 @@ bool8 sub_808D6E8() void PeekPokemonItem(s16 index_, BulkItem* item) { s32 index = index_; - PokemonStruct1* pokemon = &gRecruitedPokemonRef->pokemon[index]; + Pokemon* pokemon = &gRecruitedPokemonRef->pokemon[index]; item->id = pokemon->heldItem.id; item->quantity = pokemon->heldItem.quantity; } void GivePokemonItem(s16 index_, BulkItem* item) { s32 index = index_; - PokemonStruct1* pokemon = &gRecruitedPokemonRef->pokemon[index]; + Pokemon* pokemon = &gRecruitedPokemonRef->pokemon[index]; pokemon->heldItem.id = item->id; pokemon->heldItem.quantity = item->quantity; } -bool8 IsPokemonRenamed(PokemonStruct1* pokemon) { +bool8 IsPokemonRenamed(Pokemon* pokemon) { char species_name[20]; char* species = GetMonSpecies(pokemon->speciesNum); s32 i; @@ -665,7 +665,7 @@ char * GetMonSpecies(s16 index) return gMonsterParameters[index].species; } -void PrintColoredPokeNameToBuffer(u8 *buffer, PokemonStruct1 *pokemon, s32 colorNum) +void PrintColoredPokeNameToBuffer(u8 *buffer, Pokemon *pokemon, s32 colorNum) { u8 nameBuffer [20]; @@ -676,7 +676,7 @@ void PrintColoredPokeNameToBuffer(u8 *buffer, PokemonStruct1 *pokemon, s32 color sprintfStatic(buffer,_("{color}%c%s{reset}"),colorNum,nameBuffer); } -void sub_808D9DC(u8 *buffer, PokemonStruct2 *param_2, s32 colorNum) +void sub_808D9DC(u8 *buffer, DungeonMon *param_2, s32 colorNum) { u8 nameBuffer [20]; @@ -687,7 +687,7 @@ void sub_808D9DC(u8 *buffer, PokemonStruct2 *param_2, s32 colorNum) sprintfStatic(buffer,_("{color}%c%s{reset}"),colorNum,nameBuffer); } -void sub_808DA0C(u8 *buffer, PokemonStruct2 *param_2) +void sub_808DA0C(u8 *buffer, DungeonMon *param_2) { u8 nameBuffer [20]; @@ -695,7 +695,7 @@ void sub_808DA0C(u8 *buffer, PokemonStruct2 *param_2) sprintfStatic(buffer,"%s",nameBuffer); } -void PrintPokeNameToBuffer(u8 *buffer, PokemonStruct1 *pokemon) +void PrintPokeNameToBuffer(u8 *buffer, Pokemon *pokemon) { StrncpyCustom(buffer, pokemon->name, POKEMON_NAME_LENGTH); } @@ -921,102 +921,94 @@ bool8 IsPokemonDialogueSpriteAvail(s16 index, s32 spriteId) return (gMonsterParameters[index].dialogueSprites >> spriteId) & 1; } -void xxx_pokemonstruct_index_to_pokemon2_808DE30(void* r0, u32 r1) +void xxx_pokemonstruct_index_to_pokemon2_808DE30(void* r0, u32 recruitedPokemonId) { - xxx_pokemonstruct_to_pokemon2_808DE50(r0, &gRecruitedPokemonRef->pokemon[r1], r1); + PokemonToDungeonMon(r0, &gRecruitedPokemonRef->pokemon[recruitedPokemonId], recruitedPokemonId); } -void xxx_pokemonstruct_to_pokemon2_808DE50(PokemonStruct2 * a1, PokemonStruct1 *pokemon, s32 a3) -{ - s32 i; - BulkItem* held; - Item* slot; - - a1->flags = pokemon->flags; - a1->level = pokemon->level; - a1->IQ = pokemon->IQ; - a1->IQSkills = pokemon->IQSkills; - GenerateHiddenPower(&a1->hiddenPower); - a1->dungeonLocation = pokemon->dungeonLocation; - a1->isTeamLeader = pokemon->isTeamLeader; - a1->unkA = a3; - a1->speciesNum = pokemon->speciesNum; - a1->tacticIndex = pokemon->tacticIndex; - a1->unk12 = pokemon->pokeHP; - a1->unk10 = pokemon->pokeHP; - - for (i = 0; i < 2; i++) { - a1->offense.att[i] = pokemon->offense.att[i]; - a1->offense.def[i] = pokemon->offense.def[i]; - } - - a1->currExp = pokemon->currExp; - CopyAndResetMoves(&a1->moves, pokemon->moves); - - for (i = 0; i < POKEMON_NAME_LENGTH; i++) { - a1->name[i] = pokemon->name[i]; - } - - held = &pokemon->heldItem; - slot = &a1->itemSlot; - - if ((u32)(-held->id | held->id) >> 31) { - HeldItemToSlot(slot, held); - } - else { - slot->id = ITEM_NOTHING; - slot->quantity = 0; - slot->flags = 0; - } - - a1->belly = IntToFixedPoint(100); - a1->maxBelly = IntToFixedPoint(100); -} - -void xxx_pokemon2_to_pokemonstruct_index_808DF2C(s32 a1, PokemonStruct2* a2) -{ - xxx_pokemon2_to_pokemonstruct_808DF44(&a1[gRecruitedPokemonRef->pokemon], a2); -} - - -void xxx_pokemon2_to_pokemonstruct_808DF44(PokemonStruct1* pokemon, PokemonStruct2* a2) +void PokemonToDungeonMon(DungeonMon *dst, Pokemon *src, s32 recruitedPokemonId) { s32 i; - pokemon->flags = a2->flags; - pokemon->level = a2->level; - pokemon->IQ = a2->IQ; - pokemon->IQSkills = a2->IQSkills; - pokemon->dungeonLocation = a2->dungeonLocation; - pokemon->isTeamLeader = a2->isTeamLeader; - pokemon->speciesNum = a2->speciesNum; - pokemon->tacticIndex = a2->tacticIndex; - pokemon->pokeHP = a2->unk12; + dst->flags = src->flags; + dst->level = src->level; + dst->IQ = src->IQ; + dst->IQSkills = src->IQSkills; + GenerateHiddenPower(&dst->hiddenPower); + dst->dungeonLocation = src->dungeonLocation; + dst->isTeamLeader = src->isTeamLeader; + dst->recruitedPokemonId = recruitedPokemonId; + dst->speciesNum = src->speciesNum; + dst->tacticIndex = src->tacticIndex; + dst->unk12 = src->pokeHP; + dst->unk10 = src->pokeHP; for (i = 0; i < 2; i++) { - pokemon->offense.att[i] = a2->offense.att[i]; - pokemon->offense.def[i] = a2->offense.def[i]; + dst->offense.att[i] = src->offense.att[i]; + dst->offense.def[i] = src->offense.def[i]; } - pokemon->currExp = a2->currExp; - CopyBareMoveData(pokemon->moves, a2->moves.moves); + dst->currExp = src->currExp; + CopyAndResetMoves(&dst->moves, src->moves); for (i = 0; i < POKEMON_NAME_LENGTH; i++) { - pokemon->name[i] = a2->name[i]; + dst->name[i] = src->name[i]; } - if (a2->itemSlot.flags & ITEM_FLAG_EXISTS) { - SlotToHeldItem(&pokemon->heldItem, &a2->itemSlot); + if (BulkItemExists(&src->heldItem)) { + HeldItemToSlot(&dst->itemSlot, &src->heldItem); } else { - pokemon->heldItem.id = ITEM_NOTHING; + ZeroOutItem(&dst->itemSlot); + } + + dst->belly = IntToFixedPoint(100); + dst->maxBelly = IntToFixedPoint(100); +} + +void DungeonMonToRecruitedPokemon(s32 id, DungeonMon* src) +{ + DungeonMonToPokemon(&gRecruitedPokemonRef->pokemon[id], src); +} + +void DungeonMonToPokemon(Pokemon* dst, DungeonMon* src) +{ + s32 i; + + dst->flags = src->flags; + dst->level = src->level; + dst->IQ = src->IQ; + dst->IQSkills = src->IQSkills; + dst->dungeonLocation = src->dungeonLocation; + dst->isTeamLeader = src->isTeamLeader; + dst->speciesNum = src->speciesNum; + dst->tacticIndex = src->tacticIndex; + dst->pokeHP = src->unk12; + + for (i = 0; i < 2; i++) { + dst->offense.att[i] = src->offense.att[i]; + dst->offense.def[i] = src->offense.def[i]; + } + + dst->currExp = src->currExp; + CopyBareMoveData(dst->moves, src->moves.moves); + + for (i = 0; i < POKEMON_NAME_LENGTH; i++) { + dst->name[i] = src->name[i]; + } + + if (src->itemSlot.flags & ITEM_FLAG_EXISTS) { + SlotToHeldItem(&dst->heldItem, &src->itemSlot); + } + else { + dst->heldItem.id = ITEM_NOTHING; } } -void sub_808DFDC(s32 a1, PokemonStruct2* a2) +void sub_808DFDC(s32 a1, DungeonMon* a2) { // transfer item from unk to pokemon at index - PokemonStruct1* pokemon = &gRecruitedPokemonRef->pokemon[a1]; + Pokemon* pokemon = &gRecruitedPokemonRef->pokemon[a1]; if (a2->itemSlot.flags & ITEM_FLAG_EXISTS) { SlotToHeldItem(&pokemon->heldItem, &a2->itemSlot); } @@ -1142,7 +1134,7 @@ bool8 CanMonLearnMove(u16 moveID, s16 _species) } -s32 sub_808E218(unkStruct_808E218_arg* a1, PokemonStruct1* pokemon) +s32 sub_808E218(unkStruct_808E218_arg* a1, Pokemon* pokemon) { s32 i; s32 count; @@ -1201,7 +1193,7 @@ s32 sub_808E218(unkStruct_808E218_arg* a1, PokemonStruct1* pokemon) return count; } -s32 GetEvolutionSequence(PokemonStruct1* pokemon, struct EvolveStage* a2) +s32 GetEvolutionSequence(Pokemon* pokemon, struct EvolveStage* a2) { s32 count; s32 species; diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 321c86d57..2f8da0776 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -64,7 +64,7 @@ bool8 HasRecruitedMon(s16 species) { s32 species_s32 = species; s32 i = 0; - PokemonStruct1 *pokemon = gRecruitedPokemonRef->pokemon; + Pokemon *pokemon = gRecruitedPokemonRef->pokemon; for (i = 0; i < NUM_MONSTERS; i++) { if (((u8)pokemon->flags & 1)) { @@ -268,7 +268,7 @@ s32 ExtractLevel(SpawnPokemonData *data) return (data->bits >> PACKED_BITS_LEVEL_SHIFT) & PACKED_BITS_LEVEL; } -UNUSED static void GetMonOffenseStats(PokemonStruct1 *mon, struct UnusedOffenseStruct *dst) +UNUSED static void GetMonOffenseStats(Pokemon *mon, struct UnusedOffenseStruct *dst) { dst->att[0] = mon->offense.att[0]; dst->att[1] = mon->offense.att[1]; @@ -543,7 +543,7 @@ s32 SaveRecruitedPokemon(u8 *a1, s32 a2) count = 0; for (i = 0; i < NUM_MONSTERS; i++) { - PokemonStruct1 *pokemon = &gRecruitedPokemonRef->pokemon[i]; + Pokemon *pokemon = &gRecruitedPokemonRef->pokemon[i]; if (PokemonExists(pokemon)) { if (pokemon->flags & POKEMON_FLAG_ON_TEAM) @@ -622,7 +622,7 @@ s32 RestoreRecruitedPokemon(u8 *a1, s32 a2) } // arm9.bin::0205C9D4 -void WritePoke1Bits(DataSerializer* a1, PokemonStruct1* pokemon) +void WritePoke1Bits(DataSerializer* a1, Pokemon* pokemon) { WriteBits(a1, &pokemon->level, 7); WriteBits(a1, &pokemon->speciesNum, 9); @@ -644,9 +644,9 @@ void WritePoke1Bits(DataSerializer* a1, PokemonStruct1* pokemon) } // arm9.bin::0205C890 -void ReadPoke1Bits(DataSerializer* a1, PokemonStruct1* pokemon) +void ReadPoke1Bits(DataSerializer* a1, Pokemon* pokemon) { - memset(pokemon, 0, sizeof(PokemonStruct1)); + memset(pokemon, 0, sizeof(Pokemon)); pokemon->flags = POKEMON_FLAG_NONE; pokemon->isTeamLeader = FALSE; @@ -686,7 +686,7 @@ s32 SavePoke2s(u8* buffer, s32 size) data_u8_zero = 0; for (i = 0; i < 4; i++) { - PokemonStruct2* pokemon2 = &gRecruitedPokemonRef->pokemon2[i]; + DungeonMon* pokemon2 = &gRecruitedPokemonRef->dungeonTeam[i]; WriteBits(&backup, &pokemon2->flags, 2); WriteBits(&backup, pokemon2->isTeamLeader ? &data_u8_neg1 : &data_u8_zero, 1); @@ -694,7 +694,7 @@ s32 SavePoke2s(u8* buffer, s32 size) WriteDungeonLocationBits(&backup, &pokemon2->dungeonLocation); WriteBits(&backup, &pokemon2->IQ, 10); - WriteBits(&backup, &pokemon2->unkA, 16); + WriteBits(&backup, &pokemon2->recruitedPokemonId, 16); WriteBits(&backup, &pokemon2->unkC, 16); WriteBits(&backup, &pokemon2->speciesNum, 9); WriteBits(&backup, &pokemon2->unk10, 10); @@ -727,10 +727,10 @@ s32 RestorePoke2s(u8* a1, s32 size) InitBitReader(&backup, a1, size); for (i = 0; i < 4; i++) { - PokemonStruct2* pokemon2 = &gRecruitedPokemonRef->pokemon2[i]; + DungeonMon* pokemon2 = &gRecruitedPokemonRef->dungeonTeam[i]; u8 unk2; - memset(pokemon2, 0, sizeof(PokemonStruct2)); + memset(pokemon2, 0, sizeof(DungeonMon)); ReadBits(&backup, &pokemon2->flags, 2); @@ -745,7 +745,7 @@ s32 RestorePoke2s(u8* a1, s32 size) ReadDungeonLocationBits(&backup, &pokemon2->dungeonLocation); ReadBits(&backup, &pokemon2->IQ, 10); - ReadBits(&backup, &pokemon2->unkA, 16); + ReadBits(&backup, &pokemon2->recruitedPokemonId, 16); ReadBits(&backup, &pokemon2->unkC, 16); ReadBits(&backup, &pokemon2->speciesNum, 9); ReadBits(&backup, &pokemon2->unk10, 10); diff --git a/src/pokemon_evolution.c b/src/pokemon_evolution.c index f8823d646..eb4684cec 100644 --- a/src/pokemon_evolution.c +++ b/src/pokemon_evolution.c @@ -9,7 +9,7 @@ #include "constants/evolve_type.h" #include "constants/evolution_status.h" -void SetMonEvolveStatus(PokemonStruct1 *pokemon, EvolveStatus *evolveStatus, bool8 param_3) +void SetMonEvolveStatus(Pokemon *pokemon, EvolveStatus *evolveStatus, bool8 param_3) { struct FriendAreaCapacity friendAreaCapacity; struct unkEvolve evolveConditions; @@ -170,7 +170,7 @@ void SetMonEvolveStatus(PokemonStruct1 *pokemon, EvolveStatus *evolveStatus, boo } } -s32 GetMonSummaryScreenEvoStringId(PokemonStruct1 *pokemon) +s32 GetMonSummaryScreenEvoStringId(Pokemon *pokemon) { EvolveStatus evolveStatus; @@ -186,11 +186,11 @@ s32 GetMonSummaryScreenEvoStringId(PokemonStruct1 *pokemon) } } -PokemonStruct1 *sub_808F734(PokemonStruct1 *pokemon, s16 _species) +Pokemon *sub_808F734(Pokemon *pokemon, s16 _species) { - PokemonStruct1 *uVar1; - PokemonStruct1 *iVar3; - PokemonStruct1 pokeStruct; + Pokemon *uVar1; + Pokemon *iVar3; + Pokemon pokeStruct; s32 species = _species; iVar3 = NULL; @@ -208,11 +208,11 @@ PokemonStruct1 *sub_808F734(PokemonStruct1 *pokemon, s16 _species) return uVar1; } -PokemonStruct1 *sub_808F798(PokemonStruct1 *pokemon, s16 _species) +Pokemon *sub_808F798(Pokemon *pokemon, s16 _species) { s32 r6; s32 i; - PokemonStruct1 pokeStruct; + Pokemon pokeStruct; LevelData levelData; u8 buffer [64]; s32 species = _species; @@ -248,7 +248,7 @@ PokemonStruct1 *sub_808F798(PokemonStruct1 *pokemon, s16 _species) return sub_808D1DC(&pokeStruct); } -UNUSED static void sub_808F83C(PokemonStruct1 *pokemon, s16 species, u8 *r2) +UNUSED static void sub_808F83C(Pokemon *pokemon, s16 species, u8 *r2) { *r2 = 0; } diff --git a/src/pokemon_mail.c b/src/pokemon_mail.c index 15bd4e446..1cf8c93c5 100644 --- a/src/pokemon_mail.c +++ b/src/pokemon_mail.c @@ -406,7 +406,7 @@ bool8 sub_803C0DC(s16 species) bool8 sub_803C110(s16 index) { - PokemonStruct1 *pokeStruct; + Pokemon *pokeStruct; const s16 *psVar5; const s16 *psVar6; s32 species_s32; diff --git a/src/pokemon_summary_window.c b/src/pokemon_summary_window.c index 474c3f5ca..290ee186f 100644 --- a/src/pokemon_summary_window.c +++ b/src/pokemon_summary_window.c @@ -234,7 +234,7 @@ void ShowPokemonSummaryWindow(s32 which, s32 currSubWindowId, struct MonSummaryI sub_80073E0(windowId); } -void SetMonSummaryInfo(struct MonSummaryInfo *dst, struct PokemonStruct1 *pokemon, bool8 param_3) +void SetMonSummaryInfo(struct MonSummaryInfo *dst, struct Pokemon *pokemon, bool8 param_3) { s32 index; diff --git a/src/run_dungeon.c b/src/run_dungeon.c index ab44cc245..f0a55dbf9 100644 --- a/src/run_dungeon.c +++ b/src/run_dungeon.c @@ -92,7 +92,7 @@ extern void sub_80521D0(void); extern void sub_803F27C(u8); extern void sub_807E7FC(u8); extern bool8 IsLevelResetTo1(u8 dungeon); -extern void sub_8068A84(PokemonStruct1 *pokemon); +extern void sub_8068A84(Pokemon *pokemon); extern void sub_807EAA0(u32, u32); extern void SetFloorItemMonsterSpawns(void); extern void sub_80842F0(void); @@ -857,7 +857,7 @@ static void sub_8043FD0(void) for (level = 2; level <= 5; level++) { s32 i, monId, movesCount; for (monId = 0; monId < NUM_MONSTERS; monId++) { - PokemonStruct1 *monStruct = &gRecruitedPokemonRef->pokemon[monId]; + Pokemon *monStruct = &gRecruitedPokemonRef->pokemon[monId]; if (PokemonExists(monStruct) && PokemonFlag2(monStruct)) { u16 learnedMoves[16]; LevelData levelData; @@ -924,7 +924,7 @@ void EnforceMaxItemsAndMoney(void) ZeroOutItem(&gTeamInventoryRef->teamItems[i]); } for (i = 0; i < NUM_MONSTERS; i++) { - PokemonStruct1 *mon = (&gRecruitedPokemonRef->pokemon[i]); + Pokemon *mon = (&gRecruitedPokemonRef->pokemon[i]); if (PokemonExists(mon) && PokemonFlag2(mon)) { mon->heldItem.id = 0; } diff --git a/src/status_checks.c b/src/status_checks.c index 783c83a04..47aa1d66f 100644 --- a/src/status_checks.c +++ b/src/status_checks.c @@ -12,6 +12,7 @@ #include "dungeon_ai_attack.h" #include "dungeon_random.h" #include "dungeon_logic.h" +#include "moves.h" extern const char *gPtrFrozenMessage[]; extern const char *gPtrWrappedAroundMessage[]; @@ -172,7 +173,7 @@ bool8 sub_80701A4(Entity *pokemon) SetMonsterActionFields(&pokemonInfo->action, ACTION_USE_MOVE_PLAYER); index_1 = index; r7 = &pokemonInfo->action.actionParameters[1].actionUseIndex; - if((index > 0) && (move->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN)) + if((index > 0) && MOVE_FLAG_LINK_CHAIN(move)) { do { move2 = &pokemonInfo->moves.moves[index_1 + 1]; diff --git a/src/string_format.c b/src/string_format.c index f8df10db6..4a510fa1b 100644 --- a/src/string_format.c +++ b/src/string_format.c @@ -683,7 +683,7 @@ const u8 *FormatString(const u8 *str, u8 *dst, u8 *dstMax, u16 flags) case 'm': str++; if (*str == 'm') { - PokemonStruct1 *monStruct = sub_808D3BC(); + Pokemon *monStruct = sub_808D3BC(); txtPtr = sFormatBuffer_UnknownMonster; PrintColoredPokeNameToBuffer(sFormatBuffer_UnknownMonster, monStruct, 0); } diff --git a/src/text_2.c b/src/text_2.c index 7cc915548..65ed8e441 100644 --- a/src/text_2.c +++ b/src/text_2.c @@ -65,7 +65,7 @@ u32 DrawCharOnWindowInternal(Window *windows, s32 x, s32 y, u32 chr, u32 color, sp8 = sp0->unk0 - 3; if (gDrawTextShadow != 0) { - var_2C = (sp0->unkA >> 1) & 1; + var_2C = (sp0->unkA & 2) != 0; } else { var_2C = 0; diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c index cec89bf2e..40b7731f9 100644 --- a/src/thank_you_wonder_mail.c +++ b/src/thank_you_wonder_mail.c @@ -1238,8 +1238,8 @@ void UpdateThankYouMailText(void) u8 buffer1 [80]; u8 buffer2 [80]; u8 mailIndex; - PokemonStruct1 *pokeStruct; - PokemonStruct1 *pokeStruct2; + Pokemon *pokeStruct; + Pokemon *pokeStruct2; s32 linkStatus; unkStruct_203B480 *mail; diff --git a/src/wigglytuff_shop2.c b/src/wigglytuff_shop2.c index cc3562403..baa6afc3a 100644 --- a/src/wigglytuff_shop2.c +++ b/src/wigglytuff_shop2.c @@ -136,7 +136,7 @@ static void sub_8021A60(void) s32 areaIndex; s32 iVar6; s32 index; - PokemonStruct1 *pokeStruct; + Pokemon *pokeStruct; sWigglytuffShop2Work->numPokemoninFriendArea = 0; diff --git a/src/world_map.c b/src/world_map.c index 387f4b173..173aab7de 100644 --- a/src/world_map.c +++ b/src/world_map.c @@ -276,7 +276,7 @@ static void sub_801059C(void) u8 filename[0xC]; s32 i, size; - PokemonStruct1 *pokeStruct = GetPlayerPokemonStruct(); + Pokemon *pokeStruct = GetPlayerPokemonStruct(); OpenedFile *file = OpenFileAndGetFileDataPtr(gUnknown_80D4014[0], &gTitleMenuFileArchive); OpenedFile *file2 = OpenFileAndGetFileDataPtr(gUnknown_80D4014[1], &gTitleMenuFileArchive);