From f538364e3bd43af0a4c6db638e3f7866fb6224d8 Mon Sep 17 00:00:00 2001 From: luigi__ Date: Sat, 17 Jan 2009 12:12:42 +0000 Subject: [PATCH] Added support for disabling the sound speakers (bit1 of POWCNT2) --- desmume/src/MMU.cpp | 3 +++ desmume/src/SPU.cpp | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/desmume/src/MMU.cpp b/desmume/src/MMU.cpp index cff954a99..0eb9fa746 100644 --- a/desmume/src/MMU.cpp +++ b/desmume/src/MMU.cpp @@ -455,6 +455,9 @@ void MMU_clearMem() memset(MMU.DMAing, 0, sizeof(BOOL) * 2 * 4); memset(MMU.dscard, 0, sizeof(nds_dscard) * 2); + + // Enable the sound speakers + T1WriteWord(MMU.ARM7_REG, 0x304, 0x0001); MainScreen.offset = 0; SubScreen.offset = 192; diff --git a/desmume/src/SPU.cpp b/desmume/src/SPU.cpp index 53daf6ceb..132f218b0 100644 --- a/desmume/src/SPU.cpp +++ b/desmume/src/SPU.cpp @@ -691,9 +691,7 @@ static INLINE void FetchADPCMData(channel_struct *chan, s32 *data) diff = -diff;*/ diff = precalcdifftbl[chan->index][data4bit]; -#ifdef SPU_INTERPOLATE chan->pcm16b_last = chan->pcm16b; -#endif chan->pcm16b = MinMax(chan->pcm16b+diff, -0x8000, 0x7FFF); //chan->index = MinMax(chan->index+indextbl[data4bit & 0x7], 0, 88); chan->index = precalcindextbl[chan->index][data4bit & 0x7]; @@ -1089,7 +1087,10 @@ static void SPU_MixAudio(SPU_struct *SPU, int length) if(actuallyMix) memset(SPU->sndbuf, 0, length*4*2); - + + // If the sound speakers are disabled, don't output audio + if(!(T1ReadWord(MMU.ARM7_REG, 0x304) & 0x01)) + return; // If Master Enable isn't set, don't output audio if (!(T1ReadByte(MMU.ARM7_REG, 0x501) & 0x80))