use super::{Mapper, MappingResult};
use save_state::Savable;
#[derive(Default, Savable)]
pub struct NoMapper {
ram_size: usize,
}
impl Mapper for NoMapper {
fn init(&mut self, rom_banks: u16, ram_size: usize) {
assert!(rom_banks == 2);
assert!(ram_size <= 0x2000);
self.ram_size = ram_size;
}
fn map_read_rom0(&self, addr: u16) -> usize {
addr as usize
}
fn map_read_romx(&self, addr: u16) -> usize {
addr as usize
}
fn map_ram_read(&mut self, addr: u16) -> MappingResult {
if self.ram_size == 0 {
MappingResult::NotMapped
} else {
MappingResult::Addr((addr as usize) & (self.ram_size - 1))
}
}
fn map_ram_write(&mut self, addr: u16, _data: u8) -> MappingResult {
self.map_ram_read(addr)
}
save_state_fns!();
}