Tail's Head now renders in Sonic Heroes E3 Demo, Zapper is still broken..

This commit is contained in:
Luke Usher 2018-02-25 11:13:12 +00:00
parent 6c2c3d5fb2
commit 53998f41ed
1 changed files with 29 additions and 29 deletions

View File

@ -278,8 +278,7 @@ bool XTL::VertexPatcher::ApplyCachedStream(VertexPatchDesc *pPatchDesc,
pCalculateData = (void*)GetDataFromXboxResource(pOrigVertexBuffer); pCalculateData = (void*)GetDataFromXboxResource(pOrigVertexBuffer);
} }
// Use the cached stream length (which is a must for the UP stream) uint32_t uiHash = XXHash32::hash((void *)pCalculateData, uiLength, HASH_SEED);
uint32_t uiHash = XXHash32::hash((void *)pCalculateData, pCachedStream->uiLength, HASH_SEED);
if(uiHash == pCachedStream->uiHash) if(uiHash == pCachedStream->uiHash)
{ {
// Take a while longer to check // Take a while longer to check
@ -342,22 +341,8 @@ bool XTL::VertexPatcher::ApplyCachedStream(VertexPatchDesc *pPatchDesc,
return bApplied; return bApplied;
} }
UINT XTL::VertexPatcher::GetNbrStreams(VertexPatchDesc *pPatchDesc) int CountActiveD3DStreams()
{ {
if(VshHandleIsVertexShader(pPatchDesc->hVertexShader))
{
VERTEX_DYNAMIC_PATCH *pDynamicPatch = VshGetVertexDynamicPatch(pPatchDesc->hVertexShader);
if(pDynamicPatch)
{
return pDynamicPatch->NbrStreams;
}
else
{
// Draw..Up always have one stream
if (pPatchDesc->pVertexStreamZeroData != nullptr) {
return 1;
}
int lastStreamIndex; int lastStreamIndex;
for (int i = 0; i < 16; i++) { for (int i = 0; i < 16; i++) {
if (g_D3DStreams[i] != nullptr) { if (g_D3DStreams[i] != nullptr) {
@ -366,13 +351,28 @@ UINT XTL::VertexPatcher::GetNbrStreams(VertexPatchDesc *pPatchDesc)
} }
return lastStreamIndex + 1; return lastStreamIndex + 1;
} }
}
else if(pPatchDesc->hVertexShader) UINT XTL::VertexPatcher::GetNbrStreams(VertexPatchDesc *pPatchDesc)
{ {
// Draw..Up always have one stream
if (pPatchDesc->pVertexStreamZeroData != nullptr) {
return 1; return 1;
} }
if(VshHandleIsVertexShader(pPatchDesc->hVertexShader)) {
VERTEX_DYNAMIC_PATCH *pDynamicPatch = VshGetVertexDynamicPatch(pPatchDesc->hVertexShader);
if (pDynamicPatch) {
return pDynamicPatch->NbrStreams;
}
return CountActiveD3DStreams();
}
if (pPatchDesc->hVertexShader) {
return CountActiveD3DStreams();
}
return 0; return 0;
} }
@ -965,7 +965,7 @@ bool XTL::VertexPatcher::PatchPrimitive(VertexPatchDesc *pPatchDesc,
{ {
pStream->pPatchedStream->Unlock(); pStream->pPatchedStream->Unlock();
g_pD3DDevice8->SetStreamSource(0, pStream->pPatchedStream, pStream->uiOrigStride); g_pD3DDevice8->SetStreamSource(uiStream, pStream->pPatchedStream, pStream->uiOrigStride);
} }
m_bPatched = true; m_bPatched = true;