55 lines
2.0 KiB
Rust
55 lines
2.0 KiB
Rust
use crate::CHIP8_MEMORY_SIZE;
|
|
|
|
|
|
pub mod text_rendering;
|
|
|
|
pub const CHIP8FONT_0: [u8; 5] = [0xF0, 0x90, 0x90, 0x90, 0xF0];
|
|
pub const CHIP8FONT_1: [u8; 5] = [0x20, 0x60, 0x20, 0x20, 0x70];
|
|
pub const CHIP8FONT_2: [u8; 5] = [0xF0, 0x10, 0xF0, 0x80, 0xF0];
|
|
pub const CHIP8FONT_3: [u8; 5] = [0xF0, 0x10, 0xF0, 0x10, 0xF0];
|
|
pub const CHIP8FONT_4: [u8; 5] = [0x90, 0x90, 0xF0, 0x10, 0x10];
|
|
pub const CHIP8FONT_5: [u8; 5] = [0xF0, 0x80, 0xF0, 0x10, 0xF0];
|
|
pub const CHIP8FONT_6: [u8; 5] = [0xF0, 0x80, 0xF0, 0x90, 0xF0];
|
|
pub const CHIP8FONT_7: [u8; 5] = [0xF0, 0x10, 0x20, 0x40, 0x40];
|
|
pub const CHIP8FONT_8: [u8; 5] = [0xF0, 0x90, 0xF0, 0x90, 0xF0];
|
|
pub const CHIP8FONT_9: [u8; 5] = [0xF0, 0x90, 0xF0, 0x10, 0xF0];
|
|
pub const CHIP8FONT_A: [u8; 5] = [0xF0, 0x90, 0xF0, 0x90, 0x90];
|
|
pub const CHIP8FONT_B: [u8; 5] = [0xE0, 0x90, 0xE0, 0x90, 0xE0];
|
|
pub const CHIP8FONT_C: [u8; 5] = [0xF0, 0x80, 0x80, 0x80, 0xF0];
|
|
pub const CHIP8FONT_D: [u8; 5] = [0xE0, 0x90, 0x90, 0x90, 0xE0];
|
|
pub const CHIP8FONT_E: [u8; 5] = [0xF0, 0x80, 0xF0, 0x80, 0xF0];
|
|
pub const CHIP8FONT_F: [u8; 5] = [0xF0, 0x80, 0xF0, 0x80, 0x80];
|
|
|
|
pub fn load_fonts_into_memory(to_add_fonts_to: [u8; CHIP8_MEMORY_SIZE as usize])
|
|
-> [u8; CHIP8_MEMORY_SIZE as usize] {
|
|
|
|
let mut memory = to_add_fonts_to.clone();
|
|
|
|
let all_font_characters = [
|
|
CHIP8FONT_0,
|
|
CHIP8FONT_1,
|
|
CHIP8FONT_2,
|
|
CHIP8FONT_3,
|
|
CHIP8FONT_4,
|
|
CHIP8FONT_5,
|
|
CHIP8FONT_6,
|
|
CHIP8FONT_7,
|
|
CHIP8FONT_8,
|
|
CHIP8FONT_9,
|
|
CHIP8FONT_A,
|
|
CHIP8FONT_B,
|
|
CHIP8FONT_C,
|
|
CHIP8FONT_D,
|
|
CHIP8FONT_E,
|
|
CHIP8FONT_F,
|
|
];
|
|
|
|
for (font_index, current_font) in all_font_characters.iter().enumerate() {
|
|
for font_mem_offset in 0..=4 {
|
|
let real_offset = font_index * 5 + font_mem_offset;
|
|
memory[real_offset] = current_font[font_mem_offset];
|
|
}
|
|
}
|
|
|
|
memory
|
|
} |