diff options
Diffstat (limited to 'src/devices/bus/neogeo/prot_kof2k3bl.cpp')
-rw-r--r-- | src/devices/bus/neogeo/prot_kof2k3bl.cpp | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/devices/bus/neogeo/prot_kof2k3bl.cpp b/src/devices/bus/neogeo/prot_kof2k3bl.cpp index 5801f6dacfe..5ef35dee9c5 100644 --- a/src/devices/bus/neogeo/prot_kof2k3bl.cpp +++ b/src/devices/bus/neogeo/prot_kof2k3bl.cpp @@ -50,11 +50,11 @@ WRITE16_MEMBER(kof2k3bl_prot_device::kof2003_w) m_bank_base = 0x100000 + ((cr[BYTE_XOR_LE(0x1ff3)] << 16) | (cr[BYTE_XOR_LE(0x1ff2)] << 8) | cr[BYTE_XOR_LE(0x1ff1)]); //UINT32 address = (cr[BYTE_XOR_LE(0x1ff3)] << 16) | (cr[BYTE_XOR_LE(0x1ff2)] << 8) | cr[BYTE_XOR_LE(0x1ff1)]; //m_bankdev->neogeo_set_main_cpu_bank_address(address+0x100000); - + cr[BYTE_XOR_LE(0x1ff0)] = 0xa0; cr[BYTE_XOR_LE(0x1ff1)] &= 0xfe; cr[BYTE_XOR_LE(0x1ff3)] &= 0x7f; - + m_overlay = (prt & 0x00ff) | (m_overlay & 0xff00); } } @@ -69,7 +69,7 @@ WRITE16_MEMBER(kof2k3bl_prot_device::kof2003p_w) m_bank_base = 0x100000 + ((cr[BYTE_XOR_LE(0x1ff3)] << 16) | (cr[BYTE_XOR_LE(0x1ff2)] << 8) | cr[BYTE_XOR_LE(0x1ff0)]); //UINT32 address = (cr[BYTE_XOR_LE(0x1ff3)] << 16) | (cr[BYTE_XOR_LE(0x1ff2)] << 8) | cr[BYTE_XOR_LE(0x1ff0)]; //m_bankdev->neogeo_set_main_cpu_bank_address(address+0x100000); - + cr[BYTE_XOR_LE(0x1ff0)] &= 0xfe; cr[BYTE_XOR_LE(0x1ff3)] &= 0x7f; @@ -96,17 +96,17 @@ void kof2k3bl_prot_device::pl_px_decrypt(UINT8* cpurom, UINT32 cpurom_size) { std::vector<UINT16> tmp(0x100000/2); UINT16*rom16 = (UINT16*)cpurom; - + for (int i = 0; i < 0x700000/2; i += 0x100000/2) { memcpy(&tmp[0], &rom16[i], 0x100000); for (int j = 0; j < 0x100000/2; j++) rom16[i+j] = tmp[BITSWAP24(j,23,22,21,20,19,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)]; } - + /* patched by Altera protection chip on PCB */ rom16[0xf38ac/2] = 0x4e75; - + m_overlay = rom16[0x58196 / 2]; } @@ -118,7 +118,7 @@ void kof2k3bl_prot_device::upl_px_decrypt(UINT8* cpurom, UINT32 cpurom_size) UINT8 *src = cpurom; memmove(src + 0x100000, src, 0x600000); memmove(src, src + 0x700000, 0x100000); - + UINT8 *rom = cpurom + 0xfe000; UINT8 *buf = cpurom + 0xd0610; for (int i = 0; i < 0x2000 / 2; i++) @@ -126,8 +126,7 @@ void kof2k3bl_prot_device::upl_px_decrypt(UINT8* cpurom, UINT32 cpurom_size) int ofst = (i & 0xff00) + BITSWAP8((i & 0x00ff), 7, 6, 0, 4, 3, 2, 1, 5); memcpy(&rom[i * 2], &buf[ofst * 2], 2); } - + UINT16* rom16 = (UINT16*)cpurom; m_overlay = rom16[0x58196 / 2]; } - |