Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/libsnes/bsnes/snes/chip/necdsp/memory.cpp
2 views
1
#ifdef NECDSP_CPP
2
3
uint8 NECDSP::sr_read(unsigned) {
4
cpu.synchronize_coprocessors();
5
return regs.sr >> 8;
6
}
7
8
void NECDSP::sr_write(unsigned, uint8 data) {
9
cpu.synchronize_coprocessors();
10
}
11
12
uint8 NECDSP::dr_read(unsigned) {
13
cpu.synchronize_coprocessors();
14
if(regs.sr.drc == 0) {
15
//16-bit
16
if(regs.sr.drs == 0) {
17
regs.sr.drs = 1;
18
return regs.dr >> 0;
19
} else {
20
regs.sr.rqm = 0;
21
regs.sr.drs = 0;
22
return regs.dr >> 8;
23
}
24
} else {
25
//8-bit
26
regs.sr.rqm = 0;
27
return regs.dr >> 0;
28
}
29
}
30
31
void NECDSP::dr_write(unsigned, uint8 data) {
32
cpu.synchronize_coprocessors();
33
if(regs.sr.drc == 0) {
34
//16-bit
35
if(regs.sr.drs == 0) {
36
regs.sr.drs = 1;
37
regs.dr = (regs.dr & 0xff00) | (data << 0);
38
} else {
39
regs.sr.rqm = 0;
40
regs.sr.drs = 0;
41
regs.dr = (data << 8) | (regs.dr & 0x00ff);
42
}
43
} else {
44
//8-bit
45
regs.sr.rqm = 0;
46
regs.dr = (regs.dr & 0xff00) | (data << 0);
47
}
48
}
49
50
uint8 NECDSP::dp_read(unsigned addr) {
51
cpu.synchronize_coprocessors();
52
bool hi = addr & 1;
53
addr = (addr >> 1) & 2047;
54
55
if(hi == false) {
56
return dataRAM[addr] >> 0;
57
} else {
58
return dataRAM[addr] >> 8;
59
}
60
}
61
62
void NECDSP::dp_write(unsigned addr, uint8 data) {
63
cpu.synchronize_coprocessors();
64
bool hi = addr & 1;
65
addr = (addr >> 1) & 2047;
66
67
if(hi == false) {
68
dataRAM[addr] = (dataRAM[addr] & 0xff00) | (data << 0);
69
} else {
70
dataRAM[addr] = (dataRAM[addr] & 0x00ff) | (data << 8);
71
}
72
}
73
74
#endif
75
76