1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
use bedrock_pc::*;
use phosphor::*;
fn main() {
let bytecode = include_bytes!("cobalt.br");
let metadata = parse_metadata(bytecode);
let config = EmulatorConfig {
dimensions: ScreenDimensions::new(1024,720) / 3,
fullscreen: false,
scale: 3,
debug_palette: None,
show_cursor: false,
initial_transmission: None,
decode_stdin: false,
encode_stdout: false,
symbols_path: None,
};
if let Ok(mut phosphor) = Phosphor::new() {
let mut graphical = GraphicalEmulator::new(&config, false);
graphical.load_program(bytecode);
let program_name = match &metadata {
Some(metadata) => match &metadata.name {
Some(name) => name.to_string(),
None => String::from("Bedrock"),
}
None => String::from("Bedrock"),
};
let window = WindowBuilder {
dimensions: Some(graphical.dimensions()),
size_bounds: Some(graphical.size_bounds()),
fullscreen: graphical.fullscreen,
scale: graphical.scale,
title: Some(program_name),
cursor: None,
icon: None,
program: Box::new(graphical),
};
phosphor.create_window(window);
phosphor.run().unwrap();
} else {
eprintln!("Could not create program window.")
}
}
|