From 7387c805cd6cd12e6580a6e7a828c6031e4ea599 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com>
Date: Sat, 25 Jun 2022 10:31:17 +0100
Subject: [PATCH] feat: new flags

---
 src/cpu.rs | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/src/cpu.rs b/src/cpu.rs
index 9f7b8fe7..6f2d5d0f 100644
--- a/src/cpu.rs
+++ b/src/cpu.rs
@@ -1,5 +1,54 @@
 pub struct Cpu {
+    pc: u16,
+    sp: u16,
     reg_a: u8,
     reg_b: u8,
     reg_c: u8,
+    reg_d: u8,
+    reg_e: u8,
+    reg_f: u8,
+    reg_h: u8,
+    reg_l: u8,
+}
+
+impl Cpu {
+    #[inline(always)]
+    fn reg_af(&self) -> u16 {
+        (self.reg_a as u16) << 8 | self.reg_f as u16
+    }
+
+    #[inline(always)]
+    fn reg_bc(&self) -> u16 {
+        (self.reg_b as u16) << 8 | self.reg_c as u16
+    }
+
+    #[inline(always)]
+    fn reg_de(&self) -> u16 {
+        (self.reg_d as u16) << 8 | self.reg_e as u16
+    }
+
+    #[inline(always)]
+    fn reg_hl(&self) -> u16 {
+        (self.reg_h as u16) << 8 | self.reg_l as u16
+    }
+
+    #[inline(always)]
+    fn zero_flag(&self) -> bool {
+        self.reg_f & 0x40 == 1
+    }
+
+    #[inline(always)]
+    fn sub_flag(&self) -> bool {
+        self.reg_f & 0x20 == 1
+    }
+
+    #[inline(always)]
+    fn half_carry_flag(&self) -> bool {
+        self.reg_f & 0x10 == 1
+    }
+
+    #[inline(always)]
+    fn carry_flag(&self) -> bool {
+        self.reg_f & 0x08 == 1
+    }
 }
-- 
GitLab