remove mutability from mapper read funcs

This commit is contained in:
Theron 2020-02-01 14:49:30 -06:00
parent f8718718a1
commit 4be3570c85
8 changed files with 8 additions and 8 deletions

View File

@ -15,7 +15,7 @@ impl Cnrom {
} }
impl Mapper for Cnrom { impl Mapper for Cnrom {
fn read(&mut self, address: usize) -> u8 { fn read(&self, address: usize) -> u8 {
let pl = self.cart.prg_rom.len(); let pl = self.cart.prg_rom.len();
let addr = address % 0x4000; let addr = address % 0x4000;
match address { match address {

View File

@ -111,7 +111,7 @@ impl Mmc1 {
} }
impl Mapper for Mmc1 { impl Mapper for Mmc1 {
fn read(&mut self, address: usize) -> u8 { fn read(&self, address: usize) -> u8 {
match address { match address {
0x0000..=0x1FFF => { 0x0000..=0x1FFF => {
if self.cart.chr_rom_size == 0 { if self.cart.chr_rom_size == 0 {

View File

@ -67,7 +67,7 @@ impl Mmc3 {
} }
impl Mapper for Mmc3 { impl Mapper for Mmc3 {
fn read(&mut self, address: usize) -> u8 { fn read(&self, address: usize) -> u8 {
let val = match address { let val = match address {
0x0000..=0x1FFF => { // reading from CHR-ROM 0x0000..=0x1FFF => { // reading from CHR-ROM
let offset_1k = address % 0x400; let offset_1k = address % 0x400;

View File

@ -15,7 +15,7 @@ use std::rc::Rc;
use std::io::Read; use std::io::Read;
pub trait Mapper { pub trait Mapper {
fn read(&mut self, address: usize) -> u8; fn read(&self, address: usize) -> u8;
fn write(&mut self, address: usize, value: u8); fn write(&mut self, address: usize, value: u8);
fn get_mirroring(&mut self) -> Mirror; fn get_mirroring(&mut self) -> Mirror;
fn load_battery_backed_ram(&mut self); fn load_battery_backed_ram(&mut self);

View File

@ -15,7 +15,7 @@ impl Nrom {
} }
impl Mapper for Nrom { impl Mapper for Nrom {
fn read(&mut self, address: usize) -> u8 { fn read(&self, address: usize) -> u8 {
let addr = address % 0x4000; let addr = address % 0x4000;
match address { match address {
0x0000..=0x1FFF => { 0x0000..=0x1FFF => {

View File

@ -17,7 +17,7 @@ impl Uxrom {
} }
impl Mapper for Uxrom { impl Mapper for Uxrom {
fn read(&mut self, address: usize) -> u8 { fn read(&self, address: usize) -> u8 {
match address { match address {
0x0000..=0x1FFF => { 0x0000..=0x1FFF => {
if self.cart.chr_rom_size > 0 { if self.cart.chr_rom_size > 0 {

View File

@ -189,7 +189,7 @@ impl Cpu {
0x4016 => self.read_controller(), 0x4016 => self.read_controller(),
0x4000..=0x4017 => 0, // can't read from these APU registers 0x4000..=0x4017 => 0, // can't read from these APU registers
0x4018..=0x401F => 0, // APU and I/O functionality that is normally disabled. See CPU Test Mode. 0x4018..=0x401F => 0, // APU and I/O functionality that is normally disabled. See CPU Test Mode.
0x4020..=0xFFFF => self.mapper.borrow_mut().read(address), 0x4020..=0xFFFF => self.mapper.borrow().read(address),
_ => panic!("invalid read from 0x{:02x}", address), _ => panic!("invalid read from 0x{:02x}", address),
}; };
val val

View File

@ -4,7 +4,7 @@ impl super::Ppu {
pub fn read(&mut self, address: usize) -> u8 { pub fn read(&mut self, address: usize) -> u8 {
match address { match address {
0x0000..=0x1FFF => self.mapper.borrow_mut().read(address), 0x0000..=0x1FFF => self.mapper.borrow().read(address),
0x2000..=0x3EFF => self.read_nametable(address), 0x2000..=0x3EFF => self.read_nametable(address),
0x3F00..=0x3FFF => { 0x3F00..=0x3FFF => {
let a = address % 0x0020; let a = address % 0x0020;