diff options
Diffstat (limited to 'src/devices/sound/dave.cpp')
-rw-r--r-- | src/devices/sound/dave.cpp | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/src/devices/sound/dave.cpp b/src/devices/sound/dave.cpp index bac697ca619..b7f1487c025 100644 --- a/src/devices/sound/dave.cpp +++ b/src/devices/sound/dave.cpp @@ -122,7 +122,7 @@ void dave_device::device_start() the volumes are mixed internally and output as left and right volume */ /* 3 tone channels + 1 noise channel */ - m_sound_stream_var = machine().sound().stream_alloc(*this, 0, 2, machine().sample_rate()); + m_sound_stream_var = stream_alloc(0, 2, machine().sample_rate()); } @@ -190,9 +190,8 @@ device_memory_interface::space_config_vector dave_device::memory_space_config() // sound_stream_update - handle a stream update //------------------------------------------------- -void dave_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) +void dave_device::sound_stream_update(sound_stream &stream, std::vector<read_stream_view> const &inputs, std::vector<write_stream_view> &outputs) { - stream_sample_t *buffer1, *buffer2; /* 0 = channel 0 left volume, 1 = channel 0 right volume, 2 = channel 1 left volume, 3 = channel 1 right volume, 4 = channel 2 left volume, 5 = channel 2 right volume @@ -203,10 +202,10 @@ void dave_device::sound_stream_update(sound_stream &stream, stream_sample_t **in //logerror("sound update!\n"); - buffer1 = outputs[0]; - buffer2 = outputs[1]; + auto &buffer1 = outputs[0]; + auto &buffer2 = outputs[1]; - while (samples) + for (int sampindex = 0; sampindex < buffer1.samples(); sampindex++) { int vol[4]; @@ -261,13 +260,11 @@ void dave_device::sound_stream_update(sound_stream &stream, stream_sample_t **in output_volumes[6] = ((m_level[3] & m_level_and[6]) | m_level_or[6]) & m_mame_volumes[3]; output_volumes[7] = ((m_level[3] & m_level_and[7]) | m_level_or[7]) & m_mame_volumes[7]; - left_volume = (output_volumes[0] + output_volumes[2] + output_volumes[4] + output_volumes[6])>>2; - right_volume = (output_volumes[1] + output_volumes[3] + output_volumes[5] + output_volumes[7])>>2; + left_volume = output_volumes[0] + output_volumes[2] + output_volumes[4] + output_volumes[6]; + right_volume = output_volumes[1] + output_volumes[3] + output_volumes[5] + output_volumes[7]; - *(buffer1++) = left_volume; - *(buffer2++) = right_volume; - - samples--; + buffer1.put_int(sampindex, left_volume, 32768 * 4); + buffer2.put_int(sampindex, right_volume, 32768 * 4); } } |