Sync battle anim - effects 2

This commit is contained in:
GriffinR
2022-08-16 13:54:37 -04:00
parent b15305378a
commit bcab96fb86
6 changed files with 180 additions and 168 deletions
+1 -1
View File
@@ -3478,7 +3478,7 @@ ExtremeSpeedContinue::
waitbgfadeout
createvisualtask AnimTask_StartSlidingBg, 5, -2304, 0, 1, -1
waitbgfadein
createvisualtask AnimTask_StretchAttacker, 2
createvisualtask AnimTask_AttackerStretchAndDisappear, 2
loopsewithpan SE_M_RAZOR_WIND2, 192, 8, 3
waitforvisualfinish
delay 1
+4 -5
View File
@@ -231,8 +231,8 @@ void AnimCirclingFinger(struct Sprite *);
void AnimBouncingMusicNote(struct Sprite *);
void AnimVibrateBattlerBack(struct Sprite *);
void AnimMovingClamp(struct Sprite *);
void Anim_KinesisZapEnergy(struct Sprite *);
void Anim_SwordsDanceBlade(struct Sprite *);
void AnimKinesisZapEnergy(struct Sprite *);
void AnimSwordsDanceBlade(struct Sprite *);
void AnimSonicBoomProjectile(struct Sprite *);
void AnimAirWaveProjectile(struct Sprite *);
void AnimVoidLines(struct Sprite *);
@@ -253,7 +253,7 @@ void AnimSpeedDust(struct Sprite *);
void AnimHealBellMusicNote(struct Sprite *);
void AnimMagentaHeart(struct Sprite *);
void AnimRedHeartProjectile(struct Sprite *);
void AnimParticuleBurst(struct Sprite *);
void AnimParticleBurst(struct Sprite *);
void AnimRedHeartRising(struct Sprite *);
void AnimOrbitFast(struct Sprite *);
void AnimOrbitScatter(struct Sprite *);
@@ -309,7 +309,6 @@ void AnimForesightMagnifyingGlass(struct Sprite *);
void AnimMeteorMashStar(struct Sprite *);
void AnimBlockX(struct Sprite *);
void AnimUnusedItemBagSteal(struct Sprite *);
void AnimParticuleBurst(struct Sprite *);
void AnimKnockOffStrike(struct Sprite *);
void AnimRecycle(struct Sprite *);
@@ -364,7 +363,7 @@ u8 GetAnimBattlerSpriteId(u8 animBattler);
void StoreSpriteCallbackInData6(struct Sprite *sprite, SpriteCallback callback);
void TranslateSpriteInCircleOverDuration(struct Sprite *sprite);
void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite);
void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite);
void TranslateSpriteInEllipse(struct Sprite *sprite);
void WaitAnimForDuration(struct Sprite *sprite);
void SetupLinearTranslationWithFixedDuration(struct Sprite *sprite);
void TranslateSpriteLinear(struct Sprite *sprite);
+171 -158
View File
@@ -14,24 +14,24 @@
static void AnimBouncingMusicNote_Step(struct Sprite *);
static void AnimMovingClamp_Step(struct Sprite *);
static void AnimMovingClamp_End(struct Sprite *);
static void AnimTask_WithdrawStep(u8);
static void AnimSwordsDanceBladeStep(struct Sprite *);
static void AnimTask_Withdraw_Step(u8);
static void AnimSwordsDanceBlade_Step(struct Sprite *);
static void AnimVoidLines_Step(struct Sprite *);
static void AnimFallingCoin_Step(struct Sprite *);
static void AnimBulletSeed_Step1(struct Sprite *);
static void AnimBulletSeed_Step2(struct Sprite *);
static void AnimViceGripPincerStep(struct Sprite *);
static void AnimGuillotinePincerStep1(struct Sprite *);
static void AnimGuillotinePincerStep2(struct Sprite *);
static void AnimGuillotinePincerStep3(struct Sprite *);
static void AnimTask_GrowAndGreyscaleStep(u8);
static void AnimTask_MinimizeStep1(u8);
static void AnimViceGripPincer_Step(struct Sprite *);
static void AnimGuillotinePincer_Step1(struct Sprite *);
static void AnimGuillotinePincer_Step2(struct Sprite *);
static void AnimGuillotinePincer_Step3(struct Sprite *);
static void AnimTask_GrowAndGreyscale_Step(u8);
static void AnimTask_Minimize_Step1(u8);
static void CreateMinimizeSprite(struct Task *, u8);
static void ClonedMinizeSprite_Step(struct Sprite *);
static void AnimTask_SplashStep(u8);
static void AnimTask_GrowAndShrinkStep(u8);
static void ThrashMoveMonStep(u8);
static void ThrashMoveMon(u8);
static void AnimTask_Splash_Step(u8);
static void AnimTask_GrowAndShrink_Step(u8);
static void AnimTask_ThrashMoveMonHorizontal_Step(u8);
static void AnimTask_ThrashMoveMonVertical_Step(u8);
static void AnimTask_SketchDrawMon_Step(u8);
static void AnimPencil_Step(struct Sprite *);
static void AnimSoftBoiledEgg_Step1(struct Sprite *);
@@ -41,27 +41,26 @@ static void AnimSoftBoiledEgg_Step3_Callback1(struct Sprite *);
static void AnimSoftBoiledEgg_Step3_Callback2(struct Sprite *);
static void AnimSoftBoiledEgg_Step4(struct Sprite *);
static void AnimSoftBoiledEgg_Step4_Callback(struct Sprite *);
static void StretchAttacker_Step(u8);
static void ExtremeSpeedImpact_Step(u8);
static void ExtremeSpeedMonReappear_Step(u8);
static void SpeedDust_Step1(u8);
static void FakeOutStep1(u8);
static void FakeOutStep2(u8);
static void AnimTask_AttackerStretchAndDisappear_Step(u8);
static void AnimTask_ExtremeSpeedImpact_Step(u8);
static void AnimTask_ExtremeSpeedMonReappear_Step(u8);
static void AnimTask_SpeedDust_Step(u8);
static void AnimTask_FakeOut_Step1(u8);
static void AnimTask_FakeOut_Step2(u8);
static void AnimRedHeartProjectile_Step(struct Sprite *);
static void AnimRedHeartRising_Step(struct Sprite *);
static void HeartsBackground_Step(u8);
static void ScaryFace_Step(u8);
static void AnimOrbitFastStep(struct Sprite *);
static void AnimOrbitScatterStep(struct Sprite *);
static void AnimTask_HeartsBackground_Step(u8);
static void AnimTask_ScaryFace_Step(u8);
static void AnimOrbitFast_Step(struct Sprite *);
static void AnimOrbitScatter_Step(struct Sprite *);
static void AnimMovementWaves_Step(struct Sprite *);
static void UproarDistortion_Step(u8);
static void AnimTask_UproarDistortion_Step(u8);
static void AnimJaggedMusicNote_Step(struct Sprite *);
static void AnimPerishSongMusicNote_Step1(struct Sprite *);
static void AnimPerishSongMusicNote_Step2(struct Sprite *);
// Data
// Unused
static const struct SpriteTemplate sUnknown_83E3ADC =
static const struct SpriteTemplate sCirclingFingerSpriteTemplate =
{
.tileTag = ANIM_TAG_FINGER,
.paletteTag = ANIM_TAG_FINGER,
@@ -72,19 +71,20 @@ static const struct SpriteTemplate sUnknown_83E3ADC =
.callback = AnimCirclingFinger,
};
static const union AnimCmd sUnknown_83E3AF4[] =
static const union AnimCmd sAnim_BouncingMusicNote[] =
{
ANIMCMD_FRAME(4, 1),
ANIMCMD_END,
};
static const union AnimCmd *const sUnknown_83E3AFC[] =
// Unused (association assumed)
static const union AnimCmd *const sAnims_BouncingMusicNote[] =
{
sUnknown_83E3AF4,
sAnim_BouncingMusicNote,
};
// Unused
static const struct SpriteTemplate sUnknown_83E3B00 =
static const struct SpriteTemplate sBouncingMusicNoteSpriteTemplate =
{
.tileTag = ANIM_TAG_MUSIC_NOTES,
.paletteTag = ANIM_TAG_MUSIC_NOTES,
@@ -96,7 +96,7 @@ static const struct SpriteTemplate sUnknown_83E3B00 =
};
// Unused
static const struct SpriteTemplate sUnknown_83E3B18 =
static const struct SpriteTemplate sVibrateBattlerBackSpriteTemplate =
{
.tileTag = 0,
.paletteTag = 0,
@@ -108,7 +108,7 @@ static const struct SpriteTemplate sUnknown_83E3B18 =
};
// Unused
static const struct SpriteTemplate sUnknown_83E3B30 =
static const struct SpriteTemplate sMovingClampSpriteTemplate =
{
.tileTag = ANIM_TAG_CLAMP,
.paletteTag = ANIM_TAG_CLAMP,
@@ -119,7 +119,7 @@ static const struct SpriteTemplate sUnknown_83E3B30 =
.callback = AnimMovingClamp,
};
static const union AnimCmd sUnknown_83E3B48[] =
static const union AnimCmd sAnim_SmallExplosion[] =
{
ANIMCMD_FRAME(0, 9),
ANIMCMD_FRAME(16, 3),
@@ -128,32 +128,32 @@ static const union AnimCmd sUnknown_83E3B48[] =
ANIMCMD_END,
};
static const union AnimCmd *const sUnknown_83E3B5C[] =
static const union AnimCmd *const sAnims_SmallExplosion[] =
{
sUnknown_83E3B48,
sAnim_SmallExplosion,
};
static const union AffineAnimCmd sUnknown_83E3B60[] =
static const union AffineAnimCmd sAffineAnim_SmallExplosion[] =
{
AFFINEANIMCMD_FRAME(80, 80, 0, 0),
AFFINEANIMCMD_FRAME(9, 9, 0, 18),
AFFINEANIMCMD_END,
};
static const union AffineAnimCmd *const sUnknown_83E3B78[] =
static const union AffineAnimCmd *const sAffineAnims_SmallExplosion[] =
{
sUnknown_83E3B60,
sAffineAnim_SmallExplosion,
};
// Unused
static const struct SpriteTemplate sUnknown_83E3B7C =
static const struct SpriteTemplate sSmallExplosionSpriteTemplate =
{
.tileTag = ANIM_TAG_EXPLOSION_6,
.paletteTag = ANIM_TAG_EXPLOSION_6,
.oam = &gOamData_AffineNormal_ObjNormal_32x32,
.anims = sUnknown_83E3B5C,
.anims = sAnims_SmallExplosion,
.images = NULL,
.affineAnims = sUnknown_83E3B78,
.affineAnims = sAffineAnims_SmallExplosion,
.callback = AnimSpriteOnMonPos,
};
@@ -183,7 +183,7 @@ const struct SpriteTemplate gKinesisZapEnergySpriteTemplate =
.anims = sKinesisZapEnergyAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = Anim_KinesisZapEnergy,
.callback = AnimKinesisZapEnergy,
};
static const union AffineAnimCmd sSwordsDanceBladeAffineAnimCmds[] =
@@ -207,7 +207,7 @@ const struct SpriteTemplate gSwordsDanceBladeSpriteTemplate =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = sSwordsDanceBladeAffineAnimTable,
.callback = Anim_SwordsDanceBlade,
.callback = AnimSwordsDanceBlade,
};
const struct SpriteTemplate gSonicBoomSpriteTemplate =
@@ -316,7 +316,7 @@ const struct SpriteTemplate gEggThrowSpriteTemplate =
.callback = AnimThrowProjectile,
};
static const struct SpriteTemplate sUnknown_83E3D18 =
static const struct SpriteTemplate sVoidLinesSpriteTemplate =
{
.tileTag = ANIM_TAG_VOID_LINES,
.paletteTag = ANIM_TAG_VOID_LINES,
@@ -830,7 +830,9 @@ const struct SpriteTemplate gBellSpriteTemplate =
.callback = AnimSpriteOnMonPos,
};
const u16 gMusicNotePaletteTagsTable[] =
#define NUM_MUSIC_NOTE_PAL_TAGS 3
const u16 gMusicNotePaletteTagsTable[NUM_MUSIC_NOTE_PAL_TAGS] =
{
ANIM_TAG_MUSIC_NOTES_2,
ANIM_SPRITES_START - 1,
@@ -859,7 +861,7 @@ const struct SpriteTemplate gMagentaHeartSpriteTemplate =
.callback = AnimMagentaHeart,
};
static const union AffineAnimCmd sUnknown_83E4200[] =
static const union AffineAnimCmd sAffineAnims_StretchBattlerUp[] =
{
AFFINEANIMCMD_FRAME(10, -13, 0, 10),
AFFINEANIMCMD_FRAME(-10, 13, 0, 10),
@@ -885,7 +887,7 @@ const struct SpriteTemplate gRedHeartBurstSpriteTemplate =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimParticuleBurst,
.callback = AnimParticleBurst,
};
const struct SpriteTemplate gRedHeartRisingSpriteTemplate =
@@ -1044,7 +1046,7 @@ const struct SpriteTemplate gDevilSpriteTemplate =
.callback = AnimDevil,
};
static const union AnimCmd sFurySwipesAnimCmd1[] =
static const union AnimCmd sAnim_FurySwipes[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(16, 4),
@@ -1053,7 +1055,7 @@ static const union AnimCmd sFurySwipesAnimCmd1[] =
ANIMCMD_END,
};
static const union AnimCmd sFurySwipesAnimCmd2[] =
static const union AnimCmd sAnim_FurySwipes_Flipped[] =
{
ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
@@ -1062,10 +1064,10 @@ static const union AnimCmd sFurySwipesAnimCmd2[] =
ANIMCMD_END,
};
static const union AnimCmd *const sFurySwipesAnimTable[] =
static const union AnimCmd *const sAnims_FurySwipes[] =
{
sFurySwipesAnimCmd1,
sFurySwipesAnimCmd2,
sAnim_FurySwipes,
sAnim_FurySwipes_Flipped,
};
const struct SpriteTemplate gFurySwipesSpriteTemplate =
@@ -1073,7 +1075,7 @@ const struct SpriteTemplate gFurySwipesSpriteTemplate =
.tileTag = ANIM_TAG_SWIPE,
.paletteTag = ANIM_TAG_SWIPE,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
.anims = sFurySwipesAnimTable,
.anims = sAnims_FurySwipes,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimFurySwipes,
@@ -1209,21 +1211,30 @@ const struct SpriteTemplate gGuardRingSpriteTemplate =
.callback = AnimGuardRing,
};
// Functions
#define sAmplitudeX data[1]
#define sCircleSpeed data[2]
#define sMoveSteps data[3]
#define sAmplitudeY data[4]
void AnimCirclingFinger(struct Sprite *sprite)
{
SetSpriteCoordsToAnimAttackerCoords(sprite);
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
sprite->y += gBattleAnimArgs[1];
sprite->data[1] = gBattleAnimArgs[2];
sprite->data[2] = gBattleAnimArgs[4];
sprite->data[3] = gBattleAnimArgs[5];
sprite->data[4] = gBattleAnimArgs[3];
sprite->sAmplitudeX = gBattleAnimArgs[2];
sprite->sCircleSpeed = gBattleAnimArgs[4];
sprite->sMoveSteps = gBattleAnimArgs[5];
sprite->sAmplitudeY = gBattleAnimArgs[3];
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
sprite->callback = TranslateSpriteInEllipseOverDuration;
sprite->callback = TranslateSpriteInEllipse;
sprite->callback(sprite);
}
#undef sAmplitudeX
#undef sCircleSpeed
#undef sMoveSteps
#undef sAmplitudeY
void AnimBouncingMusicNote(struct Sprite *sprite)
{
u8 battler;
@@ -1326,10 +1337,10 @@ static void AnimMovingClamp_End(struct Sprite *sprite)
void AnimTask_Withdraw(u8 taskId)
{
PrepareBattlerSpriteForRotScale(gBattlerSpriteIds[gBattleAnimAttacker], ST_OAM_OBJ_NORMAL);
gTasks[taskId].func = AnimTask_WithdrawStep;
gTasks[taskId].func = AnimTask_Withdraw_Step;
}
static void AnimTask_WithdrawStep(u8 taskId)
static void AnimTask_Withdraw_Step(u8 taskId)
{
u8 spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
s16 rotation;
@@ -1379,7 +1390,7 @@ static void AnimTask_WithdrawStep(u8 taskId)
// arg 0: x pixel offset
// arg 1: y pixel offset
// arg 2: vertical flip
void Anim_KinesisZapEnergy(struct Sprite *sprite)
void AnimKinesisZapEnergy(struct Sprite *sprite)
{
SetSpriteCoordsToAnimAttackerCoords(sprite);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
@@ -1407,14 +1418,14 @@ void Anim_KinesisZapEnergy(struct Sprite *sprite)
// Animates a sword that rises into the air after a brief pause.
// arg 0: x pixel offset
// arg 1: y pixel offset
void Anim_SwordsDanceBlade(struct Sprite *sprite)
void AnimSwordsDanceBlade(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, FALSE);
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
StoreSpriteCallbackInData6(sprite, AnimSwordsDanceBladeStep);
StoreSpriteCallbackInData6(sprite, AnimSwordsDanceBlade_Step);
}
static void AnimSwordsDanceBladeStep(struct Sprite *sprite)
static void AnimSwordsDanceBlade_Step(struct Sprite *sprite)
{
sprite->data[0] = 6;
sprite->data[2] = sprite->x;
@@ -1555,13 +1566,13 @@ void AnimAirWaveProjectile(struct Sprite *sprite)
}
}
static void AirCutterProjectileStep2(u8 taskId)
static void AirCutterProjectile_Step2(u8 taskId)
{
if (gTasks[taskId].data[1] == 0)
DestroyAnimVisualTask(taskId);
}
static void AirCutterProjectileStep1(u8 taskId)
static void AirCutterProjectile_Step1(u8 taskId)
{
if (gTasks[taskId].data[0]-- <= 0)
{
@@ -1586,7 +1597,7 @@ static void AirCutterProjectileStep1(u8 taskId)
gTasks[taskId].data[1]++;
PlaySE12WithPanning(SE_M_BLIZZARD2, BattleAnimAdjustPanning(-SOUND_PAN_TARGET));
if (gTasks[taskId].data[1] > 2)
gTasks[taskId].func = AirCutterProjectileStep2;
gTasks[taskId].func = AirCutterProjectile_Step2;
}
}
@@ -1687,13 +1698,13 @@ void AnimTask_AirCutterProjectile(u8 taskId)
if (gTasks[taskId].data[2] < 3)
gTasks[taskId].data[2] = 3;
gTasks[taskId].func = AirCutterProjectileStep1;
gTasks[taskId].func = AirCutterProjectile_Step1;
}
void AnimVoidLines(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, FALSE);
sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(sUnknown_83E3D18.paletteTag) << 4);
sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(sVoidLinesSpriteTemplate.paletteTag) << 4);
sprite->callback = AnimVoidLines_Step;
}
@@ -1865,10 +1876,10 @@ void AnimViceGripPincer(struct Sprite *sprite)
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + endXOffset;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + endYOffset;
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, AnimViceGripPincerStep);
StoreSpriteCallbackInData6(sprite, AnimViceGripPincer_Step);
}
static void AnimViceGripPincerStep(struct Sprite *sprite)
static void AnimViceGripPincer_Step(struct Sprite *sprite)
{
if (sprite->animEnded)
DestroyAnimSprite(sprite);
@@ -1902,10 +1913,10 @@ void AnimGuillotinePincer(struct Sprite *sprite)
InitAnimLinearTranslation(sprite);
sprite->data[5] = gBattleAnimArgs[0];
sprite->data[6] = sprite->data[0];
sprite->callback = AnimGuillotinePincerStep1;
sprite->callback = AnimGuillotinePincer_Step1;
}
static void AnimGuillotinePincerStep1(struct Sprite *sprite)
static void AnimGuillotinePincer_Step1(struct Sprite *sprite)
{
if (AnimTranslateLinear(sprite) && sprite->animEnded)
{
@@ -1920,11 +1931,11 @@ static void AnimGuillotinePincerStep1(struct Sprite *sprite)
sprite->data[2] ^= 1;
sprite->data[4] = 0;
sprite->data[3] = 0;
sprite->callback = AnimGuillotinePincerStep2;
sprite->callback = AnimGuillotinePincer_Step2;
}
}
static void AnimGuillotinePincerStep2(struct Sprite *sprite)
static void AnimGuillotinePincer_Step2(struct Sprite *sprite)
{
if (sprite->data[3])
{
@@ -1941,11 +1952,11 @@ static void AnimGuillotinePincerStep2(struct Sprite *sprite)
sprite->data[3] = 0;
sprite->animPaused = FALSE;
StartSpriteAnim(sprite, sprite->data[5] ^ 1);
sprite->callback = AnimGuillotinePincerStep3;
sprite->callback = AnimGuillotinePincer_Step3;
}
}
static void AnimGuillotinePincerStep3(struct Sprite *sprite)
static void AnimGuillotinePincer_Step3(struct Sprite *sprite)
{
if (AnimTranslateLinear(sprite))
DestroyAnimSprite(sprite);
@@ -1962,10 +1973,10 @@ void AnimTask_GrowAndGreyscale(u8 taskId)
SetSpriteRotScale(spriteId, 0xD0, 0xD0, 0);
SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, FALSE);
gTasks[taskId].data[0] = 80;
gTasks[taskId].func = AnimTask_GrowAndGreyscaleStep;
gTasks[taskId].func = AnimTask_GrowAndGreyscale_Step;
}
static void AnimTask_GrowAndGreyscaleStep(u8 taskId)
static void AnimTask_GrowAndGreyscale_Step(u8 taskId)
{
if (--gTasks[taskId].data[0] == -1)
{
@@ -1993,10 +2004,10 @@ void AnimTask_Minimize(u8 taskId)
task->data[5] = 0;
task->data[6] = 0;
task->data[7] = GetBattlerSpriteSubpriority(gBattleAnimAttacker);
task->func = AnimTask_MinimizeStep1;
task->func = AnimTask_Minimize_Step1;
}
static void AnimTask_MinimizeStep1(u8 taskId)
static void AnimTask_Minimize_Step1(u8 taskId)
{
struct Task* task = &gTasks[taskId];
@@ -2124,11 +2135,11 @@ void AnimTask_Splash(u8 taskId)
task->data[3] = 0;
task->data[4] = 0;
PrepareAffineAnimInTaskData(task, spriteId, sSplashEffectAffineAnimCmds);
task->func = AnimTask_SplashStep;
task->func = AnimTask_Splash_Step;
}
}
static void AnimTask_SplashStep(u8 taskId)
static void AnimTask_Splash_Step(u8 taskId)
{
struct Task* task = &gTasks[taskId];
@@ -2189,10 +2200,10 @@ void AnimTask_GrowAndShrink(u8 taskId)
u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
PrepareAffineAnimInTaskData(task, spriteId, sGrowAndShrinkAffineAnimCmds);
task->func = AnimTask_GrowAndShrinkStep;
task->func = AnimTask_GrowAndShrink_Step;
}
static void AnimTask_GrowAndShrinkStep(u8 taskId)
static void AnimTask_GrowAndShrink_Step(u8 taskId)
{
struct Task* task = &gTasks[taskId];
@@ -2261,10 +2272,10 @@ void AnimTask_ThrashMoveMonHorizontal(u8 taskId)
task->data[0] = spriteId;
task->data[1] = 0;
PrepareAffineAnimInTaskData(task, spriteId, sThrashMoveMonAffineAnimCmds);
task->func = ThrashMoveMonStep;
task->func = AnimTask_ThrashMoveMonHorizontal_Step;
}
static void ThrashMoveMonStep(u8 taskId)
static void AnimTask_ThrashMoveMonHorizontal_Step(u8 taskId)
{
struct Task* task = &gTasks[taskId];
@@ -2290,10 +2301,10 @@ void AnimTask_ThrashMoveMonVertical(u8 taskId)
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
task->data[2] *= -1;
task->func = ThrashMoveMon;
task->func = AnimTask_ThrashMoveMonVertical_Step;
}
static void ThrashMoveMon(u8 taskId)
static void AnimTask_ThrashMoveMonVertical_Step(u8 taskId)
{
struct Task* task = &gTasks[taskId];
@@ -2537,7 +2548,7 @@ void AnimBlendThinRing(struct Sprite *sprite)
sprite->callback(sprite);
}
void sub_80A8C84(struct Sprite *sprite)
static void AnimHyperVoiceRing_WaitEnd(struct Sprite *sprite)
{
if (AnimTranslateLinear(sprite))
{
@@ -2548,14 +2559,14 @@ void sub_80A8C84(struct Sprite *sprite)
void AnimHyperVoiceRing(struct Sprite *sprite)
{
u16 r9 = 0;
u16 r6 = 0;
s16 sp0 = 0;
s16 sp1 = 0;
u8 sp4;
u16 startX = 0;
u16 startY = 0;
s16 x = 0;
s16 y = 0;
u8 yCoordType;
u8 battler1;
u8 battler2;
u8 r10;
u8 xCoordType;
if (gBattleAnimArgs[5] == 0)
{
@@ -2570,18 +2581,18 @@ void AnimHyperVoiceRing(struct Sprite *sprite)
if (!gBattleAnimArgs[6])
{
r10 = 0;
sp4 = 1;
xCoordType = BATTLER_COORD_X;
yCoordType = BATTLER_COORD_Y;
}
else
{
r10 = 2;
sp4 = 3;
xCoordType = BATTLER_COORD_X_2;
yCoordType = BATTLER_COORD_Y_PIC_OFFSET;
}
if (GetBattlerSide(battler1) != B_SIDE_PLAYER)
{
r9 = GetBattlerSpriteCoord(battler1, r10) + gBattleAnimArgs[0];
startX = GetBattlerSpriteCoord(battler1, xCoordType) + gBattleAnimArgs[0];
if (IsBattlerSpriteVisible(BATTLE_PARTNER(battler2)))
sprite->subpriority = gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler2)]].subpriority - 1;
else
@@ -2589,7 +2600,7 @@ void AnimHyperVoiceRing(struct Sprite *sprite)
}
else
{
r9 = GetBattlerSpriteCoord(battler1, r10) - gBattleAnimArgs[0];
startX = GetBattlerSpriteCoord(battler1, xCoordType) - gBattleAnimArgs[0];
if (!IsContest() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler1)))
{
if (gSprites[gBattlerSpriteIds[battler1]].x < gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler1)]].x)
@@ -2604,30 +2615,30 @@ void AnimHyperVoiceRing(struct Sprite *sprite)
}
r6 = GetBattlerSpriteCoord(battler1, sp4) + gBattleAnimArgs[1];
startY = GetBattlerSpriteCoord(battler1, yCoordType) + gBattleAnimArgs[1];
if (!IsContest() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler2)))
{
SetAverageBattlerPositions(battler2, gBattleAnimArgs[6], &sp0, &sp1);
SetAverageBattlerPositions(battler2, gBattleAnimArgs[6], &x, &y);
}
else
{
sp0 = GetBattlerSpriteCoord(battler2, r10);
sp1 = GetBattlerSpriteCoord(battler2, sp4);
x = GetBattlerSpriteCoord(battler2, xCoordType);
y = GetBattlerSpriteCoord(battler2, yCoordType);
}
if (GetBattlerSide(battler2) != B_SIDE_PLAYER)
sp0 += gBattleAnimArgs[3];
x += gBattleAnimArgs[3];
else
sp0 -= gBattleAnimArgs[3];
x -= gBattleAnimArgs[3];
sp1 += gBattleAnimArgs[4];
sprite->x = sprite->data[1] = r9;
sprite->y = sprite->data[3] = r6;
sprite->data[2] = sp0;
sprite->data[4] = sp1;
y += gBattleAnimArgs[4];
sprite->x = sprite->data[1] = startX;
sprite->y = sprite->data[3] = startY;
sprite->data[2] = x;
sprite->data[4] = y;
sprite->data[0] = gBattleAnimArgs[0];
InitAnimLinearTranslation(sprite);
sprite->callback = sub_80A8C84;
sprite->callback = AnimHyperVoiceRing_WaitEnd;
sprite->callback(sprite);
}
@@ -2749,17 +2760,18 @@ static void AnimSoftBoiledEgg_Step4_Callback(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
void AnimTask_StretchAttacker(u8 taskId)
// Used by Extremespeed
void AnimTask_AttackerStretchAndDisappear(u8 taskId)
{
struct Task* task = &gTasks[taskId];
u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
task->data[0] = spriteId;
PrepareAffineAnimInTaskData(task, spriteId, sStretchAttackerAffineAnimCmds);
task->func = StretchAttacker_Step;
task->func = AnimTask_AttackerStretchAndDisappear_Step;
}
static void StretchAttacker_Step(u8 taskId)
static void AnimTask_AttackerStretchAndDisappear_Step(u8 taskId)
{
struct Task* task = &gTasks[taskId];
@@ -2792,10 +2804,10 @@ void AnimTask_ExtremeSpeedImpact(u8 taskId)
}
task->data[15] = GetAnimBattlerSpriteId(ANIM_TARGET);
task->func = ExtremeSpeedImpact_Step;
task->func = AnimTask_ExtremeSpeedImpact_Step;
}
static void ExtremeSpeedImpact_Step(u8 taskId)
static void AnimTask_ExtremeSpeedImpact_Step(u8 taskId)
{
struct Task* task = &gTasks[taskId];
@@ -2853,10 +2865,10 @@ void AnimTask_ExtremeSpeedMonReappear(u8 taskId)
task->data[13] = 14;
task->data[14] = 2;
task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
task->func = ExtremeSpeedMonReappear_Step;
task->func = AnimTask_ExtremeSpeedMonReappear_Step;
}
static void ExtremeSpeedMonReappear_Step(u8 taskId)
static void AnimTask_ExtremeSpeedMonReappear_Step(u8 taskId)
{
struct Task* task = &gTasks[taskId];
@@ -2901,10 +2913,10 @@ void AnimTask_SpeedDust(u8 taskId)
task->data[13] = 0;
task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
task->data[15] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
task->func = SpeedDust_Step1;
task->func = AnimTask_SpeedDust_Step;
}
static void SpeedDust_Step1(u8 taskId)
static void AnimTask_SpeedDust_Step(u8 taskId)
{
struct Task* task = &gTasks[taskId];
@@ -2984,15 +2996,15 @@ void AnimSpeedDust(struct Sprite *sprite)
void AnimTask_LoadMusicNotesPals(u8 taskId)
{
int i;
u8 paletteNums[3];
u8 paletteNums[NUM_MUSIC_NOTE_PAL_TAGS];
paletteNums[0] = IndexOfSpritePaletteTag(ANIM_TAG_MUSIC_NOTES_2);
for (i = 1; i < 3; i++)
for (i = 1; i < NUM_MUSIC_NOTE_PAL_TAGS; i++)
paletteNums[i] = AllocSpritePalette(ANIM_SPRITES_START - i);
gMonSpritesGfxPtr->multiUseBuffer = AllocZeroed(0x2000);
LZDecompressWram(gBattleAnimSpritePal_MusicNotes2, gMonSpritesGfxPtr->multiUseBuffer);
for (i = 0; i < 3; i++)
for (i = 0; i < NUM_MUSIC_NOTE_PAL_TAGS; i++)
LoadPalette(&gMonSpritesGfxPtr->multiUseBuffer[i * 32], (u16)((paletteNums[i] << 4) + 0x100), 32);
FREE_AND_SET_NULL(gMonSpritesGfxPtr->multiUseBuffer);
@@ -3003,7 +3015,7 @@ void AnimTask_FreeMusicNotesPals(u8 taskId)
{
int i;
for (i = 0; i < 3; i++)
for (i = 0; i < NUM_MUSIC_NOTE_PAL_TAGS; i++)
FreeSpritePaletteByTag(gMusicNotePaletteTagsTable[i]);
DestroyAnimVisualTask(taskId);
@@ -3045,30 +3057,30 @@ void AnimMagentaHeart(struct Sprite *sprite)
void AnimTask_FakeOut(u8 taskId)
{
u16 win0h = IsContest() ? 0x98 : 0xF0;
u16 win0h = IsContest() ? 152 : DISPLAY_WIDTH;
u16 win0v = 0;
gBattle_WIN0H = win0h;
gBattle_WIN0V = 0xA0;
gBattle_WIN0V = DISPLAY_HEIGHT;
SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H);
SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V);
SetGpuReg(REG_OFFSET_WININ, WININ_WIN1_CLR | WININ_WIN1_OBJ | WININ_WIN1_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_BG_ALL);
SetGpuReg(REG_OFFSET_WINOUT, WININ_WIN1_CLR | WININ_WIN1_OBJ | WININ_WIN1_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ | WININ_WIN0_BG_ALL);
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_DARKEN);
SetGpuReg(REG_OFFSET_BLDY, BLDCNT_TGT1_OBJ);
SetGpuReg(REG_OFFSET_BLDY, 16);
gTasks[taskId].data[0] = win0v;
gTasks[taskId].data[1] = win0h;
gTasks[taskId].func = FakeOutStep1;
gTasks[taskId].func = AnimTask_FakeOut_Step1;
}
static void FakeOutStep1(u8 taskId)
static void AnimTask_FakeOut_Step1(u8 taskId)
{
gTasks[taskId].data[0] += 13;
gTasks[taskId].data[1] -= 13;
if (gTasks[taskId].data[0] >= gTasks[taskId].data[1])
{
gBattle_WIN0H = 0;
gTasks[taskId].func = FakeOutStep2;
gTasks[taskId].func = AnimTask_FakeOut_Step2;
}
else
{
@@ -3076,13 +3088,13 @@ static void FakeOutStep1(u8 taskId)
}
}
static void FakeOutStep2(u8 taskId)
static void AnimTask_FakeOut_Step2(u8 taskId)
{
if (++gTasks[taskId].data[10] == 5)
{
gTasks[taskId].data[11] = 0x88;
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_LIGHTEN);
BlendPalettes(GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0), 16, RGB_WHITE);
BlendPalettes(GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE), 16, RGB_WHITE);
}
else if (gTasks[taskId].data[10] > 4)
{
@@ -3102,7 +3114,7 @@ void AnimTask_StretchTargetUp(u8 taskId)
if (++gTasks[taskId].data[0] == 1)
{
PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_TARGET), sUnknown_83E4200);
PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_TARGET), sAffineAnims_StretchBattlerUp);
gSprites[spriteId].x2 = 4;
}
else
@@ -3123,7 +3135,7 @@ void AnimTask_StretchAttackerUp(u8 taskId)
if (++gTasks[taskId].data[0] == 1)
{
PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), sUnknown_83E4200);
PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), sAffineAnims_StretchBattlerUp);
gSprites[spriteId].x2 = 4;
}
else
@@ -3163,7 +3175,7 @@ static void AnimRedHeartProjectile_Step(struct Sprite *sprite)
}
}
void AnimParticuleBurst(struct Sprite *sprite)
void AnimParticleBurst(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
@@ -3188,7 +3200,7 @@ void AnimParticuleBurst(struct Sprite *sprite)
void AnimRedHeartRising(struct Sprite *sprite)
{
sprite->x = gBattleAnimArgs[0];
sprite->y = 160;
sprite->y = DISPLAY_HEIGHT;
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[1];
sprite->callback = WaitAnimForDuration;
@@ -3234,10 +3246,10 @@ void AnimTask_HeartsBackground(u8 taskId)
if (IsContest())
RelocateBattleBgPal(animBg.paletteId, animBg.bgTilemap, 0, 0);
gTasks[taskId].func = HeartsBackground_Step;
gTasks[taskId].func = AnimTask_HeartsBackground_Step;
}
static void HeartsBackground_Step(u8 taskId)
static void AnimTask_HeartsBackground_Step(u8 taskId)
{
struct BattleAnimBgData animBg;
@@ -3322,10 +3334,10 @@ void AnimTask_ScaryFace(u8 taskId)
if (IsContest())
RelocateBattleBgPal(animBg.paletteId, animBg.bgTilemap, 0, 0);
gTasks[taskId].func = ScaryFace_Step;
gTasks[taskId].func = AnimTask_ScaryFace_Step;
}
static void ScaryFace_Step(u8 taskId)
static void AnimTask_ScaryFace_Step(u8 taskId)
{
struct BattleAnimBgData animBg;
@@ -3394,11 +3406,11 @@ void AnimOrbitFast(struct Sprite *sprite)
sprite->data[0] = gBattleAnimArgs[0];
sprite->data[1] = gBattleAnimArgs[1];
sprite->data[7] = GetBattlerSpriteSubpriority(gBattleAnimAttacker);
sprite->callback = AnimOrbitFastStep;
sprite->callback = AnimOrbitFast_Step;
sprite->callback(sprite);
}
static void AnimOrbitFastStep(struct Sprite *sprite)
static void AnimOrbitFast_Step(struct Sprite *sprite)
{
if (sprite->data[1] >= 64 && sprite->data[1] <= 191)
sprite->subpriority = sprite->data[7] + 1;
@@ -3443,14 +3455,15 @@ void AnimOrbitScatter(struct Sprite *sprite)
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
sprite->data[0] = Sin(gBattleAnimArgs[0], 10);
sprite->data[1] = Cos(gBattleAnimArgs[0], 7);
sprite->callback = AnimOrbitScatterStep;
sprite->callback = AnimOrbitScatter_Step;
}
static void AnimOrbitScatterStep(struct Sprite *sprite)
static void AnimOrbitScatter_Step(struct Sprite *sprite)
{
sprite->x2 += sprite->data[0];
sprite->y2 += sprite->data[1];
if (sprite->x + sprite->x2 + 16 > 272u || sprite->y + sprite->y2 > 160 || sprite->y + sprite->y2 < -16)
if (sprite->x + sprite->x2 + 16 > ((u32)DISPLAY_WIDTH + 32)
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT || sprite->y + sprite->y2 < -16)
DestroyAnimSprite(sprite);
}
@@ -3472,7 +3485,7 @@ void AnimSpitUpOrb(struct Sprite *sprite)
sprite->callback = AnimSpitUpOrb_Step;
}
static void sub_80AA3D4(struct Sprite *sprite)
static void AnimEyeSparkle_Step(struct Sprite *sprite)
{
if (sprite->animEnded)
DestroyAnimSprite(sprite);
@@ -3481,7 +3494,7 @@ static void sub_80AA3D4(struct Sprite *sprite)
void AnimEyeSparkle(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->callback = sub_80AA3D4;
sprite->callback = AnimEyeSparkle_Step;
}
void AnimAngel(struct Sprite *sprite)
@@ -3510,7 +3523,7 @@ void AnimAngel(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
static void sub_80AA49C(struct Sprite *sprite)
static void AnimPinkHeart_Step(struct Sprite *sprite)
{
sprite->data[5]++;
sprite->x2 = Sin(sprite->data[3], 5);
@@ -3539,7 +3552,7 @@ void AnimPinkHeart(struct Sprite *sprite)
sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
if (sprite->data[3] > 70)
{
sprite->callback = sub_80AA49C;
sprite->callback = AnimPinkHeart_Step;
sprite->x += sprite->x2;
sprite->y += sprite->y2;
sprite->x2 = 0;
@@ -3640,10 +3653,10 @@ void AnimTask_UproarDistortion(u8 taskId)
u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
PrepareAffineAnimInTaskData(&gTasks[taskId], spriteId, sUproarAffineAnimCmds);
gTasks[taskId].func = UproarDistortion_Step;
gTasks[taskId].func = AnimTask_UproarDistortion_Step;
}
static void UproarDistortion_Step(u8 taskId)
static void AnimTask_UproarDistortion_Step(u8 taskId)
{
if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
DestroyAnimVisualTask(taskId);
@@ -3696,7 +3709,7 @@ void AnimPerishSongMusicNote2(struct Sprite *sprite)
}
if (++sprite->data[0] == sprite->data[1])
SetGreyscaleOrOriginalPalette(sprite->oam.paletteNum + 16, 0);
SetGreyscaleOrOriginalPalette(sprite->oam.paletteNum + 16, FALSE);
if (sprite->data[0] == sprite->data[1] + 80)
DestroyAnimSprite(sprite);
@@ -3782,7 +3795,7 @@ void AnimGuardRing(struct Sprite *sprite)
{
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)))
{
SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->x, &sprite->y);
SetAverageBattlerPositions(gBattleAnimAttacker, FALSE, &sprite->x, &sprite->y);
sprite->y += 40;
StartSpriteAffineAnim(sprite, 1);
@@ -3803,12 +3816,12 @@ void AnimGuardRing(struct Sprite *sprite)
void AnimTask_IsFuryCutterHitRight(u8 taskId)
{
gBattleAnimArgs[7] = gAnimDisableStructPtr->furyCutterCounter & 1;
gBattleAnimArgs[ARG_RET_ID] = gAnimDisableStructPtr->furyCutterCounter & 1;
DestroyAnimVisualTask(taskId);
}
void AnimTask_GetFuryCutterHitCount(u8 taskId)
{
gBattleAnimArgs[7] = gAnimDisableStructPtr->furyCutterCounter;
gBattleAnimArgs[ARG_RET_ID] = gAnimDisableStructPtr->furyCutterCounter;
DestroyAnimVisualTask(taskId);
}
+1 -1
View File
@@ -1031,7 +1031,7 @@ const struct SpriteTemplate gUnknown_83FF6D4 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimParticuleBurst,
.callback = AnimParticleBurst,
};
const struct SpriteTemplate gBlockXSpriteTemplate =
+1 -1
View File
@@ -462,7 +462,7 @@ static void TranslateSpriteInLissajousCurveOverDuration(struct Sprite *sprite)
// x = a * sin(theta0 + dtheta * t)
// y = b * cos(theta0 + dtheta * t)
void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite)
void TranslateSpriteInEllipse(struct Sprite *sprite)
{
if (sprite->data[3])
{
+2 -2
View File
@@ -328,7 +328,7 @@ static void AnimFallingRock(struct Sprite *sprite)
sprite->data[4] = -70;
sprite->data[5] = gBattleAnimArgs[2];
StoreSpriteCallbackInData6(sprite, sub_80B46B4);
sprite->callback = TranslateSpriteInEllipseOverDuration;
sprite->callback = TranslateSpriteInEllipse;
sprite->callback(sprite);
}
@@ -341,7 +341,7 @@ static void sub_80B46B4(struct Sprite *sprite)
sprite->data[3] = 32;
sprite->data[4] = -24;
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
sprite->callback = TranslateSpriteInEllipseOverDuration;
sprite->callback = TranslateSpriteInEllipse;
sprite->callback(sprite);
}