diff options
Diffstat (limited to 'src/devices/sound/k054539.cpp')
-rw-r--r-- | src/devices/sound/k054539.cpp | 13 |
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); } } |