diff options
author | 2021-03-21 14:06:07 +0100 | |
---|---|---|
committer | 2021-03-24 11:03:56 +0100 | |
commit | 38bfe838e22d91ebe6627ba8e4cc1932eb6b325f (patch) | |
tree | 328d9084d121e3557ed3314d650360b7f02ccfaa /src/devices/sound/awacs.h | |
parent | f2fa9bd3b1fd25fdb176bf2572d95c5d480ef7ed (diff) |
awacs: Rewrite
Diffstat (limited to 'src/devices/sound/awacs.h')
-rw-r--r-- | src/devices/sound/awacs.h | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/src/devices/sound/awacs.h b/src/devices/sound/awacs.h index 0840d21d0d9..a1c17f1aa10 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); + auto irq_out_cb() { return m_irq_out_cb.bind(); } + auto irq_in_cb() { return m_irq_in_cb.bind(); } + + 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); - void set_dma_base(address_space &space, int offset0, int offset1); - protected: + enum { + ACTIVE_OUT = 0x01, + ACTIVE_IN = 0x02 + }; + + static const u8 divider[4]; + // 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; virtual void sound_stream_update(sound_stream &stream, std::vector<read_stream_view> const &inputs, std::vector<write_stream_view> &outputs) override; - sound_stream *m_stream; - - // 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(); }; |