SPR VU Access: Changed VU0 back to using physical memory map addresses, Doesn't seem to work the other way. Fixes CSI 3 - Dimensions of Murder SPS

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5480 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
refraction 2012-12-16 14:23:47 +00:00
parent 7f45b21be1
commit f3844f026a
1 changed files with 14 additions and 7 deletions

View File

@ -113,26 +113,33 @@ __fi tDMA_TAG* SPRdmaGetAddr(u32 addr, bool write)
{
return (tDMA_TAG*)(write ? eeMem->ZeroWrite : eeMem->ZeroRead);
}
else if ((addr >= 0x11004000) && (addr < 0x11010000))
else if ((addr >= 0x11000000) && (addr < 0x11010000))
{
if (THREAD_VU1) {
DevCon.Error("MTVU: SPRdmaGetAddr Accessing VU Memory!");
//DevCon.Error("MTVU: SPRdmaGetAddr Accessing VU Memory!");
vu1Thread.WaitVU();
}
//Access for VU Memory
if((addr >= 0x1100c000) && (addr < 0x11010000))
{
DevCon.Warning("VU1 Mem %x", addr);
return (tDMA_TAG*)VU1.Mem + (addr & 0x3ff0);
}
//Possibly not needed but the manual doesn't say SPR cannot access it.
if((addr >= 0x11008000) && (addr < 0x1100c000))
{
DevCon.Warning("VU1 Micro %x", addr);
return (tDMA_TAG*)VU1.Micro + (addr & 0x3ff0);
}
if ((addr >= 0x11000000) && (addr < 0x11004000))
return (tDMA_TAG*)VU0.Micro + (addr & 0xff0);
if ((addr >= 0x11004000) && (addr < 0x11008000))
return (tDMA_TAG*)VU0.Mem + (addr & 0xff0);
if ((addr >= 0x11000000) && (addr < 0x11008000))
{
//VU0 is still mapped directly to physical memory, you cant just
//Access it like above (it doesn't work lol) CSI 3 - Dimensions of Murder
return (tDMA_TAG*)vtlb_GetPhyPtr(addr & 0x1FFFFFF0);
}
// Unreachable
return NULL;