1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-04 18:29:40 +00:00

Avoids over-greedy DMA.

This commit is contained in:
Thomas Harte 2021-11-15 12:31:15 -05:00
parent c99dee86dd
commit 50a6496399

View File

@ -20,14 +20,23 @@ using namespace Amiga;
bool Audio::advance_dma(int channel) {
switch(channels_[channel].state) {
case Channel::State::WaitingForDMA:
set_data(channel, ram_[pointer_[size_t(channel)]]);
return true;
if(!channels_[channel].has_data) {
set_data(channel, ram_[pointer_[size_t(channel)]]);
return true;
}
break;
case Channel::State::WaitingForDummyDMA:
channels_[channel].has_data = true;
return true;
default:
return false;
if(!channels_[channel].has_data) {
channels_[channel].has_data = true;
return true;
}
break;
default: break;
}
return false;
}
void Audio::set_length(int channel, uint16_t length) {