core quality, part 1

PC Engine
This commit is contained in:
tildearrow 2024-04-06 14:57:15 -05:00
parent a613cfb303
commit a1254d5fb6
6 changed files with 204 additions and 5 deletions

View file

@ -96,7 +96,7 @@ void DivPlatformPCE::acquire(short** buf, size_t len) {
}
memset(tempL,0,24*sizeof(int));
memset(tempR,0,24*sizeof(int));
pce->Update(24);
pce->Update(coreQuality);
pce->ResetTS(0);
for (int i=0; i<6; i++) {
@ -629,7 +629,7 @@ void DivPlatformPCE::setFlags(const DivConfig& flags) {
}
CHECK_CUSTOM_CLOCK;
antiClickEnabled=!flags.getBool("noAntiClick",false);
rate=chipClock/12;
rate=chipClock/(coreQuality>>1);
for (int i=0; i<6; i++) {
oscBuf[i]->rate=rate;
}
@ -649,6 +649,32 @@ void DivPlatformPCE::poke(std::vector<DivRegWrite>& wlist) {
for (DivRegWrite& i: wlist) rWrite(i.addr,i.val);
}
void DivPlatformPCE::setCoreQuality(unsigned char q) {
switch (q) {
case 0:
coreQuality=192;
break;
case 1:
coreQuality=96;
break;
case 2:
coreQuality=48;
break;
case 3:
coreQuality=24;
break;
case 4:
coreQuality=6;
break;
case 5:
coreQuality=2;
break;
default:
coreQuality=24;
break;
}
}
int DivPlatformPCE::init(DivEngine* p, int channels, int sugRate, const DivConfig& flags) {
parent=p;
dumpWrites=false;