Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/libsnes/bsnes/gameboy/memory/memory.cpp
2 views
1
#include <gameboy/gameboy.hpp>
2
3
#define MEMORY_CPP
4
namespace GameBoy {
5
6
Unmapped unmapped;
7
Bus bus;
8
9
uint8_t& Memory::operator[](unsigned addr) {
10
return data[addr];
11
}
12
13
void Memory::allocate(unsigned size_) {
14
free();
15
size = size_;
16
data = new uint8_t[size]();
17
}
18
19
void Memory::copy(const uint8_t *data_, unsigned size_) {
20
free();
21
size = size_;
22
data = new uint8_t[size];
23
memcpy(data, data_, size);
24
}
25
26
void Memory::free() {
27
if(data) {
28
delete[] data;
29
data = 0;
30
}
31
}
32
33
Memory::Memory() {
34
data = 0;
35
size = 0;
36
}
37
38
Memory::~Memory() {
39
free();
40
}
41
42
//
43
44
uint8 Bus::read(uint16 addr) {
45
uint8 data = mmio[addr]->mmio_read(addr);
46
47
if(cheat.override[addr]) {
48
for(unsigned n = 0; n < cheat.size(); n++) {
49
if(cheat[n].addr == addr) {
50
if(cheat[n].comp > 255 || cheat[n].comp == data) {
51
data = cheat[n].data;
52
break;
53
}
54
}
55
}
56
}
57
58
return data;
59
}
60
61
void Bus::write(uint16 addr, uint8 data) {
62
mmio[addr]->mmio_write(addr, data);
63
}
64
65
void Bus::power() {
66
for(unsigned n = 0x0000; n <= 0xffff; n++) mmio[n] = &unmapped;
67
}
68
69
}
70
71