diff options
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 47 |
1 files changed, 33 insertions, 14 deletions
@@ -1,23 +1,28 @@ #![feature(bigint_helper_methods)] -#![feature(unchecked_shifts)] #![feature(seek_stream_len)] -#![feature(io_error_more)] +#![feature(unchecked_shifts)] mod debug; mod devices; mod emulators; -mod metadata; +mod types; -pub use debug::DebugState; +pub use debug::*; pub use devices::*; pub use emulators::*; -pub use metadata::*; +pub use types::*; + +use bedrock_core::*; +use log::*; +use phosphor::*; use std::num::NonZeroU32; -use std::time::Duration; +use std::path::{Path, PathBuf}; +use std::time::{Duration, Instant}; + pub const BATCH_SIZE: usize = 1000; -pub const MIN_TICK_DURATION: Duration = Duration::from_millis( 4 ); -pub const MIN_FRAME_DURATION: Duration = Duration::from_millis( 14 ); +pub const TICK_DURATION: Duration = Duration::from_nanos( 1_000_000_000/256 ); +pub const MIN_FRAME_DURATION: Duration = Duration::from_millis( 10 ); pub const MAX_FRAME_DURATION: Duration = Duration::from_millis( 500 ); pub const DEFAULT_SCREEN_SIZE: ScreenDimensions = ScreenDimensions::new(800,600); pub const DEFAULT_SCREEN_SCALE: NonZeroU32 = unsafe { NonZeroU32::new_unchecked(1) }; @@ -25,10 +30,24 @@ pub const DEFAULT_SCREEN_SCALE: NonZeroU32 = unsafe { NonZeroU32::new_unchecked( pub type ScreenPosition = geometry::Point<u16>; pub type ScreenDimensions = geometry::Dimensions<u16>; -#[macro_export] -macro_rules! error { - ($source:expr, $($tokens:tt)*) => {{ - eprint!("[ERROR] [{}]: ", $source); - eprintln!($($tokens)*); - }}; + +pub fn run_program(bytecode: &[u8], config: EmulatorConfig) { + let mut args = switchboard::Switchboard::from_env(); + args.named("verbose").short('v'); + if args.get("verbose").as_bool() { + log::set_log_level(log::LogLevel::Info); + } + + match Phosphor::new() { + Ok(phosphor) => { + info!("Starting graphical emulator"); + let mut emulator = GraphicalEmulator::new(config, false); + emulator.load_program(&bytecode); + emulator.run(phosphor, true); + } + Err(err) => { + eprintln!("EventLoopError: {err:?}"); + fatal!("Could not start graphical event loop"); + } + } } |