Add many gen 8 move animations (#2861)

* port many gen8 and 9 move anims from cfru

* fix thunder cage, shell smash, shelter anims. update anim credits

---------

Co-authored-by: ghoulslash <pokevoyager0@gmail.com>
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
This commit is contained in:
ghoulslash 2023-06-21 13:19:54 -04:00 committed by GitHub
parent 6342da3b58
commit 7371a9e401
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 3435 additions and 201 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
0 164 255
16 123 41
32 164 82
57 205 131
82 238 172
139 246 205
197 255 230
238 255 238
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0

View File

@ -213,7 +213,7 @@ u8 GetSubstituteSpriteDefault_Y(u8 battlerId);
#define STAT_ANIM_MULTIPLE_MINUS1 57
#define STAT_ANIM_MULTIPLE_MINUS2 58
void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId);
extern const union AnimCmd *const sAnims_SpinningSparkle[];
extern const union AnimCmd *const gAnims_SpinningSparkle[];
// battle_anim_ground.c
void AnimTask_HorizontalShake(u8 taskId);
@ -235,6 +235,7 @@ void InitStatsChangeAnimation(u8);
void StartMonScrollingBgMask(u8 taskId, int unused, u16 scrollSpeed, u8 battler, bool8 includePartner, u8 numFadeSteps, u8 fadeStepDelay, u8 duration, const u32 *gfx, const u32 *tilemap, const u32 *palette);
// battle_anim_effects_1.c
void AnimFalseSwipeSlice_Step3(struct Sprite *);
void SetSpriteNextToMonHead(u8 battler, struct Sprite *sprite);
void AnimMoveTwisterParticle(struct Sprite *sprite);
void AnimParticleBurst(struct Sprite *);
@ -283,6 +284,7 @@ extern const union AnimCmd *const gIngrainRootAnimTable[];
extern const union AffineAnimCmd *const gSwiftStarAffineAnimTable[];
extern const union AnimCmd *const gMetronomeThroughtBubbleAnimTable[];
extern const union AffineAnimCmd *const gStockpileAbsorptionOrbAffineAnimTable[];
extern const union AnimCmd *const gSlashSliceAnimTable[];
// battle_anim_effects_2.c
void AnimUproarRing(struct Sprite *sprite);
@ -301,8 +303,10 @@ extern const union AffineAnimCmd *const gWaterPulseRingAffineAnimTable[];
extern const union AffineAnimCmd *const gHyperVoiceRingAffineAnimTable[];
extern const union AnimCmd *const gCoinAnimTable[];
extern const union AffineAnimCmd *const gHiddenPowerOrbAffineAnimTable[];
extern const union AffineAnimCmd *const gBulletSeedAffineAnimTable[];
// battle_anim_effects_3.c
void AnimKnockOffStrike_Step(struct Sprite *sprite);
void AnimBlackSmoke(struct Sprite *sprite);
void AnimSweetScentPetal(struct Sprite *sprite);
void AnimTealAlert(struct Sprite *sprite);
@ -314,6 +318,10 @@ void AnimFlatterSpotlight_Step(struct Sprite *sprite);
extern const union AnimCmd *const gOpeningEyeAnimTable[];
extern const union AnimCmd *const gEclipsingOrbAnimTable[];
extern const union AffineAnimCmd *const gSpotlightAffineAnimTable[];
extern const union AffineAnimCmd *const gSmokeBallEscapeCloudAffineAnimTable[];
extern void AnimSmokeBallEscapeCloud(struct Sprite *sprite);
extern const union AffineAnimCmd *const gKnockOffStrikeAffineAnimTable[];
extern const union AnimCmd *const gKnockOffStrikeAnimTable[];
// battle_anim_water.c
void AnimWaterPulseRing(struct Sprite *sprite);
@ -337,6 +345,7 @@ extern const union AnimCmd *const gAffineAnims_AirWaveCrescent[];
extern const union AffineAnimCmd *const gAffineAnims_FlyBallUp[];
extern const union AffineAnimCmd *const gAffineAnims_FlyBallAttack[];
extern const union AffineAnimCmd *const gAffineAnims_BounceBallLand[];
extern const union AnimCmd *const gAnims_FallingFeather[];
// battle_anim_poison.c
void AnimSludgeBombHitParticle(struct Sprite *);
@ -352,6 +361,7 @@ void AnimGhostStatusSprite(struct Sprite *sprite);
void AnimShadowBall(struct Sprite *sprite);
void AnimTask_GrudgeFlames_Step(u8 taskId);
extern const union AffineAnimCmd *const gAffineAnims_ShadowBall[];
extern const union AnimCmd *const gAnims_GrudgeFlame[];
// battle_anim_psychic.c
extern const union AffineAnimCmd *const gAffineAnims_PsychoBoostOrb[];
@ -474,6 +484,7 @@ void AnimRaiseSprite(struct Sprite *sprite);
void AnimFallingRock_Step(struct Sprite *sprite);
void AnimFlyingSandCrescent(struct Sprite *sprite);
void AnimRockFragment(struct Sprite *);
void AnimRockBlastRock(struct Sprite *sprite);
// battle_anim_dark.c
void AnimClawSlash(struct Sprite *sprite);
@ -496,6 +507,7 @@ void AnimSwirlingSnowball_Step1(struct Sprite *sprite);
extern const union AnimCmd *const gAnims_Snowball[];
extern const union AffineAnimCmd *const gAffineAnims_IceCrystalHit[];
extern const union AnimCmd *const gAnims_IceCrystalLarge[];
extern const union AnimCmd *const gAnims_IceCrystalSmall[];
extern const union AnimCmd *const gAnims_IceBallChunk[];
extern const union AnimCmd *const gAnims_BlizzardIceCrystal[];
@ -520,6 +532,7 @@ void AnimDragonRageFirePlume(struct Sprite *sprite);
void AnimDragonFireToTarget(struct Sprite *sprite);
void AnimDragonDanceOrb(struct Sprite *sprite);
void AnimOverheatFlame(struct Sprite *sprite);
void AnimOutrageFlame(struct Sprite *sprite);
// battle_anim_new.c
void CoreEnforcerLoadBeamTarget(struct Sprite *sprite);

