nesrust/ui/src/main.rs
2025-06-17 10:59:02 -04:00

80 lines
1.9 KiB
Rust

extern crate sdl2;
mod renderer;
use crate::renderer::Renderer;
use sdl2::event::Event;
use sdl2::rect::Point;
use simplelog::*;
use std::fs::File;
use std::time::Duration;
const ROM_PATH: &'static str = "./roms/dk.nes";
const NES_WIDTH: u32 = 256;
const NES_HEIGHT: u32 = 240;
const WINDOW_SCALE: u32 = 3;
const WINDOW_WIDTH: u32 = NES_WIDTH * WINDOW_SCALE;
const WINDOW_HEIGHT: u32 = NES_HEIGHT * WINDOW_SCALE;
fn main() -> Result<(), String> {
CombinedLogger::init(vec![
TermLogger::new(
LevelFilter::Info,
Config::default(),
TerminalMode::Mixed,
ColorChoice::Auto,
),
WriteLogger::new(
LevelFilter::Debug,
Config::default(),
File::create("./logs/latest.log").unwrap(),
),
])
.unwrap();
let sdl_context = sdl2::init()?;
let video_subsystem = sdl_context.video()?;
let window = video_subsystem
.window("NesRust", WINDOW_WIDTH, WINDOW_HEIGHT)
.position_centered()
.opengl()
.build()
.map_err(|e| e.to_string())?;
let mut renderer = Renderer::new(window, WINDOW_SCALE)?;
let mut event_pump = sdl_context.event_pump()?;
'running: loop {
for event in event_pump.poll_iter() {
match event {
Event::Quit { .. } => break 'running,
_ => {}
}
}
renderer.draw(&Point::new(1, 1))?;
::std::thread::sleep(Duration::new(0, 1_000_000_000u32 / 60));
// Main loop
}
Ok(())
// let mut window = UIWindow::new("NesRust", 800, 600, 60);
//
// // let mut system = System::new();
// // system.insert_rom(ROM_PATH).expect("Failed to insert ROM");
// loop {
// // system.cycle();
// if window.poll_events() {
// break;
// }
//
// // TODO: System loop
//
// window.render();
// window.wait();
// }
}