Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
182 changes: 91 additions & 91 deletions data/battle_anim_scripts.s

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion include/field_door.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,6 @@ void FieldSetDoorClosed(u32, u32);
s8 FieldAnimateDoorClose(u32, u32);
s8 FieldAnimateDoorOpen(u32, u32);
bool8 FieldIsDoorAnimationRunning(void);
u32 GetDoorSoundEffect(u32 x, u32 y);
u16 GetDoorSoundEffect(u32 x, u32 y);

#endif
767 changes: 444 additions & 323 deletions src/battle_anim_effects_3.c

Large diffs are not rendered by default.

102 changes: 53 additions & 49 deletions src/battle_anim_mon_movement.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,26 @@ extern u16 gAnimMovePower;
extern u8 gBattleAnimAttacker;
extern u8 gBattleAnimTarget;

static void AnimTask_ShakeMonStep(u8 taskId);
static void AnimTask_ShakeMon2Step(u8 taskId);
static void AnimTask_ShakeMonInPlaceStep(u8 taskId);
static void AnimTask_ShakeAndSinkMonStep(u8 taskId);
static void sub_80A8488(u8 taskId);
static void AnimTask_ShakeMon_Step(u8 taskId);
static void AnimTask_ShakeMon2_Step(u8 taskId);
static void AnimTask_ShakeMonInPlace_Step(u8 taskId);
static void AnimTask_ShakeAndSinkMon_Step(u8 taskId);
static void AnimTask_TranslateMonElliptical_Step(u8 taskId);
static void DoHorizontalLunge(struct Sprite *sprite);
static void ReverseHorizontalLungeDirection(struct Sprite *sprite);
static void DoVerticalDip(struct Sprite *sprite);
static void ReverseVerticalDipDirection(struct Sprite* sprite);
static void SlideMonToOriginalPos(struct Sprite *sprite);
static void SlideMonToOriginalPosStep(struct Sprite *sprite);
static void SlideMonToOriginalPos_Step(struct Sprite *sprite);
static void SlideMonToOffset(struct Sprite *sprite);
static void sub_80A8818(struct Sprite *sprite);
static void sub_80A88F0(struct Sprite *sprite);
static void AnimTask_WindUpLungePart1(u8 taskId);
static void AnimTask_WindUpLungePart2(u8 taskId);
static void SlideMonToOffsetAndBack(struct Sprite *sprite);
static void SlideMonToOffsetAndBack_End(struct Sprite *sprite);
static void AnimTask_WindUpLunge_Step1(u8 taskId);
static void AnimTask_WindUpLunge_Step2(u8 taskId);
static void AnimTask_SwayMonStep(u8 taskId);
static void AnimTask_ScaleMonAndRestoreStep(u8 taskId);
static void sub_80A8FD8(u8 taskId);
static void sub_80A913C(u8 taskId);
static void AnimTask_ScaleMonAndRestore_Step(u8 taskId);
static void AnimTask_RotateMonSpriteToSide_Step(u8 taskId);
static void AnimTask_ShakeTargetBasedOnMovePowerOrDmg_Step(u8 taskId);

const struct SpriteTemplate gHorizontalLungeSpriteTemplate =
{
Expand Down Expand Up @@ -81,15 +81,15 @@ const struct SpriteTemplate gSlideMonToOffsetSpriteTemplate =
.callback = SlideMonToOffset,
};

const struct SpriteTemplate gBattleAnimSpriteTemplate_83C2010 =
const struct SpriteTemplate gSlideMonToOffsetAndBackSpriteTemplate =
{
.tileTag = 0,
.paletteTag = 0,
.oam = &gDummyOamData,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_80A8818,
.callback = SlideMonToOffsetAndBack,
};

// Task to facilitate simple shaking of a pokemon's picture in battle.
Expand All @@ -116,11 +116,11 @@ void AnimTask_ShakeMon(u8 taskId)
TASK.data[3] = gBattleAnimArgs[4];
TASK.data[4] = gBattleAnimArgs[1];
TASK.data[5] = gBattleAnimArgs[2];
TASK.func = AnimTask_ShakeMonStep;
AnimTask_ShakeMonStep(taskId);
TASK.func = AnimTask_ShakeMon_Step;
AnimTask_ShakeMon_Step(taskId);
}

