summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/nes/kaiser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/nes/kaiser.h')
-rw-r--r--src/devices/bus/nes/kaiser.h260
1 files changed, 184 insertions, 76 deletions
diff --git a/src/devices/bus/nes/kaiser.h b/src/devices/bus/nes/kaiser.h
index e0e31658cdb..6eb8d90161f 100644
--- a/src/devices/bus/nes/kaiser.h
+++ b/src/devices/bus/nes/kaiser.h
@@ -8,21 +8,34 @@
#include "nxrom.h"
-// ======================> nes_ks7058_device
+// ======================> nes_ks106c_device
-class nes_ks7058_device : public nes_nrom_device
+class nes_ks106c_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_ks7058_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_ks106c_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 device_start() override ATTR_COLD;
+
+private:
+ u8 m_latch;
+};
+
+
+// ======================> nes_ks7058_device
+
+class nes_ks7058_device : public nes_nrom_device
+{
+public:
+ // construction/destruction
+ nes_ks7058_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ virtual void write_h(offs_t offset, u8 data) override;
};
@@ -32,19 +45,19 @@ class nes_ks7022_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_ks7022_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ nes_ks7022_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- virtual uint8_t read_h(offs_t offset) override;
- virtual void write_h(offs_t offset, uint8_t data) override;
+ 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;
+ virtual void device_start() override ATTR_COLD;
private:
- uint8_t m_latch;
+ u8 m_latch;
};
@@ -54,30 +67,31 @@ class nes_ks7032_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_ks7032_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ nes_ks7032_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- virtual uint8_t read_m(offs_t offset) override;
- void ks7032_write(offs_t offset, uint8_t data);
- virtual void write_h(offs_t offset, uint8_t data) override { ks7032_write(offset, data); }
+ virtual u8 read_m(offs_t offset) override;
+ virtual void write_h(offs_t offset, u8 data) override;
virtual void pcb_reset() override;
protected:
- nes_ks7032_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ nes_ks7032_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
// device-level overrides
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ virtual void device_start() override ATTR_COLD;
- void prg_update();
+ TIMER_CALLBACK_MEMBER(irq_timer_tick);
- uint8_t m_latch;
- uint8_t m_reg[8];
+ u8 m_reg[8];
+
+private:
+ void prg_update();
+ u8 m_latch;
- uint16_t m_irq_count;
- int m_irq_enable;
+ u16 m_irq_count, m_irq_count_latch;
+ u8 m_irq_enable;
- static const device_timer_id TIMER_IRQ = 0;
emu_timer *irq_timer;
};
@@ -88,11 +102,46 @@ class nes_ks202_device : public nes_ks7032_device
{
public:
// construction/destruction
- nes_ks202_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ nes_ks202_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;
+};
+
+
+// ======================> nes_ks7016_device
+
+class nes_ks7016_device : public nes_nrom_device
+{
+public:
+ // construction/destruction
+ nes_ks7016_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_ks7016_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 a15_flip);
// device-level overrides
- virtual uint8_t read_m(offs_t offset) override;
- virtual void write_h(offs_t offset, uint8_t data) override;
+ virtual void device_start() override ATTR_COLD;
+
+private:
+ u8 m_latch;
+ const u8 m_a15_flip;
+};
+
+
+// ======================> nes_ks7016b_device
+
+class nes_ks7016b_device : public nes_ks7016_device
+{
+public:
+ // construction/destruction
+ nes_ks7016b_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
};
@@ -102,64 +151,117 @@ class nes_ks7017_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_ks7017_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ nes_ks7017_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- virtual uint8_t read_ex(offs_t offset) override;
- virtual void write_ex(offs_t offset, uint8_t data) override;
- virtual void write_l(offs_t offset, uint8_t data) override;
+ virtual u8 read_ex(offs_t offset) override;
+ virtual void write_ex(offs_t offset, u8 data) override;
+ virtual void write_l(offs_t offset, u8 data) override;
virtual void pcb_reset() override;
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;
+ virtual void device_start() override ATTR_COLD;
+
+ TIMER_CALLBACK_MEMBER(irq_timer_tick);
private:
- uint8_t m_latch;
+ u8 m_latch;
- uint16_t m_irq_count;
- uint8_t m_irq_status;
- int m_irq_enable;
+ u16 m_irq_count;
+ u8 m_irq_status;
+ u8 m_irq_enable;
- static const device_timer_id TIMER_IRQ = 0;
emu_timer *irq_timer;
};
-// ======================> nes_ks7012_device
+// ======================> nes_ks7021a_device
-class nes_ks7012_device : public nes_nrom_device
+class nes_ks7021a_device : public nes_nrom_device
+{
+public:
+ // construction/destruction
+ nes_ks7021a_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_ks7010_device
+
+class nes_ks7010_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_ks7012_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ nes_ks7010_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 u8 read_m(offs_t offset) override;
+ virtual u8 read_h(offs_t offset) override;
virtual void pcb_reset() override;
protected:
// device-level overrides
- virtual void device_start() override;
+ virtual void device_start() override ATTR_COLD;
+
+private:
+ u8 m_latch;
+};
+
+
+// ======================> nes_ks7012_device
+
+class nes_ks7012_device : public nes_nrom_device
+{
+public:
+ // construction/destruction
+ nes_ks7012_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_ks7013b_device
class nes_ks7013b_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_ks7013b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ nes_ks7013b_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- virtual void write_m(offs_t offset, uint8_t data) override;
- virtual void write_h(offs_t offset, uint8_t data) 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;
+};
+
+
+// ======================> nes_ks7030_device
+
+class nes_ks7030_device : public nes_nrom_device
+{
+public:
+ // construction/destruction
+ nes_ks7030_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ virtual u8 read_m(offs_t offset) override;
+ virtual u8 read_h(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;
+ virtual void device_start() override ATTR_COLD;
+
+private:
+ u8 m_reg[2];
};
@@ -169,80 +271,86 @@ class nes_ks7031_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_ks7031_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ nes_ks7031_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- virtual uint8_t read_m(offs_t offset) override;
- virtual uint8_t read_h(offs_t offset) override;
- virtual void write_h(offs_t offset, uint8_t data) override;
+ virtual u8 read_m(offs_t offset) override;
+ 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;
+ virtual void device_start() override ATTR_COLD;
private:
- uint8_t m_reg[4];
+ u8 m_reg[4];
};
-// ======================> nes_ks7016_device
+// ======================> nes_ks7037_device
-class nes_ks7016_device : public nes_nrom_device
+class nes_ks7037_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_ks7016_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ nes_ks7037_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- virtual uint8_t read_m(offs_t offset) override;
- virtual void write_h(offs_t offset, uint8_t data) override;
+ virtual u8 read_m(offs_t offset) override;
+ virtual u8 read_h(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;
+ virtual void device_start() override ATTR_COLD;
private:
- uint8_t m_reg;
+ u8 m_reg;
};
-// ======================> nes_ks7037_device
-class nes_ks7037_device : public nes_nrom_device
+// ======================> nes_ks7057_device
+
+class nes_ks7057_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_ks7037_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ nes_ks7057_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- virtual uint8_t read_m(offs_t offset) override;
- virtual uint8_t read_h(offs_t offset) override;
- virtual void write_m(offs_t offset, uint8_t data) override;
- virtual void write_h(offs_t offset, uint8_t data) override;
+ virtual u8 read_m(offs_t offset) override;
+ 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;
+ virtual void device_start() override ATTR_COLD;
private:
- void update_prg();
- uint8_t m_latch;
- uint8_t m_reg[8];
+ u8 m_reg[8];
};
// device type definition
-DECLARE_DEVICE_TYPE(NES_KS7058, nes_ks7058_device)
-DECLARE_DEVICE_TYPE(NES_KS7022, nes_ks7022_device)
-DECLARE_DEVICE_TYPE(NES_KS7032, nes_ks7032_device)
+DECLARE_DEVICE_TYPE(NES_KS106C, nes_ks106c_device)
DECLARE_DEVICE_TYPE(NES_KS202, nes_ks202_device)
-DECLARE_DEVICE_TYPE(NES_KS7017, nes_ks7017_device)
+DECLARE_DEVICE_TYPE(NES_KS7010, nes_ks7010_device)
DECLARE_DEVICE_TYPE(NES_KS7012, nes_ks7012_device)
DECLARE_DEVICE_TYPE(NES_KS7013B, nes_ks7013b_device)
-DECLARE_DEVICE_TYPE(NES_KS7031, nes_ks7031_device)
DECLARE_DEVICE_TYPE(NES_KS7016, nes_ks7016_device)
+DECLARE_DEVICE_TYPE(NES_KS7016B, nes_ks7016b_device)
+DECLARE_DEVICE_TYPE(NES_KS7017, nes_ks7017_device)
+DECLARE_DEVICE_TYPE(NES_KS7021A, nes_ks7021a_device)
+DECLARE_DEVICE_TYPE(NES_KS7022, nes_ks7022_device)
+DECLARE_DEVICE_TYPE(NES_KS7030, nes_ks7030_device)
+DECLARE_DEVICE_TYPE(NES_KS7031, nes_ks7031_device)
+DECLARE_DEVICE_TYPE(NES_KS7032, nes_ks7032_device)
DECLARE_DEVICE_TYPE(NES_KS7037, nes_ks7037_device)
+DECLARE_DEVICE_TYPE(NES_KS7057, nes_ks7057_device)
+DECLARE_DEVICE_TYPE(NES_KS7058, nes_ks7058_device)
#endif // MAME_BUS_NES_KAISER_H