diff --git a/src/main.rs b/src/main.rs index 58ab33e..050ab79 100644 --- a/src/main.rs +++ b/src/main.rs @@ -71,12 +71,16 @@ fn main() { .exit_on_esc(true).graphics_api(OpenGL::V3_2).build().unwrap(); let mut event_settings = EventSettings::new(); event_settings.max_fps = 60; + event_settings.ups = 107400; let mut events = Events::new(event_settings); let mut glyphs = get_glyphs(&mut window); // Main loop let mut run = false; while let Some(event) = events.next(&mut window) { + if let Some(_) = event.update_args() { + if run { cpu.clock(&mut bus); } + } if let Some(_) = event.render_args() { render(&mut window, &event, &mut glyphs, &cpu, &bus, &disasm); } diff --git a/src/nes/cpu.rs b/src/nes/cpu.rs index 86c2672..bd34154 100644 --- a/src/nes/cpu.rs +++ b/src/nes/cpu.rs @@ -454,8 +454,12 @@ impl CPU { unimplemented!() } - fn op_INC(&mut self, bus: &T, val: Word) { - unimplemented!() + fn op_INC(&mut self, bus: &mut T, addr: Word) { + let val = self.readb(bus, addr); + let val = val.wrapping_add(1); + self.writeb(bus, addr, val); + self.set_flag(ZERO, val == 0); + self.set_flag(NEGATIVE, (val & 0x80) != 0) } fn op_INX(&mut self, bus: &T) {