bugfix: bit r8, n should return true when bit n is zero

This commit is contained in:
John 2024-06-25 21:21:57 -05:00
parent dff0df87e9
commit 14cbfd4112

View File

@ -687,9 +687,9 @@ mod instructions {
*self.flags_mut() = Flags::new().with_z(value == 0).with_c(value & 1 > 0); *self.flags_mut() = Flags::new().with_z(value == 0).with_c(value & 1 > 0);
Ok(()) Ok(())
} }
/// Tests whether the given bit of r8 is set /// Tests whether the given bit of r8 is zero
pub fn bit(&mut self, reg: R8, bit: u8, bus: &impl BusIO) -> Result<(), Error> { pub fn bit(&mut self, reg: R8, bit: u8, bus: &impl BusIO) -> Result<(), Error> {
let value = self.get_r8(reg, bus) & (1 << bit) == 1; let value = self.get_r8(reg, bus) & (1 << bit) == 0;
self.set_z(value).set_n(false).set_h(true); self.set_z(value).set_n(false).set_h(true);
Ok(()) Ok(())
} }
@ -699,6 +699,7 @@ mod instructions {
self.set_r8(reg, value & !(1 << bit), bus); self.set_r8(reg, value & !(1 << bit), bus);
Ok(()) Ok(())
} }
/// Sets the given bit of the given register to 1
pub fn set(&mut self, reg: R8, bit: u8, bus: &mut impl BusIO) -> Result<(), Error> { pub fn set(&mut self, reg: R8, bit: u8, bus: &mut impl BusIO) -> Result<(), Error> {
let value = self.get_r8(reg, bus); let value = self.get_r8(reg, bus);
self.set_r8(reg, value | 1 << bit, bus); self.set_r8(reg, value | 1 << bit, bus);