From 52357b7ac8ecf09b3c524073439134344f473548 Mon Sep 17 00:00:00 2001 From: RadWolfie Date: Wed, 27 Mar 2019 22:14:43 -0500 Subject: [PATCH 1/3] fix nBlockAlign equation --- src/core/hle/DSOUND/DirectSound/DirectSoundInline.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/hle/DSOUND/DirectSound/DirectSoundInline.hpp b/src/core/hle/DSOUND/DirectSound/DirectSoundInline.hpp index d4dd372d2..6b4c11a58 100644 --- a/src/core/hle/DSOUND/DirectSound/DirectSoundInline.hpp +++ b/src/core/hle/DSOUND/DirectSound/DirectSoundInline.hpp @@ -226,7 +226,7 @@ inline void GeneratePCMFormat( lpwfxFormatHost->nChannels = 2; lpwfxFormatHost->nSamplesPerSec = 44100; lpwfxFormatHost->wBitsPerSample = 8; - lpwfxFormatHost->nBlockAlign = (lpwfxFormatHost->wBitsPerSample / 8 * lpwfxFormatHost->nChannels); + lpwfxFormatHost->nBlockAlign = lpwfxFormatHost->nChannels * lpwfxFormatHost->wBitsPerSample / 8; lpwfxFormatHost->nAvgBytesPerSec = lpwfxFormatHost->nSamplesPerSec * lpwfxFormatHost->nBlockAlign; } else { @@ -249,7 +249,7 @@ inline void GeneratePCMFormat( } if (lpwfxFormatHost->nBlockAlign == 0) { - lpwfxFormatHost->nBlockAlign = (lpwfxFormatHost->wBitsPerSample / 8 * lpwfxFormatHost->nChannels); + lpwfxFormatHost->nBlockAlign = lpwfxFormatHost->nChannels * lpwfxFormatHost->wBitsPerSample / 8; } if (lpwfxFormatHost->nSamplesPerSec == 0) { From e7f65b55f1395a3e396412a32ef2f68e99852479 Mon Sep 17 00:00:00 2001 From: Luke Usher Date: Wed, 27 Mar 2019 23:01:08 +0000 Subject: [PATCH 2/3] Implement CDirectSoundStream_GetInfo proper --- src/core/hle/DSOUND/DirectSound/DirectSound.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/core/hle/DSOUND/DirectSound/DirectSound.cpp b/src/core/hle/DSOUND/DirectSound/DirectSound.cpp index 17fffb302..1caa5633c 100644 --- a/src/core/hle/DSOUND/DirectSound/DirectSound.cpp +++ b/src/core/hle/DSOUND/DirectSound/DirectSound.cpp @@ -1931,14 +1931,11 @@ HRESULT WINAPI XTL::EMUPATCH(CDirectSoundStream_GetInfo) LOG_FUNC_ARG_OUT(pInfo) LOG_FUNC_END; - // TODO: A (real) implementation? - EmuLog(LOG_LEVEL::WARNING, "EmuDirectSound_CDirectSoundStream_GetInfo is not yet supported!"); - if (pInfo) { - pInfo->dwFlags = XMO_STREAMF_FIXED_SAMPLE_SIZE; - pInfo->dwInputSize = 0x40000; - pInfo->dwOutputSize = 0x40000; - pInfo->dwMaxLookahead = 0x4000; + pInfo->dwFlags = XMO_STREAMF_FIXED_SAMPLE_SIZE | XMO_STREAMF_INPUT_ASYNC; + pInfo->dwInputSize = pThis->EmuBufferDesc.lpwfxFormat->nBlockAlign; + pInfo->dwOutputSize = 0; + pInfo->dwMaxLookahead = std::max(static_cast(pThis->EmuBufferDesc.lpwfxFormat->nChannels * pThis->EmuBufferDesc.lpwfxFormat->wBitsPerSample / 8) * 32, static_cast(pThis->EmuBufferDesc.lpwfxFormat->nBlockAlign) * 2); } leaveCriticalSection; From 70531f6cdb1abbf95a60c14143ed5ac3f7900dcd Mon Sep 17 00:00:00 2001 From: Luke Usher Date: Wed, 27 Mar 2019 23:19:06 +0000 Subject: [PATCH 3/3] Stop SetScreenSpaceOffset from spamming log files --- src/core/hle/D3D8/Direct3D9/Direct3D9.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp b/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp index 03c0064ad..e7680e5c7 100644 --- a/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp +++ b/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp @@ -8572,7 +8572,8 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_SetScreenSpaceOffset) LOG_FUNC_ARG(y) LOG_FUNC_END; - EmuLog(LOG_LEVEL::WARNING, "EmuD3DDevice_SetScreenSpaceOffset ignored"); + // No need to log this, it's safe to ignore. + //EmuLog(LOG_LEVEL::WARNING, "EmuD3DDevice_SetScreenSpaceOffset ignored"); } // ******************************************************************