From 402a65845415c03b4b8135180b6b9648bb7faf45 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 23 Mar 2025 04:36:20 -0500 Subject: [PATCH] OPNA/B: fix ADPCM-A/RSS muting with LLE core --- src/engine/platform/ym2608.cpp | 5 +++++ src/engine/platform/ym2610.cpp | 6 +++++- src/engine/platform/ym2610b.cpp | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/engine/platform/ym2608.cpp b/src/engine/platform/ym2608.cpp index 5dc024a70..d87bcf688 100644 --- a/src/engine/platform/ym2608.cpp +++ b/src/engine/platform/ym2608.cpp @@ -686,6 +686,11 @@ void DivPlatformYM2608::acquire_lle(short** buf, size_t len) { for (int i=0; i<6; i++) { if (rssOut[i]<-32768) rssOut[i]=-32768; if (rssOut[i]>32767) rssOut[i]=32767; + if (isMuted[adpcmAChanOffs+i]) { + oscBuf[9+i]->putSample(h,0); + } else { + oscBuf[9+i]->putSample(h,rssOut[i]); + } oscBuf[9+i]->putSample(h,rssOut[i]); } // ADPCM diff --git a/src/engine/platform/ym2610.cpp b/src/engine/platform/ym2610.cpp index a12048230..3ecd410e3 100644 --- a/src/engine/platform/ym2610.cpp +++ b/src/engine/platform/ym2610.cpp @@ -618,7 +618,11 @@ void DivPlatformYM2610::acquire_lle(short** buf, size_t len) { for (int i=0; i<6; i++) { if (rssOut[i]<-32768) rssOut[i]=-32768; if (rssOut[i]>32767) rssOut[i]=32767; - oscBuf[7+i]->putSample(h,rssOut[i]); + if (isMuted[adpcmAChanOffs+i]) { + oscBuf[7+i]->putSample(h,0); + } else { + oscBuf[7+i]->putSample(h,rssOut[i]); + } } // ADPCM oscBuf[13]->putSample(h,fm_lle.ac_ad_output); diff --git a/src/engine/platform/ym2610b.cpp b/src/engine/platform/ym2610b.cpp index bdad880ce..970a33d2a 100644 --- a/src/engine/platform/ym2610b.cpp +++ b/src/engine/platform/ym2610b.cpp @@ -686,6 +686,11 @@ void DivPlatformYM2610B::acquire_lle(short** buf, size_t len) { for (int i=0; i<6; i++) { if (rssOut[i]<-32768) rssOut[i]=-32768; if (rssOut[i]>32767) rssOut[i]=32767; + if (isMuted[adpcmAChanOffs+i]) { + oscBuf[9+i]->putSample(h,0); + } else { + oscBuf[9+i]->putSample(h,rssOut[i]); + } oscBuf[9+i]->putSample(h,rssOut[i]); } // ADPCM