Path: blob/master/libsnes/bsnes/gameboy/memory/memory.cpp
2 views
#include <gameboy/gameboy.hpp>12#define MEMORY_CPP3namespace GameBoy {45Unmapped unmapped;6Bus bus;78uint8_t& Memory::operator[](unsigned addr) {9return data[addr];10}1112void Memory::allocate(unsigned size_) {13free();14size = size_;15data = new uint8_t[size]();16}1718void Memory::copy(const uint8_t *data_, unsigned size_) {19free();20size = size_;21data = new uint8_t[size];22memcpy(data, data_, size);23}2425void Memory::free() {26if(data) {27delete[] data;28data = 0;29}30}3132Memory::Memory() {33data = 0;34size = 0;35}3637Memory::~Memory() {38free();39}4041//4243uint8 Bus::read(uint16 addr) {44uint8 data = mmio[addr]->mmio_read(addr);4546if(cheat.override[addr]) {47for(unsigned n = 0; n < cheat.size(); n++) {48if(cheat[n].addr == addr) {49if(cheat[n].comp > 255 || cheat[n].comp == data) {50data = cheat[n].data;51break;52}53}54}55}5657return data;58}5960void Bus::write(uint16 addr, uint8 data) {61mmio[addr]->mmio_write(addr, data);62}6364void Bus::power() {65for(unsigned n = 0x0000; n <= 0xffff; n++) mmio[n] = &unmapped;66}6768}697071