summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/nes/cony.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/nes/cony.h')
-rw-r--r--src/devices/bus/nes/cony.h62
1 files changed, 33 insertions, 29 deletions
diff --git a/src/devices/bus/nes/cony.h b/src/devices/bus/nes/cony.h
index aa767a88c13..8f2faea4a40 100644
--- a/src/devices/bus/nes/cony.h
+++ b/src/devices/bus/nes/cony.h
@@ -14,66 +14,70 @@ class nes_cony_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_cony_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ nes_cony_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- virtual uint8_t read_l(offs_t offset) override;
- virtual void write_l(offs_t offset, uint8_t data) override;
- virtual void write_h(offs_t offset, uint8_t data) override;
+ virtual u8 read_l(offs_t offset) override;
+ virtual u8 read_m(offs_t offset) override;
+ virtual void write_l(offs_t offset, u8 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;
protected:
- static constexpr device_timer_id TIMER_IRQ = 0;
-
- nes_cony_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ nes_cony_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u16 extra_addr, u8 mask);
// 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 set_prg();
virtual void set_chr();
- uint16_t m_irq_count;
+ TIMER_CALLBACK_MEMBER(irq_timer_tick);
+
+ u16 m_irq_count;
int m_irq_enable;
emu_timer *irq_timer;
- uint8_t m_latch1, m_latch2;
- uint8_t m_low_reg[4];
- uint8_t m_reg[10];
- uint8_t m_extra1;
+ u8 m_mmc_prg_bank[4];
+ u8 m_mmc_vrom_bank[8];
+ u8 m_extra_ram[4];
+ const u16 m_extra_addr;
+ const u8 m_mask;
+ u8 m_mode_reg;
+ u8 m_outer_reg;
};
-// ======================> nes_yoko_device
+// ======================> nes_cony1k_device
-class nes_yoko_device : public nes_cony_device
+class nes_cony1k_device : public nes_cony_device
{
public:
// construction/destruction
- nes_yoko_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ nes_cony1k_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- virtual uint8_t read_l(offs_t offset) override;
- virtual void write_l(offs_t offset, uint8_t data) override;
- virtual void write_h(offs_t offset, uint8_t data) override;
+ virtual void set_chr() override;
+};
- virtual void pcb_reset() override;
-protected:
- // device-level overrides
- virtual void device_start() override;
+// ======================> nes_yoko_device
-private:
- virtual void set_prg() override;
- virtual void set_chr() override;
+class nes_yoko_device : public nes_cony_device
+{
+public:
+ // construction/destruction
+ nes_yoko_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- uint8_t m_extra2;
+ virtual void write_h(offs_t offset, u8 data) override;
};
// device type definition
-DECLARE_DEVICE_TYPE(NES_CONY, nes_cony_device)
-DECLARE_DEVICE_TYPE(NES_YOKO, nes_yoko_device)
+DECLARE_DEVICE_TYPE(NES_CONY, nes_cony_device)
+DECLARE_DEVICE_TYPE(NES_CONY1K, nes_cony1k_device)
+DECLARE_DEVICE_TYPE(NES_YOKO, nes_yoko_device)
#endif // MAME_BUS_NES_CONY_H