diff --git a/Source/Win32/CxbxKrnl/EmuD3D8.cpp b/Source/Win32/CxbxKrnl/EmuD3D8.cpp index 54d080c43..cb877efcb 100644 --- a/Source/Win32/CxbxKrnl/EmuD3D8.cpp +++ b/Source/Win32/CxbxKrnl/EmuD3D8.cpp @@ -2966,7 +2966,7 @@ VOID WINAPI xd3d8::EmuIDirect3DDevice8_DrawVertices } // if we haven't already converted this buffer to triangles, do it now - if(dwCached == -1) +// if(dwCached == -1) { int e=0; @@ -2975,6 +2975,14 @@ VOID WINAPI xd3d8::EmuIDirect3DDevice8_DrawVertices if(g_SlideCache[e].pOrigPtr == 0) break; + if(e == 32) + { + e = 0; + g_SlideCache[e].pOrigPtr = 0; + g_SlideCache[e].pVertexBuffer8->Release(); + g_SlideCache[e].pVertexBuffer8 = 0; + } + g_SlideCache[e].pOrigPtr = pOrigVertexBuffer8; g_pD3DDevice8->CreateVertexBuffer(PrimitiveCount*nStride*6, 0, 0, D3DPOOL_DEFAULT, &pHackVertexBuffer8); @@ -3031,7 +3039,7 @@ VOID WINAPI xd3d8::EmuIDirect3DDevice8_DrawVertices g_pD3DDevice8->DrawPrimitive ( PCPrimitiveType, - StartVertex*2, + StartVertex, PrimitiveCount );