summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Perrouault <samuel.perrouault@gmail.com>2025-03-26 11:49:09 +0100
committerSamuel Perrouault <samuel.perrouault@gmail.com>2025-03-26 11:49:09 +0100
commite0dafa50f2e56a8d261e98d45256412979c8977d (patch)
tree014173533f2a77659693d1e8b50d90df7a2429b8
parent31007cfa8e7e31b356268ddfb74119f13f985122 (diff)
DRW now correctly fetches screen coordinates from registers
-rw-r--r--src/chip8.rs4
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;
}