Trevor Merritt 9c60454270 coverage at 100%
- delay_timer
- keypad
- sound_timers
- video
- util

close
- system_memory
- registers
- instructions
2024-09-26 11:12:44 -04:00

59 lines
1.1 KiB
Rust

/// 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 {
}