Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/libsnes/bsnes/snes/chip/necdsp/registers.hpp
2 views
1
struct Flag {
2
bool s1, s0, c, z, ov1, ov0;
3
4
inline operator unsigned() const {
5
return (s1 << 5) + (s0 << 4) + (c << 3) + (z << 2) + (ov1 << 1) + (ov0 << 0);
6
}
7
8
inline unsigned operator=(unsigned d) {
9
s1 = d & 0x20; s0 = d & 0x10; c = d & 0x08; z = d & 0x04; ov1 = d & 0x02; ov0 = d & 0x01;
10
return d;
11
}
12
};
13
14
struct Status {
15
bool rqm, usf1, usf0, drs, dma, drc, soc, sic, ei, p1, p0;
16
17
inline operator unsigned() const {
18
return (rqm << 15) + (usf1 << 14) + (usf0 << 13) + (drs << 12)
19
+ (dma << 11) + (drc << 10) + (soc << 9) + (sic << 8)
20
+ (ei << 7) + (p1 << 1) + (p0 << 0);
21
}
22
23
inline unsigned operator=(unsigned d) {
24
rqm = d & 0x8000; usf1 = d & 0x4000; usf0 = d & 0x2000; drs = d & 0x1000;
25
dma = d & 0x0800; drc = d & 0x0400; soc = d & 0x0200; sic = d & 0x0100;
26
ei = d & 0x0080; p1 = d & 0x0002; p0 = d & 0x0001;
27
return d;
28
}
29
};
30
31
struct Regs {
32
uint16 stack[16]; //LIFO
33
varuint pc; //program counter
34
varuint rp; //ROM pointer
35
varuint dp; //data pointer
36
uint4 sp; //stack pointer
37
int16 k;
38
int16 l;
39
int16 m;
40
int16 n;
41
int16 a; //accumulator
42
int16 b; //accumulator
43
Flag flaga;
44
Flag flagb;
45
uint16 tr; //temporary register
46
uint16 trb; //temporary register
47
Status sr; //status register
48
uint16 dr; //data register
49
uint16 si;
50
uint16 so;
51
} regs;
52
53