void llander_sh_update(void) { if (Machine->sample_rate == 0) return; if (sample_pos < buffer_len) llander_process (sample_buffer, sample_pos, buffer_len - sample_pos); sample_pos = 0; mixer_play_streamed_sample_16(channel,sample_buffer,2*buffer_len,emulation_rate); }
void tia_sh_update (void) { int buflen; if (Machine->sample_rate == 0) return; buflen = mixer_samples_this_frame(); if (sample_pos < buflen) Tia_process (buffer + sample_pos, buflen - sample_pos); sample_pos = 0; mixer_play_streamed_sample_16(channel,buffer,2*buflen,Machine->sample_rate); }
void streams_sh_update(void) { int channel,i; if (Machine->sample_rate == 0) return; /* update all the output buffers */ for (channel = 0;channel < MIXER_MAX_CHANNELS;channel += stream_joined_channels[channel]) { if (stream_buffer[channel]) { int newpos; int buflen; newpos = SAMPLES_THIS_FRAME(channel); buflen = newpos - stream_buffer_pos[channel]; if (stream_joined_channels[channel] > 1) { INT16 *buf[MIXER_MAX_CHANNELS]; if (buflen > 0) { for (i = 0;i < stream_joined_channels[channel];i++) buf[i] = stream_buffer[channel+i] + stream_buffer_pos[channel+i]; (*stream_callback_multi[channel])(stream_param[channel],buf,buflen); } for (i = 0;i < stream_joined_channels[channel];i++) stream_buffer_pos[channel+i] = 0; for (i = 0;i < stream_joined_channels[channel];i++) apply_RC_filter(channel+i,stream_buffer[channel+i],buflen,stream_sample_rate[channel+i]); } else { if (buflen > 0) { INT16 *buf; buf = stream_buffer[channel] + stream_buffer_pos[channel]; (*stream_callback[channel])(stream_param[channel],buf,buflen); } stream_buffer_pos[channel] = 0; apply_RC_filter(channel,stream_buffer[channel],buflen,stream_sample_rate[channel]); } } } for (channel = 0;channel < MIXER_MAX_CHANNELS;channel += stream_joined_channels[channel]) { if (stream_buffer[channel]) { for (i = 0;i < stream_joined_channels[channel];i++) mixer_play_streamed_sample_16(channel+i, stream_buffer[channel+i],sizeof(INT16)*SAMPLES_THIS_FRAME(channel+i), stream_sample_rate[channel]); } } }