80 lines
1.9 KiB
Rust
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();
|
|
// }
|
|
}
|