1 // license:BSD-3-Clause
2 // copyright-holders:S. Smith,David Haywood,Fabio Priuli
3 #ifndef MAME_BUS_NEOGEO_PCM2_H
4 #define MAME_BUS_NEOGEO_PCM2_H
5 
6 #include "slot.h"
7 #include "rom.h"
8 #include "prot_cmc.h"
9 #include "prot_pcm2.h"
10 
11 // ======================> neogeo_pcm2_cart_device
12 
13 class neogeo_pcm2_cart_device : public neogeo_rom_device
14 {
15 public:
16 	// construction/destruction
17 	neogeo_pcm2_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t clock);
18 
decrypt_all(DECRYPT_ALL_PARAMS)19 	virtual void decrypt_all(DECRYPT_ALL_PARAMS) override { }
get_fixed_bank_type()20 	virtual int get_fixed_bank_type() override { return 0; }
21 
22 protected:
23 	neogeo_pcm2_cart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint16_t clock);
24 
25 	// device-level overrides
26 	virtual void device_start() override;
27 	virtual void device_reset() override;
28 
29 	virtual void device_add_mconfig(machine_config &config) override;
30 
31 	required_device<cmc_prot_device> m_cmc_prot;
32 	required_device<pcm2_prot_device> m_pcm2_prot;
33 };
34 
35 // device type definition
DECLARE_DEVICE_TYPE(NEOGEO_PCM2_CART,neogeo_pcm2_cart_device)36 DECLARE_DEVICE_TYPE(NEOGEO_PCM2_CART, neogeo_pcm2_cart_device)
37 
38 
39 /*************************************************
40  mslug4
41 **************************************************/
42 
43 class neogeo_pcm2_mslug4_cart_device : public neogeo_pcm2_cart_device
44 {
45 public:
46 	neogeo_pcm2_mslug4_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
47 	virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
48 	virtual int get_fixed_bank_type() override { return 1; }
49 };
50 
DECLARE_DEVICE_TYPE(NEOGEO_PCM2_MSLUG4_CART,neogeo_pcm2_mslug4_cart_device)51 DECLARE_DEVICE_TYPE(NEOGEO_PCM2_MSLUG4_CART, neogeo_pcm2_mslug4_cart_device)
52 
53 
54 /*************************************************
55  ms4plus
56  **************************************************/
57 
58 class neogeo_pcm2_ms4plus_cart_device : public neogeo_pcm2_cart_device
59 {
60 public:
61 	neogeo_pcm2_ms4plus_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
62 	virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
63 	virtual int get_fixed_bank_type() override { return 0; }
64 };
65 
DECLARE_DEVICE_TYPE(NEOGEO_PCM2_MS4PLUS_CART,neogeo_pcm2_ms4plus_cart_device)66 DECLARE_DEVICE_TYPE(NEOGEO_PCM2_MS4PLUS_CART, neogeo_pcm2_ms4plus_cart_device)
67 
68 
69 /*************************************************
70  rotd
71 **************************************************/
72 
73 class neogeo_pcm2_rotd_cart_device : public neogeo_pcm2_cart_device
74 {
75 public:
76 	neogeo_pcm2_rotd_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
77 	virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
78 	virtual int get_fixed_bank_type() override { return 1; }
79 };
80 
DECLARE_DEVICE_TYPE(NEOGEO_PCM2_ROTD_CART,neogeo_pcm2_rotd_cart_device)81 DECLARE_DEVICE_TYPE(NEOGEO_PCM2_ROTD_CART, neogeo_pcm2_rotd_cart_device)
82 
83 
84 /*************************************************
85  pnyaa
86 **************************************************/
87 
88 class neogeo_pcm2_pnyaa_cart_device : public neogeo_pcm2_cart_device
89 {
90 public:
91 	neogeo_pcm2_pnyaa_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
92 	virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
93 	virtual int get_fixed_bank_type() override { return 1; }
94 };
95 
96 DECLARE_DEVICE_TYPE(NEOGEO_PCM2_PNYAA_CART, neogeo_pcm2_pnyaa_cart_device)
97 
98 
99 #endif // MAME_BUS_NEOGEO_PCM2_H
100