fix flags again
This commit is contained in:
parent
ce76c32a21
commit
a760fecd05
|
@ -47,7 +47,7 @@ impl Cpu {
|
||||||
rotated += get_rotation_carry(&direction);
|
rotated += get_rotation_carry(&direction);
|
||||||
self.set_flag(Flags::Carry);
|
self.set_flag(Flags::Carry);
|
||||||
}
|
}
|
||||||
self.clear_flag(Flags::Zero);
|
self.set_or_clear_flag(Flags::Zero, rotated == 0);
|
||||||
self.clear_flag(Flags::HalfCarry);
|
self.clear_flag(Flags::HalfCarry);
|
||||||
self.clear_flag(Flags::NSubtract);
|
self.clear_flag(Flags::NSubtract);
|
||||||
rotated
|
rotated
|
||||||
|
@ -64,7 +64,7 @@ impl Cpu {
|
||||||
} else {
|
} else {
|
||||||
self.clear_flag(Flags::Carry);
|
self.clear_flag(Flags::Carry);
|
||||||
}
|
}
|
||||||
self.clear_flag(Flags::Zero);
|
self.set_or_clear_flag(Flags::Zero, rotated == 0);
|
||||||
self.clear_flag(Flags::HalfCarry);
|
self.clear_flag(Flags::HalfCarry);
|
||||||
self.clear_flag(Flags::NSubtract);
|
self.clear_flag(Flags::NSubtract);
|
||||||
rotated
|
rotated
|
||||||
|
@ -72,6 +72,7 @@ impl Cpu {
|
||||||
|
|
||||||
pub(crate) fn shift(&mut self, byte: u8, direction: Direction) -> u8 {
|
pub(crate) fn shift(&mut self, byte: u8, direction: Direction) -> u8 {
|
||||||
let (rotated, carry) = rotate(byte, &direction);
|
let (rotated, carry) = rotate(byte, &direction);
|
||||||
|
self.clear_flag(Flags::Carry);
|
||||||
if carry {
|
if carry {
|
||||||
self.set_flag(Flags::Carry);
|
self.set_flag(Flags::Carry);
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,7 @@ impl Cpu {
|
||||||
}
|
}
|
||||||
0x07 => {
|
0x07 => {
|
||||||
let val = self.rlc(self.reg.get_8(Reg8::A));
|
let val = self.rlc(self.reg.get_8(Reg8::A));
|
||||||
|
self.clear_flag(Flags::Zero);
|
||||||
self.reg.set_8(Reg8::A, val);
|
self.reg.set_8(Reg8::A, val);
|
||||||
1
|
1
|
||||||
}
|
}
|
||||||
|
@ -77,6 +78,7 @@ impl Cpu {
|
||||||
}
|
}
|
||||||
0x0F => {
|
0x0F => {
|
||||||
let val = self.rrc(self.reg.get_8(Reg8::A));
|
let val = self.rrc(self.reg.get_8(Reg8::A));
|
||||||
|
self.clear_flag(Flags::Zero);
|
||||||
self.reg.set_8(Reg8::A, val);
|
self.reg.set_8(Reg8::A, val);
|
||||||
1
|
1
|
||||||
}
|
}
|
||||||
|
@ -112,6 +114,7 @@ impl Cpu {
|
||||||
}
|
}
|
||||||
0x17 => {
|
0x17 => {
|
||||||
let val = self.rl(self.reg.get_8(Reg8::A));
|
let val = self.rl(self.reg.get_8(Reg8::A));
|
||||||
|
self.clear_flag(Flags::Zero);
|
||||||
self.reg.set_8(Reg8::A, val);
|
self.reg.set_8(Reg8::A, val);
|
||||||
1
|
1
|
||||||
}
|
}
|
||||||
|
@ -147,6 +150,7 @@ impl Cpu {
|
||||||
}
|
}
|
||||||
0x1F => {
|
0x1F => {
|
||||||
let val = self.rr(self.reg.get_8(Reg8::A));
|
let val = self.rr(self.reg.get_8(Reg8::A));
|
||||||
|
self.clear_flag(Flags::Zero);
|
||||||
self.reg.set_8(Reg8::A, val);
|
self.reg.set_8(Reg8::A, val);
|
||||||
2
|
2
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue