Sync battle anim - ghost
This commit is contained in:
@@ -60,7 +60,7 @@ extern u8 gBattleAnimTarget;
|
||||
extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
|
||||
extern s32 gAnimMoveDmg;
|
||||
extern u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT];
|
||||
extern u8 gUnknown_2037F24;
|
||||
extern u8 gAnimCustomPanning;
|
||||
|
||||
// battle_anim.c
|
||||
extern const struct OamData gOamData_AffineOff_ObjNormal_8x8;
|
||||
|
||||
+2
-2
@@ -36,7 +36,7 @@ EWRAM_DATA static u16 sAnimMoveIndex = 0;
|
||||
EWRAM_DATA u8 gBattleAnimAttacker = 0;
|
||||
EWRAM_DATA u8 gBattleAnimTarget = 0;
|
||||
EWRAM_DATA u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT] = {0};
|
||||
EWRAM_DATA u8 gUnknown_2037F24 = 0;
|
||||
EWRAM_DATA u8 gAnimCustomPanning = 0;
|
||||
|
||||
// Function Declarations
|
||||
static void AddSpriteIndex(u16 index);
|
||||
@@ -1809,7 +1809,7 @@ void ClearBattleAnimationVars(void)
|
||||
sAnimMoveIndex = 0;
|
||||
gBattleAnimAttacker = 0;
|
||||
gBattleAnimTarget = 0;
|
||||
gUnknown_2037F24 = 0;
|
||||
gAnimCustomPanning = 0;
|
||||
}
|
||||
|
||||
void DoMoveAnim(u16 move)
|
||||
|
||||
@@ -1113,7 +1113,7 @@ static void AnimWillOWispOrb_Step(struct Sprite *sprite)
|
||||
sprite->data[5] = (sprite->data[5] + 4) & 0xFF;
|
||||
newData5 = sprite->data[5];
|
||||
if ((initialData5 == 0 || initialData5 > 196) && newData5 > 0 && sprite->data[7] == 0)
|
||||
PlaySE12WithPanning(SE_M_FLAME_WHEEL, gUnknown_2037F24);
|
||||
PlaySE12WithPanning(SE_M_FLAME_WHEEL, gAnimCustomPanning);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+104
-102
@@ -9,39 +9,39 @@
|
||||
#include "constants/songs.h"
|
||||
|
||||
static void AnimConfuseRayBallBounce(struct Sprite *sprite);
|
||||
static void sub_80B52D0(struct Sprite *sprite);
|
||||
static void sub_80B5344(struct Sprite *sprite);
|
||||
static void sub_80B53C0(struct Sprite *sprite);
|
||||
static void AnimConfuseRayBallBounce_Step1(struct Sprite *sprite);
|
||||
static void AnimConfuseRayBallBounce_Step2(struct Sprite *sprite);
|
||||
static void UpdateConfuseRayBallBlend(struct Sprite *sprite);
|
||||
static void AnimConfuseRayBallSpiral(struct Sprite *sprite);
|
||||
static void sub_80B5470(struct Sprite *sprite);
|
||||
static void sub_80B5570(u8 taskId);
|
||||
static void sub_80B55C8(u8 taskId);
|
||||
static void AnimConfuseRayBallSpiral_Step(struct Sprite *sprite);
|
||||
static void AnimTask_NightShadeClone_Step1(u8 taskId);
|
||||
static void AnimTask_NightShadeClone_Step2(u8 taskId);
|
||||
static void AnimShadowBall(struct Sprite *sprite);
|
||||
static void AnimShadowBallStep(struct Sprite *sprite);
|
||||
static void AnimShadowBall_Step(struct Sprite *sprite);
|
||||
static void AnimLick(struct Sprite *sprite);
|
||||
static void sub_80B5810(struct Sprite *sprite);
|
||||
static void sub_80B59D4(u8 taskId);
|
||||
static void sub_80B5AD4(u8 taskId);
|
||||
static void sub_80B5D38(u8 taskId);
|
||||
static void sub_80B5DCC(u8 taskId);
|
||||
static void AnimLick_Step(struct Sprite *sprite);
|
||||
static void AnimTask_NightmareClone_Step(u8 taskId);
|
||||
static void AnimTask_SpiteTargetShadow_Step1(u8 taskId);
|
||||
static void AnimTask_SpiteTargetShadow_Step2(u8 taskId);
|
||||
static void AnimTask_SpiteTargetShadow_Step3(u8 taskId);
|
||||
static void AnimDestinyBondWhiteShadow(struct Sprite *sprite);
|
||||
static void sub_80B5FE0(struct Sprite *sprite);
|
||||
static void sub_80B623C(u8 taskId);
|
||||
static void sub_80B6468(u8 taskId);
|
||||
static void sub_80B65F0(u8 taskId);
|
||||
static void AnimDestinyBondWhiteShadow_Step(struct Sprite *sprite);
|
||||
static void AnimTask_DestinyBondWhiteShadow_Step(u8 taskId);
|
||||
static void AnimTask_CurseStretchingBlackBg_Step1(u8 taskId);
|
||||
static void AnimTask_CurseStretchingBlackBg_Step2(u8 taskId);
|
||||
static void AnimCurseNail(struct Sprite *sprite);
|
||||
static void sub_80B66A8(struct Sprite *sprite);
|
||||
static void sub_80B6728(struct Sprite *sprite);
|
||||
static void sub_80B67A0(struct Sprite *sprite);
|
||||
static void AnimCurseNail_Step1(struct Sprite *sprite);
|
||||
static void AnimCurseNail_Step2(struct Sprite *sprite);
|
||||
static void AnimCurseNail_End(struct Sprite *sprite);
|
||||
static void AnimGhostStatusSprite(struct Sprite *sprite);
|
||||
static void sub_80B68A8(struct Sprite *sprite);
|
||||
static void sub_80B696C(u8 taskId);
|
||||
static void AnimGhostStatusSprite_End(struct Sprite *sprite);
|
||||
static void AnimTask_GrudgeFlames_Step(u8 taskId);
|
||||
static void AnimGrudgeFlame(struct Sprite *sprite);
|
||||
static void sub_80B7158(struct Sprite *sprite);
|
||||
static void AnimMonMoveCircular(struct Sprite *sprite);
|
||||
static void sub_80B6BE4(u8 taskId);
|
||||
static void sub_80B6F30(u8 taskId);
|
||||
static void sub_80B6FC4(u8 taskId);
|
||||
static void sub_80B71B0(struct Sprite *sprite);
|
||||
static void AnimMonMoveCircular_Step(struct Sprite *sprite);
|
||||
|
||||
static const union AffineAnimCmd sAffineAnim_ConfuseRayBallBounce[] =
|
||||
{
|
||||
@@ -125,17 +125,15 @@ const struct SpriteTemplate gLickSpriteTemplate =
|
||||
.callback = AnimLick,
|
||||
};
|
||||
|
||||
// not used
|
||||
static const union AffineAnimCmd gUnknown_83E7654[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Unused[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
// not used
|
||||
static const union AffineAnimCmd *const gUnknown_83E7664[] =
|
||||
static const union AffineAnimCmd *const sAffineAnims_Unused[] =
|
||||
{
|
||||
gUnknown_83E7654,
|
||||
sAffineAnim_Unused,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gDestinyBondWhiteShadowSpriteTemplate =
|
||||
@@ -207,7 +205,8 @@ const struct SpriteTemplate gGrudgeFlameSpriteTemplate =
|
||||
.callback = AnimGrudgeFlame,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E76F8 =
|
||||
// Unused
|
||||
static const struct SpriteTemplate sMonMoveCircularSpriteTemplate =
|
||||
{
|
||||
.tileTag = 0,
|
||||
.paletteTag = 0,
|
||||
@@ -215,7 +214,7 @@ const struct SpriteTemplate gUnknown_83E76F8 =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B7158,
|
||||
.callback = AnimMonMoveCircular,
|
||||
};
|
||||
|
||||
static void AnimConfuseRayBallBounce(struct Sprite *sprite)
|
||||
@@ -223,24 +222,24 @@ static void AnimConfuseRayBallBounce(struct Sprite *sprite)
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
InitAnimLinearTranslationWithSpeed(sprite);
|
||||
sprite->callback = sub_80B52D0;
|
||||
sprite->callback = AnimConfuseRayBallBounce_Step1;
|
||||
sprite->data[6] = 16;
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, sprite->data[6]);
|
||||
}
|
||||
|
||||
static void sub_80B52D0(struct Sprite *sprite)
|
||||
static void AnimConfuseRayBallBounce_Step1(struct Sprite *sprite)
|
||||
{
|
||||
s16 r0, r2;
|
||||
|
||||
sub_80B53C0(sprite);
|
||||
UpdateConfuseRayBallBlend(sprite);
|
||||
if (AnimTranslateLinear(sprite))
|
||||
{
|
||||
sprite->callback = sub_80B5344;
|
||||
sprite->callback = AnimConfuseRayBallBounce_Step2;
|
||||
return;
|
||||
}
|
||||
sprite->x2 += Sin(sprite->data[5], 10);
|
||||
@@ -252,10 +251,10 @@ static void sub_80B52D0(struct Sprite *sprite)
|
||||
return;
|
||||
if (r0 <= 0)
|
||||
return;
|
||||
PlaySE12WithPanning(SE_M_CONFUSE_RAY, gUnknown_2037F24);
|
||||
PlaySE12WithPanning(SE_M_CONFUSE_RAY, gAnimCustomPanning);
|
||||
}
|
||||
|
||||
static void sub_80B5344(struct Sprite *sprite)
|
||||
static void AnimConfuseRayBallBounce_Step2(struct Sprite *sprite)
|
||||
{
|
||||
s16 r2, r0;
|
||||
|
||||
@@ -275,11 +274,11 @@ static void sub_80B5344(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80B53C0(sprite);
|
||||
UpdateConfuseRayBallBlend(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B53C0(struct Sprite *sprite)
|
||||
static void UpdateConfuseRayBallBlend(struct Sprite *sprite)
|
||||
{
|
||||
s16 r0;
|
||||
|
||||
@@ -309,11 +308,11 @@ static void sub_80B53C0(struct Sprite *sprite)
|
||||
static void AnimConfuseRayBallSpiral(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||
sprite->callback = sub_80B5470;
|
||||
sprite->callback = AnimConfuseRayBallSpiral_Step;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
static void sub_80B5470(struct Sprite *sprite)
|
||||
static void AnimConfuseRayBallSpiral_Step(struct Sprite *sprite)
|
||||
{
|
||||
u16 temp1;
|
||||
|
||||
@@ -332,6 +331,7 @@ static void sub_80B5470(struct Sprite *sprite)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
// Creates a large transparent clone of the attacker centered on their position which shrinks to original size
|
||||
void AnimTask_NightShadeClone(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
@@ -346,10 +346,10 @@ void AnimTask_NightShadeClone(u8 taskId)
|
||||
gTasks[taskId].data[1] = *gBattleAnimArgs;
|
||||
gTasks[taskId].data[2] = 0;
|
||||
gTasks[taskId].data[3] = 16;
|
||||
gTasks[taskId].func = sub_80B5570;
|
||||
gTasks[taskId].func = AnimTask_NightShadeClone_Step1;
|
||||
}
|
||||
|
||||
static void sub_80B5570(u8 taskId)
|
||||
static void AnimTask_NightShadeClone_Step1(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[10] += 1;
|
||||
if (gTasks[taskId].data[10] == 3)
|
||||
@@ -360,11 +360,11 @@ static void sub_80B5570(u8 taskId)
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[2], gTasks[taskId].data[3]));
|
||||
if (gTasks[taskId].data[2] != 9)
|
||||
return;
|
||||
gTasks[taskId].func = sub_80B55C8;
|
||||
gTasks[taskId].func = AnimTask_NightShadeClone_Step2;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B55C8(u8 taskId)
|
||||
static void AnimTask_NightShadeClone_Step2(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
|
||||
@@ -398,8 +398,8 @@ static void AnimShadowBall(struct Sprite *sprite)
|
||||
s16 oldPosX = sprite->x;
|
||||
s16 oldPosY = sprite->y;
|
||||
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = gBattleAnimArgs[0];
|
||||
sprite->data[2] = gBattleAnimArgs[1];
|
||||
@@ -408,10 +408,10 @@ static void AnimShadowBall(struct Sprite *sprite)
|
||||
sprite->data[5] = sprite->y << 4;
|
||||
sprite->data[6] = ((oldPosX - sprite->x) << 4) / (gBattleAnimArgs[0] << 1);
|
||||
sprite->data[7] = ((oldPosY - sprite->y) << 4) / (gBattleAnimArgs[0] << 1);
|
||||
sprite->callback = AnimShadowBallStep;
|
||||
sprite->callback = AnimShadowBall_Step;
|
||||
}
|
||||
|
||||
static void AnimShadowBallStep(struct Sprite *sprite)
|
||||
static void AnimShadowBall_Step(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
@@ -429,8 +429,8 @@ static void AnimShadowBallStep(struct Sprite *sprite)
|
||||
sprite->data[2] -= 1;
|
||||
if (sprite->data[2] > 0)
|
||||
break;
|
||||
sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->data[4] = sprite->x << 4;
|
||||
sprite->data[5] = sprite->y << 4;
|
||||
sprite->data[6] = ((sprite->data[1] - sprite->x) << 4) / sprite->data[3];
|
||||
@@ -445,8 +445,8 @@ static void AnimShadowBallStep(struct Sprite *sprite)
|
||||
sprite->data[3] -= 1;
|
||||
if (sprite->data[3] > 0)
|
||||
break;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->data[0] += 1;
|
||||
break;
|
||||
case 3:
|
||||
@@ -458,10 +458,10 @@ static void AnimShadowBallStep(struct Sprite *sprite)
|
||||
static void AnimLick(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||
sprite->callback = sub_80B5810;
|
||||
sprite->callback = AnimLick_Step;
|
||||
}
|
||||
|
||||
static void sub_80B5810(struct Sprite *sprite)
|
||||
static void AnimLick_Step(struct Sprite *sprite)
|
||||
{
|
||||
bool8 r5 = FALSE;
|
||||
bool8 r6 = FALSE;
|
||||
@@ -507,12 +507,13 @@ static void sub_80B5810(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
// Creates a transparent clone of the target which drifts up and away to the side
|
||||
void AnimTask_NightmareClone(u8 taskId)
|
||||
{
|
||||
struct Task *task;
|
||||
|
||||
task = &gTasks[taskId];
|
||||
task->data[0] = CloneBattlerSpriteWithBlend(1);
|
||||
task->data[0] = CloneBattlerSpriteWithBlend(ANIM_TARGET);
|
||||
if (task->data[0] < 0)
|
||||
{
|
||||
DestroyAnimVisualTask(taskId);
|
||||
@@ -539,10 +540,10 @@ void AnimTask_NightmareClone(u8 taskId)
|
||||
gSprites[task->data[0]].data[4] = 0;
|
||||
StoreSpriteCallbackInData6(&gSprites[task->data[0]], SpriteCallbackDummy);
|
||||
gSprites[task->data[0]].callback = TranslateSpriteLinearFixedPoint;
|
||||
task->func = sub_80B59D4;
|
||||
task->func = AnimTask_NightmareClone_Step;
|
||||
}
|
||||
|
||||
static void sub_80B59D4(u8 taskId)
|
||||
static void AnimTask_NightmareClone_Step(u8 taskId)
|
||||
{
|
||||
struct Task *task;
|
||||
|
||||
@@ -579,17 +580,18 @@ static void sub_80B59D4(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
// Creates a blended copy of the target that wavers in front of them
|
||||
void AnimTask_SpiteTargetShadow(u8 taskId)
|
||||
{
|
||||
struct Task *task;
|
||||
|
||||
task = &gTasks[taskId];
|
||||
task->data[15] = 0;
|
||||
task->func = sub_80B5AD4;
|
||||
task->func = AnimTask_SpiteTargetShadow_Step1;
|
||||
task->func(taskId);
|
||||
}
|
||||
|
||||
static void sub_80B5AD4(u8 taskId)
|
||||
static void AnimTask_SpiteTargetShadow_Step1(u8 taskId)
|
||||
{
|
||||
s16 startLine;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
@@ -670,7 +672,7 @@ static void sub_80B5AD4(u8 taskId)
|
||||
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON);
|
||||
else
|
||||
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
|
||||
task->func = sub_80B5D38;
|
||||
task->func = AnimTask_SpiteTargetShadow_Step2;
|
||||
++task->data[15];
|
||||
break;
|
||||
default:
|
||||
@@ -679,7 +681,7 @@ static void sub_80B5AD4(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B5D38(u8 taskId)
|
||||
static void AnimTask_SpiteTargetShadow_Step2(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -693,12 +695,12 @@ static void sub_80B5D38(u8 taskId)
|
||||
if (task->data[1] == 128)
|
||||
{
|
||||
task->data[15] = 0;
|
||||
task->func = sub_80B5DCC;
|
||||
task->func = AnimTask_SpiteTargetShadow_Step3;
|
||||
task->func(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B5DCC(u8 taskId)
|
||||
static void AnimTask_SpiteTargetShadow_Step3(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
u8 rank = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget);
|
||||
@@ -740,17 +742,17 @@ static void AnimDestinyBondWhiteShadow(struct Sprite *sprite)
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
battler1X = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
battler1Y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 28;
|
||||
battler2X = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
battler2Y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 28;
|
||||
battler1X = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
|
||||
battler1Y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 28;
|
||||
battler2X = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
|
||||
battler2Y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 28;
|
||||
}
|
||||
else
|
||||
{
|
||||
battler1X = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
battler1Y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 28;
|
||||
battler2X = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
battler2Y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 28;
|
||||
battler1X = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
|
||||
battler1Y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 28;
|
||||
battler2X = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
|
||||
battler2Y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 28;
|
||||
}
|
||||
yDiff = battler2Y - battler1Y;
|
||||
sprite->data[0] = battler1X * 16;
|
||||
@@ -764,11 +766,11 @@ static void AnimDestinyBondWhiteShadow(struct Sprite *sprite)
|
||||
sprite->oam.priority = 2;
|
||||
sprite->x = battler1X;
|
||||
sprite->y = battler1Y;
|
||||
sprite->callback = sub_80B5FE0;
|
||||
sprite->callback = AnimDestinyBondWhiteShadow_Step;
|
||||
sprite->invisible = TRUE;
|
||||
}
|
||||
|
||||
static void sub_80B5FE0(struct Sprite *sprite)
|
||||
static void AnimDestinyBondWhiteShadow_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[4])
|
||||
{
|
||||
@@ -798,11 +800,11 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId)
|
||||
task->data[8] = 0;
|
||||
task->data[9] = 16;
|
||||
task->data[10] = gBattleAnimArgs[0];
|
||||
baseX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
baseX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
baseY = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_BOTTOM);
|
||||
if (!IsContest())
|
||||
{
|
||||
for (battler = 0; battler < 4; ++battler)
|
||||
for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler)
|
||||
{
|
||||
if (battler != gBattleAnimAttacker
|
||||
&& battler != (gBattleAnimAttacker ^ 2)
|
||||
@@ -811,7 +813,7 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId)
|
||||
spriteId = CreateSprite(&gDestinyBondWhiteShadowSpriteTemplate, baseX, baseY, 55);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
x = GetBattlerSpriteCoord(battler, 2);
|
||||
x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2);
|
||||
y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_BOTTOM);
|
||||
gSprites[spriteId].data[0] = baseX << 4;
|
||||
gSprites[spriteId].data[1] = baseY << 4;
|
||||
@@ -820,7 +822,7 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId)
|
||||
gSprites[spriteId].data[4] = gBattleAnimArgs[1];
|
||||
gSprites[spriteId].data[5] = x;
|
||||
gSprites[spriteId].data[6] = y;
|
||||
gSprites[spriteId].callback = sub_80B5FE0;
|
||||
gSprites[spriteId].callback = AnimDestinyBondWhiteShadow_Step;
|
||||
task->data[task->data[12] + 13] = spriteId;
|
||||
++task->data[12];
|
||||
}
|
||||
@@ -841,15 +843,15 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId)
|
||||
gSprites[spriteId].data[4] = gBattleAnimArgs[1];
|
||||
gSprites[spriteId].data[5] = x;
|
||||
gSprites[spriteId].data[6] = y;
|
||||
gSprites[spriteId].callback = sub_80B5FE0;
|
||||
gSprites[spriteId].callback = AnimDestinyBondWhiteShadow_Step;
|
||||
task->data[13] = spriteId;
|
||||
task->data[12] = 1;
|
||||
}
|
||||
}
|
||||
task->func = sub_80B623C;
|
||||
task->func = AnimTask_DestinyBondWhiteShadow_Step;
|
||||
}
|
||||
|
||||
static void sub_80B623C(u8 taskId)
|
||||
static void AnimTask_DestinyBondWhiteShadow_Step(u8 taskId)
|
||||
{
|
||||
u16 i;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
@@ -933,7 +935,7 @@ void AnimTask_CurseStretchingBlackBg(u8 taskId)
|
||||
SetGpuReg(REG_OFFSET_WINOUT, ((WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ) |
|
||||
(WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR)));
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_DARKEN));
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0x10);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 16);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER || IsContest())
|
||||
startX = 40;
|
||||
else
|
||||
@@ -951,10 +953,10 @@ void AnimTask_CurseStretchingBlackBg(u8 taskId)
|
||||
gTasks[taskId].data[4] = bottomDistance;
|
||||
gTasks[taskId].data[5] = startX;
|
||||
gTasks[taskId].data[6] = startY;
|
||||
gTasks[taskId].func = sub_80B6468;
|
||||
gTasks[taskId].func = AnimTask_CurseStretchingBlackBg_Step1;
|
||||
}
|
||||
|
||||
static void sub_80B6468(u8 taskId)
|
||||
static void AnimTask_CurseStretchingBlackBg_Step1(u8 taskId)
|
||||
{
|
||||
s16 step, leftDistance, rightDistance, topDistance, bottomDistance, startX, startY;
|
||||
u16 left, right, top, bottom, selectedPalettes;
|
||||
@@ -980,15 +982,15 @@ static void sub_80B6468(u8 taskId)
|
||||
right = 240;
|
||||
top = 0;
|
||||
bottom = 112;
|
||||
selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0);
|
||||
selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE);
|
||||
BeginNormalPaletteFade(selectedPalettes, 0, 16, 16, RGB(0, 0, 0));
|
||||
gTasks[taskId].func = sub_80B65F0;
|
||||
gTasks[taskId].func = AnimTask_CurseStretchingBlackBg_Step2;
|
||||
}
|
||||
gBattle_WIN0H = WIN_RANGE(left, right);
|
||||
gBattle_WIN0V = WIN_RANGE(top, bottom);
|
||||
}
|
||||
|
||||
static void sub_80B65F0(u8 taskId)
|
||||
static void AnimTask_CurseStretchingBlackBg_Step2(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
@@ -1023,10 +1025,10 @@ static void AnimCurseNail(struct Sprite *sprite)
|
||||
sprite->x += xDelta;
|
||||
sprite->data[1] = xDelta2;
|
||||
sprite->data[0] = 60;
|
||||
sprite->callback = sub_80B66A8;
|
||||
sprite->callback = AnimCurseNail_Step1;
|
||||
}
|
||||
|
||||
static void sub_80B66A8(struct Sprite *sprite)
|
||||
static void AnimCurseNail_Step1(struct Sprite *sprite)
|
||||
{
|
||||
u16 var0;
|
||||
|
||||
@@ -1047,7 +1049,7 @@ static void sub_80B66A8(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = 30;
|
||||
sprite->callback = WaitAnimForDuration;
|
||||
StoreSpriteCallbackInData6(sprite, sub_80B6728);
|
||||
StoreSpriteCallbackInData6(sprite, AnimCurseNail_Step2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1057,7 +1059,7 @@ static void sub_80B66A8(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B6728(struct Sprite *sprite)
|
||||
static void AnimCurseNail_Step2(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
@@ -1079,12 +1081,12 @@ static void sub_80B6728(struct Sprite *sprite)
|
||||
if (sprite->data[2] == 16)
|
||||
{
|
||||
sprite->invisible = TRUE;
|
||||
sprite->callback = sub_80B67A0;
|
||||
sprite->callback = AnimCurseNail_End;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B67A0(struct Sprite *sprite)
|
||||
static void AnimCurseNail_End(struct Sprite *sprite)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
@@ -1125,12 +1127,12 @@ static void AnimGhostStatusSprite(struct Sprite *sprite)
|
||||
if (coeffB == 16 && coeffA == 0)
|
||||
{
|
||||
sprite->invisible = TRUE;
|
||||
sprite->callback = sub_80B68A8;
|
||||
sprite->callback = AnimGhostStatusSprite_End;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B68A8(struct Sprite *sprite)
|
||||
static void AnimGhostStatusSprite_End(struct Sprite *sprite)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
@@ -1143,7 +1145,7 @@ void AnimTask_GrudgeFlames(u8 taskId)
|
||||
|
||||
task->data[0] = 0;
|
||||
task->data[1] = 16;
|
||||
task->data[9] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
task->data[9] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
task->data[10] = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
|
||||
task->data[11] = (GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_WIDTH) / 2) + 8;
|
||||
task->data[7] = 0;
|
||||
@@ -1154,10 +1156,10 @@ void AnimTask_GrudgeFlames(u8 taskId)
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10));
|
||||
task->data[8] = 0;
|
||||
task->func = sub_80B696C;
|
||||
task->func = AnimTask_GrudgeFlames_Step;
|
||||
}
|
||||
|
||||
static void sub_80B696C(u8 taskId)
|
||||
static void AnimTask_GrudgeFlames_Step(u8 taskId)
|
||||
{
|
||||
u16 i;
|
||||
u8 spriteId;
|
||||
@@ -1447,7 +1449,7 @@ static void sub_80B6FC4(u8 taskId)
|
||||
++task->data[15];
|
||||
}
|
||||
|
||||
static void sub_80B7158(struct Sprite *sprite)
|
||||
static void AnimMonMoveCircular(struct Sprite *sprite)
|
||||
{
|
||||
sprite->invisible = TRUE;
|
||||
sprite->data[5] = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
@@ -1455,11 +1457,11 @@ static void sub_80B7158(struct Sprite *sprite)
|
||||
sprite->data[1] = 10;
|
||||
sprite->data[2] = gBattleAnimArgs[0];
|
||||
sprite->data[3] = gBattleAnimArgs[1];
|
||||
sprite->callback = sub_80B71B0;
|
||||
sprite->callback = AnimMonMoveCircular_Step;
|
||||
gSprites[sprite->data[5]].y += 8;
|
||||
}
|
||||
|
||||
static void sub_80B71B0(struct Sprite *sprite)
|
||||
static void AnimMonMoveCircular_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[3])
|
||||
{
|
||||
|
||||
@@ -307,7 +307,7 @@ static void sub_80DD4D4(u8 taskId)
|
||||
gTasks[taskId].data[11] = panIncrement + oldPan;
|
||||
gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11], oldPan);
|
||||
}
|
||||
gUnknown_2037F24 = gTasks[taskId].data[11];
|
||||
gAnimCustomPanning = gTasks[taskId].data[11];
|
||||
if (gTasks[taskId].data[11] == gTasks[taskId].data[2])
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user