summaryrefslogtreecommitdiff
path: root/plugins/peopsxgl/gpu.c
diff options
context:
space:
mode:
authoriCatButler <i.am.catbutler@gmail.com>2016-09-01 09:00:00 +0100
committeriCatButler <i.am.catbutler@gmail.com>2016-09-01 09:00:00 +0100
commitb9ca947ae0c9d45a4f76a58d1a0e1e4924f32a72 (patch)
tree504fa0e362dc7a0dba586bad7ea9b6b85644b4ce /plugins/peopsxgl/gpu.c
parentaa5016339fca96c6a608a1d5dedf5eab250abe57 (diff)
downloadpcsxr-b9ca947ae0c9d45a4f76a58d1a0e1e4924f32a72.tar.gz
Fix some edge cases and imprve depth visualisation:
- Remove upper 4-bits of each vertex as they may contain bad data (THPS) - Check if memory block from DMA is as expected, some primitives are not the first data in the block and preceding data needs to be skipped (HT, A2) - Change depth visualisation to a colour gradient that makes inconsistencies easier to see - Add support for visualising low resolution but consistent depth found in the Ordering Table
Diffstat (limited to 'plugins/peopsxgl/gpu.c')
-rwxr-xr-xplugins/peopsxgl/gpu.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/plugins/peopsxgl/gpu.c b/plugins/peopsxgl/gpu.c
index 5becb698..99ef36ba 100755
--- a/plugins/peopsxgl/gpu.c
+++ b/plugins/peopsxgl/gpu.c
@@ -716,7 +716,7 @@ long CALLBACK GPUopen(HWND hwndGPU)
InitializeTextureStore(); // init texture mem
resetGteVertices();
-
+
// lGPUstatusRet = 0x74000000;
// with some emus, we could do the OGL init right here... oh my
@@ -3138,6 +3138,7 @@ long CALLBACK GPUdmaChain(uint32_t *baseAddrL, uint32_t addr)
baseAddrB = (unsigned char*) baseAddrL;
+ uint32_t depthCount = 0;
do
{
if(iGPUHeight==512) addr&=0x1FFFFC;
@@ -3151,9 +3152,11 @@ long CALLBACK GPUdmaChain(uint32_t *baseAddrL, uint32_t addr)
if (count > 0)
{
- PGXP_SetAddress(dmaMem >> 2);
+ PGXP_SetAddress(dmaMem >> 2, &baseAddrL[dmaMem >> 2], count);
GPUwriteDataMem(&baseAddrL[dmaMem >> 2], count);
}
+ else
+ PGXP_SetDepth(depthCount++);
addr = baseAddrL[addr>>2]&0xffffff;
}