diff options
Diffstat (limited to 'src/sound.c')
-rw-r--r-- | src/sound.c | 43 |
1 files changed, 28 insertions, 15 deletions
diff --git a/src/sound.c b/src/sound.c index 49ab78cc7..c244c5cbe 100644 --- a/src/sound.c +++ b/src/sound.c @@ -1,8 +1,11 @@ #include "global.h" +#include "sound.h" +#include "asm.h" #include "gba/m4a_internal.h" #include "task.h" -#include "sound.h" #include "songs.h" +#include "m4a.h" +#include "battle.h" struct Fanfare { @@ -10,9 +13,10 @@ struct Fanfare u16 duration; }; -extern u32 SpeciesToCryId(u32); +// Hack: different prototype than definition +u32 SpeciesToCryId(u32); -extern u16 gUnknown_020239F8; +extern u16 gBattleTypeFlags; extern struct MusicPlayerInfo *gMPlay_PokemonCry; extern u8 gPokemonCryBGMDuckingCounter; @@ -28,8 +32,6 @@ extern struct MusicPlayerInfo gMPlay_SE1; extern struct MusicPlayerInfo gMPlay_SE2; extern struct MusicPlayerInfo gMPlay_SE3; -extern struct Fanfare gFanfares[]; - extern struct ToneData voicegroup_8452590[]; extern struct ToneData voicegroup_8452B90[]; extern struct ToneData voicegroup_8453190[]; @@ -40,6 +42,22 @@ 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); @@ -170,14 +188,10 @@ bool8 IsNotWaitingForBGMStop(void) void PlayFanfareByFanfareNum(u8 fanfareNum) { - struct Fanfare *fanfares; - struct Fanfare *fanfare; u16 songNum; m4aMPlayStop(&gMPlay_BGM); - fanfares = gFanfares; - fanfare = &fanfares[fanfareNum]; - songNum = fanfare->songNum; - sFanfareCounter = fanfare->duration; + songNum = sFanfares[fanfareNum].songNum; + sFanfareCounter = sFanfares[fanfareNum].duration; m4aSongNumStart(songNum); } @@ -201,7 +215,7 @@ bool8 WaitFanfare(bool8 stop) void StopFanfareByFanfareNum(u8 fanfareNum) { - m4aSongNumStop(gFanfares[fanfareNum].songNum); + m4aSongNumStop(sFanfares[fanfareNum].songNum); } void PlayFanfare(u16 songNum) @@ -209,8 +223,7 @@ void PlayFanfare(u16 songNum) s32 i; for (i = 0; (u32)i < 12; i++) { - struct Fanfare *fanfare = &gFanfares[i]; - if (fanfare->songNum == songNum) + if (sFanfares[i].songNum == songNum) { PlayFanfareByFanfareNum(i); CreateFanfareTask(); @@ -326,7 +339,7 @@ void PlayCry4(u16 species, s8 pan, u8 mode) } else { - if (!(gUnknown_020239F8 & 0x40)) + if (!(gBattleTypeFlags & BATTLE_TYPE_40)) m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 85); PlayCryInternal(species, pan, 125, 10, mode); } |