diff options
Diffstat (limited to 'src/mame/audio/atarijsa.h')
-rw-r--r-- | src/mame/audio/atarijsa.h | 265 |
1 files changed, 0 insertions, 265 deletions
diff --git a/src/mame/audio/atarijsa.h b/src/mame/audio/atarijsa.h deleted file mode 100644 index 4fcaf5e7bd6..00000000000 --- a/src/mame/audio/atarijsa.h +++ /dev/null @@ -1,265 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Aaron Giles -/*************************************************************************** - - atarijsa.h - - Functions to emulate the Atari "JSA" audio boards - -***************************************************************************/ - -#ifndef MAME_AUDIO_ATARI_JSA_H -#define MAME_AUDIO_ATARI_JSA_H - -#pragma once - -#include "cpu/m6502/m6502.h" -#include "sound/tms5220.h" -#include "sound/ym2151.h" -#include "sound/okim6295.h" -#include "sound/pokey.h" -#include "machine/atariscom.h" - - -//************************************************************************** -// GLOBAL VARIABLES -//************************************************************************** - -DECLARE_DEVICE_TYPE(ATARI_JSA_I, atari_jsa_i_device) -DECLARE_DEVICE_TYPE(ATARI_JSA_II, atari_jsa_ii_device) -DECLARE_DEVICE_TYPE(ATARI_JSA_III, atari_jsa_iii_device) -DECLARE_DEVICE_TYPE(ATARI_JSA_IIIS, atari_jsa_iiis_device) - - -//************************************************************************** -// I/O PORT BIT HELPERS -//************************************************************************** - -#define PORT_ATARI_JSA_SOUND_TO_MAIN_READY(_tag) \ - PORT_READ_LINE_DEVICE_MEMBER(_tag, atari_jsa_base_device, sound_to_main_ready) - -#define PORT_ATARI_JSA_MAIN_TO_SOUND_READY(_tag) \ - PORT_READ_LINE_DEVICE_MEMBER(_tag, atari_jsa_base_device, main_to_sound_ready) - - - -//************************************************************************** -// TYPE DEFINITIONS -//************************************************************************** - -// ======================> atari_jsa_base_device - -class atari_jsa_base_device : public device_t, - public device_mixer_interface -{ -protected: - // construction/destruction - atari_jsa_base_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner, uint32_t clock, int channels); - -public: - // configuration - auto test_read_cb() { return m_test_read_cb.bind(); } - auto main_int_cb() { return m_main_int_cb.bind(); } - - // getters - m6502_device &soundcpu() const { return *m_jsacpu; } - DECLARE_READ_LINE_MEMBER(main_to_sound_ready) { return m_soundcomm->main_to_sound_ready(); } - DECLARE_READ_LINE_MEMBER(sound_to_main_ready) { return m_soundcomm->sound_to_main_ready(); } - - // main cpu accessors - void main_command_w(uint8_t data); - uint8_t main_response_r(); - void sound_reset_w(uint16_t data); - - // read/write handlers - void ym2151_port_w(uint8_t data); - DECLARE_READ_LINE_MEMBER(main_test_read_line); - - // I/O lines - DECLARE_WRITE_LINE_MEMBER(main_int_write_line); - - // 6502 interrupt handlers - INTERRUPT_GEN_MEMBER(sound_irq_gen); - void sound_irq_ack_w(u8 data = 0); - u8 sound_irq_ack_r(); - DECLARE_WRITE_LINE_MEMBER(ym2151_irq_gen); - -protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - - // internal helpers - virtual void update_all_volumes() = 0; - void update_sound_irq(); - - // devices - required_device<atari_sound_comm_device> m_soundcomm; - required_device<m6502_device> m_jsacpu; - required_device<ym2151_device> m_ym2151; - - // memory regions - required_memory_region m_cpu_region; - - // memory banks - required_memory_bank m_cpu_bank; - - // configuration state - devcb_read_line m_test_read_cb; - devcb_write_line m_main_int_cb; - - // internal state - bool m_timed_int; - bool m_ym2151_int; - double m_ym2151_volume; - uint8_t m_ym2151_ct1; - uint8_t m_ym2151_ct2; -}; - - -// ======================> atari_jsa_oki_base_device - -class atari_jsa_oki_base_device : public atari_jsa_base_device -{ -protected: - // derived construction/destruction - atari_jsa_oki_base_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner, uint32_t clock, int channels); - -public: - // read/write handlers - uint8_t oki_r(offs_t offset); - void oki_w(offs_t offset, uint8_t data); - void wrio_w(uint8_t data); - void mix_w(uint8_t data); - void overall_volume_w(uint8_t data); - -protected: - // device level overrides - virtual void device_start() override; - virtual void device_reset() override; - - // internal helpers - virtual void update_all_volumes() override; - - // devices - optional_device<okim6295_device> m_oki1; - optional_device<okim6295_device> m_oki2; // JSA IIIs only - - // memory regions - optional_memory_region m_oki1_region; - optional_memory_region m_oki2_region; - - // memory banks - optional_memory_bank m_oki1_banklo; // JSA III(s) only - optional_memory_bank m_oki1_bankhi; // JSA III(s) - optional_memory_bank m_oki2_banklo; // JSA IIIs only - optional_memory_bank m_oki2_bankhi; // JSA IIIs only - - // internal state - double m_oki6295_volume; - double m_overall_volume; // JSA III(s) only -}; - - -// ======================> atari_jsa_i_device - -class atari_jsa_i_device : public atari_jsa_base_device -{ -public: - // construction/destruction - atari_jsa_i_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - // read/write handlers - uint8_t rdio_r(); - void wrio_w(uint8_t data); - void mix_w(uint8_t data); - void tms5220_voice(uint8_t data); - uint8_t pokey_r(offs_t offset); - void pokey_w(offs_t offset, uint8_t data); - - void atarijsa1_map(address_map &map); -protected: - // device level overrides - virtual void device_add_mconfig(machine_config &config) override; - virtual ioport_constructor device_input_ports() const override; - virtual void device_start() override; - virtual void device_reset() override; - - // internal helpers - virtual void update_all_volumes() override; - - // devices - optional_device<pokey_device> m_pokey; - optional_device<tms5220_device> m_tms5220; - required_ioport m_jsai; - - // internal state - double m_pokey_volume; - double m_tms5220_volume; -}; - - -// ======================> atari_jsa_ii_device - -class atari_jsa_ii_device : public atari_jsa_oki_base_device -{ -public: - // construction/destruction - atari_jsa_ii_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - // read/write handlers - uint8_t rdio_r(); - - void atarijsa2_map(address_map &map); -protected: - // device level overrides - virtual void device_add_mconfig(machine_config &config) override; - virtual ioport_constructor device_input_ports() const override; - - required_ioport m_jsaii; -}; - - -// ======================> atari_jsa_iii_device - -class atari_jsa_iii_device : public atari_jsa_oki_base_device -{ -public: - // construction/destruction - atari_jsa_iii_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - void atarijsa3_map(address_map &map); - void jsa3_oki1_map(address_map &map); -protected: - // derived construction/destruction - atari_jsa_iii_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner, uint32_t clock, int channels); - -public: - // read/write handlers - uint8_t rdio_r(); - -protected: - // device level overrides - virtual void device_add_mconfig(machine_config &config) override; - virtual ioport_constructor device_input_ports() const override; - - required_ioport m_jsaiii; -}; - - -// ======================> atari_jsa_iiis_device - -class atari_jsa_iiis_device : public atari_jsa_iii_device -{ -public: - // construction/destruction - atari_jsa_iiis_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - void jsa3_oki2_map(address_map &map); -protected: - // device level overrides - virtual void device_add_mconfig(machine_config &config) override; -}; - - -#endif // MAME_AUDIO_ATARI_JSA_H |