summaryrefslogtreecommitdiff
path: root/src/m4a.c
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2020-10-29 23:47:55 -0500
committerSeth Barberee <seth.barberee@gmail.com>2020-10-29 23:47:55 -0500
commit1c07455019d6dde3a00f8d6efba7329eba86bcec (patch)
tree16c6aeceb52139da1bdbae515dadc686964b9377 /src/m4a.c
parent30f301d7274abe84ef1b23161631040f58da0173 (diff)
backport pokeemerald #1232 for m4a
Diffstat (limited to 'src/m4a.c')
-rw-r--r--src/m4a.c61
1 files changed, 18 insertions, 43 deletions
diff --git a/src/m4a.c b/src/m4a.c
index 42e6d9d..e34c303 100644
--- a/src/m4a.c
+++ b/src/m4a.c
@@ -353,7 +353,7 @@ void SampleFreqSet(u32 freq)
{
struct SoundInfo *soundInfo = SOUND_INFO_PTR;
- freq = (freq & 0xF0000) >> 16;
+ freq = (freq & SOUND_MODE_FREQ) >> SOUND_MODE_FREQ_SHIFT;
soundInfo->freq = freq;
soundInfo->pcmSamplesPerVBlank = gPcmSamplesPerVBlankTable[freq - 1];
soundInfo->pcmDmaPeriod = PCM_DMA_BUF_SIZE / soundInfo->pcmSamplesPerVBlank;
@@ -642,28 +642,18 @@ void FadeOutBody(struct MusicPlayerInfo *mplayInfo)
{
s32 i;
struct MusicPlayerTrack *track;
- u16 fadeOI = mplayInfo->fadeOI;
- register u32 temp asm("r3");
- register u16 mask asm("r2");
+ u16 fadeOV;
- if (fadeOI == 0)
+ if (mplayInfo->fadeOI == 0)
return;
-
- mplayInfo->fadeOC--;
-
- temp = 0xFFFF;
- mask = temp;
-
- if (mplayInfo->fadeOC != 0)
+ if (--mplayInfo->fadeOC != 0)
return;
- mplayInfo->fadeOC = fadeOI;
+ mplayInfo->fadeOC = mplayInfo->fadeOI;
if (mplayInfo->fadeOV & FADE_IN)
{
- mplayInfo->fadeOV += (4 << FADE_VOL_SHIFT);
-
- if ((u16)(mplayInfo->fadeOV & mask) >= (64 << FADE_VOL_SHIFT))
+ if ((u16)(mplayInfo->fadeOV += (4 << FADE_VOL_SHIFT)) >= (64 << FADE_VOL_SHIFT))
{
mplayInfo->fadeOV = (64 << FADE_VOL_SHIFT);
mplayInfo->fadeOI = 0;
@@ -671,16 +661,10 @@ void FadeOutBody(struct MusicPlayerInfo *mplayInfo)
}
else
{
- mplayInfo->fadeOV -= (4 << FADE_VOL_SHIFT);
-
- if ((s16)(mplayInfo->fadeOV & mask) <= 0)
+ if ((s16)(mplayInfo->fadeOV -= (4 << FADE_VOL_SHIFT)) <= 0)
{
- i = mplayInfo->trackCount;
- track = mplayInfo->tracks;
-
- while (i > 0)
+ for (i = mplayInfo->trackCount, track = mplayInfo->tracks; i > 0; i--, track++)
{
- register u32 fadeOV asm("r7");
u32 val;
TrackStop(mplayInfo, track);
@@ -691,9 +675,6 @@ void FadeOutBody(struct MusicPlayerInfo *mplayInfo)
if (!val)
track->flags = 0;
-
- i--;
- track++;
}
if (mplayInfo->fadeOV & TEMPORARY_FADE)
@@ -706,27 +687,22 @@ void FadeOutBody(struct MusicPlayerInfo *mplayInfo)
}
}
- i = mplayInfo->trackCount;
- track = mplayInfo->tracks;
-
- while (i > 0)
+ for (i = mplayInfo->trackCount, track = mplayInfo->tracks; i > 0; i--, track++)
{
if (track->flags & MPT_FLG_EXIST)
{
- track->volX = (mplayInfo->fadeOV >> FADE_VOL_SHIFT);
+ fadeOV = mplayInfo->fadeOV;
+
+ track->volX = (fadeOV >> FADE_VOL_SHIFT);
track->flags |= MPT_FLG_VOLCHG;
}
-
- i--;
- track++;
}
}
-
void TrkVolPitSet(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
{
if (track->flags & MPT_FLG_VOLSET)
{
- s32 x;
+ u32 x;
s32 y;
x = (u32)(track->vol * track->volX) >> 5;
@@ -751,12 +727,11 @@ void TrkVolPitSet(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *tr
if (track->flags & MPT_FLG_PITSET)
{
s32 bend = track->bend * track->bendRange;
- register s32 x asm("r1") = track->tune;
- x += bend;
- x *= 4;
- x += (track->keyShift << 8);
- x += (track->keyShiftX << 8);
- x += track->pitX;
+ s32 x = (track->tune + bend)
+ * 4
+ + (track->keyShift << 8)
+ + (track->keyShiftX << 8)
+ + track->pitX;
if (track->modT == 0)
x += 16 * track->modM;