diff options
Diffstat (limited to 'src/devices/sound/esqpump.cpp')
-rw-r--r-- | src/devices/sound/esqpump.cpp | 38 |
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) { |