pokeemerald/src/bard_music.c

67 lines
1.5 KiB
C
Raw Normal View History

2017-10-28 15:05:40 +02:00
// Includes
#include "global.h"
#include "bard_music.h"
2018-05-02 22:57:34 +02:00
#include "constants/easy_chat.h"
2017-10-28 15:05:40 +02:00
#include "easy_chat.h"
2017-10-28 21:43:50 +02:00
#include "data/bard_music/bard_sounds.h"
2017-10-28 16:42:12 +02:00
#include "data/bard_music/word_pitch.h"
#include "data/bard_music/default_sound.h"
#include "data/bard_music/length_table.h"
2017-10-28 15:05:40 +02:00
s16 CalcWordPitch(int arg0, int songPos)
2017-10-28 15:05:40 +02:00
{
2017-10-28 16:44:19 +02:00
return gBardSoundPitchTables[arg0][songPos];
2017-10-28 15:05:40 +02:00
}
const struct BardSound *GetWordSounds(u16 word)
2017-10-28 15:05:40 +02:00
{
u32 category;
u32 subword;
const struct BardSound (*ptr)[6];
2017-10-28 15:05:40 +02:00
2017-11-02 05:09:14 +01:00
if (ECWord_CheckIfOutsideOfValidRange(word))
2017-10-28 15:05:40 +02:00
{
return gBardSound_InvalidWord;
2017-10-28 15:05:40 +02:00
}
category = word >> 9;
subword = word & 0x1ff;
switch (category)
{
case EC_GROUP_POKEMON:
case EC_GROUP_POKEMON_2:
ptr = gBardSounds_Pokemon;
2017-10-28 15:05:40 +02:00
break;
case EC_GROUP_MOVE_1:
case EC_GROUP_MOVE_2:
ptr = gBardSounds_Moves;
2017-10-28 15:05:40 +02:00
break;
default:
ptr = gBardSoundsTable[category];
2017-10-28 15:05:40 +02:00
break;
}
ptr += subword;
return *ptr;
2017-10-28 15:05:40 +02:00
}
void GetWordPhonemes(struct BardSong *song, u16 word)
{
int i;
const struct BardSound *sound;
2017-10-28 15:05:40 +02:00
song->length = 0;
for (i = 0; i < 6; i ++)
{
sound = &song->sound[i];
if (sound->var00 != 0xFF)
{
2017-10-28 16:42:12 +02:00
song->phonemes[i].length = sound->var01 + gBardSoundLengthTable[sound->var00];
song->phonemes[i].pitch = CalcWordPitch(word + 30, i);
song->length += song->phonemes[i].length;
}
}
song->currPhoneme = 0;
song->voiceInflection = 0;
}