From 607fc31812bed40c25bf5c8f2ec7d7e5e665e7bb Mon Sep 17 00:00:00 2001 From: Aaron Robinson Date: Tue, 16 Mar 2004 00:48:51 +0000 Subject: [PATCH] in the middle of something.. --- Cxbx.opt | Bin 64512 -> 69120 bytes Include/Cxbx.h | 3 ++ Include/Win32/CxbxKrnl/EmuD3D8/VertexBuffer.h | 34 +++++++++++++ .../Win32/CxbxKrnl/EmuD3D8/VertexBuffer.cpp | 46 ++++++++++++++++++ 4 files changed, 83 insertions(+) diff --git a/Cxbx.opt b/Cxbx.opt index 48b46e2246c8c2089b57615f26a405beee9d59a2..962978b11509de8b39955746bc7ce6be788e062f 100644 GIT binary patch literal 69120 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 I^b4Cp0Nq(Mi2wiq diff --git a/Include/Cxbx.h b/Include/Cxbx.h index 26f6cf192..76640a74c 100644 --- a/Include/Cxbx.h +++ b/Include/Cxbx.h @@ -54,6 +54,9 @@ typedef signed char sint08; typedef signed short sint16; typedef signed long sint32; +// define this to track vertex buffers for debugging purposes +#define _DEBUG_TRACK_VB + // define this to trace intercepted function calls #define _DEBUG_TRACE diff --git a/Include/Win32/CxbxKrnl/EmuD3D8/VertexBuffer.h b/Include/Win32/CxbxKrnl/EmuD3D8/VertexBuffer.h index 7df6c3dc8..28e3356f2 100644 --- a/Include/Win32/CxbxKrnl/EmuD3D8/VertexBuffer.h +++ b/Include/Win32/CxbxKrnl/EmuD3D8/VertexBuffer.h @@ -34,6 +34,40 @@ #ifndef VERTEXBUFFER_H #define VERTEXBUFFER_H +#include "Cxbx.h" + +#ifdef _DEBUG_TRACK_VB + +struct VBNode +{ + XTL::IDirect3DVertexBuffer8 *vb; + VBNode *next; +}; + +extern class VBTracker +{ + public: + VBTracker() : m_head(0), m_tail(0) {} + ~VBTracker(); + + // insert a ptr + void insert(XTL::IDirect3DVertexBuffer8 *pVB); + + // remove a ptr + void remove(XTL::IDirect3DVertexBuffer8 *pVB); + + // check for existance of ptr + bool exists(XTL::IDirect3DVertexBuffer8 *pVB); + + private: + // list of "live" vertex buffers for debugging purposes + VBNode *m_head; + VBNode *m_tail; +} +g_VBTrackTotal, g_VBTrackDisable; + +#endif + // fixup xbox extensions to be compatible with PC direct3d extern UINT EmuFixupVerticesA ( diff --git a/Source/Win32/CxbxKrnl/EmuD3D8/VertexBuffer.cpp b/Source/Win32/CxbxKrnl/EmuD3D8/VertexBuffer.cpp index 58fde5c57..f0185e49d 100644 --- a/Source/Win32/CxbxKrnl/EmuD3D8/VertexBuffer.cpp +++ b/Source/Win32/CxbxKrnl/EmuD3D8/VertexBuffer.cpp @@ -45,6 +45,52 @@ namespace XTL extern XTL::LPDIRECT3DDEVICE8 g_pD3DDevice8; // Direct3D8 Device +#ifdef _DEBUG_TRACK_VB + +extern XTL::VBTracker g_VBTrack; + +XTL::VBTracker::~VBTracker() +{ + VBNode *cur = m_head; + + while(cur != NULL) + { + free(cur); + + cur = cur->next; + } +} + +void XTL::VBTracker::insert(IDirect3DVertexBuffer8 *pVB) +{ + if(m_head == 0) + { + m_tail = m_head = new VBNode(); + m_tail->vb = 0; + m_tail->next = 0; + } + + m_tail->vb = pVB; + + m_tail->next = new VBNode(); + m_tail->next->vb = 0; + m_tail->next->next = 0; + + return; +} + +void XTL::VBTracker::remove(IDirect3DVertexBuffer8 *pVB) +{ + return; +} + +bool XTL::VBTracker::exists(IDirect3DVertexBuffer8 *pVB) +{ + return false; +} + +#endif // _DEBUG_TRACK_VB + // fixup xbox extensions to be compatible with PC direct3d UINT XTL::EmuFixupVerticesA (