static void AnimTask_ShakeMonStep(u8 taskId)
static void AnimTask_ShakeMon_Step(u8 taskId)
{
if (TASK.data[3] == 0)
{
Expand Down Expand Up @@ -220,11 +220,11 @@ void AnimTask_ShakeMon2(u8 taskId)
TASK.data[3] = gBattleAnimArgs[4];
TASK.data[4] = gBattleAnimArgs[1];
TASK.data[5] = gBattleAnimArgs[2];
TASK.func = AnimTask_ShakeMon2Step;
TASK.func = AnimTask_ShakeMon2_Step;
TASK.func(taskId);
}

static void AnimTask_ShakeMon2Step(u8 taskId)
static void AnimTask_ShakeMon2_Step(u8 taskId)
{
if (TASK.data[3] == 0)
{
Expand Down Expand Up @@ -279,11 +279,11 @@ void AnimTask_ShakeMonInPlace(u8 taskId)
TASK.data[4] = gBattleAnimArgs[4];
TASK.data[5] = gBattleAnimArgs[1] * 2;
TASK.data[6] = gBattleAnimArgs[2] * 2;
TASK.func = AnimTask_ShakeMonInPlaceStep;
TASK.func = AnimTask_ShakeMonInPlace_Step;
TASK.func(taskId);
}

static void AnimTask_ShakeMonInPlaceStep(u8 taskId)
static void AnimTask_ShakeMonInPlace_Step(u8 taskId)
{
if (TASK.data[3] == 0)
{
Expand Down Expand Up @@ -335,11 +335,11 @@ void AnimTask_ShakeAndSinkMon(u8 taskId)
TASK.data[2] = gBattleAnimArgs[2];
TASK.data[3] = gBattleAnimArgs[3];
TASK.data[4] = gBattleAnimArgs[4];
TASK.func = AnimTask_ShakeAndSinkMonStep;
TASK.func = AnimTask_ShakeAndSinkMon_Step;
TASK.func(taskId);
}

static void AnimTask_ShakeAndSinkMonStep(u8 taskId)
static void AnimTask_ShakeAndSinkMon_Step(u8 taskId)
{
s16 x;
u8 sprite;
Expand Down Expand Up @@ -392,11 +392,11 @@ void AnimTask_TranslateMonElliptical(u8 taskId)
TASK.data[2] = gBattleAnimArgs[2];
TASK.data[3] = gBattleAnimArgs[3];
TASK.data[4] = wavePeriod;
TASK.func = sub_80A8488;
TASK.func = AnimTask_TranslateMonElliptical_Step;
TASK.func(taskId);
}

static void sub_80A8488(u8 taskId)
static void AnimTask_TranslateMonElliptical_Step(u8 taskId)
{
u8 spriteId = TASK.data[0];
gSprites[spriteId].x2 = Sin(TASK.data[5], TASK.data[1]);
Expand Down Expand Up @@ -522,10 +522,10 @@ static void SlideMonToOriginalPos(struct Sprite *sprite)

sprite->data[7] = gBattleAnimArgs[1];
sprite->data[7] |= monSpriteId << 8;
sprite->callback = SlideMonToOriginalPosStep;
sprite->callback = SlideMonToOriginalPos_Step;
}

static void SlideMonToOriginalPosStep(struct Sprite *sprite)
static void SlideMonToOriginalPos_Step(struct Sprite *sprite)
{
s8 monSpriteId;
u8 lo;
Expand Down Expand Up @@ -595,7 +595,7 @@ static void SlideMonToOffset(struct Sprite *sprite)
sprite->callback = TranslateMonBGSubPixelUntil;
}

static void sub_80A8818(struct Sprite *sprite)
static void SlideMonToOffsetAndBack(struct Sprite *sprite)
{
u8 spriteId;
u8 v1;
Expand Down Expand Up @@ -633,13 +633,13 @@ static void sub_80A8818(struct Sprite *sprite)
}
else
{
StoreSpriteCallbackInData(sprite, sub_80A88F0);
StoreSpriteCallbackInData(sprite, SlideMonToOffsetAndBack_End);
}
sprite->callback = TranslateMonBGSubPixelUntil;
}


static void sub_80A88F0(struct Sprite *sprite)
static void SlideMonToOffsetAndBack_End(struct Sprite *sprite)
{
gSprites[sprite->data[5]].x2 = 0;
gSprites[sprite->data[5]].y2 = 0;
Expand Down Expand Up @@ -672,10 +672,10 @@ void AnimTask_WindUpLunge(u8 taskId)
TASK.data[5] = (gBattleAnimArgs[5] << 8) / gBattleAnimArgs[6];
TASK.data[6] = gBattleAnimArgs[6];
TASK.data[7] = wavePeriod;
TASK.func = AnimTask_WindUpLungePart1;
TASK.func = AnimTask_WindUpLunge_Step1;
}

static void AnimTask_WindUpLungePart1(u8 taskId)
static void AnimTask_WindUpLunge_Step1(u8 taskId)
{
u8 spriteId;
spriteId = TASK.data[0];
Expand All @@ -685,11 +685,11 @@ static void AnimTask_WindUpLungePart1(u8 taskId)
TASK.data[10] += TASK.data[7];
if (--TASK.data[3] == 0)
{
TASK.func = AnimTask_WindUpLungePart2;
TASK.func = AnimTask_WindUpLunge_Step2;
}
}

static void AnimTask_WindUpLungePart2(u8 taskId)
static void AnimTask_WindUpLunge_Step2(u8 taskId)
{
u8 spriteId;
if (TASK.data[4] > 0)
Expand All @@ -709,9 +709,11 @@ static void AnimTask_WindUpLungePart2(u8 taskId)
}
}

static void sub_80A8B3C(u8 taskId);
static void AnimTask_SlideOffScreen_Step(u8 taskId);

void sub_80A8A80(u8 taskId)
// To move a mon off-screen when pushed out by Roar/Whirlwind

void AnimTask_SlideOffScreen(u8 taskId)
{
u8 spriteId;
switch (gBattleAnimArgs[0])
Expand Down Expand Up @@ -749,10 +751,10 @@ void sub_80A8A80(u8 taskId)
{
TASK.data[1] = -gBattleAnimArgs[1];
}
TASK.func = sub_80A8B3C;
TASK.func = AnimTask_SlideOffScreen_Step;
}

static void sub_80A8B3C(u8 taskId)
static void AnimTask_SlideOffScreen_Step(u8 taskId)
{
u8 spriteId = TASK.data[0];
gSprites[spriteId].x2 += TASK.data[1];
Expand Down Expand Up @@ -855,10 +857,10 @@ void AnimTask_ScaleMonAndRestore(u8 taskId)
TASK.data[4] = spriteId;
TASK.data[10] = 0x100;
TASK.data[11] = 0x100;
TASK.func = AnimTask_ScaleMonAndRestoreStep;
TASK.func = AnimTask_ScaleMonAndRestore_Step;
}

static void AnimTask_ScaleMonAndRestoreStep(u8 taskId)
static void AnimTask_ScaleMonAndRestore_Step(u8 taskId)
{
u8 spriteId;
TASK.data[10] += TASK.data[0];
Expand All @@ -883,7 +885,7 @@ static void AnimTask_ScaleMonAndRestoreStep(u8 taskId)
}
}

