From c4dab4b15c2b5dca1b648b45c8154abc49d222b3 Mon Sep 17 00:00:00 2001 From: Aviii06 Date: Tue, 3 Jan 2023 04:03:54 +0530 Subject: [PATCH] Write dec B and update flags --- src/cpu.cpp | 36 ++++++++++++++++++++++++++++++++++-- src/cpu.h | 8 ++++---- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/src/cpu.cpp b/src/cpu.cpp index 9f0c45c..0c2c817 100644 --- a/src/cpu.cpp +++ b/src/cpu.cpp @@ -58,9 +58,41 @@ int CPU::LD_BC_A() return 8; } -int CPU::INC_BC() { return 0; } +int CPU::INC_BC() +{ + reg_BC.dat += 1; + reg_PC.dat += 1; + printf("INC BC\n"); + return 8; +} int CPU::INC_B() { return 0; } -int CPU::DEC_B() { return 0; } +int CPU::DEC_B() +{ + reg_BC.hi -= 1; + if (reg_BC.hi == 0) + { + reg_AF.lo |= FLAG_ZERO_z; + } + else + { + reg_AF.lo &= ~FLAG_ZERO_z; + } + + reg_AF.lo |= FLAG_SUBTRACT_n; + + if (reg_BC.hi == 0xFF) + { + reg_AF.lo |= FLAG_HALF_CARRY_h; + } + else + { + reg_AF.lo &= ~FLAG_HALF_CARRY_h; + } + + reg_PC.dat += 1; + printf("DEC B\n"); + return 4; +} int CPU::LD_B_u8() { return 0; } int CPU::RLCA() { return 0; } int CPU::LD_u16_SP() { return 0; } diff --git a/src/cpu.h b/src/cpu.h index ca7edb9..0445abb 100644 --- a/src/cpu.h +++ b/src/cpu.h @@ -44,10 +44,10 @@ class CPU // Bit 0-3 are not used enum Flags { - FLAG_CARRY_c = 4, - FLAG_HALF_CARRY_h = 5, - FLAG_SUBTRACT_n = 6, - FLAG_ZERO_z = 7 + FLAG_CARRY_c = 0x10, + FLAG_HALF_CARRY_h = 0x20, + FLAG_SUBTRACT_n = 0x40, + FLAG_ZERO_z = 0x80 }; // Memory Map