bsnes/higan/gba/apu/fifo.cpp

34 lines
518 B
C++

auto APU::FIFO::sample() -> void {
output = active;
}
auto APU::FIFO::read() -> void {
if(size == 0) return;
size--;
active = samples[rdoffset++];
}
auto APU::FIFO::write(int8 byte) -> void {
if(size == 32) rdoffset++;
else size++;
samples[wroffset++] = byte;
}
auto APU::FIFO::reset() -> void {
for(auto& byte : samples) byte = 0;
active = 0;
output = 0;
rdoffset = 0;
wroffset = 0;
size = 0;
}
auto APU::FIFO::power() -> void {
reset();
lenable = 0;
renable = 0;
timer = 0;
}