MBC2 working

This commit is contained in:
2026-03-16 02:50:02 -07:00
parent 3bd1ef34d8
commit 89e7891249
2 changed files with 25 additions and 4 deletions

View File

@@ -64,6 +64,14 @@ Byte *AddressSpace::MBCRead(const Word address) {
if (address <= 0x7FFF)
return &romRamSelect;
}
if (MBC == MBC2 || MBC == MBC2Battery) {
if (address <= 0x3FFF) {
if (address & 0x0100)
return &romBankRegister;
else
return &ramEnable;
}
}
return &dummyVal;
}
@@ -93,8 +101,7 @@ void AddressSpace::MBCUpdate() {
loadRomBank();
loadRamBank();
}
if (MBC == MBC1Ram || MBC == MBC1RamBattery) {
} else if (MBC == MBC1Ram || MBC == MBC1RamBattery) {
// Selected ROM Bank = (Secondary Bank << 5) + ROM Bank
romBankRegister &= 0b11111;
twoBitBankRegister &= 0b11;
@@ -119,7 +126,9 @@ void AddressSpace::MBCUpdate() {
loadRomBank();
loadRamBank();
} else if (MBC == MBC2 || MBC == MBC2Battery) {
// TODO
selectedRomBank = romBankRegister & 0x0F;
loadRomBank();
loadRamBank();
} else if (MBC == MBC3 || MBC == MBC3TimerBattery) {
romBankRegister &= 0b11111;
twoBitBankRegister &= 0b11;
@@ -168,7 +177,8 @@ void AddressSpace::createRamBank() {
}
void AddressSpace::loadRamBank() {
if (cartridgeRam != nullptr)
if (cartridgeRam != nullptr) {
memoryLayout.externalRam =
cartridgeRam + (RAM_BANK_SIZE * selectedExternalRamBank);
}
}