/// Registers. numbered 1-16 publicly. /// Privately using zero base array so -1 to shift from pub to priv. #[derive(Clone, Copy)] pub struct Chip8Registers { registers: [u8; 16], i_register: u16, pc: u16 } impl Chip8Registers { pub fn advance_pc(&mut self) { self.pc += 2; } } impl Default for Chip8Registers { fn default() -> Self { Chip8Registers { registers: [0x00; 16], i_register: 0x00, pc: 0x200 } } } impl Chip8Registers { pub fn poke_pc(&mut self, new_pc: u16) { self.pc = new_pc } pub fn peek_i(&self) -> u16 { self.i_register } pub fn poke_i(&mut self, new_value: u16) { self.i_register = new_value; } pub fn peek(&self, register_number: u8) -> u8 { self.registers[(register_number) as usize] } pub fn poke(&mut self, register_number: u8, value: u8) { self.registers[(register_number) as usize] = value; } pub fn peek_pc(&self) -> u16 { self.pc } pub fn set_pc(&mut self, new_pc: u16) { self.pc = new_pc } } #[cfg(test)] mod test { }