summaryrefslogtreecommitdiff
path: root/src/sound.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sound.c')
-rw-r--r--src/sound.c43
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);
}