summaryrefslogtreecommitdiff
path: root/src/battle_anim_utility_funcs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle_anim_utility_funcs.c')
-rw-r--r--src/battle_anim_utility_funcs.c125
1 files changed, 65 insertions, 60 deletions
diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c
index eff2bc3c7..dcef7d483 100644
--- a/src/battle_anim_utility_funcs.c
+++ b/src/battle_anim_utility_funcs.c
@@ -25,18 +25,18 @@ static EWRAM_DATA struct AnimStatsChangeData *sAnimStatsChangeData = {0};
static void StartBlendAnimSpriteColor(u8, u32);
static void AnimTask_BlendSpriteColor_Step2(u8);
-static void sub_81169A0(u8);
-static void sub_81169F8(u8);
-static void sub_8116AD0(struct Sprite*);
-static void sub_8116D64(u8);
+static void AnimTask_HardwarePaletteFade_Step(u8);
+static void AnimTask_TraceMonBlended_Step(u8);
+static void AnimMonTrace(struct Sprite*);
+static void AnimTask_DrawFallingWhiteLinesOnAttacker_Step(u8);
static void sub_8116F04(u8);
static void sub_81170EC(u8);
static void sub_81172EC(u8);
-static void sub_8117500(u8);
+static void AnimTask_Flash_Step(u8);
static void sub_81175C4(u32, u16);
-static void sub_81176D8(u8);
+static void AnimTask_UpdateSlidingBg(u8);
static void sub_8117A60(u8);
-static void ExtremSpeedMoveTarget_Step(u8);
+static void AnimTask_WaitAndRestoreVisibility(u8);
const u16 gUnknown_08597418 = RGB(31, 31, 31);
@@ -45,7 +45,7 @@ const u16 gUnknown_08597418 = RGB(31, 31, 31);
const u8 gUnknown_0859741A[] = {REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT};
const u8 gUnknown_0859741E[] = {REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT};
-void sub_8116620(u8 taskId)
+void AnimTask_BlendBattleAnimPal(u8 taskId)
{
u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]);
selectedPalettes |= sub_80A76C4((gBattleAnimArgs[0] >> 7) & 1,
@@ -55,7 +55,7 @@ void sub_8116620(u8 taskId)
StartBlendAnimSpriteColor(taskId, selectedPalettes);
}
-void sub_8116664(u8 taskId)
+void AnimTask_BlendBattleAnimPalExclude(u8 taskId)
{
u8 battler;
u32 selectedPalettes;
@@ -68,13 +68,13 @@ void sub_8116664(u8 taskId)
case 2:
selectedPalettes = 0;
// fall through
- case 0:
+ case ANIM_ATTACKER:
animBattlers[0] = gBattleAnimAttacker;
break;
case 3:
selectedPalettes = 0;
// fall through
- case 1:
+ case ANIM_TARGET:
animBattlers[0] = gBattleAnimTarget;
break;
case 4:
@@ -193,7 +193,7 @@ static void AnimTask_BlendSpriteColor_Step2(u8 taskId)
}
}
-void sub_8116960(u8 taskId)
+void AnimTask_HardwarePaletteFade(u8 taskId)
{
BeginHardwarePaletteFade(
gBattleAnimArgs[0],
@@ -202,16 +202,17 @@ void sub_8116960(u8 taskId)
gBattleAnimArgs[3],
gBattleAnimArgs[4]);
- gTasks[taskId].func = sub_81169A0;
+ gTasks[taskId].func = AnimTask_HardwarePaletteFade_Step;
}
-static void sub_81169A0(u8 taskId)
+static void AnimTask_HardwarePaletteFade_Step(u8 taskId)
{
if (!gPaletteFade.active)
DestroyAnimVisualTask(taskId);
}
-void sub_81169C0(u8 taskId)
+// Used to leave blended traces of a mon, usually to imply speed as in Agility or Aerial Ace
+void AnimTask_TraceMonBlended(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -221,10 +222,10 @@ void sub_81169C0(u8 taskId)
task->data[3] = gBattleAnimArgs[2];
task->data[4] = gBattleAnimArgs[3];
task->data[5] = 0;
- task->func = sub_81169F8;
+ task->func = AnimTask_TraceMonBlended_Step;
}
-static void sub_81169F8(u8 taskId)
+static void AnimTask_TraceMonBlended_Step(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -243,7 +244,7 @@ static void sub_81169F8(u8 taskId)
gSprites[task->data[6]].data[0] = task->data[3];
gSprites[task->data[6]].data[1] = taskId;
gSprites[task->data[6]].data[2] = 5;
- gSprites[task->data[6]].callback = sub_8116AD0;
+ gSprites[task->data[6]].callback = AnimMonTrace;
task->data[5]++;
}
@@ -257,7 +258,7 @@ static void sub_81169F8(u8 taskId)
}
}
-static void sub_8116AD0(struct Sprite *sprite)
+static void AnimMonTrace(struct Sprite *sprite)
{
if (sprite->data[0])
{
@@ -270,7 +271,8 @@ static void sub_8116AD0(struct Sprite *sprite)
}
}
-void sub_8116B14(u8 taskId)
+// Only used by Curse for non-Ghost mons
+void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId)
{
u16 species;
int spriteId, newSpriteId;
@@ -326,10 +328,10 @@ void sub_8116B14(u8 taskId)
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
}
- spriteId = GetAnimBattlerSpriteId(0);
+ spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
newSpriteId = sub_80A89C8(gBattleAnimAttacker, spriteId, species);
sub_80A6B30(&unknownStruct);
- sub_80A6D60(&unknownStruct, gUnknown_08C20684, 0);
+ AnimLoadCompressedBgTilemapHandleContest(&unknownStruct, gUnknown_08C20684, 0);
AnimLoadCompressedBgGfx(unknownStruct.bgId, gUnknown_08C20668, unknownStruct.tilesOffset);
LoadPalette(&gUnknown_08597418, unknownStruct.paletteId * 16 + 1, 2);
@@ -337,10 +339,10 @@ void sub_8116B14(u8 taskId)
gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32;
gTasks[taskId].data[0] = newSpriteId;
gTasks[taskId].data[6] = var0;
- gTasks[taskId].func = sub_8116D64;
+ gTasks[taskId].func = AnimTask_DrawFallingWhiteLinesOnAttacker_Step;
}
-static void sub_8116D64(u8 taskId)
+static void AnimTask_DrawFallingWhiteLinesOnAttacker_Step(u8 taskId)
{
struct BattleAnimBgData unknownStruct;
struct Sprite *sprite;
@@ -468,9 +470,9 @@ static void sub_81170EC(u8 taskId)
sub_80A6B30(&unknownStruct);
if (sAnimStatsChangeData->data[0] == 0)
- sub_80A6D60(&unknownStruct, gBattleStatMask1_Tilemap, 0);
+ AnimLoadCompressedBgTilemapHandleContest(&unknownStruct, gBattleStatMask1_Tilemap, 0);
else
- sub_80A6D60(&unknownStruct, gBattleStatMask2_Tilemap, 0);
+ AnimLoadCompressedBgTilemapHandleContest(&unknownStruct, gBattleStatMask2_Tilemap, 0);
AnimLoadCompressedBgGfx(unknownStruct.bgId, gBattleStatMask_Gfx, unknownStruct.tilesOffset);
switch (sAnimStatsChangeData->data[1])
@@ -599,7 +601,7 @@ static void sub_81172EC(u8 taskId)
}
}
-void sub_8117494(u8 taskId)
+void AnimTask_Flash(u8 taskId)
{
u32 selectedPalettes = sub_80A76C4(1, 1, 1, 1);
sub_81175C4(selectedPalettes, 0);
@@ -611,10 +613,10 @@ void sub_8117494(u8 taskId)
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
- gTasks[taskId].func = sub_8117500;
+ gTasks[taskId].func = AnimTask_Flash_Step;
}
-static void sub_8117500(u8 taskId)
+static void AnimTask_Flash_Step(u8 taskId)
{
u16 i;
struct Task *task = &gTasks[taskId];
@@ -681,7 +683,7 @@ static void sub_81175C4(u32 selectedPalettes, u16 color)
}
}
-void sub_8117610(u8 taskId)
+void AnimTask_BlendNonAttackerPalettes(u8 taskId)
{
u32 battler;
int j;
@@ -699,12 +701,12 @@ void sub_8117610(u8 taskId)
StartBlendAnimSpriteColor(taskId, selectedPalettes);
}
-void sub_8117660(u8 taskId)
+void AnimTask_StartSlidingBg(u8 taskId)
{
u8 newTaskId;
sub_80A6DAC(0);
- newTaskId = CreateTask(sub_81176D8, 5);
+ newTaskId = CreateTask(AnimTask_UpdateSlidingBg, 5);
if (gBattleAnimArgs[2] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
@@ -718,7 +720,7 @@ void sub_8117660(u8 taskId)
DestroyAnimVisualTask(taskId);
}
-static void sub_81176D8(u8 taskId)
+static void AnimTask_UpdateSlidingBg(u8 taskId)
{
gTasks[taskId].data[10] += gTasks[taskId].data[1];
gTasks[taskId].data[11] += gTasks[taskId].data[2];
@@ -738,35 +740,39 @@ static void sub_81176D8(u8 taskId)
void AnimTask_GetAttackerSide(u8 taskId)
{
- gBattleAnimArgs[7] = GetBattlerSide(gBattleAnimAttacker);
+ gBattleAnimArgs[ARG_RET_ID] = GetBattlerSide(gBattleAnimAttacker);
DestroyAnimVisualTask(taskId);
}
void AnimTask_GetTargetSide(u8 taskId)
{
- gBattleAnimArgs[7] = GetBattlerSide(gBattleAnimTarget);
+ gBattleAnimArgs[ARG_RET_ID] = GetBattlerSide(gBattleAnimTarget);
DestroyAnimVisualTask(taskId);
}
void AnimTask_GetTargetIsAttackerPartner(u8 taskId)
{
- gBattleAnimArgs[7] = BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget;
+ gBattleAnimArgs[ARG_RET_ID] = BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget;
DestroyAnimVisualTask(taskId);
}
-void sub_81177E4(u8 taskId)
+#define tInvisible gBattleAnimArgs[0];
+
+// For hiding or subsequently revealing all other battlers
+void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId)
{
u16 battler;
for (battler = 0; battler < MAX_BATTLERS_COUNT; battler++)
{
if (battler != gBattleAnimAttacker && IsBattlerSpriteVisible(battler))
- gSprites[gBattlerSpriteIds[battler]].invisible = gBattleAnimArgs[0];
+ gSprites[gBattlerSpriteIds[battler]].invisible = tInvisible;
}
DestroyAnimVisualTask(taskId);
}
+#undef tInvisible
void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *gfx, const u32 *tilemap, const u32 *palette)
{
@@ -819,7 +825,7 @@ void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5,
spriteId2 = sub_80A89C8(battler2, gBattlerSpriteIds[battler2], species);
sub_80A6B30(&unknownStruct);
- sub_80A6D60(&unknownStruct, tilemap, 0);
+ AnimLoadCompressedBgTilemapHandleContest(&unknownStruct, tilemap, 0);
AnimLoadCompressedBgGfx(unknownStruct.bgId, gfx, unknownStruct.tilesOffset);
LoadCompressedPalette(palette, unknownStruct.paletteId * 16, 32);
@@ -902,20 +908,19 @@ void AnimTask_GetBattleTerrain(u8 taskId)
DestroyAnimVisualTask(taskId);
}
-void sub_8117C44(u8 taskId)
+void AnimTask_AllocBackupPalBuffer(u8 taskId)
{
- gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000);
+ gMonSpritesGfxPtr->buffer = AllocZeroed(0x2000);
DestroyAnimVisualTask(taskId);
}
-void sub_8117C70(u8 taskId)
+void AnimTask_FreeBackupPalBuffer(u8 taskId)
{
- Free(gMonSpritesGfxPtr->field_17C);
- gMonSpritesGfxPtr->field_17C = NULL;
+ FREE_AND_SET_NULL(gMonSpritesGfxPtr->buffer);
DestroyAnimVisualTask(taskId);
}
-void sub_8117CA0(u8 taskId)
+void AnimTask_CopyPalUnfadedToBackup(u8 taskId)
{
u32 selectedPalettes;
int paletteIndex = 0;
@@ -938,11 +943,11 @@ void sub_8117CA0(u8 taskId)
paletteIndex = gBattleAnimTarget + 16;
}
- memcpy(&gMonSpritesGfxPtr->field_17C[gBattleAnimArgs[1] * 16], &gPlttBufferUnfaded[paletteIndex * 16], 32);
+ memcpy(&gMonSpritesGfxPtr->buffer[gBattleAnimArgs[1] * 16], &gPlttBufferUnfaded[paletteIndex * 16], 32);
DestroyAnimVisualTask(taskId);
}
-void sub_8117D3C(u8 taskId)
+void AnimTask_CopyPalUnfadedFromBackup(u8 taskId)
{
u32 selectedPalettes;
int paletteIndex = 0;
@@ -965,11 +970,11 @@ void sub_8117D3C(u8 taskId)
paletteIndex = gBattleAnimTarget + 16;
}
- memcpy(&gPlttBufferUnfaded[paletteIndex * 16], &gMonSpritesGfxPtr->field_17C[gBattleAnimArgs[1] * 16], 32);
+ memcpy(&gPlttBufferUnfaded[paletteIndex * 16], &gMonSpritesGfxPtr->buffer[gBattleAnimArgs[1] * 16], 32);
DestroyAnimVisualTask(taskId);
}
-void sub_8117DD8(u8 taskId)
+void AnimTask_CopyPalFadedToUnfaded(u8 taskId)
{
u32 selectedPalettes;
int paletteIndex = 0;
@@ -999,14 +1004,14 @@ void sub_8117DD8(u8 taskId)
void AnimTask_IsContest(u8 taskId)
{
if (IsContest())
- gBattleAnimArgs[7] = 1;
+ gBattleAnimArgs[ARG_RET_ID] = TRUE;
else
- gBattleAnimArgs[7] = 0;
+ gBattleAnimArgs[ARG_RET_ID] = FALSE;
DestroyAnimVisualTask(taskId);
}
-void sub_8117E94(u8 taskId)
+void AnimTask_SetAnimAttackerAndTargetForEffectTgt(u8 taskId)
{
gBattleAnimAttacker = gBattlerTarget;
gBattleAnimTarget = gEffectBattler;
@@ -1016,27 +1021,27 @@ void sub_8117E94(u8 taskId)
void AnimTask_IsTargetSameSide(u8 taskId)
{
if (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget))
- gBattleAnimArgs[7] = 1;
+ gBattleAnimArgs[ARG_RET_ID] = TRUE;
else
- gBattleAnimArgs[7] = 0;
+ gBattleAnimArgs[ARG_RET_ID] = FALSE;
DestroyAnimVisualTask(taskId);
}
-void sub_8117F10(u8 taskId)
+void AnimTask_SetAnimTargetToBattlerTarget(u8 taskId)
{
gBattleAnimTarget = gBattlerTarget;
DestroyAnimVisualTask(taskId);
}
-void sub_8117F30(u8 taskId)
+void AnimTask_SetAnimAttackerAndTargetForEffectAtk(u8 taskId)
{
gBattleAnimAttacker = gBattlerAttacker;
gBattleAnimTarget = gEffectBattler;
DestroyAnimVisualTask(taskId);
}
-void AnimTask_ExtremeSpeedMoveTarget(u8 taskId)
+void AnimTask_SetAttackerInvisibleWaitForSignal(u8 taskId)
{
if (IsContest())
{
@@ -1045,13 +1050,13 @@ void AnimTask_ExtremeSpeedMoveTarget(u8 taskId)
else
{
gTasks[taskId].data[0] = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible;
- gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible = 1;
- gTasks[taskId].func = ExtremSpeedMoveTarget_Step;
+ gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible = TRUE;
+ gTasks[taskId].func = AnimTask_WaitAndRestoreVisibility;
gAnimVisualTaskCount--;
}
}
-static void ExtremSpeedMoveTarget_Step(u8 taskId)
+static void AnimTask_WaitAndRestoreVisibility(u8 taskId)
{
if (gBattleAnimArgs[7] == 0x1000)
{