summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2021-11-07 13:54:44 -0500
committerGriffinR <griffin.g.richards@gmail.com>2021-11-07 14:26:09 -0500
commitc4169cfd290dcf7703b79debd66142b277af5613 (patch)
tree4142cd4e843d863532a2dfe81f82877b26d9cbb0 /src
parent54b254a829d973345b0d282b7a4ffd7458a5c7da (diff)
Disambiguate cry functions
Diffstat (limited to 'src')
-rw-r--r--src/battle_anim_sound_tasks.c47
-rw-r--r--src/battle_controller_link_opponent.c2
-rw-r--r--src/battle_controller_link_partner.c2
-rw-r--r--src/battle_controller_opponent.c2
-rw-r--r--src/battle_controller_player.c2
-rw-r--r--src/battle_controller_player_partner.c2
-rw-r--r--src/battle_controller_recorded_opponent.c2
-rw-r--r--src/battle_controller_recorded_player.c2
-rw-r--r--src/battle_controller_safari.c2
-rw-r--r--src/battle_controller_wally.c4
-rw-r--r--src/contest_util.c2
-rw-r--r--src/evolution_scene.c2
-rw-r--r--src/field_effect.c24
-rw-r--r--src/hall_of_fame.c2
-rw-r--r--src/intro.c4
-rw-r--r--src/overworld.c2
-rw-r--r--src/pokeball.c15
-rw-r--r--src/pokeblock_feed.c2
-rw-r--r--src/pokedex.c4
-rw-r--r--src/pokedex_cry_screen.c2
-rw-r--r--src/pokemon.c4
-rw-r--r--src/pokemon_summary_screen.c4
-rw-r--r--src/rayquaza_scene.c2
-rw-r--r--src/roulette.c10
-rw-r--r--src/scrcmd.c2
-rw-r--r--src/sound.c50
-rw-r--r--src/starter_choose.c2
-rw-r--r--src/trade.c4
28 files changed, 110 insertions, 94 deletions
diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c
index 435c5dcdc..7180041b3 100644
--- a/src/battle_anim_sound_tasks.c
+++ b/src/battle_anim_sound_tasks.c
@@ -168,7 +168,7 @@ void SoundTask_PlayCryHighPitch(u8 taskId)
}
if (species != SPECIES_NONE)
- PlayCry3(species, pan, CRY_MODE_HIGH_PITCH);
+ PlayCry_ByMode(species, pan, CRY_MODE_HIGH_PITCH);
DestroyAnimVisualTask(taskId);
}
@@ -220,9 +220,9 @@ void SoundTask_PlayDoubleCry(u8 taskId)
if (species != SPECIES_NONE)
{
if (gBattleAnimArgs[1] == DOUBLE_CRY_GROWL)
- PlayCry3(species, pan, CRY_MODE_GROWL_1);
+ PlayCry_ByMode(species, pan, CRY_MODE_GROWL_1);
else // DOUBLE_CRY_ROAR
- PlayCry3(species, pan, CRY_MODE_ROAR_1);
+ PlayCry_ByMode(species, pan, CRY_MODE_ROAR_1);
gTasks[taskId].func = SoundTask_PlayDoubleCry_Step;
}
@@ -247,7 +247,7 @@ static void SoundTask_PlayDoubleCry_Step(u8 taskId)
{
if (!IsCryPlaying())
{
- PlayCry3(species, pan, CRY_MODE_GROWL_2);
+ PlayCry_ByMode(species, pan, CRY_MODE_GROWL_2);
DestroyAnimVisualTask(taskId);
}
}
@@ -255,7 +255,7 @@ static void SoundTask_PlayDoubleCry_Step(u8 taskId)
{
if (!IsCryPlaying())
{
- PlayCry3(species, pan, CRY_MODE_ROAR_2);
+ PlayCry_ByMode(species, pan, CRY_MODE_ROAR_2);
DestroyAnimVisualTask(taskId);
}
}
@@ -275,12 +275,18 @@ void SoundTask_WaitForCry(u8 taskId)
}
}
+
+#define tSpecies data[1]
+#define tPan data[2]
+#define tState data[9]
+#define tLastCry data[10] // If it's not the last cry, don't try to restore the BGM, because another is coming
+
void SoundTask_PlayCryWithEcho(u8 taskId)
{
u16 species;
s8 pan;
- gTasks[taskId].data[10] = gBattleAnimArgs[0];
+ gTasks[taskId].tLastCry = gBattleAnimArgs[0];
pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
if (IsContest())
@@ -288,8 +294,8 @@ void SoundTask_PlayCryWithEcho(u8 taskId)
else
species = gAnimBattlerSpecies[gBattleAnimAttacker];
- gTasks[taskId].data[1] = species;
- gTasks[taskId].data[2] = pan;
+ gTasks[taskId].tSpecies = species;
+ gTasks[taskId].tPan = pan;
if (species != SPECIES_NONE)
gTasks[taskId].func = SoundTask_PlayCryWithEcho_Step;
@@ -299,39 +305,44 @@ void SoundTask_PlayCryWithEcho(u8 taskId)
static void SoundTask_PlayCryWithEcho_Step(u8 taskId)
{
- u16 species = gTasks[taskId].data[1];
- s8 pan = gTasks[taskId].data[2];
+ u16 species = gTasks[taskId].tSpecies;
+ s8 pan = gTasks[taskId].tPan;
// Note the cases are not in order of execution
- switch (gTasks[taskId].data[9])
+ switch (gTasks[taskId].tState)
{
case 2:
- PlayCry6(species, pan, CRY_MODE_ECHO_END);
- gTasks[taskId].data[9]++;
+ PlayCry_DuckNoRestore(species, pan, CRY_MODE_ECHO_END);
+ gTasks[taskId].tState++;
break;
case 1:
case 3:
case 4:
- gTasks[taskId].data[9]++;
+ gTasks[taskId].tState++;
break;
case 5:
if (IsCryPlaying())
break;
case 0:
StopCryAndClearCrySongs();
- gTasks[taskId].data[9]++;
+ gTasks[taskId].tState++;
break;
default:
- if (gTasks[taskId].data[10] == 0)
- PlayCry6(species, pan, CRY_MODE_ECHO_START);
+ if (!gTasks[taskId].tLastCry)
+ PlayCry_DuckNoRestore(species, pan, CRY_MODE_ECHO_START);
else
- PlayCry3(species, pan, CRY_MODE_ECHO_START);
+ PlayCry_ByMode(species, pan, CRY_MODE_ECHO_START);
DestroyAnimVisualTask(taskId);
break;
}
}
+#undef tSpecies
+#undef tPan
+#undef tState
+#undef tLastCry
+
void SoundTask_PlaySE1WithPanning(u8 taskId)
{
u16 songId = gBattleAnimArgs[0];
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index e45b0c64b..efc327091 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -1681,7 +1681,7 @@ static void LinkOpponentHandleFaintingCry(void)
{
u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
- PlayCry3(species, 25, CRY_MODE_FAINT);
+ PlayCry_ByMode(species, 25, CRY_MODE_FAINT);
LinkOpponentBufferExecCompleted();
}
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index ac6559687..682618c07 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -1513,7 +1513,7 @@ static void LinkPartnerHandleFaintingCry(void)
{
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
- PlayCry3(species, -25, CRY_MODE_FAINT);
+ PlayCry_ByMode(species, -25, CRY_MODE_FAINT);
LinkPartnerBufferExecCompleted();
}
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index d0aaf01fa..2bea4183b 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -1847,7 +1847,7 @@ static void OpponentHandleFaintingCry(void)
{
u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
- PlayCry3(species, 25, CRY_MODE_FAINT);
+ PlayCry_ByMode(species, 25, CRY_MODE_FAINT);
OpponentBufferExecCompleted();
}
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 34559541e..02dc7ce29 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -2926,7 +2926,7 @@ static void PlayerHandleFaintingCry(void)
{
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
- PlayCry3(species, -25, CRY_MODE_FAINT);
+ PlayCry_ByMode(species, -25, CRY_MODE_FAINT);
PlayerBufferExecCompleted();
}
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c
index 863cdbdea..745354795 100644
--- a/src/battle_controller_player_partner.c
+++ b/src/battle_controller_player_partner.c
@@ -1763,7 +1763,7 @@ static void PlayerPartnerHandleFaintingCry(void)
{
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
- PlayCry3(species, -25, CRY_MODE_FAINT);
+ PlayCry_ByMode(species, -25, CRY_MODE_FAINT);
PlayerPartnerBufferExecCompleted();
}
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
index 5394250ee..0af395693 100644
--- a/src/battle_controller_recorded_opponent.c
+++ b/src/battle_controller_recorded_opponent.c
@@ -1621,7 +1621,7 @@ static void RecordedOpponentHandleFaintingCry(void)
{
u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
- PlayCry3(species, 25, CRY_MODE_FAINT);
+ PlayCry_ByMode(species, 25, CRY_MODE_FAINT);
RecordedOpponentBufferExecCompleted();
}
diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c
index d634fca5d..264e27344 100644
--- a/src/battle_controller_recorded_player.c
+++ b/src/battle_controller_recorded_player.c
@@ -1644,7 +1644,7 @@ static void RecordedPlayerHandleFaintingCry(void)
{
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
- PlayCry3(species, -25, CRY_MODE_FAINT);
+ PlayCry_ByMode(species, -25, CRY_MODE_FAINT);
RecordedPlayerBufferExecCompleted();
}
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index a26f31b92..78a57a0f7 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -616,7 +616,7 @@ static void SafariHandleFaintingCry(void)
{
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
- PlayCry1(species, 25);
+ PlayCry_Normal(species, 25);
SafariBufferExecCompleted();
}
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index d018fe1c0..29e8d2b7d 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -1415,7 +1415,9 @@ static void WallyHandleFaintingCry(void)
{
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
- PlayCry1(species, 25);
+ // Seems that it doesn't bother using CRY_MODE_FAINT because
+ // Wally's Pokémon during the tutorial is never intended to faint.
+ PlayCry_Normal(species, 25);
WallyBufferExecCompleted();
}
diff --git a/src/contest_util.c b/src/contest_util.c
index e1c95d4a2..5f23231ac 100644
--- a/src/contest_util.c
+++ b/src/contest_util.c
@@ -1578,7 +1578,7 @@ static void SpriteCB_WinnerMonSlideIn(struct Sprite *sprite)
{
if (++sprite->data[0] == 10)
{
- PlayCry1(sprite->data[1], 0);
+ PlayCry_Normal(sprite->data[1], 0);
sprite->data[1] = 0;
}
}
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 1d583343f..99ff26821 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -1094,7 +1094,7 @@ static void Task_TradeEvolutionScene(u8 taskId)
case T_EVOSTATE_INTRO_CRY:
if (!IsTextPrinterActive(0))
{
- PlayCry1(gTasks[taskId].tPreEvoSpecies, 0);
+ PlayCry_Normal(gTasks[taskId].tPreEvoSpecies, 0);
gTasks[taskId].tState++;
}
break;
diff --git a/src/field_effect.c b/src/field_effect.c
index 7e1ebdff4..3d0c179be 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -2565,15 +2565,17 @@ bool8 FldEff_FieldMoveShowMon(void)
return FALSE;
}
+#define SHOW_MON_CRY_NO_DUCKING (1 << 31)
+
bool8 FldEff_FieldMoveShowMonInit(void)
{
struct Pokemon *pokemon;
- u32 flag = gFieldEffectArguments[0] & 0x80000000;
+ bool32 noDucking = gFieldEffectArguments[0] & SHOW_MON_CRY_NO_DUCKING;
pokemon = &gPlayerParty[(u8)gFieldEffectArguments[0]];
gFieldEffectArguments[0] = GetMonData(pokemon, MON_DATA_SPECIES);
gFieldEffectArguments[1] = GetMonData(pokemon, MON_DATA_OT_ID);
gFieldEffectArguments[2] = GetMonData(pokemon, MON_DATA_PERSONALITY);
- gFieldEffectArguments[0] |= flag;
+ gFieldEffectArguments[0] |= noDucking;
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON);
FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
return FALSE;
@@ -2913,17 +2915,17 @@ static bool8 SlideIndoorBannerOffscreen(struct Task *task)
static u8 InitFieldMoveMonSprite(u32 species, u32 otId, u32 personality)
{
- u16 v0;
+ bool16 noDucking;
u8 monSprite;
struct Sprite *sprite;
- v0 = (species & 0x80000000) >> 16;
- species &= 0x7fffffff;
+ noDucking = (species & SHOW_MON_CRY_NO_DUCKING) >> 16;
+ species &= ~SHOW_MON_CRY_NO_DUCKING;
monSprite = CreateMonSprite_FieldMove(species, otId, personality, 320, 80, 0);
sprite = &gSprites[monSprite];
sprite->callback = SpriteCallbackDummy;
sprite->oam.priority = 0;
sprite->sSpecies = species;
- sprite->data[6] = v0;
+ sprite->data[6] = noDucking;
return monSprite;
}
@@ -2935,13 +2937,9 @@ static void SpriteCB_FieldMoveMonSlideOnscreen(struct Sprite *sprite)
sprite->sOnscreenTimer = 30;
sprite->callback = SpriteCB_FieldMoveMonWaitAfterCry;
if (sprite->data[6])
- {
- PlayCry2(sprite->sSpecies, 0, 0x7d, 0xa);
- }
+ PlayCry_NormalNoDucking(sprite->sSpecies, 0, CRY_VOLUME_RS, CRY_PRIORITY_NORMAL);
else
- {
- PlayCry1(sprite->sSpecies, 0);
- }
+ PlayCry_Normal(sprite->sSpecies, 0);
}
}
@@ -3021,7 +3019,7 @@ static void SurfFieldEffect_ShowMon(struct Task *task)
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
if (ObjectEventCheckHeldMovementStatus(objectEvent))
{
- gFieldEffectArguments[0] = task->tMonId | 0x80000000;
+ gFieldEffectArguments[0] = task->tMonId | SHOW_MON_CRY_NO_DUCKING;
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
task->tState++;
}
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index 8d69b03bc..8c10d1400 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -983,7 +983,7 @@ static void Task_HofPC_PrintMonInfo(u8 taskId)
if (currMon->species != SPECIES_EGG)
{
StopCryAndClearCrySongs();
- PlayCry1(currMon->species, 0);
+ PlayCry_Normal(currMon->species, 0);
}
HallOfFame_PrintMonInfo(currMon, 0, 14);
diff --git a/src/intro.c b/src/intro.c
index 00cb42ac2..3e805dca4 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -1925,7 +1925,7 @@ static void Task_Scene3_Groudon(u8 taskId)
tScreenX = 80;
tScreenY = 41;
tDelay = 16;
- PlayCryInternal(SPECIES_GROUDON, 0, 100, 10, CRY_MODE_NORMAL);
+ PlayCryInternal(SPECIES_GROUDON, 0, 100, CRY_PRIORITY_NORMAL, CRY_MODE_NORMAL);
tState++;
}
break;
@@ -2127,7 +2127,7 @@ static void Task_Scene3_Kyogre(u8 taskId)
{
tDelay = 1;
tState++;
- PlayCryInternal(SPECIES_KYOGRE, 0, 120, 10, 0);
+ PlayCryInternal(SPECIES_KYOGRE, 0, 120, CRY_PRIORITY_NORMAL, CRY_MODE_NORMAL);
}
}
break;
diff --git a/src/overworld.c b/src/overworld.c
index 8b32b286c..0e1c211c1 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -1254,7 +1254,7 @@ static void PlayAmbientCry(void)
return;
pan = (Random() % 88) + 212;
volume = (Random() % 30) + 50;
- PlayCry2(sAmbientCrySpecies, pan, volume, 1);
+ PlayCry_NormalNoDucking(sAmbientCrySpecies, pan, volume, CRY_PRIORITY_AMBIENT);
}
void UpdateAmbientCry(s16 *state, u16 *delayCounter)
diff --git a/src/pokeball.c b/src/pokeball.c
index 4e7386f4f..a0800d38f 100644
--- a/src/pokeball.c
+++ b/src/pokeball.c
@@ -665,10 +665,11 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
gTasks[taskId].tCryTaskState = wantedCry + 1;
break;
case 1:
+ // Play single cry
if (ShouldPlayNormalMonCry(mon) == TRUE)
- PlayCry3(species, pan, CRY_MODE_NORMAL);
+ PlayCry_ByMode(species, pan, CRY_MODE_NORMAL);
else
- PlayCry3(species, pan, CRY_MODE_WEAK);
+ PlayCry_ByMode(species, pan, CRY_MODE_WEAK);
gBattleSpritesDataPtr->healthBoxesData[battlerId].waitForCry = FALSE;
DestroyTask(taskId);
break;
@@ -680,10 +681,11 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
case 20:
if (gTasks[taskId].tCryTaskFrames == 0)
{
+ // Play first doubles cry
if (ShouldPlayNormalMonCry(mon) == TRUE)
- PlayCry4(species, pan, CRY_MODE_DOUBLES);
+ PlayCry_ReleaseDouble(species, pan, CRY_MODE_DOUBLES);
else
- PlayCry4(species, pan, CRY_MODE_WEAK_DOUBLES);
+ PlayCry_ReleaseDouble(species, pan, CRY_MODE_WEAK_DOUBLES);
gBattleSpritesDataPtr->healthBoxesData[battlerId].waitForCry = FALSE;
DestroyTask(taskId);
@@ -719,10 +721,11 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
gTasks[taskId].tCryTaskFrames--;
break;
}
+ // Play second doubles cry
if (ShouldPlayNormalMonCry(mon) == TRUE)
- PlayCry4(species, pan, CRY_MODE_NORMAL);
+ PlayCry_ReleaseDouble(species, pan, CRY_MODE_NORMAL);
else
- PlayCry4(species, pan, CRY_MODE_WEAK);
+ PlayCry_ReleaseDouble(species, pan, CRY_MODE_WEAK);
gBattleSpritesDataPtr->healthBoxesData[battlerId].waitForCry = FALSE;
DestroyTask(taskId);
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index da9b7767c..98a76421c 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -945,7 +945,7 @@ static void SpriteCB_MonJumpForPokeblock(struct Sprite* sprite)
// Play cry at jump peak
if (sprite->sSpeed == 0)
- PlayCry1(sprite->sSpecies, 0);
+ PlayCry_Normal(sprite->sSpecies, 0);
if (sprite->sSpeed == 9)
sprite->callback = SpriteCallbackDummy;
diff --git a/src/pokedex.c b/src/pokedex.c
index 8a8576243..91ca5887e 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -3309,7 +3309,7 @@ static void Task_LoadInfoScreen(u8 taskId)
if (!gTasks[taskId].tSkipCry)
{
StopCryAndClearCrySongs();
- PlayCry2(NationalPokedexNumToSpecies(sPokedexListItem->dexNum), 0, 125, 10);
+ PlayCry_NormalNoDucking(NationalPokedexNumToSpecies(sPokedexListItem->dexNum), 0, CRY_VOLUME_RS, CRY_PRIORITY_NORMAL);
}
else
{
@@ -4010,7 +4010,7 @@ static void Task_DisplayCaughtMonDexPage(u8 taskId)
case 6:
if (!gPaletteFade.active)
{
- PlayCry1(NationalPokedexNumToSpecies(dexNum), 0);
+ PlayCry_Normal(NationalPokedexNumToSpecies(dexNum), 0);
gTasks[taskId].tPalTimer = 0;
gTasks[taskId].func = Task_HandleCaughtMonPageInput;
}
diff --git a/src/pokedex_cry_screen.c b/src/pokedex_cry_screen.c
index 350946f3b..d62cf86cb 100644
--- a/src/pokedex_cry_screen.c
+++ b/src/pokedex_cry_screen.c
@@ -345,7 +345,7 @@ void CryScreenPlayButton(u16 species)
static void PlayCryScreenCry(u16 species)
{
- PlayCry2(species, 0, 125, 10);
+ PlayCry_NormalNoDucking(species, 0, CRY_VOLUME_RS, CRY_PRIORITY_NORMAL);
sDexCryScreen->cryState = 1;
}
diff --git a/src/pokemon.c b/src/pokemon.c
index 0f943734b..1607e1a40 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -6690,14 +6690,14 @@ void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry,
{
// No animation, only check if cry needs to be played
if (!noCry)
- PlayCry1(species, pan);
+ PlayCry_Normal(species, pan);
sprite->callback = SpriteCallbackDummy;
}
else
{
if (!noCry)
{
- PlayCry1(species, pan);
+ PlayCry_Normal(species, pan);
if (HasTwoFramesAnimation(species))
StartSpriteAnim(sprite, 1);
}
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index ca31a0045..72289fa75 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -3929,9 +3929,9 @@ static void PlayMonCry(void)
if (!summary->isEgg)
{
if (ShouldPlayNormalMonCry(&sMonSummaryScreen->currentMon) == TRUE)
- PlayCry3(summary->species2, 0, CRY_MODE_NORMAL);
+ PlayCry_ByMode(summary->species2, 0, CRY_MODE_NORMAL);
else
- PlayCry3(summary->species2, 0, CRY_MODE_WEAK);
+ PlayCry_ByMode(summary->species2, 0, CRY_MODE_WEAK);
}
}
diff --git a/src/rayquaza_scene.c b/src/rayquaza_scene.c
index 642fe6233..7dfe141c1 100644
--- a/src/rayquaza_scene.c
+++ b/src/rayquaza_scene.c
@@ -3064,7 +3064,7 @@ static void SpriteCB_ChasesAway_Rayquaza(struct Sprite *sprite)
ChasesAway_SetRayquazaAnim(sprite, 3, 48, 16);
sprite->x2 = 1;
gSprites[sprite->sTailSpriteId].x2 = 1;
- PlayCry1(SPECIES_RAYQUAZA, 0);
+ PlayCry_Normal(SPECIES_RAYQUAZA, 0);
CreateTask(Task_ChasesAway_AnimateRing, 0);
}
else
diff --git a/src/roulette.c b/src/roulette.c
index ea0f9332b..6c1dce1ed 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -4449,13 +4449,13 @@ static void SetBallStuck(struct Sprite *sprite)
if (sRoulette->useTaillow)
{
if (sprite->sStuckOnWheelLeft)
- PlayCry1(SPECIES_TAILLOW, -63);
+ PlayCry_Normal(SPECIES_TAILLOW, -63);
else
- PlayCry1(SPECIES_TAILLOW, 63);
+ PlayCry_Normal(SPECIES_TAILLOW, 63);
}
else
{
- PlayCry1(SPECIES_SHROOMISH, -63);
+ PlayCry_Normal(SPECIES_SHROOMISH, -63);
}
slotsToSkip = 2;
@@ -4719,9 +4719,9 @@ static void SpriteCB_Taillow_FlyIn(struct Sprite *sprite)
{
m4aSongNumStartOrChange(SE_TAILLOW_WING_FLAP);
if (sRoulette->ball->sStuckOnWheelLeft == 0)
- PlayCry1(SPECIES_TAILLOW, 63);
+ PlayCry_Normal(SPECIES_TAILLOW, 63);
else
- PlayCry1(SPECIES_TAILLOW, -63);
+ PlayCry_Normal(SPECIES_TAILLOW, -63);
StartSpriteAnim(sprite, sRoulette->ball->sStuckOnWheelLeft + 2);
sprite->data[1] = 45;
sprite->callback = SpriteCB_Taillow_PickUpBall;
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 57f133d0d..1fe8e6338 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -2026,7 +2026,7 @@ bool8 ScrCmd_playmoncry(struct ScriptContext *ctx)
u16 species = VarGet(ScriptReadHalfword(ctx));
u16 mode = VarGet(ScriptReadHalfword(ctx));
- PlayCry5(species, mode);
+ PlayCry_Script(species, mode);
return FALSE;
}
diff --git a/src/sound.c b/src/sound.c
index ee5113f89..c2a8c9e8c 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -54,8 +54,6 @@ static const struct Fanfare sFanfares[] = {
[FANFARE_REGISTER_MATCH_CALL] = { MUS_REGISTER_MATCH_CALL, 135 },
};
-#define CRY_VOLUME 120 // was 125 in R/S
-
void InitMapMusic(void)
{
gDisableMusic = FALSE;
@@ -300,66 +298,69 @@ bool8 IsBGMStopped(void)
return FALSE;
}
-void PlayCry1(u16 species, s8 pan)
+void PlayCry_Normal(u16 species, s8 pan)
{
m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 85);
- PlayCryInternal(species, pan, CRY_VOLUME, 10, CRY_MODE_NORMAL);
+ PlayCryInternal(species, pan, CRY_VOLUME, CRY_PRIORITY_NORMAL, CRY_MODE_NORMAL);
gPokemonCryBGMDuckingCounter = 2;
RestoreBGMVolumeAfterPokemonCry();
}
-void PlayCry2(u16 species, s8 pan, s8 volume, u8 priority)
+void PlayCry_NormalNoDucking(u16 species, s8 pan, s8 volume, u8 priority)
{
PlayCryInternal(species, pan, volume, priority, CRY_MODE_NORMAL);
}
-void PlayCry3(u16 species, s8 pan, u8 mode)
+// Assuming it's not CRY_MODE_DOUBLES, this is equivalent to PlayCry_Normal except it allows other modes.
+void PlayCry_ByMode(u16 species, s8 pan, u8 mode)
{
if (mode == CRY_MODE_DOUBLES)
{
- PlayCryInternal(species, pan, CRY_VOLUME, 10, mode);
+ PlayCryInternal(species, pan, CRY_VOLUME, CRY_PRIORITY_NORMAL, mode);
}
else
{
m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 85);
- PlayCryInternal(species, pan, CRY_VOLUME, 10, mode);
+ PlayCryInternal(species, pan, CRY_VOLUME, CRY_PRIORITY_NORMAL, mode);
gPokemonCryBGMDuckingCounter = 2;
RestoreBGMVolumeAfterPokemonCry();
}
}
-void PlayCry4(u16 species, s8 pan, u8 mode)
+// Used when releasing multiple Pokémon at once in battle.
+void PlayCry_ReleaseDouble(u16 species, s8 pan, u8 mode)
{
if (mode == CRY_MODE_DOUBLES)
{
- PlayCryInternal(species, pan, CRY_VOLUME, 10, mode);
+ PlayCryInternal(species, pan, CRY_VOLUME, CRY_PRIORITY_NORMAL, mode);
}
else
{
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 85);
- PlayCryInternal(species, pan, CRY_VOLUME, 10, mode);
+ PlayCryInternal(species, pan, CRY_VOLUME, CRY_PRIORITY_NORMAL, mode);
}
}
-void PlayCry6(u16 species, s8 pan, u8 mode) // not present in R/S
+// Duck the BGM but don't restore it. Not present in R/S
+void PlayCry_DuckNoRestore(u16 species, s8 pan, u8 mode)
{
if (mode == CRY_MODE_DOUBLES)
{
- PlayCryInternal(species, pan, CRY_VOLUME, 10, mode);
+ PlayCryInternal(species, pan, CRY_VOLUME, CRY_PRIORITY_NORMAL, mode);
}
else
{
m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 85);
- PlayCryInternal(species, pan, CRY_VOLUME, 10, mode);
+ PlayCryInternal(species, pan, CRY_VOLUME, CRY_PRIORITY_NORMAL, mode);
gPokemonCryBGMDuckingCounter = 2;
}
}
-void PlayCry5(u16 species, u8 mode)
+void PlayCry_Script(u16 species, u8 mode)
{
m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 85);
- PlayCryInternal(species, 0, CRY_VOLUME, 10, mode);
+ PlayCryInternal(species, 0, CRY_VOLUME, CRY_PRIORITY_NORMAL, mode);
gPokemonCryBGMDuckingCounter = 2;
RestoreBGMVolumeAfterPokemonCry();
}
@@ -470,25 +471,26 @@ void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode)
index = species % 128;
table = species / 128;
+ #define GET_CRY(speciesIndex, tableId, reversed) \
+ ((reversed) ? &gCryTable_Reverse[(128 * (tableId)) + (speciesIndex)] : &gCryTable[(128 * (tableId)) + (speciesIndex)])
+
switch (table)
{
case 0:
- gMPlay_PokemonCry = SetPokemonCryTone(
- reverse ? &gCryTable_Reverse[(128 * 0) + index] : &gCryTable[(128 * 0) + index]);
+ gMPlay_PokemonCry = SetPokemonCryTone(GET_CRY(index, 0, reverse));
break;
case 1:
- gMPlay_PokemonCry = SetPokemonCryTone(
- reverse ? &gCryTable_Reverse[(128 * 1) + index] : &gCryTable[(128 * 1) + index]);
+ gMPlay_PokemonCry = SetPokemonCryTone(GET_CRY(index, 1, reverse));
break;
case 2:
- gMPlay_PokemonCry = SetPokemonCryTone(
- reverse ? &gCryTable_Reverse[(128 * 2) + index] : &gCryTable[(128 * 2) + index]);
+ gMPlay_PokemonCry = SetPokemonCryTone(GET_CRY(index, 2, reverse));
break;
case 3:
- gMPlay_PokemonCry = SetPokemonCryTone(
- reverse ? &gCryTable_Reverse[(128 * 3) + index] : &gCryTable[(128 * 3) + index]);
+ gMPlay_PokemonCry = SetPokemonCryTone(GET_CRY(index, 3, reverse));
break;
}
+
+ #undef GET_CRY
}
bool8 IsCryFinished(void)
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 942f60273..f8282c822 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -532,7 +532,7 @@ static void Task_WaitForStarterSprite(u8 taskId)
static void Task_AskConfirmStarter(u8 taskId)
{
- PlayCry1(GetStarterPokemon(gTasks[taskId].tStarterSelection), 0);
+ PlayCry_Normal(GetStarterPokemon(gTasks[taskId].tStarterSelection), 0);
FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized(0, FONT_NORMAL, gText_ConfirmStarterChoice, 0, 1, 0, NULL);
ScheduleBgCopyTilemapToVram(0);
diff --git a/src/trade.c b/src/trade.c
index 475b82d5e..c120e3310 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -3398,7 +3398,7 @@ static bool8 AnimateTradeSequenceCable(void)
DrawTextOnTradeWindow(0, gStringVar4, 0);
if (sTradeData->monSpecies[TRADE_PLAYER] != SPECIES_EGG)
- PlayCry1(sTradeData->monSpecies[TRADE_PLAYER], 0);
+ PlayCry_Normal(sTradeData->monSpecies[TRADE_PLAYER], 0);
sTradeData->state = TS_STATE_BYE_BYE;
sTradeData->timer = 0;
@@ -3869,7 +3869,7 @@ static bool8 AnimateTradeSequenceWireless(void)
DrawTextOnTradeWindow(0, gStringVar4, 0);
if (sTradeData->monSpecies[TRADE_PLAYER] != SPECIES_EGG)
- PlayCry1(sTradeData->monSpecies[TRADE_PLAYER], 0);
+ PlayCry_Normal(sTradeData->monSpecies[TRADE_PLAYER], 0);
sTradeData->state = TS_STATE_BYE_BYE;
sTradeData->timer = 0;