mirror of https://github.com/bsnes-emu/bsnes.git
40 lines
794 B
C++
40 lines
794 B
C++
auto APU::Envelope::volume() const -> uint {
|
|
return use_speed_as_volume ? speed : decay_volume;
|
|
}
|
|
|
|
auto APU::Envelope::clock() -> void {
|
|
if(reload_decay) {
|
|
reload_decay = false;
|
|
decay_volume = 0x0f;
|
|
decay_counter = speed + 1;
|
|
return;
|
|
}
|
|
|
|
if(--decay_counter == 0) {
|
|
decay_counter = speed + 1;
|
|
if(decay_volume || loop_mode) decay_volume--;
|
|
}
|
|
}
|
|
|
|
auto APU::Envelope::power() -> void {
|
|
}
|
|
|
|
auto APU::Envelope::reset() -> void {
|
|
speed = 0;
|
|
use_speed_as_volume = 0;
|
|
loop_mode = 0;
|
|
reload_decay = 0;
|
|
decay_counter = 0;
|
|
decay_volume = 0;
|
|
}
|
|
|
|
auto APU::Envelope::serialize(serializer& s) -> void {
|
|
s.integer(speed);
|
|
s.integer(use_speed_as_volume);
|
|
s.integer(loop_mode);
|
|
|
|
s.integer(reload_decay);
|
|
s.integer(decay_counter);
|
|
s.integer(decay_volume);
|
|
}
|