diff --git a/Core/SuperGameboy.cpp b/Core/SuperGameboy.cpp index 9f8979b..15c1533 100644 --- a/Core/SuperGameboy.cpp +++ b/Core/SuperGameboy.cpp @@ -4,6 +4,7 @@ #include "MemoryManager.h" #include "EmuSettings.h" #include "BaseCartridge.h" +#include "Spc.h" #include "Gameboy.h" #include "GbApu.h" #include "GbPpu.h" @@ -18,6 +19,7 @@ SuperGameboy::SuperGameboy(Console* console) : BaseCoprocessor(SnesMemoryType::R _console = console; _memoryManager = console->GetMemoryManager().get(); _cart = _console->GetCartridge().get(); + _spc = _console->GetSpc().get(); _gameboy = _cart->GetGameboy(); _ppu = _gameboy->GetPpu(); @@ -273,8 +275,10 @@ void SuperGameboy::MixAudio(uint32_t targetRate, int16_t* soundSamples, uint32_t _mixSampleCount += outCount; int32_t copyCount = (int32_t)std::min(_mixSampleCount, sampleCount*2); - for(int32_t i = 0; i < copyCount; i++) { - soundSamples[i] += _mixBuffer[i]; + if(!_spc->IsMuted()) { + for(int32_t i = 0; i < copyCount; i++) { + soundSamples[i] += _mixBuffer[i]; + } } int32_t remainingSamples = (int32_t)_mixSampleCount - copyCount; diff --git a/Core/SuperGameboy.h b/Core/SuperGameboy.h index 609dc0c..f7766e9 100644 --- a/Core/SuperGameboy.h +++ b/Core/SuperGameboy.h @@ -6,6 +6,7 @@ class Console; class MemoryManager; class BaseCartridge; +class Spc; class Gameboy; class GbPpu; @@ -15,6 +16,7 @@ private: Console* _console = nullptr; MemoryManager* _memoryManager = nullptr; BaseCartridge* _cart = nullptr; + Spc* _spc = nullptr; Gameboy* _gameboy = nullptr; GbPpu* _ppu = nullptr;