Fix crash in DOA2 and GTA

This commit is contained in:
Luke Usher 2019-07-10 18:55:08 +01:00
parent fe1285dc50
commit 3ccc02b7f4
2 changed files with 9 additions and 2 deletions

View File

@ -158,7 +158,7 @@ static XTL::INDEX16 *pQuadToTriangleIndexBuffer = nullptr;
static UINT QuadToTriangleIndexBuffer_Size = 0; // = NrOfQuadVertices
static XTL::IDirect3DSurface *g_DefaultHostDepthBufferSuface = NULL;
static XTL::X_D3DSurface *g_XboxBackBufferSurface = NULL;
XTL::X_D3DSurface *g_XboxBackBufferSurface = NULL;
static XTL::X_D3DSurface *g_XboxDefaultDepthStencilSurface = NULL;
XTL::X_D3DSurface *g_pXboxRenderTarget = NULL;
static XTL::X_D3DSurface *g_pXboxDepthStencil = NULL;

View File

@ -55,7 +55,8 @@ extern XTL::X_D3DVertexBuffer *g_pVertexBuffer = NULL;
extern DWORD XTL::g_dwPrimPerFrame = 0;
extern XTL::X_D3DVertexBuffer*g_D3DStreams[16];
extern UINT g_D3DStreamStrides[16];
extern XTL::X_D3DSurface* g_pXboxRenderTarget;
extern XTL::X_D3DSurface* g_pXboxRenderTarget;
extern XTL::X_D3DSurface* g_XboxBackBufferSurface;
void *GetDataFromXboxResource(XTL::X_D3DResource *pXboxResource);
bool GetHostRenderTargetDimensions(DWORD* pHostWidth, DWORD* pHostHeight, XTL::IDirect3DSurface* pHostRenderTarget = nullptr);
uint32_t GetPixelContainerWidth(XTL::X_D3DPixelContainer* pPixelContainer);
@ -682,6 +683,12 @@ void XTL::CxbxVertexBufferConverter::ConvertStream
// the uiTextureCoordinatesByteOffsetInVertex on host will match Xbox
}
// If for some reason the Xbox Render Target is not set, fallback to the backbuffer
if (g_pXboxRenderTarget == xbnullptr) {
LOG_TEST_CASE("SetRenderTarget fallback to backbuffer");
g_pXboxRenderTarget = g_XboxBackBufferSurface;
}
DWORD HostRenderTarget_Width, HostRenderTarget_Height;
DWORD XboxRenderTarget_Width = GetPixelContainerWidth(g_pXboxRenderTarget);
DWORD XboxRenderTarget_Height = GetPixelContainerHeight(g_pXboxRenderTarget);