Path: blob/master/libsnes/bsnes/snes/chip/necdsp/registers.hpp
2 views
struct Flag {1bool s1, s0, c, z, ov1, ov0;23inline operator unsigned() const {4return (s1 << 5) + (s0 << 4) + (c << 3) + (z << 2) + (ov1 << 1) + (ov0 << 0);5}67inline unsigned operator=(unsigned d) {8s1 = d & 0x20; s0 = d & 0x10; c = d & 0x08; z = d & 0x04; ov1 = d & 0x02; ov0 = d & 0x01;9return d;10}11};1213struct Status {14bool rqm, usf1, usf0, drs, dma, drc, soc, sic, ei, p1, p0;1516inline operator unsigned() const {17return (rqm << 15) + (usf1 << 14) + (usf0 << 13) + (drs << 12)18+ (dma << 11) + (drc << 10) + (soc << 9) + (sic << 8)19+ (ei << 7) + (p1 << 1) + (p0 << 0);20}2122inline unsigned operator=(unsigned d) {23rqm = d & 0x8000; usf1 = d & 0x4000; usf0 = d & 0x2000; drs = d & 0x1000;24dma = d & 0x0800; drc = d & 0x0400; soc = d & 0x0200; sic = d & 0x0100;25ei = d & 0x0080; p1 = d & 0x0002; p0 = d & 0x0001;26return d;27}28};2930struct Regs {31uint16 stack[16]; //LIFO32varuint pc; //program counter33varuint rp; //ROM pointer34varuint dp; //data pointer35uint4 sp; //stack pointer36int16 k;37int16 l;38int16 m;39int16 n;40int16 a; //accumulator41int16 b; //accumulator42Flag flaga;43Flag flagb;44uint16 tr; //temporary register45uint16 trb; //temporary register46Status sr; //status register47uint16 dr; //data register48uint16 si;49uint16 so;50} regs;515253