Try to fix DAA

This commit is contained in:
Kevin Hamacher 2016-05-29 14:43:13 +02:00
parent 691147631a
commit 4a1b335887

View File

@ -946,9 +946,13 @@ impl CPU {
// Logic copied from some other emulator
let mut v = self.regs[REG_A] as u16;
if self.flags & FLAG_N > 0{
if self.debug {
println!("DAA");
}
if self.flags & FLAG_N == 0 {
// Lower nibble
if self.flags & FLAG_H > 0 || v & 0xF > 9 {
if self.flags & FLAG_H > 0 || (v & 0xF) > 9 {
v += 0x06;
}
@ -969,8 +973,8 @@ impl CPU {
}
self.clear_flag(FLAG_H);
self.set_clear_flag(FLAG_C, v == 0x100);
self.set_clear_flag(FLAG_Z, v & 0xFF == 0);
self.set_clear_flag(FLAG_C, (v & 0x100) == 0x100);
self.set_clear_flag(FLAG_Z, v as u8 == 0);
self.regs[REG_A] = v as u8;
4