trevors_chip8_toy/gemma/src/constants.rs
Trevor Merritt 9b64a959f3 CLEANUP: cleans up dependencies to use workspace version
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
2025-05-29 13:27:10 -04:00

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];