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