summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/nes/multigame.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/nes/multigame.h')
-rw-r--r--src/devices/bus/nes/multigame.h294
1 files changed, 211 insertions, 83 deletions
diff --git a/src/devices/bus/nes/multigame.h b/src/devices/bus/nes/multigame.h
index c4c19f4de7d..e7c401ee3ab 100644
--- a/src/devices/bus/nes/multigame.h
+++ b/src/devices/bus/nes/multigame.h
@@ -14,15 +14,9 @@ class nes_action52_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_action52_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ nes_action52_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- virtual void write_h(offs_t offset, uint8_t data) override;
-
- virtual void pcb_reset() override;
-
-protected:
- // device-level overrides
- virtual void device_start() override;
+ virtual void write_h(offs_t offset, u8 data) override;
};
@@ -169,10 +163,6 @@ public:
virtual void write_h(offs_t offset, uint8_t data) override;
virtual void pcb_reset() override;
-
-protected:
- // device-level overrides
- virtual void device_start() override;
};
@@ -206,12 +196,6 @@ public:
nes_studyngame_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void write_h(offs_t offset, uint8_t data) override;
-
- virtual void pcb_reset() override;
-
-protected:
- // device-level overrides
- virtual void device_start() override;
};
@@ -299,10 +283,6 @@ public:
virtual void write_h(offs_t offset, u8 data) override;
virtual void pcb_reset() override;
-
-protected:
- // device-level overrides
- virtual void device_start() override;
};
@@ -397,15 +377,9 @@ class nes_ntd03_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_ntd03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ nes_ntd03_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- virtual void write_h(offs_t offset, uint8_t data) override;
-
- virtual void pcb_reset() override;
-
-protected:
- // device-level overrides
- virtual void device_start() override;
+ virtual void write_h(offs_t offset, u8 data) override;
};
@@ -423,6 +397,28 @@ public:
};
+// ======================> nes_bmc_ds927_device
+
+class nes_bmc_ds927_device : public nes_nrom_device
+{
+public:
+ // construction/destruction
+ nes_bmc_ds927_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ virtual u8 read_h(offs_t offset) override;
+ virtual void write_h(offs_t offset, u8 data) override;
+
+ virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
+private:
+ u8 m_latch, m_mode;
+};
+
+
// ======================> nes_bmc_gka_device
class nes_bmc_gka_device : public nes_nrom_device
@@ -531,6 +527,42 @@ public:
};
+// ======================> nes_bmc_k3071_device
+
+class nes_bmc_k3071_device : public nes_nrom_device
+{
+public:
+ // construction/destruction
+ nes_bmc_k3071_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ virtual void write_h(offs_t offset, u8 data) override;
+
+ virtual void pcb_reset() override;
+};
+
+
+// ======================> nes_bmc_s009_device
+
+class nes_bmc_s009_device : public nes_nrom_device
+{
+public:
+ // construction/destruction
+ nes_bmc_s009_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ virtual void write_m(offs_t offset, u8 data) override;
+ virtual void write_h(offs_t offset, u8 data) override;
+
+ virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
+private:
+ u8 m_reg;
+};
+
+
// ======================> nes_bmc_sa005a_device
class nes_bmc_sa005a_device : public nes_nrom_device
@@ -545,6 +577,53 @@ public:
};
+// ======================> nes_bmc_tf2740_device
+
+class nes_bmc_tf2740_device : public nes_nrom_device
+{
+public:
+ // construction/destruction
+ nes_bmc_tf2740_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ virtual u8 read_m(offs_t offset) override;
+ virtual void write_m(offs_t offset, u8 data) override;
+ virtual void write_h(offs_t offset, u8 data) override;
+
+ virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
+private:
+ void update_chr();
+ u8 m_reg[3];
+ u8 m_jumper;
+};
+
+
+// ======================> nes_bmc_th2348_device
+
+class nes_bmc_th2348_device : public nes_nrom_device
+{
+public:
+ // construction/destruction
+ nes_bmc_th2348_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ virtual void write_l(offs_t offset, u8 data) override;
+ virtual void write_h(offs_t offset, u8 data) override;
+
+ virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
+private:
+ u8 m_latch;
+};
+
+
// ======================> nes_bmc_tj03_device
class nes_bmc_tj03_device : public nes_nrom_device
@@ -719,10 +798,10 @@ class nes_bmc_64y2k_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_bmc_64y2k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ nes_bmc_64y2k_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- virtual void write_l(offs_t offset, uint8_t data) override;
- virtual void write_h(offs_t offset, uint8_t data) override;
+ virtual void write_l(offs_t offset, u8 data) override;
+ virtual void write_h(offs_t offset, u8 data) override;
virtual void pcb_reset() override;
@@ -731,8 +810,9 @@ protected:
virtual void device_start() override;
private:
- void set_prg();
- uint8_t m_reg[4];
+ void update_banks();
+ u8 m_reg[4];
+ u8 m_reg_mask;
};
@@ -764,9 +844,9 @@ class nes_bmc_12in1_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_bmc_12in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ nes_bmc_12in1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- virtual void write_h(offs_t offset, uint8_t data) override;
+ virtual void write_h(offs_t offset, u8 data) override;
virtual void pcb_reset() override;
@@ -776,7 +856,7 @@ protected:
private:
void update_banks();
- uint8_t m_reg[3];
+ u8 m_reg[4];
};
@@ -827,10 +907,6 @@ public:
virtual void write_h(offs_t offset, uint8_t data) override;
virtual void pcb_reset() override;
-
-protected:
- // device-level overrides
- virtual void device_start() override;
};
@@ -845,10 +921,6 @@ public:
virtual void write_h(offs_t offset, uint8_t data) override;
virtual void pcb_reset() override;
-
-protected:
- // device-level overrides
- virtual void device_start() override;
};
@@ -863,10 +935,6 @@ public:
virtual void write_h(offs_t offset, uint8_t data) override;
virtual void pcb_reset() override;
-
-protected:
- // device-level overrides
- virtual void device_start() override;
};
@@ -1005,43 +1073,15 @@ private:
};
-// ======================> nes_bmc_gold150_device
-
-class nes_bmc_gold150_device : public nes_nrom_device
-{
-public:
- // construction/destruction
- nes_bmc_gold150_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual uint8_t read_h(offs_t offset) override;
- virtual void write_h(offs_t offset, uint8_t data) override;
-
- virtual void pcb_reset() override;
-
-protected:
- // device-level overrides
- virtual void device_start() override;
-
-private:
- uint8_t m_latch;
-};
-
-
// ======================> nes_bmc_gold260_device
class nes_bmc_gold260_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_bmc_gold260_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void write_h(offs_t offset, uint8_t data) override;
+ nes_bmc_gold260_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- virtual void pcb_reset() override;
-
-protected:
- // device-level overrides
- virtual void device_start() override;
+ virtual void write_h(offs_t offset, u8 data) override;
};
@@ -1078,13 +1118,14 @@ public:
protected:
// construction/destruction
- nes_bmc_42in1reset_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+ nes_bmc_42in1reset_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 mirror_flip);
// device-level overrides
virtual void device_start() override;
private:
- u8 m_latch, m_mirror_flip;
+ u8 m_latch;
+ const u8 m_mirror_flip;
};
@@ -1153,6 +1194,42 @@ private:
};
+// ======================> nes_bmc_ctc12in1_device
+
+class nes_bmc_ctc12in1_device : public nes_vram_protect_device
+{
+public:
+ // construction/destruction
+ nes_bmc_ctc12in1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ virtual u8 read_m(offs_t offset) override;
+ virtual void write_h(offs_t offset, u8 data) override;
+
+ virtual void pcb_reset() override;
+
+protected:
+ // construction/destruction
+ nes_bmc_ctc12in1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+
+ // device-level overrides
+ virtual void device_start() override;
+
+ u8 m_reg[2];
+};
+
+
+// ======================> nes_bmc_891227_device
+
+class nes_bmc_891227_device : public nes_bmc_ctc12in1_device
+{
+public:
+ // construction/destruction
+ nes_bmc_891227_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ virtual void write_h(offs_t offset, u8 data) override;
+};
+
+
// ======================> nes_bmc_k1029_device
class nes_bmc_k1029_device : public nes_vram_protect_device
@@ -1162,6 +1239,32 @@ public:
nes_bmc_k1029_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
virtual void write_h(offs_t offset, u8 data) override;
+
+protected:
+ // construction/destruction
+ nes_bmc_k1029_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+};
+
+
+// ======================> nes_bmc_fam250_device
+
+class nes_bmc_fam250_device : public nes_bmc_k1029_device
+{
+public:
+ // construction/destruction
+ nes_bmc_fam250_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ virtual u8 read_m(offs_t offset) override;
+ virtual void write_h(offs_t offset, u8 data) override;
+
+ virtual void pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
+private:
+ u8 m_latch, m_reg;
};
@@ -1197,6 +1300,23 @@ public:
virtual void write_h(offs_t offset, u8 data) override;
virtual void pcb_reset() override;
+
+protected:
+ // construction/destruction
+ nes_bmc_th22913_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 vram_prot_bit);
+
+private:
+ const u8 m_vram_prot_bit;
+};
+
+
+// ======================> nes_bmc_82ab_device
+
+class nes_bmc_82ab_device : public nes_bmc_th22913_device
+{
+public:
+ // construction/destruction
+ nes_bmc_82ab_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
};
@@ -1220,9 +1340,13 @@ DECLARE_DEVICE_TYPE(NES_BMC_810544C, nes_bmc_810544c_device)
DECLARE_DEVICE_TYPE(NES_BMC_830425C, nes_bmc_830425c_device)
DECLARE_DEVICE_TYPE(NES_BMC_830928C, nes_bmc_830928c_device)
DECLARE_DEVICE_TYPE(NES_BMC_850437C, nes_bmc_850437c_device)
+DECLARE_DEVICE_TYPE(NES_BMC_891227, nes_bmc_891227_device)
DECLARE_DEVICE_TYPE(NES_BMC_970630C, nes_bmc_970630c_device)
DECLARE_DEVICE_TYPE(NES_NTD03, nes_ntd03_device)
DECLARE_DEVICE_TYPE(NES_BMC_CTC09, nes_bmc_ctc09_device)
+DECLARE_DEVICE_TYPE(NES_BMC_CTC12IN1, nes_bmc_ctc12in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_DS927, nes_bmc_ds927_device)
+DECLARE_DEVICE_TYPE(NES_BMC_FAM250, nes_bmc_fam250_device)
DECLARE_DEVICE_TYPE(NES_BMC_GKA, nes_bmc_gka_device)
DECLARE_DEVICE_TYPE(NES_BMC_GKB, nes_bmc_gkb_device)
DECLARE_DEVICE_TYPE(NES_BMC_GKCXIN1, nes_bmc_gkcxin1_device)
@@ -1231,7 +1355,11 @@ DECLARE_DEVICE_TYPE(NES_BMC_HP898F, nes_bmc_hp898f_device)
DECLARE_DEVICE_TYPE(NES_BMC_K1029, nes_bmc_k1029_device)
DECLARE_DEVICE_TYPE(NES_BMC_K3036, nes_bmc_k3036_device)
DECLARE_DEVICE_TYPE(NES_BMC_K3046, nes_bmc_k3046_device)
+DECLARE_DEVICE_TYPE(NES_BMC_K3071, nes_bmc_k3071_device)
+DECLARE_DEVICE_TYPE(NES_BMC_S009, nes_bmc_s009_device)
DECLARE_DEVICE_TYPE(NES_BMC_SA005A, nes_bmc_sa005a_device)
+DECLARE_DEVICE_TYPE(NES_BMC_TF2740, nes_bmc_tf2740_device)
+DECLARE_DEVICE_TYPE(NES_BMC_TH2348, nes_bmc_th2348_device)
DECLARE_DEVICE_TYPE(NES_BMC_TJ03, nes_bmc_tj03_device)
DECLARE_DEVICE_TYPE(NES_BMC_WS, nes_bmc_ws_device)
DECLARE_DEVICE_TYPE(NES_BMC_11160, nes_bmc_11160_device)
@@ -1259,12 +1387,12 @@ DECLARE_DEVICE_TYPE(NES_BMC_190IN1, nes_bmc_190in1_device)
DECLARE_DEVICE_TYPE(NES_BMC_500IN1, nes_bmc_500in1_device)
DECLARE_DEVICE_TYPE(NES_BMC_800IN1, nes_bmc_800in1_device)
DECLARE_DEVICE_TYPE(NES_BMC_1200IN1, nes_bmc_1200in1_device)
-DECLARE_DEVICE_TYPE(NES_BMC_GOLD150, nes_bmc_gold150_device)
DECLARE_DEVICE_TYPE(NES_BMC_GOLD260, nes_bmc_gold260_device)
DECLARE_DEVICE_TYPE(NES_BMC_4IN1RESET, nes_bmc_4in1reset_device)
DECLARE_DEVICE_TYPE(NES_BMC_42IN1RESET, nes_bmc_42in1reset_device)
DECLARE_DEVICE_TYPE(NES_BMC_NC20MB, nes_bmc_nc20mb_device)
DECLARE_DEVICE_TYPE(NES_BMC_LC160, nes_bmc_lc160_device)
DECLARE_DEVICE_TYPE(NES_BMC_TH22913, nes_bmc_th22913_device)
+DECLARE_DEVICE_TYPE(NES_BMC_82AB, nes_bmc_82ab_device)
#endif // MAME_BUS_NES_MULTIGAME_H