diff --git a/Core/HW/SasAudio.cpp b/Core/HW/SasAudio.cpp index 32213a17fd..5e64a5fb02 100644 --- a/Core/HW/SasAudio.cpp +++ b/Core/HW/SasAudio.cpp @@ -367,7 +367,8 @@ void SasVoice::ReadSamples(s16 *output, int numSamples) { // NOTICE_LOG(SCESAS, "Hit end of VAG audio"); playing = false; on = false; // ?? - envelope.KeyOff(); + // TODO: Should this remain on somehow or just hit rock bottom immediately? + envelope.End(); } } break; @@ -396,7 +397,7 @@ void SasVoice::ReadSamples(s16 *output, int numSamples) { // Hit atrac3 voice end playing = false; on = false; // ?? - envelope.KeyOff(); + envelope.End(); } } break; @@ -880,6 +881,11 @@ void ADSREnvelope::KeyOff() { height_ = sustainLevel; } +void ADSREnvelope::End() { + SetState(STATE_OFF); + height_ = 0; +} + void ADSREnvelope::DoState(PointerWrap &p) { auto s = p.Section("ADSREnvelope", 1); if (!s) { diff --git a/Core/HW/SasAudio.h b/Core/HW/SasAudio.h index 789223dca6..6cb12e8cf1 100644 --- a/Core/HW/SasAudio.h +++ b/Core/HW/SasAudio.h @@ -139,6 +139,7 @@ public: void KeyOn(); void KeyOff(); + void End(); void Step();