View File

@ -212,6 +212,8 @@ bool8 IsMoveAffectedByParentalBond(u16 move, u8 battlerId);
void CopyMonLevelAndBaseStatsToBattleMon(u32 battler, struct Pokemon *mon);
void CopyMonAbilityAndTypesToBattleMon(u32 battler, struct Pokemon *mon);
void RecalcBattlerStats(u32 battler, struct Pokemon *mon);
bool32 IsAlly(u32 battlerAtk, u32 battlerDef);
// Ability checks
bool32 IsRolePlayBannedAbilityAtk(u16 ability);
bool32 IsRolePlayBannedAbility(u16 ability);

View File

@ -1,6 +1,8 @@
#ifndef GUARD_CONSTANTS_BATTLE_ANIM_H
#define GUARD_CONSTANTS_BATTLE_ANIM_H
#include "battle_anim_scripts.h"
// Sprites start at 10000 and thus must be subtracted of 10000 to account for the true index.
#define GET_TRUE_SPRITE_INDEX(i) ((i - ANIM_SPRITES_START))
@ -505,6 +507,7 @@
#define BG_AURA_SPHERE 77
#define BG_STEEL_BEAM_OPPONENT 78
#define BG_STEEL_BEAM_PLAYER 79
#define BG_CHLOROBLAST 80
// table ids for general animations (gBattleAnims_General)
#define B_ANIM_CASTFORM_CHANGE 0

View File

