summaryrefslogtreecommitdiff
path: root/src/bin/cobalt.rs
blob: 172ecb9942daa375b77c4dffabf6060bbccf10c9 (plain) (blame)
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.")
    }
}