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