1 //Memory
2 
size() const3 unsigned Memory::size() const { return 0; }
4 
5 //StaticRAM
6 
data()7 uint8* StaticRAM::data() { return data_; }
size() const8 unsigned StaticRAM::size() const { return size_; }
9 
read(unsigned addr)10 uint8 StaticRAM::read(unsigned addr) { return data_[addr]; }
write(unsigned addr,uint8 n)11 void StaticRAM::write(unsigned addr, uint8 n) { data_[addr] = n; }
operator [](unsigned addr)12 uint8& StaticRAM::operator[](unsigned addr) { return data_[addr]; }
operator [](unsigned addr) const13 const uint8& StaticRAM::operator[](unsigned addr) const { return data_[addr]; }
14 
StaticRAM(unsigned n)15 StaticRAM::StaticRAM(unsigned n) : size_(n) { data_ = new uint8[size_]; }
~StaticRAM()16 StaticRAM::~StaticRAM() { delete[] data_; }
17 
18 //MappedRAM
19 
reset()20 void MappedRAM::reset() {
21   if(data_) {
22     delete[] data_;
23     data_ = 0;
24   }
25   size_ = -1U;
26   write_protect_ = false;
27 }
28 
map(uint8 * source,unsigned length)29 void MappedRAM::map(uint8 *source, unsigned length) {
30   reset();
31   data_ = source;
32   size_ = data_ && length > 0 ? length : -1U;
33 }
34 
copy(uint8 * data,unsigned size)35 void MappedRAM::copy(uint8 *data, unsigned size) {
36   if(!data_) {
37     size_ = (size & ~255) + ((bool)(size & 255) << 8);
38     data_ = new uint8[size_]();
39   }
40   memcpy(data_, data, min(size_, size));
41 }
42 
write_protect(bool status)43 void MappedRAM::write_protect(bool status) { write_protect_ = status; }
data()44 uint8* MappedRAM::data() { return data_; }
size() const45 unsigned MappedRAM::size() const { return size_; }
46 
read(unsigned addr)47 uint8 MappedRAM::read(unsigned addr) { return data_[addr]; }
write(unsigned addr,uint8 n)48 void MappedRAM::write(unsigned addr, uint8 n) { if(!write_protect_) data_[addr] = n; }
operator [](unsigned addr) const49 const uint8 MappedRAM::operator[](unsigned addr) const { return data_[addr]; }
MappedRAM()50 MappedRAM::MappedRAM() : data_(0), size_(-1U), write_protect_(false) {}
51 
52 //Bus
53 
read(unsigned addr)54 uint8 Bus::read(unsigned addr) {
55   #if defined(CHEAT_SYSTEM)
56   if(cheat.active() && cheat.exists(addr)) {
57     uint8 r;
58     if(cheat.read(addr, r)) return r;
59   }
60   #endif
61 
62   Page &p = page[addr >> 8];
63   return p.access->read(p.offset + addr);
64 }
65 
write(unsigned addr,uint8 data)66 void Bus::write(unsigned addr, uint8 data) {
67   Page &p = page[addr >> 8];
68   return p.access->write(p.offset + addr, data);
69 }
70 
load_cart()71 bool Bus::load_cart() { return false; }
unload_cart()72 void Bus::unload_cart() {}
73 
power()74 void Bus::power() {}
reset()75 void Bus::reset() {}
76