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>
This commit is contained in:
Eduardo Quezada D'Ottone 2023-12-08 11:05:10 -03:00 committed by GitHub
parent 97cb4cdb24
commit 4adc2dcb16
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
232 changed files with 76365 additions and 86294 deletions

View file

Before

Width:  |  Height:  |  Size: 535 B

After

Width:  |  Height:  |  Size: 535 B

View file

Before

Width:  |  Height:  |  Size: 881 B

After

Width:  |  Height:  |  Size: 881 B

View file

Before

Width:  |  Height:  |  Size: 389 B

After

Width:  |  Height:  |  Size: 389 B

View file

Before

Width:  |  Height:  |  Size: 569 B

After

Width:  |  Height:  |  Size: 569 B

View file

Before

Width:  |  Height:  |  Size: 895 B

After

Width:  |  Height:  |  Size: 895 B

View file

Before

Width:  |  Height:  |  Size: 391 B

After

Width:  |  Height:  |  Size: 391 B

View file

Before

Width:  |  Height:  |  Size: 488 B

After

Width:  |  Height:  |  Size: 488 B

View file

Before

Width:  |  Height:  |  Size: 805 B

After

Width:  |  Height:  |  Size: 805 B

View file

Before

Width:  |  Height:  |  Size: 369 B

After

Width:  |  Height:  |  Size: 369 B

View file

Before

Width:  |  Height:  |  Size: 504 B

After

Width:  |  Height:  |  Size: 504 B

View file

Before

Width:  |  Height:  |  Size: 464 B

After

Width:  |  Height:  |  Size: 464 B

View file

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

View file

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

File diff suppressed because it is too large Load diff

View 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,

View file

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

View file

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

View file

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

View file

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

File diff suppressed because it is too large Load diff

View file

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

View file

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

View file

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

View file

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

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Some files were not shown because too many files have changed in this diff Show more