aboutsummaryrefslogtreecommitdiff
path: root/src/cartridge.rs
diff options
context:
space:
mode:
authorDeterminant <[email protected]>2017-11-17 15:00:24 -0500
committerDeterminant <[email protected]>2017-11-17 15:00:24 -0500
commit2f4262c1273108abfcce00e897c520f5a7f4be41 (patch)
tree0915021d63092913de7cc88fe39088f936a4126d /src/cartridge.rs
parente2ccf6053d58a2a478814f4a26018989f6fa0f26 (diff)
rearrange the proj
Diffstat (limited to 'src/cartridge.rs')
-rw-r--r--src/cartridge.rs32
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;
}