From 9f75d1a6b57e9c9262674de048ea52f1b433d30b Mon Sep 17 00:00:00 2001 From: Sam M W Date: Mon, 3 Apr 2023 22:46:46 +0100 Subject: [PATCH] the get_byte method needs to take mutable reference to self the reson for this is it's possible for external hardware to have some side effect on a read. --- src/cpu.rs | 4 ++-- src/memory.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/cpu.rs b/src/cpu.rs index 04a1a10..a2a0d0c 100644 --- a/src/cpu.rs +++ b/src/cpu.rs @@ -83,9 +83,9 @@ impl CPU { let x = self.registers.index_x; let y = self.registers.index_y; - let memory = &self.memory; + let memory = &mut self.memory; - fn read_address(mem: &M, addr: u16) -> [u8; 2] { + fn read_address(mem: &mut M, addr: u16) -> [u8; 2] { let lo = mem.get_byte(addr); let hi = mem.get_byte(addr.wrapping_add(1)); [lo, hi] diff --git a/src/memory.rs b/src/memory.rs index cf987f2..dbe46b5 100644 --- a/src/memory.rs +++ b/src/memory.rs @@ -59,7 +59,7 @@ impl Default for Memory { } pub trait Bus { - fn get_byte(&self, address: u16) -> u8; + fn get_byte(&mut self, address: u16) -> u8; fn set_byte(&mut self, address: u16, value: u8); fn set_bytes(&mut self, start: u16, values: &[u8]) { @@ -78,7 +78,7 @@ impl Memory { } impl Bus for Memory { - fn get_byte(&self, address: u16) -> u8 { + fn get_byte(&mut self, address: u16) -> u8 { self.bytes[address as usize] }