Skip to content
Snippets Groups Projects
cpu.rs 1008 B
Newer Older
  • Learn to ignore specific revisions
  • pub struct Cpu {
    
    João Magalhães's avatar
    João Magalhães committed
        pc: u16,
        sp: u16,
    
        reg_a: u8,
        reg_b: u8,
        reg_c: u8,
    
    João Magalhães's avatar
    João Magalhães committed
        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
        }