* 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>
297 lines
9.3 KiB
C
297 lines
9.3 KiB
C
#include "global.h"
|
|
#include "malloc.h"
|
|
#include "battle.h"
|
|
#include "data.h"
|
|
#include "graphics.h"
|
|
#include "constants/abilities.h"
|
|
#include "constants/items.h"
|
|
#include "constants/moves.h"
|
|
#include "constants/trainers.h"
|
|
#include "constants/battle_ai.h"
|
|
|
|
const u16 gMinigameDigits_Pal[] = INCBIN_U16("graphics/link/minigame_digits.gbapal");
|
|
const u32 gMinigameDigits_Gfx[] = INCBIN_U32("graphics/link/minigame_digits.4bpp.lz");
|
|
static const u32 sMinigameDigitsThin_Gfx[] = INCBIN_U32("graphics/link/minigame_digits2.4bpp.lz"); // Unused
|
|
|
|
#define BATTLER_OFFSET(i) (gHeap + 0x8000 + MON_PIC_SIZE * (i))
|
|
|
|
const struct SpriteFrameImage gBattlerPicTable_PlayerLeft[] =
|
|
{
|
|
{BATTLER_OFFSET(0), MON_PIC_SIZE},
|
|
{BATTLER_OFFSET(1), MON_PIC_SIZE},
|
|
{BATTLER_OFFSET(2), MON_PIC_SIZE},
|
|
{BATTLER_OFFSET(3), MON_PIC_SIZE},
|
|
};
|
|
|
|
const struct SpriteFrameImage gBattlerPicTable_OpponentLeft[] =
|
|
{
|
|
{BATTLER_OFFSET(4), MON_PIC_SIZE},
|
|
{BATTLER_OFFSET(5), MON_PIC_SIZE},
|
|
{BATTLER_OFFSET(6), MON_PIC_SIZE},
|
|
{BATTLER_OFFSET(7), MON_PIC_SIZE},
|
|
};
|
|
|
|
const struct SpriteFrameImage gBattlerPicTable_PlayerRight[] =
|
|
{
|
|
{BATTLER_OFFSET(8), MON_PIC_SIZE},
|
|
{BATTLER_OFFSET(9), MON_PIC_SIZE},
|
|
{BATTLER_OFFSET(10), MON_PIC_SIZE},
|
|
{BATTLER_OFFSET(11), MON_PIC_SIZE},
|
|
};
|
|
|
|
const struct SpriteFrameImage gBattlerPicTable_OpponentRight[] =
|
|
{
|
|
{BATTLER_OFFSET(12), MON_PIC_SIZE},
|
|
{BATTLER_OFFSET(13), MON_PIC_SIZE},
|
|
{BATTLER_OFFSET(14), MON_PIC_SIZE},
|
|
{BATTLER_OFFSET(15), MON_PIC_SIZE},
|
|
};
|
|
|
|
const struct SpriteFrameImage gTrainerBackPicTable_Brendan[] =
|
|
{
|
|
{gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
|
|
};
|
|
|
|
const struct SpriteFrameImage gTrainerBackPicTable_May[] =
|
|
{
|
|
{gTrainerBackPic_May + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_May + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_May + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_May + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
|
|
};
|
|
|
|
const struct SpriteFrameImage gTrainerBackPicTable_Red[] =
|
|
{
|
|
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_Red + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE},
|
|
};
|
|
|
|
const struct SpriteFrameImage gTrainerBackPicTable_Leaf[] =
|
|
{
|
|
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE},
|
|
};
|
|
|
|
const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireBrendan[] =
|
|
{
|
|
{gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
|
|
};
|
|
|
|
const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireMay[] =
|
|
{
|
|
{gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
|
|
};
|
|
|
|
const struct SpriteFrameImage gTrainerBackPicTable_Wally[] =
|
|
{
|
|
{gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
|
|
};
|
|
|
|
const struct SpriteFrameImage gTrainerBackPicTable_Steven[] =
|
|
{
|
|
{gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE},
|
|
{gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE},
|
|
};
|
|
|
|
const union AnimCmd sAnim_GeneralFrame0[] =
|
|
{
|
|
ANIMCMD_FRAME(0, 0),
|
|
ANIMCMD_END,
|
|
};
|
|
|
|
static const union AnimCmd sAnim_GeneralFrame3[] =
|
|
{
|
|
ANIMCMD_FRAME(3, 0),
|
|
ANIMCMD_END,
|
|
};
|
|
|
|
// Many of these affine anims seem to go unused, and
|
|
// instead SetSpriteRotScale is used to manipulate
|
|
// the battler sprites directly (for instance, in AnimTask_SwitchOutShrinkMon).
|
|
// Those with explicit indexes are referenced elsewhere.
|
|
|
|
static const union AffineAnimCmd sAffineAnim_Battler_Normal[] =
|
|
{
|
|
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
|
|
AFFINEANIMCMD_END,
|
|
};
|
|
|
|
static const union AffineAnimCmd sAffineAnim_Battler_Flipped[] =
|
|
{
|
|
AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
|
|
AFFINEANIMCMD_END,
|
|
};
|
|
|
|
static const union AffineAnimCmd sAffineAnim_Battler_Emerge[] =
|
|
{
|
|
AFFINEANIMCMD_FRAME(0x28, 0x28, 0, 0),
|
|
AFFINEANIMCMD_FRAME(0x12, 0x12, 0, 12),
|
|
AFFINEANIMCMD_END,
|
|
};
|
|
|
|
static const union AffineAnimCmd sAffineAnim_Battler_Return[] =
|
|
{
|
|
AFFINEANIMCMD_FRAME( -0x2, -0x2, 0, 18),
|
|
AFFINEANIMCMD_FRAME(-0x10, -0x10, 0, 15),
|
|
AFFINEANIMCMD_END,
|
|
};
|
|
|
|
static const union AffineAnimCmd sAffineAnim_Battler_HorizontalSquishLoop[] =
|
|
{
|
|
AFFINEANIMCMD_FRAME(0xA0, 0x100, 0, 0),
|
|
AFFINEANIMCMD_FRAME( 0x4, 0x0, 0, 8),
|
|
AFFINEANIMCMD_FRAME(-0x4, 0x0, 0, 8),
|
|
AFFINEANIMCMD_JUMP(1),
|
|
};
|
|
|
|
static const union AffineAnimCmd sAffineAnim_Battler_Grow[] =
|
|
{
|
|
AFFINEANIMCMD_FRAME(0x2, 0x2, 0, 20),
|
|
AFFINEANIMCMD_END,
|
|
};
|
|
|
|
static const union AffineAnimCmd sAffineAnim_Battler_Shrink[] =
|
|
{
|
|
AFFINEANIMCMD_FRAME(-0x2, -0x2, 0, 20),
|
|
AFFINEANIMCMD_END,
|
|
};
|
|
|
|
static const union AffineAnimCmd sAffineAnim_Battler_BigToSmall[] =
|
|
{
|
|
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
|
|
AFFINEANIMCMD_FRAME(-0x10, -0x10, 0, 9),
|
|
AFFINEANIMCMD_END,
|
|
};
|
|
|
|
static const union AffineAnimCmd sAffineAnim_Battler_GrowLarge[] =
|
|
{
|
|
AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 63),
|
|
AFFINEANIMCMD_END,
|
|
};
|
|
|
|
static const union AffineAnimCmd sAffineAnim_Battler_TipRight[] =
|
|
{
|
|
AFFINEANIMCMD_FRAME(0x0, 0x0, -3, 5),
|
|
AFFINEANIMCMD_FRAME(0x0, 0x0, 3, 5),
|
|
AFFINEANIMCMD_END,
|
|
};
|
|
|
|
const union AffineAnimCmd *const gAffineAnims_BattleSpritePlayerSide[] =
|
|
{
|
|
[BATTLER_AFFINE_NORMAL] = sAffineAnim_Battler_Normal,
|
|
[BATTLER_AFFINE_EMERGE] = sAffineAnim_Battler_Emerge,
|
|
[BATTLER_AFFINE_RETURN] = sAffineAnim_Battler_Return,
|
|
sAffineAnim_Battler_HorizontalSquishLoop,
|
|
sAffineAnim_Battler_Grow,
|
|
sAffineAnim_Battler_Shrink,
|
|
sAffineAnim_Battler_GrowLarge,
|
|
sAffineAnim_Battler_TipRight,
|
|
sAffineAnim_Battler_BigToSmall,
|
|
};
|
|
|
|
static const union AffineAnimCmd sAffineAnim_Battler_SpinShrink[] =
|
|
{
|
|
AFFINEANIMCMD_FRAME(-0x4, -0x4, 4, 63),
|
|
AFFINEANIMCMD_END,
|
|
};
|
|
|
|
static const union AffineAnimCmd sAffineAnim_Battler_TipLeft[] =
|
|
{
|
|
AFFINEANIMCMD_FRAME(0x0, 0x0, 3, 5),
|
|
AFFINEANIMCMD_FRAME(0x0, 0x0, -3, 5),
|
|
AFFINEANIMCMD_END,
|
|
};
|
|
|
|
static const union AffineAnimCmd sAffineAnim_Battler_RotateUpAndBack[] =
|
|
{
|
|
AFFINEANIMCMD_FRAME(0x0, 0x0, -5, 20),
|
|
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 20),
|
|
AFFINEANIMCMD_FRAME(0x0, 0x0, 5, 20),
|
|
AFFINEANIMCMD_END,
|
|
};
|
|
|
|
static const union AffineAnimCmd sAffineAnim_Battler_Spin[] =
|
|
{
|
|
AFFINEANIMCMD_FRAME(0x0, 0x0, 9, 110),
|
|
AFFINEANIMCMD_END,
|
|
};
|
|
|
|
const union AffineAnimCmd *const gAffineAnims_BattleSpriteOpponentSide[] =
|
|
{
|
|
[BATTLER_AFFINE_NORMAL] = sAffineAnim_Battler_Normal,
|
|
[BATTLER_AFFINE_EMERGE] = sAffineAnim_Battler_Emerge,
|
|
[BATTLER_AFFINE_RETURN] = sAffineAnim_Battler_Return,
|
|
sAffineAnim_Battler_HorizontalSquishLoop,
|
|
sAffineAnim_Battler_Grow,
|
|
sAffineAnim_Battler_Shrink,
|
|
sAffineAnim_Battler_SpinShrink,
|
|
sAffineAnim_Battler_TipLeft,
|
|
sAffineAnim_Battler_RotateUpAndBack,
|
|
sAffineAnim_Battler_BigToSmall,
|
|
sAffineAnim_Battler_Spin,
|
|
};
|
|
|
|
const union AffineAnimCmd *const gAffineAnims_BattleSpriteContest[] =
|
|
{
|
|
[BATTLER_AFFINE_NORMAL] = sAffineAnim_Battler_Flipped,
|
|
[BATTLER_AFFINE_EMERGE] = sAffineAnim_Battler_Emerge,
|
|
[BATTLER_AFFINE_RETURN] = sAffineAnim_Battler_Return,
|
|
sAffineAnim_Battler_HorizontalSquishLoop,
|
|
sAffineAnim_Battler_Grow,
|
|
sAffineAnim_Battler_Shrink,
|
|
sAffineAnim_Battler_SpinShrink,
|
|
sAffineAnim_Battler_TipLeft,
|
|
sAffineAnim_Battler_RotateUpAndBack,
|
|
sAffineAnim_Battler_BigToSmall,
|
|
sAffineAnim_Battler_Spin,
|
|
};
|
|
|
|
|
|
static const union AnimCmd sAnim_MonPic_0[] =
|
|
{
|
|
ANIMCMD_FRAME(0, 0),
|
|
ANIMCMD_END,
|
|
};
|
|
|
|
static const union AnimCmd sAnim_MonPic_1[] =
|
|
{
|
|
ANIMCMD_FRAME(1, 0),
|
|
ANIMCMD_END,
|
|
};
|
|
|
|
const union AnimCmd *const gAnims_MonPic[MAX_MON_PIC_FRAMES] =
|
|
{
|
|
sAnim_MonPic_0,
|
|
sAnim_MonPic_1,
|
|
};
|
|
|
|
#include "data/trainer_graphics/front_pic_anims.h"
|
|
#include "data/trainer_graphics/front_pic_tables.h"
|
|
#include "data/trainer_graphics/back_pic_anims.h"
|
|
#include "data/trainer_graphics/back_pic_tables.h"
|
|
|
|
#include "data/trainer_parties.h"
|
|
#include "data/text/trainer_class_names.h"
|
|
#include "data/trainers.h"
|
|
#include "data/text/move_names.h"
|