summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/sound/rf5c400.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/sound/rf5c400.h')
-rw-r--r--src/devices/sound/rf5c400.h20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/devices/sound/rf5c400.h b/src/devices/sound/rf5c400.h
index 7b5d420049b..bc380571086 100644
--- a/src/devices/sound/rf5c400.h
+++ b/src/devices/sound/rf5c400.h
@@ -7,6 +7,8 @@
#pragma once
+#include "dirom.h"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -15,24 +17,27 @@
// ======================> rf5c400_device
class rf5c400_device : public device_t,
- public device_sound_interface,
- public device_rom_interface
+ public device_sound_interface,
+ public device_rom_interface<25, 1, 0, ENDIANNESS_LITTLE>
{
public:
+ static constexpr feature_type imperfect_features() { return feature::SOUND; } // unemulated and/or unverified effects and envelopes
+
rf5c400_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- DECLARE_READ16_MEMBER( rf5c400_r );
- DECLARE_WRITE16_MEMBER( rf5c400_w );
+ uint16_t rf5c400_r(offs_t offset, uint16_t mem_mask = ~0);
+ void rf5c400_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
protected:
// device-level overrides
- virtual void device_start() override;
+ virtual void device_start() override ATTR_COLD;
+ virtual void device_clock_changed() override;
// sound stream update overrides
- virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+ virtual void sound_stream_update(sound_stream &stream) override;
// device_rom_interface overrides
- virtual void rom_bank_updated() override;
+ virtual void rom_bank_pre_change() override;
private:
struct rf5c400_channel
@@ -91,6 +96,7 @@ private:
uint16_t m_rf5c400_status;
uint32_t m_ext_mem_address;
uint16_t m_ext_mem_data;
+ uint16_t m_req_channel;
};
DECLARE_DEVICE_TYPE(RF5C400, rf5c400_device)