diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/map.h | 22 | ||||
-rw-r--r-- | include/pokemon.h | 204 | ||||
-rw-r--r-- | include/script.h | 27 | ||||
-rw-r--r-- | include/structs.h | 7 |
4 files changed, 260 insertions, 0 deletions
diff --git a/include/map.h b/include/map.h new file mode 100644 index 00000000..18b8c1d1 --- /dev/null +++ b/include/map.h @@ -0,0 +1,22 @@ +#ifndef POKEDIAMOND_MAP_H +#define POKEDIAMOND_MAP_H + +typedef struct { + u8 MapAreaData; + u8 field_0x1; + u16 Matrix; + u16 MapScripts; + u16 MapLevelScripts; + u16 MapTexts; + u16 DayMusic; + u16 NightMusic; + u16 WildPokemonData; + u16 MapEvents; + u16 MapName; + u8 WeatherType; + u8 field_0x15; + u8 field_0x16; + u8 field_0x17; +} MapHeader; + +#endif //POKEDIAMOND_MAP_H diff --git a/include/pokemon.h b/include/pokemon.h new file mode 100644 index 00000000..b466a11c --- /dev/null +++ b/include/pokemon.h @@ -0,0 +1,204 @@ +#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 { + ARCEUS_NORMAL = 0, + ARCEUS_FIST = 8, + ARCEUS_SKY = 16, + ARCEUS_TOXIC = 24, + ARCEUS_EARTH = 32, + ARCEUS_STONE = 40, + ARCEUS_INSECT = 48, + ARCEUS_SPOOKY = 56, + ARCEUS_IRON = 64, + ARCEUS_FLAME = 72, + ARCEUS_SPLASH = 80, + ARCEUS_MEADOW = 88, + ARCEUS_ZAP = 96, + ARCEUS_MIND = 104, + ARCEUS_ICICLE = 112, + ARCEUS_DRACO = 120, + ARCEUS_DREAD = 128, + BURMY_PLANT = 0, + BURMY_SANDY = 8, + BURMY_TRASH = 16, + DEOXYS_NORMAL = 0, + DEOXYS_ATTACK = 8, + DEOXYS_DEFENSE = 16, + DEOXYS_SPEED = 24, + GIRATINA_ALTERED = 0, + GIRATINA_ORIGIN = 8, + ROTOM_NORMAL = 0, + ROTOM_HEAT = 8, + ROTOM_WASH = 16, + ROTOM_FROST = 24, + ROTOM_FAN = 32, + ROTOM_MOW = 40, + SHAYMIN_LAND = 0, + SHAYMIN_SKY = 8, + SHELLOS_WEST = 0, + SHELLOS_EAST = 8, + 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, + UNOWN_EXCLAMATION_MARK = 208, + UNOWN_QUESTION_MARK = 216 +} 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 diff --git a/include/script.h b/include/script.h new file mode 100644 index 00000000..2ecc8e28 --- /dev/null +++ b/include/script.h @@ -0,0 +1,27 @@ +#ifndef _SCRIPT_H_
+#define _SCRIPT_H_
+
+struct ScriptContext;
+
+typedef u8 (*ScrCmdFunc)(struct ScriptContext *);
+typedef u8 Script[];
+
+struct ScriptContext
+{
+ u8 stackDepth;
+ u8 mode;
+ u8 comparisonResult;
+ u8 (*nativePtr)(struct ScriptContext *);
+ const u8 *scriptPtr;
+ const u8 *stack[20];
+ ScrCmdFunc *cmdTable;
+ ScrCmdFunc *cmdTableEnd;
+ u32 data[4];
+ u32 unk74;
+};
+
+#define ScriptReadByte(ctx) (*(ctx->scriptPtr++))
+
+u16 ScriptReadHalfword(struct ScriptContext *ctx);
+
+#endif // _SCRIPT_H_
diff --git a/include/structs.h b/include/structs.h new file mode 100644 index 00000000..8a34d299 --- /dev/null +++ b/include/structs.h @@ -0,0 +1,7 @@ +#ifndef POKEDIAMOND_STRUCTS_H +#define POKEDIAMOND_STRUCTS_H + +#include "pokemon.h" +#include "map.h" + +#endif //POKEDIAMOND_STRUCTS_H |