Update zsm pcm

This commit is contained in:
Zachary Hall 2024-10-15 15:28:59 -07:00
parent de0422de20
commit 7ee0551c05

View file

@ -86,21 +86,23 @@ class ZsmBackend : public PlaybackBackend {
void audio_step(size_t samples) {
if (samples == 0) return;
while (pcm_fifo_avail() < samples && remain > 0) {
if (pcm_read_rate() == 0) break;
remain--;
size_t oldpos = file->get_pos();
file->seek((cur++), SeekType::SET);
uint8_t sample;
file->read(&sample, 1, 1);
pcm_write_fifo(sample);
if (remain == 0) {
if (islooped) {
cur = loop;
remain = loop_rem;
}
}
file->seek(oldpos, SeekType::SET);
}
if (pcm_read_rate() == 0) break;
remain--;
if (remain == 0) {
if (islooped) {
cur = loop;
remain = loop_rem;
} else {
break;
}
}
size_t oldpos = file->get_pos();
file->seek((cur++), SeekType::SET);
uint8_t sample;
file->read(&sample, 1, 1);
pcm_write_fifo(sample);
file->seek(oldpos, SeekType::SET);
}
samples *= 2;
int16_t *psg_ptr = psg_buf.get_item_sized<int16_t>(samples);
int16_t *pcm_ptr = pcm_buf.get_item_sized<int16_t>(samples);