diff options
Diffstat (limited to 'src/devices/bus/nes/bootleg.h')
-rw-r--r-- | src/devices/bus/nes/bootleg.h | 480 |
1 files changed, 480 insertions, 0 deletions
diff --git a/src/devices/bus/nes/bootleg.h b/src/devices/bus/nes/bootleg.h new file mode 100644 index 00000000000..d261ba23c31 --- /dev/null +++ b/src/devices/bus/nes/bootleg.h @@ -0,0 +1,480 @@ +// license:BSD-3-Clause +// copyright-holders:Fabio Priuli +#ifndef __NES_BTL_H +#define __NES_BTL_H + +#include "nxrom.h" + + +// ======================> nes_ax5705_device + +class nes_ax5705_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_ax5705_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device-level overrides + virtual void device_start(); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + void set_prg(); + UINT8 m_mmc_prg_bank[2]; + UINT8 m_mmc_vrom_bank[8]; +}; + + +// ======================> nes_sc127_device + +class nes_sc127_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_sc127_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device-level overrides + virtual void device_start(); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void hblank_irq(int scanline, int vblank, int blanked); + virtual void pcb_reset(); + +private: + UINT16 m_irq_count; + int m_irq_enable; +}; + + +// ======================> nes_mbaby_device + +class nes_mbaby_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_mbaby_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device-level overrides + virtual void device_start(); + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); + virtual DECLARE_READ8_MEMBER(read_m); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT8 m_latch; + int m_irq_enable; + + static const device_timer_id TIMER_IRQ = 0; + emu_timer *irq_timer; + attotime timer_freq; +}; + + +// ======================> nes_asn_device + +class nes_asn_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_asn_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_m); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT8 m_latch; +}; + + +// ======================> nes_smb3p_device + +class nes_smb3p_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_smb3p_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device-level overrides + virtual void device_start(); + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT16 m_irq_count; + int m_irq_enable; + + static const device_timer_id TIMER_IRQ = 0; + emu_timer *irq_timer; +}; + + +// ======================> nes_btl_dn_device + +class nes_btl_dn_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_btl_dn_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device-level overrides + virtual void device_start(); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void hblank_irq(int scanline, int vblank, int blanked); + virtual void pcb_reset(); + +private: + UINT16 m_irq_count; +}; + + +// ======================> nes_whirl2706_device + +class nes_whirl2706_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_whirl2706_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_m); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT8 m_latch; +}; + + +// ======================> nes_smb2j_device + +class nes_smb2j_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_smb2j_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device-level overrides + virtual void device_start(); + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); + virtual DECLARE_READ8_MEMBER(read_l); + virtual DECLARE_READ8_MEMBER(read_m); + virtual DECLARE_WRITE8_MEMBER(write_ex); + virtual DECLARE_WRITE8_MEMBER(write_l); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT16 m_irq_count; + int m_irq_enable; + + static const device_timer_id TIMER_IRQ = 0; + emu_timer *irq_timer; +}; + + +// ======================> nes_smb2ja_device + +class nes_smb2ja_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_smb2ja_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device-level overrides + virtual void device_start(); + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); + virtual DECLARE_READ8_MEMBER(read_m); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT16 m_irq_count; + int m_irq_enable; + + static const device_timer_id TIMER_IRQ = 0; + emu_timer *irq_timer; +}; + + +// ======================> nes_smb2jb_device + +class nes_smb2jb_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_smb2jb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device-level overrides + virtual void device_start(); + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); + virtual DECLARE_READ8_MEMBER(read_m); + virtual DECLARE_WRITE8_MEMBER(write_l); + virtual DECLARE_WRITE8_MEMBER(write_ex); + + virtual void pcb_reset(); + +private: + UINT16 m_irq_count; + int m_irq_enable; + + static const device_timer_id TIMER_IRQ = 0; + emu_timer *irq_timer; +}; + + +// ======================> nes_09034a_device + +class nes_09034a_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_09034a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device-level overrides + virtual void device_start(); + virtual DECLARE_WRITE8_MEMBER(write_ex); + virtual DECLARE_READ8_MEMBER(read_m); + + virtual void pcb_reset(); + +private: + UINT8 m_reg; +}; + + +// ======================> nes_tobidase_device + +class nes_tobidase_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_tobidase_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_m); + virtual DECLARE_WRITE8_MEMBER(write_l); + + virtual void pcb_reset(); + +private: + UINT8 m_latch; +}; + + +// ======================> nes_lh32_device + +class nes_lh32_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_lh32_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_m); + virtual DECLARE_READ8_MEMBER(read_h); + virtual DECLARE_WRITE8_MEMBER(write_m); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT8 m_latch; +}; + + +// ======================> nes_lh10_device + +class nes_lh10_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_lh10_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_h); + virtual DECLARE_READ8_MEMBER(read_m); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + void update_prg(); + UINT8 m_latch; + UINT8 m_reg[8]; +}; + + +// ======================> nes_lh53_device + +class nes_lh53_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_lh53_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device-level overrides + virtual void device_start(); + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); + virtual DECLARE_READ8_MEMBER(read_m); + virtual DECLARE_READ8_MEMBER(read_h); + virtual DECLARE_WRITE8_MEMBER(write_m) {} + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT16 m_irq_count; + int m_irq_enable; + UINT8 m_reg; + + static const device_timer_id TIMER_IRQ = 0; + emu_timer *irq_timer; + attotime timer_freq; +}; + + +// ======================> nes_2708_device + +class nes_2708_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_2708_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_m); + virtual DECLARE_READ8_MEMBER(read_h); + virtual DECLARE_WRITE8_MEMBER(write_m); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT8 m_reg[2]; +}; + +// ======================> nes_ac08_device + +class nes_ac08_device : public nes_nrom_device +{ +public: + // nes_ac08_device/destruction + nes_ac08_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_m); + virtual DECLARE_WRITE8_MEMBER(write_ex); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT8 m_latch; +}; + +// ======================> nes_unl_bb_device + +class nes_unl_bb_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_unl_bb_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_m); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT8 m_reg[2]; +}; + +// ======================> nes_mmalee_device + +class nes_mmalee_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_mmalee_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_m); + virtual DECLARE_WRITE8_MEMBER(write_m); + + virtual void pcb_reset(); +}; + +// ======================> nes_shuiguan_device + +class nes_shuiguan_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_shuiguan_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device-level overrides + virtual void device_start(); + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); + virtual DECLARE_READ8_MEMBER(read_m); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT16 m_irq_count; + int m_irq_enable; + UINT8 m_mmc_vrom_bank[8]; + + static const device_timer_id TIMER_IRQ = 0; + emu_timer *irq_timer; +}; + + + +// device type definition +extern const device_type NES_AX5705; +extern const device_type NES_SC127; +extern const device_type NES_MARIOBABY; +extern const device_type NES_ASN; +extern const device_type NES_SMB3PIRATE; +extern const device_type NES_BTL_DNINJA; +extern const device_type NES_WHIRLWIND_2706; +extern const device_type NES_SMB2J; +extern const device_type NES_SMB2JA; +extern const device_type NES_SMB2JB; +extern const device_type NES_09034A; +extern const device_type NES_TOBIDASE; +extern const device_type NES_LH32; +extern const device_type NES_LH10; +extern const device_type NES_LH53; +extern const device_type NES_2708; +extern const device_type NES_AC08; +extern const device_type NES_UNL_BB; +extern const device_type NES_MMALEE; +extern const device_type NES_SHUIGUAN; + + +#endif |