gameboy_core 0.3.3

core library to be used for Gameboy emulation
Documentation
pub mod flag;

#[derive(Default)]
pub struct Registers {
    pub a: u8,
    pub f: flag::Flag,
    pub b: u8,
    pub c: u8,
    pub d: u8,
    pub e: u8,
    pub h: u8,
    pub l: u8,
    pub pc: u16,
    pub sp: u16,
}

impl Registers {
    pub fn get_af(&self) -> u16 {
        (u16::from(self.a) << 8) | u16::from(self.f.bits())
    }

    pub fn set_af(&mut self, af: u16) {
        self.a = (af >> 8) as u8;
        self.f = flag::Flag::from_bits_truncate(af as u8);
    }

    pub fn get_bc(&self) -> u16 {
        (u16::from(self.b) << 8) | u16::from(self.c)
    }

    pub fn set_bc(&mut self, bc: u16) {
        self.c = bc as u8;
        self.b = (bc >> 8) as u8;
    }

    pub fn get_de(&self) -> u16 {
        (u16::from(self.d) << 8) | u16::from(self.e)
    }

    pub fn set_de(&mut self, de: u16) {
        self.e = de as u8;
        self.d = (de >> 8) as u8;
    }

    pub fn get_hl(&self) -> u16 {
        (u16::from(self.h) << 8) | u16::from(self.l)
    }

    pub fn set_hl(&mut self, hl: u16) {
        self.l = hl as u8;
        self.h = (hl >> 8) as u8;
    }
}