M src/lib.rs => src/lib.rs +16 -0
@@ 4,6 4,8 @@ pub const SCREEN_WIDTH: usize = 512;
pub const SCREEN_HEIGHT: usize = 512;
pub const SCREEN_UPDATE_ADDRESS: usize = 0x7FFFF;
+use minifb::Key;
+
#[derive(Debug)]
pub struct Stack {
buffer: [u16;STACK_SIZE],
@@ 139,3 141,17 @@ pub fn mem_to_buf(memory: &[u16]) -> Vec<u32> {
}
result
}
+
+pub fn keys_to_state(keys: Vec<Key>) -> Vec<u16> { //output is using only 10 bits each to match with
+ let mut result = 0u128; //rest of system
+ for key in keys { //see minifb docs for what number each key is
+ result &= 1 << (key as usize);
+ }
+ let mut output = Vec::new();
+ for i in 0..11 {
+ let slice = ((result>>(10*i))&0x3FF) as u16;
+ output.push(slice);
+ }
+ output
+}
+
M src/main.rs => src/main.rs +1 -1
@@ 1,5 1,5 @@
use std::{fs, io};
-use minifb::{Window, WindowOptions};
+use minifb::{Window, WindowOptions, Key};
use implementation::*;
fn main() {