diff options
Diffstat (limited to 'src/mess/machine/nes_jaleco.h')
-rw-r--r-- | src/mess/machine/nes_jaleco.h | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/src/mess/machine/nes_jaleco.h b/src/mess/machine/nes_jaleco.h new file mode 100644 index 00000000000..fc348f55dbf --- /dev/null +++ b/src/mess/machine/nes_jaleco.h @@ -0,0 +1,251 @@ +#ifndef __NES_JALECO_H +#define __NES_JALECO_H + +#include "machine/nes_nxrom.h" +#include "sound/samples.h" + + +// ======================> nes_jf11_device + +class nes_jf11_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_jf11_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(); +}; + + +// ======================> nes_jf13_device + +class nes_jf13_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_jf13_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device-level overrides + virtual void device_start(); + virtual machine_config_constructor device_mconfig_additions() const; + virtual DECLARE_WRITE8_MEMBER(write_m); + + virtual void pcb_reset(); + +private: + required_device<samples_device> m_samples; +}; + + +// ======================> nes_jf16_device + +class nes_jf16_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_jf16_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_jf17_device + +class nes_jf17_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_jf17_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); + nes_jf17_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(); + +protected: + UINT8 m_latch; +}; + + +// ======================> nes_jf17_adpcm_device + +class nes_jf17_adpcm_device : public nes_jf17_device +{ +public: + // construction/destruction + nes_jf17_adpcm_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + virtual machine_config_constructor device_mconfig_additions() const; + virtual DECLARE_WRITE8_MEMBER(write_h); + +private: + required_device<samples_device> m_samples; +}; + + +// ======================> nes_jf19_device + +class nes_jf19_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_jf19_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); + nes_jf19_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_jf19_adpcm_device + +class nes_jf19_adpcm_device : public nes_jf19_device +{ +public: + // construction/destruction + nes_jf19_adpcm_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + virtual machine_config_constructor device_mconfig_additions() const; + virtual DECLARE_WRITE8_MEMBER(write_h); + +private: + required_device<samples_device> m_samples; +}; + + +// ======================> nes_ss88006_device + +class nes_ss88006_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_ss88006_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); + nes_ss88006_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device-level overrides + virtual void device_start(); + virtual DECLARE_WRITE8_MEMBER(ss88006_write); + virtual DECLARE_WRITE8_MEMBER(write_h) { ss88006_write(space, offset, data, mem_mask); } + + virtual void hblank_irq(int scanline, int vblank, int blanked); + virtual void pcb_reset(); + +protected: + UINT16 m_irq_count, m_irq_count_latch; + UINT8 m_irq_mode; + int m_irq_enable; + + UINT8 m_mmc_prg_bank[3]; + UINT8 m_mmc_vrom_bank[8]; + + UINT8 m_latch; // used for samples, in derived classes +}; + + +// ======================> nes_ss88006_adpcm_device + +class nes_ss88006_adpcm_device : public nes_ss88006_device +{ +public: + // construction/destruction + nes_ss88006_adpcm_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); + + // device-level overrides + void ss88006_adpcm_write(address_space &space, offs_t offset, UINT8 data, samples_device *dev); +}; + + +// ======================> nes_jf23_device + +class nes_jf23_device : public nes_ss88006_adpcm_device +{ +public: + // construction/destruction + nes_jf23_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + virtual machine_config_constructor device_mconfig_additions() const; + +private: + required_device<samples_device> m_samples; + virtual DECLARE_WRITE8_MEMBER(write_h) { ss88006_adpcm_write(space, offset, data, m_samples); } +}; + + +// ======================> nes_jf24_device + +class nes_jf24_device : public nes_ss88006_adpcm_device +{ +public: + // construction/destruction + nes_jf24_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + virtual machine_config_constructor device_mconfig_additions() const; + +private: + required_device<samples_device> m_samples; + virtual DECLARE_WRITE8_MEMBER(write_h) { ss88006_adpcm_write(space, offset, data, m_samples); } +}; + + +// ======================> nes_jf29_device + +class nes_jf29_device : public nes_ss88006_adpcm_device +{ +public: + // construction/destruction + nes_jf29_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + virtual machine_config_constructor device_mconfig_additions() const; + +private: + required_device<samples_device> m_samples; + virtual DECLARE_WRITE8_MEMBER(write_h) { ss88006_adpcm_write(space, offset, data, m_samples); } +}; + + +// ======================> nes_jf33_device + +class nes_jf33_device : public nes_ss88006_adpcm_device +{ +public: + // construction/destruction + nes_jf33_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + virtual machine_config_constructor device_mconfig_additions() const; + +private: + required_device<samples_device> m_samples; + virtual DECLARE_WRITE8_MEMBER(write_h) { ss88006_adpcm_write(space, offset, data, m_samples); } +}; + + + + +// device type definition +extern const device_type NES_JF11; +extern const device_type NES_JF13; +extern const device_type NES_JF16; +extern const device_type NES_JF17; +extern const device_type NES_JF17_ADPCM; +extern const device_type NES_JF19; +extern const device_type NES_JF19_ADPCM; +extern const device_type NES_SS88006; +extern const device_type NES_JF23; +extern const device_type NES_JF24; +extern const device_type NES_JF29; +extern const device_type NES_JF33; + +#endif |