From 724bd5b8dcd4c5bd5fb1a9cea116b0cf842ae933 Mon Sep 17 00:00:00 2001 From: cam900 Date: Wed, 16 Mar 2022 11:35:22 +0900 Subject: [PATCH 1/3] Fix X1-010 muting --- src/engine/platform/x1_010.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/engine/platform/x1_010.cpp b/src/engine/platform/x1_010.cpp index 822f2c40..47c8a10a 100644 --- a/src/engine/platform/x1_010.cpp +++ b/src/engine/platform/x1_010.cpp @@ -339,7 +339,11 @@ void DivPlatformX1_010::updateEnvelope(int ch) { } chWrite(ch,5,0x10|(ch&0xf)); } else { - chWrite(ch,1,(chan[ch].lvol<<4)|chan[ch].rvol); + if (isMuted[ch]) { + chWrite(ch,1,0); + } else { + chWrite(ch,1,(chan[ch].lvol<<4)|chan[ch].rvol); + } } } @@ -459,10 +463,8 @@ void DivPlatformX1_010::tick() { } } if (chan[i].envChanged) { - if (!isMuted[i]) { - chan[i].lvol=((chan[i].outVol&0xf)*((chan[i].pan>>4)&0xf))/15; - chan[i].rvol=((chan[i].outVol&0xf)*((chan[i].pan>>0)&0xf))/15; - } + chan[i].lvol=isMuted[i]?0:((chan[i].outVol&0xf)*((chan[i].pan>>4)&0xf))/15; + chan[i].rvol=isMuted[i]?0:((chan[i].outVol&0xf)*((chan[i].pan>>0)&0xf))/15; updateEnvelope(i); chan[i].envChanged=false; } @@ -661,9 +663,7 @@ int DivPlatformX1_010::dispatch(DivCommand c) { if (chan[c.chan].pcm!=(c.value&1)) { chan[c.chan].pcm=c.value&1; chan[c.chan].freqChanged=true; - if (!isMuted[c.chan]) { - chan[c.chan].envChanged=true; - } + chan[c.chan].envChanged=true; } break; case DIV_CMD_SAMPLE_BANK: From 53ad1c93e6f58c339259d8e8b592ecb5344a321b Mon Sep 17 00:00:00 2001 From: cam900 Date: Wed, 16 Mar 2022 11:40:10 +0900 Subject: [PATCH 2/3] Reduce line --- src/engine/platform/x1_010.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/engine/platform/x1_010.cpp b/src/engine/platform/x1_010.cpp index 47c8a10a..cec8659b 100644 --- a/src/engine/platform/x1_010.cpp +++ b/src/engine/platform/x1_010.cpp @@ -339,11 +339,7 @@ void DivPlatformX1_010::updateEnvelope(int ch) { } chWrite(ch,5,0x10|(ch&0xf)); } else { - if (isMuted[ch]) { - chWrite(ch,1,0); - } else { - chWrite(ch,1,(chan[ch].lvol<<4)|chan[ch].rvol); - } + chWrite(ch,1,isMuted[ch]?0:((chan[ch].lvol<<4)|chan[ch].rvol)); } } From c269346eda1c0da0ae4741c8d14e9397e62c3ba8 Mon Sep 17 00:00:00 2001 From: cam900 Date: Wed, 16 Mar 2022 11:41:24 +0900 Subject: [PATCH 3/3] safety check --- src/engine/platform/x1_010.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/x1_010.cpp b/src/engine/platform/x1_010.cpp index cec8659b..d70a31df 100644 --- a/src/engine/platform/x1_010.cpp +++ b/src/engine/platform/x1_010.cpp @@ -459,8 +459,8 @@ void DivPlatformX1_010::tick() { } } if (chan[i].envChanged) { - chan[i].lvol=isMuted[i]?0:((chan[i].outVol&0xf)*((chan[i].pan>>4)&0xf))/15; - chan[i].rvol=isMuted[i]?0:((chan[i].outVol&0xf)*((chan[i].pan>>0)&0xf))/15; + chan[i].lvol=isMuted[i]?0:(((chan[i].outVol&0xf)*((chan[i].pan>>4)&0xf))/15); + chan[i].rvol=isMuted[i]?0:(((chan[i].outVol&0xf)*((chan[i].pan>>0)&0xf))/15); updateEnvelope(i); chan[i].envChanged=false; }