parent
dbe30c0d43
commit
659a16a489
|
@ -339,6 +339,7 @@ void DivDispatchContainer::init(DivSystem sys, DivEngine* eng, int chanCount, do
|
||||||
((DivPlatformC64*)dispatch)->setCoreQuality(eng->getConfInt("dsidQuality",3));
|
((DivPlatformC64*)dispatch)->setCoreQuality(eng->getConfInt("dsidQuality",3));
|
||||||
}
|
}
|
||||||
((DivPlatformC64*)dispatch)->setChipModel(true);
|
((DivPlatformC64*)dispatch)->setChipModel(true);
|
||||||
|
((DivPlatformC64*)dispatch)->setSoftPCM(sys==DIV_SYSTEM_C64_PCM);
|
||||||
break;
|
break;
|
||||||
case DIV_SYSTEM_C64_8580:
|
case DIV_SYSTEM_C64_8580:
|
||||||
dispatch=new DivPlatformC64;
|
dispatch=new DivPlatformC64;
|
||||||
|
@ -350,6 +351,7 @@ void DivDispatchContainer::init(DivSystem sys, DivEngine* eng, int chanCount, do
|
||||||
((DivPlatformC64*)dispatch)->setCoreQuality(eng->getConfInt("dsidQuality",3));
|
((DivPlatformC64*)dispatch)->setCoreQuality(eng->getConfInt("dsidQuality",3));
|
||||||
}
|
}
|
||||||
((DivPlatformC64*)dispatch)->setChipModel(false);
|
((DivPlatformC64*)dispatch)->setChipModel(false);
|
||||||
|
((DivPlatformC64*)dispatch)->setSoftPCM(false);
|
||||||
break;
|
break;
|
||||||
case DIV_SYSTEM_YM2151:
|
case DIV_SYSTEM_YM2151:
|
||||||
dispatch=new DivPlatformArcade;
|
dispatch=new DivPlatformArcade;
|
||||||
|
|
|
@ -69,7 +69,9 @@ short DivPlatformC64::runFakeFilter(unsigned char ch, int in) {
|
||||||
if (!(regPool[0x17]&(1<<ch))) {
|
if (!(regPool[0x17]&(1<<ch))) {
|
||||||
if (regPool[0x18]&0x80 && ch==2) return 0;
|
if (regPool[0x18]&0x80 && ch==2) return 0;
|
||||||
float fin=in;
|
float fin=in;
|
||||||
|
if (noSoftPCM) {
|
||||||
fin*=(float)(regPool[0x18]&15)/20.0f;
|
fin*=(float)(regPool[0x18]&15)/20.0f;
|
||||||
|
}
|
||||||
return CLAMP(fin,-32768,32767);
|
return CLAMP(fin,-32768,32767);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,7 +98,9 @@ short DivPlatformC64::runFakeFilter(unsigned char ch, int in) {
|
||||||
fout+=tmp;
|
fout+=tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (noSoftPCM) {
|
||||||
fout*=(float)(regPool[0x18]&15)/20.0f;
|
fout*=(float)(regPool[0x18]&15)/20.0f;
|
||||||
|
}
|
||||||
return CLAMP(fout,-32768,32767);
|
return CLAMP(fout,-32768,32767);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -969,6 +973,10 @@ void DivPlatformC64::setCoreQuality(unsigned char q) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DivPlatformC64::setSoftPCM(bool isSoft) {
|
||||||
|
noSoftPCM=!isSoft;
|
||||||
|
}
|
||||||
|
|
||||||
int DivPlatformC64::init(DivEngine* p, int channels, int sugRate, const DivConfig& flags) {
|
int DivPlatformC64::init(DivEngine* p, int channels, int sugRate, const DivConfig& flags) {
|
||||||
parent=p;
|
parent=p;
|
||||||
dumpWrites=false;
|
dumpWrites=false;
|
||||||
|
|
|
@ -91,7 +91,7 @@ class DivPlatformC64: public DivDispatch {
|
||||||
int pcmCycle, lineRate;
|
int pcmCycle, lineRate;
|
||||||
short cutoff_slide;
|
short cutoff_slide;
|
||||||
|
|
||||||
bool keyPriority, sidIs6581, needInitTables, no1EUpdate, multiplyRel, macroRace;
|
bool keyPriority, sidIs6581, needInitTables, no1EUpdate, multiplyRel, macroRace, noSoftPCM;
|
||||||
unsigned char chanOrder[3];
|
unsigned char chanOrder[3];
|
||||||
unsigned char testAD, testSR;
|
unsigned char testAD, testSR;
|
||||||
|
|
||||||
|
@ -140,6 +140,7 @@ class DivPlatformC64: public DivDispatch {
|
||||||
void setChipModel(bool is6581);
|
void setChipModel(bool is6581);
|
||||||
void setCore(unsigned char which);
|
void setCore(unsigned char which);
|
||||||
void setCoreQuality(unsigned char q);
|
void setCoreQuality(unsigned char q);
|
||||||
|
void setSoftPCM(bool isSoft);
|
||||||
void quit();
|
void quit();
|
||||||
~DivPlatformC64();
|
~DivPlatformC64();
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue