Some flags clean-up

This commit is contained in:
DizzyEggg
2025-06-15 18:47:45 +02:00
parent 1dd50d5202
commit cf06a42eb2
80 changed files with 531 additions and 569 deletions

View File

@@ -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;

View File

@@ -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);

View File

@@ -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];

View File

@@ -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);

View File

@@ -11,7 +11,7 @@
typedef struct unkStruct_203B484
{
/* 0x0 */ u32 unk0;
/* 0x4 */ PokemonStruct1 unk4;
/* 0x4 */ Pokemon unk4;
} unkStruct_203B484;
// size: 0x84

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;

View File

@@ -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];

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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;

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -42,7 +42,7 @@ struct WorldMapInfo
{
DungeonLocation startLocation;
DungeonSetupSubstruct unk4;
PokemonStruct1 mon;
Pokemon mon;
u8 unk6C;
u8 unk6D[WORLD_MAP_UNK_6D_COUNT];
};