CLEANUP: standardizes on pretty_env_logger NEWBIN: Adds gemmarat to use Ratatui as an interface CLEANUP: removes debugging display from computer.rs ENHANCEMENT: Constants for locations of test roms built from environment BUGFIX: SoundTimer was using i32 internally when it needs to be u8 CLEANUP: removes commented code used during diagnostics
121 lines
5.6 KiB
Rust
121 lines
5.6 KiB
Rust
use std::borrow::ToOwned;
|
|
use std::clone::Clone;
|
|
use std::net::ToSocketAddrs;
|
|
use std::string::ToString;
|
|
|
|
pub const CHIP8_REGISTER_COUNT: i32 = 16;
|
|
pub const CHIP8_MEMORY_SIZE: i32 = 4096i32;
|
|
pub const CHIP8_VIDEO_WIDTH: i32 = 64i32;
|
|
pub const CHIP8_VIDEO_HEIGHT: i32 = 32i32;
|
|
pub const CHIP8_VIDEO_MEMORY: usize = (CHIP8_VIDEO_HEIGHT * CHIP8_VIDEO_WIDTH) as usize;
|
|
pub const CHIP8_ROM_SIZE: usize = 512;
|
|
|
|
pub const LABEL_QUIRK_CHIP8: &str = "Chip8";
|
|
pub const LABEL_QUIRK_XOCHIP: &str = "XO Chip";
|
|
pub const LABEL_QUIRK_SCHIP: &str = "SChip-Modern";
|
|
|
|
pub const BASE_ROOT: &'static str = &(env!("CARGO_MANIFEST_DIR"));
|
|
pub const RESOURCES_ROOT: &'static str = concat!(env!("CARGO_MANIFEST_DIR"), "/../resources");
|
|
pub const TESTS_ROOT: &'static str = concat!(env!("CARGO_MANIFEST_DIR"), "/../resources/test");
|
|
pub const TEST_ROM_ROOT: &'static str =concat!(env!("CARGO_MANIFEST_DIR"), "/../resources/test/roms");
|
|
|
|
pub const CHIP8_KEYBOARD: [[u8; 4]; 4] = [
|
|
[0x01, 0x02, 0x03, 0x0C],
|
|
[0x04, 0x05, 0x06, 0x0D],
|
|
[0x07, 0x08, 0x09, 0x0E],
|
|
[0x0A, 0x00, 0x0B, 0x0F],
|
|
];
|
|
|
|
pub const SCHIP_VIDEO_HEIGHT: i32 = 64;
|
|
pub const SCHIP_VIDEO_WIDTH: i32 = 128;
|
|
pub const SCHIP_VIDE_MEMORY: usize = (SCHIP_VIDEO_HEIGHT * SCHIP_VIDEO_WIDTH) as usize;
|
|
|
|
pub const INST_ADDI: &str = "ADDI";
|
|
pub const INST_ADD: &str = "ADD";
|
|
pub const INST_ADDR: &str = "ADDR";
|
|
pub const INST_AND: &str = "AND";
|
|
pub const INST_CLS: &str = "CLS";
|
|
pub const INST_CALL: &str = "CALL";
|
|
pub const INST_DRW: &str = "DRW";
|
|
pub const INST_EXIT: &str = "EXIT";
|
|
pub const INST_JPA: &str = "JPA";
|
|
pub const INST_JPI: &str = "JPI";
|
|
pub const INST_JPX: &str = "JPX";
|
|
pub const INST_BCD: &str = "BCD";
|
|
pub const INST_LDD: &str = "LDD";
|
|
pub const INST_LDF: &str = "LDF";
|
|
pub const INST_LDF2: &str = "LDF2";
|
|
pub const INST_LDIA: &str = "LDIA";
|
|
pub const INST_LDIX: &str = "LDIX";
|
|
pub const INST_LIDR: &str = "LIDR";
|
|
pub const INST_LDIS: &str = "LDIS";
|
|
pub const INST_LDR: &str = "LDR";
|
|
pub const INST_LDRD: &str = "LDRD";
|
|
pub const INST_LDRI: &str = "LDRI";
|
|
pub const INST_LDRK: &str = "LDRK";
|
|
pub const INST_LDRY: &str = "LDRY";
|
|
pub const INST_OR: &str = "OR";
|
|
pub const INST_RET: &str = "RET";
|
|
pub const INST_RND: &str = "RND";
|
|
pub const INST_SCD: &str = "SCD";
|
|
pub const INST_SCR: &str = "SCR";
|
|
pub const INST_SCL: &str = "SCL";
|
|
pub const INST_SEX: &str = "SEX";
|
|
pub const INST_SEY: &str = "SEY";
|
|
pub const INST_SHL: &str = "SHL";
|
|
pub const INST_SHR: &str = "SHR";
|
|
pub const INST_SKP: &str = "SKP";
|
|
pub const INST_SKNP: &str = "SKNP";
|
|
pub const INST_SNEB: &str = "SNEB";
|
|
pub const INST_SNEY: &str = "SNEY";
|
|
pub const INST_STR: &str = "STR";
|
|
pub const INST_SUB: &str = "SUB";
|
|
pub const INST_SUBC: &str = "SUBC";
|
|
pub const INST_SYS: &str = "SYS";
|
|
pub const INST_LOW: &str = "LOW";
|
|
pub const INST_HIGH: &str = "HIGH";
|
|
pub const INST_ORY: &str = "ORY";
|
|
pub const INST_SCU: &str = "SCU";
|
|
/// Data Word
|
|
/// Data to be loaded to memory for application use
|
|
pub const INST_DW: &str = "DW";
|
|
|
|
pub const XXXXERRORINSTRUCTION_ENCODED: u16 = 0x0000;
|
|
|
|
pub const CHIP8_PROGRAM_LOAD_OFFSET: i32 = 0x200;
|
|
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 const SCHIPFONT_OFFSET: u32 = 0x81;
|
|
pub const SCHIPFONT_0: [u8; 0x0A] = [0xF0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0xF0];
|
|
pub const SCHIPFONT_1: [u8; 0x0A] = [0x20, 0x60, 0xA0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70];
|
|
pub const SCHIPFONT_2: [u8; 0x0A] = [0xF0, 0x10, 0x10, 0x10, 0xF0, 0x80, 0x80, 0x80, 0x80, 0xF0];
|
|
pub const SCHIPFONT_3: [u8; 0x0A] = [0xF0, 0x10, 0x10, 0x10, 0xF0, 0x10, 0x10, 0x10, 0x10, 0xF0];
|
|
pub const SCHIPFONT_4: [u8; 0x0A] = [0x90, 0x90, 0x90, 0x90, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10];
|
|
pub const SCHIPFONT_5: [u8; 0x0A] = [0xF0, 0x80, 0x80, 0x80, 0xF0, 0x10, 0x10, 0x10, 0x10, 0xF0];
|
|
pub const SCHIPFONT_6: [u8; 0x0A] = [0xF0, 0x80, 0x80, 0x80, 0xF0, 0x90, 0x90, 0x90, 0x90, 0xF0];
|
|
pub const SCHIPFONT_7: [u8; 0x0A] = [0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10];
|
|
pub const SCHIPFONT_8: [u8; 0x0A] = [0xF0, 0x90, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x90, 0x90, 0xF0];
|
|
pub const SCHIPFONT_9: [u8; 0x0A] = [0xF0, 0x90, 0x90, 0x90, 0xF0, 0x10, 0x10, 0x10, 0x10, 0xF0];
|
|
pub const SCHIPFONT_A: [u8; 0x0A] = [0xF0, 0x90, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x90, 0x90, 0x90];
|
|
pub const SCHIPFONT_B: [u8; 0x0A] = [0xE0, 0x90, 0x90, 0x90, 0xE0, 0x90, 0x90, 0x90, 0x90, 0xE0];
|
|
pub const SCHIPFONT_C: [u8; 0x0A] = [0xF0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xF0];
|
|
pub const SCHIPFONT_D: [u8; 0x0A] = [0xE0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0xE0];
|
|
pub const SCHIPFONT_E: [u8; 0x0A] = [0xF0, 0x80, 0x80, 0x80, 0xF0, 0x80, 0x80, 0x80, 0x80, 0xF0];
|
|
pub const SCHIPFONT_F: [u8; 0x0A] = [0xF0, 0x80, 0x80, 0x80, 0xF0, 0x80, 0x80, 0x80, 0x80, 0x80];
|
|
|