Merge pull request #3666 from unknownbrackets/gpu-minor2

Don't ignore the low bits of the framebuf pointer
This commit is contained in:
Henrik Rydgård 2013-09-07 02:10:25 -07:00
commit 8db3213ca2
5 changed files with 17 additions and 51 deletions

View File

@ -466,10 +466,10 @@ void FramebufferManager::SetRenderFrameBuffer() {
gstate_c.framebufChanged = false; gstate_c.framebufChanged = false;
// Get parameters // Get parameters
u32 fb_address = (gstate.fbptr & 0xFFE000) | ((gstate.fbwidth & 0xFF0000) << 8); u32 fb_address = (gstate.fbptr & 0xFFFFFF) | ((gstate.fbwidth & 0xFF0000) << 8);
int fb_stride = gstate.fbwidth & 0x3C0; int fb_stride = gstate.fbwidth & 0x3C0;
u32 z_address = (gstate.zbptr & 0xFFE000) | ((gstate.zbwidth & 0xFF0000) << 8); u32 z_address = (gstate.zbptr & 0xFFFFFF) | ((gstate.zbwidth & 0xFF0000) << 8);
int z_stride = gstate.zbwidth & 0x3C0; int z_stride = gstate.zbwidth & 0x3C0;
// Yeah this is not completely right. but it'll do for now. // Yeah this is not completely right. but it'll do for now.

View File

@ -359,11 +359,7 @@ void GeDisassembleOp(u32 pc, u32 op, u32 prev, char *buffer) {
case GE_CMD_FRAMEBUFPTR: case GE_CMD_FRAMEBUFPTR:
{ {
u32 ptr = op & 0xFFE000; sprintf(buffer, "FramebufPtr: %08x", data);
if (data & ~0xFFE000)
sprintf(buffer, "FramebufPtr: %08x (extra %x)", ptr, data);
else
sprintf(buffer, "FramebufPtr: %08x", ptr);
} }
break; break;
@ -534,11 +530,7 @@ void GeDisassembleOp(u32 pc, u32 op, u32 prev, char *buffer) {
case GE_CMD_ZBUFPTR: case GE_CMD_ZBUFPTR:
{ {
u32 ptr = op & 0xFFE000; sprintf(buffer, "Zbuf ptr: %06x", data);
if (data & ~0xFFE000)
sprintf(buffer, "Zbuf ptr: %06x (extra %x)", ptr, data);
else
sprintf(buffer, "Zbuf ptr: %06x", ptr);
} }
break; break;

View File

@ -214,17 +214,11 @@ void NullGPU::ExecuteOp(u32 op, u32 diff)
break; break;
case GE_CMD_FRAMEBUFPTR: case GE_CMD_FRAMEBUFPTR:
{ DEBUG_LOG(G3D, "DL FramebufPtr: %08x", data);
u32 ptr = op & 0xFFE000;
DEBUG_LOG(G3D, "DL FramebufPtr: %08x", ptr);
}
break; break;
case GE_CMD_FRAMEBUFWIDTH: case GE_CMD_FRAMEBUFWIDTH:
{ DEBUG_LOG(G3D, "DL FramebufWidth: %i", data);
u32 w = data & 0xFFFFFF;
DEBUG_LOG(G3D, "DL FramebufWidth: %i", w);
}
break; break;
case GE_CMD_FRAMEBUFPIXFORMAT: case GE_CMD_FRAMEBUFPIXFORMAT:
@ -346,17 +340,11 @@ void NullGPU::ExecuteOp(u32 op, u32 diff)
break; break;
case GE_CMD_ZBUFPTR: case GE_CMD_ZBUFPTR:
{ DEBUG_LOG(G3D,"Zbuf Ptr: %06x", data);
u32 ptr = op & 0xFFE000;
DEBUG_LOG(G3D,"Zbuf Ptr: %06x", ptr);
}
break; break;
case GE_CMD_ZBUFWIDTH: case GE_CMD_ZBUFWIDTH:
{ DEBUG_LOG(G3D,"Zbuf Width: %i", data);
u32 w = data & 0xFFFFFF;
DEBUG_LOG(G3D,"Zbuf Width: %i", w);
}
break; break;
case GE_CMD_AMBIENTCOLOR: case GE_CMD_AMBIENTCOLOR:

View File

@ -476,19 +476,13 @@ void SoftGPU::ExecuteOp(u32 op, u32 diff)
break; break;
case GE_CMD_FRAMEBUFPTR: case GE_CMD_FRAMEBUFPTR:
{ fb = Memory::GetPointer(0x44000000 | (gstate.fbptr & 0xFFFFFF) | ((gstate.fbwidth & 0xFF0000) << 8));
u32 ptr = op & 0xFFE000; DEBUG_LOG(G3D, "DL FramebufPtr: %08x", data);
fb = Memory::GetPointer(0x44000000 | (gstate.fbptr & 0xFFE000) | ((gstate.fbwidth & 0xFF0000) << 8));
DEBUG_LOG(G3D, "DL FramebufPtr: %08x", ptr);
}
break; break;
case GE_CMD_FRAMEBUFWIDTH: case GE_CMD_FRAMEBUFWIDTH:
{ fb = Memory::GetPointer(0x44000000 | (gstate.fbptr & 0xFFFFFF) | ((gstate.fbwidth & 0xFF0000) << 8));
u32 w = data & 0xFFFFFF; DEBUG_LOG(G3D, "DL FramebufWidth: %i", data);
fb = Memory::GetPointer(0x44000000 | (gstate.fbptr & 0xFFE000) | ((gstate.fbwidth & 0xFF0000) << 8));
DEBUG_LOG(G3D, "DL FramebufWidth: %i", w);
}
break; break;
case GE_CMD_FRAMEBUFPIXFORMAT: case GE_CMD_FRAMEBUFPIXFORMAT:
@ -605,19 +599,13 @@ void SoftGPU::ExecuteOp(u32 op, u32 diff)
break; break;
case GE_CMD_ZBUFPTR: case GE_CMD_ZBUFPTR:
{ depthbuf = Memory::GetPointer(0x44000000 | (gstate.zbptr & 0xFFFFFF) | ((gstate.zbwidth & 0xFF0000) << 8));
u32 ptr = op & 0xFFE000; DEBUG_LOG(G3D,"Zbuf Ptr: %06x", data);
depthbuf = Memory::GetPointer(0x44000000 | (gstate.zbptr & 0xFFE000) | ((gstate.zbwidth & 0xFF0000) << 8));
DEBUG_LOG(G3D,"Zbuf Ptr: %06x", ptr);
}
break; break;
case GE_CMD_ZBUFWIDTH: case GE_CMD_ZBUFWIDTH:
{ depthbuf = Memory::GetPointer(0x44000000 | (gstate.zbptr & 0xFFFFFF) | ((gstate.zbwidth & 0xFF0000) << 8));
u32 w = data & 0xFFFFFF; DEBUG_LOG(G3D,"Zbuf Width: %i", data);
depthbuf = Memory::GetPointer(0x44000000 | (gstate.zbptr & 0xFFE000) | ((gstate.zbwidth & 0xFF0000) << 8));
DEBUG_LOG(G3D,"Zbuf Width: %i", w);
}
break; break;
case GE_CMD_AMBIENTCOLOR: case GE_CMD_AMBIENTCOLOR:

View File

@ -611,7 +611,6 @@ QString Debugger_DisplayList::DisassembleOp(u32 pc, u32 op, u32 prev, const GPUg
case GE_CMD_FRAMEBUFPTR: case GE_CMD_FRAMEBUFPTR:
{ {
u32 ptr = op & 0xFFE000;
return QString("FramebufPtr: %1").arg(data,8,16,QChar('0')); return QString("FramebufPtr: %1").arg(data,8,16,QChar('0'));
} }
break; break;
@ -781,8 +780,7 @@ QString Debugger_DisplayList::DisassembleOp(u32 pc, u32 op, u32 prev, const GPUg
case GE_CMD_ZBUFPTR: case GE_CMD_ZBUFPTR:
{ {
u32 ptr = op & 0xFFE000; return QString("Zbuf Ptr: %1").arg(data,6,16,QChar('0'));
return QString("Zbuf Ptr: %1").arg(ptr,6,16,QChar('0'));
} }
break; break;