84 lines
2.2 KiB
Rust
84 lines
2.2 KiB
Rust
mod audio;
|
|
mod runner;
|
|
mod fs_backend;
|
|
mod log_sink;
|
|
mod debugger;
|
|
mod stats;
|
|
mod input;
|
|
mod cap;
|
|
mod utilities;
|
|
|
|
use crate::runner::HostRunner;
|
|
use crate::cap::load_cap_config;
|
|
use winit::event_loop::EventLoop;
|
|
use prometeu_core::firmware::BootTarget;
|
|
|
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
let args: Vec<String> = std::env::args().collect();
|
|
let mut fs_root = None;
|
|
let mut cap_config = None;
|
|
let mut cartridge_path = None;
|
|
let mut debug_mode = false;
|
|
let mut debug_port = 7777;
|
|
|
|
let mut i = 1; // Pula o nome do executável
|
|
while i < args.len() {
|
|
match args[i].as_str() {
|
|
"--run" => {
|
|
if i + 1 < args.len() {
|
|
cartridge_path = Some(args[i + 1].clone());
|
|
debug_mode = false;
|
|
i += 1;
|
|
}
|
|
}
|
|
"--debug" => {
|
|
if i + 1 < args.len() {
|
|
cartridge_path = Some(args[i + 1].clone());
|
|
debug_mode = true;
|
|
i += 1;
|
|
}
|
|
}
|
|
"--port" => {
|
|
if i + 1 < args.len() {
|
|
if let Ok(port) = args[i + 1].parse::<u16>() {
|
|
debug_port = port;
|
|
}
|
|
i += 1;
|
|
}
|
|
}
|
|
"--fs-root" => {
|
|
if i + 1 < args.len() {
|
|
fs_root = Some(args[i + 1].clone());
|
|
i += 1;
|
|
}
|
|
}
|
|
"--cap" => {
|
|
if i + 1 < args.len() {
|
|
cap_config = load_cap_config(&args[i + 1]);
|
|
i += 1;
|
|
}
|
|
}
|
|
_ => {}
|
|
}
|
|
i += 1;
|
|
}
|
|
|
|
let boot_target = if let Some(path) = cartridge_path {
|
|
BootTarget::Cartridge {
|
|
path,
|
|
debug: debug_mode,
|
|
debug_port: if debug_mode { debug_port } else { 7777 },
|
|
}
|
|
} else {
|
|
BootTarget::Hub
|
|
};
|
|
|
|
let event_loop = EventLoop::new()?;
|
|
|
|
let mut runner = HostRunner::new(fs_root, cap_config);
|
|
runner.set_boot_target(boot_target);
|
|
|
|
event_loop.run_app(&mut runner)?;
|
|
|
|
Ok(())
|
|
} |