155 lines
3.3 KiB
C
155 lines
3.3 KiB
C
#ifndef GUARD_POKEMON_H
|
|
#define GUARD_POKEMON_H
|
|
|
|
struct PokemonSubstruct0
|
|
{
|
|
u16 species;
|
|
u16 heldItem;
|
|
u32 experience;
|
|
u8 ppBonuses;
|
|
u8 friendship;
|
|
};
|
|
|
|
struct PokemonSubstruct1
|
|
{
|
|
u16 moves[4];
|
|
u8 pp[4];
|
|
};
|
|
|
|
struct PokemonSubstruct2
|
|
{
|
|
u8 hpEV;
|
|
u8 attackEV;
|
|
u8 defenseEV;
|
|
u8 speedEV;
|
|
u8 spAttackEV;
|
|
u8 spDefenseEV;
|
|
u8 cool;
|
|
u8 beauty;
|
|
u8 cute;
|
|
u8 smart;
|
|
u8 tough;
|
|
u8 sheen;
|
|
};
|
|
|
|
struct PokemonSubstruct3
|
|
{
|
|
/*0x00*/ u8 pokerus;
|
|
/*0x01*/ u8 metLocation;
|
|
|
|
/*0x02*/ u16 metLevel:7;
|
|
/*0x02*/ u16 metGame:4;
|
|
/*0x03*/ u16 pokeball:4;
|
|
/*0x03*/ u16 otGender:1;
|
|
|
|
/*0x04*/ u32 hpIV:5;
|
|
/*0x04*/ u32 attackIV:5;
|
|
/*0x05*/ u32 defenseIV:5;
|
|
/*0x05*/ u32 speedIV:5;
|
|
/*0x05*/ u32 spAttackIV:5;
|
|
/*0x06*/ u32 spDefenseIV:5;
|
|
/*0x07*/ u32 isEgg:1;
|
|
/*0x07*/ u32 altAbility:1;
|
|
|
|
/*0x08*/ u32 coolRibbon:3;
|
|
/*0x08*/ u32 beautyRibbon:3;
|
|
/*0x08*/ u32 cuteRibbon:3;
|
|
/*0x09*/ u32 smartRibbon:3;
|
|
/*0x09*/ u32 toughRibbon:3;
|
|
/*0x09*/ u32 championRibbon:1;
|
|
/*0x0A*/ u32 winningRibbon:1;
|
|
/*0x0A*/ u32 victoryRibbon:1;
|
|
/*0x0A*/ u32 artistRibbon:1;
|
|
/*0x0A*/ u32 effortRibbon:1;
|
|
/*0x0A*/ u32 giftRibbon1:1;
|
|
/*0x0A*/ u32 giftRibbon2:1;
|
|
/*0x0A*/ u32 giftRibbon3:1;
|
|
/*0x0A*/ u32 giftRibbon4:1;
|
|
/*0x0B*/ u32 giftRibbon5:1;
|
|
/*0x0B*/ u32 giftRibbon6:1;
|
|
/*0x0B*/ u32 giftRibbon7:1;
|
|
/*0x0B*/ u32 fatefulEncounter:5; // unused in Ruby/Sapphire, but the high bit must be set for Mew/Deoxys to obey in FR/LG/Emerald
|
|
};
|
|
|
|
union PokemonSubstruct
|
|
{
|
|
struct PokemonSubstruct0 type0;
|
|
struct PokemonSubstruct1 type1;
|
|
struct PokemonSubstruct2 type2;
|
|
struct PokemonSubstruct3 type3;
|
|
u16 raw[6];
|
|
};
|
|
|
|
struct BoxPokemon
|
|
{
|
|
/*0x00*/ u32 personality;
|
|
/*0x04*/ u32 otId;
|
|
/*0x08*/ u8 nickname[POKEMON_NAME_LENGTH];
|
|
/*0x12*/ u8 language;
|
|
/*0x13*/ u8 isBadEgg:1;
|
|
u8 hasSpecies:1;
|
|
u8 isEgg:1;
|
|
/*0x14*/ u8 otName[OT_NAME_LENGTH];
|
|
/*0x1B*/ u8 markings;
|
|
/*0x1C*/ u16 checksum;
|
|
/*0x1E*/ u16 unknown;
|
|
|
|
union
|
|
{
|
|
u32 raw[12];
|
|
union PokemonSubstruct substructs[4];
|
|
} secure;
|
|
}; /*size = 0x50*/
|
|
|
|
struct Pokemon
|
|
{
|
|
/*0x00*/ struct BoxPokemon box;
|
|
/*0x50*/ u32 status;
|
|
/*0x54*/ u8 level;
|
|
/*0x55*/ u8 mail;
|
|
/*0x56*/ u16 hp;
|
|
/*0x58*/ u16 maxHP;
|
|
/*0x5A*/ u16 attack;
|
|
/*0x5C*/ u16 defense;
|
|
/*0x5E*/ u16 speed;
|
|
/*0x60*/ u16 spAttack;
|
|
/*0x62*/ u16 spDefense;
|
|
};
|
|
|
|
struct BattleTowerPokemon
|
|
{
|
|
/*0x00*/u16 species;
|
|
/*0x02*/u16 heldItem;
|
|
/*0x04*/u16 moves[4];
|
|
/*0x0C*/u8 level;
|
|
/*0x0D*/u8 ppBonuses;
|
|
/*0x0E*/u8 hpEV;
|
|
/*0x0F*/u8 attackEV;
|
|
/*0x10*/u8 defenseEV;
|
|
/*0x11*/u8 speedEV;
|
|
/*0x12*/u8 spAttackEV;
|
|
/*0x13*/u8 spDefenseEV;
|
|
/*0x14*/u32 otId;
|
|
/*0x18*/u32 hpIV:5;
|
|
/*0x18*/u32 attackIV:5;
|
|
/*0x19*/u32 defenseIV:5;
|
|
/*0x19*/u32 speedIV:5;
|
|
/*0x1A*/u32 spAttackIV:5;
|
|
/*0x1A*/u32 spDefenseIV:5;
|
|
/*0x1B*/u32 gap:1;
|
|
/*0x1B*/u32 altAbility:1;
|
|
/*0x1C*/u32 personality;
|
|
/*0x20*/u8 nickname[POKEMON_NAME_LENGTH + 1];
|
|
/*0x2B*/u8 friendship;
|
|
};
|
|
|
|
struct PokemonStorage
|
|
{
|
|
/*0x0000*/ u8 currentBox;
|
|
/*0x0004*/ struct BoxPokemon boxes[14][30];
|
|
/*0x8344*/ u8 boxNames[14][9];
|
|
/*0x83c2*/ u8 wallpaper[14];
|
|
};
|
|
|
|
#endif // GUARD_POKEMON_H
|