PCE: PCM works
CPU usage increases though when it's in use :<
This commit is contained in:
parent
5d3a22a502
commit
ec5aafb9ad
|
@ -82,8 +82,9 @@ void DivPlatformPCE::acquireDirect(blip_buffer_t** bb, size_t off, size_t len) {
|
||||||
for (int i=0; i<6; i++) {
|
for (int i=0; i<6; i++) {
|
||||||
if (chan[i].pcm && chan[i].dacSample!=-1) {
|
if (chan[i].pcm && chan[i].dacSample!=-1) {
|
||||||
if (chan[i].dacRate<=0) continue;
|
if (chan[i].dacRate<=0) continue;
|
||||||
remainTime=(rate-chan[i].dacPeriod)/chan[i].dacRate;
|
remainTime=(rate-chan[i].dacPeriod+chan[i].dacRate-1)/chan[i].dacRate;
|
||||||
if (remainTime<advance) advance=remainTime;
|
if (remainTime<advance) advance=remainTime;
|
||||||
|
if (remainTime<1) advance=1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,7 +129,6 @@ void DivPlatformPCE::acquireDirect(blip_buffer_t** bb, size_t off, size_t len) {
|
||||||
regPool[w.addr&0x0f]=w.val;
|
regPool[w.addr&0x0f]=w.val;
|
||||||
writes.pop();
|
writes.pop();
|
||||||
}
|
}
|
||||||
pce->Update(pos);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
for (int i=0; i<6; i++) {
|
for (int i=0; i<6; i++) {
|
||||||
|
@ -136,6 +136,7 @@ void DivPlatformPCE::acquireDirect(blip_buffer_t** bb, size_t off, size_t len) {
|
||||||
}*/
|
}*/
|
||||||
h+=advance;
|
h+=advance;
|
||||||
}
|
}
|
||||||
|
pce->Update(pos);
|
||||||
|
|
||||||
for (int i=0; i<6; i++) {
|
for (int i=0; i<6; i++) {
|
||||||
oscBuf[i]->end(len);
|
oscBuf[i]->end(len);
|
||||||
|
@ -261,7 +262,7 @@ void DivPlatformPCE::tick(bool sysTick) {
|
||||||
off=parent->getCenterRate()/(double)s->centerRate;
|
off=parent->getCenterRate()/(double)s->centerRate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
chan[i].dacRate=((double)chipClock/2)/MAX(1,off*chan[i].freq);
|
chan[i].dacRate=(double)chipClock/(4*MAX(1,off*chan[i].freq));
|
||||||
if (dumpWrites) addWrite(0xffff0001+(i<<8),chan[i].dacRate);
|
if (dumpWrites) addWrite(0xffff0001+(i<<8),chan[i].dacRate);
|
||||||
}
|
}
|
||||||
if (chan[i].freq<1) chan[i].freq=1;
|
if (chan[i].freq<1) chan[i].freq=1;
|
||||||
|
|
|
@ -1432,7 +1432,8 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version, bool p
|
||||||
break;
|
break;
|
||||||
case DIV_SYSTEM_PCE:
|
case DIV_SYSTEM_PCE:
|
||||||
if (!hasPCE) {
|
if (!hasPCE) {
|
||||||
hasPCE=disCont[i].dispatch->chipClock;
|
// the clock is halved in VGM...
|
||||||
|
hasPCE=disCont[i].dispatch->chipClock/2;
|
||||||
CHIP_VOL(27,0.98);
|
CHIP_VOL(27,0.98);
|
||||||
willExport[i]=true;
|
willExport[i]=true;
|
||||||
writePCESamples=true;
|
writePCESamples=true;
|
||||||
|
|
Loading…
Reference in a new issue