gb::MMU class

Memory interface.

Contents

Public types

using Ptr = std::unique_ptr<MMU>
Smart pointer type.

Public functions

auto read(uint16_t) const -> uint8_t
void write(uint8_t value, uint16_t addr)
void write(uint16_t value, uint16_t addr)
void dma(uint16_t dest, uint16_t src, uint16_t n)
void addWriteHandler(uint16_t addr, MemoryWriteHandler handler)
void addReadHandler(uint16_t addr, MemoryReadHandler handler)
auto getBatteryRam() const -> std::vector<uint8_t>
void setBatteryRam(const std::vector<uint8_t>& battery_ram)
void setTimeProvider(const TimeProvider provider)
auto getOamTransferStatus() const -> bool
auto cgbEnabled() const -> bool
auto get(uint16_t) -> uint8_t&
auto getptr(uint16_t) -> uint8_t*
auto resolveAddress(const uint16_t& addr) const -> int
auto getVirtualMemorySize() const -> std::size_t

Function documentation

uint8_t gb::MMU::read(uint16_t) const

Returns the value of memory at the psecified location

void gb::MMU::write(uint8_t value, uint16_t addr)

Write a byte to the specified location

void gb::MMU::write(uint16_t value, uint16_t addr)

Write a word to the specified location

void gb::MMU::dma(uint16_t dest, uint16_t src, uint16_t n)

tranfer n bytes from src to dest

void gb::MMU::addWriteHandler(uint16_t addr, MemoryWriteHandler handler)

Parameters
addr IO address the handler
handler

Add a IO write handler

void gb::MMU::addReadHandler(uint16_t addr, MemoryReadHandler handler)

Parameters
addr IO address
handler the handler

Add an IO read handler

std::vector<uint8_t> gb::MMU::getBatteryRam() const

Returns Battery RAM

void gb::MMU::setBatteryRam(const std::vector<uint8_t>& battery_ram)

Set battery RAM

void gb::MMU::setTimeProvider(const TimeProvider provider)

Set the time to be read from the RTC register (MBC3)

bool gb::MMU::getOamTransferStatus() const

Check if OAM transfer has occured

bool gb::MMU::cgbEnabled() const

Returns true if rom is CGB compatible

uint8_t& gb::MMU::get(uint16_t)

Returns a reference to a memory location

uint8_t* gb::MMU::getptr(uint16_t)

Returns point to memory location

int gb::MMU::resolveAddress(const uint16_t& addr) const

Get the virtual memory location from the logical address

std::size_t gb::MMU::getVirtualMemorySize() const

Get size of virtual memory