From d6192e94a8843d911bcbd8b20c385225e32eb496 Mon Sep 17 00:00:00 2001 From: Determinant Date: Fri, 17 Nov 2017 12:04:04 -0500 Subject: adjust abstraction and mutability --- src/cartridge.rs | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) (limited to 'src/cartridge.rs') diff --git a/src/cartridge.rs b/src/cartridge.rs index b8d2b68..0d21a42 100644 --- a/src/cartridge.rs +++ b/src/cartridge.rs @@ -1,5 +1,4 @@ #![allow(dead_code)] -use core::cell::RefCell; #[derive(Copy, Clone)] pub enum MirrorType { @@ -17,33 +16,31 @@ pub enum BankType { } pub struct Cartridge { - chr_rom: RefCell>, - prg_rom: RefCell>, - sram: RefCell>, + chr_rom: Vec, + prg_rom: Vec, + sram: Vec, pub mirror_type: MirrorType } impl Cartridge { pub fn get_size(&self, kind: BankType) -> usize { match kind { - BankType::PrgRom => self.prg_rom.borrow().len(), - BankType::ChrRom => self.chr_rom.borrow().len(), - BankType::Sram => self.sram.borrow().len() + BankType::PrgRom => self.prg_rom.len(), + BankType::ChrRom => self.chr_rom.len(), + BankType::Sram => self.sram.len() } } - pub fn get_bank(&self, base: usize, size: usize, kind: BankType) -> *mut [u8] { + pub fn get_bank(&mut self, base: usize, size: usize, kind: BankType) -> *mut [u8] { &mut (match kind { - BankType::PrgRom => self.prg_rom.borrow_mut(), - BankType::ChrRom => self.chr_rom.borrow_mut(), - BankType::Sram => self.sram.borrow_mut(), + BankType::PrgRom => &mut self.prg_rom, + BankType::ChrRom => &mut self.chr_rom, + BankType::Sram => &mut self.sram, })[base..base + size] } pub fn new(chr_rom: Vec, prg_rom: Vec, sram: Vec, mirror_type: MirrorType) -> Self { - Cartridge{chr_rom: RefCell::new(chr_rom), - prg_rom: RefCell::new(prg_rom), - sram: RefCell::new(sram), mirror_type} + Cartridge{chr_rom, prg_rom, sram, mirror_type} } } -- cgit v1.2.3-70-g09d2