pub const ROWS: usize = 30;
pub const COLS: usize = 40;
pub const CHAR_RAM_SIZE: usize = ROWS * COLS;
pub struct VideoRam {
chars: [u8; CHAR_RAM_SIZE],
}
impl VideoRam {
pub const fn new() -> VideoRam {
VideoRam {
chars: [0; CHAR_RAM_SIZE],
}
}
pub fn row_address(&self, y: usize) -> *const u8 {
&self.chars[y * COLS] as *const u8
}
pub fn set_cell(&mut self, x: usize, y: usize, c: u8) {
self.chars[x + y * COLS] = c;
}
pub fn get_cell(&self, x: usize, y: usize) -> u8 {
self.chars[x + y * COLS]
}
}
#[link_section = ".kgbss"]
pub static mut VIDEO_RAM: VideoRam = VideoRam::new();