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.c88
1 files changed, 47 insertions, 41 deletions
diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c
index 0c3d4ea47..3e86f31f7 100644
--- a/src/battle_anim_mons.c
+++ b/src/battle_anim_mons.c
@@ -21,15 +21,15 @@
extern const struct OamData gOamData_AffineNormal_ObjNormal_64x64;
static void sub_80A6FB4(struct Sprite *sprite);
-static void sub_80A7144(struct Sprite *sprite);
+static void AnimFastTranslateLinearWaitEnd(struct Sprite *sprite);
static void AnimThrowProjectile_Step(struct Sprite *sprite);
static void sub_80A8DFC(struct Sprite *sprite);
-static void sub_80A8E88(struct Sprite *sprite);
+static void AnimWeatherBallUp_Step(struct Sprite *sprite);
static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId);
static void AnimTask_BlendPalInAndOutSetup(struct Task *task);
-static void sub_80A7AFC(u8 taskId);
-static void sub_80A8CAC(u8 taskId);
-static void AnimTask_BlendMonInAndOutStep(u8 taskId);
+static void AnimTask_AlphaFadeIn_Step(u8 taskId);
+static void AnimTask_AttackerPunchWithTrace_Step(u8 taskId);
+static void AnimTask_BlendMonInAndOut_Step(u8 taskId);
static bool8 sub_80A7238(void);
static void sub_80A8D78(struct Task *task, u8 taskId);
@@ -79,11 +79,15 @@ static const u8 sCastformBackSpriteYCoords[] =
0, // HAIL
};
-static const struct SpriteTemplate sUnknown_08525F90[] =
+// Placeholders for pokemon sprites to be created for a move animation effect (e.g. Role Play / Snatch)
+#define TAG_MOVE_EFFECT_MON_1 55125
+#define TAG_MOVE_EFFECT_MON_2 55126
+
+static const struct SpriteTemplate sSpriteTemplate_MoveEffectMons[] =
{
{
- .tileTag = 55125,
- .paletteTag = 55125,
+ .tileTag = TAG_MOVE_EFFECT_MON_1,
+ .paletteTag = TAG_MOVE_EFFECT_MON_1,
.oam = &gOamData_AffineNormal_ObjNormal_64x64,
.anims = gDummySpriteAnimTable,
.images = NULL,
@@ -91,8 +95,8 @@ static const struct SpriteTemplate sUnknown_08525F90[] =
.callback = SpriteCallbackDummy,
},
{
- .tileTag = 55126,
- .paletteTag = 55126,
+ .tileTag = TAG_MOVE_EFFECT_MON_2,
+ .paletteTag = TAG_MOVE_EFFECT_MON_2,
.oam = &gOamData_AffineNormal_ObjNormal_64x64,
.anims = gDummySpriteAnimTable,
.images = NULL,
@@ -101,10 +105,10 @@ static const struct SpriteTemplate sUnknown_08525F90[] =
}
};
-static const struct SpriteSheet sUnknown_08525FC0[] =
+static const struct SpriteSheet sSpriteSheet_MoveEffectMons[] =
{
- { gMiscBlank_Gfx, 0x800, 55125, },
- { gMiscBlank_Gfx, 0x800, 55126, },
+ { gMiscBlank_Gfx, 0x800, TAG_MOVE_EFFECT_MON_1, },
+ { gMiscBlank_Gfx, 0x800, TAG_MOVE_EFFECT_MON_2, },
};
u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType)
@@ -1032,7 +1036,7 @@ void StartAnimLinearTranslation(struct Sprite *sprite)
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
InitAnimLinearTranslation(sprite);
- sprite->callback = sub_80A6F98;
+ sprite->callback = AnimTranslateLinear_WaitEnd;
sprite->callback(sprite);
}
@@ -1075,7 +1079,7 @@ bool8 AnimTranslateLinear(struct Sprite *sprite)
return FALSE;
}
-void sub_80A6F98(struct Sprite *sprite)
+void AnimTranslateLinear_WaitEnd(struct Sprite *sprite)
{
if (AnimTranslateLinear(sprite))
SetCallbackToStoredInData6(sprite);
@@ -1088,19 +1092,19 @@ static void sub_80A6FB4(struct Sprite *sprite)
SetCallbackToStoredInData6(sprite);
}
-void sub_80A6FD4(struct Sprite *sprite)
+void InitAnimLinearTranslationWithSpeed(struct Sprite *sprite)
{
int v1 = abs(sprite->data[2] - sprite->data[1]) << 8;
sprite->data[0] = v1 / sprite->data[0];
InitAnimLinearTranslation(sprite);
}
-void sub_80A7000(struct Sprite *sprite)
+void InitAnimLinearTranslationWithSpeedAndPos(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
- sub_80A6FD4(sprite);
- sprite->callback = sub_80A6F98;
+ InitAnimLinearTranslationWithSpeed(sprite);
+ sprite->callback = AnimTranslateLinear_WaitEnd;
sprite->callback(sprite);
}
@@ -1137,7 +1141,7 @@ void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite)
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
InitAnimFastLinearTranslation(sprite);
- sprite->callback = sub_80A7144;
+ sprite->callback = AnimFastTranslateLinearWaitEnd;
sprite->callback(sprite);
}
@@ -1171,7 +1175,7 @@ bool8 AnimFastTranslateLinear(struct Sprite *sprite)
return FALSE;
}
-static void sub_80A7144(struct Sprite *sprite)
+static void AnimFastTranslateLinearWaitEnd(struct Sprite *sprite)
{
if (AnimFastTranslateLinear(sprite))
SetCallbackToStoredInData6(sprite);
@@ -1184,12 +1188,12 @@ void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite)
InitAnimFastLinearTranslation(sprite);
}
-void sub_80A718C(struct Sprite *sprite)
+void InitAnimFastLinearTranslationWithSpeedAndPos(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
InitAnimFastLinearTranslationWithSpeed(sprite);
- sprite->callback = sub_80A7144;
+ sprite->callback = AnimFastTranslateLinearWaitEnd;
sprite->callback(sprite);
}
@@ -1438,9 +1442,10 @@ u32 sub_80A76C4(u8 a1, u8 a2, u8 a3, u8 a4)
return var;
}
-u8 sub_80A77AC(u8 a1)
+// Presumably something commented here, just returns arg
+u8 AnimDummyReturnArg(u8 battler)
{
- return a1;
+ return battler;
}
static u8 GetBattlerAtPosition_(u8 position)
@@ -1611,10 +1616,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_80A7AFC;
+ gTasks[taskId].func = AnimTask_AlphaFadeIn_Step;
}
-static void sub_80A7AFC(u8 taskId)
+static void AnimTask_AlphaFadeIn_Step(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -1668,10 +1673,10 @@ static void AnimTask_BlendPalInAndOutSetup(struct Task *task)
task->data[5] = gBattleAnimArgs[3];
task->data[6] = 0;
task->data[7] = gBattleAnimArgs[4];
- task->func = AnimTask_BlendMonInAndOutStep;
+ task->func = AnimTask_BlendMonInAndOut_Step;
}
-static void AnimTask_BlendMonInAndOutStep(u8 taskId)
+static void AnimTask_BlendMonInAndOut_Step(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -2021,18 +2026,19 @@ u8 GetBattlerSpriteBGPriorityRank(u8 battlerId)
return 1;
}
-u8 sub_80A8394(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 a10)
+// Create pokemon sprite to be used for a move animation effect (e.g. Role Play / Snatch)
+u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, bool32 ignoreDeoxysForm)
{
u8 spriteId;
- u16 sheet = LoadSpriteSheet(&sUnknown_08525FC0[a3]);
- u16 palette = AllocSpritePalette(sUnknown_08525F90[a3].paletteTag);
+ u16 sheet = LoadSpriteSheet(&sSpriteSheet_MoveEffectMons[id]);
+ u16 palette = AllocSpritePalette(sSpriteTemplate_MoveEffectMons[id].paletteTag);
if (gMonSpritesGfxPtr != NULL && gMonSpritesGfxPtr->buffer == NULL)
gMonSpritesGfxPtr->buffer = AllocZeroed(0x2000);
if (!isBackpic)
{
LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
- if (a10 == 1 || sub_80688F8(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
+ if (ignoreDeoxysForm == TRUE || ShouldIgnoreDeoxysForm(5, battlerId) == TRUE || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
LoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species],
gMonSpritesGfxPtr->buffer,
species,
@@ -2048,7 +2054,7 @@ u8 sub_80A8394(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 || sub_80688F8(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
+ if (ignoreDeoxysForm == TRUE || ShouldIgnoreDeoxysForm(5, battlerId) == TRUE || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
LoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species],
gMonSpritesGfxPtr->buffer,
species,
@@ -2066,9 +2072,9 @@ u8 sub_80A8394(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority
FREE_AND_SET_NULL(gMonSpritesGfxPtr->buffer);
if (!isBackpic)
- spriteId = CreateSprite(&sUnknown_08525F90[a3], x, y + gMonFrontPicCoords[species].y_offset, subpriority);
+ spriteId = CreateSprite(&sSpriteTemplate_MoveEffectMons[id], x, y + gMonFrontPicCoords[species].y_offset, subpriority);
else
- spriteId = CreateSprite(&sUnknown_08525F90[a3], x, y + gMonBackPicCoords[species].y_offset, subpriority);
+ spriteId = CreateSprite(&sSpriteTemplate_MoveEffectMons[id], x, y + gMonBackPicCoords[species].y_offset, subpriority);
if (IsContest())
{
@@ -2337,7 +2343,7 @@ void AnimTask_AttackerPunchWithTrace(u8 taskId)
task->data[2] = 0;
task->data[3] = 0;
gSprites[task->data[0]].pos2.x -= task->data[0];
- task->data[4] = AllocSpritePalette(10097);
+ task->data[4] = AllocSpritePalette(ANIM_TAG_BENT_SPOON);
task->data[5] = 0;
dest = (task->data[4] + 0x10) * 0x10;
@@ -2349,10 +2355,10 @@ 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_80A8CAC;
+ task->func = AnimTask_AttackerPunchWithTrace_Step;
}
-static void sub_80A8CAC(u8 taskId)
+static void AnimTask_AttackerPunchWithTrace_Step(u8 taskId)
{
struct Task *task = &gTasks[taskId];
switch (task->data[2])
@@ -2419,10 +2425,10 @@ void AnimWeatherBallUp(struct Sprite *sprite)
else
sprite->data[0] = -10;
sprite->data[1] = -40;
- sprite->callback = sub_80A8E88;
+ sprite->callback = AnimWeatherBallUp_Step;
}
-static void sub_80A8E88(struct Sprite *sprite)
+static void AnimWeatherBallUp_Step(struct Sprite *sprite)
{
sprite->data[2] += sprite->data[0];
sprite->data[3] += sprite->data[1];