This commit is contained in:
Theron 2020-01-20 18:31:08 -06:00
parent 3a5495d93b
commit a03bd6a6c2
2 changed files with 23 additions and 22 deletions

View File

@ -16,14 +16,13 @@ impl Cnrom {
impl Mapper for Cnrom { impl Mapper for Cnrom {
fn read(&mut self, address: usize) -> u8 { fn read(&mut self, address: usize) -> u8 {
let cl = self.cart.chr_rom.len();
let pl = self.cart.prg_rom.len(); let pl = self.cart.prg_rom.len();
let addr = address % 0x4000; let addr = address % 0x4000;
match address { match address {
0x0000..=0x1FFF => self.cart.chr_rom[self.chr_bank_select][address], 0x0000..=0x1FFF => self.cart.chr_rom[self.chr_bank_select][address],
0x8000..=0xBFFF => self.cart.prg_rom[0][addr], 0x8000..=0xBFFF => self.cart.prg_rom[0][addr],
0xC000..=0xFFFF => self.cart.prg_rom[pl-1][addr], 0xC000..=0xFFFF => self.cart.prg_rom[pl-1][addr],
_ => panic!("bad address read from CNROM mapper: 0x{:X}", address), _ => {println!("bad address read from CNROM mapper: 0x{:X}", address); 0},
} }
} }

View File

@ -180,30 +180,32 @@ impl Mapper for Mmc1 {
} }
fn load_battery_backed_ram(&mut self) { fn load_battery_backed_ram(&mut self) {
// check for filename, if not there make it if self.cart.battery_backed_ram {
// println!("{}", self.cart.filename); let p = Path::new(&self.cart.filename).parent().unwrap();
let p = Path::new(&self.cart.filename).parent().unwrap(); let stem = Path::new(&self.cart.filename).file_stem().unwrap();
let stem = Path::new(&self.cart.filename).file_stem().unwrap(); let mut save_file = p.join(stem);
let mut save_file = p.join(stem); save_file.set_extension("sav");
save_file.set_extension("sav"); if Path::new(&save_file).exists() {
if Path::new(&save_file).exists() { let mut f = File::open(save_file.clone()).expect("save file exists but could not open it");
let mut f = File::open(save_file.clone()).expect("save file exists but could not open it"); let mut battery_backed_ram_data = vec![];
let mut battery_backed_ram_data = vec![]; f.read_to_end(&mut battery_backed_ram_data).expect("error reading save file");
f.read_to_end(&mut battery_backed_ram_data).expect("error reading save file"); println!("loading battery-backed RAM from file: {:?}", save_file);
println!("loading battery-backed RAM from file: {:?}", save_file); self.prg_ram_bank = battery_backed_ram_data;
self.prg_ram_bank = battery_backed_ram_data; }
} }
} }
fn save_battery_backed_ram(&self) { fn save_battery_backed_ram(&self) {
let p = Path::new(&self.cart.filename).parent().unwrap(); if self.cart.battery_backed_ram {
let stem = Path::new(&self.cart.filename).file_stem().unwrap(); let p = Path::new(&self.cart.filename).parent().unwrap();
let mut save_file = p.join(stem); let stem = Path::new(&self.cart.filename).file_stem().unwrap();
save_file.set_extension("sav"); let mut save_file = p.join(stem);
println!("saving battery-backed RAM to file: {:?}", save_file); save_file.set_extension("sav");
let mut f = File::create(&save_file) println!("saving battery-backed RAM to file: {:?}", save_file);
.expect("could not create output file for battery-backed RAM"); let mut f = File::create(&save_file)
f.write_all(&self.prg_ram_bank).expect("could not write battery-backed RAM to file"); .expect("could not create output file for battery-backed RAM");
f.write_all(&self.prg_ram_bank).expect("could not write battery-backed RAM to file");
}
} }
fn clock(&mut self) {} fn clock(&mut self) {}