mirror of
https://github.com/ARMSX2/ARMSX2.git
synced 2026-08-24 16:50:16 -07:00
VIF: Fix MPG bug incrementing addresses properly when using MTVU
Also handle wrapping
This commit is contained in:
+12
-2
@@ -262,8 +262,18 @@ static __fi void _vifCode_MPG(int idx, u32 addr, const u32 *data, int size) {
|
||||
vifExecQueue(idx);
|
||||
|
||||
if (idx && THREAD_VU1) {
|
||||
vu1Thread.WriteMicroMem(addr, (u8*)data, size*4);
|
||||
vifX.tag.addr = size * 4;
|
||||
if ((addr + size * 4) > vuMemSize)
|
||||
{
|
||||
vu1Thread.WriteMicroMem(addr, (u8*)data, vuMemSize - addr);
|
||||
size -= (vuMemSize - addr) / 4;
|
||||
vu1Thread.WriteMicroMem(0, (u8*)data, size * 4);
|
||||
vifX.tag.addr = size * 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
vu1Thread.WriteMicroMem(addr, (u8*)data, size * 4);
|
||||
vifX.tag.addr += size * 4;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user