Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/libsnes/bsnes/snes/memory/memory-inline.hpp
2 views
1
//Memory
2
3
unsigned Memory::size() const { return 0; }
4
5
//StaticRAM
6
7
uint8* StaticRAM::data() { return data_; }
8
unsigned StaticRAM::size() const { return size_; }
9
10
uint8 StaticRAM::read(unsigned addr) { return data_[addr]; }
11
void StaticRAM::write(unsigned addr, uint8 n) { data_[addr] = n; }
12
uint8& StaticRAM::operator[](unsigned addr) { return data_[addr]; }
13
const uint8& StaticRAM::operator[](unsigned addr) const { return data_[addr]; }
14
15
StaticRAM::StaticRAM(unsigned n) : size_(n) { data_ = new uint8[size_]; }
16
StaticRAM::~StaticRAM() { delete[] data_; }
17
18
//MappedRAM
19
20
void MappedRAM::reset() {
21
if(data_) {
22
if(name_) interface()->freeSharedMemory(data_);
23
else free(data_);
24
data_ = 0;
25
}
26
size_ = 0;
27
write_protect_ = false;
28
}
29
30
void MappedRAM::map(uint8 *source, unsigned length) {
31
reset();
32
data_ = source;
33
size_ = data_ ? length : 0;
34
}
35
36
void MappedRAM::copy(const uint8 *data, unsigned size) {
37
if(!data_) {
38
size_ = (size & ~255) + ((bool)(size & 255) << 8);
39
if(name_) data_ = (uint8*)interface()->allocSharedMemory(name_, size_);
40
else data_ = new uint8[size_]();
41
}
42
memcpy(data_, data, min(size_, size));
43
}
44
45
void MappedRAM::write_protect(bool status) { write_protect_ = status; }
46
uint8* MappedRAM::data() { return data_; }
47
unsigned MappedRAM::size() const { return size_; }
48
49
uint8 MappedRAM::read(unsigned addr) { return data_[addr]; }
50
void MappedRAM::write(unsigned addr, uint8 n) { if(!write_protect_) data_[addr] = n; }
51
const uint8& MappedRAM::operator[](unsigned addr) const { return data_[addr]; }
52
MappedRAM::MappedRAM(const char* name) : data_(0), size_(0), write_protect_(false), name_(name) {}
53
54
//Bus
55
56
uint8 Bus::read(unsigned addr) {
57
if(cheat.override[addr]) return cheat.read(addr);
58
return reader[lookup[addr]](target[addr]);
59
}
60
61
void Bus::write(unsigned addr, uint8 data) {
62
return writer[lookup[addr]](target[addr], data);
63
}
64
65