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