Sync battle anim - sound tasks
This commit is contained in:
@@ -891,7 +891,7 @@ Move_TWINEEDLE::
|
|||||||
|
|
||||||
Move_FIRE_BLAST::
|
Move_FIRE_BLAST::
|
||||||
loadspritegfx ANIM_TAG_SMALL_EMBER
|
loadspritegfx ANIM_TAG_SMALL_EMBER
|
||||||
createsoundtask sub_80DCE10, SE_M_FLAME_WHEEL, SE_M_FLAME_WHEEL2
|
createsoundtask SoundTask_FireBlast, SE_M_FLAME_WHEEL, SE_M_FLAME_WHEEL2
|
||||||
call FireBlastRing
|
call FireBlastRing
|
||||||
call FireBlastRing
|
call FireBlastRing
|
||||||
call FireBlastRing
|
call FireBlastRing
|
||||||
@@ -8656,7 +8656,7 @@ Move_HYPER_VOICE::
|
|||||||
end
|
end
|
||||||
|
|
||||||
HyperVoiceEffect::
|
HyperVoiceEffect::
|
||||||
createvisualtask sub_80DD334, 5
|
createvisualtask SoundTask_PlayCryWithEcho, 5
|
||||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 8, 0, 1023
|
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 8, 0, 1023
|
||||||
createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, 0, 0
|
createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, 0, 0
|
||||||
createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1
|
createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1
|
||||||
|
|||||||
@@ -6,14 +6,21 @@
|
|||||||
#include "constants/battle_anim.h"
|
#include "constants/battle_anim.h"
|
||||||
#include "constants/sound.h"
|
#include "constants/sound.h"
|
||||||
|
|
||||||
static void sub_80DCE78(u8 taskId);
|
static void SoundTask_FireBlast_Step1(u8 taskId);
|
||||||
static void sub_80DCEE4(u8 taskId);
|
static void SoundTask_FireBlast_Step2(u8 taskId);
|
||||||
static void sub_80DCFE8(u8 taskId);
|
static void SoundTask_LoopSEAdjustPanning_Step(u8 taskId);
|
||||||
static void sub_80DD270(u8 taskId);
|
static void SoundTask_PlayDoubleCry_Step(u8 taskId);
|
||||||
static void sub_80DD390(u8 taskId);
|
static void SoundTask_PlayCryWithEcho_Step(u8 taskId);
|
||||||
static void sub_80DD4D4(u8 taskId);
|
static void SoundTask_AdjustPanningVar_Step(u8 taskId);
|
||||||
|
|
||||||
void sub_80DCE10(u8 taskId)
|
// Loops the specified sound effect and pans from the
|
||||||
|
// attacker to the target. The second specified sound effect
|
||||||
|
// is played at the very end. This task is effectively
|
||||||
|
// hardcoded to the move FIRE_BLAST due to the baked-in
|
||||||
|
// durations.
|
||||||
|
// arg 0: looped sound effect
|
||||||
|
// arg 1: ending sound effect
|
||||||
|
void SoundTask_FireBlast(u8 taskId)
|
||||||
{
|
{
|
||||||
s8 pan1, pan2, panIncrement;
|
s8 pan1, pan2, panIncrement;
|
||||||
|
|
||||||
@@ -26,10 +33,10 @@ void sub_80DCE10(u8 taskId)
|
|||||||
gTasks[taskId].data[3] = pan2;
|
gTasks[taskId].data[3] = pan2;
|
||||||
gTasks[taskId].data[4] = panIncrement;
|
gTasks[taskId].data[4] = panIncrement;
|
||||||
gTasks[taskId].data[10] = 10;
|
gTasks[taskId].data[10] = 10;
|
||||||
gTasks[taskId].func = sub_80DCE78;
|
gTasks[taskId].func = SoundTask_FireBlast_Step1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80DCE78(u8 taskId)
|
static void SoundTask_FireBlast_Step1(u8 taskId)
|
||||||
{
|
{
|
||||||
s16 pan = gTasks[taskId].data[2];
|
s16 pan = gTasks[taskId].data[2];
|
||||||
s8 panIncrement = gTasks[taskId].data[4];
|
s8 panIncrement = gTasks[taskId].data[4];
|
||||||
@@ -38,7 +45,7 @@ static void sub_80DCE78(u8 taskId)
|
|||||||
{
|
{
|
||||||
gTasks[taskId].data[10] = 5;
|
gTasks[taskId].data[10] = 5;
|
||||||
gTasks[taskId].data[11] = 0;
|
gTasks[taskId].data[11] = 0;
|
||||||
gTasks[taskId].func = sub_80DCEE4;
|
gTasks[taskId].func = SoundTask_FireBlast_Step2;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -52,7 +59,7 @@ static void sub_80DCE78(u8 taskId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80DCEE4(u8 taskId)
|
static void SoundTask_FireBlast_Step2(u8 taskId)
|
||||||
{
|
{
|
||||||
if (++gTasks[taskId].data[10] == 6)
|
if (++gTasks[taskId].data[10] == 6)
|
||||||
{
|
{
|
||||||
@@ -88,11 +95,11 @@ void SoundTask_LoopSEAdjustPanning(u8 taskId)
|
|||||||
gTasks[taskId].data[10] = 0;
|
gTasks[taskId].data[10] = 0;
|
||||||
gTasks[taskId].data[11] = sourcePan;
|
gTasks[taskId].data[11] = sourcePan;
|
||||||
gTasks[taskId].data[12] = r9;
|
gTasks[taskId].data[12] = r9;
|
||||||
gTasks[taskId].func = sub_80DCFE8;
|
gTasks[taskId].func = SoundTask_LoopSEAdjustPanning_Step;
|
||||||
sub_80DCFE8(taskId);
|
gTasks[taskId].func(taskId);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80DCFE8(u8 taskId)
|
static void SoundTask_LoopSEAdjustPanning_Step(u8 taskId)
|
||||||
{
|
{
|
||||||
if (gTasks[taskId].data[12]++ == gTasks[taskId].data[6])
|
if (gTasks[taskId].data[12]++ == gTasks[taskId].data[6])
|
||||||
{
|
{
|
||||||
@@ -131,6 +138,7 @@ void SoundTask_PlayCryHighPitch(u8 taskId)
|
|||||||
battlerId = BATTLE_PARTNER(gBattleAnimAttacker);
|
battlerId = BATTLE_PARTNER(gBattleAnimAttacker);
|
||||||
else
|
else
|
||||||
battlerId = BATTLE_PARTNER(gBattleAnimTarget);
|
battlerId = BATTLE_PARTNER(gBattleAnimTarget);
|
||||||
|
|
||||||
// Check if battler is visible.
|
// Check if battler is visible.
|
||||||
if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER)
|
if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER)
|
||||||
&& !IsBattlerSpriteVisible(battlerId))
|
&& !IsBattlerSpriteVisible(battlerId))
|
||||||
@@ -182,7 +190,7 @@ void SoundTask_PlayDoubleCry(u8 taskId)
|
|||||||
PlayCry_ByMode(species, pan, CRY_MODE_GROWL_1);
|
PlayCry_ByMode(species, pan, CRY_MODE_GROWL_1);
|
||||||
else // DOUBLE_CRY_ROAR
|
else // DOUBLE_CRY_ROAR
|
||||||
PlayCry_ByMode(species, pan, CRY_MODE_ROAR_1);
|
PlayCry_ByMode(species, pan, CRY_MODE_ROAR_1);
|
||||||
gTasks[taskId].func = sub_80DD270;
|
gTasks[taskId].func = SoundTask_PlayDoubleCry_Step;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -190,7 +198,7 @@ void SoundTask_PlayDoubleCry(u8 taskId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80DD270(u8 taskId)
|
static void SoundTask_PlayDoubleCry_Step(u8 taskId)
|
||||||
{
|
{
|
||||||
u16 species = gTasks[taskId].data[1];
|
u16 species = gTasks[taskId].data[1];
|
||||||
s8 pan = gTasks[taskId].data[2];
|
s8 pan = gTasks[taskId].data[2];
|
||||||
@@ -199,7 +207,7 @@ static void sub_80DD270(u8 taskId)
|
|||||||
{
|
{
|
||||||
++gTasks[taskId].data[9];
|
++gTasks[taskId].data[9];
|
||||||
}
|
}
|
||||||
else if (gTasks[taskId].data[0] == TAIL_SENTINEL)
|
else if (gTasks[taskId].data[0] == DOUBLE_CRY_GROWL)
|
||||||
{
|
{
|
||||||
if (!IsCryPlaying())
|
if (!IsCryPlaying())
|
||||||
{
|
{
|
||||||
@@ -207,10 +215,13 @@ static void sub_80DD270(u8 taskId)
|
|||||||
DestroyAnimVisualTask(taskId);
|
DestroyAnimVisualTask(taskId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!IsCryPlaying())
|
else // DOUBLE_CRY_ROAR
|
||||||
{
|
{
|
||||||
PlayCry_ByMode(species, pan, CRY_MODE_ROAR_2);
|
if (!IsCryPlaying())
|
||||||
DestroyAnimVisualTask(taskId);
|
{
|
||||||
|
PlayCry_ByMode(species, pan, CRY_MODE_ROAR_2);
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -222,19 +233,21 @@ void SoundTask_WaitForCry(u8 taskId)
|
|||||||
DestroyAnimVisualTask(taskId);
|
DestroyAnimVisualTask(taskId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_80DD334(u8 taskId)
|
#define tSpecies data[1]
|
||||||
|
#define tPan data[2]
|
||||||
|
#define tState data[9]
|
||||||
|
|
||||||
|
void SoundTask_PlayCryWithEcho(u8 taskId)
|
||||||
{
|
{
|
||||||
u16 species;
|
u16 species;
|
||||||
s8 pan;
|
s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
|
||||||
|
|
||||||
pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
|
|
||||||
species = gAnimBattlerSpecies[gBattleAnimAttacker];
|
species = gAnimBattlerSpecies[gBattleAnimAttacker];
|
||||||
gTasks[taskId].data[1] = species;
|
gTasks[taskId].tSpecies = species;
|
||||||
gTasks[taskId].data[2] = pan;
|
gTasks[taskId].tPan = pan;
|
||||||
if (species != SPECIES_NONE)
|
if (species != SPECIES_NONE)
|
||||||
{
|
{
|
||||||
PlayCry_ByMode(species, pan, CRY_MODE_ECHO_START);
|
PlayCry_ByMode(species, pan, CRY_MODE_ECHO_START);
|
||||||
gTasks[taskId].func = sub_80DD390;
|
gTasks[taskId].func = SoundTask_PlayCryWithEcho_Step;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -242,23 +255,27 @@ void sub_80DD334(u8 taskId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80DD390(u8 taskId)
|
static void SoundTask_PlayCryWithEcho_Step(u8 taskId)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (gTasks[taskId].data[9] < 2)
|
if (gTasks[taskId].tState < 2)
|
||||||
{
|
{
|
||||||
++gTasks[taskId].data[9];
|
gTasks[taskId].tState++;
|
||||||
}
|
}
|
||||||
else if (!IsCryPlaying())
|
else if (!IsCryPlaying())
|
||||||
{
|
{
|
||||||
u16 species = gTasks[taskId].data[1];
|
u16 species = gTasks[taskId].tSpecies;
|
||||||
s8 pan = gTasks[taskId].data[2];
|
s8 pan = gTasks[taskId].tPan;
|
||||||
|
|
||||||
PlayCry_ByMode(species, pan, CRY_MODE_ECHO_END);
|
PlayCry_ByMode(species, pan, CRY_MODE_ECHO_END);
|
||||||
DestroyAnimVisualTask(taskId);
|
DestroyAnimVisualTask(taskId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef tSpecies
|
||||||
|
#undef tPan
|
||||||
|
#undef tState
|
||||||
|
|
||||||
void SoundTask_PlaySE1WithPanning(u8 taskId)
|
void SoundTask_PlaySE1WithPanning(u8 taskId)
|
||||||
{
|
{
|
||||||
u16 songId = gBattleAnimArgs[0];
|
u16 songId = gBattleAnimArgs[0];
|
||||||
@@ -277,6 +294,8 @@ void SoundTask_PlaySE2WithPanning(u8 taskId)
|
|||||||
DestroyAnimVisualTask(taskId);
|
DestroyAnimVisualTask(taskId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Adjusts panning and assigns it to gAnimCustomPanning. Doesnt play sound.
|
||||||
|
// Used by Confuse Ray and Will-O-Wisp (see uses of gAnimCustomPanning)
|
||||||
void SoundTask_AdjustPanningVar(u8 taskId)
|
void SoundTask_AdjustPanningVar(u8 taskId)
|
||||||
{
|
{
|
||||||
s8 targetPan = gBattleAnimArgs[1];
|
s8 targetPan = gBattleAnimArgs[1];
|
||||||
@@ -292,11 +311,11 @@ void SoundTask_AdjustPanningVar(u8 taskId)
|
|||||||
gTasks[taskId].data[5] = r9;
|
gTasks[taskId].data[5] = r9;
|
||||||
gTasks[taskId].data[10] = 0;
|
gTasks[taskId].data[10] = 0;
|
||||||
gTasks[taskId].data[11] = sourcePan;
|
gTasks[taskId].data[11] = sourcePan;
|
||||||
gTasks[taskId].func = sub_80DD4D4;
|
gTasks[taskId].func = SoundTask_AdjustPanningVar_Step;
|
||||||
sub_80DD4D4(taskId);
|
gTasks[taskId].func(taskId);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80DD4D4(u8 taskId)
|
static void SoundTask_AdjustPanningVar_Step(u8 taskId)
|
||||||
{
|
{
|
||||||
u16 oldPan, panIncrement = gTasks[taskId].data[3];
|
u16 oldPan, panIncrement = gTasks[taskId].data[3];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user