mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-16 03:38:38 +12:00
cellgcm/sys_rsx: fix multiple io maps at the same effective address and vice verse
from hw testing, as long as the io address is valid, it returns CELL_OK, even when it doesn't make much sense
This commit is contained in:
parent
97515a0941
commit
c2b2dee56d
1 changed files with 0 additions and 11 deletions
|
@ -51,17 +51,6 @@ bool VirtualMemoryBlock::Map(u32 realaddr, u32 size, u32 addr)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (u32 i = 0; i<m_mapped_memory.size(); ++i)
|
|
||||||
{
|
|
||||||
if (addr >= m_mapped_memory[i].addr && addr + size - 1 <= m_mapped_memory[i].addr + m_mapped_memory[i].size - 1)
|
|
||||||
{
|
|
||||||
// it seems mapping another range inside a previous one is legit on ps3
|
|
||||||
// as long as it's coherent aliasing : offset from EA must match IO offset
|
|
||||||
// example game using this pattern : BCES01584 - the last of us
|
|
||||||
return (addr - m_mapped_memory[i].addr) == (realaddr - m_mapped_memory[i].realAddress);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
m_mapped_memory.emplace_back(addr, realaddr, size);
|
m_mapped_memory.emplace_back(addr, realaddr, size);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue