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> { let args: Vec = 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::() { 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(()) }