@ -0,0 +1,28 @@
#ifndef GUARD_CONSTANTS_BATTLE_ANIM_SCRIPTS_H
#define GUARD_CONSTANTS_BATTLE_ANIM_SCRIPTS_H
// shell smash
#define SHELL_SMASH_STARTING_X 40
#define SHELL_SMASH_MOVEMENT_DISTANCE 34
#define SHELL_SMASH_SHELL_MOVE_IN_DURATION 16
#define SHELL_SMASH_PAUSE_DURATION 48
// thunder cage
#define THUNDER_CAGE_BALL_TIME 0x64
// power shift
#define POWER_SHIFT_LEFT_X -20
#define POWER_SHIFT_RIGHT_X 20
#define POWER_SHIFT_DELAY 0x30
#define POWER_SHIFT_ARC -50
// mysitcal power
#define MYSTICAL_POWER_RING_PAUSE 7
// esper wing
#define ESPER_WING_SPEED 16
// triple arrows
#define TRIPLE_ARROW_FLY_TIME 9
#endif // GUARD_CONSTANTS_BATTLE_ANIM_SCRIPTS_H

View File

@ -10111,6 +10111,7 @@ extern const u32 gBattleAnimBgPalette_GunkShot[];
extern const u32 gBattleAnimBgImage_HydroCannon[];
extern const u32 gBattleAnimBgPalette_HydroCannon[];
extern const u32 gBattleAnimBgTilemap_HydroCannon[];
extern const u32 gBattleAnimBgPalette_Chloroblast[];
extern const u32 gBattleAnimBgImage_HydroPump[];
extern const u32 gBattleAnimBgPalette_HydroPump[];
extern const u32 gBattleAnimBgTilemap_HydroPump[];

View File

@ -5,7 +5,6 @@
#include "trig.h"
#include "constants/rgb.h"
static void AnimOutrageFlame(struct Sprite *);
static void AnimDragonDanceOrb_Step(struct Sprite *);
static void AnimOverheatFlame_Step(struct Sprite *);
static void AnimTask_DragonDanceWaver_Step(u8);
@ -316,7 +315,7 @@ static void AnimSpinningDracoMeteor(struct Sprite *sprite)
StoreSpriteCallbackInData6(sprite, AnimSpinningDracoMeteorFinish);
}
static void AnimOutrageFlame(struct Sprite *sprite)
void AnimOutrageFlame(struct Sprite *sprite)
{
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);

View File

@ -97,7 +97,6 @@ static void AnimSlashSlice(struct Sprite *);
static void AnimFalseSwipeSlice(struct Sprite *);
static void AnimFalseSwipeSlice_Step1(struct Sprite *);
static void AnimFalseSwipeSlice_Step2(struct Sprite *);
static void AnimFalseSwipeSlice_Step3(struct Sprite *);
static void AnimFalseSwipePositionedSlice(struct Sprite *);
static void AnimEndureEnergy_Step(struct Sprite *);
static void AnimSharpenSphere(struct Sprite *);
@ -5914,7 +5913,7 @@ static void AnimFalseSwipeSlice_Step2(struct Sprite *sprite)
sprite->callback = AnimFalseSwipeSlice_Step3;
}
static void AnimFalseSwipeSlice_Step3(struct Sprite *sprite)
void AnimFalseSwipeSlice_Step3(struct Sprite *sprite)
{
if (++sprite->data[0] > 1)
{

View File

@ -15,6 +15,7 @@
#include "util.h"
#include "constants/rgb.h"
#include "constants/songs.h"
#include "constants/moves.h"
static void AnimCirclingFinger(struct Sprite *);
static void AnimBouncingMusicNote(struct Sprite *);
@ -3358,6 +3359,12 @@ static void AnimTask_HeartsBackground_Step(u8 taskId)
void AnimTask_ScaryFace(u8 taskId)
{
struct BattleAnimBgData animBg;
bool32 onPlayer;
if (gAnimMoveIndex == MOVE_BITTER_MALICE)
onPlayer = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER;
else
onPlayer = GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT;
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
@ -3373,7 +3380,7 @@ void AnimTask_ScaryFace(u8 taskId)
GetBattleAnimBg1Data(&animBg);
if (IsContest())
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFaceContest, FALSE);
else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT)
else if (onPlayer)
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFacePlayer, FALSE);
else
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFaceOpponent, FALSE);

