diff options
Diffstat (limited to 'src/devices/bus/nes/tengen.h')
-rw-r--r-- | src/devices/bus/nes/tengen.h | 56 |
1 files changed, 18 insertions, 38 deletions
diff --git a/src/devices/bus/nes/tengen.h b/src/devices/bus/nes/tengen.h index 6d651339f86..d5dbec1e88b 100644 --- a/src/devices/bus/nes/tengen.h +++ b/src/devices/bus/nes/tengen.h @@ -6,60 +6,42 @@ #include "nxrom.h" -// ======================> nes_tengen008_device - -class nes_tengen008_device : public nes_nrom_device -{ -public: - // construction/destruction - nes_tengen008_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; -}; - - // ======================> nes_tengen032_device class nes_tengen032_device : public nes_nrom_device { public: // construction/destruction - nes_tengen032_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + nes_tengen032_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - void tengen032_write(offs_t offset, uint8_t data); - virtual void write_h(offs_t offset, uint8_t data) override { tengen032_write(offset, data); } + virtual void write_h(offs_t offset, u8 data) override; - virtual void hblank_irq(int scanline, int vblank, int blanked) override; + virtual void hblank_irq(int scanline, bool vblank, bool blanked) override; virtual void pcb_reset() override; protected: - nes_tengen032_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + nes_tengen032_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 chr_cb(int start, int bank, int source); + virtual void set_chr(); + + TIMER_CALLBACK_MEMBER(irq_timer_tick); + + u8 m_latch; + u8 m_mmc_vrom_bank[8]; +private: void set_prg(); - void set_chr(); void irq_clock(int blanked); - uint16_t m_irq_count, m_irq_count_latch; - uint8_t m_irq_mode, m_irq_reset; - int m_irq_enable; + u16 m_irq_count, m_irq_count_latch; + u8 m_irq_mode, m_irq_reset; + u8 m_irq_enable, m_irq_pending; - uint8_t m_latch; - uint8_t m_mmc_prg_bank[3]; - uint8_t m_mmc_vrom_bank[8]; + u8 m_mmc_prg_bank[3]; - static const device_timer_id TIMER_IRQ = 0; emu_timer *irq_timer; attotime timer_freq; }; @@ -71,19 +53,17 @@ class nes_tengen037_device : public nes_tengen032_device { public: // construction/destruction - nes_tengen037_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + nes_tengen037_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); // device-level overrides - virtual void write_h(offs_t offset, uint8_t data) override; - virtual void chr_cb(int start, int bank, int source) override; + virtual void write_h(offs_t offset, u8 data) override; protected: - void set_mirror(); + virtual void set_chr() override; }; // device type definition -DECLARE_DEVICE_TYPE(NES_TENGEN_800008, nes_tengen008_device) DECLARE_DEVICE_TYPE(NES_TENGEN_800032, nes_tengen032_device) DECLARE_DEVICE_TYPE(NES_TENGEN_800037, nes_tengen037_device) |