From 4a1b335887f27ba5b8de7678384cf1da23eff7d3 Mon Sep 17 00:00:00 2001 From: Kevin Hamacher Date: Sun, 29 May 2016 14:43:13 +0200 Subject: [PATCH] Try to fix DAA --- src/cpu.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/cpu.rs b/src/cpu.rs index ddaabab..1469826 100644 --- a/src/cpu.rs +++ b/src/cpu.rs @@ -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