Try to fix DAA
This commit is contained in:
parent
691147631a
commit
4a1b335887
12
src/cpu.rs
12
src/cpu.rs
@ -946,9 +946,13 @@ impl CPU {
|
|||||||
// Logic copied from some other emulator
|
// Logic copied from some other emulator
|
||||||
let mut v = self.regs[REG_A] as u16;
|
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
|
// Lower nibble
|
||||||
if self.flags & FLAG_H > 0 || v & 0xF > 9 {
|
if self.flags & FLAG_H > 0 || (v & 0xF) > 9 {
|
||||||
v += 0x06;
|
v += 0x06;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -969,8 +973,8 @@ impl CPU {
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.clear_flag(FLAG_H);
|
self.clear_flag(FLAG_H);
|
||||||
self.set_clear_flag(FLAG_C, v == 0x100);
|
self.set_clear_flag(FLAG_C, (v & 0x100) == 0x100);
|
||||||
self.set_clear_flag(FLAG_Z, v & 0xFF == 0);
|
self.set_clear_flag(FLAG_Z, v as u8 == 0);
|
||||||
self.regs[REG_A] = v as u8;
|
self.regs[REG_A] = v as u8;
|
||||||
|
|
||||||
4
|
4
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user