From 1703d41b68004e548a5e6abd0901fc1b4b8f0a47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com> Date: Sun, 19 Jun 2022 01:13:50 +0100 Subject: [PATCH] feat: new loading of fonts --- src/chip8_neo.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/chip8_neo.rs b/src/chip8_neo.rs index d0a0d15..8c9e62a 100644 --- a/src/chip8_neo.rs +++ b/src/chip8_neo.rs @@ -112,7 +112,7 @@ impl Chip8Neo { 0x4000 => self.pc += if self.regs[x] != byte { 2 } else { 0 }, 0x5000 => self.pc += if self.regs[x] == self.regs[y] { 2 } else { 0 }, 0x6000 => self.regs[x] = byte, - 0x7000 => self.regs[x] += byte, + 0x7000 => self.regs[x] = self.regs[x].wrapping_add(byte), 0x8000 => match nibble { 0x0 => self.regs[x] = self.regs[y], 0x1 => self.regs[x] |= self.regs[y], @@ -125,7 +125,7 @@ impl Chip8Neo { } 0x5 => { self.regs[0xf] = (self.regs[x] >= self.regs[y]) as u8; - self.regs[x] = self.regs[x] - self.regs[y]; + self.regs[x] = self.regs[x].saturating_sub(self.regs[y]); } 0x6 => { self.regs[0xf] = self.regs[x] & 0x01; @@ -133,7 +133,7 @@ impl Chip8Neo { } 0x7 => { self.regs[0xf] = (self.regs[y] >= self.regs[x]) as u8; - self.regs[x] = self.regs[y] - self.regs[x]; + self.regs[x] = self.regs[y].saturating_sub(self.regs[x]); } 0xe => { self.regs[0xf] = (self.regs[x] & 0x80) >> 7; @@ -156,15 +156,16 @@ impl Chip8Neo { 0x07 => self.regs[x] = self.dt, 0x15 => self.dt = self.regs[x], 0x18 => self.st = self.regs[x], + 0x29 => self.i = self.regs[x] as u16 * 5, 0x33 => { self.ram[self.i as usize] = self.regs[x] / 100; self.ram[self.i as usize + 1] = (self.regs[x] / 10) % 10; self.ram[self.i as usize + 2] = self.regs[x] % 10; } - 0x55 => self.ram[self.i as usize..(self.i as usize + x)] - .clone_from_slice(&self.regs[0..x]), - 0x65 => self.regs[0..x] - .clone_from_slice(&self.ram[self.i as usize..(self.i as usize + x)]), + 0x55 => self.ram[self.i as usize..self.i as usize + x + 1] + .clone_from_slice(&self.regs[0..x + 1]), + 0x65 => self.regs[0..x + 1] + .clone_from_slice(&self.ram[self.i as usize..self.i as usize + x + 1]), _ => println!( "unimplemented instruction 0xf000, instruction 0x{:04x}", instruction -- GitLab