emu2413, part 1
missing: - patches - chan osc
This commit is contained in:
parent
129237fb2c
commit
dc2daccf05
|
|
@ -94,6 +94,20 @@ void DivPlatformOPLL::acquire_ymfm(short** buf, size_t len) {
|
|||
}
|
||||
|
||||
void DivPlatformOPLL::acquire_emu(short** buf, size_t len) {
|
||||
thread_local int os;
|
||||
|
||||
for (size_t h=0; h<len; h++) {
|
||||
if (!writes.empty()) {
|
||||
QueuedWrite& w=writes.front();
|
||||
OPLL_writeReg(fm_emu,w.addr,w.val);
|
||||
writes.pop();
|
||||
}
|
||||
os=OPLL_calc(fm_emu)<<1;
|
||||
if (os<-32768) os=-32768;
|
||||
if (os>32767) os=32767;
|
||||
|
||||
buf[0][h]=os;
|
||||
}
|
||||
}
|
||||
|
||||
void DivPlatformOPLL::acquire(short** buf, size_t len) {
|
||||
|
|
@ -1103,10 +1117,18 @@ void DivPlatformOPLL::setFlags(const DivConfig& flags) {
|
|||
chipClock=COLOR_NTSC;
|
||||
}
|
||||
CHECK_CUSTOM_CLOCK;
|
||||
rate=chipClock/36;
|
||||
patchSet=flags.getInt("patchSet",0);
|
||||
if (selCore==1) {
|
||||
rate=chipClock/72;
|
||||
} else {
|
||||
rate=chipClock/36;
|
||||
}
|
||||
for (int i=0; i<11; i++) {
|
||||
oscBuf[i]->rate=rate/2;
|
||||
if (selCore==1) {
|
||||
oscBuf[i]->rate=rate;
|
||||
} else {
|
||||
oscBuf[i]->rate=rate/2;
|
||||
}
|
||||
}
|
||||
noTopHatFreq=flags.getBool("noTopHatFreq",false);
|
||||
fixedAll=flags.getBool("fixedAll",true);
|
||||
|
|
@ -1117,6 +1139,12 @@ int DivPlatformOPLL::init(DivEngine* p, int channels, int sugRate, const DivConf
|
|||
dumpWrites=false;
|
||||
skipRegisterWrites=false;
|
||||
patchSet=0;
|
||||
fm_emu=NULL;
|
||||
if (selCore==1) {
|
||||
fm_emu=OPLL_new(72,1);
|
||||
OPLL_setChipType(fm_emu,vrc7?1:0);
|
||||
}
|
||||
|
||||
for (int i=0; i<11; i++) {
|
||||
isMuted[i]=false;
|
||||
oscBuf[i]=new DivDispatchOscBuffer;
|
||||
|
|
@ -1131,6 +1159,10 @@ void DivPlatformOPLL::quit() {
|
|||
for (int i=0; i<11; i++) {
|
||||
delete oscBuf[i];
|
||||
}
|
||||
if (fm_emu!=NULL) {
|
||||
OPLL_delete(fm_emu);
|
||||
fm_emu=NULL;
|
||||
}
|
||||
}
|
||||
|
||||
DivPlatformOPLL::~DivPlatformOPLL() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue