mirror of
https://github.com/pret/pokediamond.git
synced 2026-08-07 19:24:15 -05:00
196 lines
3.9 KiB
C
196 lines
3.9 KiB
C
#ifndef POKEDIAMOND_POKEMON_H
|
|
#define POKEDIAMOND_POKEMON_H
|
|
|
|
#include "nitro/types.h"
|
|
|
|
// Enums
|
|
|
|
typedef enum {
|
|
EGG=0,
|
|
EVENT=0,
|
|
HATCHED=0,
|
|
PAL_PARK=0,
|
|
TALL_GRASS=2,
|
|
DIALGA_GAME_EVENT=4,
|
|
PALKIA_GAME_EVENT=4,
|
|
CAVE=5,
|
|
HALL_OF_ORIGIN=5,
|
|
SURFING=7,
|
|
FISHING=7,
|
|
BUILDING=9,
|
|
SAFARI_ZONE=10,
|
|
STARTER=12,
|
|
FOSSIL=12,
|
|
GIFT_EEVEE=12
|
|
} EncounterType;
|
|
|
|
typedef enum {
|
|
JAPANESE=1,
|
|
ENGLISH=2,
|
|
FRENCH=3,
|
|
ITALIAN=4,
|
|
GERMAN=5,
|
|
SPANISH=7,
|
|
KOREAN=8
|
|
} OriginLanguage;
|
|
|
|
typedef enum {
|
|
// TODO: Add all Arceus forms
|
|
// and sort by value
|
|
ARCEUS_EARTH=32,
|
|
ARCEUS_FIST=8,
|
|
ARCEUS_NORMAL=0,
|
|
ARCEUS_SKY=16,
|
|
ARCEUS_STONE=40,
|
|
ARCEUS_TOXIC=24,
|
|
BURMY_PLANT=0,
|
|
BURMY_SANDY=8,
|
|
BURMY_TRASH=16,
|
|
DEOXYS_ATTACK=8,
|
|
DEOXYS_DEFENSE=16,
|
|
DEOXYS_NORMAL=0,
|
|
DEOXYS_SPEED=24,
|
|
GIRATINA_ALTERED=0,
|
|
GIRATINA_ORIGIN=8,
|
|
ROTOM_FAN=32,
|
|
ROTOM_FROST=24,
|
|
ROTOM_HEAT=8,
|
|
ROTOM_MOW=40,
|
|
ROTOM_NORMAL=0,
|
|
ROTOM_WASH=16,
|
|
SHAYMIN_LAND=0,
|
|
SHAYMIN_SKY=8,
|
|
SHELLOS_EAST=8,
|
|
SHELLOS_WEST=0,
|
|
UNOWN_EXCLAMATIONMARK =208,
|
|
UNOWN_QUESTIONMARK=216,
|
|
UNOWN_A=0,
|
|
UNOWN_B=8,
|
|
UNOWN_C=16,
|
|
UNOWN_D=24,
|
|
UNOWN_E=32,
|
|
UNOWN_F=40,
|
|
UNOWN_G=48,
|
|
UNOWN_H=56,
|
|
UNOWN_I=64,
|
|
UNOWN_J=72,
|
|
UNOWN_K=80,
|
|
UNOWN_L=88,
|
|
UNOWN_M=96,
|
|
UNOWN_N=104,
|
|
UNOWN_O=112,
|
|
UNOWN_P=120,
|
|
UNOWN_Q=128,
|
|
UNOWN_R=136,
|
|
UNOWN_S=144,
|
|
UNOWN_T=152,
|
|
UNOWN_U=160,
|
|
UNOWN_V=168,
|
|
UNOWN_W=176,
|
|
UNOWN_X=184,
|
|
UNOWN_Y=192,
|
|
UNOWN_Z=200
|
|
} AlternateForms;
|
|
|
|
// Structs
|
|
|
|
typedef struct {
|
|
u16 species;
|
|
u16 heldItem;
|
|
u16 otID;
|
|
u16 otSecretID;
|
|
u32 exp;
|
|
u8 friendship;
|
|
u8 ability;
|
|
u8 circleMarking:1, triangleMarking:1, squareMarking:1, heartMarking:1, starMarking:1, diamondMarking:1;
|
|
OriginLanguage originLanguage;
|
|
u8 hpEV;
|
|
u8 atkEV;
|
|
u8 defEV;
|
|
u8 spdEV;
|
|
u8 spatkEV;
|
|
u8 spdefEV;
|
|
u8 coolStat;
|
|
u8 beautyStat;
|
|
u8 cuteStat;
|
|
u8 smartStat;
|
|
u8 toughStat;
|
|
u8 sheen;
|
|
// TODO: Finish SinnohRibbonSet1
|
|
u8 sinnohChampRibbon:1, abilityRibbon:1;
|
|
u8 field_0x1d;
|
|
u8 gorgeousRoyalRibbon:1, footprintRibbon:1;
|
|
u8 field_0x1f;
|
|
} PokemonDataBlockA;
|
|
|
|
typedef struct {
|
|
u16 move1;
|
|
u16 move2;
|
|
u16 move3;
|
|
u16 move4;
|
|
u8 move1pp;
|
|
u8 move2pp;
|
|
u8 move3pp;
|
|
u8 move4pp;
|
|
u8 move1ppUps;
|
|
u8 move2ppUps;
|
|
u8 move3ppUps;
|
|
u8 move4ppUps;
|
|
u32 hpIV:5, atkIV:5, defIV:5, spdIV:5, spatkIV:5, spdefIV:5, isEgg:1, isNicknamed:1;
|
|
// TODO: Finish HoennRibbonSet
|
|
u8 coolRibbon:1;
|
|
u8 field_0x15;
|
|
u8 field_0x16;
|
|
u8 field_0x17;
|
|
u8 fatefulEncounter:1, female:1, genderless:1, alternateForm:5;
|
|
u8 HGSS_shinyLeaves; // TODO: Turn into bitfield
|
|
u16 Unused;
|
|
u16 Platinum_EggLocation;
|
|
u16 Platinum_MetLocation;
|
|
} PokemonDataBlockB;
|
|
|
|
typedef struct {
|
|
u16 nickname[11];
|
|
u8 Unused;
|
|
u8 originGame;
|
|
// TODO: Finish SinnohRibbonSet2
|
|
u8 coolRibbon:1;
|
|
u8 field_0x19;
|
|
u8 field_0x1a;
|
|
u8 field_0x1b;
|
|
u32 Unused2;
|
|
} PokemonDataBlockC;
|
|
|
|
typedef struct {
|
|
u16 otTrainerName[8];
|
|
u8 dateEggReceived[3];
|
|
u8 dateMet[3];
|
|
u16 DP_EggLocation;
|
|
u16 DP_MetLocation;
|
|
u8 pokerus;
|
|
u8 pokeball;
|
|
u8 flags;
|
|
EncounterType encounterType;
|
|
u8 HGSS_Pokeball;
|
|
u8 HGSS_Performance;
|
|
} PokemonDataBlockD;
|
|
|
|
typedef union {
|
|
PokemonDataBlockA blockA;
|
|
PokemonDataBlockB blockB;
|
|
PokemonDataBlockC blockC;
|
|
PokemonDataBlockD blockD;
|
|
} PokemonDataBlock;
|
|
|
|
struct PokemonData {
|
|
u32 personalityValue;
|
|
u16 Unused; // Might be used for validity checks
|
|
u16 checksum; // Stored checksum of pokemon
|
|
PokemonDataBlock block1; // Blocks A-D; Order based on personalityValue
|
|
PokemonDataBlock block2;
|
|
PokemonDataBlock block3;
|
|
PokemonDataBlock block4;
|
|
};
|
|
|
|
#endif //POKEDIAMOND_POKEMON_H
|