mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-14 00:01:13 -05:00
expansion sync: battle_anim_ice
This commit is contained in:
parent
4b8004d77c
commit
04e482faca
|
|
@ -1,43 +1,48 @@
|
|||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "battle_anim.h"
|
||||
#include "bg.h"
|
||||
#include "field_weather.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "graphics.h"
|
||||
#include "main.h"
|
||||
#include "palette.h"
|
||||
#include "random.h"
|
||||
#include "sprite.h"
|
||||
#include "task.h"
|
||||
#include "trig.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "constants/rgb.h"
|
||||
|
||||
struct HailStruct
|
||||
{
|
||||
struct HailStruct {
|
||||
s32 x:10;
|
||||
s32 y:10;
|
||||
s32 bPosition:8;
|
||||
s32 unk3:4;
|
||||
};
|
||||
|
||||
static void AnimUnusedIceCrystalThrow(struct Sprite *sprite);
|
||||
static void AnimUnusedIceCrystalThrow_Step(struct Sprite *sprite);
|
||||
static void AnimIcePunchSwirlingParticle(struct Sprite *sprite);
|
||||
static void AnimIceBeamParticle(struct Sprite *sprite);
|
||||
static void AnimFlickerIceEffectParticle(struct Sprite *sprite);
|
||||
static void AnimSwirlingSnowball(struct Sprite *sprite);
|
||||
static void AnimSwirlingSnowball_Step2(struct Sprite *sprite);
|
||||
static void AnimSwirlingSnowball_End(struct Sprite *sprite);
|
||||
static void AnimWiggleParticleTowardsTarget(struct Sprite *sprite);
|
||||
static void AnimWaveFromCenterOfTarget(struct Sprite *sprite);
|
||||
static void InitSwirlingFogAnim(struct Sprite *sprite);
|
||||
static void AnimSwirlingFogAnim(struct Sprite *sprite);
|
||||
static void InitPoisonGasCloudAnim(struct Sprite *sprite);
|
||||
static void MovePoisonGasCloud(struct Sprite *sprite);
|
||||
static void AnimHailBegin(struct Sprite *sprite);
|
||||
static void AnimHailContinue(struct Sprite *sprite);
|
||||
static void InitIceBallAnim(struct Sprite *sprite);
|
||||
static void AnimThrowIceBall(struct Sprite *sprite);
|
||||
static void InitIceBallParticle(struct Sprite *sprite);
|
||||
static void AnimIceBallParticle(struct Sprite *sprite);
|
||||
static void AnimTask_HazeScrollingFog_Step(u8 taskId);
|
||||
static void AnimTask_MistBallFog_Step(u8 taskId);
|
||||
static void AnimTask_Hail2(u8 taskId);
|
||||
static void AnimUnusedIceCrystalThrow(struct Sprite *);
|
||||
static void AnimUnusedIceCrystalThrow_Step(struct Sprite *);
|
||||
static void AnimIcePunchSwirlingParticle(struct Sprite *);
|
||||
static void AnimIceBeamParticle(struct Sprite *);
|
||||
static void AnimFlickerIceEffectParticle(struct Sprite *);
|
||||
static void AnimSwirlingSnowball(struct Sprite *);
|
||||
static void AnimSwirlingSnowball_Step2(struct Sprite *);
|
||||
static void AnimSwirlingSnowball_End(struct Sprite *);
|
||||
static void AnimWiggleParticleTowardsTarget(struct Sprite *);
|
||||
static void AnimWaveFromCenterOfTarget(struct Sprite *);
|
||||
static void InitSwirlingFogAnim(struct Sprite *);
|
||||
static void AnimSwirlingFogAnim(struct Sprite *);
|
||||
static void InitPoisonGasCloudAnim(struct Sprite *);
|
||||
static void MovePoisonGasCloud(struct Sprite *);
|
||||
static void AnimHailBegin(struct Sprite *);
|
||||
static void AnimHailContinue(struct Sprite *);
|
||||
static void InitIceBallAnim(struct Sprite *);
|
||||
static void AnimThrowIceBall(struct Sprite *);
|
||||
static void InitIceBallParticle(struct Sprite *);
|
||||
static void AnimIceBallParticle(struct Sprite *);
|
||||
static void AnimTask_HazeScrollingFog_Step(u8);
|
||||
static void AnimTask_MistBallFog_Step(u8);
|
||||
static void AnimTask_Hail2(u8);
|
||||
static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c);
|
||||
static void AvalancheAnim_Step(struct Sprite *sprite);
|
||||
static void AvalancheAnim_Step2(struct Sprite *sprite);
|
||||
|
|
@ -56,6 +61,7 @@ static const union AnimCmd *const sAnims_Unused[] =
|
|||
sAnim_Unused,
|
||||
};
|
||||
|
||||
// Unused
|
||||
static const struct SpriteTemplate sUnusedIceCrystalThrowSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_ICE_CRYSTALS,
|
||||
|
|
@ -424,7 +430,7 @@ static const union AffineAnimCmd *const sAffineAnims_WeatherBallIceDown[] =
|
|||
sAffineAnim_WeatherBallIceDown,
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate sHailParticleSpriteTemplate =
|
||||
const struct SpriteTemplate gHailParticleSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HAIL,
|
||||
.paletteTag = ANIM_TAG_HAIL,
|
||||
|
|
@ -629,15 +635,17 @@ static void AnimUnusedIceCrystalThrow(struct Sprite *sprite)
|
|||
sprite->data[3] = gBattleAnimArgs[1] + attackerY;
|
||||
sprite->data[4] = gBattleAnimArgs[3] + targetY;
|
||||
ConvertPosDataToTranslateLinearData(sprite);
|
||||
// won't match with while loop
|
||||
for (; (targetX >= -32 && targetX <= DISPLAY_WIDTH + 32) && (targetY >= -32 && targetY <= DISPLAY_HEIGHT + 32);
|
||||
targetX += sprite->data[1], targetY += sprite->data[2])
|
||||
|
||||
for (;(targetX >= -32 && targetX <= DISPLAY_WIDTH + 32) && (targetY >= -32 && targetY <= DISPLAY_HEIGHT + 32);
|
||||
targetX += sprite->data[1], targetY += sprite->data[2])
|
||||
;
|
||||
|
||||
sprite->data[1] = -sprite->data[1];
|
||||
sprite->data[2] = -sprite->data[2];
|
||||
for (; (attackerX >= -32 && attackerX <= DISPLAY_WIDTH + 32) && (attackerY >= -32 && attackerY <= DISPLAY_HEIGHT + 32);
|
||||
attackerX += sprite->data[1], attackerY += sprite->data[2])
|
||||
for (;(attackerX >= -32 && attackerX <= DISPLAY_WIDTH + 32) && (attackerY >= -32 && attackerY <= DISPLAY_HEIGHT + 32);
|
||||
attackerX += sprite->data[1], attackerY += sprite->data[2])
|
||||
;
|
||||
|
||||
sprite->x = attackerX;
|
||||
sprite->y = attackerY;
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
|
|
@ -662,7 +670,7 @@ static void AnimUnusedIceCrystalThrow_Step(struct Sprite *sprite)
|
|||
sprite->x2 += Sin(sprite->data[7], sprite->data[3]);
|
||||
sprite->y2 += Sin(sprite->data[7], sprite->data[3]);
|
||||
sprite->data[7] = (sprite->data[7] + sprite->data[4]) & 0xFF;
|
||||
--sprite->data[0];
|
||||
sprite->data[0]--;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -694,10 +702,12 @@ static void AnimIceBeamParticle(struct Sprite *sprite)
|
|||
{
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
sprite->data[2] -= gBattleAnimArgs[2];
|
||||
else
|
||||
sprite->data[2] += gBattleAnimArgs[2];
|
||||
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
|
|
@ -717,12 +727,14 @@ void AnimIceEffectParticle(struct Sprite *sprite)
|
|||
}
|
||||
else
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->x, &sprite->y);
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->x, &sprite->y);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
}
|
||||
|
||||
StoreSpriteCallbackInData6(sprite, AnimFlickerIceEffectParticle);
|
||||
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
|
||||
}
|
||||
|
|
@ -730,7 +742,8 @@ void AnimIceEffectParticle(struct Sprite *sprite)
|
|||
static void AnimFlickerIceEffectParticle(struct Sprite *sprite)
|
||||
{
|
||||
sprite->invisible ^= 1;
|
||||
if (++sprite->data[0] == 20)
|
||||
sprite->data[0] += 1;
|
||||
if (sprite->data[0] == 20)
|
||||
DestroySpriteAndMatrix(sprite);
|
||||
}
|
||||
|
||||
|
|
@ -743,13 +756,15 @@ static void AnimFlickerIceEffectParticle(struct Sprite *sprite)
|
|||
// arg 5: multiple targets? (boolean)
|
||||
static void AnimSwirlingSnowball(struct Sprite *sprite)
|
||||
{
|
||||
s32 i;
|
||||
int i;
|
||||
s16 tempDataHolder[8];
|
||||
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[3] = sprite->y;
|
||||
|
||||
if (!gBattleAnimArgs[5])
|
||||
{
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
|
|
@ -757,32 +772,41 @@ static void AnimSwirlingSnowball(struct Sprite *sprite)
|
|||
}
|
||||
else
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->data[2], &sprite->data[4]);
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->data[2], &sprite->data[4]);
|
||||
}
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
sprite->data[2] -= gBattleAnimArgs[2];
|
||||
else
|
||||
sprite->data[2] += gBattleAnimArgs[2];
|
||||
for (i = 0; i < 8; ++i)
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
tempDataHolder[i] = sprite->data[i];
|
||||
|
||||
InitAnimFastLinearTranslationWithSpeed(sprite);
|
||||
sprite->data[1] ^= 1;
|
||||
sprite->data[2] ^= 1;
|
||||
|
||||
while (1)
|
||||
{
|
||||
sprite->data[0] = 1;
|
||||
AnimFastTranslateLinear(sprite);
|
||||
|
||||
if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16
|
||||
|| sprite->x + sprite->x2 < -16
|
||||
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT
|
||||
|| sprite->y + sprite->y2 < -16)
|
||||
break;
|
||||
}
|
||||
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->x2 = sprite->y2 = 0;
|
||||
for (i = 0; i < 8; ++i)
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
sprite->data[i] = tempDataHolder[i];
|
||||
|
||||
sprite->callback = InitAnimFastLinearTranslationWithSpeedAndPos;
|
||||
StoreSpriteCallbackInData6(sprite, AnimSwirlingSnowball_Step1);
|
||||
}
|
||||
|
|
@ -796,7 +820,9 @@ void AnimSwirlingSnowball_Step1(struct Sprite *sprite)
|
|||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
sprite->data[0] = 128;
|
||||
|
||||
tempVar = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 20 : -20;
|
||||
|
||||
sprite->data[3] = Sin(sprite->data[0], tempVar);
|
||||
sprite->data[4] = Cos(sprite->data[0], 0xF);
|
||||
sprite->data[5] = 0;
|
||||
|
|
@ -806,8 +832,9 @@ void AnimSwirlingSnowball_Step1(struct Sprite *sprite)
|
|||
|
||||
static void AnimSwirlingSnowball_Step2(struct Sprite *sprite)
|
||||
{
|
||||
s16 tempVar = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 20 : -20;
|
||||
|
||||
s16 tempVar;
|
||||
tempVar = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 20 : -20;
|
||||
|
||||
if (sprite->data[5] <= 31)
|
||||
{
|
||||
sprite->x2 = Sin(sprite->data[0], tempVar) - sprite->data[3];
|
||||
|
|
@ -819,8 +846,10 @@ static void AnimSwirlingSnowball_Step2(struct Sprite *sprite)
|
|||
{
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->x2 = sprite->y2 = 0;
|
||||
sprite->data[3] = sprite->data[4] = 0;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
sprite->data[4] = 0;
|
||||
sprite->data[3] = 0;
|
||||
sprite->callback = AnimSwirlingSnowball_End;
|
||||
}
|
||||
}
|
||||
|
|
@ -829,7 +858,9 @@ static void AnimSwirlingSnowball_End(struct Sprite *sprite)
|
|||
{
|
||||
sprite->data[0] = 1;
|
||||
AnimFastTranslateLinear(sprite);
|
||||
if ((u32)(sprite->x + sprite->x2 + 16) > 272
|
||||
|
||||
if (sprite->x + sprite->x2 > 256
|
||||
|| sprite->x + sprite->x2 < -16
|
||||
|| sprite->y + sprite->y2 > 256
|
||||
|| sprite->y + sprite->y2 < -16)
|
||||
DestroyAnimSprite(sprite);
|
||||
|
|
@ -847,13 +878,15 @@ static void AnimSwirlingSnowball_End(struct Sprite *sprite)
|
|||
// arg 7: multiple targets? (boolean)
|
||||
void AnimMoveParticleBeyondTarget(struct Sprite *sprite)
|
||||
{
|
||||
s32 i;
|
||||
int i;
|
||||
s16 tempDataHolder[8];
|
||||
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[3] = sprite->y;
|
||||
|
||||
if (!gBattleAnimArgs[7])
|
||||
{
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
|
|
@ -861,18 +894,22 @@ void AnimMoveParticleBeyondTarget(struct Sprite *sprite)
|
|||
}
|
||||
else
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->data[2], &sprite->data[4]);
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->data[2], &sprite->data[4]);
|
||||
}
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
sprite->data[2] -= gBattleAnimArgs[2];
|
||||
else
|
||||
sprite->data[2] += gBattleAnimArgs[2];
|
||||
|
||||
sprite->data[4] += gBattleAnimArgs[3];
|
||||
InitAnimFastLinearTranslationWithSpeed(sprite);
|
||||
for (i = 0; i < 8; ++i)
|
||||
for (i = 0; i < 8; i++)
|
||||
tempDataHolder[i] = sprite->data[i];
|
||||
|
||||
sprite->data[1] ^= 1;
|
||||
sprite->data[2] ^= 1;
|
||||
|
||||
while (1)
|
||||
{
|
||||
sprite->data[0] = 1;
|
||||
|
|
@ -883,12 +920,15 @@ void AnimMoveParticleBeyondTarget(struct Sprite *sprite)
|
|||
|| sprite->y + sprite->y2 < -16)
|
||||
break;
|
||||
}
|
||||
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
for (i = 0; i < 8; ++i)
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
sprite->data[i] = tempDataHolder[i];
|
||||
|
||||
sprite->data[5] = gBattleAnimArgs[5];
|
||||
sprite->data[6] = gBattleAnimArgs[6];
|
||||
sprite->callback = AnimWiggleParticleTowardsTarget;
|
||||
|
|
@ -900,6 +940,7 @@ static void AnimWiggleParticleTowardsTarget(struct Sprite *sprite)
|
|||
AnimFastTranslateLinear(sprite);
|
||||
if (sprite->data[0] == 0)
|
||||
sprite->data[0] = 1;
|
||||
|
||||
sprite->y2 += Sin(sprite->data[7], sprite->data[5]);
|
||||
sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
|
||||
if (sprite->data[0] == 1)
|
||||
|
|
@ -926,13 +967,16 @@ static void AnimWaveFromCenterOfTarget(struct Sprite *sprite)
|
|||
}
|
||||
else
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->x, &sprite->y);
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, FALSE, &sprite->x, &sprite->y);
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
}
|
||||
++sprite->data[0];
|
||||
|
||||
sprite->data[0]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -961,13 +1005,15 @@ static void InitSwirlingFogAnim(struct Sprite *sprite)
|
|||
}
|
||||
else
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->x, &sprite->y);
|
||||
SetAverageBattlerPositions(gBattleAnimAttacker, FALSE, &sprite->x, &sprite->y);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
else
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
}
|
||||
|
||||
battler = gBattleAnimAttacker;
|
||||
}
|
||||
else
|
||||
|
|
@ -978,29 +1024,36 @@ static void InitSwirlingFogAnim(struct Sprite *sprite)
|
|||
}
|
||||
else
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->x, &sprite->y);
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, FALSE, &sprite->x, &sprite->y);
|
||||
if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER)
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
else
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
}
|
||||
|
||||
battler = gBattleAnimTarget;
|
||||
}
|
||||
|
||||
sprite->data[7] = battler;
|
||||
if (gBattleAnimArgs[5] == 0 || !IsDoubleBattle())
|
||||
tempVar = 0x20;
|
||||
else
|
||||
tempVar = 0x40;
|
||||
|
||||
sprite->data[6] = tempVar;
|
||||
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||
sprite->y += 8;
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[3];
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = sprite->x;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = sprite->y + gBattleAnimArgs[2];
|
||||
|
||||
InitAnimLinearTranslation(sprite);
|
||||
|
||||
sprite->data[5] = 64;
|
||||
sprite->callback = AnimSwirlingFogAnim;
|
||||
sprite->callback(sprite);
|
||||
|
|
@ -1013,10 +1066,12 @@ static void AnimSwirlingFogAnim(struct Sprite *sprite)
|
|||
{
|
||||
sprite->x2 += Sin(sprite->data[5], sprite->data[6]);
|
||||
sprite->y2 += Cos(sprite->data[5], -6);
|
||||
|
||||
if ((u16)(sprite->data[5] - 64) <= 0x7F)
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]);
|
||||
else
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]) + 1;
|
||||
|
||||
sprite->data[5] = (sprite->data[5] + 3) & 0xFF;
|
||||
}
|
||||
else
|
||||
|
|
@ -1025,7 +1080,7 @@ static void AnimSwirlingFogAnim(struct Sprite *sprite)
|
|||
}
|
||||
}
|
||||
|
||||
// Fades mons to black and places foggy overlay in Haze.
|
||||
// Adds moving foggy overlay. Used by Haze.
|
||||
void AnimTask_HazeScrollingFog(u8 taskId)
|
||||
{
|
||||
struct BattleAnimBgData animBg;
|
||||
|
|
@ -1034,18 +1089,20 @@ void AnimTask_HazeScrollingFog(u8 taskId)
|
|||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
|
||||
SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
|
||||
SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0);
|
||||
|
||||
if (!IsContest())
|
||||
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
|
||||
|
||||
gBattle_BG1_X = 0;
|
||||
gBattle_BG1_Y = 0;
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
|
||||
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
|
||||
|
||||
GetBattleAnimBg1Data(&animBg);
|
||||
LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset);
|
||||
AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimFogTilemap);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimFogTilemap, FALSE);
|
||||
LoadPalette(&gFogPalette, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP);
|
||||
if (IsContest())
|
||||
RelocateBattleBgPal(animBg.paletteId, animBg.bgTilemap, 0, 0);
|
||||
|
||||
gTasks[taskId].func = AnimTask_HazeScrollingFog_Step;
|
||||
}
|
||||
|
||||
|
|
@ -1054,18 +1111,21 @@ static void AnimTask_HazeScrollingFog_Step(u8 taskId)
|
|||
struct BattleAnimBgData animBg;
|
||||
|
||||
gBattle_BG1_X += -1;
|
||||
gBattle_BG1_Y += 0;
|
||||
|
||||
switch (gTasks[taskId].data[12])
|
||||
{
|
||||
case 0:
|
||||
if (++gTasks[taskId].data[10] == 4)
|
||||
{
|
||||
gTasks[taskId].data[10] = 0;
|
||||
++gTasks[taskId].data[9];
|
||||
gTasks[taskId].data[9]++;
|
||||
gTasks[taskId].data[11] = sHazeBlendAmounts[gTasks[taskId].data[9]];
|
||||
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11]));
|
||||
if (gTasks[taskId].data[11] == 9)
|
||||
{
|
||||
++gTasks[taskId].data[12];
|
||||
gTasks[taskId].data[12]++;
|
||||
gTasks[taskId].data[11] = 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -1074,31 +1134,33 @@ static void AnimTask_HazeScrollingFog_Step(u8 taskId)
|
|||
if (++gTasks[taskId].data[11] == 0x51)
|
||||
{
|
||||
gTasks[taskId].data[11] = 9;
|
||||
++gTasks[taskId].data[12];
|
||||
gTasks[taskId].data[12]++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (++gTasks[taskId].data[10] == 4)
|
||||
{
|
||||
gTasks[taskId].data[10] = 0;
|
||||
--gTasks[taskId].data[11];
|
||||
gTasks[taskId].data[11]--;
|
||||
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11]));
|
||||
if (gTasks[taskId].data[11] == 0)
|
||||
{
|
||||
++gTasks[taskId].data[12];
|
||||
gTasks[taskId].data[12]++;
|
||||
gTasks[taskId].data[11] = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
GetBattleAnimBg1Data(&animBg);
|
||||
InitBattleAnimBg(1);
|
||||
InitBattleAnimBg(2);
|
||||
++gTasks[taskId].data[12];
|
||||
ClearBattleAnimBg(1);
|
||||
ClearBattleAnimBg(2);
|
||||
gTasks[taskId].data[12]++;
|
||||
// fall through
|
||||
case 4:
|
||||
if (!IsContest())
|
||||
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0);
|
||||
|
||||
gBattle_BG1_X = 0;
|
||||
gBattle_BG1_Y = 0;
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
|
|
@ -1123,6 +1185,7 @@ void AnimThrowMistBall(struct Sprite *sprite)
|
|||
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
|
||||
}
|
||||
|
||||
// Displays misty background in Mist Ball.
|
||||
void AnimTask_MistBallFog(u8 taskId)
|
||||
{
|
||||
struct BattleAnimBgData animBg;
|
||||
|
|
@ -1131,18 +1194,20 @@ void AnimTask_MistBallFog(u8 taskId)
|
|||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
|
||||
SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
|
||||
SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0);
|
||||
|
||||
if (!IsContest())
|
||||
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
|
||||
|
||||
gBattle_BG1_X = 0;
|
||||
gBattle_BG1_Y = 0;
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
|
||||
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
|
||||
|
||||
GetBattleAnimBg1Data(&animBg);
|
||||
LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset);
|
||||
AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimFogTilemap);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimFogTilemap, FALSE);
|
||||
LoadPalette(&gFogPalette, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP);
|
||||
if (IsContest())
|
||||
RelocateBattleBgPal(animBg.paletteId, animBg.bgTilemap, 0, 0);
|
||||
|
||||
gTasks[taskId].data[15] = -1;
|
||||
gTasks[taskId].func = AnimTask_MistBallFog_Step;
|
||||
}
|
||||
|
|
@ -1152,6 +1217,8 @@ static void AnimTask_MistBallFog_Step(u8 taskId)
|
|||
struct BattleAnimBgData animBg;
|
||||
|
||||
gBattle_BG1_X += gTasks[taskId].data[15];
|
||||
gBattle_BG1_Y += 0;
|
||||
|
||||
switch (gTasks[taskId].data[12])
|
||||
{
|
||||
case 0:
|
||||
|
|
@ -1160,7 +1227,7 @@ static void AnimTask_MistBallFog_Step(u8 taskId)
|
|||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 17 - gTasks[taskId].data[11]));
|
||||
if (gTasks[taskId].data[11] == 5)
|
||||
{
|
||||
++gTasks[taskId].data[12];
|
||||
gTasks[taskId].data[12]++;
|
||||
gTasks[taskId].data[11] = 0;
|
||||
}
|
||||
break;
|
||||
|
|
@ -1168,7 +1235,7 @@ static void AnimTask_MistBallFog_Step(u8 taskId)
|
|||
if (++gTasks[taskId].data[11] == 0x51)
|
||||
{
|
||||
gTasks[taskId].data[11] = 5;
|
||||
++gTasks[taskId].data[12];
|
||||
gTasks[taskId].data[12]++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
|
|
@ -1179,20 +1246,23 @@ static void AnimTask_MistBallFog_Step(u8 taskId)
|
|||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11]));
|
||||
if (gTasks[taskId].data[11] == 0)
|
||||
{
|
||||
++gTasks[taskId].data[12];
|
||||
gTasks[taskId].data[12]++;
|
||||
gTasks[taskId].data[11] = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
GetBattleAnimBg1Data(&animBg);
|
||||
InitBattleAnimBg(1);
|
||||
InitBattleAnimBg(2);
|
||||
++gTasks[taskId].data[12];
|
||||
ClearBattleAnimBg(1);
|
||||
ClearBattleAnimBg(2);
|
||||
|
||||
gTasks[taskId].data[12]++;
|
||||
|
||||
// fall through
|
||||
case 4:
|
||||
if (!IsContest())
|
||||
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0);
|
||||
|
||||
gBattle_BG1_X = 0;
|
||||
gBattle_BG1_Y = 0;
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
|
|
@ -1215,18 +1285,24 @@ static void AnimTask_MistBallFog_Step(u8 taskId)
|
|||
static void InitPoisonGasCloudAnim(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = gBattleAnimArgs[0];
|
||||
|
||||
if (GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) < GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2))
|
||||
sprite->data[7] = 0x8000;
|
||||
if ((gBattlerPositions[gBattleAnimTarget] & BIT_SIDE) == B_SIDE_PLAYER)
|
||||
|
||||
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||
{
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
|
||||
if ((sprite->data[7] & 0x8000) && (gBattlerPositions[gBattleAnimAttacker] & BIT_SIDE) == B_SIDE_PLAYER)
|
||||
|
||||
if ((sprite->data[7] & 0x8000) && GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||
sprite->subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1;
|
||||
|
||||
sprite->data[6] = 1;
|
||||
}
|
||||
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
|
||||
if (B_UPDATED_MOVE_DATA >= GEN_5)
|
||||
{
|
||||
s16 x, y;
|
||||
|
|
@ -1253,18 +1329,20 @@ static void InitPoisonGasCloudAnim(struct Sprite *sprite)
|
|||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[4];
|
||||
sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8;
|
||||
}
|
||||
|
||||
if (IsContest())
|
||||
{
|
||||
sprite->data[6] = 1;
|
||||
sprite->subpriority = 0x80;
|
||||
}
|
||||
|
||||
InitAnimLinearTranslation(sprite);
|
||||
sprite->callback = MovePoisonGasCloud;
|
||||
}
|
||||
|
||||
static void MovePoisonGasCloud(struct Sprite *sprite)
|
||||
{
|
||||
s32 value;
|
||||
int value;
|
||||
|
||||
switch (sprite->data[7] & 0xFF)
|
||||
{
|
||||
|
|
@ -1276,9 +1354,9 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
|
|||
sprite->data[5] = (sprite->data[5] - 8) & 0xFF;
|
||||
else
|
||||
sprite->data[5] = (sprite->data[5] + 8) & 0xFF;
|
||||
|
||||
if (sprite->data[0] <= 0)
|
||||
{
|
||||
sprite->data[0] = 80;
|
||||
#if B_UPDATED_MOVE_DATA >= GEN_5
|
||||
s16 x, y;
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 0, &x, &y);
|
||||
|
|
@ -1286,18 +1364,20 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
|
|||
#else
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
|
||||
#endif
|
||||
sprite->data[0] = 80;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = sprite->x;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = sprite->y + 29;
|
||||
++sprite->data[7];
|
||||
sprite->data[7]++;
|
||||
if (IsContest())
|
||||
sprite->data[5] = 80;
|
||||
else if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER)
|
||||
sprite->data[5] = 204;
|
||||
else
|
||||
sprite->data[5] = 80;
|
||||
|
||||
sprite->y2 = 0;
|
||||
value = gSineTable[sprite->data[5]];
|
||||
sprite->x2 = value >> 3;
|
||||
|
|
@ -1313,23 +1393,24 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
|
|||
if (!IsContest())
|
||||
{
|
||||
u16 var0 = sprite->data[5] - 0x40;
|
||||
|
||||
if (var0 <= 0x7F)
|
||||
sprite->oam.priority = sprite->data[7] >> 8;
|
||||
else
|
||||
sprite->oam.priority = (sprite->data[7] >> 8) + 1;
|
||||
|
||||
sprite->data[5] = (sprite->data[5] + 4) & 0xFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
u16 var0 = sprite->data[5] - 0x40;
|
||||
|
||||
if (var0 <= 0x7F)
|
||||
sprite->subpriority = 128;
|
||||
else
|
||||
sprite->subpriority = 140;
|
||||
|
||||
sprite->data[5] = (sprite->data[5] - 4) & 0xFF;
|
||||
}
|
||||
|
||||
if (sprite->data[0] <= 0)
|
||||
{
|
||||
sprite->data[0] = 0x300;
|
||||
|
|
@ -1337,12 +1418,13 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
|
|||
sprite->data[3] = sprite->y += sprite->y2;
|
||||
sprite->data[4] = sprite->y + 4;
|
||||
if (IsContest())
|
||||
sprite->data[2] = -0x10;
|
||||
sprite->data[2] = -16;
|
||||
else if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER)
|
||||
sprite->data[2] = 0x100;
|
||||
sprite->data[2] = DISPLAY_WIDTH + 16;
|
||||
else
|
||||
sprite->data[2] = -0x10;
|
||||
++sprite->data[7];
|
||||
sprite->data[2] = -16;
|
||||
|
||||
sprite->data[7]++;
|
||||
sprite->x2 = sprite->y2 = 0;
|
||||
InitAnimLinearTranslationWithSpeed(sprite);
|
||||
}
|
||||
|
|
@ -1355,14 +1437,14 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
|
|||
FreeOamMatrix(sprite->oam.matrixNum);
|
||||
sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
}
|
||||
|
||||
DestroySprite(sprite);
|
||||
--gAnimVisualTaskCount;
|
||||
gAnimVisualTaskCount--;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Creates Hail.
|
||||
void AnimTask_Hail(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
|
@ -1373,7 +1455,6 @@ void AnimTask_Hail(u8 taskId)
|
|||
static void AnimTask_Hail2(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
|
|
@ -1382,29 +1463,31 @@ static void AnimTask_Hail2(u8 taskId)
|
|||
task->data[4] = 0;
|
||||
task->data[5] = 0;
|
||||
task->data[2] = 0;
|
||||
++task->data[0];
|
||||
task->data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (task->data[5] == 0)
|
||||
{
|
||||
if (GenerateHailParticle(task->data[3], task->data[2], taskId, 1))
|
||||
++task->data[1];
|
||||
task->data[1]++;
|
||||
|
||||
if (++task->data[2] == 3)
|
||||
{
|
||||
if (++task->data[3] == 10)
|
||||
++task->data[0];
|
||||
task->data[0]++;
|
||||
else
|
||||
--task->data[0];
|
||||
task->data[0]--;
|
||||
}
|
||||
else
|
||||
{
|
||||
task->data[5] = 1;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
--task->data[5];
|
||||
task->data[5]--;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
|
|
@ -1454,7 +1537,7 @@ static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId,
|
|||
battlerY = sHailCoordData[hailStructId].y;
|
||||
}
|
||||
spriteX = battlerX - ((battlerY + 8) / 2);
|
||||
id = CreateSprite(&sHailParticleSpriteTemplate, spriteX, -8, 18);
|
||||
id = CreateSprite(&gHailParticleSpriteTemplate, spriteX, -8, 18);
|
||||
if (id == MAX_SPRITES)
|
||||
{
|
||||
return FALSE;
|
||||
|
|
@ -1478,24 +1561,29 @@ static void AnimHailBegin(struct Sprite *sprite)
|
|||
|
||||
sprite->x += 4;
|
||||
sprite->y += 8;
|
||||
|
||||
if (sprite->x < sprite->data[3] && sprite->y < sprite->data[4])
|
||||
return;
|
||||
|
||||
if (sprite->data[0] == 1 && sprite->data[5] == 0)
|
||||
{
|
||||
spriteId = CreateSprite(&gIceCrystalHitLargeSpriteTemplate, sprite->data[3], sprite->data[4], sprite->subpriority);
|
||||
spriteId = CreateSprite(&gIceCrystalHitLargeSpriteTemplate,
|
||||
sprite->data[3], sprite->data[4], sprite->subpriority);
|
||||
|
||||
sprite->data[0] = spriteId;
|
||||
if (spriteId != 64)
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[sprite->data[0]].callback = AnimHailContinue;
|
||||
gSprites[sprite->data[0]].data[6] = sprite->data[6];
|
||||
gSprites[sprite->data[0]].data[7] = sprite->data[7];
|
||||
}
|
||||
|
||||
FreeOamMatrix(sprite->oam.matrixNum);
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
else
|
||||
{
|
||||
--gTasks[sprite->data[6]].data[sprite->data[7]];
|
||||
gTasks[sprite->data[6]].data[sprite->data[7]]--;
|
||||
FreeOamMatrix(sprite->oam.matrixNum);
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
|
|
@ -1505,7 +1593,7 @@ static void AnimHailContinue(struct Sprite *sprite)
|
|||
{
|
||||
if (++sprite->data[0] == 20)
|
||||
{
|
||||
--gTasks[sprite->data[6]].data[sprite->data[7]];
|
||||
gTasks[sprite->data[6]].data[sprite->data[7]]--;
|
||||
FreeOamMatrix(sprite->oam.matrixNum);
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
|
|
@ -1524,27 +1612,33 @@ static void InitIceBallAnim(struct Sprite *sprite)
|
|||
|
||||
if (animNum > 4)
|
||||
animNum = 4;
|
||||
|
||||
StartSpriteAffineAnim(sprite, animNum);
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
|
||||
sprite->data[5] = gBattleAnimArgs[5];
|
||||
|
||||
InitAnimArcTranslation(sprite);
|
||||
|
||||
sprite->callback = AnimThrowIceBall;
|
||||
}
|
||||
|
||||
// Throws the ball of ice in Ice Ball.
|
||||
static void AnimThrowIceBall(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimHorizontalArc(sprite))
|
||||
{
|
||||
StartSpriteAnim(sprite, 1);
|
||||
sprite->callback = RunStoredCallbackWhenAnimEnds;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
if (!TranslateAnimHorizontalArc(sprite))
|
||||
return;
|
||||
|
||||
StartSpriteAnim(sprite, 1);
|
||||
sprite->callback = RunStoredCallbackWhenAnimEnds;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
// Initializes the particles that scatter at the end of the Ice Ball animation.
|
||||
|
|
@ -1554,10 +1648,13 @@ static void InitIceBallParticle(struct Sprite *sprite)
|
|||
|
||||
sprite->oam.tileNum += 8;
|
||||
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||
randA = (Random() & 0xFF) + 256;
|
||||
randB = Random() & 0x1FF;
|
||||
|
||||
randA = (Random2() & 0xFF) + 256;
|
||||
randB = Random2() & 0x1FF;
|
||||
|
||||
if (randB > 0xFF)
|
||||
randB = 256 - randB;
|
||||
|
||||
sprite->data[1] = randA;
|
||||
sprite->data[2] = randB;
|
||||
sprite->callback = AnimIceBallParticle;
|
||||
|
|
@ -1568,11 +1665,14 @@ static void AnimIceBallParticle(struct Sprite *sprite)
|
|||
{
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->data[4] += sprite->data[2];
|
||||
|
||||
if (sprite->data[1] & 1)
|
||||
sprite->x2 = -(sprite->data[3] >> 8);
|
||||
else
|
||||
sprite->x2 = sprite->data[3] >> 8;
|
||||
|
||||
sprite->y2 = sprite->data[4] >> 8;
|
||||
|
||||
if (++sprite->data[0] == 21)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
|
@ -1585,15 +1685,6 @@ void AnimTask_GetIceBallCounter(u8 taskId)
|
|||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
// Counter for Ice Ball.
|
||||
void AnimTask_GetRolloutCounter(u8 taskId)
|
||||
{
|
||||
u8 arg = gBattleAnimArgs[0];
|
||||
|
||||
gBattleAnimArgs[arg] = gAnimDisableStructPtr->rolloutTimerStartValue - gAnimDisableStructPtr->rolloutTimer - 1;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
static const union AnimCmd sAnim_Snowflakes[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 2),
|
||||
|
|
|
|||
|
|
@ -830,8 +830,8 @@ void AnimLoadCompressedBgTilemap(u32 bgId, const u32 *src)
|
|||
void AnimLoadCompressedBgTilemapHandleContest(struct BattleAnimBgData *data, const void *src, bool32 largeScreen)
|
||||
{
|
||||
InitAnimBgTilemapBuffer(data->bgId, src);
|
||||
// if (IsContest() == TRUE)
|
||||
// RelocateBattleBgPal(data->paletteId, data->bgTilemap, 0, largeScreen);
|
||||
if (IsContest() == TRUE)
|
||||
RelocateBattleBgPal(data->paletteId, data->bgTilemap, 0, largeScreen);
|
||||
CopyBgTilemapBufferToVram(data->bgId);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user