OPLL: 40%
This commit is contained in:
parent
f403621d6e
commit
60688d8ddb
|
@ -77,29 +77,34 @@ const char* DivPlatformOPLL::getEffectName(unsigned char effect) {
|
||||||
|
|
||||||
void DivPlatformOPLL::acquire_nuked(short* bufL, short* bufR, size_t start, size_t len) {
|
void DivPlatformOPLL::acquire_nuked(short* bufL, short* bufR, size_t start, size_t len) {
|
||||||
static int o[2];
|
static int o[2];
|
||||||
|
static int os;
|
||||||
|
|
||||||
for (size_t h=start; h<start+len; h++) {
|
for (size_t h=start; h<start+len; h++) {
|
||||||
if (!writes.empty() && --delay<0) {
|
if (!writes.empty() && --delay<0) {
|
||||||
// 84 is safe value
|
// 84 is safe value
|
||||||
delay=18;
|
|
||||||
QueuedWrite& w=writes.front();
|
QueuedWrite& w=writes.front();
|
||||||
if (w.addrOrVal) {
|
if (w.addrOrVal) {
|
||||||
OPLL_Write(&fm,1,w.val);
|
OPLL_Write(&fm,1,w.val);
|
||||||
printf("write: %x = %.2x\n",w.addr,w.val);
|
printf("write: %x = %.2x\n",w.addr,w.val);
|
||||||
regPool[w.addr&0xff]=w.val;
|
regPool[w.addr&0xff]=w.val;
|
||||||
writes.pop();
|
writes.pop();
|
||||||
|
delay=84;
|
||||||
} else {
|
} else {
|
||||||
//printf("busycounter: %d\n",lastBusy);
|
//printf("busycounter: %d\n",lastBusy);
|
||||||
|
//w.addr=rand()&0x3f;
|
||||||
OPLL_Write(&fm,0,w.addr);
|
OPLL_Write(&fm,0,w.addr);
|
||||||
w.addrOrVal=true;
|
w.addrOrVal=true;
|
||||||
|
delay=12;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OPLL_Clock(&fm,o);
|
OPLL_Clock(&fm,o);
|
||||||
//if (o[0]<-32768) o[0]=-32768;
|
os=(o[0]+o[1])<<7;
|
||||||
//if (o[1]>32767) o[1]=32767;
|
if (os<-32768) os=-32768;
|
||||||
|
if (os>32767) os=32767;
|
||||||
|
//printf("%d\n",o[0]);
|
||||||
|
|
||||||
bufL[h]=(o[0]+o[1])<<13;
|
bufL[h]=os;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -262,7 +267,7 @@ void DivPlatformOPLL::tick() {
|
||||||
}
|
}
|
||||||
if (chan[i].keyOn) {
|
if (chan[i].keyOn) {
|
||||||
//immWrite(0x28,0xf0|konOffs[i]);
|
//immWrite(0x28,0xf0|konOffs[i]);
|
||||||
immWrite(0x20+i,(chan[i].freqH)|(chan[i].active<<4)|0x20);
|
immWrite(0x20+i,(chan[i].freqH)|(chan[i].active<<4));
|
||||||
chan[i].keyOn=false;
|
chan[i].keyOn=false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -373,7 +378,7 @@ int DivPlatformOPLL::dispatch(DivCommand c) {
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
// for now
|
// for now
|
||||||
rWrite(0x30+c.chan,0xf|(ins->fm.opllPreset<<4));
|
rWrite(0x30+c.chan,0x0|(ins->fm.opllPreset<<4));
|
||||||
chan[c.chan].insChanged=false;
|
chan[c.chan].insChanged=false;
|
||||||
|
|
||||||
if (c.value!=DIV_NOTE_NULL) {
|
if (c.value!=DIV_NOTE_NULL) {
|
||||||
|
|
Loading…
Reference in New Issue