diff options
author | Determinant <[email protected]> | 2017-11-17 15:00:24 -0500 |
---|---|---|
committer | Determinant <[email protected]> | 2017-11-17 15:00:24 -0500 |
commit | 2f4262c1273108abfcce00e897c520f5a7f4be41 (patch) | |
tree | 0915021d63092913de7cc88fe39088f936a4126d /src/cartridge.rs | |
parent | e2ccf6053d58a2a478814f4a26018989f6fa0f26 (diff) |
rearrange the proj
Diffstat (limited to 'src/cartridge.rs')
-rw-r--r-- | src/cartridge.rs | 32 |
1 files changed, 4 insertions, 28 deletions
diff --git a/src/cartridge.rs b/src/cartridge.rs index 0d21a42..524ef12 100644 --- a/src/cartridge.rs +++ b/src/cartridge.rs @@ -15,32 +15,8 @@ pub enum BankType { Sram, /* save ram */ } -pub struct Cartridge { - chr_rom: Vec<u8>, - prg_rom: Vec<u8>, - sram: Vec<u8>, - pub mirror_type: MirrorType -} - -impl Cartridge { - pub fn get_size(&self, kind: BankType) -> usize { - match kind { - BankType::PrgRom => self.prg_rom.len(), - BankType::ChrRom => self.chr_rom.len(), - BankType::Sram => self.sram.len() - } - } - pub fn get_bank(&mut self, base: usize, size: usize, kind: BankType) -> *mut [u8] { - &mut (match kind { - 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<u8>, - prg_rom: Vec<u8>, - sram: Vec<u8>, - mirror_type: MirrorType) -> Self { - Cartridge{chr_rom, prg_rom, sram, mirror_type} - } +pub trait Cartridge { + fn get_size(&self, kind: BankType) -> usize; + fn get_bank(&mut self, base: usize, size: usize, kind: BankType) -> *mut [u8]; + fn get_mirror_type(&self) -> MirrorType; } |