diff --git a/src/engine/platform/ym2203.cpp b/src/engine/platform/ym2203.cpp index 13fc014d8..6a0864377 100644 --- a/src/engine/platform/ym2203.cpp +++ b/src/engine/platform/ym2203.cpp @@ -203,6 +203,7 @@ void DivPlatformYM2203::tick(bool sysTick) { ay->tick(sysTick); ay->flushWrites(); for (DivRegWrite& i: ay->getRegisterWrites()) { + if (i.addr>15) continue; immWrite(i.addr&15,i.val); } ay->getRegisterWrites().clear(); @@ -807,6 +808,7 @@ void DivPlatformYM2203::forceIns() { ay->forceIns(); ay->flushWrites(); for (DivRegWrite& i: ay->getRegisterWrites()) { + if (i.addr>15) continue; immWrite(i.addr&15,i.val); } ay->getRegisterWrites().clear(); diff --git a/src/engine/platform/ym2203ext.cpp b/src/engine/platform/ym2203ext.cpp index f3b279c97..fc6294870 100644 --- a/src/engine/platform/ym2203ext.cpp +++ b/src/engine/platform/ym2203ext.cpp @@ -448,6 +448,7 @@ void DivPlatformYM2203Ext::forceIns() { ay->forceIns(); ay->flushWrites(); for (DivRegWrite& i: ay->getRegisterWrites()) { + if (i.addr>15) continue; immWrite(i.addr&15,i.val); } ay->getRegisterWrites().clear(); diff --git a/src/engine/platform/ym2608.cpp b/src/engine/platform/ym2608.cpp index b247be449..87fc79144 100644 --- a/src/engine/platform/ym2608.cpp +++ b/src/engine/platform/ym2608.cpp @@ -654,6 +654,7 @@ void DivPlatformYM2608::tick(bool sysTick) { ay->tick(sysTick); ay->flushWrites(); for (DivRegWrite& i: ay->getRegisterWrites()) { + if (i.addr>15) continue; immWrite(i.addr&15,i.val); } ay->getRegisterWrites().clear(); @@ -1199,6 +1200,7 @@ void DivPlatformYM2608::forceIns() { ay->forceIns(); ay->flushWrites(); for (DivRegWrite& i: ay->getRegisterWrites()) { + if (i.addr>15) continue; immWrite(i.addr&15,i.val); } ay->getRegisterWrites().clear(); diff --git a/src/engine/platform/ym2608ext.cpp b/src/engine/platform/ym2608ext.cpp index 66a4d252c..0b73b42c9 100644 --- a/src/engine/platform/ym2608ext.cpp +++ b/src/engine/platform/ym2608ext.cpp @@ -483,6 +483,7 @@ void DivPlatformYM2608Ext::forceIns() { ay->forceIns(); ay->flushWrites(); for (DivRegWrite& i: ay->getRegisterWrites()) { + if (i.addr>15) continue; immWrite(i.addr&15,i.val); } ay->getRegisterWrites().clear(); diff --git a/src/engine/platform/ym2610.cpp b/src/engine/platform/ym2610.cpp index 794fc7d95..89e354a98 100644 --- a/src/engine/platform/ym2610.cpp +++ b/src/engine/platform/ym2610.cpp @@ -593,13 +593,14 @@ void DivPlatformYM2610::tick(bool sysTick) { ay->tick(sysTick); ay->flushWrites(); for (DivRegWrite& i: ay->getRegisterWrites()) { + if (i.addr>15) continue; immWrite(i.addr&15,i.val); } ay->getRegisterWrites().clear(); } int DivPlatformYM2610::dispatch(DivCommand c) { - if (c.chan>=psgChanOffs && c.chan<7) { + if (c.chan>=psgChanOffs && c.chandispatch(c); } @@ -1169,6 +1170,7 @@ void DivPlatformYM2610::forceIns() { ay->forceIns(); ay->flushWrites(); for (DivRegWrite& i: ay->getRegisterWrites()) { + if (i.addr>15) continue; immWrite(i.addr&15,i.val); } ay->getRegisterWrites().clear(); diff --git a/src/engine/platform/ym2610b.cpp b/src/engine/platform/ym2610b.cpp index 941cee22e..3ee916a2f 100644 --- a/src/engine/platform/ym2610b.cpp +++ b/src/engine/platform/ym2610b.cpp @@ -656,6 +656,7 @@ void DivPlatformYM2610B::tick(bool sysTick) { ay->tick(sysTick); ay->flushWrites(); for (DivRegWrite& i: ay->getRegisterWrites()) { + if (i.addr>15) continue; immWrite(i.addr&15,i.val); } ay->getRegisterWrites().clear(); @@ -1232,6 +1233,7 @@ void DivPlatformYM2610B::forceIns() { ay->forceIns(); ay->flushWrites(); for (DivRegWrite& i: ay->getRegisterWrites()) { + if (i.addr>15) continue; immWrite(i.addr&15,i.val); } ay->getRegisterWrites().clear(); diff --git a/src/engine/platform/ym2610bext.cpp b/src/engine/platform/ym2610bext.cpp index 5c8c2c635..201bb598d 100644 --- a/src/engine/platform/ym2610bext.cpp +++ b/src/engine/platform/ym2610bext.cpp @@ -474,6 +474,7 @@ void DivPlatformYM2610BExt::forceIns() { ay->forceIns(); ay->flushWrites(); for (DivRegWrite& i: ay->getRegisterWrites()) { + if (i.addr>15) continue; immWrite(i.addr&15,i.val); } ay->getRegisterWrites().clear(); diff --git a/src/engine/platform/ym2610ext.cpp b/src/engine/platform/ym2610ext.cpp index 22c9ebf90..ac82bb81e 100644 --- a/src/engine/platform/ym2610ext.cpp +++ b/src/engine/platform/ym2610ext.cpp @@ -474,6 +474,7 @@ void DivPlatformYM2610Ext::forceIns() { ay->forceIns(); ay->flushWrites(); for (DivRegWrite& i: ay->getRegisterWrites()) { + if (i.addr>15) continue; immWrite(i.addr&15,i.val); } ay->getRegisterWrites().clear();