fix(cartridge): fix bug preventing MBC1 from working
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
18b790a777
commit
48e81ff426
|
@ -137,7 +137,7 @@ impl BusIo for Cartridge {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Default)]
|
#[derive(Debug, Clone)]
|
||||||
struct Mbc1 {
|
struct Mbc1 {
|
||||||
/// 5-bit number
|
/// 5-bit number
|
||||||
rom_bank: u8,
|
rom_bank: u8,
|
||||||
|
@ -150,6 +150,20 @@ struct Mbc1 {
|
||||||
ram_enabled: bool,
|
ram_enabled: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Default for Mbc1 {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self {
|
||||||
|
rom_bank: 0x01,
|
||||||
|
ram_bank: Default::default(),
|
||||||
|
mode: Default::default(),
|
||||||
|
ram_size: Default::default(),
|
||||||
|
ram: Default::default(),
|
||||||
|
bank_count: Default::default(),
|
||||||
|
ram_enabled: Default::default(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Mbc1 {
|
impl Mbc1 {
|
||||||
fn zero_bank(&self) -> u8 {
|
fn zero_bank(&self) -> u8 {
|
||||||
use BankCount::*;
|
use BankCount::*;
|
||||||
|
@ -223,13 +237,13 @@ impl MemoryBankController for Mbc1 {
|
||||||
match addr {
|
match addr {
|
||||||
0x0000..=0x3FFF => {
|
0x0000..=0x3FFF => {
|
||||||
if self.mode {
|
if self.mode {
|
||||||
Address((0x4000 * self.zero_bank() as usize) + addr as usize)
|
Address(0x4000 * self.zero_bank() as usize + addr as usize)
|
||||||
} else {
|
} else {
|
||||||
Address(addr as usize)
|
Address(addr as usize)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
0x4000..=0x7FFF => {
|
0x4000..=0x7FFF => {
|
||||||
Address((0x4000 * self.high_bank() as usize) + (addr as usize - 0x4000))
|
Address(0x4000 * self.high_bank() as usize + (addr as usize - 0x4000))
|
||||||
}
|
}
|
||||||
0xA000..=0xBFFF => {
|
0xA000..=0xBFFF => {
|
||||||
if self.ram_enabled {
|
if self.ram_enabled {
|
||||||
|
|
Loading…
Reference in New Issue