Move MBC implementations into cartridge subfolder

This commit is contained in:
madmaurice 2023-09-05 21:32:42 +02:00
parent 89fc62b312
commit 2762b3aa8b
4 changed files with 3 additions and 3 deletions
memory/mbc

View file

@ -1,39 +0,0 @@
#include <memory/mbc/mbc1.h>
#include <misc/exception.h>
MBC1::MBC1(Cartridge& cart)
: cart(cart),
main_bankreg(0),
external_ram(0x8000)
{}
u8 MBC1::read8(u16 addr)
{
if((addr & 0xC000) == 0x0000)
return cart[addr];
else if((addr & 0xC000) == 0x4000)
{
u8 bank = main_bankreg ? main_bankreg : 1;
u8 numbanks = cart.size() >> 14;
return cart[(bank % numbanks) << 14 | (addr - 0x4000)];
}
else if((addr & 0xE000) == 0xA000)
{
if(!ram_enabled) return 0xFF;
return external_ram.read8(ram_bankreg << 13 | (addr - 0xA000));
}
else
return 0xFF;
}
void MBC1::write8(u16 addr, u8 data)
{
if((addr & 0xE000) == 0x0000)
ram_enabled = ((data & 0x0F) == 0x0A);
else if((addr & 0xE000) == 0x2000)
main_bankreg = data & 0x1F;
else if((addr & 0xE000) == 0x4000)
ram_bankreg = data & 0x03;
else if((addr & 0xE000) == 0x6000)
throw EmulatorException("MBC1: banking mode not supported");
}

View file

@ -1,22 +0,0 @@
#pragma once
#include <memory/device.h>
#include <memory/ram.h>
#include <cartridge/cartridge.h>
class MBC1 : public Mem_device {
private:
Cartridge& cart;
u8 main_bankreg;
u8 ram_bankreg;
bool ram_enabled;
RAM external_ram;
public:
MBC1(Cartridge& cart);
virtual void write8(u16 addr, u8 data);
virtual u8 read8(u16 addr);
};