diff --git a/src/engine/platform/genesisext.cpp b/src/engine/platform/genesisext.cpp index b743a02ba..e6a9cd148 100644 --- a/src/engine/platform/genesisext.cpp +++ b/src/engine/platform/genesisext.cpp @@ -559,6 +559,17 @@ void DivPlatformGenesisExt::tick(bool sysTick) { rWrite(0x22,lfoValue); } + if (opChan[i].std.panL.had) { + opChan[i].pan=opChan[i].std.panL.val&3; + if (parent->song.sharedExtStat) { + for (int j=0; j<4; j++) { + if (i==j) continue; + opChan[j].pan=opChan[i].pan; + } + } + rWrite(chanOffs[extChanOffs]+ADDR_LRAF,(IS_EXTCH_MUTED?0:(opChan[i].pan<<6))|(chan[extChanOffs].state.fms&7)|((chan[extChanOffs].state.ams&3)<<4)); + } + // param macros unsigned short baseAddr=chanOffs[2]|opOffs[orderedOps[i]]; DivInstrumentFM::Operator& op=chan[2].state.op[orderedOps[i]]; diff --git a/src/engine/platform/ym2608ext.cpp b/src/engine/platform/ym2608ext.cpp index a2e0f25a5..3bc14a39f 100644 --- a/src/engine/platform/ym2608ext.cpp +++ b/src/engine/platform/ym2608ext.cpp @@ -508,6 +508,17 @@ void DivPlatformYM2608Ext::tick(bool sysTick) { rWrite(0x22,lfoValue); } + if (opChan[i].std.panL.had) { + opChan[i].pan=opChan[i].std.panL.val&3; + if (parent->song.sharedExtStat) { + for (int j=0; j<4; j++) { + if (i==j) continue; + opChan[j].pan=opChan[i].pan; + } + } + rWrite(chanOffs[extChanOffs]+ADDR_LRAF,(IS_EXTCH_MUTED?0:(opChan[i].pan<<6))|(chan[extChanOffs].state.fms&7)|((chan[extChanOffs].state.ams&3)<<4)); + } + // param macros unsigned short baseAddr=chanOffs[2]|opOffs[orderedOps[i]]; diff --git a/src/engine/platform/ym2610bext.cpp b/src/engine/platform/ym2610bext.cpp index 7f38830b3..48bb24fd1 100644 --- a/src/engine/platform/ym2610bext.cpp +++ b/src/engine/platform/ym2610bext.cpp @@ -504,6 +504,17 @@ void DivPlatformYM2610BExt::tick(bool sysTick) { rWrite(0x22,lfoValue); } + if (opChan[i].std.panL.had) { + opChan[i].pan=opChan[i].std.panL.val&3; + if (parent->song.sharedExtStat) { + for (int j=0; j<4; j++) { + if (i==j) continue; + opChan[j].pan=opChan[i].pan; + } + } + rWrite(chanOffs[extChanOffs]+ADDR_LRAF,(IS_EXTCH_MUTED?0:(opChan[i].pan<<6))|(chan[extChanOffs].state.fms&7)|((chan[extChanOffs].state.ams&3)<<4)); + } + // param macros unsigned short baseAddr=chanOffs[extChanOffs]|opOffs[orderedOps[i]]; DivInstrumentFM::Operator& op=chan[extChanOffs].state.op[orderedOps[i]]; diff --git a/src/engine/platform/ym2610ext.cpp b/src/engine/platform/ym2610ext.cpp index 9f84aa72c..3c18a6e4c 100644 --- a/src/engine/platform/ym2610ext.cpp +++ b/src/engine/platform/ym2610ext.cpp @@ -504,6 +504,17 @@ void DivPlatformYM2610Ext::tick(bool sysTick) { rWrite(0x22,lfoValue); } + if (opChan[i].std.panL.had) { + opChan[i].pan=opChan[i].std.panL.val&3; + if (parent->song.sharedExtStat) { + for (int j=0; j<4; j++) { + if (i==j) continue; + opChan[j].pan=opChan[i].pan; + } + } + rWrite(chanOffs[extChanOffs]+ADDR_LRAF,(IS_EXTCH_MUTED?0:(opChan[i].pan<<6))|(chan[extChanOffs].state.fms&7)|((chan[extChanOffs].state.ams&3)<<4)); + } + // param macros unsigned short baseAddr=chanOffs[extChanOffs]|opOffs[orderedOps[i]]; DivInstrumentFM::Operator& op=chan[extChanOffs].state.op[orderedOps[i]];