From 5d47b50032ff7598c91a66caf01a00af2bdd0a51 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 24 Nov 2024 16:05:52 -0500 Subject: [PATCH] MSM6258: fix panning issue #2249 --- src/engine/platform/msm6258.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/engine/platform/msm6258.cpp b/src/engine/platform/msm6258.cpp index b2dd96a4c..250d4a05f 100644 --- a/src/engine/platform/msm6258.cpp +++ b/src/engine/platform/msm6258.cpp @@ -88,8 +88,8 @@ void DivPlatformMSM6258::acquire(short** buf, size_t len) { buf[1][h]=0; oscBuf[0]->data[oscBuf[0]->needle++]=0; } else { - buf[0][h]=(msmPan&2)?msmOut:0; - buf[1][h]=(msmPan&1)?msmOut:0; + buf[0][h]=(msmPan&2)?0:msmOut; + buf[1][h]=(msmPan&1)?0:msmOut; oscBuf[0]->data[oscBuf[0]->needle++]=msmPan?(msmOut>>1):0; } } @@ -109,7 +109,7 @@ void DivPlatformMSM6258::tick(bool sysTick) { if (chan[i].std.panL.had) { if (chan[i].pan!=(chan[i].std.panL.val&3)) { chan[i].pan=chan[i].std.panL.val&3; - rWrite(2,chan[i].pan); + rWrite(2,(~chan[i].pan)&3); } } if (chan[i].std.ex1.had) { @@ -256,7 +256,7 @@ int DivPlatformMSM6258::dispatch(DivCommand c) { } else { chan[c.chan].pan=(c.value2>0)|((c.value>0)<<1); } - rWrite(2,chan[c.chan].pan); + rWrite(2,(~chan[c.chan].pan)&3); break; } case DIV_CMD_LEGATO: { @@ -296,7 +296,7 @@ void DivPlatformMSM6258::forceIns() { } rWrite(12,rateSel); rWrite(8,clockSel); - rWrite(2,chan[0].pan); + rWrite(2,(~chan[0].pan)&3); } void* DivPlatformMSM6258::getChanState(int ch) { @@ -339,7 +339,7 @@ void DivPlatformMSM6258::reset() { msmDividerCount=0; msmClock=0; msmClockCount=0; - msmPan=3; + msmPan=0; rateSel=2; clockSel=0; updateSampleFreq=true;