battle_anim_sound_tasks
This commit is contained in:
@@ -0,0 +1,313 @@
|
||||
#include "global.h"
|
||||
#include "battle.h"
|
||||
#include "battle_anim.h"
|
||||
#include "sound.h"
|
||||
#include "task.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
static void sub_80DCE78(u8 taskId);
|
||||
static void sub_80DCEE4(u8 taskId);
|
||||
static void sub_80DCFE8(u8 taskId);
|
||||
static void sub_80DD270(u8 taskId);
|
||||
static void sub_80DD390(u8 taskId);
|
||||
static void sub_80DD4D4(u8 taskId);
|
||||
|
||||
void sub_80DCE10(u8 taskId)
|
||||
{
|
||||
s8 pan1, pan2, panIncrement;
|
||||
|
||||
gTasks[taskId].data[0] = gBattleAnimArgs[0];
|
||||
gTasks[taskId].data[1] = gBattleAnimArgs[1];
|
||||
pan1 = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
|
||||
pan2 = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
|
||||
panIncrement = CalculatePanIncrement(pan1, pan2, 2);
|
||||
gTasks[taskId].data[2] = pan1;
|
||||
gTasks[taskId].data[3] = pan2;
|
||||
gTasks[taskId].data[4] = panIncrement;
|
||||
gTasks[taskId].data[10] = 10;
|
||||
gTasks[taskId].func = sub_80DCE78;
|
||||
}
|
||||
|
||||
static void sub_80DCE78(u8 taskId)
|
||||
{
|
||||
s16 pan = gTasks[taskId].data[2];
|
||||
s8 panIncrement = gTasks[taskId].data[4];
|
||||
|
||||
if (++gTasks[taskId].data[11] == 111)
|
||||
{
|
||||
gTasks[taskId].data[10] = 5;
|
||||
gTasks[taskId].data[11] = 0;
|
||||
gTasks[taskId].func = sub_80DCEE4;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (++gTasks[taskId].data[10] == 11)
|
||||
{
|
||||
gTasks[taskId].data[10] = 0;
|
||||
PlaySE12WithPanning(gTasks[taskId].data[0], pan);
|
||||
}
|
||||
pan += panIncrement;
|
||||
gTasks[taskId].data[2] = KeepPanInRange(pan, panIncrement);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80DCEE4(u8 taskId)
|
||||
{
|
||||
if (++gTasks[taskId].data[10] == 6)
|
||||
{
|
||||
s8 pan;
|
||||
|
||||
gTasks[taskId].data[10] = 0;
|
||||
pan = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
|
||||
PlaySE12WithPanning(gTasks[taskId].data[1], pan);
|
||||
if (++gTasks[taskId].data[11] == 2)
|
||||
DestroyAnimSoundTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
void mas_80DCF38(u8 taskId)
|
||||
{
|
||||
u16 songId = gBattleAnimArgs[0];
|
||||
s8 targetPan = gBattleAnimArgs[2];
|
||||
s8 panIncrement = gBattleAnimArgs[3];
|
||||
u8 r10 = gBattleAnimArgs[4];
|
||||
u8 r7 = gBattleAnimArgs[5];
|
||||
u8 r9 = gBattleAnimArgs[6];
|
||||
s8 sourcePan = BattleAnimAdjustPanning(gBattleAnimArgs[1]);
|
||||
|
||||
targetPan = BattleAnimAdjustPanning(targetPan);
|
||||
panIncrement = CalculatePanIncrement(sourcePan, targetPan, panIncrement);
|
||||
gTasks[taskId].data[0] = songId;
|
||||
gTasks[taskId].data[1] = sourcePan;
|
||||
gTasks[taskId].data[2] = targetPan;
|
||||
gTasks[taskId].data[3] = panIncrement;
|
||||
gTasks[taskId].data[4] = r10;
|
||||
gTasks[taskId].data[5] = r7;
|
||||
gTasks[taskId].data[6] = r9;
|
||||
gTasks[taskId].data[10] = 0;
|
||||
gTasks[taskId].data[11] = sourcePan;
|
||||
gTasks[taskId].data[12] = r9;
|
||||
gTasks[taskId].func = sub_80DCFE8;
|
||||
sub_80DCFE8(taskId);
|
||||
}
|
||||
|
||||
static void sub_80DCFE8(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[12]++ == gTasks[taskId].data[6])
|
||||
{
|
||||
gTasks[taskId].data[12] = 0;
|
||||
PlaySE12WithPanning(gTasks[taskId].data[0], gTasks[taskId].data[11]);
|
||||
if (--gTasks[taskId].data[4] == 0)
|
||||
{
|
||||
DestroyAnimSoundTask(taskId);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (gTasks[taskId].data[10]++ == gTasks[taskId].data[5])
|
||||
{
|
||||
u16 dPan, oldPan;
|
||||
|
||||
gTasks[taskId].data[10] = 0;
|
||||
dPan = gTasks[taskId].data[3];
|
||||
oldPan = gTasks[taskId].data[11] ;
|
||||
gTasks[taskId].data[11] = dPan + oldPan;
|
||||
gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11], oldPan);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80DD06C(u8 taskId)
|
||||
{
|
||||
u16 species = SPECIES_NONE;
|
||||
u8 battlerId;
|
||||
s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
|
||||
|
||||
// Get wanted battler.
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
battlerId = gBattleAnimAttacker;
|
||||
else if (gBattleAnimArgs[0] == ANIM_TARGET)
|
||||
battlerId = gBattleAnimTarget;
|
||||
else if (gBattleAnimArgs[0] == ANIM_ATK_PARTNER)
|
||||
battlerId = BATTLE_PARTNER(gBattleAnimAttacker);
|
||||
else
|
||||
battlerId = BATTLE_PARTNER(gBattleAnimTarget);
|
||||
// Check if battler is visible.
|
||||
if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER)
|
||||
&& !IsBattlerSpriteVisible(battlerId))
|
||||
{
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
|
||||
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
|
||||
else
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
|
||||
if (species != SPECIES_NONE)
|
||||
PlayCry3(species, pan, 3);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void sub_80DD148(u8 taskId)
|
||||
{
|
||||
u16 species = SPECIES_NONE;
|
||||
u8 battlerId;
|
||||
s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
|
||||
|
||||
// Get wanted battler.
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
battlerId = gBattleAnimAttacker;
|
||||
else if (gBattleAnimArgs[0] == ANIM_TARGET)
|
||||
battlerId = gBattleAnimTarget;
|
||||
else if (gBattleAnimArgs[0] == ANIM_ATK_PARTNER)
|
||||
battlerId = BATTLE_PARTNER(gBattleAnimAttacker);
|
||||
else
|
||||
battlerId = BATTLE_PARTNER(gBattleAnimTarget);
|
||||
// Check if battler is visible.
|
||||
if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER)
|
||||
&& !IsBattlerSpriteVisible(battlerId))
|
||||
{
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
|
||||
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
|
||||
else
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
|
||||
gTasks[taskId].data[0] = gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[1] = species;
|
||||
gTasks[taskId].data[2] = pan;
|
||||
if (species != SPECIES_NONE)
|
||||
{
|
||||
if (gBattleAnimArgs[1] == TASK_NONE)
|
||||
PlayCry3(species, pan, 9);
|
||||
else
|
||||
PlayCry3(species, pan, 7);
|
||||
gTasks[taskId].func = sub_80DD270;
|
||||
}
|
||||
else
|
||||
{
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80DD270(u8 taskId)
|
||||
{
|
||||
u16 species = gTasks[taskId].data[1];
|
||||
s8 pan = gTasks[taskId].data[2];
|
||||
|
||||
if (gTasks[taskId].data[9] < 2)
|
||||
{
|
||||
++gTasks[taskId].data[9];
|
||||
}
|
||||
else if (gTasks[taskId].data[0] == TASK_NONE)
|
||||
{
|
||||
if (!IsCryPlaying())
|
||||
{
|
||||
PlayCry3(species, pan, 10);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
}
|
||||
else if (!IsCryPlaying())
|
||||
{
|
||||
PlayCry3(species, pan, 8);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80DD2F4(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[9] < 2)
|
||||
++gTasks[taskId].data[9];
|
||||
else if (!IsCryPlaying())
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void sub_80DD334(u8 taskId)
|
||||
{
|
||||
u16 species;
|
||||
s8 pan;
|
||||
|
||||
pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
|
||||
species = gAnimBattlerSpecies[gBattleAnimAttacker];
|
||||
gTasks[taskId].data[1] = species;
|
||||
gTasks[taskId].data[2] = pan;
|
||||
if (species != SPECIES_NONE)
|
||||
{
|
||||
PlayCry3(species, pan, 4);
|
||||
gTasks[taskId].func = sub_80DD390;
|
||||
}
|
||||
else
|
||||
{
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80DD390(u8 taskId)
|
||||
{
|
||||
|
||||
if (gTasks[taskId].data[9] < 2)
|
||||
{
|
||||
++gTasks[taskId].data[9];
|
||||
}
|
||||
else if (!IsCryPlaying())
|
||||
{
|
||||
u16 species = gTasks[taskId].data[1];
|
||||
s8 pan = gTasks[taskId].data[2];
|
||||
|
||||
PlayCry3(species, pan, 6);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80DD3DC(u8 taskId)
|
||||
{
|
||||
u16 songId = gBattleAnimArgs[0];
|
||||
s8 pan = BattleAnimAdjustPanning(gBattleAnimArgs[1]);
|
||||
|
||||
PlaySE1WithPanning(songId, pan);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void sub_80DD410(u8 taskId)
|
||||
{
|
||||
u16 songId = gBattleAnimArgs[0];
|
||||
s8 pan = BattleAnimAdjustPanning(gBattleAnimArgs[1]);
|
||||
|
||||
PlaySE2WithPanning(songId, pan);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void sub_80DD444(u8 taskId)
|
||||
{
|
||||
s8 targetPan = gBattleAnimArgs[1];
|
||||
s8 panIncrement = gBattleAnimArgs[2];
|
||||
u16 r9 = gBattleAnimArgs[3];
|
||||
s8 sourcePan = BattleAnimAdjustPanning(gBattleAnimArgs[0]);
|
||||
|
||||
targetPan = BattleAnimAdjustPanning(targetPan);
|
||||
panIncrement = CalculatePanIncrement(sourcePan, targetPan, panIncrement);
|
||||
gTasks[taskId].data[1] = sourcePan;
|
||||
gTasks[taskId].data[2] = targetPan;
|
||||
gTasks[taskId].data[3] = panIncrement;
|
||||
gTasks[taskId].data[5] = r9;
|
||||
gTasks[taskId].data[10] = 0;
|
||||
gTasks[taskId].data[11] = sourcePan;
|
||||
gTasks[taskId].func = sub_80DD4D4;
|
||||
sub_80DD4D4(taskId);
|
||||
}
|
||||
|
||||
static void sub_80DD4D4(u8 taskId)
|
||||
{
|
||||
u16 oldPan, panIncrement = gTasks[taskId].data[3];
|
||||
|
||||
if (gTasks[taskId].data[10]++ == gTasks[taskId].data[5])
|
||||
{
|
||||
gTasks[taskId].data[10] = 0;
|
||||
oldPan = gTasks[taskId].data[11];
|
||||
gTasks[taskId].data[11] = panIncrement + oldPan;
|
||||
gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11], oldPan);
|
||||
}
|
||||
gUnknown_2037F24 = gTasks[taskId].data[11];
|
||||
if (gTasks[taskId].data[11] == gTasks[taskId].data[2])
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
Reference in New Issue
Block a user