From b333660cd6a47bc233f025fa2d10f1a76754f623 Mon Sep 17 00:00:00 2001 From: Fexty12573 Date: Sun, 30 Mar 2025 23:04:38 +0200 Subject: [PATCH] WIP document pokemon cries --- include/sound.h | 6 +- include/sound_system.h | 11 +- include/unk_02005474.h | 4 +- src/overlay012/ov12_0221FC20.c | 12 +- src/overlay021/ov21_021E4CA4.c | 6 +- src/overlay071/ov71_0223D324.c | 2 +- src/sound.c | 14 +-- src/sound_system.c | 4 +- src/unk_02005474.c | 224 ++++++++++++++++----------------- 9 files changed, 135 insertions(+), 148 deletions(-) diff --git a/include/sound.h b/include/sound.h index 8589133cfb..680d2a09e8 100644 --- a/include/sound.h +++ b/include/sound.h @@ -55,7 +55,7 @@ u8 Sound_IsBGMFixed(void); void Sound_SetCurrentBGM(u16 bgmID); u16 Sound_GetCurrentBGM(); void Sound_SetNextBGM(u16 bgmID); -u16 Sound_GetNextBGM(); +u16 Sound_GetNextBGM(void); void Sound_SetFieldBGM(u16 bgmID); void Sound_SetScene(u8 scene); void Sound_SetSubScene(u8 scene); @@ -99,9 +99,9 @@ void Sound_SetReverbVolume(int param0, int param1); BOOL sub_02004EFC(void); void sub_02004F44(void); void sub_02004F4C(int param0); -void sub_02004F68(int param0, u16 param1, int param2); +void Sound_SetPitchForHandle(enum SoundHandleType param0, u16 param1, int param2); void sub_02004F7C(u16 param0, u16 param1, int param2); -void sub_02004F94(int param0, u16 param1, int param2); +void Sound_SetPanForHandle(enum SoundHandleType param0, u16 param1, int param2); void sub_02004FA8(int param0, int param1); void Sound_SetPlaybackMode(BOOL param0); void Sound_SetFadeCounter(int frames); diff --git a/include/sound_system.h b/include/sound_system.h index b52627e0a3..2f8b57ad61 100644 --- a/include/sound_system.h +++ b/include/sound_system.h @@ -43,7 +43,7 @@ enum SoundHandleType { SOUND_HANDLE_TYPE_SFX_3, SOUND_HANDLE_TYPE_SFX_4, SOUND_HANDLE_TYPE_BGM, - // Unknown (8) + SOUND_HANDLE_TYPE_ECHO, SOUND_HANDLE_TYPE_COUNT = 9 }; @@ -59,8 +59,7 @@ enum SoundSystemParam { SOUND_SYSTEM_PARAM_FADE_COUNTER = 7, // A counter used to track how many frames are left in a fade operation SOUND_SYSTEM_PARAM_FOLLOW_UP_WAIT_FRAMES, // Keeps track of how many frames are let until the next BGM is played SOUND_SYSTEM_PARAM_FOLLOW_UP_FADE_FRAMES, // Keeps track of how many frames the next BGM should be faded in for - - SOUND_SYSTEM_PARAM_CURRENT_BGM = 10, // The current BGM ID + SOUND_SYSTEM_PARAM_CURRENT_BGM, // The current BGM ID SOUND_SYSTEM_PARAM_NEXT_BGM, // The next BGM ID SOUND_SYSTEM_PARAM_FIELD_BGM_PAUSED, // Whether field BGM is paused SOUND_SYSTEM_PARAM_BGM_PAUSED, // Whether non-field BGM is paused @@ -68,8 +67,8 @@ enum SoundSystemParam { SOUND_SYSTEM_PARAM_WAVE_OUT_REVERSED_PLAYBACK, // Whether reversed waveform playback is enabled SOUND_SYSTEM_PARAM_WAVE_OUT_PRIMARY_ALLOCATED, // Whether the primary waveform channel is currently allocated SOUND_SYSTEM_PARAM_WAVE_OUT_SECONDARY_ALLOCATED, // Whether the secondary waveform channel is currently allocated - - SOUND_SYSTEM_PARAM_FIELD_BGM_BANK_STATE = 19, // Whether the field BGM bank needs to be swapped or not. See FIELD_BGM_BANK_STATE_* + SOUND_SYSTEM_PARAM_ECHO_ENABLED, // Whether pokemon cry echo is enabled + SOUND_SYSTEM_PARAM_FIELD_BGM_BANK_STATE, // Whether the field BGM bank needs to be swapped or not. See FIELD_BGM_BANK_STATE_* // A sound scene refers to a specific set of sound data and // parameters. They're an easy way to switch the sound system @@ -120,7 +119,7 @@ typedef struct SoundSystem { u8 waveOutReversedPlayback; u8 waveOutPrimaryAllocated; u8 waveOutSecondaryAllocated; - u8 unk_BCD63; + u8 echoEnabled; u8 fieldBGMBankState; u8 unk_BCD65; u8 mainScene; diff --git a/include/unk_02005474.h b/include/unk_02005474.h index 23f466a2f3..9bcdb819f0 100644 --- a/include/unk_02005474.h +++ b/include/unk_02005474.h @@ -4,8 +4,6 @@ #include "constants/sound.h" #include "sound_system.h" -#include "generated/sdat.h" - #define SOUND_EFFECT_TRACK(TRACK) (1 << (TRACK)) #define SOUND_EFFECT_TRACK_ALL 0xFFFF @@ -34,7 +32,7 @@ BOOL Sound_IsEffectPlaying(u16 seqID); BOOL Sound_IsAnyEffectPlaying(); // Pans the given sound effect sequence either to the left (pan < 0) or to the right (pan > 0) -// tracks is for example (SOUND_EFFECT_TRACK(10) | SOUND_EFFECT_TRACK(2)) or SOUND_EFFECT_TRACK_ALL +// tracks is for example (SOUND_PLAYBACK_TRACK(10) | SOUND_PLAYBACK_TRACK(2)) or SOUND_PLAYBACK_TRACK_ALL void Sound_PanEffect(u16 seqID, u16 tracks, int pan); void Sound_PanAllEffects(int pan); BOOL Sound_PlayPokemonCry(u16 species, u8 form); diff --git a/src/overlay012/ov12_0221FC20.c b/src/overlay012/ov12_0221FC20.c index 08ce0abd5e..ba7d8b4641 100644 --- a/src/overlay012/ov12_0221FC20.c +++ b/src/overlay012/ov12_0221FC20.c @@ -881,7 +881,7 @@ static BOOL ov12_0222040C(UnkStruct_ov12_02220314 *param0) param0->unk_18--; Sound_PlayEffect(param0->unk_1A); - Sound_PanEffect(param0->unk_1A, SOUND_EFFECT_TRACK_ALL, param0->unk_14); + Sound_PanEffect(param0->unk_1A, SOUND_PLAYBACK_TRACK_ALL, param0->unk_14); if (param0->unk_18 == 0) { v0 = 0; @@ -896,7 +896,7 @@ static BOOL ov12_0222044C(UnkStruct_ov12_02220314 *param0) if ((param0->unk_03--) == 0) { Sound_PlayEffect(param0->unk_1A); - Sound_PanEffect(param0->unk_1A, SOUND_EFFECT_TRACK_ALL, param0->unk_14); + Sound_PanEffect(param0->unk_1A, SOUND_PLAYBACK_TRACK_ALL, param0->unk_14); v0 = 0; } @@ -3302,7 +3302,7 @@ static void ov12_02222984(UnkStruct_ov12_0221FCDC *param0) v1 = ov12_0222317C(param0, v1); Sound_PlayEffect(v0); - Sound_PanEffect(v0, SOUND_EFFECT_TRACK_ALL, v1); + Sound_PanEffect(v0, SOUND_PLAYBACK_TRACK_ALL, v1); } static void ov12_022229BC(UnkStruct_ov12_0221FCDC *param0) @@ -3348,7 +3348,7 @@ static void ov12_022229D8(UnkStruct_ov12_0221FCDC *param0) v0->unk_10 = ov12_02223234(v0->unk_08, v0->unk_0C, v0->unk_10); Sound_PlayEffect(v0->unk_1A); - Sound_PanEffect(v0->unk_1A, SOUND_EFFECT_TRACK_ALL, v0->unk_08); + Sound_PanEffect(v0->unk_1A, SOUND_PLAYBACK_TRACK_ALL, v0->unk_08); ov12_02220344(param0, v0); } @@ -3379,7 +3379,7 @@ static void ov12_02222A78(UnkStruct_ov12_0221FCDC *param0) param0->unk_18 += 1; Sound_PlayEffect(v0->unk_1A); - Sound_PanEffect(v0->unk_1A, SOUND_EFFECT_TRACK_ALL, v0->unk_08); + Sound_PanEffect(v0->unk_1A, SOUND_PLAYBACK_TRACK_ALL, v0->unk_08); ov12_02220344(param0, v0); } @@ -3414,7 +3414,7 @@ static void ov12_02222AF0(UnkStruct_ov12_0221FCDC *param0) v0->unk_10 = ov12_0222317C(param0, v0->unk_10); Sound_PlayEffect(v0->unk_1A); - Sound_PanEffect(v0->unk_1A, SOUND_EFFECT_TRACK_ALL, v0->unk_08); + Sound_PanEffect(v0->unk_1A, SOUND_PLAYBACK_TRACK_ALL, v0->unk_08); ov12_02220344(param0, v0); } diff --git a/src/overlay021/ov21_021E4CA4.c b/src/overlay021/ov21_021E4CA4.c index 13334e1713..69708f67b3 100644 --- a/src/overlay021/ov21_021E4CA4.c +++ b/src/overlay021/ov21_021E4CA4.c @@ -1347,7 +1347,7 @@ static void ov21_021E5F00(UnkStruct_ov21_021E51DC *param0) { if (param0->unk_2C) { ov21_021E5FF4(param0->unk_3C); - sub_02004F94(1, 0xffff, param0->unk_40); + Sound_SetPanForHandle(1, 0xffff, param0->unk_40); ov21_021E5F28(param0->unk_44); } } @@ -1412,6 +1412,6 @@ static void ov21_021E5FD0(UnkStruct_ov21_021E4DA4 *param0, const UnkStruct_ov21_ static void ov21_021E5FF4(int param0) { - sub_02004F68(1, 0xffff, param0); - sub_02004F68(8, 0xffff, 20 + param0); + Sound_SetPitchForHandle(1, 0xffff, param0); + Sound_SetPitchForHandle(8, 0xffff, 20 + param0); } diff --git a/src/overlay071/ov71_0223D324.c b/src/overlay071/ov71_0223D324.c index 37cab4f776..955a052713 100644 --- a/src/overlay071/ov71_0223D324.c +++ b/src/overlay071/ov71_0223D324.c @@ -150,7 +150,7 @@ static void ov71_0223D470(int param0, const int param1, const u8 param2) int v0 = 152 * (4 - param2); Sound_PlaySequenceWithPlayer((3 + param0), (3 + param0), 1684); - sub_02004F68((3 + param0), 0xffff, (Unk_ov71_0223D77C[param1] - v0)); + Sound_SetPitchForHandle((3 + param0), 0xffff, (Unk_ov71_0223D77C[param1] - v0)); return; } diff --git a/src/sound.c b/src/sound.c index 975cece7bc..2a49ead787 100644 --- a/src/sound.c +++ b/src/sound.c @@ -43,9 +43,9 @@ BOOL sub_02004EFC(void); void sub_02004F44(void); void sub_02004F4C(int param0); void sub_020052C8(void *param0, void *param1, u32 param2, NNSSndCaptureFormat param3, void *param4); -void sub_02004F68(int param0, u16 param1, int param2); +void Sound_SetPitchForHandle(enum SoundHandleType param0, u16 param1, int param2); void sub_02004F7C(u16 param0, u16 param1, int param2); -void sub_02004F94(int param0, u16 param1, int param2); +void Sound_SetPanForHandle(enum SoundHandleType param0, u16 param1, int param2); void sub_02004FA8(int param0, int param1); void Sound_SetMasterVolume(int param0); void *sub_02005014(void); @@ -1022,10 +1022,9 @@ void sub_02004F4C(int param0) return; } -void sub_02004F68(int param0, u16 param1, int pitch) +void Sound_SetPitchForHandle(enum SoundHandleType handleType, u16 tracks, int pitch) { - NNS_SndPlayerSetTrackPitch(SoundSystem_GetSoundHandle(param0), param1, pitch); - return; + NNS_SndPlayerSetTrackPitch(SoundSystem_GetSoundHandle(handleType), tracks, pitch); } void sub_02004F7C(u16 param0, u16 param1, int param2) @@ -1033,14 +1032,13 @@ void sub_02004F7C(u16 param0, u16 param1, int param2) u8 v0 = Sound_GetPlayerForSequence(param0); int v1 = SoundSystem_GetSoundHandleTypeFromPlayerID(v0); - sub_02004F68(v1, param1, param2); + Sound_SetPitchForHandle(v1, param1, param2); return; } -void sub_02004F94(int param0, u16 param1, int param2) +void Sound_SetPanForHandle(enum SoundHandleType param0, u16 param1, int param2) { NNS_SndPlayerSetTrackPan(SoundSystem_GetSoundHandle(param0), param1, param2); - return; } void sub_02004FA8(int param0, int param1) diff --git a/src/sound_system.c b/src/sound_system.c index 6c751af10b..307ba2512f 100644 --- a/src/sound_system.c +++ b/src/sound_system.c @@ -190,8 +190,8 @@ void *SoundSystem_GetParam(enum SoundSystemParam param) return &soundSys->waveOutPrimaryAllocated; case SOUND_SYSTEM_PARAM_WAVE_OUT_SECONDARY_ALLOCATED: return &soundSys->waveOutSecondaryAllocated; - case 18: - return &soundSys->unk_BCD63; + case SOUND_SYSTEM_PARAM_ECHO_ENABLED: + return &soundSys->echoEnabled; case SOUND_SYSTEM_PARAM_FIELD_BGM_BANK_STATE: return &soundSys->fieldBGMBankState; case 20: diff --git a/src/unk_02005474.c b/src/unk_02005474.c index cbe8d944c4..c1a64922fb 100644 --- a/src/unk_02005474.c +++ b/src/unk_02005474.c @@ -31,7 +31,7 @@ static BOOL Sound_Impl_PlayFieldBGM(u16 seqID, u8 playerID, enum SoundHandleType BOOL sub_02005588(u8 param0, u16 param1); static void Sound_Impl_ResetBGM(void); void Sound_StopAll(void); -static void sub_02005E4C(u16 param0, int param1, int param2); +static void Sound_Impl_SetPokemonCryVolume(u16 param0, enum SoundHandleType param1, int param2); void Sound_StopPokemonCries(int param0); int sub_0200598C(void); void sub_02005E64(int param0, int heapID); @@ -39,8 +39,8 @@ static void sub_02005EB0(SysTask *param0, void *param1); void sub_02005F24(void); static BOOL Sound_Impl_IsShayminSkyForm(u16 species, u8 form); void sub_0200605C(void); -static BOOL sub_020060EC(u16 species, s8 pitch, u8 form); -static BOOL sub_02006120(u16 param0, s8 param1, int param2, int param3, int heapID); +static BOOL Sound_Impl_PlayPokemonCryEcho(u16 species, s8 pitch, u8 form); +static BOOL Sound_PlayPokemonCryReversedEcho(u16 param0, s8 param1, int param2, int param3, int heapID); BOOL Sound_PlayFanfare(u16 param0); BOOL Sound_UpdateFanfareDelay(void); static void Sound_Impl_StopFanfare(int param0); @@ -257,7 +257,7 @@ void Sound_StopAll(void) BOOL Sound_PlayPannedEffect(u16 seqID, int pan) { int result = Sound_PlayEffect(seqID); - Sound_PanEffect(seqID, SOUND_EFFECT_TRACK_ALL, pan); + Sound_PanEffect(seqID, SOUND_PLAYBACK_TRACK_ALL, pan); return result; } @@ -326,7 +326,7 @@ void Sound_PanAllEffects(int pan) enum SoundHandleType handleType = SoundSystem_GetSoundHandleTypeFromPlayerID(PLAYER_SE_1); for (int i = 0; i < 4; i++) { - NNS_SndPlayerSetTrackPan(SoundSystem_GetSoundHandle(handleType + i), SOUND_EFFECT_TRACK_ALL, pan); + NNS_SndPlayerSetTrackPan(SoundSystem_GetSoundHandle(handleType + i), SOUND_PLAYBACK_TRACK_ALL, pan); } } @@ -423,53 +423,52 @@ int sub_0200598C(void) return Sound_GetNumberOfPlayingSequencesForPlayer(0); } -BOOL Sound_PlayPokemonCryEx(enum PokemonCryMod cryMod, u16 species, int param2, int volume, int heapID, u8 form) +BOOL Sound_PlayPokemonCryEx(enum PokemonCryMod cryMod, u16 species, int pan, int volume, int heapID, u8 form) { - int v0, v1; + int waveOutPan, echoVolume; u16 v3; - int v4, v5, v6, v7; - u8 *v8 = SoundSystem_GetParam(16); - u8 *v9 = SoundSystem_GetParam(17); - u8 *v10 = SoundSystem_GetParam(18); + BOOL result1, v5, result3, v7; + u8 *wavePrimaryAllocated = SoundSystem_GetParam(SOUND_SYSTEM_PARAM_WAVE_OUT_PRIMARY_ALLOCATED); + u8 *waveSecondaryAllocated = SoundSystem_GetParam(SOUND_SYSTEM_PARAM_WAVE_OUT_SECONDARY_ALLOCATED); + u8 *echoEnabled = SoundSystem_GetParam(SOUND_SYSTEM_PARAM_ECHO_ENABLED); u8 *v11 = SoundSystem_GetParam(30); ChatotCry **v12 = SoundSystem_GetParam(SOUND_SYSTEM_PARAM_CHATOT_CRY); - v4 = 0; + result1 = 0; v5 = 0; - v6 = 0; + result3 = 0; v7 = 0; - if (Sound_Impl_IsShayminSkyForm(species, form) == 1) { - species = SPECIES_EGG; + if (Sound_Impl_IsShayminSkyForm(species, form) == TRUE) { + species = WAVE_ARC_PV516_SKY; } - if (species != SPECIES_EGG) { + if (species != WAVE_ARC_PV516_SKY) { if ((species > MAX_SPECIES) || (species == SPECIES_NONE)) { species = SPECIES_BULBASAUR; } } - if (param2 < 0) { - v0 = WAVE_OUT_PAN_CENTER + (param2 / 2); + if (pan < 0) { + waveOutPan = WAVE_OUT_PAN_CENTER + (pan / 2); } else { - v0 = WAVE_OUT_PAN_CENTER + (param2 / 2); + waveOutPan = WAVE_OUT_PAN_CENTER + (pan / 2); } - v1 = volume - 30; - - if (v1 <= 0) { - v1 = 1; + echoVolume = volume - 30; + if (echoVolume <= 0) { + echoVolume = 1; } v3 = 0; - *v10 = 0; + *echoEnabled = FALSE; - if (*v8 == 1) { + if (*wavePrimaryAllocated == TRUE) { Sound_StopWaveOutReversed(WAVE_OUT_CHANNEL_PRIMARY); Sound_FreeWaveOutChannel(WAVE_OUT_CHANNEL_PRIMARY); } - if (*v9 == 1) { + if (*waveSecondaryAllocated == TRUE) { Sound_StopWaveOutReversed(WAVE_OUT_CHANNEL_SECONDARY); Sound_FreeWaveOutChannel(WAVE_OUT_CHANNEL_SECONDARY); } @@ -485,19 +484,19 @@ BOOL Sound_PlayPokemonCryEx(enum PokemonCryMod cryMod, u16 species, int param2, Sound_PlayPokemonCry(SPECIES_CHATOT, form); if (*v11 == 0) { - sub_02004F94(1, 0xffff, param2); - sub_02005E4C(species, 1, volume); + Sound_SetPanForHandle(SOUND_HANDLE_TYPE_POKEMON_CRY, SOUND_PLAYBACK_TRACK_ALL, pan); + Sound_Impl_SetPokemonCryVolume(species, SOUND_HANDLE_TYPE_POKEMON_CRY, volume); } else { - if (*v8 == 1) { - Sound_SetWaveOutPan(WAVE_OUT_CHANNEL_PRIMARY, v0); + if (*wavePrimaryAllocated == TRUE) { + Sound_SetWaveOutPan(WAVE_OUT_CHANNEL_PRIMARY, waveOutPan); Sound_SetWaveOutVolume(WAVE_OUT_CHANNEL_PRIMARY, volume); } else { - sub_02004F94(1, 0xffff, param2); - sub_02005E4C(species, 1, volume); + Sound_SetPanForHandle(SOUND_HANDLE_TYPE_POKEMON_CRY, SOUND_PLAYBACK_TRACK_ALL, pan); + Sound_Impl_SetPokemonCryVolume(species, SOUND_HANDLE_TYPE_POKEMON_CRY, volume); } } - return 1; + return TRUE; default: Sound_FlagDefaultChatotCry(TRUE); break; @@ -506,121 +505,119 @@ BOOL Sound_PlayPokemonCryEx(enum PokemonCryMod cryMod, u16 species, int param2, switch (cryMod) { case POKECRY_NORMAL: - v4 = Sound_PlayPokemonCry(species, form); - sub_02004F94(1, 0xffff, param2); - sub_02005E4C(species, 1, volume); + result1 = Sound_PlayPokemonCry(species, form); + Sound_SetPanForHandle(1, SOUND_PLAYBACK_TRACK_ALL, pan); + Sound_Impl_SetPokemonCryVolume(species, SOUND_HANDLE_TYPE_POKEMON_CRY, volume); break; case POKECRY_HALF_DURATION: - v4 = Sound_PlayPokemonCry(species, form); - sub_02004F94(1, 0xffff, param2); - sub_02005E4C(species, 1, volume); + result1 = Sound_PlayPokemonCry(species, form); + Sound_SetPanForHandle(1, SOUND_PLAYBACK_TRACK_ALL, pan); + Sound_Impl_SetPokemonCryVolume(species, SOUND_HANDLE_TYPE_POKEMON_CRY, volume); sub_02005E64(20, heapID); break; case POKECRY_FIELD_EVENT: - v4 = Sound_PlayPokemonCry(species, form); - sub_02004F94(1, 0xffff, param2); - sub_02005E4C(species, 1, volume); - sub_02004F68(1, 0xffff, 64); - v6 = sub_020060EC(species, 20, form); - sub_02004F94(8, 0xffff, param2); - sub_02005E4C(species, 8, v1); + result1 = Sound_PlayPokemonCry(species, form); + Sound_SetPanForHandle(SOUND_HANDLE_TYPE_POKEMON_CRY, SOUND_PLAYBACK_TRACK_ALL, pan); + Sound_Impl_SetPokemonCryVolume(species, SOUND_HANDLE_TYPE_POKEMON_CRY, volume); + Sound_SetPitchForHandle(SOUND_HANDLE_TYPE_POKEMON_CRY, SOUND_PLAYBACK_TRACK_ALL, 64); + result3 = Sound_Impl_PlayPokemonCryEcho(species, 20, form); + Sound_SetPanForHandle(SOUND_HANDLE_TYPE_ECHO, SOUND_PLAYBACK_TRACK_ALL, pan); + Sound_Impl_SetPokemonCryVolume(species, SOUND_HANDLE_TYPE_ECHO, echoVolume); break; case POKECRY_MID_MOVE: - v4 = Sound_PlayPokemonCry(species, form); - sub_02004F94(1, 0xffff, param2); - sub_02005E4C(species, 1, volume); + result1 = Sound_PlayPokemonCry(species, form); + Sound_SetPanForHandle(1, SOUND_PLAYBACK_TRACK_ALL, pan); + Sound_Impl_SetPokemonCryVolume(species, 1, volume); sub_02005E64(30, heapID); - sub_02004F68(1, 0xffff, 192); - v6 = sub_020060EC(species, 16, form); - sub_02004F94(8, 0xffff, param2); - sub_02005E4C(species, 8, v1); + Sound_SetPitchForHandle(1, SOUND_PLAYBACK_TRACK_ALL, 192); + result3 = Sound_Impl_PlayPokemonCryEcho(species, 16, form); + Sound_SetPanForHandle(8, SOUND_PLAYBACK_TRACK_ALL, pan); + Sound_Impl_SetPokemonCryVolume(species, 8, echoVolume); break; case POKECRY_HYPERVOICE_1: v5 = Sound_AllocateWaveOutChannel(WAVE_OUT_CHANNEL_PRIMARY); - v5 = Sound_PlayWaveOutReversed(species, volume, v0, WAVE_OUT_CHANNEL_PRIMARY, heapID); - Sound_SetWaveOutPan(WAVE_OUT_CHANNEL_PRIMARY, v0); + v5 = Sound_PlayWaveOutReversed(species, volume, waveOutPan, WAVE_OUT_CHANNEL_PRIMARY, heapID); + Sound_SetWaveOutPan(WAVE_OUT_CHANNEL_PRIMARY, waveOutPan); sub_02005E64(15, heapID); Sound_SetWaveOutSpeed(WAVE_OUT_CHANNEL_PRIMARY, WAVE_OUT_SPEED_HYPERVOICE_1); - v7 = sub_02006120(species, -64, v1, v0, heapID); + v7 = Sound_PlayPokemonCryReversedEcho(species, -64, echoVolume, waveOutPan, heapID); Sound_SetWaveOutSpeed(WAVE_OUT_CHANNEL_SECONDARY, WAVE_OUT_SPEED_HYPERVOICE_1); break; case POKECRY_FAINT: - v4 = Sound_PlayPokemonCry(species, form); - sub_02004F94(1, 0xffff, param2); - sub_02005E4C(species, 1, volume); - sub_02004F68(1, 0xffff, -224); + result1 = Sound_PlayPokemonCry(species, form); + Sound_SetPanForHandle(1, SOUND_PLAYBACK_TRACK_ALL, pan); + Sound_Impl_SetPokemonCryVolume(species, 1, volume); + Sound_SetPitchForHandle(1, SOUND_PLAYBACK_TRACK_ALL, -224); break; case POKECRY_HYPERVOICE_2: - v4 = Sound_PlayPokemonCry(species, form); - sub_02004F94(1, 0xffff, param2); - sub_02005E4C(species, 1, volume); - sub_02004F68(1, 0xffff, 44); - v6 = sub_020060EC(species, -64, form); - sub_02004F94(8, 0xffff, param2); - sub_02005E4C(species, 8, v1); + result1 = Sound_PlayPokemonCry(species, form); + Sound_SetPanForHandle(1, SOUND_PLAYBACK_TRACK_ALL, pan); + Sound_Impl_SetPokemonCryVolume(species, 1, volume); + Sound_SetPitchForHandle(1, SOUND_PLAYBACK_TRACK_ALL, 44); + result3 = Sound_Impl_PlayPokemonCryEcho(species, -64, form); + Sound_SetPanForHandle(8, SOUND_PLAYBACK_TRACK_ALL, pan); + Sound_Impl_SetPokemonCryVolume(species, 8, echoVolume); break; case POKECRY_HOWL_1: - v4 = Sound_PlayPokemonCry(species, form); - sub_02004F94(1, 0xffff, param2); - sub_02005E4C(species, 1, volume); + result1 = Sound_PlayPokemonCry(species, form); + Sound_SetPanForHandle(1, SOUND_PLAYBACK_TRACK_ALL, pan); + Sound_Impl_SetPokemonCryVolume(species, 1, volume); sub_02005E64(11, heapID); - sub_02004F68(1, 0xffff, -128); + Sound_SetPitchForHandle(1, SOUND_PLAYBACK_TRACK_ALL, -128); break; case POKECRY_HOWL_2: - v4 = Sound_PlayPokemonCry(species, form); - sub_02004F94(1, 0xffff, param2); - sub_02005E4C(species, 1, volume); + result1 = Sound_PlayPokemonCry(species, form); + Sound_SetPanForHandle(1, SOUND_PLAYBACK_TRACK_ALL, pan); + Sound_Impl_SetPokemonCryVolume(species, 1, volume); sub_02005E64(60, heapID); - sub_02004F68(1, 0xffff, 60); + Sound_SetPitchForHandle(1, SOUND_PLAYBACK_TRACK_ALL, 60); break; case POKECRY_UPROAR_1: v5 = Sound_AllocateWaveOutChannel(WAVE_OUT_CHANNEL_PRIMARY); - v5 = Sound_PlayWaveOutReversed(species, volume, v0, WAVE_OUT_CHANNEL_PRIMARY, heapID); - Sound_SetWaveOutPan(WAVE_OUT_CHANNEL_PRIMARY, v0); + v5 = Sound_PlayWaveOutReversed(species, volume, waveOutPan, WAVE_OUT_CHANNEL_PRIMARY, heapID); + Sound_SetWaveOutPan(WAVE_OUT_CHANNEL_PRIMARY, waveOutPan); sub_02005E64(13, heapID); Sound_SetWaveOutSpeed(WAVE_OUT_CHANNEL_PRIMARY, WAVE_OUT_SPEED_UPROAR_1); break; case POKECRY_UPROAR_2: - v4 = Sound_PlayPokemonCry(species, form); - sub_02004F94(1, 0xffff, param2); - sub_02005E4C(species, 1, volume); + result1 = Sound_PlayPokemonCry(species, form); + Sound_SetPanForHandle(1, SOUND_PLAYBACK_TRACK_ALL, pan); + Sound_Impl_SetPokemonCryVolume(species, 1, volume); sub_02005E64(100, heapID); - sub_02004F68(1, 0xffff, -44); + Sound_SetPitchForHandle(1, SOUND_PLAYBACK_TRACK_ALL, -44); break; case POKECRY_PINCH_NORMAL: - v4 = Sound_PlayPokemonCry(species, form); - sub_02004F94(1, 0xffff, param2); - sub_02005E4C(species, 1, volume); - sub_02004F68(1, 0xffff, -96); + result1 = Sound_PlayPokemonCry(species, form); + Sound_SetPanForHandle(1, SOUND_PLAYBACK_TRACK_ALL, pan); + Sound_Impl_SetPokemonCryVolume(species, 1, volume); + Sound_SetPitchForHandle(1, SOUND_PLAYBACK_TRACK_ALL, -96); break; case POKECRY_PINCH_HALF_DURATION: - v4 = Sound_PlayPokemonCry(species, form); - sub_02004F94(1, 0xffff, param2); - sub_02005E4C(species, 1, volume); + result1 = Sound_PlayPokemonCry(species, form); + Sound_SetPanForHandle(1, SOUND_PLAYBACK_TRACK_ALL, pan); + Sound_Impl_SetPokemonCryVolume(species, 1, volume); sub_02005E64(20, heapID); - sub_02004F68(1, 0xffff, -96); + Sound_SetPitchForHandle(1, SOUND_PLAYBACK_TRACK_ALL, -96); break; case POKECRY_POKEDEX_CHORUS: Sound_PlayPokemonCry(species, form); - sub_02005E4C(species, 1, 127); - sub_020060EC(species, 20, form); - sub_02004F94(8, 0xffff, param2); + Sound_Impl_SetPokemonCryVolume(species, 1, 127); + Sound_Impl_PlayPokemonCryEcho(species, 20, form); + Sound_SetPanForHandle(8, SOUND_PLAYBACK_TRACK_ALL, pan); Sound_FadeVolumeForHandle(8, volume, 0); break; case POKECRY_POKEDEX: - v4 = Sound_PlayPokemonCry(species, form); + result1 = Sound_PlayPokemonCry(species, form); break; } return 1; } -static void sub_02005E4C(u16 param0, int param1, int param2) +static void Sound_Impl_SetPokemonCryVolume(u16 species, enum SoundHandleType handleType, int volume) { - Sound_SetInitialVolumeForHandle(param1, param2); - Sound_AdjustVolumeForVoiceChatEx(param0, param1); - - return; + Sound_SetInitialVolumeForHandle(handleType, volume); + Sound_AdjustVolumeForVoiceChatEx(species, handleType); } void sub_02005E64(int param0, int heapID) @@ -802,31 +799,27 @@ void sub_0200605C(void) return; } -static BOOL sub_020060EC(u16 species, s8 pitch, u8 form) +static BOOL Sound_Impl_PlayPokemonCryEcho(u16 species, s8 pitch, u8 form) { - int v0; - u8 *v1 = SoundSystem_GetParam(18); - - *v1 = 1; + u8 *echoEnabled = SoundSystem_GetParam(SOUND_SYSTEM_PARAM_ECHO_ENABLED); + *echoEnabled = TRUE; Sound_FlagDefaultChatotCry(TRUE); - v0 = Sound_PlayPokemonCry(species, form); - sub_02004F68(8, 0xffff, pitch); + BOOL success = Sound_PlayPokemonCry(species, form); + Sound_SetPitchForHandle(SOUND_HANDLE_TYPE_ECHO, SOUND_PLAYBACK_TRACK_ALL, pitch); - return v0; + return success; } -static BOOL sub_02006120(u16 param0, s8 param1, int param2, int param3, int heapID) +static BOOL Sound_PlayPokemonCryReversedEcho(u16 species, s8 unused, int volume, int pan, int heapID) { - int v0; - u8 *v1 = SoundSystem_GetParam(18); + u8 *echoEnabled = SoundSystem_GetParam(SOUND_SYSTEM_PARAM_ECHO_ENABLED); + *echoEnabled = TRUE; - *v1 = 1; + BOOL success = Sound_AllocateWaveOutChannel(WAVE_OUT_CHANNEL_SECONDARY); + success = Sound_PlayWaveOutReversed(species, volume, pan, WAVE_OUT_CHANNEL_SECONDARY, heapID); - v0 = Sound_AllocateWaveOutChannel(WAVE_OUT_CHANNEL_SECONDARY); - v0 = Sound_PlayWaveOutReversed(param0, param2, param3, WAVE_OUT_CHANNEL_SECONDARY, heapID); - - return v0; + return success; } BOOL Sound_PlayFanfare(u16 seqID) @@ -835,8 +828,7 @@ BOOL Sound_PlayFanfare(u16 seqID) Sound_Impl_SetFanfareDelay(seqID); - u16 seqID = Sound_GetCurrentBGM(); - u8 playerID = Sound_GetPlayerForSequence(seqID); + u8 playerID = Sound_GetPlayerForSequence(Sound_GetCurrentBGM()); if (playerID != 0xff) { Sound_SetBGMPlayerPaused(playerID, TRUE); }