summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/audio/exidy440.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/audio/exidy440.h')
-rw-r--r--src/mame/audio/exidy440.h25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/mame/audio/exidy440.h b/src/mame/audio/exidy440.h
index 45831b282eb..b7ce86da71e 100644
--- a/src/mame/audio/exidy440.h
+++ b/src/mame/audio/exidy440.h
@@ -5,24 +5,32 @@
#pragma once
+#define EXIDY440_AUDIO_CLOCK (XTAL(12'979'200) / 4)
+#define EXIDY440_MC3418_CLOCK (EXIDY440_AUDIO_CLOCK / 4 / 16)
+#define EXIDY440_MC3417_CLOCK (EXIDY440_AUDIO_CLOCK / 4 / 32)
+
+
class exidy440_sound_device : public device_t, public device_sound_interface
{
public:
exidy440_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~exidy440_sound_device() {}
- DECLARE_READ8_MEMBER( sound_command_r );
- DECLARE_READ8_MEMBER( sound_volume_r );
- DECLARE_WRITE8_MEMBER( sound_volume_w );
- DECLARE_WRITE8_MEMBER( sound_interrupt_clear_w );
- DECLARE_READ8_MEMBER( m6844_r );
- DECLARE_WRITE8_MEMBER( m6844_w );
- DECLARE_WRITE8_MEMBER( sound_banks_w );
+ DECLARE_READ8_MEMBER(sound_command_r);
+ DECLARE_READ8_MEMBER(sound_volume_r);
+ DECLARE_WRITE8_MEMBER(sound_volume_w);
+ DECLARE_WRITE_LINE_MEMBER(sound_interrupt_w);
+ DECLARE_WRITE8_MEMBER(sound_interrupt_clear_w);
+ DECLARE_WRITE_LINE_MEMBER(sound_reset_w);
+ DECLARE_READ8_MEMBER(m6844_r);
+ DECLARE_WRITE8_MEMBER(m6844_w);
+ DECLARE_WRITE8_MEMBER(sound_banks_w);
void exidy440_sound_command(uint8_t param);
uint8_t exidy440_sound_command_ack();
protected:
// device-level overrides
+ virtual void device_add_mconfig(machine_config &config) override;
virtual void device_start() override;
virtual void device_stop() override;
@@ -30,6 +38,8 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private:
+ void exidy440_audio_map(address_map &map);
+
/* channel_data structure holds info about each 6844 DMA channel */
struct m6844_channel_data
{
@@ -63,6 +73,7 @@ private:
};
required_device<cpu_device> m_audiocpu;
+ required_region_ptr<uint8_t> m_samples;
// internal state
uint8_t m_sound_command;