diff options
Diffstat (limited to 'src/devices/bus/neogeo/prot_cmc.cpp')
-rw-r--r-- | src/devices/bus/neogeo/prot_cmc.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/devices/bus/neogeo/prot_cmc.cpp b/src/devices/bus/neogeo/prot_cmc.cpp index ffd86a1934e..77591827f54 100644 --- a/src/devices/bus/neogeo/prot_cmc.cpp +++ b/src/devices/bus/neogeo/prot_cmc.cpp @@ -4,8 +4,6 @@ #include "emu.h" #include "prot_cmc.h" -#include <algorithm> - DEFINE_DEVICE_TYPE(NG_CMC_PROT, cmc_prot_device, "ng_cmc_prot", "Neo Geo CMC42/CMC40 Protection") @@ -705,10 +703,11 @@ int cmc_prot_device::m1_address_scramble(int address, uint16_t key) } -void cmc_prot_device::cmc50_m1_decrypt(uint8_t* romaudio, uint32_t romaudio_size) +void cmc_prot_device::cmc50_m1_decrypt(uint8_t* romcrypt, uint32_t romcrypt_size, uint8_t* romaudio, uint32_t romaudio_size) { - uint8_t* rom = romaudio; - size_t rom_size = romaudio_size; + uint8_t* rom = romcrypt; + size_t rom_size = 0x80000; + uint8_t* rom2 = romaudio; std::vector<uint8_t> buffer(rom_size); @@ -719,7 +718,10 @@ void cmc_prot_device::cmc50_m1_decrypt(uint8_t* romaudio, uint32_t romaudio_size for (uint32_t i = 0; i < rom_size; i++) buffer[i] = rom[m1_address_scramble(i,key)]; - std::copy(buffer.begin(), buffer.end(), &rom[0]); + memcpy(rom, &buffer[0], rom_size); + + memcpy(rom2,rom, 0x10000); + memcpy(rom2 + 0x10000, rom, 0x80000); #if 0 { |