diff --git a/src/core/hle/D3D8/XbVertexBuffer.cpp b/src/core/hle/D3D8/XbVertexBuffer.cpp index d58d337da..a3fdc1b69 100644 --- a/src/core/hle/D3D8/XbVertexBuffer.cpp +++ b/src/core/hle/D3D8/XbVertexBuffer.cpp @@ -382,6 +382,14 @@ void CxbxVertexBufferConverter::ConvertStream pNewHostVertexBuffer = nullptr; } } + + // If dwHostVertexDataSize is zero, the allocation/creation will fail + // This can be caused by a stride of 0, and 'other' invalid configurations + // Test Case :SSX series of games + if (dwHostVertexDataSize == 0) { + LOG_TEST_CASE("Attempted to use a 0 sized vertex stream"); + return; + } // Allocate new buffers if (pDrawContext->pXboxVertexStreamZeroData != xbnullptr) { @@ -390,7 +398,7 @@ void CxbxVertexBufferConverter::ConvertStream if (pHostVertexData == nullptr) { CxbxKrnlCleanup("Couldn't allocate the new stream zero buffer"); } - } else { + } else { HRESULT hRet = g_pD3DDevice->CreateVertexBuffer( dwHostVertexDataSize, D3DUSAGE_WRITEONLY | D3DUSAGE_DYNAMIC,