diff --git a/source/Mockingboard.cpp b/source/Mockingboard.cpp index 068e8dbe..f789ad27 100644 --- a/source/Mockingboard.cpp +++ b/source/Mockingboard.cpp @@ -258,7 +258,10 @@ void MockingboardCard::WriteToORB(BYTE subunit, BYTE subunitForAY/*=0*/) { if ((value & 4) == 0) { - AY8913_Reset(subunit); + if (QueryType() == CT_SDMusic) + AY8913_Reset(subunitForAY); // to do: check that AYs can be independently reset + else + AY8913_Reset(subunit); return; } @@ -327,7 +330,7 @@ void MockingboardCard::AY8913_Write(BYTE subunit, BYTE ay, BYTE value) } } - pMB->SetBusState(busState); + pMB->SetBusState(busState, r6522); // NB. Need to pass SY6522 as card may only have one (eg. CT_SDMusic) } break; diff --git a/source/Mockingboard.h b/source/Mockingboard.h index 32afbe46..088e3ece 100644 --- a/source/Mockingboard.h +++ b/source/Mockingboard.h @@ -111,6 +111,11 @@ private: isBusDriven = state; sy6522.SetBusBeingDriven(state); } + void SetBusState(bool state, SY6522& r6522) + { + isBusDriven = state; + r6522.SetBusBeingDriven(state); + } }; void WriteToORB(BYTE subunit, BYTE subunitForAY=0);