summaryrefslogtreecommitdiff
path: root/src/battle_anim_mons.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle_anim_mons.c')
-rw-r--r--src/battle_anim_mons.c128
1 files changed, 68 insertions, 60 deletions
diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c
index 46f62a03c..c47a29976 100644
--- a/src/battle_anim_mons.c
+++ b/src/battle_anim_mons.c
@@ -23,17 +23,17 @@ static void PlayerThrowBall_RunLinearTranslation_ThenceSetCBtoStoredInData6(stru
static void SpriteCB_RunAnimFastLinearTranslation(struct Sprite *sprite);
static bool8 Dummy_ReturnFalse(void);
static void AnimThrowProjectile_Step(struct Sprite *sprite);
-static void sub_80760D0(u8 taskId);
+static void AnimTask_AlphaFadeIn_Step(u8 taskId);
static void AnimTask_BlendMonInAndOutSetup(struct Task *task);
static void AnimTask_BlendMonInAndOutStep(u8 taskId);
static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId);
-static void sub_8077118(u8 taskId);
-static void sub_80771E4(struct Task *task, u8 taskId);
-static void sub_8077268(struct Sprite *sprite);
-static void sub_80772F4(struct Sprite *sprite);
+static void AnimTask_AttackerPunchWithTrace_Step(u8 taskId);
+static void PunchAnim_CreateTraceSprite(struct Task *task, u8 taskId);
+static void SpriteCB_PunchTrace(struct Sprite *sprite);
+static void SpriteCB_WeatherBallUp_Step(struct Sprite *sprite);
static EWRAM_DATA union AffineAnimCmd *sAnimTaskAffineAnim = NULL;
-static EWRAM_DATA u32 gUnknown_2037F2C = 0; // not used
+UNUSED static EWRAM_DATA u32 gUnknown_2037F2C = 0; // not used
static const struct UCoords8 sBattlerCoords[][4] =
{
@@ -77,11 +77,11 @@ static const u8 sCastformBackSpriteYCoords[] =
0, // HAIL
};
-static const struct SpriteTemplate gUnknown_83AE054[] =
+static const struct SpriteTemplate sSpriteTemplates_AdditionalForAnim[] =
{
{
- .tileTag = 0xD755,
- .paletteTag = 0xD755,
+ .tileTag = 55125,
+ .paletteTag = 55125,
.oam = &gOamData_AffineNormal_ObjNormal_64x64,
.anims = gDummySpriteAnimTable,
.images = NULL,
@@ -89,8 +89,8 @@ static const struct SpriteTemplate gUnknown_83AE054[] =
.callback = SpriteCallbackDummy,
},
{
- .tileTag = 0xD756,
- .paletteTag = 0xD756,
+ .tileTag = 55126,
+ .paletteTag = 55126,
.oam = &gOamData_AffineNormal_ObjNormal_64x64,
.anims = gDummySpriteAnimTable,
.images = NULL,
@@ -99,10 +99,10 @@ static const struct SpriteTemplate gUnknown_83AE054[] =
}
};
-static const struct SpriteSheet gUnknown_83AE084[] =
+static const struct SpriteSheet sMoveAnimAdtlSprSheets[] =
{
- { gMiscBlank_Gfx, 0x800, 0xD755 },
- { gMiscBlank_Gfx, 0x800, 0xD756 },
+ { gMiscBlank_Gfx, 0x800, 55125 },
+ { gMiscBlank_Gfx, 0x800, 55126 }, // unused
};
u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType)
@@ -390,6 +390,8 @@ static void SetCallbackToStoredInData6(struct Sprite *sprite)
sprite->callback = (SpriteCallback)callback;
}
+// x = a * sin(theta0 + dtheta * t)
+// y = a * cos(theta0 + dtheta * t)
void TranslateSpriteInCircleOverDuration(struct Sprite *sprite)
{
if (sprite->data[3])
@@ -409,6 +411,8 @@ void TranslateSpriteInCircleOverDuration(struct Sprite *sprite)
}
}
+// x = (a0 + da * t) * sin(theta0 + dtheta * t)
+// y = (a0 + da * t) * cos(theta0 + dtheta * t)
void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite)
{
if (sprite->data[3])
@@ -430,7 +434,9 @@ void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite)
}
// not used
-static void sub_8074B5C(struct Sprite *sprite)
+// x = alpl * sin(alpha0 + dalpha * t)
+// y = ampl * cos(beta0 + dbeta * t)
+static void TranslateSpriteInLissajousCurveOverDuration(struct Sprite *sprite)
{
if (sprite->data[3])
{
@@ -454,6 +460,8 @@ static void sub_8074B5C(struct Sprite *sprite)
}
}
+// x = a * sin(theta0 + dtheta * t)
+// y = b * cos(theta0 + dtheta * t)
void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite)
{
if (sprite->data[3])
@@ -484,14 +492,14 @@ void WaitAnimForDuration(struct Sprite *sprite)
SetCallbackToStoredInData6(sprite);
}
-static void sub_8074C64(struct Sprite *sprite)
+static void SetupAndStartSpriteLinearTranslation(struct Sprite *sprite)
{
- sub_8074C80(sprite);
+ SetupLinearTranslationWithFixedDuration(sprite);
sprite->callback = TranslateSpriteLinear;
sprite->callback(sprite);
}
-void sub_8074C80(struct Sprite *sprite)
+void SetupLinearTranslationWithFixedDuration(struct Sprite *sprite)
{
s16 old;
s32 xDiff;
@@ -554,13 +562,13 @@ static void TranslateSpriteLinearFixedPointIconFrame(struct Sprite *sprite)
}
// not used
-static void sub_8074D80(struct Sprite *sprite)
+static void SetupAndStartSpriteLinearTranslationToTarget(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x + sprite->pos2.x;
sprite->data[3] = sprite->pos1.y + sprite->pos2.y;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
- sprite->callback = sub_8074C64;
+ sprite->callback = SetupAndStartSpriteLinearTranslation;
}
void TranslateMonSpriteLinear(struct Sprite *sprite)
@@ -621,17 +629,17 @@ void DestroySpriteAndMatrix(struct Sprite *sprite)
}
// not used
-static void sub_8074EF4(struct Sprite *sprite)
+static void SetupAndStartSpriteLinearTranslationToAttacker(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x + sprite->pos2.x;
sprite->data[3] = sprite->pos1.y + sprite->pos2.y;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
- sprite->callback = sub_8074C64;
+ sprite->callback = SetupAndStartSpriteLinearTranslation;
}
// not used
-static void sub_8074F38(struct Sprite *sprite)
+static void SpriteResetPaletteStructAndDestroy(struct Sprite *sprite)
{
ResetPaletteStructByUid(sprite->data[5]);
DestroySpriteAndMatrix(sprite);
@@ -1094,7 +1102,7 @@ void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite)
InitAnimFastLinearTranslation(sprite);
}
-void sub_8075830(struct Sprite *sprite)
+void InitAndStartAnimFastLinearTranslationWithSpeed(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
@@ -1188,7 +1196,7 @@ void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 x
}
}
-void sub_8075AD8(struct Sprite *sprite)
+void TryResetSpriteAffineState(struct Sprite *sprite)
{
TrySetSpriteRotScale(sprite, TRUE, 0x100, 0x100, 0);
sprite->affineAnimPaused = FALSE;
@@ -1487,10 +1495,10 @@ void AnimTask_AlphaFadeIn(u8 taskId)
gTasks[taskId].data[7] = gBattleAnimArgs[2];
gTasks[taskId].data[8] = gBattleAnimArgs[3];
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gBattleAnimArgs[0], gBattleAnimArgs[1]));
- gTasks[taskId].func = sub_80760D0;
+ gTasks[taskId].func = AnimTask_AlphaFadeIn_Step;
}
-static void sub_80760D0(u8 taskId)
+static void AnimTask_AlphaFadeIn_Step(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -1750,19 +1758,19 @@ void *LoadPointerFromVars(s16 lo, s16 hi)
return (void *)((u16)lo | ((u16)hi << 16));
}
-void sub_80765D4(struct Task *task, u8 spriteId, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7)
+void BattleAnimHelper_SetSpriteSquashParams(struct Task *task, u8 spriteId, s16 xScale0, s16 yScale0, s16 xScale1, s16 yScale1, u16 duration)
{
- task->data[8] = a7;
+ task->data[8] = duration;
task->data[15] = spriteId;
- task->data[9] = a3;
- task->data[10] = a4;
- task->data[13] = a5;
- task->data[14] = a6;
- task->data[11] = (a5 - a3) / a7;
- task->data[12] = (a6 - a4) / a7;
+ task->data[9] = xScale0;
+ task->data[10] = yScale0;
+ task->data[13] = xScale1;
+ task->data[14] = yScale1;
+ task->data[11] = (xScale1 - xScale0) / duration;
+ task->data[12] = (yScale1 - yScale0) / duration;
}
-u8 sub_8076640(struct Task *task)
+u8 BattleAnimHelper_RunSpriteSquash(struct Task *task)
{
if (!task->data[8])
return 0;
@@ -1801,7 +1809,7 @@ void AnimTask_GetFrustrationPowerLevel(u8 taskId)
}
// not used
-static void sub_80766EC(u8 priority)
+static void SetOamPriorityOfAllVisibleBattlers(u8 priority)
{
if (IsBattlerSpriteVisible(gBattleAnimTarget))
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].oam.priority = priority;
@@ -1813,7 +1821,7 @@ static void sub_80766EC(u8 priority)
gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority = priority;
}
-void sub_80767F0(void)
+void ResetSpritePriorityOfAllVisibleBattlers(void)
{
s32 i;
@@ -1863,18 +1871,18 @@ u8 GetBattlerSpriteBGPriorityRank(u8 battlerId)
return 1;
}
-u8 sub_80768D0(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 a10)
+u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 templateId, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, bool32 ignoreDeoxys)
{
u8 spriteId;
- u16 sheet = LoadSpriteSheet(&gUnknown_83AE084[a3]);
- u16 palette = AllocSpritePalette(gUnknown_83AE054[a3].paletteTag);
+ u16 sheet = LoadSpriteSheet(&sMoveAnimAdtlSprSheets[templateId]);
+ u16 palette = AllocSpritePalette(sSpriteTemplates_AdditionalForAnim[templateId].paletteTag);
if (gMonSpritesGfxPtr != NULL && gMonSpritesGfxPtr->multiUseBuffer == NULL)
gMonSpritesGfxPtr->multiUseBuffer = AllocZeroed(0x2000);
if (!isBackpic)
{
LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
- if (a10 == 1 || ShouldIgnoreDeoxysForm(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
+ if (ignoreDeoxys == TRUE || ShouldIgnoreDeoxysForm(DEOXYS_CHECK_BATTLE_ANIM, battlerId) == TRUE || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
LoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species],
gMonSpritesGfxPtr->multiUseBuffer,
species,
@@ -1890,7 +1898,7 @@ u8 sub_80768D0(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority
else
{
LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
- if (a10 == 1 || ShouldIgnoreDeoxysForm(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
+ if (ignoreDeoxys == TRUE || ShouldIgnoreDeoxysForm(DEOXYS_CHECK_BATTLE_ANIM, battlerId) == TRUE || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
LoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species],
gMonSpritesGfxPtr->multiUseBuffer,
species,
@@ -1906,9 +1914,9 @@ u8 sub_80768D0(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority
RequestDma3Copy(gMonSpritesGfxPtr->multiUseBuffer, (void *)(OBJ_VRAM0 + (sheet * 0x20)), 0x800, 1);
FREE_AND_SET_NULL(gMonSpritesGfxPtr->multiUseBuffer);
if (!isBackpic)
- spriteId = CreateSprite(&gUnknown_83AE054[a3], x, y + gMonFrontPicCoords[species].y_offset, subpriority);
+ spriteId = CreateSprite(&sSpriteTemplates_AdditionalForAnim[templateId], x, y + gMonFrontPicCoords[species].y_offset, subpriority);
else
- spriteId = CreateSprite(&gUnknown_83AE054[a3], x, y + gMonBackPicCoords[species].y_offset, subpriority);
+ spriteId = CreateSprite(&sSpriteTemplates_AdditionalForAnim[templateId], x, y + gMonBackPicCoords[species].y_offset, subpriority);
return spriteId;
}
@@ -2048,20 +2056,20 @@ void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x
*y = (battlerY + partnerY) / 2;
}
-u8 sub_8076E34(s32 battlerId, u8 spriteId, s32 species)
+u8 CreateCloneOfSpriteInWindowMode(s32 battlerId, u8 spriteId, s32 species)
{
u8 newSpriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
gSprites[newSpriteId] = gSprites[spriteId];
gSprites[newSpriteId].usingSheet = TRUE;
gSprites[newSpriteId].oam.priority = 0;
- gSprites[newSpriteId].oam.objMode = 2;
+ gSprites[newSpriteId].oam.objMode = ST_OAM_OBJ_WINDOW;
gSprites[newSpriteId].oam.tileNum = gSprites[spriteId].oam.tileNum;
gSprites[newSpriteId].callback = SpriteCallbackDummy;
return newSpriteId;
}
-void sub_8076ED8(struct Sprite *sprite)
+void SpriteCB_AnimTranslateSpriteLinearAndFlicker(struct Sprite *sprite)
{
SetSpriteCoordsToAnimAttackerCoords(sprite);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
@@ -2083,7 +2091,7 @@ void sub_8076ED8(struct Sprite *sprite)
sprite->callback = TranslateSpriteLinearAndFlicker;
}
-void sub_8076F58(struct Sprite *sprite)
+void SpriteCB_AnimTranslateSpriteLinearAndFlicker2(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
@@ -2104,7 +2112,7 @@ void sub_8076F58(struct Sprite *sprite)
sprite->callback = TranslateSpriteLinearAndFlicker;
}
-void sub_8076FD0(struct Sprite *sprite)
+void SpriteCB_TrackOffsetFromAttackerAndWaitAnim(struct Sprite *sprite)
{
SetSpriteCoordsToAnimAttackerCoords(sprite);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
@@ -2138,16 +2146,16 @@ void AnimTask_AttackerPunchWithTrace(u8 taskId)
task->data[6] = 3;
CpuCopy32(&gPlttBufferUnfaded[src], &gPlttBufferFaded[dest], 0x20);
BlendPalette(dest, 16, gBattleAnimArgs[1], gBattleAnimArgs[0]);
- task->func = sub_8077118;
+ task->func = AnimTask_AttackerPunchWithTrace_Step;
}
-static void sub_8077118(u8 taskId)
+static void AnimTask_AttackerPunchWithTrace_Step(u8 taskId)
{
struct Task *task = &gTasks[taskId];
switch (task->data[2])
{
case 0:
- sub_80771E4(task, taskId);
+ PunchAnim_CreateTraceSprite(task, taskId);
gSprites[task->data[0]].pos2.x += task->data[1];
if (++task->data[3] == 5)
{
@@ -2156,7 +2164,7 @@ static void sub_8077118(u8 taskId)
}
break;
case 1:
- sub_80771E4(task, taskId);
+ PunchAnim_CreateTraceSprite(task, taskId);
gSprites[task->data[0]].pos2.x -= task->data[1];
if (--task->data[3] == 0)
{
@@ -2174,7 +2182,7 @@ static void sub_8077118(u8 taskId)
}
}
-static void sub_80771E4(struct Task *task, u8 taskId)
+static void PunchAnim_CreateTraceSprite(struct Task *task, u8 taskId)
{
s16 spriteId = CloneBattlerSpriteWithBlend(0);
@@ -2186,12 +2194,12 @@ static void sub_80771E4(struct Task *task, u8 taskId)
gSprites[spriteId].data[1] = taskId;
gSprites[spriteId].data[2] = spriteId;
gSprites[spriteId].pos2.x = gSprites[task->data[0]].pos2.x;
- gSprites[spriteId].callback = sub_8077268;
+ gSprites[spriteId].callback = SpriteCB_PunchTrace;
++task->data[5];
}
}
-static void sub_8077268(struct Sprite *sprite)
+static void SpriteCB_PunchTrace(struct Sprite *sprite)
{
if (--sprite->data[0] == 0)
{
@@ -2200,7 +2208,7 @@ static void sub_8077268(struct Sprite *sprite)
}
}
-void sub_807729C(struct Sprite *sprite)
+void SpriteCB_WeatherBallUp(struct Sprite *sprite)
{
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
@@ -2209,10 +2217,10 @@ void sub_807729C(struct Sprite *sprite)
else
sprite->data[0] = -10;
sprite->data[1] = -40;
- sprite->callback = sub_80772F4;
+ sprite->callback = SpriteCB_WeatherBallUp_Step;
}
-static void sub_80772F4(struct Sprite *sprite)
+static void SpriteCB_WeatherBallUp_Step(struct Sprite *sprite)
{
sprite->data[2] += sprite->data[0];
sprite->data[3] += sprite->data[1];