From 049748b2436e51e9e7ff7441b9d4767d7de2494d Mon Sep 17 00:00:00 2001 From: Atreya Bain Date: Sun, 3 Mar 2024 14:12:54 +0530 Subject: [PATCH] [fmt] --- src/device/device.rs | 8 ++++---- src/main.rs | 46 ++++++++++++++++++++++---------------------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/device/device.rs b/src/device/device.rs index 48aea57..a664d05 100644 --- a/src/device/device.rs +++ b/src/device/device.rs @@ -64,6 +64,7 @@ impl Device { let instruction = Instruction::decode_instruction(instr_slice); self.execute_instruction(instruction); + } pub fn get_framebuffer_index(x:usize,y:usize)->usize{ y*Self::FRAME_BUFFER_WIDTH + x @@ -80,9 +81,10 @@ impl Device { for pixel in frame_buffer.iter_mut(){ *pixel = 0; } - log::info!("ClearScreen") + log::trace!("ClearScreen") } Instruction::JumpTo(new_pc) => { + // hint that we're jumping back to self self.registers.pc = new_pc; } Instruction::SetRegister(reg_location, value) => { @@ -92,7 +94,6 @@ impl Device { self.registers.v[reg_location] += value; } Instruction::SetIndex(value) => { - log::info!("Setting index to {}",value); self.registers.i = value; } Instruction::Draw(regx,regy, n) => { @@ -116,8 +117,7 @@ impl Device { } } // TODO fix carry bit - log::info!("Drawing at ({},{}) for {} pixels from {}",x,y,n,self.registers.i); - log::warn!("Draw call unimplemented"); + log::warn!("Draw call incomplete"); } }; } diff --git a/src/main.rs b/src/main.rs index e9e8481..206048d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -29,11 +29,10 @@ fn main() { let frame_buffer = get_frame_buffer(); let frame_buffer_for_display = Arc::clone(&frame_buffer); - let (sender,receiver) = std::sync::mpsc::channel(); + let (sender, receiver) = std::sync::mpsc::channel(); - let compute_handle = thread::spawn(move ||{ - - let mut device = Device::new(timer, frame_buffer); + let compute_handle = thread::Builder::new().name("Compute".to_string()).spawn(move || { + let mut device = Device::new(timer, frame_buffer); device.set_default_font(); { let rom = load_rom(); @@ -42,17 +41,19 @@ fn main() { loop { let val = receiver.try_recv(); - if let Ok(()) = val{ + if let Ok(()) = val { break; - }else if let Err(std::sync::mpsc::TryRecvError::Disconnected) = val{ + } else if let Err(std::sync::mpsc::TryRecvError::Disconnected) = val { panic!("Disconnected"); } device.cycle(); + // Put a bit of delay to slow down execution + thread::sleep(Duration::from_nanos(500)) } - }); + }).expect("Failed to launch thread"); let (mut canvas, mut event_pump) = initiate_sdl(8f32); - let mut fb_sdl = vec![0;3*Device::FRAME_BUFFER_SIZE]; + let mut fb_sdl = vec![0; 3 * Device::FRAME_BUFFER_SIZE]; canvas.set_draw_color(Color::BLACK); canvas.clear(); @@ -81,8 +82,8 @@ fn main() { // The rest of the game loop goes here... { - let lock = frame_buffer_for_display.lock().expect("Failed to get Display"); - draw_screen(lock,&mut canvas,&mut fb_sdl); + let lock = frame_buffer_for_display.lock().expect("Failed to get Display"); + draw_screen(lock, &mut canvas, &mut fb_sdl); // log::info!("Framebuffer status: {:?}",lock); } canvas.present(); @@ -94,39 +95,38 @@ fn main() { compute_handle.join().unwrap(); - } fn draw_screen(frame_buffer: MutexGuard>, window_canvas: &mut WindowCanvas, x1: &mut Vec) { - for (i,pixel) in frame_buffer.iter().enumerate(){ - x1[3*i] = *pixel; - x1[3*i+1] = *pixel ; - x1[3*i+2] = *pixel; + for (i, pixel) in frame_buffer.iter().enumerate() { + x1[3 * i] = *pixel; + x1[3 * i + 1] = *pixel; + x1[3 * i + 2] = *pixel; } drop(frame_buffer); let tex_creator = window_canvas.texture_creator(); let mut tex = tex_creator.create_texture(PixelFormatEnum::RGB24, TextureAccess::Streaming, Device::FRAME_BUFFER_WIDTH as u32, Device::FRAME_BUFFER_HEIGHT as u32).expect("Failed to create tex"); - tex.with_lock(None,|u,i|{ + tex.with_lock(None, |u, i| { u.copy_from_slice(x1); }).expect("Unwrap tex"); - window_canvas.copy(&tex,None,None).expect("Failed to set texture"); + window_canvas.copy(&tex, None, None).expect("Failed to set texture"); } fn get_frame_buffer() -> Arc>> { Arc::new(Mutex::new(vec![0u8; Device::FRAME_BUFFER_SIZE].into_boxed_slice().try_into().unwrap())) } -const ROM_SIZE:usize = 4096 - 0x200; -fn load_rom()->[u8;ROM_SIZE]{ - let mut rom_slice = [0u8;ROM_SIZE]; +const ROM_SIZE: usize = 4096 - 0x200; + +fn load_rom() -> [u8; ROM_SIZE] { + let mut rom_slice = [0u8; ROM_SIZE]; let mut file = File::open("roms/ibm_logo.ch8").expect("could not open"); file.read(&mut rom_slice).expect("Unwrap"); rom_slice - } -fn initiate_sdl(draw_scale:f32) -> (WindowCanvas, EventPump) { +fn initiate_sdl(draw_scale: f32) -> (WindowCanvas, EventPump) { let sdl_context = sdl2::init().unwrap(); let video_subsystem = sdl_context.video().unwrap(); // let audio_subsystem = sdl_context.audio().unwrap(); @@ -140,7 +140,7 @@ fn initiate_sdl(draw_scale:f32) -> (WindowCanvas, EventPump) { let window_width = (Device::FRAME_BUFFER_WIDTH as f32 * draw_scale) as u32; let window_height = (Device::FRAME_BUFFER_HEIGHT as f32 * draw_scale) as u32; - let window = video_subsystem.window("porcel8", window_width,window_height) + let window = video_subsystem.window("porcel8", window_width, window_height) .position_centered() .build() .unwrap();