win32: unprotect ram regions individually in blockmanager

fixes abort when starting game in windows
This commit is contained in:
flyinghead 2019-07-04 09:36:22 +02:00
parent 5f6f90b66b
commit b540b437ee
1 changed files with 12 additions and 1 deletions

View File

@ -408,7 +408,18 @@ void bm_Reset()
protected_blocks = 0;
unprotected_blocks = 0;
mem_region_unlock(virt_ram_base + 0x0C000000, 0x10000000 - 0x0C000000);
// Windows cannot lock/unlock a region spanning more than one VirtualAlloc or MapViewOfFile
// so we have to unlock each region individually
// No need for this mess in 4GB mode since windows doesn't use it
#if RAM_SIZE == 16 * 1024 * 1024
mem_region_unlock(virt_ram_base + 0x0C000000, RAM_SIZE);
mem_region_unlock(virt_ram_base + 0x0D000000, RAM_SIZE);
mem_region_unlock(virt_ram_base + 0x0E000000, RAM_SIZE);
mem_region_unlock(virt_ram_base + 0x0F000000, RAM_SIZE);
#else
mem_region_unlock(virt_ram_base + 0x0C000000, RAM_SIZE);
mem_region_unlock(virt_ram_base + 0x0E000000, RAM_SIZE);
#endif
if (_nvmem_4gb_space())
{
mem_region_unlock(virt_ram_base + 0x8C000000, 0x90000000 - 0x8C000000);