summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/sound/esqpump.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/sound/esqpump.cpp')
-rw-r--r--src/devices/sound/esqpump.cpp38
1 files changed, 17 insertions, 21 deletions
diff --git a/src/devices/sound/esqpump.cpp b/src/devices/sound/esqpump.cpp
index af1a59db799..cda48b68eb0 100644
--- a/src/devices/sound/esqpump.cpp
+++ b/src/devices/sound/esqpump.cpp
@@ -53,26 +53,22 @@ void esq_5505_5510_pump_device::device_clock_changed()
m_stream->set_sample_rate(clock());
}
-void esq_5505_5510_pump_device::sound_stream_update(sound_stream &stream, std::vector<read_stream_view> const &inputs, std::vector<write_stream_view> &outputs)
+void esq_5505_5510_pump_device::sound_stream_update(sound_stream &stream)
{
- sound_assert(outputs[0].samples() == 1);
-
- auto &left = outputs[0];
- auto &right = outputs[1];
#define SAMPLE_SHIFT 4
- constexpr stream_buffer::sample_t input_scale = 32768.0 / (1 << SAMPLE_SHIFT);
+ constexpr sound_stream::sample_t input_scale = 32768.0 / (1 << SAMPLE_SHIFT);
// anything for the 'aux' output?
- stream_buffer::sample_t l = inputs[0].get(0) * (1.0 / (1 << SAMPLE_SHIFT));
- stream_buffer::sample_t r = inputs[1].get(0) * (1.0 / (1 << SAMPLE_SHIFT));
+ sound_stream::sample_t l = stream.get(0, 0) * (1.0 / (1 << SAMPLE_SHIFT));
+ sound_stream::sample_t r = stream.get(1, 0) * (1.0 / (1 << SAMPLE_SHIFT));
// push the samples into the ESP
- m_esp->ser_w(0, s32(inputs[2].get(0) * input_scale));
- m_esp->ser_w(1, s32(inputs[3].get(0) * input_scale));
- m_esp->ser_w(2, s32(inputs[4].get(0) * input_scale));
- m_esp->ser_w(3, s32(inputs[5].get(0) * input_scale));
- m_esp->ser_w(4, s32(inputs[6].get(0) * input_scale));
- m_esp->ser_w(5, s32(inputs[7].get(0) * input_scale));
+ m_esp->ser_w(0, s32(stream.get(2, 0) * input_scale));
+ m_esp->ser_w(1, s32(stream.get(3, 0) * input_scale));
+ m_esp->ser_w(2, s32(stream.get(4, 0) * input_scale));
+ m_esp->ser_w(3, s32(stream.get(5, 0) * input_scale));
+ m_esp->ser_w(4, s32(stream.get(6, 0) * input_scale));
+ m_esp->ser_w(5, s32(stream.get(7, 0) * input_scale));
#if PUMP_FAKE_ESP_PROCESSING
m_esp->ser_w(6, m_esp->ser_r(0) + m_esp->ser_r(2) + m_esp->ser_r(4));
@@ -88,16 +84,16 @@ void esq_5505_5510_pump_device::sound_stream_update(sound_stream &stream, std::v
#endif
// read the processed result from the ESP and add to the saved AUX data
- stream_buffer::sample_t ll = stream_buffer::sample_t(m_esp->ser_r(6)) * (1.0 / 32768.0);
- stream_buffer::sample_t rr = stream_buffer::sample_t(m_esp->ser_r(7)) * (1.0 / 32768.0);
+ sound_stream::sample_t ll = sound_stream::sample_t(m_esp->ser_r(6)) * (1.0 / 32768.0);
+ sound_stream::sample_t rr = sound_stream::sample_t(m_esp->ser_r(7)) * (1.0 / 32768.0);
l += ll;
r += rr;
#if !PUMP_FAKE_ESP_PROCESSING && PUMP_REPLACE_ESP_PROGRAM
// if we're processing the fake program through the ESP, the result should just be that of adding the inputs
- stream_buffer::sample_t el = (inputs[2].get(0)) + (inputs[4].get(0)) + (inputs[6].get(0));
- stream_buffer::sample_t er = (inputs[3].get(0)) + (inputs[5].get(0)) + (inputs[7].get(0));
- stream_buffer::sample_t e_next = el + er;
+ sound_stream::sample_t el = (stream.get(2, 0)) + (stream.get(4, 0)) + (stream.get(6, 0));
+ sound_stream::sample_t er = (stream.get(3, 0)) + (stream.get(5, 0)) + (stream.get(7, 0));
+ sound_stream::sample_t e_next = el + er;
e[(ei + 0x1d0f) % 0x4000] = e_next;
if (fabs(l - e[ei]) > 1e-5) {
@@ -107,8 +103,8 @@ void esq_5505_5510_pump_device::sound_stream_update(sound_stream &stream, std::v
#endif
// write the combined data to the output
- left.put(0, l);
- right.put(0, r);
+ stream.put(0, 0, l);
+ stream.put(1, 0, r);
#if PUMP_DETECT_SILENCE
if (left.get(0) == 0 && right.get(0) == 0) {