fix masked io in apu
This commit is contained in:
parent
a790e4cbd1
commit
2609fb966d
|
@ -239,7 +239,11 @@ impl Apu {
|
||||||
}
|
}
|
||||||
0xFF26 => {
|
0xFF26 => {
|
||||||
// NR52 - Sound on/off
|
// NR52 - Sound on/off
|
||||||
let mut v = if self.apu_enable { 1 << 7 } else { 0 };
|
let mut v = if self.apu_enable {
|
||||||
|
0b11111111
|
||||||
|
} else {
|
||||||
|
0b01111111
|
||||||
|
};
|
||||||
v = set_or_clear_bit(v, 0, self.channels.one.enabled);
|
v = set_or_clear_bit(v, 0, self.channels.one.enabled);
|
||||||
v = set_or_clear_bit(v, 1, self.channels.two.enabled);
|
v = set_or_clear_bit(v, 1, self.channels.two.enabled);
|
||||||
v = set_or_clear_bit(v, 2, self.channels.three.enabled);
|
v = set_or_clear_bit(v, 2, self.channels.three.enabled);
|
||||||
|
|
|
@ -220,7 +220,7 @@ impl PwmChannel {
|
||||||
|
|
||||||
pub(super) fn get_sweep_register(&self) -> u8 {
|
pub(super) fn get_sweep_register(&self) -> u8 {
|
||||||
set_or_clear_bit(
|
set_or_clear_bit(
|
||||||
((self.sweep.pace & 0b1110000) << 4) | (self.sweep.slope & 0b111),
|
(0b10000000 | (self.sweep.pace << 4) & 0b1110000) | (self.sweep.slope & 0b111),
|
||||||
3,
|
3,
|
||||||
self.sweep.mode == EnvelopeMode::Decrease,
|
self.sweep.mode == EnvelopeMode::Decrease,
|
||||||
)
|
)
|
||||||
|
@ -401,13 +401,12 @@ impl WaveChannel {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(super) fn get_volume(&self) -> u8 {
|
pub(super) fn get_volume(&self) -> u8 {
|
||||||
0b10011111
|
match self.volume {
|
||||||
& (match self.volume {
|
ShiftVolumePercent::Zero => 0b10011111,
|
||||||
ShiftVolumePercent::Zero => 0b00,
|
ShiftVolumePercent::TwentyFive => 0b11111111,
|
||||||
ShiftVolumePercent::TwentyFive => 0b11,
|
ShiftVolumePercent::Fifty => 0b11011111,
|
||||||
ShiftVolumePercent::Fifty => 0b10,
|
ShiftVolumePercent::OneHundred => 0b10111111,
|
||||||
ShiftVolumePercent::OneHundred => 0b01,
|
}
|
||||||
} << 5)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(super) fn update_wavelength_low(&mut self, data: u8) {
|
pub(super) fn update_wavelength_low(&mut self, data: u8) {
|
||||||
|
|
Loading…
Reference in a new issue