vmem: mprotect P2 vram space
Used by NHL 2K2 yuv textures Fixes FMV not being updated
This commit is contained in:
parent
537c2a4ed6
commit
e85b724085
|
@ -637,25 +637,27 @@ void _vmem_protect_vram(u32 addr, u32 size)
|
|||
if (VRAM_SIZE == 0x800000)
|
||||
{
|
||||
// wraps when only 8MB VRAM
|
||||
mem_region_lock(virt_ram_base + 0x04000000 + addr + VRAM_SIZE, size);
|
||||
//mem_region_lock(virt_ram_base + 0x06000000 + addr + VRAM_SIZE, size);
|
||||
mem_region_lock(virt_ram_base + 0x04000000 + addr + VRAM_SIZE, size); // P0 wrap
|
||||
//mem_region_lock(virt_ram_base + 0x06000000 + addr + VRAM_SIZE, size); // P0 mirror wrap
|
||||
}
|
||||
}
|
||||
if (_nvmem_4gb_space())
|
||||
{
|
||||
mem_region_lock(virt_ram_base + 0x84000000 + addr, size); // P1
|
||||
//mem_region_lock(virt_ram_base + 0x86000000 + addr, size); // P1 - mirror
|
||||
// We should also lock P2 and P3, and the mirrors, but they don't seem to be used...
|
||||
//mem_region_lock(virt_ram_base + 0xA4000000 + addr, size); // P2
|
||||
mem_region_lock(virt_ram_base + 0xA4000000 + addr, size); // P2
|
||||
//mem_region_lock(virt_ram_base + 0xA6000000 + addr, size); // P2 - mirror
|
||||
// We should also lock P3 and its mirrors, but it doesn't seem to be used...
|
||||
//mem_region_lock(virt_ram_base + 0xC4000000 + addr, size); // P3
|
||||
//mem_region_lock(virt_ram_base + 0xC6000000 + addr, size); // P3 - mirror
|
||||
if (VRAM_SIZE == 0x800000)
|
||||
{
|
||||
mem_region_lock(virt_ram_base + 0x84000000 + addr + VRAM_SIZE, size);
|
||||
//mem_region_lock(virt_ram_base + 0x86000000 + addr + VRAM_SIZE, size);
|
||||
//mem_region_lock(virt_ram_base + 0xA4000000 + addr + VRAM_SIZE, size);
|
||||
//mem_region_lock(virt_ram_base + 0xC4000000 + addr + VRAM_SIZE, size);
|
||||
mem_region_lock(virt_ram_base + 0x84000000 + addr + VRAM_SIZE, size); // P1 wrap
|
||||
//mem_region_lock(virt_ram_base + 0x86000000 + addr + VRAM_SIZE, size); // P1 - mirror wrap
|
||||
mem_region_lock(virt_ram_base + 0xA4000000 + addr + VRAM_SIZE, size); // P2 wrap
|
||||
//mem_region_lock(virt_ram_base + 0xA6000000 + addr + VRAM_SIZE, size); // P2 - mirror wrap
|
||||
//mem_region_lock(virt_ram_base + 0xC4000000 + addr + VRAM_SIZE, size); // P3 wrap
|
||||
//mem_region_lock(virt_ram_base + 0xC6000000 + addr + VRAM_SIZE, size); // P3 - mirror wrap
|
||||
}
|
||||
vmem32_protect_vram(addr, size);
|
||||
}
|
||||
|
@ -671,25 +673,27 @@ void _vmem_unprotect_vram(u32 addr, u32 size)
|
|||
if (VRAM_SIZE == 0x800000)
|
||||
{
|
||||
// wraps when only 8MB VRAM
|
||||
mem_region_unlock(virt_ram_base + 0x04000000 + addr + VRAM_SIZE, size);
|
||||
//mem_region_unlock(virt_ram_base + 0x06000000 + addr + VRAM_SIZE, size);
|
||||
mem_region_unlock(virt_ram_base + 0x04000000 + addr + VRAM_SIZE, size); // P0 wrap
|
||||
//mem_region_unlock(virt_ram_base + 0x06000000 + addr + VRAM_SIZE, size); // P0 mirror wrap
|
||||
}
|
||||
}
|
||||
if (_nvmem_4gb_space())
|
||||
{
|
||||
mem_region_unlock(virt_ram_base + 0x84000000 + addr, size); // P1
|
||||
//mem_region_unlock(virt_ram_base + 0x86000000 + addr, size); // P1 - mirror
|
||||
// We should also lock P2 and P3, and the mirrors, but they don't seem to be used...
|
||||
//mem_region_unlock(virt_ram_base + 0xA4000000 + addr, size); // P2
|
||||
//mem_region_unlock(virt_ram_base + 0xA6000000 + addr, size); // P2 - mirror
|
||||
//mem_region_unlock(virt_ram_base + 0x86000000 + addr, size); // P1 - mirror
|
||||
mem_region_unlock(virt_ram_base + 0xA4000000 + addr, size); // P2
|
||||
//mem_region_unlock(virt_ram_base + 0xA6000000 + addr, size); // P2 - mirror
|
||||
// We should also lock P3 and its mirrors, but it doesn't seem to be used...
|
||||
//mem_region_unlock(virt_ram_base + 0xC4000000 + addr, size); // P3
|
||||
//mem_region_unlock(virt_ram_base + 0xC6000000 + addr, size); // P3 - mirror
|
||||
if (VRAM_SIZE == 0x800000)
|
||||
{
|
||||
mem_region_unlock(virt_ram_base + 0x84000000 + addr + VRAM_SIZE, size);
|
||||
//mem_region_unlock(virt_ram_base + 0x86000000 + addr + VRAM_SIZE, size);
|
||||
//mem_region_unlock(virt_ram_base + 0xA4000000 + addr + VRAM_SIZE, size);
|
||||
//mem_region_unlock(virt_ram_base + 0xC4000000 + addr + VRAM_SIZE, size);
|
||||
mem_region_unlock(virt_ram_base + 0x84000000 + addr + VRAM_SIZE, size); // P1 wrap
|
||||
//mem_region_unlock(virt_ram_base + 0x86000000 + addr + VRAM_SIZE, size); // P1 - mirror wrap
|
||||
mem_region_unlock(virt_ram_base + 0xA4000000 + addr + VRAM_SIZE, size); // P2 wrap
|
||||
//mem_region_unlock(virt_ram_base + 0xA6000000 + addr + VRAM_SIZE, size); // P2 - mirror wrap
|
||||
//mem_region_unlock(virt_ram_base + 0xC4000000 + addr + VRAM_SIZE, size); // P3 wrap
|
||||
//mem_region_unlock(virt_ram_base + 0xC6000000 + addr + VRAM_SIZE, size); // P3 - mirror wrap
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -719,7 +723,7 @@ u32 _vmem_get_vram_offset(void *addr)
|
|||
}
|
||||
if ((offset >> 24) != 4)
|
||||
return -1;
|
||||
verify((((u8*)addr - virt_ram_base) >> 29) == 0 || (((u8*)addr - virt_ram_base) >> 29) == 4); // others areas aren't mapped atm
|
||||
verify((((u8*)addr - virt_ram_base) >> 29) == 0 || (((u8*)addr - virt_ram_base) >> 29) == 4 || (((u8*)addr - virt_ram_base) >> 29) == 5); // others areas aren't mapped atm
|
||||
|
||||
return offset & VRAM_MASK;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue