use self::{constants::DEFAULT_PROGRAM_ADDRESS, keyboard::KeyState};
mod constants;
mod cpu;
mod font;
mod instruction_set;
mod instructions;
mod keyboard;
mod memory;
pub struct Chip8 {
memory: [u8; 4096],
data_registers: [u8; 16],
address_register: usize,
keyboard: [KeyState; 16],
stack: [usize; 32],
stack_pointer: usize,
screen: [[bool; 64]; 32],
program_counter: usize,
in_jump: bool,
delay_timer: u8,
sound_timer: u8,
}
impl Chip8 {
pub fn new() -> Chip8 {
Chip8 {
data_registers: [0; 16],
address_register: 0,
keyboard: [KeyState::Released; 16],
in_jump: false,
delay_timer: 0,
sound_timer: 0,
stack: [0; 32],
stack_pointer: 0,
program_counter: DEFAULT_PROGRAM_ADDRESS,
memory: [0; 4096],
screen: [[false; 64]; 32],
}
}
}