mirror of
https://github.com/AppleWin/AppleWin.git
synced 2024-06-08 01:29:42 +00:00
Phasor: improve odd Phasor logic for AY1 & AY2 chip select (#1192)
This commit is contained in:
parent
34141b0c1d
commit
3b53c882ab
|
@ -271,16 +271,17 @@ void MockingboardCard::AY8910_Write(BYTE subunit, BYTE ay, BYTE value)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AY_WRITE: // 6: WRITE TO PSG
|
case AY_WRITE: // 6: WRITE TO PSG
|
||||||
if (pMB->isAYLatchedAddressValid[ay])
|
if (pMB->isChipSelected[ay] && pMB->isAYLatchedAddressValid[ay])
|
||||||
_AYWriteReg(subunit, ay, pMB->nAYCurrentRegister[ay], r6522.GetReg(SY6522::rORA));
|
_AYWriteReg(subunit, ay, pMB->nAYCurrentRegister[ay], r6522.GetReg(SY6522::rORA));
|
||||||
// else if invalid then just ignore
|
// else if invalid then just ignore
|
||||||
|
|
||||||
if (m_phasorEnable && m_phasorMode == PH_Phasor) // GH#1192
|
if (m_phasorEnable && m_phasorMode == PH_Phasor) // GH#1192
|
||||||
{
|
{
|
||||||
if (ay == AY8913_DEVICE_A && pMB->isChipSelected[AY8913_DEVICE_B] && pMB->isAYLatchedAddressValid[AY8913_DEVICE_B])
|
if (ay == AY8913_DEVICE_A)
|
||||||
_AYWriteReg(subunit, AY8913_DEVICE_B, pMB->nAYCurrentRegister[AY8913_DEVICE_B], r6522.GetReg(SY6522::rORA));
|
{
|
||||||
else // AY8913_DEVICE_B
|
if (pMB->isChipSelected[AY8913_DEVICE_B] && pMB->isAYLatchedAddressValid[AY8913_DEVICE_B])
|
||||||
pMB->isChipSelected[AY8913_DEVICE_A] = false;
|
_AYWriteReg(subunit, AY8913_DEVICE_B, pMB->nAYCurrentRegister[AY8913_DEVICE_B], r6522.GetReg(SY6522::rORA));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -292,18 +293,18 @@ void MockingboardCard::AY8910_Write(BYTE subunit, BYTE ay, BYTE value)
|
||||||
if (r6522.GetReg(SY6522::rORA) <= 0x0F)
|
if (r6522.GetReg(SY6522::rORA) <= 0x0F)
|
||||||
{
|
{
|
||||||
pMB->nAYCurrentRegister[ay] = r6522.GetReg(SY6522::rORA) & 0x0F;
|
pMB->nAYCurrentRegister[ay] = r6522.GetReg(SY6522::rORA) & 0x0F;
|
||||||
|
pMB->isChipSelected[ay] = true;
|
||||||
pMB->isAYLatchedAddressValid[ay] = true;
|
pMB->isAYLatchedAddressValid[ay] = true;
|
||||||
|
|
||||||
if (m_phasorEnable && m_phasorMode == PH_Phasor) // GH#1192
|
if (m_phasorEnable && m_phasorMode == PH_Phasor) // GH#1192
|
||||||
{
|
{
|
||||||
pMB->isChipSelected[ay] = true;
|
|
||||||
|
|
||||||
if (ay == AY8913_DEVICE_A)
|
if (ay == AY8913_DEVICE_A)
|
||||||
{
|
{
|
||||||
pMB->isChipSelected[AY8913_DEVICE_B] = false;
|
pMB->isChipSelected[AY8913_DEVICE_B] = false;
|
||||||
}
|
}
|
||||||
else // AY8913_DEVICE_B
|
else // AY8913_DEVICE_B
|
||||||
{
|
{
|
||||||
|
pMB->isChipSelected[AY8913_DEVICE_A] = true;
|
||||||
pMB->nAYCurrentRegister[AY8913_DEVICE_A] = pMB->nAYCurrentRegister[AY8913_DEVICE_B];
|
pMB->nAYCurrentRegister[AY8913_DEVICE_A] = pMB->nAYCurrentRegister[AY8913_DEVICE_B];
|
||||||
pMB->isAYLatchedAddressValid[AY8913_DEVICE_A] = true;
|
pMB->isAYLatchedAddressValid[AY8913_DEVICE_A] = true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user