diff options
Diffstat (limited to 'src/devices/bus/nes/ggenie.h')
-rw-r--r-- | src/devices/bus/nes/ggenie.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/devices/bus/nes/ggenie.h b/src/devices/bus/nes/ggenie.h new file mode 100644 index 00000000000..e4620e59e09 --- /dev/null +++ b/src/devices/bus/nes/ggenie.h @@ -0,0 +1,58 @@ +// license:BSD-3-Clause +// copyright-holders:Fabio Priuli +#ifndef __NES_GGENIE_H +#define __NES_GGENIE_H + +#include "nxrom.h" + + +// ======================> nes_ggenie_device + +class nes_ggenie_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_ggenie_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device-level overrides + virtual void device_start(); + virtual DECLARE_READ8_MEMBER(read_l); + virtual DECLARE_READ8_MEMBER(read_m); + virtual DECLARE_READ8_MEMBER(read_h); + virtual DECLARE_WRITE8_MEMBER(write_l); + virtual DECLARE_WRITE8_MEMBER(write_m); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual DECLARE_READ8_MEMBER(chr_r); + virtual DECLARE_WRITE8_MEMBER(chr_w); + virtual DECLARE_READ8_MEMBER(nt_r); + virtual DECLARE_WRITE8_MEMBER(nt_w); + + void hblank_irq(int scanline, int vblank, int blanked) { if (m_gg_bypass && m_ggslot->m_cart) m_ggslot->m_cart->hblank_irq(scanline, vblank, blanked); } + void scanline_irq(int scanline, int vblank, int blanked) { if (m_gg_bypass && m_ggslot->m_cart) m_ggslot->m_cart->scanline_irq(scanline, vblank, blanked); } + void ppu_latch(offs_t offset) { if (m_gg_bypass && m_ggslot->m_cart) m_ggslot->m_cart->ppu_latch(offset); } + + virtual machine_config_constructor device_mconfig_additions() const; + + virtual void pcb_reset(); + virtual void pcb_start(running_machine &machine, UINT8 *ciram_ptr, bool cart_mounted); + +private: + // emulate the Game Genie! + required_device<nes_cart_slot_device> m_ggslot; + + int m_gg_bypass; + // GG codes + UINT16 m_gg_addr[3]; + UINT8 m_gg_repl[3]; + UINT8 m_gg_comp[3]; + int m_gg_disable[3]; + int m_gg_is_comp[3]; +}; + + + +// device type definition +extern const device_type NES_GGENIE; + +#endif |