View File

@ -69,7 +69,6 @@ static void AnimFlatterSpotlight(struct Sprite *);
static void AnimReversalOrb_Step(struct Sprite *);
static void AnimYawnCloud(struct Sprite *);
static void AnimYawnCloud_Step(struct Sprite *);
static void AnimSmokeBallEscapeCloud(struct Sprite *);
static void AnimFacadeSweatDrop(struct Sprite *);
static void AnimRoarNoiseLine(struct Sprite *);
static void AnimRoarNoiseLine_Step(struct Sprite *);
@ -87,7 +86,6 @@ static void AnimMeteorMashStar_Step(struct Sprite *sprite);
static void AnimBlockX_Step(struct Sprite *);
static void AnimUnusedItemBagSteal(struct Sprite *);
static void AnimKnockOffStrike(struct Sprite *);
static void AnimKnockOffStrike_Step(struct Sprite *sprite);
static void AnimRecycle(struct Sprite *);
static void AnimRecycle_Step(struct Sprite *);
static void SetPsychicBackground_Step(u8);
@ -3652,7 +3650,7 @@ static void AnimYawnCloud_Step(struct Sprite *sprite)
// arg 1: initial x pixel offset
// arg 2: initial y pixel offset
// arg 3: time until destroyed
static void AnimSmokeBallEscapeCloud(struct Sprite *sprite)
void AnimSmokeBallEscapeCloud(struct Sprite *sprite)
{
sprite->data[0] = gBattleAnimArgs[3];
StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]);
@ -5469,7 +5467,7 @@ static void AnimTask_TeeterDanceMovement_Step(u8 taskId)
}
}
static void AnimKnockOffStrike_Step(struct Sprite *sprite)
void AnimKnockOffStrike_Step(struct Sprite *sprite)
{
// These two cases are identical.
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)

View File

@ -874,7 +874,7 @@ void AnimThunderWave(struct Sprite *sprite)
sprite->x += gBattleAnimArgs[0];
sprite->y += gBattleAnimArgs[1];
if (gAnimMoveIndex == MOVE_THUNDER_WAVE)
if (gAnimMoveIndex != MOVE_ANCHOR_SHOT)
spriteId = CreateSprite(&gThunderWaveSpriteTemplate, sprite->x + 32, sprite->y, sprite->subpriority);
else
spriteId = CreateSprite(&gAnchorShotChainTemplate, sprite->x + 32, sprite->y, sprite->subpriority);

View File

@ -157,7 +157,7 @@ static const union AnimCmd sAnim_FallingFeather_1[] =
ANIMCMD_END,
};
static const union AnimCmd *const sAnims_FallingFeather[] =
const union AnimCmd *const gAnims_FallingFeather[] =
{
sAnim_FallingFeather_0,
sAnim_FallingFeather_1,
@ -168,7 +168,7 @@ const struct SpriteTemplate gFallingFeatherSpriteTemplate =
.tileTag = ANIM_TAG_WHITE_FEATHER,
.paletteTag = ANIM_TAG_WHITE_FEATHER,
.oam = &gOamData_AffineNormal_ObjNormal_32x32,
.anims = sAnims_FallingFeather,
.anims = gAnims_FallingFeather,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimFallingFeather,

View File

@ -233,7 +233,7 @@ static const union AnimCmd sAnim_GrudgeFlame[] =
ANIMCMD_JUMP(0),
};
static const union AnimCmd *const sAnims_GrudgeFlame[] =
const union AnimCmd *const gAnims_GrudgeFlame[] =
{
sAnim_GrudgeFlame,
};
@ -243,7 +243,7 @@ const struct SpriteTemplate gGrudgeFlameSpriteTemplate =
.tileTag = ANIM_TAG_PURPLE_FLAME,
.paletteTag = ANIM_TAG_PURPLE_FLAME,
.oam = &gOamData_AffineOff_ObjBlend_16x32,
.anims = sAnims_GrudgeFlame,
.anims = gAnims_GrudgeFlame,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimGrudgeFlame,

