diff options
Diffstat (limited to 'src/devices/sound/awacs.h')
-rw-r--r-- | src/devices/sound/awacs.h | 47 |
1 files changed, 31 insertions, 16 deletions
diff --git a/src/devices/sound/awacs.h b/src/devices/sound/awacs.h index 68f6f428550..89bb254eb3a 100644 --- a/src/devices/sound/awacs.h +++ b/src/devices/sound/awacs.h @@ -25,31 +25,46 @@ public: // construction/destruction awacs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - DECLARE_READ8_MEMBER(read); - DECLARE_WRITE8_MEMBER(write); + auto irq_out_cb() { return m_irq_out_cb.bind(); } + auto irq_in_cb() { return m_irq_in_cb.bind(); } - void set_dma_base(address_space &space, int offset0, int offset1); + auto dma_output() { return m_output_cb.bind(); } + auto dma_input() { return m_input_cb.bind(); } + + auto port_input() { return m_input_port_cb.bind(); } + auto port_output() { return m_output_port_cb.bind(); } + + uint8_t read(offs_t offset); + void write(offs_t offset, uint8_t data); protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + enum { + ACTIVE_OUT = 0x01, + ACTIVE_IN = 0x02 + }; - virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; + static const u8 divider[4]; - sound_stream *m_stream; + // device-level overrides + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; + + virtual void sound_stream_update(sound_stream &stream) override; - // inline data - uint8_t m_regs[0x100]; + devcb_write_line m_irq_out_cb, m_irq_in_cb; + devcb_read32 m_output_cb; + devcb_write32 m_input_cb; + devcb_read8 m_input_port_cb; + devcb_write8 m_output_port_cb; - int m_play_ptr, m_buffer_size, m_buffer_num; - bool m_playback_enable; + sound_stream *m_stream; - address_space *m_dma_space; - int m_dma_offset_0, m_dma_offset_1; + attotime m_last_sample; + u8 m_ctrl0, m_ctrl1, m_codec0, m_codec1, m_codec2, m_out_irq, m_in_irq, m_active; + u16 m_ext_address, m_ext_data, m_buffer_size, m_phase; + bool m_extend, m_ext_command, m_input_buffer, m_output_buffer; - emu_timer *m_timer; + void update_irq(); }; |