From 186d6fa23b66083803614eb3eb67a403490ae489 Mon Sep 17 00:00:00 2001 From: Franco Colmenarez Date: Fri, 19 Nov 2021 12:46:14 -0500 Subject: [PATCH] fix ram banking mbc1 --- src/rom.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/rom.rs b/src/rom.rs index e399304..5e70abf 100644 --- a/src/rom.rs +++ b/src/rom.rs @@ -257,7 +257,7 @@ impl MBC1 { println!("ROM banks {}", info.rom_banks); println!("RAM banks {}", info.ram_banks); let ram = vec![0; info.ram_size() as usize]; - let is_large_rom = info.rom_size() >= 1048576; + let is_large_rom = info.rom_banks > 32; Self { data, info, @@ -278,12 +278,13 @@ impl MBC1 { if self.rom_bank > self.info.rom_banks.saturating_sub(1) { self.rom_bank = self.info.rom_banks.saturating_sub(1); } - //println!("switched to ROM bank {}", self.rom_bank); } fn switch_ram_bank(&mut self, bank: u8) { self.ram_bank = bank & 0b11; - // println!("switched to RAM bank {}", self.ram_bank); + if self.ram_bank > self.info.ram_banks.saturating_sub(1) { + self.ram_bank = self.info.ram_banks.saturating_sub(1); + } } fn get_bank_zero_address(&self, address: u16) -> usize { @@ -292,9 +293,7 @@ impl MBC1 { } match self.banking_mode { BankingMode::Simple => address as usize, - BankingMode::Advanced => { - ((self.ram_bank as usize) << 5) * ((address & 0x3FFF) as usize) - }, + BankingMode::Advanced => ((self.ram_bank as usize) << 5) * ((address & 0x3FFF) as usize), } }