mirror of
https://github.com/henryksloan/kind-nes.git
synced 2024-05-20 13:08:06 -04:00
Re-add simple, cross-platform UI
This commit is contained in:
parent
3e13793273
commit
0df97a638f
4
Cargo.lock
generated
4
Cargo.lock
generated
|
@ -185,7 +185,7 @@ dependencies = [
|
|||
]
|
||||
|
||||
[[package]]
|
||||
name = "sdl-frontend"
|
||||
name = "sdl-ui"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"nes",
|
||||
|
@ -307,7 +307,7 @@ dependencies = [
|
|||
"native-windows-gui",
|
||||
"nes",
|
||||
"rand",
|
||||
"sdl-frontend",
|
||||
"sdl-ui",
|
||||
"sdl2",
|
||||
"sdl2-sys",
|
||||
]
|
||||
|
|
|
@ -5,7 +5,7 @@ members = [
|
|||
"ppu",
|
||||
"apu",
|
||||
"memory",
|
||||
"sdl-frontend",
|
||||
"sdl-ui",
|
||||
"windows-ui",
|
||||
]
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[package]
|
||||
name = "sdl-frontend"
|
||||
name = "sdl-ui"
|
||||
version = "0.1.0"
|
||||
authors = ["Henry Sloan <henryksloan@gmail.com>"]
|
||||
edition = "2018"
|
|
@ -24,13 +24,13 @@ const COLORS: &'static [i32] = &[
|
|||
0x000000,
|
||||
];
|
||||
|
||||
pub struct SDLFrontend {
|
||||
pub struct SDLUI {
|
||||
sdl_context: Sdl,
|
||||
canvas: WindowCanvas,
|
||||
nes: Rc<RefCell<NES>>,
|
||||
}
|
||||
|
||||
impl SDLFrontend {
|
||||
impl SDLUI {
|
||||
pub fn new(sdl_context: Sdl, window: Window, nes: Rc<RefCell<NES>>) -> Self {
|
||||
Self {
|
||||
sdl_context,
|
38
sdl-ui/src/main.rs
Normal file
38
sdl-ui/src/main.rs
Normal file
|
@ -0,0 +1,38 @@
|
|||
use nes::NES;
|
||||
|
||||
use std::cell::RefCell;
|
||||
use std::env;
|
||||
use std::fs::File;
|
||||
use std::process;
|
||||
use std::rc::Rc;
|
||||
|
||||
fn main() {
|
||||
let args: Vec<String> = env::args().collect();
|
||||
if args.len() < 2 {
|
||||
eprintln!("usage: {} <NES ROM file>", args[0]);
|
||||
process::exit(1);
|
||||
}
|
||||
|
||||
let file = File::open(&args[1]).unwrap_or_else(|err| {
|
||||
println!("failed to read file: {}", err);
|
||||
process::exit(1);
|
||||
});
|
||||
|
||||
let mut nes = Rc::new(RefCell::new(NES::new()));
|
||||
nes.borrow_mut().load_rom(file).unwrap_or_else(|err| {
|
||||
println!("failed to load ROM: {}", err);
|
||||
process::exit(1);
|
||||
});
|
||||
|
||||
let sdl_context = sdl2::init().unwrap();
|
||||
let video_subsystem = sdl_context.video().unwrap();
|
||||
|
||||
let window = video_subsystem
|
||||
.window("KindNES", (256.0 * 3.0) as u32, (240.0 * 3.0) as u32)
|
||||
.position_centered()
|
||||
.build()
|
||||
.unwrap();
|
||||
|
||||
let mut sdl_ui = sdl_ui::SDLUI::new(sdl_context, window, nes);
|
||||
sdl_ui.render_loop();
|
||||
}
|
|
@ -8,7 +8,7 @@ edition = "2018"
|
|||
nes = { path = "../nes" }
|
||||
cpu = { path = "../cpu" }
|
||||
memory = { path = "../memory" }
|
||||
sdl-frontend = { path = "../sdl-frontend" }
|
||||
sdl-ui = { path = "../sdl-ui" }
|
||||
sdl2 = "0.34.3"
|
||||
sdl2-sys = "0.34.3"
|
||||
rand = "0.8.3"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#![windows_subsystem = "windows"]
|
||||
|
||||
use nes::NES;
|
||||
use sdl_frontend::SDLFrontend;
|
||||
use sdl_ui::SDLUI;
|
||||
|
||||
use core::ffi::c_void;
|
||||
use std::cell::RefCell;
|
||||
|
@ -107,6 +107,6 @@ fn main() {
|
|||
SDL_Window::from_ll(video_subsystem, window_raw)
|
||||
};
|
||||
|
||||
let mut sdl_frontend = SDLFrontend::new(sdl_context, window, app.nes.clone());
|
||||
sdl_frontend.render_loop();
|
||||
let mut sdl_ui = SDLUI::new(sdl_context, window, app.nes.clone());
|
||||
sdl_ui.render_loop();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue