Path: blob/master/libsnes/bsnes/snes/chip/necdsp/memory.cpp
2 views
#ifdef NECDSP_CPP12uint8 NECDSP::sr_read(unsigned) {3cpu.synchronize_coprocessors();4return regs.sr >> 8;5}67void NECDSP::sr_write(unsigned, uint8 data) {8cpu.synchronize_coprocessors();9}1011uint8 NECDSP::dr_read(unsigned) {12cpu.synchronize_coprocessors();13if(regs.sr.drc == 0) {14//16-bit15if(regs.sr.drs == 0) {16regs.sr.drs = 1;17return regs.dr >> 0;18} else {19regs.sr.rqm = 0;20regs.sr.drs = 0;21return regs.dr >> 8;22}23} else {24//8-bit25regs.sr.rqm = 0;26return regs.dr >> 0;27}28}2930void NECDSP::dr_write(unsigned, uint8 data) {31cpu.synchronize_coprocessors();32if(regs.sr.drc == 0) {33//16-bit34if(regs.sr.drs == 0) {35regs.sr.drs = 1;36regs.dr = (regs.dr & 0xff00) | (data << 0);37} else {38regs.sr.rqm = 0;39regs.sr.drs = 0;40regs.dr = (data << 8) | (regs.dr & 0x00ff);41}42} else {43//8-bit44regs.sr.rqm = 0;45regs.dr = (regs.dr & 0xff00) | (data << 0);46}47}4849uint8 NECDSP::dp_read(unsigned addr) {50cpu.synchronize_coprocessors();51bool hi = addr & 1;52addr = (addr >> 1) & 2047;5354if(hi == false) {55return dataRAM[addr] >> 0;56} else {57return dataRAM[addr] >> 8;58}59}6061void NECDSP::dp_write(unsigned addr, uint8 data) {62cpu.synchronize_coprocessors();63bool hi = addr & 1;64addr = (addr >> 1) & 2047;6566if(hi == false) {67dataRAM[addr] = (dataRAM[addr] & 0xff00) | (data << 0);68} else {69dataRAM[addr] = (dataRAM[addr] & 0x00ff) | (data << 8);70}71}7273#endif747576