void sub_80A8E04(u8 taskId)
void AnimTask_RotateMonSpriteToSide(u8 taskId)
{
u8 spriteId;
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
Expand Down Expand Up @@ -924,10 +926,12 @@ void sub_80A8E04(u8 taskId)
TASK.data[4] *= -1;
}
}
TASK.func = sub_80A8FD8;
TASK.func = AnimTask_RotateMonSpriteToSide_Step;
}

void sub_80A8EFC(u8 taskId)
// Rotates mon to side and back to original position. For Peck and when a held item activates

void AnimTask_RotateMonToSideAndRestore(u8 taskId)
{
u8 spriteId;
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
Expand Down Expand Up @@ -962,10 +966,10 @@ void sub_80A8EFC(u8 taskId)
TASK.data[7] = 1;
TASK.data[3] *= -1;
TASK.data[4] *= -1;
TASK.func = sub_80A8FD8;
TASK.func = AnimTask_RotateMonSpriteToSide_Step;
}

static void sub_80A8FD8(u8 taskId)
static void AnimTask_RotateMonSpriteToSide_Step(u8 taskId)
{
TASK.data[3] += TASK.data[4];
obj_id_set_rotscale(TASK.data[5], 0x100, 0x100, TASK.data[3]);
Expand All @@ -992,7 +996,7 @@ static void sub_80A8FD8(u8 taskId)
}
}

void sub_80A9058(u8 taskId)
void AnimTask_ShakeTargetBasedOnMovePowerOrDmg(u8 taskId)
{
if (!gBattleAnimArgs[0])
{
Expand Down Expand Up @@ -1029,10 +1033,10 @@ void sub_80A9058(u8 taskId)
TASK.data[0] = 0;
TASK.data[1] = gBattleAnimArgs[1];
TASK.data[2] = gBattleAnimArgs[2];
TASK.func = sub_80A913C;
TASK.func = AnimTask_ShakeTargetBasedOnMovePowerOrDmg_Step;
}

static void sub_80A913C(u8 taskId)
static void AnimTask_ShakeTargetBasedOnMovePowerOrDmg_Step(u8 taskId)
{
struct Task *task = &gTasks[taskId];
if (++task->data[0] > task->data[1])
Expand Down
Loading