diff options
Diffstat (limited to 'src/engine/sound.c')
-rw-r--r-- | src/engine/sound.c | 568 |
1 files changed, 0 insertions, 568 deletions
diff --git a/src/engine/sound.c b/src/engine/sound.c deleted file mode 100644 index 159ad3f70..000000000 --- a/src/engine/sound.c +++ /dev/null @@ -1,568 +0,0 @@ -#include "global.h" -#include "gba/m4a_internal.h" -#include "sound.h" -#include "battle.h" -#include "m4a.h" -#include "main.h" -#include "pokemon.h" -#include "constants/songs.h" -#include "task.h" - -struct Fanfare -{ - u16 songNum; - u16 duration; -}; - -extern u16 gBattleTypeFlags; - -static EWRAM_DATA struct MusicPlayerInfo *gMPlay_PokemonCry = NULL; -static EWRAM_DATA u8 gPokemonCryBGMDuckingCounter = 0; - -static u16 sCurrentMapMusic; -static u16 sNextMapMusic; -static u8 sMapMusicState; -static u8 sMapMusicFadeInSpeed; -static u16 sFanfareCounter; - -bool8 gDisableMusic; - -extern struct MusicPlayerInfo gMPlay_BGM; -extern struct MusicPlayerInfo gMPlay_SE1; -extern struct MusicPlayerInfo gMPlay_SE2; -extern struct MusicPlayerInfo gMPlay_SE3; - -extern struct ToneData voicegroup_8452590[]; -extern struct ToneData voicegroup_8452B90[]; -extern struct ToneData voicegroup_8453190[]; -extern struct ToneData voicegroup_8453790[]; - -extern struct ToneData voicegroup_84537C0[]; -extern struct ToneData voicegroup_8453DC0[]; -extern struct ToneData voicegroup_84543C0[]; -extern struct ToneData voicegroup_84549C0[]; - -static const struct Fanfare sFanfares[] = -{ - { BGM_FANFA1, 80 }, - { BGM_FANFA4, 160 }, - { BGM_FANFA5, 220 }, - { BGM_ME_WAZA, 220 }, - { BGM_ME_ASA, 160 }, - { BGM_ME_BACHI, 340 }, - { BGM_ME_WASURE, 180 }, - { BGM_ME_KINOMI, 120 }, - { BGM_ME_TAMA, 710 }, - { BGM_ME_B_BIG, 250 }, - { BGM_ME_B_SMALL, 150 }, - { BGM_ME_ZANNEN, 160 }, -}; - -static void Task_Fanfare(u8 taskId); -static void CreateFanfareTask(void); -static void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode); -static void Task_DuckBGMForPokemonCry(u8 taskId); -static void RestoreBGMVolumeAfterPokemonCry(void); - -void InitMapMusic(void) -{ - gDisableMusic = FALSE; - ResetMapMusic(); -} - -void MapMusicMain(void) -{ - switch (sMapMusicState) - { - case 0: - break; - case 1: - sMapMusicState = 2; - PlayBGM(sCurrentMapMusic); - break; - case 2: - break; - case 5: - if (IsBGMStopped()) - { - sNextMapMusic = 0; - sMapMusicState = 0; - } - break; - case 6: - if (IsBGMStopped() && IsFanfareTaskInactive()) - { - sCurrentMapMusic = sNextMapMusic; - sNextMapMusic = 0; - sMapMusicState = 2; - PlayBGM(sCurrentMapMusic); - } - break; - case 7: - if (IsBGMStopped() && IsFanfareTaskInactive()) - { - FadeInNewBGM(sNextMapMusic, sMapMusicFadeInSpeed); - sCurrentMapMusic = sNextMapMusic; - sNextMapMusic = 0; - sMapMusicState = 2; - sMapMusicFadeInSpeed = 0; - } - break; - } -} - -void ResetMapMusic(void) -{ - sCurrentMapMusic = 0; - sNextMapMusic = 0; - sMapMusicState = 0; - sMapMusicFadeInSpeed = 0; -} - -u16 GetCurrentMapMusic(void) -{ - return sCurrentMapMusic; -} - -void PlayNewMapMusic(u16 songNum) -{ - sCurrentMapMusic = songNum; - sNextMapMusic = 0; - sMapMusicState = 1; -} - -void StopMapMusic(void) -{ - sCurrentMapMusic = 0; - sNextMapMusic = 0; - sMapMusicState = 1; -} - -void FadeOutMapMusic(u8 speed) -{ - if (IsNotWaitingForBGMStop()) - FadeOutBGM(speed); - sCurrentMapMusic = 0; - sNextMapMusic = 0; - sMapMusicState = 5; -} - -void FadeOutAndPlayNewMapMusic(u16 songNum, u8 speed) -{ - FadeOutMapMusic(speed); - sCurrentMapMusic = 0; - sNextMapMusic = songNum; - sMapMusicState = 6; -} - -void FadeOutAndFadeInNewMapMusic(u16 songNum, u8 fadeOutSpeed, u8 fadeInSpeed) -{ - FadeOutMapMusic(fadeOutSpeed); - sCurrentMapMusic = 0; - sNextMapMusic = songNum; - sMapMusicState = 7; - sMapMusicFadeInSpeed = fadeInSpeed; -} - -void FadeInNewMapMusic(u16 songNum, u8 speed) -{ - FadeInNewBGM(songNum, speed); - sCurrentMapMusic = songNum; - sNextMapMusic = 0; - sMapMusicState = 2; - sMapMusicFadeInSpeed = 0; -} - -bool8 IsNotWaitingForBGMStop(void) -{ - if (sMapMusicState == 6) - return FALSE; - if (sMapMusicState == 5) - return FALSE; - if (sMapMusicState == 7) - return FALSE; - return TRUE; -} - -void PlayFanfareByFanfareNum(u8 fanfareNum) -{ - u16 songNum; - m4aMPlayStop(&gMPlay_BGM); - songNum = sFanfares[fanfareNum].songNum; - sFanfareCounter = sFanfares[fanfareNum].duration; - m4aSongNumStart(songNum); -} - -bool8 WaitFanfare(bool8 stop) -{ - if (sFanfareCounter) - { - sFanfareCounter--; - return FALSE; - } - else - { - if (!stop) - m4aMPlayContinue(&gMPlay_BGM); - else - m4aSongNumStart(SE_STOP); - - return TRUE; - } -} - -void StopFanfareByFanfareNum(u8 fanfareNum) -{ - m4aSongNumStop(sFanfares[fanfareNum].songNum); -} - -void PlayFanfare(u16 songNum) -{ - s32 i; - for (i = 0; (u32)i < 12; i++) - { - if (sFanfares[i].songNum == songNum) - { - PlayFanfareByFanfareNum(i); - CreateFanfareTask(); - return; - } - } - - PlayFanfareByFanfareNum(0); - CreateFanfareTask(); -} - -bool8 IsFanfareTaskInactive(void) -{ - if (FuncIsActiveTask(Task_Fanfare) == TRUE) - return FALSE; - return TRUE; -} - -static void Task_Fanfare(u8 taskId) -{ - if (sFanfareCounter) - { - sFanfareCounter--; - } - else - { - m4aMPlayContinue(&gMPlay_BGM); - DestroyTask(taskId); - } -} - -static void CreateFanfareTask(void) -{ - if (FuncIsActiveTask(Task_Fanfare) != TRUE) - CreateTask(Task_Fanfare, 80); -} - -void FadeInNewBGM(u16 songNum, u8 speed) -{ - if (gDisableMusic) - songNum = 0; - m4aSongNumStart(songNum); - m4aMPlayImmInit(&gMPlay_BGM); - m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0); - m4aSongNumStop(songNum); - m4aMPlayFadeIn(&gMPlay_BGM, speed); -} - -void FadeOutBGMTemporarily(u8 speed) -{ - m4aMPlayFadeOutTemporarily(&gMPlay_BGM, speed); -} - -bool8 IsBGMPausedOrStopped(void) -{ - if (gMPlay_BGM.status & MUSICPLAYER_STATUS_PAUSE) - return TRUE; - if (!(gMPlay_BGM.status & MUSICPLAYER_STATUS_TRACK)) - return TRUE; - return FALSE; -} - -void FadeInBGM(u8 speed) -{ - m4aMPlayFadeIn(&gMPlay_BGM, speed); -} - -void FadeOutBGM(u8 speed) -{ - m4aMPlayFadeOut(&gMPlay_BGM, speed); -} - -bool8 IsBGMStopped(void) -{ - if (!(gMPlay_BGM.status & MUSICPLAYER_STATUS_TRACK)) - return TRUE; - return FALSE; -} - -void PlayCry1(u16 species, s8 pan) -{ - m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 85); - PlayCryInternal(species, pan, 125, 10, 0); - gPokemonCryBGMDuckingCounter = 2; - RestoreBGMVolumeAfterPokemonCry(); -} - -void PlayCry2(u16 species, s8 pan, s8 volume, u8 priority) -{ - PlayCryInternal(species, pan, volume, priority, 0); -} - -void PlayCry3(u16 species, s8 pan, u8 mode) -{ - if (mode == 1) - { - PlayCryInternal(species, pan, 125, 10, 1); - } - else - { - m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 85); - PlayCryInternal(species, pan, 125, 10, mode); - gPokemonCryBGMDuckingCounter = 2; - RestoreBGMVolumeAfterPokemonCry(); - } -} - -void PlayCry4(u16 species, s8 pan, u8 mode) -{ - if (mode == 1) - { - PlayCryInternal(species, pan, 125, 10, 1); - } - else - { - if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) - m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 85); - PlayCryInternal(species, pan, 125, 10, mode); - } -} - -void PlayCry5(u16 species, u8 mode) -{ - m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 85); - PlayCryInternal(species, 0, 125, 10, mode); - gPokemonCryBGMDuckingCounter = 2; - RestoreBGMVolumeAfterPokemonCry(); -} - -static void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode) -{ - bool32 v0; - u32 release; - u32 length; - u32 pitch; - u32 chorus; - u32 index; - u8 table; - - species--; - v0 = FALSE; - release = 0; - length = 140; - pitch = 15360; - chorus = 0; - - switch (mode) - { - case 0: - break; - case 1: - length = 20; - release = 225; - break; - case 2: - length = 30; - release = 225; - pitch = 15600; - chorus = 20; - volume = 80; - break; - case 3: - length = 50; - release = 200; - pitch = 14800; - break; - case 4: - length = 20; - release = 220; - pitch = 15800; - break; - case 5: - release = 200; - pitch = 14500; - break; - } - - SetPokemonCryVolume(volume); - SetPokemonCryPanpot(pan); - SetPokemonCryPitch(pitch); - SetPokemonCryLength(length); - SetPokemonCryProgress(0); - SetPokemonCryRelease(release); - SetPokemonCryChorus(chorus); - SetPokemonCryPriority(priority); - - species = SpeciesToCryId(species); - index = species & 0x7F; - table = species >> 7; - - switch (table) - { - case 0: - gMPlay_PokemonCry = SetPokemonCryTone( - v0 ? &voicegroup_84537C0[index] : &voicegroup_8452590[index]); - break; - case 1: - gMPlay_PokemonCry = SetPokemonCryTone( - v0 ? &voicegroup_8453DC0[index] : &voicegroup_8452B90[index]); - break; - case 2: - gMPlay_PokemonCry = SetPokemonCryTone( - v0 ? &voicegroup_84543C0[index] : &voicegroup_8453190[index]); - break; - case 3: - gMPlay_PokemonCry = SetPokemonCryTone( - v0 ? &voicegroup_84549C0[index] : &voicegroup_8453790[index]); - break; - } -} - -bool8 IsCryFinished(void) -{ - if (FuncIsActiveTask(Task_DuckBGMForPokemonCry) == TRUE) - { - return FALSE; - } - else - { - ClearPokemonCrySongs(); - return TRUE; - } -} - -void StopCryAndClearCrySongs(void) -{ - m4aMPlayStop(gMPlay_PokemonCry); - ClearPokemonCrySongs(); -} - -void StopCry(void) -{ - m4aMPlayStop(gMPlay_PokemonCry); -} - -bool8 IsCryPlayingOrClearCrySongs(void) -{ - if (IsPokemonCryPlaying(gMPlay_PokemonCry)) - { - return TRUE; - } - else - { - ClearPokemonCrySongs(); - return FALSE; - } -} - -bool8 IsCryPlaying(void) -{ - if (IsPokemonCryPlaying(gMPlay_PokemonCry)) - return TRUE; - else - return FALSE; -} - -static void Task_DuckBGMForPokemonCry(u8 taskId) -{ - if (gPokemonCryBGMDuckingCounter) - { - gPokemonCryBGMDuckingCounter--; - return; - } - - if (!IsPokemonCryPlaying(gMPlay_PokemonCry)) - { - m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256); - DestroyTask(taskId); - } -} - -static void RestoreBGMVolumeAfterPokemonCry(void) -{ - if (FuncIsActiveTask(Task_DuckBGMForPokemonCry) != TRUE) - CreateTask(Task_DuckBGMForPokemonCry, 80); -} - -void PlayBGM(u16 songNum) -{ - if (gDisableMusic) - songNum = 0; - m4aSongNumStart(songNum); -} - -void PlaySE(u16 songNum) -{ - m4aSongNumStart(songNum); -} - -void PlaySE12WithPanning(u16 songNum, s8 pan) -{ - m4aSongNumStart(songNum); - m4aMPlayImmInit(&gMPlay_SE1); - m4aMPlayImmInit(&gMPlay_SE2); - m4aMPlayPanpotControl(&gMPlay_SE1, 0xFFFF, pan); - m4aMPlayPanpotControl(&gMPlay_SE2, 0xFFFF, pan); -} - -void PlaySE1WithPanning(u16 songNum, s8 pan) -{ - m4aSongNumStart(songNum); - m4aMPlayImmInit(&gMPlay_SE1); - m4aMPlayPanpotControl(&gMPlay_SE1, 0xFFFF, pan); -} - -void PlaySE2WithPanning(u16 songNum, s8 pan) -{ - m4aSongNumStart(songNum); - m4aMPlayImmInit(&gMPlay_SE2); - m4aMPlayPanpotControl(&gMPlay_SE2, 0xFFFF, pan); -} - -void SE12PanpotControl(s8 pan) -{ - m4aMPlayPanpotControl(&gMPlay_SE1, 0xFFFF, pan); - m4aMPlayPanpotControl(&gMPlay_SE2, 0xFFFF, pan); -} - -bool8 IsSEPlaying(void) -{ - if ((gMPlay_SE1.status & MUSICPLAYER_STATUS_PAUSE) && (gMPlay_SE2.status & MUSICPLAYER_STATUS_PAUSE)) - return FALSE; - if (!(gMPlay_SE1.status & MUSICPLAYER_STATUS_TRACK) && !(gMPlay_SE2.status & MUSICPLAYER_STATUS_TRACK)) - return FALSE; - return TRUE; -} - -bool8 IsBGMPlaying(void) -{ - if (gMPlay_BGM.status & MUSICPLAYER_STATUS_PAUSE) - return FALSE; - if (!(gMPlay_BGM.status & MUSICPLAYER_STATUS_TRACK)) - return FALSE; - return TRUE; -} - -bool8 IsSpecialSEPlaying(void) -{ - if (gMPlay_SE3.status & MUSICPLAYER_STATUS_PAUSE) - return FALSE; - if (!(gMPlay_SE3.status & MUSICPLAYER_STATUS_TRACK)) - return FALSE; - return TRUE; -} |