summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/neogeo/prot_cmc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/neogeo/prot_cmc.cpp')
-rw-r--r--src/devices/bus/neogeo/prot_cmc.cpp14
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
{