Species Simplifier™ - Part 3 (#3562)
* Added SpeciesInfo fields # Conflicts: # include/pokemon.h * Added missing comments * Renamed gigantamax to isGigantamax * Converted species flags to agbcc bit flags * Added padding after flags * Pikachu form config * Dex text * Reordered Paradox flag * Missing Pikachu ifdef comments * Moved P_GEN_x_POKEMON settings to the species_families file * Gen 1 Dex entries * Renamed file to species_enabled.h * Prevent Pokémon from evolving if their evolution is disabled * Prevent Pokémon from being affected by Eviolite if their evolution is disabled * Prevent Pokémon offspring if they're disabled * Corrected imprementation of evolution prevention It could potentially overwrite items by accident * Cross-evo configs * Gen 2 dex entries * Changed cry table to use assignable IDs # Conflicts: # include/pokemon.h * Form table pointers * Beginning support for moving data to gSpeciesInfo * Pokédexes reads text from gSpeciesInfo * Reading species names from gSpeciesInfo * Fixed erroneous copy-paste * Moved Bulbasaur to Raichu Family data do gSpeciesinfo * Added female pic sizes * Macros for Front, Back, Palette and Learnsets * Sandshrew to Dugtrio Families * Obtains Height/Weight from gSpeciesInfo * Read category from gSpeciesInfo * Removed unused data from pokedex_entries.h * Moved Gen 1 data to gSpeciesInfo * Moved Gen 2 data to gSpeciesInfo + fixed Ursaluna Bloodmoon not producing Teddiursa eggs * Moved Gen 3 data to gSpeciesInfo * Moved Gen 4 data to gSpeciesInfo * HGSS dex properly shows form sprites * Fixed data type for GetSpeciesHeight/Weight * Reading Pokédex Size data from gSpeciesInfo * Cleaned up mon graphic decompression function * Reading Front Pics gSpeciesInfo * Reading Back Pics gSpeciesInfo * Updated uses of GetMonSpritePalStruct to allow loading the data directly instead of reading the struct * Reading palettes from gSpeciesInfo * Reading animation delay from gSpeciesInfo * Fixed Pokémon Debug Menu not reading animation delay * Reading front anim Id from gSpeciesInfo * Reading back anim Id from gSpeciesInfo * Reading Animation Frames from gSpeciesInfo * Reading Icon Sprites from gSpeciesInfo * Reading Icon Palette IDs from gSpeciesInfo * Reading Footprints from gSpeciesInfo * Reading Mon Pic sizes from gSpeciesInfo * Separate mon pic sizes for female mon * Reading Level Up Learnsets from gSpeciesInfo * Reading Teachable Learnsets from gSpeciesInfo * Reading National Dex Number from gSpeciesInfo * Reading Enemy Mon Elevation from gSpeciesInfo * Reading Evolutions from gSpeciesInfo * Reading form table from gSpeciesInfo * Fixed button label inconsistency in pokémon debug menu * Reading form change table from gSpeciesInfo * Removed need to define mon graphics in include/graphics.h * Reordered mon graphics by family * Fixed National dex number offset * gFrontierBannedSpecies now checks IsSpeciesEnabled * Added 3 more toggles for Fusions, Primal Reversions and Ultra Burst * Gen 3 & 4 family toggles for dex entries * Fixed missing Mr. Rime data * Gen 1 dex descriptions as compound strings * Gen 2 dex descriptions as compound strings * Gen 3 dex descriptions as compound strings * Gen 4 dex descriptions as compound strings * Fixed compile in agbcc * Moved Gen 5 data to gSpeciesInfo * Using PLACEHOLDER_ANIM_SINGLE_FRAME when needed (same hash) * Renamed PLACEHOLDER_TWO_FRAME_ANIMATION to PLACEHOLDER_ANIM_TWO_FRAMES * Fixed capitalization for front pic anims * Fixed `CanEvolve` * Moved Gen 6 data to gSpeciesInfo * Gen 7 without macros * Gen 8 without macros * Gen 9 without macros * Fixed Gen 9 sound data * Finished moving Gen 7 data in macros (by Alex) Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> * Ultra Necrozma is now included in the fusion forms define * Cries are now properly excluded from the rom when disabling species * Removed P_GEN_x_POKEMON from form_change_tables.h * Fixed Yanmega's cry ignoring the P_GEN_4_CROSS_EVOS setting * Added P_NEW_EVOS_IN_REGIONAL_DEX setting * Automatic ASSUMPTION_FAIL when used species are disabled * Finished moving Gen 8 data in macros (by Alex) Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> * Expanded Alcremie macro * Finished moving Gen 9 data in macros (by Alex) * Fixed missing data for Komala and Marshadow * Form species id tables use family toggles + added missing Ursaluna form species id table * Fixed Genesect palettes * Fixed Flabébé family graphics * Fixed Minior Graphics * Fixed missing Calyrex data * Family toggles in mon graphcis (By Jasper/Bassoonian) Co-authored-by: Bassoonian <iasperbassoonian@gmail.com> * Fixed missing Ogerpon data * Ordered Level Up Learnsets (missing toggles) Also added White Basculin learnset * Added more Minior synonyms * Fixed enamorus order * Reordered teachable learnsets * Removed sSpeciesXXX level up learnsets + reordered * Removed unneeded assumes * Removed unused extra animations * Family toggles in mon level up learnsets (By Jasper/Bassoonian) Co-authored-by: Bassoonian <iasperbassoonian@gmail.com> * Fixed Phione graphics inclusion * Family toggles for Teachable Learnsets Co-authored-by: Bassoonian <iasperbassoonian@gmail.com> * Ordered Front Pic Anims * Family toggles for front pic animations Co-authored-by: Bassoonian <iasperbassoonian@gmail.com> * Fixed HGSS dex incorrectly showing the wrong mon when catching it * Family toggles for Egg Moves + reodered Co-authored-by: Bassoonian <iasperbassoonian@gmail.com> * Fixed HGSS not checking for null footprints * Review changes * Fixed Female difference mon not using their macros * Fixed Alcremie Macro * Fixed compile error when disabling the Bulbasaur family * Fixed Turtwig and Chimchar family + Houndour and Mareep cries not being excluded properly * Re-added missing Egg graphical data * Fixed crash during the Birch Intro when Lotad is disabled * Renamed PALLETE to PALETTES * Removed extra spacing for YOffsets * Fixed compile when only disabling cross-gen evolutions * Added Tera Forms define (Ogerpon and Terapagos) * Fixed Necrozma macro * Removed .noFlip = FALSE * Fixed dex number in summary screen for forms when nat dex is disabled * Fixed Paldean form paths --------- Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
Before Width: | Height: | Size: 535 B After Width: | Height: | Size: 535 B |
Before Width: | Height: | Size: 881 B After Width: | Height: | Size: 881 B |
0
graphics/pokemon/tauros/aqua/icon.png → graphics/pokemon/tauros/paldean_aqua_breed/icon.png
Executable file → Normal file
Before Width: | Height: | Size: 389 B After Width: | Height: | Size: 389 B |
Before Width: | Height: | Size: 569 B After Width: | Height: | Size: 569 B |
Before Width: | Height: | Size: 895 B After Width: | Height: | Size: 895 B |
0
graphics/pokemon/tauros/blaze/icon.png → graphics/pokemon/tauros/paldean_blaze_breed/icon.png
Executable file → Normal file
Before Width: | Height: | Size: 391 B After Width: | Height: | Size: 391 B |
Before Width: | Height: | Size: 488 B After Width: | Height: | Size: 488 B |
Before Width: | Height: | Size: 805 B After Width: | Height: | Size: 805 B |
0
graphics/pokemon/tauros/combat/icon.png → graphics/pokemon/tauros/paldean_combat_breed/icon.png
Executable file → Normal file
Before Width: | Height: | Size: 369 B After Width: | Height: | Size: 369 B |
Before Width: | Height: | Size: 504 B After Width: | Height: | Size: 504 B |
Before Width: | Height: | Size: 464 B After Width: | Height: | Size: 464 B |
|
@ -38,20 +38,7 @@
|
|||
#define P_FLAG_FORCE_SHINY 0 // If this flag is set, all wild and gift Pokémon will forced into being Shiny.
|
||||
#define P_FLAG_FORCE_NO_SHINY 0 // If this flag is set, all wild and gift Pokémon will forced into NOT being Shiny.
|
||||
|
||||
// Modifying the latest generation WILL change the saveblock due to Dex flags and will require a new save file.
|
||||
// Generations of Pokémon are defined by the first member introduced.
|
||||
// Eg: If P_GEN_2_POKEMON is set to FALSE, all members of the Sneasel Family will be disabled (Sneasel + Hisuian, Weavile and Sneasler).
|
||||
#define P_GEN_1_POKEMON TRUE // Generation 1 Pokémon (RGBY)
|
||||
#define P_GEN_2_POKEMON TRUE // Generation 2 Pokémon (GSC)
|
||||
#define P_GEN_3_POKEMON TRUE // Generation 3 Pokémon (RSE, FRLG)
|
||||
#define P_GEN_4_POKEMON TRUE // Generation 4 Pokémon (DPPt, HGSS)
|
||||
#define P_GEN_5_POKEMON TRUE // Generation 5 Pokémon (BW, B2W2)
|
||||
#define P_GEN_6_POKEMON TRUE // Generation 6 Pokémon (XY, ORAS)
|
||||
#define P_GEN_7_POKEMON TRUE // Generation 7 Pokémon (SM, USUM, LGPE)
|
||||
#define P_GEN_8_POKEMON TRUE // Generation 8 Pokémon (SwSh, BDSP, LA)
|
||||
#define P_GEN_9_POKEMON TRUE // Generation 9 Pokémon (SV)
|
||||
|
||||
// Go here if you want to disable specific families of Pokémon.
|
||||
#include "config/species_families.h"
|
||||
#include "config/species_enabled.h"
|
||||
|
||||
#endif // GUARD_CONFIG_POKEMON_H
|
||||
|
|
|
@ -1,17 +1,58 @@
|
|||
#ifndef GUARD_CONFIG_SPECIES_FAMILIES_H
|
||||
#define GUARD_CONFIG_SPECIES_FAMILIES_H
|
||||
#ifndef GUARD_CONFIG_SPECIES_ENABLED_H
|
||||
#define GUARD_CONFIG_SPECIES_ENABLED_H
|
||||
|
||||
// Modifying the latest generation WILL change the saveblock due to Dex flags and will require a new save file.
|
||||
// Generations of Pokémon are defined by the first member introduced,
|
||||
// so Pikachu depends on the Gen 1 setting despite Pichu being the lowest member of the evolution tree.
|
||||
// Eg: If P_GEN_2_POKEMON is set to FALSE, all members of the Sneasel Family will be disabled
|
||||
// (Sneasel + Hisuian, Weavile and Sneasler).
|
||||
#define P_GEN_1_POKEMON TRUE // Generation 1 Pokémon (RGBY)
|
||||
#define P_GEN_2_POKEMON TRUE // Generation 2 Pokémon (GSC)
|
||||
#define P_GEN_3_POKEMON TRUE // Generation 3 Pokémon (RSE, FRLG)
|
||||
#define P_GEN_4_POKEMON TRUE // Generation 4 Pokémon (DPPt, HGSS)
|
||||
#define P_GEN_5_POKEMON TRUE // Generation 5 Pokémon (BW, B2W2)
|
||||
#define P_GEN_6_POKEMON TRUE // Generation 6 Pokémon (XY, ORAS)
|
||||
#define P_GEN_7_POKEMON TRUE // Generation 7 Pokémon (SM, USUM, LGPE)
|
||||
#define P_GEN_8_POKEMON TRUE // Generation 8 Pokémon (SwSh, BDSP, LA)
|
||||
#define P_GEN_9_POKEMON TRUE // Generation 9 Pokémon (SV)
|
||||
|
||||
// Setting this to TRUE will add the new evolutions to the Regional Dex.
|
||||
#define P_NEW_EVOS_IN_REGIONAL_DEX TRUE
|
||||
|
||||
// Battle gimmick specific Forms.
|
||||
#define P_MEGA_EVOLUTIONS TRUE
|
||||
#define P_PRIMAL_REVERSIONS TRUE // Groudon and Kyogre only.
|
||||
#define P_ULTRA_BURST_FORMS TRUE // Ultra Necrozma only.
|
||||
#define P_GIGANTAMAX_FORMS TRUE
|
||||
#define P_TERA_FORMS TRUE
|
||||
|
||||
// Fusion forms
|
||||
#define P_FUSION_FORMS TRUE
|
||||
|
||||
// Regional Forms. Includes Regional Form evolutions, like Sirfetch'd.
|
||||
#define P_REGIONAL_FORMS TRUE
|
||||
#define P_ALOLAN_FORMS P_REGIONAL_FORMS
|
||||
#define P_GALARIAN_FORMS P_REGIONAL_FORMS
|
||||
#define P_HISUIAN_FORMS P_REGIONAL_FORMS
|
||||
#define P_PALDEAN_FORMS P_REGIONAL_FORMS
|
||||
|
||||
#define P_MEGA_EVOLUTIONS TRUE
|
||||
#define P_GIGANTAMAX_FORMS TRUE
|
||||
// Big groups of forms that aren't always desired when choosing families.
|
||||
#define P_PIKACHU_EXTRA_FORMS TRUE
|
||||
#define P_COSPLAY_PIKACHU_FORMS P_PIKACHU_EXTRA_FORMS
|
||||
#define P_CAP_PIKACHU_FORMS P_PIKACHU_EXTRA_FORMS
|
||||
|
||||
// Cross-generation evolutions. Includes pre-evolutions.
|
||||
#define P_CROSS_GENERATION_EVOS TRUE
|
||||
#define P_GEN_2_CROSS_EVOS P_CROSS_GENERATION_EVOS
|
||||
#define P_GEN_3_CROSS_EVOS P_CROSS_GENERATION_EVOS
|
||||
#define P_GEN_4_CROSS_EVOS P_CROSS_GENERATION_EVOS
|
||||
//#define P_GEN_5_CROSS_EVOS // Gen 5 didn't introduce any cross-gen evos.
|
||||
#define P_GEN_6_CROSS_EVOS P_CROSS_GENERATION_EVOS // Just Sylveon.
|
||||
//#define P_GEN_7_CROSS_EVOS // Alolan evolutions handled by P_ALOLAN_FORMS.
|
||||
#define P_GEN_8_CROSS_EVOS P_CROSS_GENERATION_EVOS // Regional evolutions handled by P_GALARIAN_FORMS and P_HISUIAN_FORMS.
|
||||
#define P_GEN_9_CROSS_EVOS P_CROSS_GENERATION_EVOS // Clodsire handled by P_PALDEAN_FORMS.
|
||||
|
||||
// To disable specific families, replace P_GEN_x_POKEMON with FALSE.
|
||||
|
||||
#define P_FAMILY_BULBASAUR P_GEN_1_POKEMON
|
||||
#define P_FAMILY_CHARMANDER P_GEN_1_POKEMON
|
||||
#define P_FAMILY_SQUIRTLE P_GEN_1_POKEMON
|
||||
|
@ -554,4 +595,4 @@
|
|||
#define P_FAMILY_FEZANDIPITI P_GEN_9_POKEMON
|
||||
#define P_FAMILY_OGERPON P_GEN_9_POKEMON
|
||||
|
||||
#endif // GUARD_CONFIG_SPECIES_FAMILIES_H
|
||||
#endif // GUARD_CONFIG_SPECIES_ENABLED_H
|
2410
include/constants/cries.h
Normal file
|
@ -1070,6 +1070,9 @@ enum {
|
|||
HOENN_DEX_MIGHTYENA,
|
||||
HOENN_DEX_ZIGZAGOON,
|
||||
HOENN_DEX_LINOONE,
|
||||
#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GALARIAN_FORMS
|
||||
HOENN_DEX_OBSTAGOON,
|
||||
#endif
|
||||
HOENN_DEX_WURMPLE,
|
||||
HOENN_DEX_SILCOON,
|
||||
HOENN_DEX_BEAUTIFLY,
|
||||
|
@ -1088,7 +1091,7 @@ enum {
|
|||
HOENN_DEX_RALTS,
|
||||
HOENN_DEX_KIRLIA,
|
||||
HOENN_DEX_GARDEVOIR,
|
||||
#if P_GEN_4_POKEMON == TRUE
|
||||
#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS
|
||||
HOENN_DEX_GALLADE,
|
||||
#endif
|
||||
HOENN_DEX_SURSKIT,
|
||||
|
@ -1120,7 +1123,7 @@ enum {
|
|||
HOENN_DEX_GRAVELER,
|
||||
HOENN_DEX_GOLEM,
|
||||
HOENN_DEX_NOSEPASS,
|
||||
#if P_GEN_4_POKEMON == TRUE
|
||||
#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS
|
||||
HOENN_DEX_PROBOPASS,
|
||||
#endif
|
||||
HOENN_DEX_SKITTY,
|
||||
|
@ -1146,7 +1149,7 @@ enum {
|
|||
HOENN_DEX_MINUN,
|
||||
HOENN_DEX_MAGNEMITE,
|
||||
HOENN_DEX_MAGNETON,
|
||||
#if P_GEN_4_POKEMON == TRUE
|
||||
#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS
|
||||
HOENN_DEX_MAGNEZONE,
|
||||
#endif
|
||||
HOENN_DEX_VOLTORB,
|
||||
|
@ -1159,12 +1162,12 @@ enum {
|
|||
HOENN_DEX_BELLOSSOM,
|
||||
HOENN_DEX_DODUO,
|
||||
HOENN_DEX_DODRIO,
|
||||
#if P_GEN_4_POKEMON == TRUE
|
||||
#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS
|
||||
HOENN_DEX_BUDEW,
|
||||
#endif
|
||||
HOENN_DEX_ROSELIA,
|
||||
#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS
|
||||
HOENN_DEX_ROSERADE,
|
||||
#else
|
||||
HOENN_DEX_ROSELIA,
|
||||
#endif
|
||||
HOENN_DEX_GULPIN,
|
||||
HOENN_DEX_SWALOT,
|
||||
|
@ -1221,7 +1224,7 @@ enum {
|
|||
HOENN_DEX_BANETTE,
|
||||
HOENN_DEX_DUSKULL,
|
||||
HOENN_DEX_DUSCLOPS,
|
||||
#if P_GEN_4_POKEMON == TRUE
|
||||
#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS
|
||||
HOENN_DEX_DUSKNOIR,
|
||||
HOENN_DEX_TROPIUS,
|
||||
HOENN_DEX_CHINGLING,
|
||||
|
@ -1242,18 +1245,21 @@ enum {
|
|||
HOENN_DEX_NATU,
|
||||
HOENN_DEX_XATU,
|
||||
HOENN_DEX_GIRAFARIG,
|
||||
#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_9_CROSS_EVOS
|
||||
HOENN_DEX_FARIGIRAF,
|
||||
#endif
|
||||
HOENN_DEX_PHANPY,
|
||||
HOENN_DEX_DONPHAN,
|
||||
HOENN_DEX_PINSIR,
|
||||
HOENN_DEX_HERACROSS,
|
||||
HOENN_DEX_RHYHORN,
|
||||
HOENN_DEX_RHYDON,
|
||||
#if P_GEN_4_POKEMON == TRUE
|
||||
#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS
|
||||
HOENN_DEX_RHYPERIOR,
|
||||
#endif
|
||||
HOENN_DEX_SNORUNT,
|
||||
HOENN_DEX_GLALIE,
|
||||
#if P_GEN_4_POKEMON == TRUE
|
||||
#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS
|
||||
HOENN_DEX_FROSLASS,
|
||||
#endif
|
||||
HOENN_DEX_SPHEAL,
|
||||
|
@ -1264,6 +1270,9 @@ enum {
|
|||
HOENN_DEX_GOREBYSS,
|
||||
HOENN_DEX_RELICANTH,
|
||||
HOENN_DEX_CORSOLA,
|
||||
#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GALARIAN_FORMS
|
||||
HOENN_DEX_CURSOLA,
|
||||
#endif
|
||||
HOENN_DEX_CHINCHOU,
|
||||
HOENN_DEX_LANTURN,
|
||||
HOENN_DEX_LUVDISC,
|
||||
|
|
|
@ -301,7 +301,7 @@
|
|||
#define EVO_LEVEL_FAMILY_OF_THREE 45 // Pokémon reaches the specified level with a personality value with a modulus of 0
|
||||
#define EVO_LEVEL_FAMILY_OF_FOUR 46 // Pokémon reaches the specified level with a personality value with a modulus of 1-99
|
||||
|
||||
#define EVOS_PER_MON 11
|
||||
#define EVOLUTIONS_END 0xFFFF
|
||||
|
||||
// Evolution 'modes,' for GetEvolutionTargetSpecies
|
||||
#define EVO_MODE_NORMAL 0
|
||||
|
@ -331,21 +331,6 @@
|
|||
#define NUM_NORMAL_ABILITY_SLOTS 2
|
||||
#define NUM_HIDDEN_ABILITY_SLOTS 1
|
||||
|
||||
// Species Flags
|
||||
#define SPECIES_FLAG_LEGENDARY (1 << 0)
|
||||
#define SPECIES_FLAG_MYTHICAL (1 << 1)
|
||||
#define SPECIES_FLAG_MEGA_EVOLUTION (1 << 2)
|
||||
#define SPECIES_FLAG_PRIMAL_REVERSION (1 << 3)
|
||||
#define SPECIES_FLAG_ULTRA_BEAST (1 << 4)
|
||||
#define SPECIES_FLAG_ALOLAN_FORM (1 << 5)
|
||||
#define SPECIES_FLAG_GALARIAN_FORM (1 << 6)
|
||||
#define SPECIES_FLAG_HISUIAN_FORM (1 << 7)
|
||||
#define SPECIES_FLAG_PALDEAN_FORM (1 << 8)
|
||||
#define SPECIES_FLAG_ALL_PERFECT_IVS (1 << 9)
|
||||
#define SPECIES_FLAG_CANNOT_BE_TRADED (1 << 10)
|
||||
#define SPECIES_FLAG_ULTRA_BURST (1 << 11)
|
||||
#define SPECIES_FLAG_PARADOX (1 << 12)
|
||||
|
||||
#define LEGENDARY_PERFECT_IV_COUNT 3
|
||||
|
||||
#endif // GUARD_CONSTANTS_POKEMON_H
|
||||
|
|
|
@ -813,6 +813,7 @@
|
|||
#define SPECIES_SILVALLY_NORMAL 773
|
||||
#define SPECIES_MINIOR SPECIES_MINIOR_METEOR
|
||||
#define SPECIES_MINIOR_METEOR SPECIES_MINIOR_METEOR_RED
|
||||
#define SPECIES_MINIOR_RED SPECIES_MINIOR_METEOR_RED
|
||||
#define SPECIES_MINIOR_METEOR_RED 774
|
||||
#define SPECIES_KOMALA 775
|
||||
#define SPECIES_TURTONATOR 776
|
||||
|
@ -1349,6 +1350,12 @@
|
|||
#define SPECIES_SILVALLY_FAIRY FORMS_START + 287
|
||||
|
||||
// Minior
|
||||
#define SPECIES_MINIOR_ORANGE SPECIES_MINIOR_METEOR_ORANGE
|
||||
#define SPECIES_MINIOR_YELLOW SPECIES_MINIOR_METEOR_YELLOW
|
||||
#define SPECIES_MINIOR_GREEN SPECIES_MINIOR_METEOR_GREEN
|
||||
#define SPECIES_MINIOR_BLUE SPECIES_MINIOR_METEOR_BLUE
|
||||
#define SPECIES_MINIOR_INDIGO SPECIES_MINIOR_METEOR_INDIGO
|
||||
#define SPECIES_MINIOR_VIOLET SPECIES_MINIOR_METEOR_VIOLET
|
||||
#define SPECIES_MINIOR_METEOR_ORANGE FORMS_START + 288
|
||||
#define SPECIES_MINIOR_METEOR_YELLOW FORMS_START + 289
|
||||
#define SPECIES_MINIOR_METEOR_GREEN FORMS_START + 290
|
||||
|
|
|
@ -90,15 +90,8 @@ extern const union AffineAnimCmd *const gAffineAnims_BattleSpritePlayerSide[];
|
|||
extern const union AffineAnimCmd *const gAffineAnims_BattleSpriteOpponentSide[];
|
||||
extern const union AffineAnimCmd *const gAffineAnims_BattleSpriteContest[];
|
||||
|
||||
extern const union AnimCmd sAnim_GeneralFrame0[];
|
||||
extern const union AnimCmd *const gAnims_MonPic[];
|
||||
extern const struct MonCoords gMonFrontPicCoords[];
|
||||
extern const struct MonCoords gMonBackPicCoords[];
|
||||
extern const struct CompressedSpriteSheet gMonBackPicTable[];
|
||||
extern const struct CompressedSpriteSheet gMonBackPicTableFemale[];
|
||||
extern const struct CompressedSpritePalette gMonPaletteTable[];
|
||||
extern const struct CompressedSpritePalette gMonPaletteTableFemale[];
|
||||
extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
|
||||
extern const struct CompressedSpritePalette gMonShinyPaletteTableFemale[];
|
||||
extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[];
|
||||
extern const struct MonCoords gTrainerFrontPicCoords[];
|
||||
extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
|
||||
|
@ -108,15 +101,8 @@ extern const struct MonCoords gTrainerBackPicCoords[];
|
|||
extern const struct CompressedSpriteSheet gTrainerBackPicTable[]; // functionally unused
|
||||
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
|
||||
|
||||
extern const u8 gEnemyMonElevation[NUM_SPECIES + 1];
|
||||
|
||||
extern const union AnimCmd *const *const gMonFrontAnimsPtrTable[];
|
||||
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
|
||||
extern const struct CompressedSpriteSheet gMonFrontPicTableFemale[];
|
||||
|
||||
extern const struct Trainer gTrainers[];
|
||||
extern const u8 gTrainerClassNames[][13];
|
||||
extern const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1];
|
||||
extern const u8 gMoveNames[MOVES_COUNT_DYNAMAX][MOVE_NAME_LENGTH + 1];
|
||||
extern const u8 *const gZMoveNames[];
|
||||
extern const u8 *const gMaxMoveNames[];
|
||||
|
|
|
@ -13,11 +13,11 @@ void LoadCompressedSpriteSheetOverrideBuffer(const struct CompressedSpriteSheet
|
|||
bool8 LoadCompressedSpriteSheetUsingHeap(const struct CompressedSpriteSheet *src);
|
||||
|
||||
void LoadCompressedSpritePalette(const struct CompressedSpritePalette *src);
|
||||
void LoadCompressedSpritePaletteWithTag(const u32 *pal, u16 tag);
|
||||
void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *src, void *buffer);
|
||||
bool8 LoadCompressedSpritePaletteUsingHeap(const struct CompressedSpritePalette *src);
|
||||
|
||||
void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void *buffer, s32 species);
|
||||
void DecompressPicFromTableGender(void* buffer, s32 species, u32 personality);
|
||||
void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void *buffer);
|
||||
|
||||
void HandleLoadSpecialPokePic(bool32 isFrontPic, void *dest, s32 species, u32 personality);
|
||||
|
||||
|
|
8183
include/graphics.h
|
@ -13,7 +13,7 @@ int GetStringWidthDifference(int fontId, const u8 *str, int totalWidth, int lett
|
|||
int GetMaxWidthInMenuTable(const struct MenuAction *actions, int numActions);
|
||||
int GetMaxWidthInSubsetOfMenuTable(const struct MenuAction *actions, const u8 *actionIds, int numActions);
|
||||
int Intl_GetListMenuWidth(const struct ListMenuTemplate *listMenu);
|
||||
void CopyMonCategoryText(int dexNum, u8 *dest);
|
||||
void CopyMonCategoryText(u16 species, u8 *dest);
|
||||
u8 *GetStringClearToWidth(u8 *dest, int fontId, const u8 *str, int totalStringWidth);
|
||||
void PadNameString(u8 *dest, u8 padChar);
|
||||
void ConvertInternationalPlayerNameStripChar(u8 *, u8);
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
|
||||
extern u8 gUnusedPokedexU8;
|
||||
extern void (*gPokedexVBlankCB)(void);
|
||||
extern const u8 *const gMonFootprintTable[];
|
||||
|
||||
enum
|
||||
{
|
||||
|
@ -19,24 +18,10 @@ enum
|
|||
FLAG_SET_CAUGHT
|
||||
};
|
||||
|
||||
struct PokedexEntry
|
||||
{
|
||||
/*0x00*/ u8 categoryName[13];
|
||||
/*0x0C*/ u16 height; //in decimeters
|
||||
/*0x0E*/ u16 weight; //in hectograms
|
||||
/*0x10*/ const u8 *description;
|
||||
/*0x14*/ u16 unused;
|
||||
/*0x16*/ u16 pokemonScale;
|
||||
/*0x18*/ u16 pokemonOffset;
|
||||
/*0x1A*/ u16 trainerScale;
|
||||
/*0x1C*/ u16 trainerOffset;
|
||||
}; /*size = 0x20*/
|
||||
|
||||
void ResetPokedex(void);
|
||||
u16 GetPokedexHeightWeight(u16 dexNum, u8 data);
|
||||
u16 GetNationalPokedexCount(u8);
|
||||
u16 GetHoennPokedexCount(u8);
|
||||
u8 DisplayCaughtMonDexPage(u16 dexNum, u32 otId, u32 personality);
|
||||
u8 DisplayCaughtMonDexPage(u16 species, u32 otId, u32 personality);
|
||||
s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
|
||||
u16 CreateMonSpriteFromNationalDexNumber(u16, s16, s16, u16);
|
||||
bool16 HasAllHoennMons(void);
|
||||
|
|
|
@ -303,7 +303,14 @@ struct BattlePokemon
|
|||
/*0x59*/ u8 metLevel;
|
||||
};
|
||||
|
||||
struct SpeciesInfo /*0x24*/
|
||||
struct Evolution
|
||||
{
|
||||
u16 method;
|
||||
u16 param;
|
||||
u16 targetSpecies;
|
||||
};
|
||||
|
||||
struct SpeciesInfo /*0x8C*/
|
||||
{
|
||||
/* 0x00 */ u8 baseHP;
|
||||
/* 0x01 */ u8 baseAttack;
|
||||
|
@ -313,7 +320,7 @@ struct SpeciesInfo /*0x24*/
|
|||
/* 0x05 */ u8 baseSpDefense;
|
||||
/* 0x06 */ u8 types[2];
|
||||
/* 0x08 */ u8 catchRate;
|
||||
/* 0x09 padding */
|
||||
/* 0x09 */ u8 padding1;
|
||||
/* 0x0A */ u16 expYield; // expYield was changed from u8 to u16 for the new Exp System.
|
||||
/* 0x0C */ u16 evYield_HP:2;
|
||||
u16 evYield_Attack:2;
|
||||
|
@ -321,6 +328,7 @@ struct SpeciesInfo /*0x24*/
|
|||
u16 evYield_Speed:2;
|
||||
/* 0x0D */ u16 evYield_SpAttack:2;
|
||||
u16 evYield_SpDefense:2;
|
||||
u16 padding2:4;
|
||||
/* 0x0E */ u16 itemCommon;
|
||||
/* 0x10 */ u16 itemRare;
|
||||
/* 0x12 */ u8 genderRatio;
|
||||
|
@ -330,10 +338,69 @@ struct SpeciesInfo /*0x24*/
|
|||
/* 0x16 */ u8 eggGroups[2];
|
||||
/* 0x18 */ u16 abilities[NUM_ABILITY_SLOTS]; // 3 abilities, no longer u8 because we have over 255 abilities now.
|
||||
/* 0x1E */ u8 safariZoneFleeRate;
|
||||
/* 0x1F */ u8 bodyColor : 7;
|
||||
// Pokédex data
|
||||
/* 0x1F */ u8 categoryName[13];
|
||||
/* 0x1F */ u8 speciesName[POKEMON_NAME_LENGTH + 1];
|
||||
/* 0x2C */ u16 cryId;
|
||||
/* 0x2E */ u16 natDexNum;
|
||||
/* 0x30 */ u16 height; //in decimeters
|
||||
/* 0x32 */ u16 weight; //in hectograms
|
||||
/* 0x34 */ u16 pokemonScale;
|
||||
/* 0x36 */ u16 pokemonOffset;
|
||||
/* 0x38 */ u16 trainerScale;
|
||||
/* 0x3A */ u16 trainerOffset;
|
||||
/* 0x3C */ const u8 *description;
|
||||
/* 0x40 */ u8 bodyColor : 7;
|
||||
// Graphical Data
|
||||
u8 noFlip : 1;
|
||||
/* 0x20 */ u16 flags;
|
||||
/* 0x22 */ u8 gigantamax:1;
|
||||
/* 0x41 */ u8 frontAnimDelay;
|
||||
/* 0x42 */ u8 frontAnimId;
|
||||
/* 0x43 */ u8 backAnimId;
|
||||
/* 0x44 */ const union AnimCmd *const *frontAnimFrames;
|
||||
/* 0x48 */ const u32 *frontPic;
|
||||
/* 0x4C */ const u32 *frontPicFemale;
|
||||
/* 0x50 */ const u32 *backPic;
|
||||
/* 0x54 */ const u32 *backPicFemale;
|
||||
/* 0x58 */ const u32 *palette;
|
||||
/* 0x5C */ const u32 *paletteFemale;
|
||||
/* 0x60 */ const u32 *shinyPalette;
|
||||
/* 0x64 */ const u32 *shinyPaletteFemale;
|
||||
/* 0x68 */ const u8 *iconSprite;
|
||||
/* 0x6C */ const u8 *iconSpriteFemale;
|
||||
/* 0x70 */ const u8 *footprint;
|
||||
// All Pokémon pics are 64x64, but this data table defines where in this 64x64 frame the sprite's non-transparent pixels actually are.
|
||||
/* 0x74 */ u8 frontPicSize; // The dimensions of this drawn pixel area.
|
||||
/* 0x74 */ u8 frontPicSizeFemale; // The dimensions of this drawn pixel area.
|
||||
/* 0x75 */ u8 frontPicYOffset; // The number of pixels between the drawn pixel area and the bottom edge.
|
||||
/* 0x76 */ u8 backPicSize; // The dimensions of this drawn pixel area.
|
||||
/* 0x76 */ u8 backPicSizeFemale; // The dimensions of this drawn pixel area.
|
||||
/* 0x77 */ u8 backPicYOffset; // The number of pixels between the drawn pixel area and the bottom edge.
|
||||
/* 0x78 */ u8 iconPalIndex:3;
|
||||
u8 iconPalIndexFemale:3;
|
||||
u8 padding3:2;
|
||||
/* 0x79 */ u8 enemyMonElevation; // This determines how much higher above the usual position the enemy Pokémon is during battle. Species that float or fly have nonzero values.
|
||||
// Flags
|
||||
/* 0x7A */ u32 isLegendary:1;
|
||||
u32 isMythical:1;
|
||||
u32 isUltraBeast:1;
|
||||
u32 isParadoxForm:1;
|
||||
u32 isMegaEvolution:1;
|
||||
u32 isPrimalRevesion:1;
|
||||
u32 isUltraBurst:1;
|
||||
u32 isGigantamax:1;
|
||||
u32 isAlolanForm:1;
|
||||
u32 isGalarianForm:1;
|
||||
u32 isHisuianForm:1;
|
||||
u32 isPaldeanForm:1;
|
||||
u32 cannotBeTraded:1;
|
||||
u32 allPerfectIVs:1;
|
||||
u32 padding4:18;
|
||||
// Move Data
|
||||
/* 0x80 */ const struct LevelUpMove *const levelUpLearnset;
|
||||
/* 0x84 */ const u16 *const teachableLearnset;
|
||||
/* 0x88 */ const struct Evolution *const evolutions;
|
||||
/* 0x84 */ const u16 *const formSpeciesIdTable;
|
||||
/* 0x84 */ const struct FormChange *const formChangeTable;
|
||||
};
|
||||
|
||||
struct BattleMove
|
||||
|
@ -411,13 +478,6 @@ struct LevelUpMove
|
|||
u16 level;
|
||||
};
|
||||
|
||||
struct Evolution
|
||||
{
|
||||
u16 method;
|
||||
u16 param;
|
||||
u16 targetSpecies;
|
||||
};
|
||||
|
||||
struct FormChange
|
||||
{
|
||||
u16 method;
|
||||
|
@ -463,8 +523,6 @@ extern const u8 gFacilityClassToTrainerClass[];
|
|||
extern const struct SpeciesInfo gSpeciesInfo[];
|
||||
extern const u8 *const gItemEffectTable[ITEMS_COUNT];
|
||||
extern const u32 gExperienceTables[][MAX_LEVEL + 1];
|
||||
extern const struct LevelUpMove *const gLevelUpLearnsets[];
|
||||
extern const u16 *const gTeachableLearnsets[];
|
||||
extern const u8 gPPUpGetMask[];
|
||||
extern const u8 gPPUpClearMask[];
|
||||
extern const u8 gPPUpAddValues[];
|
||||
|
@ -472,8 +530,6 @@ extern const u8 gStatStageRatios[MAX_STAT_STAGE + 1][2];
|
|||
extern const u16 gUnionRoomFacilityClasses[];
|
||||
extern const struct SpriteTemplate gBattlerSpriteTemplates[];
|
||||
extern const s8 gNatureStatTable[][5];
|
||||
extern const u16 *const gFormSpeciesIdTables[NUM_SPECIES];
|
||||
extern const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES];
|
||||
extern const u32 sExpCandyExperienceTable[];
|
||||
|
||||
void ZeroBoxMonData(struct BoxPokemon *boxMon);
|
||||
|
@ -553,6 +609,15 @@ u8 GetSecretBaseTrainerClass(void);
|
|||
bool8 IsPlayerPartyAndPokemonStorageFull(void);
|
||||
bool8 IsPokemonStorageFull(void);
|
||||
const u8 *GetSpeciesName(u16 species);
|
||||
const u8 *GetSpeciesCategory(u16 species);
|
||||
const u8 *GetSpeciesPokedexDescription(u16 species);
|
||||
u16 GetSpeciesHeight(u16 species);
|
||||
u16 GetSpeciesWeight(u16 species);
|
||||
const struct LevelUpMove *GetSpeciesLevelUpLearnset(u16 species);
|
||||
const u16 *GetSpeciesTeachableLearnset(u16 species);
|
||||
const struct Evolution *GetSpeciesEvolutions(u16 species);
|
||||
const u16 *GetSpeciesFormTable(u16 species);
|
||||
const struct FormChange *GetSpeciesFormChanges(u16 species);
|
||||
u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex);
|
||||
void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex);
|
||||
void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex);
|
||||
|
@ -601,8 +666,6 @@ void PlayMapChosenOrBattleBGM(u16 songId);
|
|||
void CreateTask_PlayMapChosenOrBattleBGM(u16 songId);
|
||||
const u32 *GetMonFrontSpritePal(struct Pokemon *mon);
|
||||
const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality);
|
||||
const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon);
|
||||
const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality);
|
||||
bool8 IsMoveHM(u16 move);
|
||||
bool8 IsMonSpriteNotFlipped(u16 species);
|
||||
s8 GetMonFlavorRelation(struct Pokemon *mon, u8 flavor);
|
||||
|
@ -646,5 +709,6 @@ void UpdateMonPersonality(struct BoxPokemon *boxMon, u32 personality);
|
|||
u8 CalculatePartyCount(struct Pokemon *party);
|
||||
u16 SanitizeSpeciesId(u16 species);
|
||||
bool32 IsSpeciesEnabled(u16 species);
|
||||
u16 GetCryIdBySpecies(u16 species);
|
||||
|
||||
#endif // GUARD_POKEMON_H
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
#ifndef GUARD_POKEMON_ICON_H
|
||||
#define GUARD_POKEMON_ICON_H
|
||||
|
||||
extern const u8 gMonIconPaletteIndices[];
|
||||
extern const u8 gMonIconPaletteIndicesFemale[];
|
||||
extern const u8 *const gMonIconTable[NUM_SPECIES + 1];
|
||||
extern const u8 *const gMonIconTableFemale[NUM_SPECIES + 1];
|
||||
extern const struct SpritePalette gMonIconPaletteTable[];
|
||||
|
||||
const u8 *GetMonIconTiles(u16 species, u32 personality);
|
||||
|
|