lemur/src/main.rs

45 lines
1.0 KiB
Rust
Raw Normal View History

2024-11-05 03:18:57 +00:00
use std::{path::PathBuf, process, thread};
2024-11-03 16:32:53 +00:00
use anyhow::Result;
use app::App;
use clap::Parser;
2024-11-04 14:59:58 +00:00
use emulator::EmulatorBuilder;
2024-11-03 16:32:53 +00:00
use winit::event_loop::{ControlFlow, EventLoop};
mod app;
2024-11-04 14:59:58 +00:00
mod audio;
2024-11-05 05:07:48 +00:00
mod controller;
2024-11-03 16:32:53 +00:00
mod emulator;
mod renderer;
mod shrooms_vb_core;
#[derive(Parser)]
struct Args {
2024-11-05 03:18:57 +00:00
rom: Option<PathBuf>,
2024-11-02 20:18:41 +00:00
}
2024-11-03 16:32:53 +00:00
fn main() -> Result<()> {
let args = Args::parse();
2024-11-02 20:18:41 +00:00
2024-11-05 03:18:57 +00:00
let (mut builder, client) = EmulatorBuilder::new();
if let Some(path) = args.rom {
builder = builder.with_rom(&path);
}
2024-11-03 16:32:53 +00:00
thread::spawn(move || {
2024-11-05 03:18:57 +00:00
let mut emulator = match builder.build() {
Ok(e) => e,
Err(err) => {
eprintln!("Error initializing emulator: {err}");
process::exit(1);
}
};
2024-11-03 16:32:53 +00:00
emulator.run();
});
2024-11-02 20:18:41 +00:00
let event_loop = EventLoop::with_user_event().build().unwrap();
2024-11-02 20:18:41 +00:00
event_loop.set_control_flow(ControlFlow::Poll);
let proxy = event_loop.create_proxy();
event_loop.run_app(&mut App::new(client, proxy))?;
2024-11-03 16:32:53 +00:00
Ok(())
2024-11-02 20:18:41 +00:00
}