#![allow(dead_code)] use utils::{Read, Write}; #[derive(Copy, Clone)] pub enum MirrorType { Horizontal = 0, Vertical = 1, Single0 = 2, Single1 = 3, Four = 4 } pub enum BankType { PrgRom, /* program rom */ ChrRom, /* pattern rom */ Sram, /* save ram */ } pub trait Cartridge { fn get_size(&self, kind: BankType) -> usize; fn get_bank<'a>(&self, base: usize, size: usize, kind: BankType) -> &'a [u8]; fn get_bank_mut<'a>(&mut self, base: usize, size: usize, kind: BankType) -> &'a mut [u8]; #[inline(always)] fn get_mirror_type(&self) -> MirrorType; #[inline(always)] fn set_mirror_type(&mut self, mt: MirrorType); fn load(&mut self, reader: &mut Read) -> bool; fn save(&self, writer: &mut Write) -> bool; fn load_sram(&mut self, reader: &mut Read) -> bool; fn save_sram(&self, writer: &mut Write) -> bool; }