Mesen-S/Core/GbCart.h
2020-05-19 21:31:33 -04:00

61 lines
1.2 KiB
C++

#pragma once
#include "stdafx.h"
#include "Gameboy.h"
#include "GbMemoryManager.h"
#include "MessageManager.h"
#include "../Utilities/HexUtilities.h"
#include "../Utilities/ISerializable.h"
class GbCart : public ISerializable
{
protected:
Gameboy* _gameboy = nullptr;
GbMemoryManager* _memoryManager = nullptr;
uint8_t* _cartRam = nullptr;
void Map(uint16_t start, uint16_t end, GbMemoryType type, uint32_t offset, bool readonly)
{
_memoryManager->Map(start, end, type, offset, readonly);
}
void Unmap(uint16_t start, uint16_t end)
{
_memoryManager->Unmap(start, end);
}
public:
virtual ~GbCart()
{
}
void Init(Gameboy* gameboy, GbMemoryManager* memoryManager)
{
_gameboy = gameboy;
_memoryManager = memoryManager;
_cartRam = gameboy->DebugGetMemory(SnesMemoryType::GbCartRam);
}
virtual void InitCart()
{
}
virtual void RefreshMappings()
{
Map(0x0000, 0x7FFF, GbMemoryType::PrgRom, 0, true);
}
virtual uint8_t ReadRegister(uint16_t addr)
{
LogDebug("[Debug] GB - Missing read handler: $" + HexUtilities::ToHex(addr));
return 0;
}
virtual void WriteRegister(uint16_t addr, uint8_t value)
{
}
void Serialize(Serializer& s) override
{
}
};