diff options
Diffstat (limited to 'src/devices/bus/nes/multigame.h')
-rw-r--r-- | src/devices/bus/nes/multigame.h | 894 |
1 files changed, 894 insertions, 0 deletions
diff --git a/src/devices/bus/nes/multigame.h b/src/devices/bus/nes/multigame.h new file mode 100644 index 00000000000..dbc824dfd54 --- /dev/null +++ b/src/devices/bus/nes/multigame.h @@ -0,0 +1,894 @@ +// license:BSD-3-Clause +// copyright-holders:Fabio Priuli +#ifndef __NES_MULTIGAME_H +#define __NES_MULTIGAME_H + +#include "nxrom.h" + + +// ======================> nes_action52_device + +class nes_action52_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_action52_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(); +}; + + +// ======================> nes_caltron_device + +class nes_caltron_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_caltron_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_m); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT8 m_latch; +}; + + +// ======================> nes_rumblestat_device + +class nes_rumblestat_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_rumblestat_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_m); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT8 m_prg, m_chr; +}; + + +// ======================> nes_svision16_device + +class nes_svision16_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_svision16_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 DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + void update_prg(); + UINT8 m_latch1, m_latch2; +}; + + +// ======================> nes_n625092_device + +class nes_n625092_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_n625092_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 reg1, UINT8 reg2); + UINT8 m_latch1, m_latch2; +}; + + +// ======================> nes_a65as_device + +class nes_a65as_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_a65as_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(); +}; + + +// ======================> nes_t262_device + +class nes_t262_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_t262_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: + UINT8 m_latch1, m_latch2; +}; + + +// ======================> nes_novel1_device + +class nes_novel1_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_novel1_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(); +}; + + +// ======================> nes_novel2_device + +class nes_novel2_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_novel2_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(); +}; + + +// ======================> nes_studyngame_device + +class nes_studyngame_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_studyngame_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(); +}; + + +// ======================> nes_sgun20in1_device + +class nes_sgun20in1_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_sgun20in1_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(); +}; + + +// ======================> nes_vt5201_device + +class nes_vt5201_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_vt5201_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_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT8 m_latch, m_dipsetting; +}; + + +// ======================> nes_810544c_device + +class nes_810544c_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_810544c_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(); +}; + + +// ======================> nes_ntd03_device + +class nes_ntd03_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_ntd03_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(); +}; + + +// ======================> nes_bmc_gb63_device + +class nes_bmc_gb63_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_gb63_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_WRITE8_MEMBER(write_h); + virtual DECLARE_WRITE8_MEMBER(chr_w); + + virtual void pcb_reset(); + +private: + void update_banks(); + UINT8 m_latch, m_dipsetting; + UINT8 m_reg[2]; + int m_vram_disable; +}; + +// ======================> nes_bmc_gka_device + +class nes_bmc_gka_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_gka_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: + UINT8 m_latch1, m_latch2; +}; + + +// ======================> nes_bmc_gkb_device + +class nes_bmc_gkb_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_gkb_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(); +}; + + +// ======================> nes_bmc_ws_device + +class nes_bmc_ws_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_ws_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_m); + + virtual void pcb_reset(); + +private: + UINT8 m_latch; +}; + + +// ======================> nes_bmc_11160_device + +class nes_bmc_11160_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_11160_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(); +}; + + +// ======================> nes_bmc_g146_device + +class nes_bmc_g146_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_g146_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(); +}; + + +// ======================> nes_bmc_8157_device + +class nes_bmc_8157_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_8157_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_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); +}; + + +// ======================> nes_bmc_hik300_device + +class nes_bmc_hik300_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_hik300_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(); +}; + + +// ======================> nes_bmc_s700_device + +class nes_bmc_s700_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_s700_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(); +}; + + +// ======================> nes_bmc_ball11_device + +class nes_bmc_ball11_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_ball11_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_m); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + void set_banks(); + UINT8 m_reg[2]; +}; + + +// ======================> nes_bmc_22games_device + +class nes_bmc_22games_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_22games_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(); +}; + + +// ======================> nes_bmc_64y2k_device + +class nes_bmc_64y2k_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_64y2k_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_l); + virtual DECLARE_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + void set_prg(); + UINT8 m_reg[4]; +}; + + +// ======================> nes_bmc_12in1_device + +class nes_bmc_12in1_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_12in1_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 update_banks(); + UINT8 m_reg[3]; +}; + + +// ======================> nes_bmc_20in1_device + +class nes_bmc_20in1_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_20in1_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(); +}; + + +// ======================> nes_bmc_21in1_device + +class nes_bmc_21in1_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_21in1_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(); +}; + + +// ======================> nes_bmc_31in1_device + +class nes_bmc_31in1_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_31in1_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(); +}; + + +// ======================> nes_bmc_35in1_device + +class nes_bmc_35in1_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_35in1_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(); +}; + + +// ======================> nes_bmc_36in1_device + +class nes_bmc_36in1_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_36in1_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(); +}; + + +// ======================> nes_bmc_64in1_device + +class nes_bmc_64in1_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_64in1_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(); +}; + + +// ======================> nes_bmc_70in1_device + +class nes_bmc_70in1_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_70in1_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_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT8 m_mode; + UINT8 m_reg[2]; +}; + + +// ======================> nes_bmc_72in1_device + +class nes_bmc_72in1_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_72in1_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(); +}; + + +// ======================> nes_bmc_76in1_device + +class nes_bmc_76in1_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_76in1_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: + UINT8 m_latch1, m_latch2; +}; + + +// ======================> nes_bmc_110in1_device + +class nes_bmc_110in1_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_110in1_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(); +}; + + +// ======================> nes_bmc_150in1_device + +class nes_bmc_150in1_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_150in1_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(); +}; + + +// ======================> nes_bmc_190in1_device + +class nes_bmc_190in1_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_190in1_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(); +}; + + +// ======================> nes_bmc_800in1_device + +class nes_bmc_800in1_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_800in1_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_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT8 m_mode; + UINT8 m_reg[2]; +}; + + +// ======================> nes_bmc_1200in1_device + +class nes_bmc_1200in1_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_1200in1_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 DECLARE_WRITE8_MEMBER(chr_w); + + virtual void pcb_reset(); + +private: + UINT8 m_vram_protect; +}; + + +// ======================> nes_bmc_gold150_device + +class nes_bmc_gold150_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_gold150_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_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT8 m_latch; +}; + + +// ======================> nes_bmc_gold260_device + +class nes_bmc_gold260_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_gold260_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(); +}; + + +// ======================> nes_bmc_ch001_device + +class nes_bmc_ch001_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_ch001_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_WRITE8_MEMBER(write_h); + + virtual void pcb_reset(); + +private: + UINT8 m_latch; +}; + + +// ======================> nes_bmc_super22_device + +class nes_bmc_super22_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_super22_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(); +}; + + +// ======================> nes_bmc_4in1reset_device + +class nes_bmc_4in1reset_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_4in1reset_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device-level overrides + virtual void device_start(); + virtual void pcb_reset(); + +private: + int m_latch; +}; + +// ======================> nes_bmc_42in1reset_device + +class nes_bmc_42in1reset_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_42in1reset_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: + int m_latch; + UINT8 m_reg[2]; +}; + + + +// device type definition +extern const device_type NES_ACTION52; +extern const device_type NES_CALTRON6IN1; +extern const device_type NES_RUMBLESTATION; +extern const device_type NES_SVISION16; +extern const device_type NES_N625092; +extern const device_type NES_A65AS; +extern const device_type NES_T262; +extern const device_type NES_NOVEL1; +extern const device_type NES_NOVEL2; +extern const device_type NES_STUDYNGAME; +extern const device_type NES_SUPERGUN20IN1; +extern const device_type NES_VT5201; +extern const device_type NES_810544C; +extern const device_type NES_NTD03; +extern const device_type NES_BMC_GB63; +extern const device_type NES_BMC_GKA; +extern const device_type NES_BMC_GKB; +extern const device_type NES_BMC_WS; +extern const device_type NES_BMC_11160; +extern const device_type NES_BMC_G146; +extern const device_type NES_BMC_8157; +extern const device_type NES_BMC_HIK300; +extern const device_type NES_BMC_S700; +extern const device_type NES_BMC_BALL11; +extern const device_type NES_BMC_22GAMES; +extern const device_type NES_BMC_64Y2K; +extern const device_type NES_BMC_12IN1; +extern const device_type NES_BMC_20IN1; +extern const device_type NES_BMC_21IN1; +extern const device_type NES_BMC_31IN1; +extern const device_type NES_BMC_35IN1; +extern const device_type NES_BMC_36IN1; +extern const device_type NES_BMC_64IN1; +extern const device_type NES_BMC_70IN1; +extern const device_type NES_BMC_72IN1; +extern const device_type NES_BMC_76IN1; +extern const device_type NES_BMC_110IN1; +extern const device_type NES_BMC_150IN1; +extern const device_type NES_BMC_190IN1; +extern const device_type NES_BMC_800IN1; +extern const device_type NES_BMC_1200IN1; +extern const device_type NES_BMC_GOLD150; +extern const device_type NES_BMC_GOLD260; +extern const device_type NES_BMC_CH001; +extern const device_type NES_BMC_SUPER22; +extern const device_type NES_BMC_4IN1RESET; +extern const device_type NES_BMC_42IN1RESET; + + +#endif |