use log::{debug, info, warn}; use std::{ fs::{File, OpenOptions}, io::{Read, Write}, str::from_utf8, }; fn main() -> anyhow::Result<()> { pretty_env_logger::try_init()?; let mut controller_data = [0; 4]; let mut vblank = File::open("vblank")?; let mut input = OpenOptions::new().write(true).open("input")?; let mut demofile = File::open("demo.m64")?; { let mut buf = [0; 1024]; demofile.read(&mut buf)?; } info!("ready"); loop { let mut data = [0; 3]; debug!("waiting for vblank"); vblank.read(&mut data)?; let str = from_utf8(&data)?; debug!("got data: {}", str); if str == "BYE" { warn!("asked to exit by the game"); return Ok(()); } demofile.read(&mut controller_data)?; input.write(&controller_data)?; } }