Move MBC implementations into cartridge subfolder
This commit is contained in:
parent
89fc62b312
commit
2762b3aa8b
4 changed files with 3 additions and 3 deletions
|
@ -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");
|
||||
}
|
|
@ -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);
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue