diff options
| author | Samuel Perrouault <samuel.perrouault@gmail.com> | 2025-03-26 11:49:09 +0100 |
|---|---|---|
| committer | Samuel Perrouault <samuel.perrouault@gmail.com> | 2025-03-26 11:49:09 +0100 |
| commit | e0dafa50f2e56a8d261e98d45256412979c8977d (patch) | |
| tree | 014173533f2a77659693d1e8b50d90df7a2429b8 /src/chip8.rs | |
| parent | 31007cfa8e7e31b356268ddfb74119f13f985122 (diff) | |
DRW now correctly fetches screen coordinates from registers
Diffstat (limited to 'src/chip8.rs')
| -rw-r--r-- | src/chip8.rs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/chip8.rs b/src/chip8.rs index 56f111c..eacc1e3 100644 --- a/src/chip8.rs +++ b/src/chip8.rs @@ -92,12 +92,14 @@ impl Chip8 { let y = (opcode & 0x00F0) >> 4; let nibble = opcode & 0x000F; eprintln!("DRW V{}, V{}, {}", x, y, nibble); + let vx = self.v[x as usize] as u16; + let vy = self.v[y as usize] as u16; self.v[0xF] = 0; for yy in 0..nibble { let pixel = self.memory[(self.i + yy) as usize]; for xx in 0..8 { if (pixel & (0x80 >> xx)) != 0 { - let si = x + xx + ((y + yy) * WIDTH); + let si = vx + xx + ((vy + yy) * WIDTH); if self.screen[si as usize] == 1 { self.v[0xF] = 1; } |