View File

@ -119,7 +119,7 @@ const union AnimCmd *const gAnims_IceCrystalLarge[] =
sAnim_IceCrystalLarge,
};
static const union AnimCmd *const sAnims_IceCrystalSmall[] =
const union AnimCmd *const gAnims_IceCrystalSmall[] =
{
sAnim_IceCrystalSmall,
};
@ -166,7 +166,7 @@ const struct SpriteTemplate gIceCrystalSpiralInwardSmall =
.tileTag = ANIM_TAG_ICE_CRYSTALS,
.paletteTag = ANIM_TAG_ICE_CRYSTALS,
.oam = &gOamData_AffineOff_ObjBlend_8x8,
.anims = sAnims_IceCrystalSmall,
.anims = gAnims_IceCrystalSmall,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimIcePunchSwirlingParticle,
@ -199,7 +199,7 @@ const struct SpriteTemplate gIceBeamOuterCrystalSpriteTemplate =
.tileTag = ANIM_TAG_ICE_CRYSTALS,
.paletteTag = ANIM_TAG_ICE_CRYSTALS,
.oam = &gOamData_AffineOff_ObjBlend_8x8,
.anims = sAnims_IceCrystalSmall,
.anims = gAnims_IceCrystalSmall,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimIceBeamParticle,
@ -234,7 +234,7 @@ const struct SpriteTemplate gIceCrystalHitSmallSpriteTemplate =
.tileTag = ANIM_TAG_ICE_CRYSTALS,
.paletteTag = ANIM_TAG_ICE_CRYSTALS,
.oam = &gOamData_AffineNormal_ObjBlend_8x8,
.anims = sAnims_IceCrystalSmall,
.anims = gAnims_IceCrystalSmall,
.images = NULL,
.affineAnims = gAffineAnims_IceCrystalHit,
.callback = AnimIceEffectParticle,
@ -515,7 +515,7 @@ const struct SpriteTemplate gIceBallImpactShardSpriteTemplate =
.tileTag = ANIM_TAG_ICE_CRYSTALS,
.paletteTag = ANIM_TAG_ICE_CRYSTALS,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
.anims = sAnims_IceCrystalSmall,
.anims = gAnims_IceCrystalSmall,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = InitIceBallParticle,

File diff suppressed because it is too large Load Diff

View File

