SN: register view?
This commit is contained in:
parent
b4a1dd6663
commit
3651325940
|
|
@ -43,6 +43,23 @@ float DivPlatformSMS::getPostAmp() {
|
||||||
return 1.5f;
|
return 1.5f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DivPlatformSMS::poolWrite(unsigned short a, unsigned char v) {
|
||||||
|
if (a) {
|
||||||
|
regPool[9]=v;
|
||||||
|
} else {
|
||||||
|
if (v>=0x80) {
|
||||||
|
regPool[(v>>4)&7]&=~15;
|
||||||
|
regPool[(v>>4)&7]|=v&15;
|
||||||
|
chanLatch=(v>>5)&3;
|
||||||
|
} else {
|
||||||
|
regPool[chanLatch<<1]&=15;
|
||||||
|
regPool[chanLatch<<1]|=((v&15)<<4);
|
||||||
|
regPool[1+(chanLatch<<1)]&=15;
|
||||||
|
regPool[1+(chanLatch<<1)]|=v&0xf0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DivPlatformSMS::acquire_nuked(short** buf, size_t len) {
|
void DivPlatformSMS::acquire_nuked(short** buf, size_t len) {
|
||||||
int oL=0;
|
int oL=0;
|
||||||
int oR=0;
|
int oR=0;
|
||||||
|
|
@ -54,6 +71,9 @@ void DivPlatformSMS::acquire_nuked(short** buf, size_t len) {
|
||||||
} else if (w.addr==1) {
|
} else if (w.addr==1) {
|
||||||
YMPSG_WriteStereo(&sn_nuked,w.val);
|
YMPSG_WriteStereo(&sn_nuked,w.val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
poolWrite(w.addr,w.val);
|
||||||
|
|
||||||
writes.pop();
|
writes.pop();
|
||||||
}
|
}
|
||||||
YMPSG_Clock(&sn_nuked);
|
YMPSG_Clock(&sn_nuked);
|
||||||
|
|
@ -97,6 +117,9 @@ void DivPlatformSMS::acquire_mame(short** buf, size_t len) {
|
||||||
else if (w.addr==0) {
|
else if (w.addr==0) {
|
||||||
sn->write(w.val);
|
sn->write(w.val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
poolWrite(w.addr,w.val);
|
||||||
|
|
||||||
writes.pop();
|
writes.pop();
|
||||||
}
|
}
|
||||||
for (size_t h=0; h<len; h++) {
|
for (size_t h=0; h<len; h++) {
|
||||||
|
|
@ -428,7 +451,17 @@ DivDispatchOscBuffer* DivPlatformSMS::getOscBuffer(int ch) {
|
||||||
return oscBuf[ch];
|
return oscBuf[ch];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned char* DivPlatformSMS::getRegisterPool() {
|
||||||
|
return regPool;
|
||||||
|
}
|
||||||
|
|
||||||
|
int DivPlatformSMS::getRegisterPoolSize() {
|
||||||
|
return stereo?9:8;
|
||||||
|
}
|
||||||
|
|
||||||
void DivPlatformSMS::reset() {
|
void DivPlatformSMS::reset() {
|
||||||
|
memset(regPool,0,16);
|
||||||
|
chanLatch=0;
|
||||||
while (!writes.empty()) writes.pop();
|
while (!writes.empty()) writes.pop();
|
||||||
for (int i=0; i<4; i++) {
|
for (int i=0; i<4; i++) {
|
||||||
chan[i]=DivPlatformSMS::Channel();
|
chan[i]=DivPlatformSMS::Channel();
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,8 @@ class DivPlatformSMS: public DivDispatch {
|
||||||
unsigned char lastPan;
|
unsigned char lastPan;
|
||||||
unsigned char oldValue;
|
unsigned char oldValue;
|
||||||
unsigned char snNoiseMode;
|
unsigned char snNoiseMode;
|
||||||
|
unsigned char regPool[16];
|
||||||
|
unsigned char chanLatch;
|
||||||
int divider=16;
|
int divider=16;
|
||||||
double toneDivider=64.0;
|
double toneDivider=64.0;
|
||||||
double noiseDivider=64.0;
|
double noiseDivider=64.0;
|
||||||
|
|
@ -65,6 +67,7 @@ class DivPlatformSMS: public DivDispatch {
|
||||||
|
|
||||||
double NOTE_SN(int ch, int note);
|
double NOTE_SN(int ch, int note);
|
||||||
int snCalcFreq(int ch);
|
int snCalcFreq(int ch);
|
||||||
|
void poolWrite(unsigned short a, unsigned char v);
|
||||||
|
|
||||||
void acquire_nuked(short** buf, size_t len);
|
void acquire_nuked(short** buf, size_t len);
|
||||||
void acquire_mame(short** buf, size_t len);
|
void acquire_mame(short** buf, size_t len);
|
||||||
|
|
@ -74,6 +77,8 @@ class DivPlatformSMS: public DivDispatch {
|
||||||
void* getChanState(int chan);
|
void* getChanState(int chan);
|
||||||
DivMacroInt* getChanMacroInt(int ch);
|
DivMacroInt* getChanMacroInt(int ch);
|
||||||
DivDispatchOscBuffer* getOscBuffer(int chan);
|
DivDispatchOscBuffer* getOscBuffer(int chan);
|
||||||
|
unsigned char* getRegisterPool();
|
||||||
|
int getRegisterPoolSize();
|
||||||
void reset();
|
void reset();
|
||||||
void forceIns();
|
void forceIns();
|
||||||
void tick(bool sysTick=true);
|
void tick(bool sysTick=true);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue