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