Path: blob/master/libsnes/bsnes/snes/memory/memory-inline.hpp
2 views
//Memory12unsigned Memory::size() const { return 0; }34//StaticRAM56uint8* StaticRAM::data() { return data_; }7unsigned StaticRAM::size() const { return size_; }89uint8 StaticRAM::read(unsigned addr) { return data_[addr]; }10void StaticRAM::write(unsigned addr, uint8 n) { data_[addr] = n; }11uint8& StaticRAM::operator[](unsigned addr) { return data_[addr]; }12const uint8& StaticRAM::operator[](unsigned addr) const { return data_[addr]; }1314StaticRAM::StaticRAM(unsigned n) : size_(n) { data_ = new uint8[size_]; }15StaticRAM::~StaticRAM() { delete[] data_; }1617//MappedRAM1819void MappedRAM::reset() {20if(data_) {21if(name_) interface()->freeSharedMemory(data_);22else free(data_);23data_ = 0;24}25size_ = 0;26write_protect_ = false;27}2829void MappedRAM::map(uint8 *source, unsigned length) {30reset();31data_ = source;32size_ = data_ ? length : 0;33}3435void MappedRAM::copy(const uint8 *data, unsigned size) {36if(!data_) {37size_ = (size & ~255) + ((bool)(size & 255) << 8);38if(name_) data_ = (uint8*)interface()->allocSharedMemory(name_, size_);39else data_ = new uint8[size_]();40}41memcpy(data_, data, min(size_, size));42}4344void MappedRAM::write_protect(bool status) { write_protect_ = status; }45uint8* MappedRAM::data() { return data_; }46unsigned MappedRAM::size() const { return size_; }4748uint8 MappedRAM::read(unsigned addr) { return data_[addr]; }49void MappedRAM::write(unsigned addr, uint8 n) { if(!write_protect_) data_[addr] = n; }50const uint8& MappedRAM::operator[](unsigned addr) const { return data_[addr]; }51MappedRAM::MappedRAM(const char* name) : data_(0), size_(0), write_protect_(false), name_(name) {}5253//Bus5455uint8 Bus::read(unsigned addr) {56if(cheat.override[addr]) return cheat.read(addr);57return reader[lookup[addr]](target[addr]);58}5960void Bus::write(unsigned addr, uint8 data) {61return writer[lookup[addr]](target[addr], data);62}636465