2021-07-12 02:54:24 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "util.hpp"
|
|
|
|
|
2021-07-12 03:26:38 +00:00
|
|
|
// The memory bank controller (MBC) needs to map addresses targeted at rom, to get the appropriate data from the ROM
|
2021-07-12 02:54:24 +00:00
|
|
|
class IMBC
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
IMBC(WORD romBanks, WORD ramBanks, WORD ramSize) :
|
|
|
|
romBanks(romBanks), ramBanks(ramBanks), ramSize(ramSize)
|
|
|
|
{ }
|
|
|
|
|
|
|
|
virtual ~IMBC() {}
|
|
|
|
|
2021-07-12 03:26:38 +00:00
|
|
|
virtual bool GetMappedRead(WORD address, DWORD& mappedAddr) = 0; // Convert CPU address to ROM internal address
|
2021-07-12 02:54:24 +00:00
|
|
|
virtual bool GetMappedWrite(WORD address, BYTE val, DWORD& mappedAddr) = 0;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
WORD romBanks, ramBanks, ramSize;
|
|
|
|
};
|