diff --git a/src/cpu.rs b/src/cpu.rs
index 9f7b8fe704239cb41601d96f2037a4aeefd858e9..6f2d5d0f500d137dc0fa70d1ebc731212be95e18 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
+    }
 }