summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/neogeo/cmc_prot.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/neogeo/cmc_prot.h')
-rw-r--r--src/devices/bus/neogeo/cmc_prot.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/src/devices/bus/neogeo/cmc_prot.h b/src/devices/bus/neogeo/cmc_prot.h
new file mode 100644
index 00000000000..8660c3bf3ed
--- /dev/null
+++ b/src/devices/bus/neogeo/cmc_prot.h
@@ -0,0 +1,87 @@
+// license:BSD-3-Clause
+// copyright-holders:S. Smith,David Haywood
+
+
+#pragma once
+
+#ifndef __CMC_PROT__
+#define __CMC_PROT__
+
+extern const device_type CMC_PROT;
+
+#define MCFG_CMC_PROT_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, CMC_PROT, 0)
+
+// cmc42
+#define KOF99_GFX_KEY (0x00)
+#define GAROU_GFX_KEY (0x06)
+#define MSLUG3_GFX_KEY (0xad)
+#define ZUPAPA_GFX_KEY (0xbd)
+#define GANRYU_GFX_KEY (0x07)
+#define S1945P_GFX_KEY (0x05)
+#define PREISLE2_GFX_KEY (0x9f)
+#define BANGBEAD_GFX_KEY (0xf8)
+#define NITD_GFX_KEY (0xff)
+#define SENGOKU3_GFX_KEY (0xfe)
+
+// cmc50
+#define KOF2000_GFX_KEY (0x00)
+#define KOF2001_GFX_KEY (0x1e)
+#define MSLUG4_GFX_KEY (0x31)
+#define ROTD_GFX_KEY (0x3f)
+#define PNYAA_GFX_KEY (0x2e)
+#define KOF2002_GFX_KEY (0xec)
+#define MATRIM_GFX_KEY (0x6a)
+#define SAMSHO5_GFX_KEY (0x0f)
+#define SAMSHO5SP_GFX_KEY (0x0d)
+#define MSLUG5_GFX_KEY (0x19)
+#define SVC_GFX_KEY (0x57)
+#define KOF2003_GFX_KEY (0x9d)
+#define JOCKEYGP_GFX_KEY (0xac)
+
+
+class cmc_prot_device : public device_t
+{
+public:
+ // construction/destruction
+ cmc_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ void decrypt(UINT8 *r0, UINT8 *r1,
+ UINT8 c0, UINT8 c1,
+ const UINT8 *table0hi,
+ const UINT8 *table0lo,
+ const UINT8 *table1,
+ int base,
+ int invert);
+
+ void neogeo_gfx_decrypt(UINT8* rom, UINT32 rom_size, int extra_xor);
+ void neogeo_sfix_decrypt(UINT8* rom, UINT32 rom_size, UINT8* fixed, UINT32 fixed_size);
+ void kof99_neogeo_gfx_decrypt(UINT8* rom, UINT32 rom_size, UINT8* fixed, UINT32 fixed_size, int extra_xor);
+ void kof2000_neogeo_gfx_decrypt(UINT8* rom, UINT32 rom_size, UINT8* fixed, UINT32 fixed_size, int extra_xor);
+ void cmc42_neogeo_gfx_decrypt(UINT8* rom, UINT32 rom_size, UINT8* fixed, UINT32 fixed_size, int extra_xor);
+ void cmc50_neogeo_gfx_decrypt(UINT8* rom, UINT32 rom_size, UINT8* fixed, UINT32 fixed_size, int extra_xor);
+
+ UINT16 generate_cs16(UINT8 *rom, int size);
+ int m1_address_scramble(int address, UINT16 key);
+ void neogeo_cmc50_m1_decrypt(UINT8* romcrypt, UINT32 romcrypt_size, UINT8* romaudio, UINT32 romaudio_size);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+ const UINT8 *type0_t03;
+ const UINT8 *type0_t12;
+ const UINT8 *type1_t03;
+ const UINT8 *type1_t12;
+ const UINT8 *address_8_15_xor1;
+ const UINT8 *address_8_15_xor2;
+ const UINT8 *address_16_23_xor1;
+ const UINT8 *address_16_23_xor2;
+ const UINT8 *address_0_7_xor;
+
+private:
+
+
+};
+
+#endif