summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/sound/k054539.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/sound/k054539.cpp')
-rw-r--r--src/devices/sound/k054539.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/devices/sound/k054539.cpp b/src/devices/sound/k054539.cpp
index 5fbeaa14b3d..2ed7dc134a2 100644
--- a/src/devices/sound/k054539.cpp
+++ b/src/devices/sound/k054539.cpp
@@ -105,7 +105,7 @@ void k054539_device::keyoff(int channel)
regs[0x22c] &= ~(1 << channel);
}
-void k054539_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
+void k054539_device::sound_stream_update(sound_stream &stream, std::vector<read_stream_view> const &inputs, std::vector<write_stream_view> &outputs)
{
#define VOL_CAP 1.80
@@ -118,9 +118,14 @@ void k054539_device::sound_stream_update(sound_stream &stream, stream_sample_t *
int16_t *rbase = (int16_t *)ram.get();
if(!(regs[0x22f] & 1))
+ {
+ outputs[0].fill(0);
+ outputs[1].fill(0);
return;
+ }
- for(int sample = 0; sample != samples; sample++) {
+ constexpr stream_buffer::sample_t sample_scale = 1.0 / 32768.0;
+ for(int sample = 0; sample != outputs[0].samples(); sample++) {
double lval, rval;
if(!(flags & DISABLE_REVERB))
lval = rval = rbase[reverb_pos];
@@ -298,8 +303,8 @@ void k054539_device::sound_stream_update(sound_stream &stream, stream_sample_t *
}
}
reverb_pos = (reverb_pos + 1) & 0x1fff;
- outputs[0][sample] = int16_t(lval);
- outputs[1][sample] = int16_t(rval);
+ outputs[0].put(sample, stream_buffer::sample_t(lval) * sample_scale);
+ outputs[1].put(sample, stream_buffer::sample_t(rval) * sample_scale);
}
}