From 9ab2f933eb44fe48c7ba7a7902199b2f13795a1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com> Date: Thu, 16 Jun 2022 16:30:19 +0100 Subject: [PATCH] feat: hexadecimal to lowecase --- src/chip8.rs | 82 ++++++++++++++++++++++++++-------------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/src/chip8.rs b/src/chip8.rs index 188b186..df9ce22 100644 --- a/src/chip8.rs +++ b/src/chip8.rs @@ -32,22 +32,22 @@ const ROM_START: usize = 0x200; /// Buffer that contains the base CHIP-8 font set that /// is going to be used to draw the font in the screen static FONT_SET: [u8; 80] = [ - 0xF0, 0x90, 0x90, 0x90, 0xF0, // 0 + 0xf0, 0x90, 0x90, 0x90, 0xf0, // 0 0x20, 0x60, 0x20, 0x20, 0x70, // 1 - 0xF0, 0x10, 0xF0, 0x80, 0xF0, // 2 - 0xF0, 0x10, 0xF0, 0x10, 0xF0, // 3 - 0x90, 0x90, 0xF0, 0x10, 0x10, // 4 - 0xF0, 0x80, 0xF0, 0x10, 0xF0, // 5 - 0xF0, 0x80, 0xF0, 0x90, 0xF0, // 6 - 0xF0, 0x10, 0x20, 0x40, 0x40, // 7 - 0xF0, 0x90, 0xF0, 0x90, 0xF0, // 8 - 0xF0, 0x90, 0xF0, 0x10, 0xF0, // 9 - 0xF0, 0x90, 0xF0, 0x90, 0x90, // A - 0xE0, 0x90, 0xE0, 0x90, 0xE0, // B - 0xF0, 0x80, 0x80, 0x80, 0xF0, // C - 0xE0, 0x90, 0x90, 0x90, 0xE0, // D - 0xF0, 0x80, 0xF0, 0x80, 0xF0, // E - 0xF0, 0x80, 0xF0, 0x80, 0x80, // F + 0xf0, 0x10, 0xf0, 0x80, 0xf0, // 2 + 0xf0, 0x10, 0xf0, 0x10, 0xf0, // 3 + 0x90, 0x90, 0xf0, 0x10, 0x10, // 4 + 0xf0, 0x80, 0xf0, 0x10, 0xf0, // 5 + 0xf0, 0x80, 0xf0, 0x90, 0xf0, // 6 + 0xf0, 0x10, 0x20, 0x40, 0x40, // 7 + 0xf0, 0x90, 0xf0, 0x90, 0xf0, // 8 + 0xf0, 0x90, 0xf0, 0x10, 0xf0, // 9 + 0xf0, 0x90, 0xf0, 0x90, 0x90, // A + 0xe0, 0x90, 0xe0, 0x90, 0xe0, // B + 0xf0, 0x80, 0x80, 0x80, 0xf0, // C + 0xe0, 0x90, 0x90, 0x90, 0xe0, // D + 0xf0, 0x80, 0xf0, 0x80, 0xf0, // E + 0xf0, 0x80, 0xf0, 0x80, 0x80, // F ]; #[cfg_attr(feature = "web", wasm_bindgen)] @@ -150,18 +150,18 @@ impl Chip8 { impl Chip8 { fn process_opcode(&mut self, opcode: u16) { - let id = opcode & 0xF000; - let addr = opcode & 0x0FFF; - let nibble = (opcode & 0x000F) as u8; - let x = (opcode >> 8 & 0xF) as usize; - let y = (opcode >> 4 & 0xF) as usize; - let byte = (opcode & 0x00FF) as u8; + let id = opcode & 0xf000; + let addr = opcode & 0x0fff; + let nibble = (opcode & 0x000f) as u8; + let x = (opcode >> 8 & 0xf) as usize; + let y = (opcode >> 4 & 0xf) as usize; + let byte = (opcode & 0x00ff) as u8; match id { 0x0000 => match byte { - 0xE0 => self.vram = [0u8; SCREEN_PIXEL_WIDTH * SCREEN_PIXEL_HEIGHT], - 0xEE => self.return_subroutine(), - _ => panic!("unknown opcode 0x{:04X}", opcode), + 0xe0 => self.vram = [0u8; SCREEN_PIXEL_WIDTH * SCREEN_PIXEL_HEIGHT], + 0xee => self.return_subroutine(), + _ => panic!("unknown opcode 0x{:04x}", opcode), }, 0x1000 => self.pc = addr, 0x2000 => self.call_subroutine(addr), @@ -179,29 +179,29 @@ impl Chip8 { 0x5 => self.registers[x] = self.sub(x, y), 0x6 => self.shift_right(x), 0x7 => self.registers[x] = self.sub(y, x), - 0xE => self.shift_left(x), + 0xe => self.shift_left(x), _ => panic!("unknown opcode 0x{:04X}", opcode), }, 0x9000 => self.skip_if(self.registers[x] != self.registers[y]), - 0xA000 => self.i = addr, - 0xB000 => self.pc = addr + self.registers[0] as u16, - 0xC000 => self.registers[x] = byte & Chip8::rand(), - 0xD000 => self.draw_sprite( + 0xa000 => self.i = addr, + 0xb000 => self.pc = addr + self.registers[0] as u16, + 0xc000 => self.registers[x] = byte & Chip8::rand(), + 0xd000 => self.draw_sprite( self.registers[x] as usize, self.registers[y] as usize, nibble as usize, ), - 0xE000 => match byte { - 0x9E => self.skip_if(self.keys[self.registers[x] as usize]), - 0xA1 => self.skip_if(!self.keys[self.registers[x] as usize]), + 0xe000 => match byte { + 0x9e => self.skip_if(self.keys[self.registers[x] as usize]), + 0xa1 => self.skip_if(!self.keys[self.registers[x] as usize]), _ => panic!("unknown opcode 0x{:04X}", opcode), }, - 0xF000 => match byte { + 0xf000 => match byte { 0x07 => self.registers[x] = self.dt, - 0x0A => self.wait_for_key(x), + 0x0a => self.wait_for_key(x), 0x15 => self.dt = self.registers[x], 0x18 => self.st = self.registers[x], - 0x1E => self.i += self.registers[x] as u16, + 0x1e => self.i += self.registers[x] as u16, 0x29 => self.i = self.registers[x] as u16 * 5, 0x33 => self.store_bcd(x), 0x55 => self.ram[self.i as usize..=self.i as usize + x] @@ -227,13 +227,13 @@ impl Chip8 { #[inline(always)] fn add(&mut self, x: usize, y: usize) { let (sum, overflow) = self.registers[x].overflowing_add(self.registers[y]); - self.registers[0xF] = overflow as u8; + self.registers[0xf] = overflow as u8; self.registers[x] = sum; } #[inline(always)] fn sub(&mut self, x: usize, y: usize) -> u8 { - self.registers[0xF] = (self.registers[x] > self.registers[y]) as u8; + self.registers[0xf] = (self.registers[x] > self.registers[y]) as u8; self.registers[x].saturating_sub(self.registers[y]) } @@ -252,13 +252,13 @@ impl Chip8 { #[inline(always)] fn shift_right(&mut self, x: usize) { - self.registers[0xF] = self.registers[x] & 0x01; + self.registers[0xf] = self.registers[x] & 0x01; self.registers[x] >>= 1; } #[inline(always)] fn shift_left(&mut self, x: usize) { - self.registers[0xF] = (self.registers[x] & 0x80) >> 7; + self.registers[0xf] = (self.registers[x] & 0x80) >> 7; self.registers[x] <<= 1; } @@ -285,7 +285,7 @@ impl Chip8 { #[inline(always)] fn draw_sprite(&mut self, x0: usize, y0: usize, height: usize) { - self.registers[0xF] = 0; + self.registers[0xf] = 0; for y in 0..height { let sprite_line = self.ram[self.i as usize + y]; for x in 0..8 { @@ -294,7 +294,7 @@ impl Chip8 { let addr = yf * SCREEN_PIXEL_WIDTH + xf; if (sprite_line & (0x80 >> x)) != 0 { if self.vram[addr] == 1 { - self.registers[0xF] = 1; + self.registers[0xf] = 1; } self.vram[addr] ^= 1 } -- GitLab