Files
chip8-em/src/main.rs

41 lines
1.3 KiB
Rust

use clap::Parser;
mod chip8;
#[derive(Parser, Debug)]
#[command(version, about = "Chip 8 Emulator")]
struct Args {
/// Turn on debug mode
#[arg(short, long, action = clap::ArgAction::SetTrue)]
debug: bool,
/// Set path for chip8 binary file to run
#[arg(short, long)]
file: Option<String>,
#[arg(short = 'q', long = "quirks", value_delimiter = ',')]
quirks: Vec<String>,
}
fn main() {
let args = Args::parse();
let quirks = chip8::Chip8Quirks {
vf_reset: args.quirks.contains(&String::from("vfreset"))
|| args.quirks.contains(&String::from("chip8")),
memory: args.quirks.contains(&String::from("memory"))
|| args.quirks.contains(&String::from("chip8")),
display_wait: args.quirks.contains(&String::from("displaywait"))
|| args.quirks.contains(&String::from("chip8")),
clipping: args.quirks.contains(&String::from("clipping"))
|| args.quirks.contains(&String::from("chip8")),
shifting: args.quirks.contains(&String::from("shifting")),
jumping: args.quirks.contains(&String::from("jumping")),
};
if let Some(filepath) = args.file {
if args.debug {
chip8::run(filepath, &quirks, true);
} else {
chip8::run(filepath, &quirks, false);
}
}
}