Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
8b77575fbd
5 changed files with 28 additions and 24 deletions
|
@ -341,8 +341,8 @@ static void AY8910_Write(BYTE nDevice, BYTE /*nReg*/, BYTE nValue, BYTE nAYDevic
|
|||
break;
|
||||
|
||||
case AY_READ: // 5: READ FROM PSG (need to set DDRA to input)
|
||||
if (g_bPhasorEnable)
|
||||
pMB->sy6522.ORA = 0xff & (pMB->sy6522.DDRA ^ 0xff); // Phasor doesn't support reading AY8913s - it just reads 1's for the input bits
|
||||
if (g_bPhasorEnable && g_phasorMode == PH_EchoPlus)
|
||||
pMB->sy6522.ORA = 0xff & (pMB->sy6522.DDRA ^ 0xff); // Phasor (Echo+ mode) doesn't support reading AY8913s - it just reads 1's for the input bits
|
||||
else
|
||||
pMB->sy6522.ORA = AYReadReg(nDevice+2*nAYDevice, pMB->nAYCurrentRegister) & (pMB->sy6522.DDRA ^ 0xff);
|
||||
break;
|
||||
|
@ -615,10 +615,10 @@ static void SY6522_Write(BYTE nDevice, BYTE nReg, BYTE nValue)
|
|||
pMB->sy6522.ORB = nValue;
|
||||
|
||||
if ((nDevice&1) == 0 && // SC01 only at $Cn00 (not $Cn80)
|
||||
pMB->sy6522.DDRB == 0xFF && pMB->sy6522.PCR == 0xB0)
|
||||
pMB->sy6522.PCR == 0xB0)
|
||||
{
|
||||
// Votrax speech data
|
||||
pMB->ssi263.Votrax_Write(nValue);
|
||||
pMB->ssi263.Votrax_Write((nValue & pMB->sy6522.DDRB) | (pMB->sy6522.DDRB ^ 0xff)); // DDRB's zero bits (inputs) are high impedence, so output as 1 (GH#952)
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1007,10 +1007,11 @@ static void MB_UpdateInt(void)
|
|||
DWORD dwDSLockedBufferSize0, dwDSLockedBufferSize1;
|
||||
SHORT *pDSLockedBuffer0, *pDSLockedBuffer1;
|
||||
|
||||
if(!DSGetLock(MockingboardVoice.lpDSBvoice,
|
||||
dwByteOffset, (DWORD)nNumSamples*sizeof(short)*g_nMB_NumChannels,
|
||||
&pDSLockedBuffer0, &dwDSLockedBufferSize0,
|
||||
&pDSLockedBuffer1, &dwDSLockedBufferSize1))
|
||||
hr = DSGetLock(MockingboardVoice.lpDSBvoice,
|
||||
dwByteOffset, (DWORD)nNumSamples * sizeof(short) * g_nMB_NumChannels,
|
||||
&pDSLockedBuffer0, &dwDSLockedBufferSize0,
|
||||
&pDSLockedBuffer1, &dwDSLockedBufferSize1);
|
||||
if (FAILED(hr))
|
||||
return;
|
||||
|
||||
memcpy(pDSLockedBuffer0, &g_nMixBuffer[0], dwDSLockedBufferSize0);
|
||||
|
|
|
@ -614,10 +614,11 @@ void SSI263::Update(void)
|
|||
DWORD dwDSLockedBufferSize0, dwDSLockedBufferSize1;
|
||||
short *pDSLockedBuffer0, *pDSLockedBuffer1;
|
||||
|
||||
if (!DSGetLock(SSI263SingleVoice.lpDSBvoice,
|
||||
m_byteOffset, (DWORD)nNumSamples*sizeof(short)*m_kNumChannels,
|
||||
&pDSLockedBuffer0, &dwDSLockedBufferSize0,
|
||||
&pDSLockedBuffer1, &dwDSLockedBufferSize1))
|
||||
hr = DSGetLock(SSI263SingleVoice.lpDSBvoice,
|
||||
m_byteOffset, (DWORD)nNumSamples * sizeof(short) * m_kNumChannels,
|
||||
&pDSLockedBuffer0, &dwDSLockedBufferSize0,
|
||||
&pDSLockedBuffer1, &dwDSLockedBufferSize1);
|
||||
if (FAILED(hr))
|
||||
return;
|
||||
|
||||
memcpy(pDSLockedBuffer0, &m_mixBufferSSI263[0], dwDSLockedBufferSize0);
|
||||
|
|
|
@ -124,14 +124,14 @@ static const char *DirectSound_ErrorText (HRESULT error)
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
bool DSGetLock(LPDIRECTSOUNDBUFFER pVoice, DWORD dwOffset, DWORD dwBytes,
|
||||
HRESULT DSGetLock(LPDIRECTSOUNDBUFFER pVoice, DWORD dwOffset, DWORD dwBytes,
|
||||
SHORT** ppDSLockedBuffer0, DWORD* pdwDSLockedBufferSize0,
|
||||
SHORT** ppDSLockedBuffer1, DWORD* pdwDSLockedBufferSize1)
|
||||
{
|
||||
DWORD nStatus;
|
||||
HRESULT hr = pVoice->GetStatus(&nStatus);
|
||||
if(hr != DS_OK)
|
||||
return false;
|
||||
return hr;
|
||||
|
||||
if(nStatus & DSBSTATUS_BUFFERLOST)
|
||||
{
|
||||
|
@ -151,7 +151,7 @@ bool DSGetLock(LPDIRECTSOUNDBUFFER pVoice, DWORD dwOffset, DWORD dwBytes,
|
|||
(void**)ppDSLockedBuffer0, pdwDSLockedBufferSize0,
|
||||
(void**)ppDSLockedBuffer1, pdwDSLockedBufferSize1,
|
||||
DSBLOCK_ENTIREBUFFER)))
|
||||
return false;
|
||||
return hr;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -159,10 +159,10 @@ bool DSGetLock(LPDIRECTSOUNDBUFFER pVoice, DWORD dwOffset, DWORD dwBytes,
|
|||
(void**)ppDSLockedBuffer0, pdwDSLockedBufferSize0,
|
||||
(void**)ppDSLockedBuffer1, pdwDSLockedBufferSize1,
|
||||
0)))
|
||||
return false;
|
||||
return hr;
|
||||
}
|
||||
|
||||
return true;
|
||||
return hr;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
|
@ -38,7 +38,7 @@ struct VOICE
|
|||
|
||||
typedef VOICE* PVOICE;
|
||||
|
||||
bool DSGetLock(LPDIRECTSOUNDBUFFER pVoice, DWORD dwOffset, DWORD dwBytes,
|
||||
HRESULT DSGetLock(LPDIRECTSOUNDBUFFER pVoice, DWORD dwOffset, DWORD dwBytes,
|
||||
SHORT** ppDSLockedBuffer0, DWORD* pdwDSLockedBufferSize0,
|
||||
SHORT** ppDSLockedBuffer1, DWORD* pdwDSLockedBufferSize1);
|
||||
|
||||
|
|
|
@ -576,10 +576,11 @@ static ULONG Spkr_SubmitWaveBuffer_FullSpeed(short* pSpeakerBuffer, ULONG nNumSa
|
|||
|
||||
if(nNumSamplesToUse >= 128) // Limit the buffer unlock/locking to a minimum
|
||||
{
|
||||
if(!DSGetLock(SpeakerVoice.lpDSBvoice,
|
||||
dwByteOffset, (DWORD)nNumSamplesToUse*sizeof(short),
|
||||
&pDSLockedBuffer0, &dwDSLockedBufferSize0,
|
||||
&pDSLockedBuffer1, &dwDSLockedBufferSize1))
|
||||
hr = DSGetLock(SpeakerVoice.lpDSBvoice,
|
||||
dwByteOffset, (DWORD)nNumSamplesToUse * sizeof(short),
|
||||
&pDSLockedBuffer0, &dwDSLockedBufferSize0,
|
||||
&pDSLockedBuffer1, &dwDSLockedBufferSize1);
|
||||
if (FAILED(hr))
|
||||
return nNumSamples;
|
||||
|
||||
//
|
||||
|
@ -777,10 +778,11 @@ static ULONG Spkr_SubmitWaveBuffer(short* pSpeakerBuffer, ULONG nNumSamples)
|
|||
{
|
||||
//sprintf(szDbg, "[Submit] C=%08X, PC=%08X, WC=%08X, Diff=%08X, Off=%08X, NS=%08X +++\n", nDbgSpkrCnt, dwCurrentPlayCursor, dwCurrentWriteCursor, dwCurrentWriteCursor-dwCurrentPlayCursor, dwByteOffset, nNumSamplesToUse); OutputDebugString(szDbg);
|
||||
|
||||
if (!DSGetLock(SpeakerVoice.lpDSBvoice,
|
||||
hr = DSGetLock(SpeakerVoice.lpDSBvoice,
|
||||
dwByteOffset, (DWORD)nNumSamplesToUse * sizeof(short),
|
||||
&pDSLockedBuffer0, &dwDSLockedBufferSize0,
|
||||
&pDSLockedBuffer1, &dwDSLockedBufferSize1))
|
||||
&pDSLockedBuffer1, &dwDSLockedBufferSize1);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
LogFileOutput("Spkr_SubmitWaveBuffer: DSGetLock failed\n");
|
||||
return nNumSamples;
|
||||
|
|
Loading…
Add table
Reference in a new issue