From 4640852091dec1aa5775e036ca372ec9b2c4e2a8 Mon Sep 17 00:00:00 2001 From: cawtds <38510667+cawtds@users.noreply.github.com> Date: Mon, 20 Jan 2025 18:43:38 +0100 Subject: [PATCH] expansion sync: battle_anim_effects_3 --- include/battle_anim.h | 2 +- include/graphics.h | 6 +- src/battle_anim_effects_3.c | 749 ++++++++++++++++++++++-------------- src/battle_anim_flying.c | 2 +- src/battle_anim_mons.c | 2 +- src/graphics.c | 6 +- 6 files changed, 461 insertions(+), 306 deletions(-) diff --git a/include/battle_anim.h b/include/battle_anim.h index 7dfb91a05..414b47e88 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -554,7 +554,7 @@ void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode); void ResetSpriteRotScale(u8 spriteId); void SetBattlerSpriteYOffsetFromRotation(u8 spriteId); void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 xScale, s16 yScale, u16 rotation); -void TryResetSpriteAffineState(struct Sprite *sprite); +void ResetSpriteRotScale_PreserveAffine(struct Sprite *sprite); u16 ArcTan2Neg(s16 a, s16 b); void SetGrayscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor); u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 a6, bool8 a7); diff --git a/include/graphics.h b/include/graphics.h index fe236a1d0..5f02ffcc0 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4799,9 +4799,9 @@ extern const u32 gCureBubblesTilemap[]; extern const u32 gBattleAnimBgTilemap_Attract[]; extern const u32 gBattleAnimBgImage_Attract[]; extern const u32 gBattleAnimBgPalette_Attract[]; -extern const u32 gBattleAnim_MorningSunGfx[]; -extern const u32 gBattleAnim_MorningSunTilemap[]; -extern const u32 gBattleAnim_MorningSunPal[]; +extern const u32 gBattleAnimMaskImage_LightBeam[]; +extern const u32 gBattleAnimMaskTilemap_LightBeam[]; +extern const u32 gBattleAnimMaskPalette_LightBeam[]; // battle bg extern const u32 gBattleAnimBgImage_Dark[]; diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index 1be96de60..de3da8661 100644 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -1,23 +1,30 @@ #include "global.h" - -#include "gpu_regs.h" - +#include "malloc.h" #include "battle.h" #include "battle_anim.h" +#include "bg.h" +// #include "contest.h" #include "data.h" #include "decompress.h" +#include "dma3.h" +#include "gpu_regs.h" #include "graphics.h" #include "palette.h" #include "pokemon_icon.h" #include "random.h" #include "scanline_effect.h" #include "sound.h" +#include "sprite.h" #include "task.h" #include "trig.h" #include "util.h" #include "constants/battle_anim.h" +#include "constants/rgb.h" #include "constants/songs.h" #include "constants/weather.h" +#include "constants/hold_effects.h" + +extern const struct SpriteTemplate gThoughtBubbleSpriteTemplate; static void AnimBlackSmoke_Step(struct Sprite *); static void AnimWhiteHalo(struct Sprite *); @@ -28,11 +35,12 @@ static void AnimMeanLookEye_Step1(struct Sprite *); static void AnimMeanLookEye_Step2(struct Sprite *); static void AnimMeanLookEye_Step3(struct Sprite *); static void AnimMeanLookEye_Step4(struct Sprite *); -static void SetPsychicBackground_Step(u8); -static void FadeScreenToWhite_Step(u8); static void AnimSpikes(struct Sprite *); static void AnimSpikes_Step1(struct Sprite *); static void AnimSpikes_Step2(struct Sprite *); +static void AnimLeer(struct Sprite *); +static void AnimLetterZ(struct Sprite *); +static void AnimFang(struct Sprite *); static void AnimSpotlight(struct Sprite *); static void AnimSpotlight_Step1(struct Sprite *); static void AnimSpotlight_Step2(struct Sprite *); @@ -41,73 +49,73 @@ static void AnimClappingHand_Step(struct Sprite *); static void AnimClappingHand2(struct Sprite *); static void AnimRapidSpin(struct Sprite *); static void AnimRapidSpin_Step(struct Sprite *); -static void RapinSpinMonElevation_Step(u8); -static void TormentAttacker_Step(u8); -static void TormentAttacker_Callback(struct Sprite *); +static void AnimTriAttackTriangle(struct Sprite *); +static void AnimBatonPassPokeball(struct Sprite *); static void AnimWishStar(struct Sprite *); static void AnimWishStar_Step(struct Sprite *); static void AnimMiniTwinklingStar(struct Sprite *); static void AnimMiniTwinklingStar_Step(struct Sprite *); +static void AnimSwallowBlueOrb(struct Sprite *); static void AnimGreenStar(struct Sprite *); static void AnimGreenStar_Step1(struct Sprite *); static void AnimGreenStar_Step2(struct Sprite *); static void AnimGreenStar_Callback(struct Sprite *); -static void AnimTask_RockMonBackAndForth_Step(u8); +static void AnimWeakFrustrationAngerMark(struct Sprite *); static void AnimSweetScentPetal_Step(struct Sprite *); -static void AnimTask_FlailMovement_Step(u8); +static void AnimPainSplitProjectile(struct Sprite *); static void AnimFlatterConfetti(struct Sprite *); static void AnimFlatterConfetti_Step(struct Sprite *); static void AnimFlatterSpotlight(struct Sprite *); static void AnimReversalOrb_Step(struct Sprite *); -static void AnimTask_RolePlaySilhouette_Step1(u8); -static void AnimTask_RolePlaySilhouette_Step2(u8); -static void AnimTask_AcidArmor_Step(u8); -static void AnimTask_DeepInhale_Step(u8); static void AnimYawnCloud(struct Sprite *); static void AnimYawnCloud_Step(struct Sprite *); -static void AnimTask_SquishAndSweatDroplets_Step(u8); -static void CreateSweatDroplets(u8, bool8); -static void AnimTask_FacadeColorBlend_Step(u8); +static void AnimFacadeSweatDrop(struct Sprite *); static void AnimRoarNoiseLine(struct Sprite *); static void AnimRoarNoiseLine_Step(struct Sprite *); -static void AnimTask_GlareEyeDots_Step(u8); -static void GetGlareEyeDotCoords(s16, s16, s16, s16, u8, u8, s16 *, s16 *); -static void AnimTask_BarrageBall_Step(u8); +static void AnimGlareEyeDot(struct Sprite *); static void AnimSmellingSaltsHand(struct Sprite *); static void AnimSmellingSaltsHand_Step(struct Sprite *); -static void AnimTask_SmellingSaltsSquish_Step(u8); static void AnimSmellingSaltExclamation(struct Sprite *); static void AnimSmellingSaltExclamation_Step(struct Sprite *); static void AnimHelpingHandClap(struct Sprite *); static void AnimHelpingHandClap_Step(struct Sprite *); -static void AnimTask_HelpingHandAttackerMovement_Step(u8); static void AnimForesightMagnifyingGlass(struct Sprite *); static void AnimForesightMagnifyingGlass_Step(struct Sprite *); -static void AnimTask_MonToSubstituteDoll(u8); +static void AnimMeteorMashStar(struct Sprite *); +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 AnimRecycle(struct Sprite *); +static void AnimRecycle_Step(struct Sprite *); +static void SetPsychicBackground_Step(u8); +static void FadeScreenToWhite_Step(u8); +static void RapinSpinMonElevation_Step(u8); +static void TormentAttacker_Step(u8); +static void TormentAttacker_Callback(struct Sprite *); +static void AnimTask_RockMonBackAndForth_Step(u8); +static void AnimTask_FlailMovement_Step(u8); +static void AnimTask_RolePlaySilhouette_Step1(u8); +static void AnimTask_RolePlaySilhouette_Step2(u8); +static void AnimTask_AcidArmor_Step(u8); +static void AnimTask_DeepInhale_Step(u8); +static void AnimTask_SquishAndSweatDroplets_Step(u8); +static void CreateSweatDroplets(u8, bool8); +static void AnimTask_FacadeColorBlend_Step(u8); +static void AnimTask_GlareEyeDots_Step(u8); +static void GetGlareEyeDotCoords(s16, s16, s16, s16, u8, u8, s16 *, s16 *); +static void AnimTask_BarrageBall_Step(u8); +static void AnimTask_SmellingSaltsSquish_Step(u8); +static void AnimTask_HelpingHandAttackerMovement_Step(u8); +static void AnimTask_MonToSubstituteDoll(u8); static void AnimTask_OdorSleuthMovementWaitFinish(u8); static void MoveOdorSleuthClone(struct Sprite *); static void AnimTask_TeeterDanceMovement_Step(u8); -static void AnimRecycle(struct Sprite *); -static void AnimRecycle_Step(struct Sprite *); static void AnimTask_SlackOffSquish_Step(u8); -static void AnimLeer(struct Sprite *); -static void AnimLetterZ(struct Sprite *); -static void AnimFang(struct Sprite *); -static void AnimTriAttackTriangle(struct Sprite *); -static void AnimBatonPassPokeball(struct Sprite *); -static void AnimSwallowBlueOrb(struct Sprite *); -static void AnimWeakFrustrationAngerMark(struct Sprite *); -static void AnimPainSplitProjectile(struct Sprite *); -static void AnimFacadeSweatDrop(struct Sprite *); -static void AnimGlareEyeDot(struct Sprite *); -static void AnimMeteorMashStar(struct Sprite *); -static void AnimUnusedItemBagSteal(struct Sprite *); -static void AnimKnockOffStrike(struct Sprite *); static void AnimTask_TeraCrystalShatter(struct Sprite *); static void AnimTask_TeraCrystalShatter_Step(struct Sprite *); -static const union AnimCmd sScratchAnimCmds[] = +const union AnimCmd gScratchAnimCmds[] = { ANIMCMD_FRAME(0, 4), ANIMCMD_FRAME(16, 4), @@ -119,7 +127,7 @@ static const union AnimCmd sScratchAnimCmds[] = const union AnimCmd *const gScratchAnimTable[] = { - sScratchAnimCmds, + gScratchAnimCmds, }; const struct SpriteTemplate gScratchSpriteTemplate = @@ -133,7 +141,7 @@ const struct SpriteTemplate gScratchSpriteTemplate = .callback = AnimSpriteOnMonPos, }; -const struct SpriteTemplate gBlackSmokeSpriteTemplate = +const struct SpriteTemplate gBlackSmokeSpriteTemplate = { .tileTag = ANIM_TAG_BLACK_SMOKE, .paletteTag = ANIM_TAG_BLACK_SMOKE, @@ -144,7 +152,7 @@ const struct SpriteTemplate gBlackSmokeSpriteTemplate = .callback = AnimBlackSmoke, }; -const struct SpriteTemplate gBlackBallSpriteTemplate = +const struct SpriteTemplate gBlackBallSpriteTemplate = { .tileTag = ANIM_TAG_BLACK_BALL, .paletteTag = ANIM_TAG_BLACK_BALL, @@ -155,7 +163,7 @@ const struct SpriteTemplate gBlackBallSpriteTemplate = .callback = AnimThrowProjectile, }; -static const union AnimCmd sOpeningEyeAnimCmds[] = +const union AnimCmd gOpeningEyeAnimCmds[] = { ANIMCMD_FRAME(0, 40), ANIMCMD_FRAME(16, 8), @@ -163,12 +171,12 @@ static const union AnimCmd sOpeningEyeAnimCmds[] = ANIMCMD_END, }; -const union AnimCmd *const gOpeningEyeAnimTable[] = +const union AnimCmd *const gOpeningEyeAnimTable[] = { - sOpeningEyeAnimCmds, + gOpeningEyeAnimCmds, }; -const struct SpriteTemplate gOpeningEyeSpriteTemplate = +const struct SpriteTemplate gOpeningEyeSpriteTemplate = { .tileTag = ANIM_TAG_OPENING_EYE, .paletteTag = ANIM_TAG_OPENING_EYE, @@ -201,7 +209,7 @@ const struct SpriteTemplate gTealAlertSpriteTemplate = .callback = AnimTealAlert, }; -static const union AffineAnimCmd sMeanLookEyeAffineAnimCmds1[] = +const union AffineAnimCmd gMeanLookEyeAffineAnimCmds1[] = { AFFINEANIMCMD_FRAME(0x180, 0x180, 0, 0), AFFINEANIMCMD_FRAME(-0x20, 0x18, 0, 5), @@ -209,17 +217,17 @@ static const union AffineAnimCmd sMeanLookEyeAffineAnimCmds1[] = AFFINEANIMCMD_JUMP(1), }; -static const union AffineAnimCmd sMeanLookEyeAffineAnimCmds2[] = +const union AffineAnimCmd gMeanLookEyeAffineAnimCmds2[] = { AFFINEANIMCMD_FRAME(0x30, 0x30, 0, 0), AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 6), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sMeanLookEyeAffineAnimTable[] = +const union AffineAnimCmd *const gMeanLookEyeAffineAnimTable[] = { - sMeanLookEyeAffineAnimCmds1, - sMeanLookEyeAffineAnimCmds2, + gMeanLookEyeAffineAnimCmds1, + gMeanLookEyeAffineAnimCmds2, }; const struct SpriteTemplate gMeanLookEyeSpriteTemplate = @@ -229,11 +237,11 @@ const struct SpriteTemplate gMeanLookEyeSpriteTemplate = .oam = &gOamData_AffineDouble_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sMeanLookEyeAffineAnimTable, + .affineAnims = gMeanLookEyeAffineAnimTable, .callback = AnimMeanLookEye, }; -const struct SpriteTemplate gSpikesSpriteTemplate = +const struct SpriteTemplate gSpikesSpriteTemplate = { .tileTag = ANIM_TAG_SPIKES, .paletteTag = ANIM_TAG_SPIKES, @@ -255,7 +263,7 @@ const struct SpriteTemplate gToxicSpikesSpriteTemplate = .callback = AnimSpikes, }; -static const union AnimCmd sLeerAnimCmds[] = +const union AnimCmd gLeerAnimCmds[] = { ANIMCMD_FRAME(0, 3), ANIMCMD_FRAME(16, 3), @@ -265,9 +273,9 @@ static const union AnimCmd sLeerAnimCmds[] = ANIMCMD_END, }; -static const union AnimCmd *const sLeerAnimTable[] = +const union AnimCmd *const gLeerAnimTable[] = { - sLeerAnimCmds, + gLeerAnimCmds, }; const struct SpriteTemplate gLeerSpriteTemplate = @@ -275,33 +283,33 @@ const struct SpriteTemplate gLeerSpriteTemplate = .tileTag = ANIM_TAG_LEER, .paletteTag = ANIM_TAG_LEER, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sLeerAnimTable, + .anims = gLeerAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimLeer, }; -static const union AnimCmd sLetterZAnimCmds[] = +const union AnimCmd gLetterZAnimCmds[] = { ANIMCMD_FRAME(0, 3), ANIMCMD_END, }; -static const union AnimCmd *const sLetterZAnimTable[] = +const union AnimCmd *const gLetterZAnimTable[] = { - sLetterZAnimCmds, + gLetterZAnimCmds, }; -static const union AffineAnimCmd sLetterZAffineAnimCmds[] = +const union AffineAnimCmd gLetterZAffineAnimCmds[] = { AFFINEANIMCMD_FRAME(-7, -7, -3, 16), AFFINEANIMCMD_FRAME(7, 7, 3, 16), AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd *const sLetterZAffineAnimTable[] = +const union AffineAnimCmd *const gLetterZAffineAnimTable[] = { - sLetterZAffineAnimCmds, + gLetterZAffineAnimCmds, }; const struct SpriteTemplate gLetterZSpriteTemplate = @@ -309,13 +317,13 @@ const struct SpriteTemplate gLetterZSpriteTemplate = .tileTag = ANIM_TAG_LETTER_Z, .paletteTag = ANIM_TAG_LETTER_Z, .oam = &gOamData_AffineNormal_ObjNormal_32x32, - .anims = sLetterZAnimTable, + .anims = gLetterZAnimTable, .images = NULL, - .affineAnims = sLetterZAffineAnimTable, + .affineAnims = gLetterZAffineAnimTable, .callback = AnimLetterZ, }; -static const union AnimCmd sFangAnimCmds[] = +const union AnimCmd gFangAnimCmds[] = { ANIMCMD_FRAME(0, 8), ANIMCMD_FRAME(16, 16), @@ -324,21 +332,21 @@ static const union AnimCmd sFangAnimCmds[] = ANIMCMD_END, }; -static const union AnimCmd *const sFangAnimTable[] = +const union AnimCmd *const gFangAnimTable[] = { - sFangAnimCmds, + gFangAnimCmds, }; -static const union AffineAnimCmd sFangAffineAnimCmds[] = +const union AffineAnimCmd gFangAffineAnimCmds[] = { AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0), AFFINEANIMCMD_FRAME(-0x20, -0x20, 0, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sFangAffineAnimTable[] = +const union AffineAnimCmd *const gFangAffineAnimTable[] = { - sFangAffineAnimCmds, + gFangAffineAnimCmds, }; const struct SpriteTemplate gFangSpriteTemplate = @@ -346,20 +354,20 @@ const struct SpriteTemplate gFangSpriteTemplate = .tileTag = ANIM_TAG_FANG_ATTACK, .paletteTag = ANIM_TAG_FANG_ATTACK, .oam = &gOamData_AffineDouble_ObjNormal_32x32, - .anims = sFangAnimTable, + .anims = gFangAnimTable, .images = NULL, - .affineAnims = sFangAffineAnimTable, + .affineAnims = gFangAffineAnimTable, .callback = AnimFang, }; -static const union AffineAnimCmd sSpotlightAffineAnimCmds1[] = +const union AffineAnimCmd gSpotlightAffineAnimCmds1[] = { AFFINEANIMCMD_FRAME(0x0, 0x180, 0, 0), AFFINEANIMCMD_FRAME(0x10, 0x0, 0, 20), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpotlightAffineAnimCmds2[] = +const union AffineAnimCmd gSpotlightAffineAnimCmds2[] = { AFFINEANIMCMD_FRAME(0x140, 0x180, 0, 0), AFFINEANIMCMD_FRAME(-0x10, 0x0, 0, 19), @@ -368,8 +376,8 @@ static const union AffineAnimCmd sSpotlightAffineAnimCmds2[] = const union AffineAnimCmd *const gSpotlightAffineAnimTable[] = { - sSpotlightAffineAnimCmds1, - sSpotlightAffineAnimCmds2, + gSpotlightAffineAnimCmds1, + gSpotlightAffineAnimCmds2, }; const struct SpriteTemplate gSpotlightSpriteTemplate = @@ -405,7 +413,7 @@ const struct SpriteTemplate gClappingHand2SpriteTemplate = .callback = AnimClappingHand2, }; -static const union AnimCmd sRapidSpinAnimCmds[] = +const union AnimCmd gRapidSpinAnimCmds[] = { ANIMCMD_FRAME(0, 2), ANIMCMD_FRAME(8, 2), @@ -413,9 +421,9 @@ static const union AnimCmd sRapidSpinAnimCmds[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd *const sRapidSpinAnimTable[] = +const union AnimCmd *const gRapidSpinAnimTable[] = { - sRapidSpinAnimCmds, + gRapidSpinAnimCmds, }; const struct SpriteTemplate gRapidSpinSpriteTemplate = @@ -423,7 +431,7 @@ const struct SpriteTemplate gRapidSpinSpriteTemplate = .tileTag = ANIM_TAG_RAPID_SPIN, .paletteTag = ANIM_TAG_RAPID_SPIN, .oam = &gOamData_AffineOff_ObjNormal_32x16, - .anims = sRapidSpinAnimTable, + .anims = gRapidSpinAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimRapidSpin, @@ -437,18 +445,18 @@ static const union AffineAnimCmd sAffineAnims_Torment[] = AFFINEANIMCMD_END, }; -static const union AnimCmd sTriAttackTriangleAnimCmds[] = +const union AnimCmd gTriAttackTriangleAnimCmds[] = { ANIMCMD_FRAME(0, 8), ANIMCMD_END, }; -static const union AnimCmd *const sTriAttackTriangleAnimTable[] = +const union AnimCmd *const gTriAttackTriangleAnimTable[] = { - sTriAttackTriangleAnimCmds, + gTriAttackTriangleAnimCmds, }; -static const union AffineAnimCmd sTriAttackTriangleAffineAnimCmds[] = +const union AffineAnimCmd gTriAttackTriangleAffineAnimCmds[] = { AFFINEANIMCMD_FRAME(0, 0, 5, 40), AFFINEANIMCMD_FRAME(0, 0, 10, 10), @@ -457,9 +465,9 @@ static const union AffineAnimCmd sTriAttackTriangleAffineAnimCmds[] = AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd *const sTriAttackTriangleAffineAnimTable[] = +const union AffineAnimCmd *const gTriAttackTriangleAffineAnimTable[] = { - sTriAttackTriangleAffineAnimCmds, + gTriAttackTriangleAffineAnimCmds, }; const struct SpriteTemplate gTriAttackTriangleSpriteTemplate = @@ -467,13 +475,13 @@ const struct SpriteTemplate gTriAttackTriangleSpriteTemplate = .tileTag = ANIM_TAG_TRI_ATTACK_TRIANGLE, .paletteTag = ANIM_TAG_TRI_ATTACK_TRIANGLE, .oam = &gOamData_AffineDouble_ObjNormal_64x64, - .anims = sTriAttackTriangleAnimTable, + .anims = gTriAttackTriangleAnimTable, .images = NULL, - .affineAnims = sTriAttackTriangleAffineAnimTable, + .affineAnims = gTriAttackTriangleAffineAnimTable, .callback = AnimTriAttackTriangle, }; -static const union AnimCmd sEclipsingOrbAnimCmds[] = +const union AnimCmd gEclipsingOrbAnimCmds[] = { ANIMCMD_FRAME(0, 3), ANIMCMD_FRAME(16, 3), @@ -488,7 +496,7 @@ static const union AnimCmd sEclipsingOrbAnimCmds[] = const union AnimCmd *const gEclipsingOrbAnimTable[] = { - sEclipsingOrbAnimCmds, + gEclipsingOrbAnimCmds, }; const struct SpriteTemplate gEclipsingOrbSpriteTemplate = @@ -502,7 +510,7 @@ const struct SpriteTemplate gEclipsingOrbSpriteTemplate = .callback = AnimSpriteOnMonPos, }; -static const union AffineAnimCmd DefenseCurlDeformMonAffineAnimCmds[] = +const union AffineAnimCmd DefenseCurlDeformMonAffineAnimCmds[] = { AFFINEANIMCMD_FRAME(-12, 20, 0, 8), AFFINEANIMCMD_FRAME(12, -20, 0, 8), @@ -543,7 +551,7 @@ const struct SpriteTemplate gMiniTwinklingStarSpriteTemplate = .callback = AnimMiniTwinklingStar, }; -static const union AffineAnimCmd sStockpileDeformMonAffineAnimCmds[] = +const union AffineAnimCmd gStockpileDeformMonAffineAnimCmds[] = { AFFINEANIMCMD_FRAME(8, -8, 0, 12), AFFINEANIMCMD_FRAME(-16, 16, 0, 12), @@ -552,7 +560,7 @@ static const union AffineAnimCmd sStockpileDeformMonAffineAnimCmds[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpitUpDeformMonAffineAnimCmds[] = +const union AffineAnimCmd gSpitUpDeformMonAffineAnimCmds[] = { AFFINEANIMCMD_FRAME(0, 6, 0, 20), AFFINEANIMCMD_FRAME(0, 0, 0, 20), @@ -574,7 +582,7 @@ const struct SpriteTemplate gSwallowBlueOrbSpriteTemplate = .callback = AnimSwallowBlueOrb, }; -static const union AffineAnimCmd sSwallowDeformMonAffineAnimCmds[] = +const union AffineAnimCmd gSwallowDeformMonAffineAnimCmds[] = { AFFINEANIMCMD_FRAME(0, 6, 0, 20), AFFINEANIMCMD_FRAME(0, 0, 0, 20), @@ -584,7 +592,7 @@ static const union AffineAnimCmd sSwallowDeformMonAffineAnimCmds[] = AFFINEANIMCMD_END, }; -static const s8 sMorningSunLightBeamCoordsTable[] = +const s8 gMorningSunLightBeamCoordsTable[] = { 0xE8, 0x18, @@ -592,44 +600,44 @@ static const s8 sMorningSunLightBeamCoordsTable[] = 0x00, }; -static const union AnimCmd sGreenStarAnimCmds1[] = +const union AnimCmd gGreenStarAnimCmds1[] = { ANIMCMD_FRAME(0, 6), ANIMCMD_FRAME(4, 6), ANIMCMD_JUMP(0), }; -static const union AnimCmd sGreenStarAnimCmds2[] = +const union AnimCmd gGreenStarAnimCmds2[] = { ANIMCMD_FRAME(8, 6), ANIMCMD_END, }; -static const union AnimCmd sGreenStarAnimCmds3[] = +const union AnimCmd gGreenStarAnimCmds3[] = { ANIMCMD_FRAME(12, 6), ANIMCMD_END, }; -static const union AnimCmd *const sGreenStarAnimTable[] = +const union AnimCmd *const gGreenStarAnimTable[] = { - sGreenStarAnimCmds1, - sGreenStarAnimCmds2, - sGreenStarAnimCmds3, + gGreenStarAnimCmds1, + gGreenStarAnimCmds2, + gGreenStarAnimCmds3, }; -const struct SpriteTemplate gGreenStarSpriteTemplate = +const struct SpriteTemplate gGreenStarSpriteTemplate = { .tileTag = ANIM_TAG_GREEN_STAR, .paletteTag = ANIM_TAG_GREEN_STAR, .oam = &gOamData_AffineOff_ObjNormal_16x16, - .anims = sGreenStarAnimTable, + .anims = gGreenStarAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimGreenStar, }; -static const s8 sDoomDesireLightBeamCoordTable[] = +const s8 gDoomDesireLightBeamCoordTable[] = { 0x78, 0x50, @@ -637,7 +645,7 @@ static const s8 sDoomDesireLightBeamCoordTable[] = 0x00, }; -static const u8 sDoomDesireLightBeamDelayTable[] = +const u8 gDoomDesireLightBeamDelayTable[] = { 0, 0, @@ -646,7 +654,7 @@ static const u8 sDoomDesireLightBeamDelayTable[] = 50, }; -static const union AffineAnimCmd sStrongFrustrationAffineAnimCmds[] = +const union AffineAnimCmd gStrongFrustrationAffineAnimCmds[] = { AFFINEANIMCMD_FRAME(0, -15, 0, 7), AFFINEANIMCMD_FRAME(0, 15, 0, 7), @@ -665,7 +673,7 @@ const struct SpriteTemplate gWeakFrustrationAngerMarkSpriteTemplate = .callback = AnimWeakFrustrationAngerMark, }; -static const union AnimCmd sSweetScentPetalAnimCmds1[] = +const union AnimCmd gSweetScentPetalAnimCmds1[] = { ANIMCMD_FRAME(0, 8), ANIMCMD_FRAME(1, 8), @@ -678,7 +686,7 @@ static const union AnimCmd sSweetScentPetalAnimCmds1[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd sSweetScentPetalAnimCmds2[] = +const union AnimCmd gSweetScentPetalAnimCmds2[] = { ANIMCMD_FRAME(0, 8, .hFlip = TRUE), ANIMCMD_FRAME(1, 8, .hFlip = TRUE), @@ -691,17 +699,17 @@ static const union AnimCmd sSweetScentPetalAnimCmds2[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd sSweetScentPetalAnimCmds3[] = +const union AnimCmd gSweetScentPetalAnimCmds3[] = { ANIMCMD_FRAME(0, 8), ANIMCMD_END, }; -static const union AnimCmd *const gSweetScentPetalAnimCmdTable[] = +const union AnimCmd *const gSweetScentPetalAnimCmdTable[] = { - sSweetScentPetalAnimCmds1, - sSweetScentPetalAnimCmds2, - sSweetScentPetalAnimCmds3, + gSweetScentPetalAnimCmds1, + gSweetScentPetalAnimCmds2, + gSweetScentPetalAnimCmds3, }; const struct SpriteTemplate gSweetScentPetalSpriteTemplate = @@ -715,9 +723,7 @@ const struct SpriteTemplate gSweetScentPetalSpriteTemplate = .callback = AnimSweetScentPetal, }; -static const u16 sUnusedPalette[] = INCBIN_U16("graphics/battle_anims/unused/unknown.gbapal"); - -static const union AnimCmd sPainSplitAnimCmds[] = +const union AnimCmd gPainSplitAnimCmds[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_FRAME(4, 9), @@ -725,9 +731,9 @@ static const union AnimCmd sPainSplitAnimCmds[] = ANIMCMD_END, }; -static const union AnimCmd *const sPainSplitAnimCmdTable[] = +const union AnimCmd *const gPainSplitAnimCmdTable[] = { - sPainSplitAnimCmds, + gPainSplitAnimCmds, }; const struct SpriteTemplate gPainSplitProjectileSpriteTemplate = @@ -735,7 +741,7 @@ const struct SpriteTemplate gPainSplitProjectileSpriteTemplate = .tileTag = ANIM_TAG_PAIN_SPLIT, .paletteTag = ANIM_TAG_PAIN_SPLIT, .oam = &gOamData_AffineOff_ObjNormal_16x16, - .anims = sPainSplitAnimCmdTable, + .anims = gPainSplitAnimCmdTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimPainSplitProjectile, @@ -774,7 +780,7 @@ const struct SpriteTemplate gReversalOrbSpriteTemplate = .callback = AnimReversalOrb, }; -static const union AffineAnimCmd sDeepInhaleAffineAnimCmds[] = +const union AffineAnimCmd gDeepInhaleAffineAnimCmds[] = { AFFINEANIMCMD_FRAME(16, 0, 0, 4), AFFINEANIMCMD_FRAME(0, -3, 0, 16), @@ -784,7 +790,7 @@ static const union AffineAnimCmd sDeepInhaleAffineAnimCmds[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sYawnCloudAffineAnimCmds1[] = +const union AffineAnimCmd gYawnCloudAffineAnimCmds1[] = { AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0), AFFINEANIMCMD_FRAME(-8, -8, 0, 8), @@ -792,7 +798,7 @@ static const union AffineAnimCmd sYawnCloudAffineAnimCmds1[] = AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd sYawnCloudAffineAnimCmds2[] = +const union AffineAnimCmd gYawnCloudAffineAnimCmds2[] = { AFFINEANIMCMD_FRAME(0xC0, 0xC0, 0, 0), AFFINEANIMCMD_FRAME(8, 8, 0, 8), @@ -800,7 +806,7 @@ static const union AffineAnimCmd sYawnCloudAffineAnimCmds2[] = AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd sYawnCloudAffineAnimCmds3[] = +const union AffineAnimCmd gYawnCloudAffineAnimCmds3[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(8, 8, 0, 8), @@ -808,11 +814,11 @@ static const union AffineAnimCmd sYawnCloudAffineAnimCmds3[] = AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd *const sYawnCloudAffineAnimTable[] = +const union AffineAnimCmd *const gYawnCloudAffineAnimTable[] = { - sYawnCloudAffineAnimCmds1, - sYawnCloudAffineAnimCmds2, - sYawnCloudAffineAnimCmds3, + gYawnCloudAffineAnimCmds1, + gYawnCloudAffineAnimCmds2, + gYawnCloudAffineAnimCmds3, }; const struct SpriteTemplate gYawnCloudSpriteTemplate = @@ -822,11 +828,11 @@ const struct SpriteTemplate gYawnCloudSpriteTemplate = .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sYawnCloudAffineAnimTable, + .affineAnims = gYawnCloudAffineAnimTable, .callback = AnimYawnCloud, }; -static const union AffineAnimCmd sSmokeBallEscapeCloudAffineAnimCmds1[] = +const union AffineAnimCmd gSmokeBallEscapeCloudAffineAnimCmds1[] = { AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0), AFFINEANIMCMD_FRAME(-4, -6, 0, 16), @@ -834,7 +840,7 @@ static const union AffineAnimCmd sSmokeBallEscapeCloudAffineAnimCmds1[] = AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd sSmokeBallEscapeCloudAffineAnimCmds2[] = +const union AffineAnimCmd gSmokeBallEscapeCloudAffineAnimCmds2[] = { AFFINEANIMCMD_FRAME(0xC0, 0xC0, 0, 0), AFFINEANIMCMD_FRAME(4, 6, 0, 16), @@ -842,7 +848,7 @@ static const union AffineAnimCmd sSmokeBallEscapeCloudAffineAnimCmds2[] = AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd sSmokeBallEscapeCloudAffineAnimCmds3[] = +const union AffineAnimCmd gSmokeBallEscapeCloudAffineAnimCmds3[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(4, 6, 0, 16), @@ -850,7 +856,7 @@ static const union AffineAnimCmd sSmokeBallEscapeCloudAffineAnimCmds3[] = AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd sSmokeBallEscapeCloudAffineAnimCmds4[] = +const union AffineAnimCmd gSmokeBallEscapeCloudAffineAnimCmds4[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(8, 10, 0, 30), @@ -858,15 +864,15 @@ static const union AffineAnimCmd sSmokeBallEscapeCloudAffineAnimCmds4[] = AFFINEANIMCMD_JUMP(0), }; -const union AffineAnimCmd *const gSmokeBallEscapeCloudAffineAnimTable[] = +const union AffineAnimCmd *const gSmokeBallEscapeCloudAffineAnimTable[] = { - sSmokeBallEscapeCloudAffineAnimCmds1, - sSmokeBallEscapeCloudAffineAnimCmds2, - sSmokeBallEscapeCloudAffineAnimCmds3, - sSmokeBallEscapeCloudAffineAnimCmds4, + gSmokeBallEscapeCloudAffineAnimCmds1, + gSmokeBallEscapeCloudAffineAnimCmds2, + gSmokeBallEscapeCloudAffineAnimCmds3, + gSmokeBallEscapeCloudAffineAnimCmds4, }; -const struct SpriteTemplate gSmokeBallEscapeCloudSpriteTemplate = +const struct SpriteTemplate gSmokeBallEscapeCloudSpriteTemplate = { .tileTag = ANIM_TAG_PINK_CLOUD, .paletteTag = ANIM_TAG_PINK_CLOUD, @@ -877,7 +883,7 @@ const struct SpriteTemplate gSmokeBallEscapeCloudSpriteTemplate = .callback = AnimSmokeBallEscapeCloud, }; -static const union AffineAnimCmd sFacadeSquishAffineAnimCmds[] = +const union AffineAnimCmd gFacadeSquishAffineAnimCmds[] = { AFFINEANIMCMD_FRAME(-16, 16, 0, 6), AFFINEANIMCMD_FRAME(16, -16, 0, 12), @@ -896,8 +902,7 @@ const struct SpriteTemplate gFacadeSweatDropSpriteTemplate = .callback = AnimFacadeSweatDrop, }; -static const u16 sFacadeBlendColors[] = -{ +const u16 gFacadeBlendColors[] = { RGB(28, 25, 1), RGB(28, 21, 5), RGB(27, 18, 8), @@ -924,24 +929,24 @@ static const u16 sFacadeBlendColors[] = RGB(29, 27, 0), }; -static const union AnimCmd sRoarNoiseLineAnimCmds1[] = +const union AnimCmd gRoarNoiseLineAnimCmds1[] = { ANIMCMD_FRAME(0, 3), ANIMCMD_FRAME(16, 3), ANIMCMD_JUMP(0), }; -static const union AnimCmd sRoarNoiseLineAnimCmds2[] = +const union AnimCmd gRoarNoiseLineAnimCmds2[] = { ANIMCMD_FRAME(32, 3), ANIMCMD_FRAME(48, 3), ANIMCMD_JUMP(0), }; -static const union AnimCmd *const sRoarNoiseLineAnimTable[] = +const union AnimCmd *const gRoarNoiseLineAnimTable[] = { - sRoarNoiseLineAnimCmds1, - sRoarNoiseLineAnimCmds2, + gRoarNoiseLineAnimCmds1, + gRoarNoiseLineAnimCmds2, }; const struct SpriteTemplate gRoarNoiseLineSpriteTemplate = @@ -949,7 +954,7 @@ const struct SpriteTemplate gRoarNoiseLineSpriteTemplate = .tileTag = ANIM_TAG_NOISE_LINE, .paletteTag = ANIM_TAG_NOISE_LINE, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sRoarNoiseLineAnimTable, + .anims = gRoarNoiseLineAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimRoarNoiseLine, @@ -966,7 +971,7 @@ const struct SpriteTemplate gGlareEyeDotSpriteTemplate = .callback = AnimGlareEyeDot, }; -const struct SpriteTemplate gAssistPawprintSpriteTemplate = +const struct SpriteTemplate gAssistPawprintSpriteTemplate = { .tileTag = ANIM_TAG_PAW_PRINT, .paletteTag = ANIM_TAG_PAW_PRINT, @@ -977,23 +982,23 @@ const struct SpriteTemplate gAssistPawprintSpriteTemplate = .callback = AnimAssistPawprint, }; -static const union AffineAnimCmd sBarrageBallAffineAnimCmds1[] = +const union AffineAnimCmd gBarrageBallAffineAnimCmds1[] = { AFFINEANIMCMD_FRAME(0, 0, -4, 24), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sBarrageBallAffineAnimCmds2[] = +const union AffineAnimCmd gBarrageBallAffineAnimCmds2[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_FRAME(0, 0, 4, 24), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sBarrageBallAffineAnimTable[] = +const union AffineAnimCmd *const gBarrageBallAffineAnimTable[] = { - sBarrageBallAffineAnimCmds1, - sBarrageBallAffineAnimCmds2, + gBarrageBallAffineAnimCmds1, + gBarrageBallAffineAnimCmds2, }; const struct SpriteTemplate gBarrageBallSpriteTemplate = @@ -1003,7 +1008,7 @@ const struct SpriteTemplate gBarrageBallSpriteTemplate = .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sBarrageBallAffineAnimTable, + .affineAnims = gBarrageBallAffineAnimTable, .callback = SpriteCallbackDummy, }; @@ -1018,7 +1023,7 @@ const struct SpriteTemplate gSmellingSaltsHandSpriteTemplate = .callback = AnimSmellingSaltsHand, }; -static const union AffineAnimCmd sSmellingSaltsSquishAffineAnimCmds[] = +const union AffineAnimCmd gSmellingSaltsSquishAffineAnimCmds[] = { AFFINEANIMCMD_FRAME(0, -16, 0, 6), AFFINEANIMCMD_FRAME(0, 16, 0, 6), @@ -1058,7 +1063,7 @@ const struct SpriteTemplate gForesightMagnifyingGlassSpriteTemplate = .callback = AnimForesightMagnifyingGlass, }; -const struct SpriteTemplate gMeteorMashStarSpriteTemplate = +const struct SpriteTemplate gMeteorMashStarSpriteTemplate = { .tileTag = ANIM_TAG_GOLD_STARS, .paletteTag = ANIM_TAG_GOLD_STARS, @@ -1080,7 +1085,7 @@ static const struct SpriteTemplate sUnusedStarBurstSpriteTemplate = .callback = AnimParticleBurst, }; -const struct SpriteTemplate gBlockXSpriteTemplate = +const struct SpriteTemplate gBlockXSpriteTemplate = { .tileTag = ANIM_TAG_X_SIGN, .paletteTag = ANIM_TAG_X_SIGN, @@ -1102,26 +1107,26 @@ static const struct SpriteTemplate sUnusedItemBagStealSpriteTemplate = .callback = AnimUnusedItemBagSteal, }; -static const union AnimCmd sKnockOffStrikeAnimCmds[] = +const union AnimCmd gKnockOffStrikeAnimCmds[] = { ANIMCMD_FRAME(0, 4), ANIMCMD_FRAME(64, 4), ANIMCMD_END, }; -const union AnimCmd *const gKnockOffStrikeAnimTable[] = +const union AnimCmd *const gKnockOffStrikeAnimTable[] = { - sKnockOffStrikeAnimCmds, + gKnockOffStrikeAnimCmds, }; -static const union AffineAnimCmd sKnockOffStrikeAffineanimCmds1[] = +const union AffineAnimCmd gKnockOffStrikeAffineanimCmds1[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0, 0, -4, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sKnockOffStrikeAffineanimCmds2[] = +const union AffineAnimCmd gKnockOffStrikeAffineanimCmds2[] = { AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0, 0, 4, 8), @@ -1130,11 +1135,11 @@ static const union AffineAnimCmd sKnockOffStrikeAffineanimCmds2[] = const union AffineAnimCmd *const gKnockOffStrikeAffineAnimTable[] = { - sKnockOffStrikeAffineanimCmds1, - sKnockOffStrikeAffineanimCmds2, + gKnockOffStrikeAffineanimCmds1, + gKnockOffStrikeAffineanimCmds2, }; -const struct SpriteTemplate gKnockOffStrikeSpriteTemplate = +const struct SpriteTemplate gKnockOffStrikeSpriteTemplate = { .tileTag = ANIM_TAG_SLAM_HIT_2, .paletteTag = ANIM_TAG_SLAM_HIT_2, @@ -1145,15 +1150,15 @@ const struct SpriteTemplate gKnockOffStrikeSpriteTemplate = .callback = AnimKnockOffStrike, }; -static const union AffineAnimCmd sRecycleSpriteAffineAnimCmds[] = +const union AffineAnimCmd gRecycleSpriteAffineAnimCmds[] = { AFFINEANIMCMD_FRAME(0, 0, -4, 64), AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd *const sRecycleSpriteAffineAnimTable[] = +const union AffineAnimCmd *const gRecycleSpriteAffineAnimTable[] = { - sRecycleSpriteAffineAnimCmds, + gRecycleSpriteAffineAnimCmds, }; const struct SpriteTemplate gRecycleSpriteTemplate = @@ -1163,11 +1168,11 @@ const struct SpriteTemplate gRecycleSpriteTemplate = .oam = &gOamData_AffineNormal_ObjBlend_64x64, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sRecycleSpriteAffineAnimTable, + .affineAnims = gRecycleSpriteAffineAnimTable, .callback = AnimRecycle, }; -static const union AffineAnimCmd sSlackOffSquishAffineAnimCmds[] = +const union AffineAnimCmd gSlackOffSquishAffineAnimCmds[] = { AFFINEANIMCMD_FRAME(0, 16, 0, 4), AFFINEANIMCMD_FRAME(-2, 0, 0, 8), @@ -1320,6 +1325,7 @@ void AnimBlackSmoke(struct Sprite *sprite) { sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; + if (!gBattleAnimArgs[3]) sprite->data[0] = gBattleAnimArgs[2]; else @@ -1387,12 +1393,14 @@ void AnimTealAlert(struct Sprite *sprite) u8 y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); InitSpritePosToAnimTarget(sprite, TRUE); + rotation = ArcTan2Neg(sprite->x - x, sprite->y - y); rotation += 0x6000; if (IsContest()) rotation += 0x4000; TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rotation); + sprite->data[0] = gBattleAnimArgs[2]; sprite->data[2] = x; sprite->data[4] = y; @@ -1411,6 +1419,7 @@ static void AnimMeanLookEye(struct Sprite *sprite) static void AnimMeanLookEye_Step1(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[0], 16 - sprite->data[0])); + if (sprite->data[1]) sprite->data[0]--; else @@ -1426,7 +1435,7 @@ static void AnimMeanLookEye_Step1(struct Sprite *sprite) StartSpriteAffineAnim(sprite, 1); sprite->data[2] = 0; sprite->invisible = TRUE; - sprite->affineAnimPaused = TRUE; + sprite->affineAnimPaused = 1; sprite->callback = AnimMeanLookEye_Step2; } } @@ -1436,7 +1445,7 @@ static void AnimMeanLookEye_Step2(struct Sprite *sprite) if (sprite->data[2]++ > 9) { sprite->invisible = FALSE; - sprite->affineAnimPaused = FALSE; + sprite->affineAnimPaused = 0; if (sprite->affineAnimEnded) sprite->callback = AnimMeanLookEye_Step3; } @@ -1484,6 +1493,7 @@ static void AnimMeanLookEye_Step3(struct Sprite *sprite) static void AnimMeanLookEye_Step4(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[0], 16 - sprite->data[0])); + if (sprite->data[1]++ > 1) { sprite->data[0]--; @@ -1560,11 +1570,11 @@ static void FadeScreenToWhite_Step(u8 taskId) static void AnimSpikes(struct Sprite *sprite) { - s16 x; - s16 y; + s16 x, y; InitSpritePosToAnimAttacker(sprite, TRUE); SetAverageBattlerPositions(gBattleAnimTarget, FALSE, &x, &y); + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; @@ -1572,6 +1582,7 @@ static void AnimSpikes(struct Sprite *sprite) sprite->data[2] = x + gBattleAnimArgs[2]; sprite->data[4] = y + gBattleAnimArgs[3]; sprite->data[5] = -50; + InitAnimArcTranslation(sprite); sprite->callback = AnimSpikes_Step1; } @@ -1608,7 +1619,6 @@ static void AnimLeer(struct Sprite *sprite) static void AnimLetterZ(struct Sprite *sprite) { int var0; - if (sprite->data[0] == 0) { SetSpriteCoordsToAnimAttackerCoords(sprite); @@ -1639,7 +1649,8 @@ static void AnimLetterZ(struct Sprite *sprite) sprite->data[4] += sprite->data[2]; sprite->x2 = sprite->data[3] / 2; sprite->y2 = Sin(var0 & 0xFF, 5) + (sprite->data[4] / 2); - if ((u16)(sprite->x + sprite->x2) > 240) + + if ((u16)(sprite->x + sprite->x2) > DISPLAY_WIDTH) DestroyAnimSprite(sprite); } @@ -1677,7 +1688,9 @@ static void AnimSpotlight(struct Sprite *sprite) gBattle_WIN0V = 0; SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H); SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V); + InitSpritePosToAnimTarget(sprite, FALSE); + sprite->oam.objMode = ST_OAM_OBJ_WINDOW; sprite->invisible = TRUE; sprite->callback = AnimSpotlight_Step1; @@ -1743,6 +1756,7 @@ static void AnimClappingHand(struct Sprite *sprite) sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; sprite->oam.tileNum += 16; + if (gBattleAnimArgs[2] == 0) { sprite->oam.matrixNum = ST_OAM_HFLIP; @@ -1756,6 +1770,7 @@ static void AnimClappingHand(struct Sprite *sprite) } sprite->data[0] = gBattleAnimArgs[4]; + if (sprite->data[3] != 255) sprite->data[3] = gBattleAnimArgs[2]; @@ -1802,7 +1817,7 @@ void AnimTask_CreateSpotlight(u8 taskId) { if (IsContest()) { - SetGpuReg(REG_OFFSET_WININ, WININ_WIN1_OBJ | WININ_WIN1_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ | WININ_WIN0_BG_ALL); + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ); gBattle_WIN1H = WIN_RANGE(152, DISPLAY_WIDTH); gBattle_WIN1V = WIN_RANGE(0, DISPLAY_HEIGHT); SetGpuReg(REG_OFFSET_WIN1H, gBattle_WIN0H); @@ -1846,6 +1861,7 @@ static void AnimRapidSpin(struct Sprite *sprite) } sprite->y2 = gBattleAnimArgs[2]; + sprite->data[0] = (sprite->y2 > gBattleAnimArgs[3]); sprite->data[1] = 0; sprite->data[2] = gBattleAnimArgs[4]; @@ -1859,6 +1875,7 @@ static void AnimRapidSpin_Step(struct Sprite *sprite) sprite->data[1] = (sprite->data[1] + sprite->data[2]) & 0xFF; sprite->x2 = gSineTable[sprite->data[1]] >> 4; sprite->y2 += sprite->data[3]; + if (sprite->data[0]) { if (sprite->y2 < sprite->data[4]) @@ -1904,6 +1921,7 @@ void AnimTask_RapinSpinMonElevation(u8 taskId) task->data[5] = gBattleAnimArgs[1]; task->data[6] = 0; task->data[7] = 0; + if (toBG2 == 1) { var3 = gBattle_BG1_X; @@ -1919,6 +1937,7 @@ void AnimTask_RapinSpinMonElevation(u8 taskId) task->data[9] = var4; task->data[10] = gBattleAnimArgs[2]; + if (!gBattleAnimArgs[2]) { task->data[11] = var4; @@ -1931,6 +1950,7 @@ void AnimTask_RapinSpinMonElevation(u8 taskId) } task->data[15] = 0; + i = task->data[2]; while (i <= task->data[3]) { @@ -2109,6 +2129,7 @@ static void TormentAttacker_Step(u8 taskId) gSprites[i].data[1] = 6; StartSpriteAnim(&gSprites[i], 2); gSprites[i].callback = TormentAttacker_Callback; + if (++j == 6) break; } @@ -2265,13 +2286,13 @@ static void AnimMiniTwinklingStar(struct Sprite *sprite) u8 rand; s8 y; - rand = Random() & 3; + rand = Random2() & 3; if (rand == 0) sprite->oam.tileNum += 4; else sprite->oam.tileNum += 5; - y = Random() & 7; + y = Random2() & 7; if (y > 3) y = -y; @@ -2311,7 +2332,7 @@ void AnimTask_StockpileDeformMon(u8 taskId) { if (!gTasks[taskId].data[0]) { - PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), sStockpileDeformMonAffineAnimCmds); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), gStockpileDeformMonAffineAnimCmds); gTasks[taskId].data[0]++; } else @@ -2325,7 +2346,7 @@ void AnimTask_SpitUpDeformMon(u8 taskId) { if (!gTasks[taskId].data[0]) { - PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), sSpitUpDeformMonAffineAnimCmds); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), gSpitUpDeformMonAffineAnimCmds); gTasks[taskId].data[0]++; } else @@ -2358,7 +2379,7 @@ void AnimTask_SwallowDeformMon(u8 taskId) { if (!gTasks[taskId].data[0]) { - PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), sSwallowDeformMonAffineAnimCmds); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), gSwallowDeformMonAffineAnimCmds); gTasks[taskId].data[0]++; } else @@ -2370,10 +2391,12 @@ void AnimTask_SwallowDeformMon(u8 taskId) void AnimTask_HideSwapSprite(u8 taskId) { + // int i, j; u8 position; struct BattleAnimBgData animBg; u8 *dest; u8 *src; + // u16 *bgTilemap; u8 spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; @@ -2398,6 +2421,37 @@ void AnimTask_HideSwapSprite(u8 taskId) dest = animBg.bgTiles; CpuCopy32(src, dest, MON_PIC_SIZE); LoadBgTiles(1, animBg.bgTiles, 0x800, animBg.tilesOffset); + if (IsContest()) + { + // if (IsSpeciesNotUnown(gContestResources->moveAnim->species) != IsSpeciesNotUnown(gContestResources->moveAnim->targetSpecies)) + // { + // bgTilemap = (u16 *)animBg.bgTilemap; + // for (i = 0; i < 8; i++) + // { + // for (j = 0; j < 4; j++) + // { + // u16 temp = bgTilemap[j + i * 0x20]; + // bgTilemap[j + i * 0x20] = bgTilemap[(7 - j) + i * 0x20]; + // bgTilemap[(7 - j) + i * 0x20] = temp; + // } + // } + + // for (i = 0; i < 8; i++) + // { + // for (j = 0; j < 8; j++) + // { + // bgTilemap[j + i * 0x20] ^= 0x400; + // } + // } + // } + + // if (IsSpeciesNotUnown(gContestResources->moveAnim->targetSpecies)) + // gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gAffineAnims_BattleSpriteContest; + // else + // gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gAffineAnims_BattleSpriteOpponentSide; + + // StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], BATTLER_AFFINE_NORMAL); + } gTasks[taskId].data[0]++; break; @@ -2424,10 +2478,12 @@ void AnimTask_HideSwapSprite(u8 taskId) void AnimTask_TransformMon(u8 taskId) { + // int i, j; u8 position; struct BattleAnimBgData animBg; u8 *dest; u8 *src; + // u16 *bgTilemap; u16 stretch; switch (gTasks[taskId].data[0]) @@ -2458,8 +2514,9 @@ void AnimTask_TransformMon(u8 taskId) case 2: HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].megaEvo, gTasks[taskId].trackEnemyPersonality, gTasks[taskId].ghostUnveil); GetBgDataForTransform(&animBg, gBattleAnimAttacker); + if (IsContest()) - position = 0; + position = B_POSITION_PLAYER_LEFT; else position = GetBattlerPosition(gBattleAnimAttacker); @@ -2467,6 +2524,38 @@ void AnimTask_TransformMon(u8 taskId) dest = animBg.bgTiles; CpuCopy32(src, dest, MON_PIC_SIZE); LoadBgTiles(1, animBg.bgTiles, 0x800, animBg.tilesOffset); + if (IsContest()) + { + // if (IsSpeciesNotUnown(gContestResources->moveAnim->species) != IsSpeciesNotUnown(gContestResources->moveAnim->targetSpecies)) + // { + // bgTilemap = (u16 *)animBg.bgTilemap; + // for (i = 0; i < 8; i++) + // { + // for (j = 0; j < 4; j++) + // { + // u16 temp = bgTilemap[j + i * 0x20]; + // bgTilemap[j + i * 0x20] = bgTilemap[(7 - j) + i * 0x20]; + // bgTilemap[(7 - j) + i * 0x20] = temp; + // } + // } + + // for (i = 0; i < 8; i++) + // { + // for (j = 0; j < 8; j++) + // { + // bgTilemap[j + i * 0x20] ^= 0x400; + // } + // } + // } + + // if (IsSpeciesNotUnown(gContestResources->moveAnim->targetSpecies)) + // gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gAffineAnims_BattleSpriteContest; + // else + // gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gAffineAnims_BattleSpriteOpponentSide; + + // StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], BATTLER_AFFINE_NORMAL); + } + gTasks[taskId].data[0]++; break; case 3: @@ -2527,12 +2616,9 @@ void AnimTask_MorningSunLightBeam(u8 taskId) SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); GetBattleAnimBg1Data(&animBg); - AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnim_MorningSunTilemap); - AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnim_MorningSunGfx, animBg.tilesOffset); - LoadCompressedPalette(gBattleAnim_MorningSunPal, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); + AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimMaskTilemap_LightBeam, FALSE); if (IsContest()) { - RelocateBattleBgPal(animBg.paletteId, animBg.bgTilemap, 0, 0); gBattle_BG1_X = -56; gBattle_BG1_Y = 0; } @@ -2542,10 +2628,13 @@ void AnimTask_MorningSunLightBeam(u8 taskId) gBattle_BG1_X = -135; else gBattle_BG1_X = -10; - + gBattle_BG1_Y = 0; } + AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimMaskImage_LightBeam, animBg.tilesOffset); + LoadCompressedPalette(gBattleAnimMaskPalette_LightBeam, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); + gTasks[taskId].data[10] = gBattle_BG1_X; gTasks[taskId].data[11] = gBattle_BG1_Y; @@ -2560,6 +2649,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId) gTasks[taskId].data[1] = 12; SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1])); + if (gTasks[taskId].data[1] == 12) gTasks[taskId].data[0]++; } @@ -2569,9 +2659,10 @@ void AnimTask_MorningSunLightBeam(u8 taskId) gTasks[taskId].data[1] = 0; SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1])); + if (!gTasks[taskId].data[1]) { - gBattle_BG1_X = sMorningSunLightBeamCoordsTable[gTasks[taskId].data[2]] + gTasks[taskId].data[10]; + gBattle_BG1_X = gMorningSunLightBeamCoordsTable[gTasks[taskId].data[2]] + gTasks[taskId].data[10]; if (++gTasks[taskId].data[2] == 4) gTasks[taskId].data[0] = 4; else @@ -2588,7 +2679,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId) break; case 4: GetBattleAnimBg1Data(&animBg); - InitBattleAnimBg(animBg.bgId); + ClearBattleAnimBg(animBg.bgId); if (!IsContest()) SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0); @@ -2608,7 +2699,7 @@ static void AnimGreenStar(struct Sprite *sprite) u8 spriteId1; u8 spriteId2; - xOffset = Random(); + xOffset = Random2(); xOffset &= 0x3F; if (xOffset > 31) xOffset = 32 - xOffset; @@ -2642,7 +2733,6 @@ static void AnimGreenStar(struct Sprite *sprite) static void AnimGreenStar_Step1(struct Sprite *sprite) { s16 delta = sprite->data[3] + sprite->data[2]; - sprite->y2 -= delta >> 8; sprite->data[3] += sprite->data[2]; sprite->data[3] &= 0xFF; @@ -2705,15 +2795,11 @@ void AnimTask_DoomDesireLightBeam(u8 taskId) SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); if (!IsContest()) SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); - + GetBattleAnimBg1Data(&animBg); - AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnim_MorningSunTilemap); - AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnim_MorningSunGfx, animBg.tilesOffset); - LoadCompressedPalette(gBattleAnim_MorningSunPal, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); - + AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimMaskTilemap_LightBeam, FALSE); if (IsContest()) { - RelocateBattleBgPal(animBg.paletteId, animBg.bgTilemap, 0, 0); gBattle_BG1_X = -56; gBattle_BG1_Y = 0; } @@ -2742,6 +2828,8 @@ void AnimTask_DoomDesireLightBeam(u8 taskId) gBattle_BG1_Y = 0; } + AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimMaskImage_LightBeam, animBg.tilesOffset); + LoadCompressedPalette(gBattleAnimMaskPalette_LightBeam, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); gTasks[taskId].data[10] = gBattle_BG1_X; gTasks[taskId].data[11] = gBattle_BG1_Y; gTasks[taskId].data[0]++; @@ -2749,9 +2837,9 @@ void AnimTask_DoomDesireLightBeam(u8 taskId) case 1: gTasks[taskId].data[3] = 0; if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) - gBattle_BG1_X = gTasks[taskId].data[10] + sDoomDesireLightBeamCoordTable[gTasks[taskId].data[2]]; + gBattle_BG1_X = gTasks[taskId].data[10] + gDoomDesireLightBeamCoordTable[gTasks[taskId].data[2]]; else - gBattle_BG1_X = gTasks[taskId].data[10] - sDoomDesireLightBeamCoordTable[gTasks[taskId].data[2]]; + gBattle_BG1_X = gTasks[taskId].data[10] - gDoomDesireLightBeamCoordTable[gTasks[taskId].data[2]]; if (++gTasks[taskId].data[2] == 5) gTasks[taskId].data[0] = 5; @@ -2767,7 +2855,7 @@ void AnimTask_DoomDesireLightBeam(u8 taskId) gTasks[taskId].data[0]++; break; case 3: - if (++gTasks[taskId].data[3] > sDoomDesireLightBeamDelayTable[gTasks[taskId].data[2]]) + if (++gTasks[taskId].data[3] > gDoomDesireLightBeamDelayTable[gTasks[taskId].data[2]]) gTasks[taskId].data[0]++; break; case 4: @@ -2780,7 +2868,7 @@ void AnimTask_DoomDesireLightBeam(u8 taskId) break; case 5: GetBattleAnimBg1Data(&animBg); - InitBattleAnimBg(animBg.bgId); + ClearBattleAnimBg(animBg.bgId); if (!IsContest()) SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0); @@ -2800,7 +2888,7 @@ void AnimTask_StrongFrustrationGrowAndShrink(u8 taskId) { if (gTasks[taskId].data[0] == 0) { - PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), sStrongFrustrationAffineAnimCmds); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), gStrongFrustrationAffineAnimCmds); gTasks[taskId].data[0]++; } else @@ -2817,7 +2905,7 @@ static void AnimWeakFrustrationAngerMark(struct Sprite *sprite) { if (sprite->data[0] == 0) { - InitSpritePosToAnimAttacker(sprite, 0); + InitSpritePosToAnimAttacker(sprite, FALSE); sprite->data[0]++; } else if (sprite->data[0]++ > 20) @@ -3054,6 +3142,7 @@ static void AnimTask_FlailMovement_Step(u8 taskId) SetSpriteRotScale(task->data[15], 0x100, 0x100, task->data[2]); SetBattlerSpriteYOffsetFromRotation(task->data[15]); gSprites[task->data[15]].x2 = -(((temp = task->data[2]) >= 0 ? task->data[2] : temp + 63) >> 6); + if (++task->data[1] > 8) { if (task->data[12]) @@ -3176,10 +3265,10 @@ static void AnimFlatterConfetti(struct Sprite *sprite) int rand1; int rand2; - tileOffset = Random() % 12; + tileOffset = Random2() % 12; sprite->oam.tileNum += tileOffset; - rand1 = Random() & 0x1FF; - rand2 = Random() & 0xFF; + rand1 = Random2() & 0x1FF; + rand2 = Random2() & 0xFF; if (rand1 & 1) sprite->data[0] = 0x5E0 + rand1; @@ -3195,7 +3284,7 @@ static void AnimFlatterConfetti(struct Sprite *sprite) if (sprite->data[2] == ANIM_ATTACKER) sprite->x = -8; else - sprite->x = 248; + sprite->x = DISPLAY_WIDTH + 8; sprite->y = 104; sprite->callback = AnimFlatterConfetti_Step; @@ -3235,6 +3324,7 @@ static void AnimFlatterSpotlight(struct Sprite *sprite) gBattle_WIN0V = 0; SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H); SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V); + sprite->data[0] = gBattleAnimArgs[2]; InitSpritePosToAnimTarget(sprite, FALSE); sprite->oam.objMode = ST_OAM_OBJ_WINDOW; @@ -3321,9 +3411,8 @@ static void AnimReversalOrb_Step(struct Sprite *sprite) // Copies the target mon's sprite, and makes a white silhouette that shrinks away. void AnimTask_RolePlaySilhouette(u8 taskId) { - bool8 isBackPic; + bool8 isBackPic, isShiny; u32 personality; - bool32 isShiny; u16 species; s16 xOffset; u32 priority; @@ -3331,56 +3420,70 @@ void AnimTask_RolePlaySilhouette(u8 taskId) s16 coord1, coord2; GetAnimBattlerSpriteId(ANIM_ATTACKER); - if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) + if (IsContest()) { - isBackPic = FALSE; - personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY); - isShiny = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_IS_SHINY, NULL); - if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE) - { - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) - species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES); - else - species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES); - } - else - { - species = gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies; - } - - xOffset = 20; - priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); + isBackPic = TRUE; + personality = 0; // personality = gContestResources->moveAnim->targetPersonality; + isShiny = FALSE; // isShiny = gContestResources->moveAnim->targetIsShiny; + species = SPECIES_NONE; // species = gContestResources->moveAnim->targetSpecies; + xOffset = 20; // xOffset = 20; + priority = 0; // priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); } else { - isBackPic = TRUE; - personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY); - isShiny = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_IS_SHINY, NULL); - if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE) + if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) - species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES); + isBackPic = FALSE; + personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY); + isShiny = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_IS_SHINY); + if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE) + { + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES); + else + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES); + } else - species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES); + { + species = gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies; + } + + xOffset = 20; + priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); } else { - species = gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies; - } + isBackPic = TRUE; + personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY); + isShiny = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_IS_SHINY); + if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE) + { + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES); + else + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES); + } + else + { + species = gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies; + } - xOffset = -20; - priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); + xOffset = -20; + priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); + } } coord1 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); coord2 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); spriteId = CreateAdditionalMonSpriteForMoveAnim(species, isBackPic, 0, coord1 + xOffset, coord2, 5, personality, isShiny, gBattleAnimTarget); + gSprites[spriteId].oam.priority = priority; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; FillPalette(RGB_WHITE, OBJ_PLTT_ID(gSprites[spriteId].oam.paletteNum), PLTT_SIZE_4BPP); gSprites[spriteId].oam.priority = priority; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1])); + gTasks[taskId].data[0] = spriteId; gTasks[taskId].func = AnimTask_RolePlaySilhouette_Step1; } @@ -3404,14 +3507,13 @@ static void AnimTask_RolePlaySilhouette_Step1(u8 taskId) static void AnimTask_RolePlaySilhouette_Step2(u8 taskId) { u8 spriteId = gTasks[taskId].data[0]; - gTasks[taskId].data[10] -= 16; gTasks[taskId].data[11] += 128; gSprites[spriteId].oam.affineMode |= ST_OAM_AFFINE_DOUBLE_MASK; TrySetSpriteRotScale(&gSprites[spriteId], TRUE, gTasks[taskId].data[10], gTasks[taskId].data[11], 0); if (++gTasks[taskId].data[12] == 9) { - TryResetSpriteAffineState(&gSprites[spriteId]); + ResetSpriteRotScale_PreserveAffine(&gSprites[spriteId]); DestroySpriteAndFreeResources_(&gSprites[spriteId]); gTasks[taskId].func = DestroyAnimVisualTaskAndDisableBlend; } @@ -3539,8 +3641,8 @@ static void AnimTask_AcidArmor_Step(u8 taskId) var0 *= 2; while (var0 >= 0) { - gScanlineEffectRegBuffers[0][var0] = bgX + 240; - gScanlineEffectRegBuffers[1][var0] = bgX + 240; + gScanlineEffectRegBuffers[0][var0] = bgX + DISPLAY_WIDTH; + gScanlineEffectRegBuffers[1][var0] = bgX + DISPLAY_WIDTH; var0 -= 2; } @@ -3600,18 +3702,17 @@ static void AnimTask_AcidArmor_Step(u8 taskId) void AnimTask_DeepInhale(u8 taskId) { struct Task *task = &gTasks[taskId]; - task->data[0] = 0; task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - PrepareAffineAnimInTaskData(&gTasks[taskId], task->data[15], sDeepInhaleAffineAnimCmds); + PrepareAffineAnimInTaskData(&gTasks[taskId], task->data[15], gDeepInhaleAffineAnimCmds); task->func = AnimTask_DeepInhale_Step; } static void AnimTask_DeepInhale_Step(u8 taskId) { u16 var0; + struct Task *task = &gTasks[taskId]; - var0 = task->data[0]; task->data[0]++; var0 -= 20; @@ -3693,7 +3794,7 @@ static void AnimYawnCloud_Step(struct Sprite *sprite) // arg 0: ? // arg 1: initial x pixel offset // arg 2: initial y pixel offset -// arg 3: ? +// arg 3: time until destroyed void AnimSmokeBallEscapeCloud(struct Sprite *sprite) { sprite->data[0] = gBattleAnimArgs[3]; @@ -3887,7 +3988,7 @@ void AnimTask_SquishAndSweatDroplets(u8 taskId) task->tBaseY = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y); task->tSubpriority = GetBattlerSpriteSubpriority(battler); task->tBattlerSpriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - PrepareAffineAnimInTaskData(task, task->tBattlerSpriteId, sFacadeSquishAffineAnimCmds); + PrepareAffineAnimInTaskData(task, task->tBattlerSpriteId, gFacadeSquishAffineAnimCmds); task->func = AnimTask_SquishAndSweatDroplets_Step; } @@ -3916,7 +4017,7 @@ static void AnimTask_SquishAndSweatDroplets_Step(u8 taskId) { // Animation continues, more droplet sprites to create task->tTimer = 0; - PrepareAffineAnimInTaskData(task, task->tBattlerSpriteId, sFacadeSquishAffineAnimCmds); + PrepareAffineAnimInTaskData(task, task->tBattlerSpriteId, gFacadeSquishAffineAnimCmds); } } break; @@ -4014,7 +4115,7 @@ static void AnimTask_FacadeColorBlend_Step(u8 taskId) { if (gTasks[taskId].data[1]) { - BlendPalette(gTasks[taskId].data[2], 16, 8, sFacadeBlendColors[gTasks[taskId].data[0]]); + BlendPalette(gTasks[taskId].data[2], 16, 8, gFacadeBlendColors[gTasks[taskId].data[0]]); if (++gTasks[taskId].data[0] > 23) gTasks[taskId].data[0] = 0; @@ -4027,9 +4128,21 @@ static void AnimTask_FacadeColorBlend_Step(u8 taskId) } } +// The sliding circle effect used by Refresh and Aromatherapy void AnimTask_StatusClearedEffect(u8 taskId) { - StartMonScrollingBgMask(taskId, 0, 0x1A0, gBattleAnimAttacker, gBattleAnimArgs[0], 10, 2, 30, gCureBubblesGfx, gCureBubblesTilemap, gCureBubblesPal); + StartMonScrollingBgMask( + taskId, + 0, + 0x1A0, + gBattleAnimAttacker, + gBattleAnimArgs[0], + 10, + 2, + 30, + gCureBubblesGfx, + gCureBubblesTilemap, + gCureBubblesPal); } // Moves a noise line from the mon. @@ -4050,7 +4163,7 @@ static void AnimRoarNoiseLine(struct Sprite *sprite) } else if (gBattleAnimArgs[2] == 1) { - sprite->vFlip = TRUE; + sprite->vFlip = 1; sprite->data[0] = 0x280; sprite->data[1] = 0x280; } @@ -4063,7 +4176,7 @@ static void AnimRoarNoiseLine(struct Sprite *sprite) if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { sprite->data[0] = -sprite->data[0]; - sprite->hFlip = TRUE; + sprite->hFlip = 1; } sprite->callback = AnimRoarNoiseLine_Step; @@ -4105,9 +4218,18 @@ void AnimTask_GlareEyeDots(u8 taskId) { struct Task *task = &gTasks[taskId]; - task->tPairMax = 12; - task->tDotOffset = 3; - task->tIsContest = FALSE; + if (IsContest()) + { + task->tPairMax = 8; + task->tDotOffset = 3; + task->tIsContest = TRUE; + } + else + { + task->tPairMax = 12; + task->tDotOffset = 3; + task->tIsContest = FALSE; + } if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) task->tStartX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; @@ -4420,7 +4542,7 @@ void AnimTask_SmellingSaltsSquish(u8 taskId) { gTasks[taskId].data[0] = gBattleAnimArgs[1]; gTasks[taskId].data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - PrepareAffineAnimInTaskData(&gTasks[taskId], gTasks[taskId].data[15], sSmellingSaltsSquishAffineAnimCmds); + PrepareAffineAnimInTaskData(&gTasks[taskId], gTasks[taskId].data[15], gSmellingSaltsSquishAffineAnimCmds); gTasks[taskId].func = AnimTask_SmellingSaltsSquish_Step; } } @@ -4443,7 +4565,7 @@ static void AnimTask_SmellingSaltsSquish_Step(u8 taskId) gSprites[task->data[15]].x2 = 0; if (--task->data[0]) { - PrepareAffineAnimInTaskData(&gTasks[taskId], gTasks[taskId].data[15], sSmellingSaltsSquishAffineAnimCmds); + PrepareAffineAnimInTaskData(&gTasks[taskId], gTasks[taskId].data[15], gSmellingSaltsSquishAffineAnimCmds); task->data[1] = 0; task->data[2] = 0; } @@ -4604,21 +4726,28 @@ void AnimTask_HelpingHandAttackerMovement(u8 taskId) struct Task *task = &gTasks[taskId]; task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER); - if (IsDoubleBattle() == TRUE) + if (!IsContest()) { - int attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); - int partnerX = GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimAttacker), BATTLER_COORD_X); - if (attackerX > partnerX) - task->data[14] = 1; + if (IsDoubleBattle() == TRUE) + { + int attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + int partnerX = GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimAttacker), BATTLER_COORD_X); + if (attackerX > partnerX) + task->data[14] = 1; + else + task->data[14] = -1; + } else - task->data[14] = -1; + { + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + task->data[14] = -1; + else + task->data[14] = 1; + } } else { - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) - task->data[14] = -1; - else - task->data[14] = 1; + task->data[14] = 1; } task->func = AnimTask_HelpingHandAttackerMovement_Step; @@ -4856,7 +4985,10 @@ static void AnimMeteorMashStar_Step(struct Sprite *sprite) // arg 4: duration static void AnimMeteorMashStar(struct Sprite *sprite) { - if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) + s16 UNUSED y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + s16 UNUSED x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER || IsContest()) { sprite->data[0] = sprite->x - gBattleAnimArgs[0]; sprite->data[2] = sprite->x - gBattleAnimArgs[2]; @@ -4882,7 +5014,7 @@ void AnimTask_MonToSubstitute(u8 taskId) if (gTasks[taskId].data[0] == 0) { - PrepareBattlerSpriteForRotScale(spriteId, FALSE); + PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); gTasks[taskId].data[1] = 0x100; gTasks[taskId].data[2] = 0x100; gTasks[taskId].data[0]++; @@ -4902,7 +5034,13 @@ void AnimTask_MonToSubstitute(u8 taskId) } else { - LoadBattleMonGfxAndAnimate(gBattleAnimAttacker, 0, spriteId); + LoadBattleMonGfxAndAnimate(gBattleAnimAttacker, FALSE, spriteId); + if (IsContest()) + { + // gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gAffineAnims_BattleSpriteContest; + // StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], BATTLER_AFFINE_NORMAL); + } + for (i = 0; i < NUM_TASK_DATA; i++) gTasks[taskId].data[i] = 0; @@ -5046,6 +5184,12 @@ void AnimTask_OdorSleuthMovement(u8 taskId) { s16 spriteId1, spriteId2; + if (IsContest()) + { + DestroyAnimVisualTask(taskId); + return; + } + spriteId1 = CloneBattlerSpriteWithBlend(ANIM_TARGET); if (spriteId1 < 0) { @@ -5106,7 +5250,7 @@ static void AnimTask_OdorSleuthMovementWaitFinish(u8 taskId) } static void MoveOdorSleuthClone(struct Sprite *sprite) -{ +{ if (++sprite->data[1] > 1) { sprite->data[1] = 0; @@ -5161,11 +5305,10 @@ void AnimTask_GetReturnPowerLevel(u8 taskId) void AnimTask_SnatchOpposingMonMove(u8 taskId) { u8 spriteId, spriteId2; - u32 personality; - bool32 isShiny; + int personality; u16 species; u8 subpriority; - bool8 isBackPic; + bool8 isBackPic, isShiny; s16 x; switch (gTasks[taskId].data[0]) @@ -5187,13 +5330,21 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) } break; case 1: + if (IsContest()) + { + personality = 0; // personality = gContestResources->moveAnim->personality; + isShiny = FALSE; // isShiny = gContestResources->moveAnim->isShiny; + species = SPECIES_NONE; // species = gContestResources->moveAnim->species; + subpriority = 0; // subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker); + isBackPic = FALSE; + x = -32; + } + else { - s16 x; - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) { personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY); - isShiny = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_IS_SHINY, NULL); + isShiny = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_IS_SHINY); if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies == SPECIES_NONE) species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES); else @@ -5206,7 +5357,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) else { personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY); - isShiny = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_IS_SHINY, NULL); + isShiny = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_IS_SHINY); if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies == SPECIES_NONE) species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES); else @@ -5216,15 +5367,15 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) isBackPic = TRUE; x = -32; } - - spriteId2 = CreateAdditionalMonSpriteForMoveAnim(species, isBackPic, 0, x, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y), subpriority, personality, isShiny, gBattleAnimAttacker); - - if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies != SPECIES_NONE) - BlendPalette(OBJ_PLTT_ID(gSprites[spriteId2].oam.paletteNum), 16, 6, RGB_WHITE); - gTasks[taskId].data[15] = spriteId2; - gTasks[taskId].data[0]++; - break; } + + spriteId2 = CreateAdditionalMonSpriteForMoveAnim(species, isBackPic, 0, x, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y), subpriority, personality, isShiny, gBattleAnimAttacker); + if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies != SPECIES_NONE) + BlendPalette(OBJ_PLTT_ID(gSprites[spriteId2].oam.paletteNum), 16, 6, RGB_WHITE); + + gTasks[taskId].data[15] = spriteId2; + gTasks[taskId].data[0]++; + break; case 2: spriteId2 = gTasks[taskId].data[15]; gTasks[taskId].data[1] += 0x800; @@ -5254,6 +5405,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) } } } + if (x < -32 || x > DISPLAY_WIDTH + 32) { gTasks[taskId].data[1] = 0; @@ -5287,7 +5439,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) gSprites[spriteId].x2 = 0; } - gTasks[taskId].data[1] = (u8)gTasks[taskId].data[1]; + gTasks[taskId].data[1] &= 0xFF; if (gSprites[spriteId].x2 == 0) DestroyAnimVisualTask(taskId); break; @@ -5306,7 +5458,7 @@ static void AnimUnusedItemBagSteal(struct Sprite *sprite) sprite->data[0] = -32; sprite->data[7]++; sprite->invisible = FALSE; - if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT && !IsContest()) sprite->subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority - 1; } else @@ -5403,7 +5555,6 @@ void AnimTask_SnatchPartnerMove(u8 taskId) void AnimTask_TeeterDanceMovement(u8 taskId) { struct Task *task = &gTasks[taskId]; - task->data[3] = GetAnimBattlerSpriteId(ANIM_ATTACKER); task->data[4] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : -1; task->data[6] = gSprites[task->data[3]].y; @@ -5418,7 +5569,6 @@ void AnimTask_TeeterDanceMovement(u8 taskId) static void AnimTask_TeeterDanceMovement_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[0]) { case 0: @@ -5573,15 +5723,21 @@ static void AnimRecycle_Step(struct Sprite *sprite) void AnimTask_GetWeather(u8 taskId) { + bool32 utilityUmbrellaAffected = GetBattlerHoldEffect(gBattleAnimAttacker, TRUE) == HOLD_EFFECT_UTILITY_UMBRELLA; + gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_NONE; - if (gWeatherMoveAnim & B_WEATHER_SUN) + if (gWeatherMoveAnim & B_WEATHER_SUN && !utilityUmbrellaAffected) gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_SUN; - else if (gWeatherMoveAnim & B_WEATHER_RAIN) + else if (gWeatherMoveAnim & B_WEATHER_RAIN && !utilityUmbrellaAffected) gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_RAIN; else if (gWeatherMoveAnim & B_WEATHER_SANDSTORM) gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_SANDSTORM; else if (gWeatherMoveAnim & B_WEATHER_HAIL) gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_HAIL; + else if (gWeatherMoveAnim & B_WEATHER_SNOW) + gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_SNOW; + else if (gWeatherMoveAnim & B_WEATHER_FOG) + gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_FOG; DestroyAnimVisualTask(taskId); } @@ -5591,10 +5747,9 @@ void AnimTask_GetWeather(u8 taskId) void AnimTask_SlackOffSquish(u8 taskId) { struct Task *task = &gTasks[taskId]; - task->data[0] = 0; task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - PrepareAffineAnimInTaskData(task, task->data[15], sSlackOffSquishAffineAnimCmds); + PrepareAffineAnimInTaskData(task, task->data[15], gSlackOffSquishAffineAnimCmds); task->func = AnimTask_SlackOffSquish_Step; } diff --git a/src/battle_anim_flying.c b/src/battle_anim_flying.c index d1debfc49..c84675754 100644 --- a/src/battle_anim_flying.c +++ b/src/battle_anim_flying.c @@ -1174,7 +1174,7 @@ static void AnimDiveWaterSplash(struct Sprite *sprite) sprite->y2 = t2; if (sprite->data[2] == 24) { - TryResetSpriteAffineState(sprite); + ResetSpriteRotScale_PreserveAffine(sprite); DestroyAnimSprite(sprite); } break; diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index c0a3866df..32a96e459 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -1183,7 +1183,7 @@ void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 x } } -void TryResetSpriteAffineState(struct Sprite *sprite) +void ResetSpriteRotScale_PreserveAffine(struct Sprite *sprite) { TrySetSpriteRotScale(sprite, TRUE, 0x100, 0x100, 0); sprite->affineAnimPaused = FALSE; diff --git a/src/graphics.c b/src/graphics.c index 71ac3b8ea..fa7348109 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -886,9 +886,9 @@ const u32 gBattleAnimBgPalette_Bug[] = INCBIN_U32("graphics/battle_anims/backgro const u32 gBattleAnimBgImage_Highspeed[] = INCBIN_U32("graphics/battle_anims/backgrounds/highspeed.4bpp.lz"); const u32 gBattleAnimBgTilemap_HighspeedPlayer[] = INCBIN_U32("graphics/battle_anims/backgrounds/highspeed_player.bin.lz"); -const u32 gBattleAnim_MorningSunGfx[] = INCBIN_U32("graphics/battle_anims/masks/light_beam.4bpp.lz"); -const u32 gBattleAnim_MorningSunPal[] = INCBIN_U32("graphics/battle_anims/masks/light_beam.gbapal.lz"); -const u32 gBattleAnim_MorningSunTilemap[] = INCBIN_U32("graphics/battle_anims/masks/light_beam.bin.lz"); +const u32 gBattleAnimMaskImage_LightBeam[] = INCBIN_U32("graphics/battle_anims/masks/light_beam.4bpp.lz"); +const u32 gBattleAnimMaskPalette_LightBeam[] = INCBIN_U32("graphics/battle_anims/masks/light_beam.gbapal.lz"); +const u32 gBattleAnimMaskTilemap_LightBeam[] = INCBIN_U32("graphics/battle_anims/masks/light_beam.bin.lz"); const u32 gBattleAnimBgTilemap_GuillotineOpponent[] = INCBIN_U32("graphics/battle_anims/backgrounds/guillotine_opponent.bin.lz"); const u32 gBattleAnimBgTilemap_GuillotinePlayer[] = INCBIN_U32("graphics/battle_anims/backgrounds/guillotine_player.bin.lz");