@ -13,7 +13,6 @@ static void AnimTask_Rollout_Step(u8 taskId);
static void AnimRolloutParticle(struct Sprite *);
static void AnimRockTomb(struct Sprite *);
static void AnimRockTomb_Step(struct Sprite *sprite);
static void AnimRockBlastRock(struct Sprite *);
static void AnimRockScatter(struct Sprite *);
static void AnimRockScatter_Step(struct Sprite *sprite);
static void AnimParticleInVortex_Step(struct Sprite *sprite);
@ -921,7 +920,7 @@ static void AnimRockTomb_Step(struct Sprite *sprite)
}
}
static void AnimRockBlastRock(struct Sprite *sprite)
void AnimRockBlastRock(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
StartSpriteAffineAnim(sprite, 1);

View File

@ -106,7 +106,7 @@ static const union AnimCmd sAnim_SpinningSparkle[] =
ANIMCMD_END
};
const union AnimCmd *const sAnims_SpinningSparkle[] =
const union AnimCmd *const gAnims_SpinningSparkle[] =
{
sAnim_SpinningSparkle
};
@ -116,7 +116,7 @@ const struct SpriteTemplate gSpinningSparkleSpriteTemplate =
.tileTag = ANIM_TAG_SPARKLE_4,
.paletteTag = ANIM_TAG_SPARKLE_4,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
.anims = sAnims_SpinningSparkle,
.anims = gAnims_SpinningSparkle,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimSpinningSparkle,
@ -396,6 +396,36 @@ void AnimTask_FrozenIceCubeAttacker(u8 taskId)
gTasks[taskId].func = AnimTask_FrozenIceCube_Step1;
}
void AnimTask_CentredFrozenIceCube(u8 taskId)
{
// same as AnimTask_FrozenIceCube but center position on target(s)
s16 x, y;
u8 spriteId;
u8 battler1 = gBattleAnimTarget;
u8 battler2 = BATTLE_PARTNER(battler1);
if (!IsDoubleBattle() || IsAlly(gBattleAnimAttacker, gBattleAnimTarget))
{
x = GetBattlerSpriteCoord(battler1, BATTLER_COORD_X_2);
y = GetBattlerSpriteCoord(battler1, BATTLER_COORD_Y_PIC_OFFSET);
}
else
{
x = (GetBattlerSpriteCoord(battler1, BATTLER_COORD_X_2) + GetBattlerSpriteCoord(battler2, BATTLER_COORD_X_2)) / 2;
y = (GetBattlerSpriteCoord(battler1, BATTLER_COORD_Y_PIC_OFFSET) + GetBattlerSpriteCoord(battler2, BATTLER_COORD_Y_PIC_OFFSET)) / 2;
}
x -= 32;
y -= 36;
spriteId = CreateSprite(&sFrozenIceCubeSpriteTemplate, x, y, 4);
if (GetSpriteTileStartByTag(ANIM_TAG_ICE_CUBE) == 0xFFFF)
gSprites[spriteId].invisible = TRUE;
SetSubspriteTables(&gSprites[spriteId], sFrozenIceCubeSubspriteTable);
gTasks[taskId].data[15] = spriteId;
gTasks[taskId].func = AnimTask_FrozenIceCube_Step1;
}
void AnimTask_FrozenIceCube(u8 taskId)
{

View File

@ -10937,3 +10937,8 @@ u32 CalcSecondaryEffectChance(u8 battlerId, u8 secondaryEffectChance)
return secondaryEffectChance;
}
bool32 IsAlly(u32 battlerAtk, u32 battlerDef)
{
return (GetBattlerSide(battlerAtk) == GetBattlerSide(battlerDef));
}

View File

@ -1987,4 +1987,5 @@ const struct BattleAnimBackground gBattleAnimBackgroundTable[] =
[BG_AURA_SPHERE] = {gBattleAnimBgImage_FocusBlast, gBattleAnimBgPalette_AuraSphere, gBattleAnimBgTilemap_FocusBlast},
[BG_STEEL_BEAM_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_SteelBeam, gBattleAnimBgTilemap_HighspeedOpponent},
[BG_STEEL_BEAM_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_SteelBeam, gBattleAnimBgTilemap_HighspeedPlayer},
[BG_CHLOROBLAST] = {gBattleAnimBgImage_HydroCannon, gBattleAnimBgPalette_Chloroblast, gBattleAnimBgTilemap_HydroCannon},
};

View File

@ -1438,6 +1438,7 @@ const u32 gBattleAnimBgPalette_GunkShot[] = INCBIN_U32("graphics/battle_anims/ba
const u32 gBattleAnimBgImage_HydroCannon[] = INCBIN_U32("graphics/battle_anims/backgrounds/hydro_cannon.4bpp.lz");
const u32 gBattleAnimBgPalette_HydroCannon[] = INCBIN_U32("graphics/battle_anims/backgrounds/hydro_cannon.gbapal.lz");
const u32 gBattleAnimBgTilemap_HydroCannon[] = INCBIN_U32("graphics/battle_anims/backgrounds/hydro_cannon.bin.lz");
const u32 gBattleAnimBgPalette_Chloroblast[] = INCBIN_U32("graphics/battle_anims/backgrounds/chloroblast.gbapal.lz");
const u32 gBattleAnimBgImage_HydroPump[] = INCBIN_U32("graphics/battle_anims/backgrounds/hydro_pump.4bpp.lz");
const u32 gBattleAnimBgPalette_HydroPump[] = INCBIN_U32("graphics/battle_anims/backgrounds/hydro_pump.gbapal.lz");