summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/nes/vrc_clones.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/nes/vrc_clones.h')
-rw-r--r--src/devices/bus/nes/vrc_clones.h95
1 files changed, 89 insertions, 6 deletions
diff --git a/src/devices/bus/nes/vrc_clones.h b/src/devices/bus/nes/vrc_clones.h
index c339ae4fad1..c6fe5b55550 100644
--- a/src/devices/bus/nes/vrc_clones.h
+++ b/src/devices/bus/nes/vrc_clones.h
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders: kmg, Fabio Priuli
+// copyright-holders:kmg
#ifndef MAME_BUS_NES_VRC_CLONES_H
#define MAME_BUS_NES_VRC_CLONES_H
@@ -46,13 +46,13 @@ public:
protected:
// device-level overrides
virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ TIMER_CALLBACK_MEMBER(irq_timer_tick);
private:
u16 m_irq_count;
int m_irq_enable;
- static const device_timer_id TIMER_IRQ = 0;
emu_timer *irq_timer;
};
@@ -113,6 +113,53 @@ private:
};
+// ======================> nes_bmc_831128c_device
+
+class nes_bmc_831128c_device : public nes_konami_vrc4_device
+{
+public:
+ // construction/destruction
+ nes_bmc_831128c_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:
+ u8 m_reg;
+};
+
+
+// ======================> nes_bmc_kl06_device
+
+class nes_bmc_kl06_device : public nes_konami_vrc4_device
+{
+public:
+ // construction/destruction
+ nes_bmc_kl06_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 pcb_reset() override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
+ virtual void set_prg() override;
+ virtual void set_chr() override { nes_konami_vrc4_device::set_chr((m_reg & 0x03) << 7, 0x7f); }
+
+private:
+ u8 m_reg;
+};
+
+
// ======================> nes_cityfight_device
class nes_cityfight_device : public nes_konami_vrc4_device
@@ -121,7 +168,7 @@ public:
// construction/destruction
nes_cityfight_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;
protected:
// device-level overrides
@@ -199,28 +246,64 @@ public:
protected:
// device-level overrides
virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ TIMER_CALLBACK_MEMBER(irq_timer_tick);
private:
u16 m_irq_count;
u8 m_irq_latch;
int m_irq_enable;
- static const device_timer_id TIMER_IRQ = 0;
emu_timer *irq_timer;
};
+// ======================> nes_waixing_sgz_device
+
+class nes_waixing_sgz_device : public nes_konami_vrc4_device
+{
+public:
+ // construction/destruction
+ nes_waixing_sgz_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 chr_w(offs_t offset, u8 data) override;
+
+protected:
+ // construction/destruction
+ nes_waixing_sgz_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 chr_match);
+
+ // device-level overrides
+ virtual void device_start() override;
+
+private:
+ u8 m_chr_mask, m_chr_match;
+};
+
+// ======================> nes_hengg_shjy3_device
+
+class nes_hengg_shjy3_device : public nes_waixing_sgz_device
+{
+public:
+ // construction/destruction
+ nes_hengg_shjy3_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+};
+
+
// device type definition
DECLARE_DEVICE_TYPE(NES_2YUDB, nes_2yudb_device)
DECLARE_DEVICE_TYPE(NES_900218, nes_900218_device)
DECLARE_DEVICE_TYPE(NES_AX40G, nes_ax40g_device)
DECLARE_DEVICE_TYPE(NES_AX5705, nes_ax5705_device)
DECLARE_DEVICE_TYPE(NES_BMC_830506C, nes_bmc_830506c_device)
+DECLARE_DEVICE_TYPE(NES_BMC_831128C, nes_bmc_831128c_device)
+DECLARE_DEVICE_TYPE(NES_BMC_KL06, nes_bmc_kl06_device)
DECLARE_DEVICE_TYPE(NES_CITYFIGHT, nes_cityfight_device)
+DECLARE_DEVICE_TYPE(NES_HENGG_SHJY3, nes_hengg_shjy3_device)
DECLARE_DEVICE_TYPE(NES_SHUIGUAN, nes_shuiguan_device)
DECLARE_DEVICE_TYPE(NES_T230, nes_t230_device)
DECLARE_DEVICE_TYPE(NES_TF1201, nes_tf1201_device)
DECLARE_DEVICE_TYPE(NES_TH21311, nes_th21311_device)
+DECLARE_DEVICE_TYPE(NES_WAIXING_SGZ, nes_waixing_sgz_device)
#endif // MAME_BUS_NES_VRC_CLONES_H