sm64pc/gamebridge/src/main.rs

38 lines
947 B
Rust
Raw Normal View History

2020-05-08 22:32:29 +00:00
use anyhow::{anyhow, Result};
use log::{debug, error, info, warn};
2020-05-08 21:54:57 +00:00
use std::{
fs::{File, OpenOptions},
io::{Read, Write},
str::from_utf8,
};
2020-05-08 22:32:29 +00:00
fn main() -> Result<()> {
2020-05-08 21:54:57 +00:00
pretty_env_logger::try_init()?;
let mut controller_data = [0; 4];
2020-05-08 21:54:57 +00:00
let mut vblank = File::open("vblank")?;
let mut input = OpenOptions::new().write(true).open("input")?;
2020-05-08 22:00:20 +00:00
info!("ready");
2020-05-08 21:54:57 +00:00
loop {
let mut data = [0; 3];
debug!("waiting for vblank");
2020-05-08 21:54:57 +00:00
vblank.read(&mut data)?;
let str = from_utf8(&data)?;
debug!("got data: {}", str);
2020-05-08 22:32:29 +00:00
match str {
"OK\n" => input.write(&controller_data)?,
"BYE" => {
warn!("asked to exit by the game");
return Ok(());
},
_ => {
error!("got unknown FIFO data {}", str);
return Err(anyhow!("unknown FIFO data received"));
}
};
2020-05-08 21:54:57 +00:00
}
2020-05-08 20:30:43 +00:00
}