diff --git a/src/engine/dispatchContainer.cpp b/src/engine/dispatchContainer.cpp index f116b1ca..8d8db5c5 100644 --- a/src/engine/dispatchContainer.cpp +++ b/src/engine/dispatchContainer.cpp @@ -179,7 +179,8 @@ void DivDispatchContainer::init(DivSystem sys, DivEngine* eng, int chanCount, do switch (sys) { case DIV_SYSTEM_YMU759: - dispatch=new DivPlatformOPL(759,false); + dispatch=new DivPlatformOPL; + ((DivPlatformOPL*)dispatch)->setOPLType(759,false); break; case DIV_SYSTEM_YM2612: dispatch=new DivPlatformGenesis; @@ -277,20 +278,36 @@ void DivDispatchContainer::init(DivSystem sys, DivEngine* eng, int chanCount, do ((DivPlatformOPLL*)dispatch)->setProperDrums(sys==DIV_SYSTEM_OPLL_DRUMS); break; case DIV_SYSTEM_OPL: + dispatch=new DivPlatformOPL; + ((DivPlatformOPL*)dispatch)->setOPLType(1,false); + break; case DIV_SYSTEM_OPL_DRUMS: - dispatch=new DivPlatformOPL(1,sys==DIV_SYSTEM_OPL_DRUMS); + dispatch=new DivPlatformOPL; + ((DivPlatformOPL*)dispatch)->setOPLType(1,true); break; case DIV_SYSTEM_OPL2: + dispatch=new DivPlatformOPL; + ((DivPlatformOPL*)dispatch)->setOPLType(2,false); + break; case DIV_SYSTEM_OPL2_DRUMS: - dispatch=new DivPlatformOPL(2,sys==DIV_SYSTEM_OPL2_DRUMS); + dispatch=new DivPlatformOPL; + ((DivPlatformOPL*)dispatch)->setOPLType(2,true); break; case DIV_SYSTEM_OPL3: + dispatch=new DivPlatformOPL; + ((DivPlatformOPL*)dispatch)->setOPLType(3,false); + break; case DIV_SYSTEM_OPL3_DRUMS: - dispatch=new DivPlatformOPL(3,sys==DIV_SYSTEM_OPL3_DRUMS); + dispatch=new DivPlatformOPL; + ((DivPlatformOPL*)dispatch)->setOPLType(3,true); break; case DIV_SYSTEM_Y8950: + dispatch=new DivPlatformOPL; + ((DivPlatformOPL*)dispatch)->setOPLType(8950,false); + break; case DIV_SYSTEM_Y8950_DRUMS: - dispatch=new DivPlatformOPL(8950,sys==DIV_SYSTEM_Y8950_DRUMS); + dispatch=new DivPlatformOPL; + ((DivPlatformOPL*)dispatch)->setOPLType(8950,true); break; case DIV_SYSTEM_OPZ: dispatch=new DivPlatformTX81Z; diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index a808ab62..78ef25a2 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -1580,14 +1580,6 @@ void DivPlatformOPL::setOPLType(int type, bool drums) { pretendYMU=false; downsample=false; adpcmChan=-1; - // Vaild type value: - // 1 (YM3526) - // 2 (YM3812) - // 3 (YMF262) - // 4 (YMF278; Not implemented) - // 289 (YMF289; Not implemented) - // 759 (YMU759) - // 8950 (Y8950) switch (type) { case 1: case 2: case 8950: slotsNonDrums=slotsOPL2; @@ -1603,7 +1595,7 @@ void DivPlatformOPL::setOPLType(int type, bool drums) { adpcmChan=drums?11:9; } break; - case 3: case 4: case 289: case 759: + case 3: case 4: case 759: slotsNonDrums=slotsOPL3; slotsDrums=slotsOPL3Drums; slots=drums?slotsDrums:slotsNonDrums; @@ -1616,14 +1608,14 @@ void DivPlatformOPL::setOPLType(int type, bool drums) { if (type==759) { pretendYMU=true; adpcmChan=16; - } else if (type==4 || type==289) { + } else if (type==4) { chipFreqBase=32768*684; downsample=true; } break; } chipType=type; - if (type==759 || type==289 || type==4) { + if (type==759 || type==4) { oplType=3; } else if (type==8950) { oplType=1; @@ -1706,7 +1698,6 @@ void DivPlatformOPL::setFlags(unsigned int flags) { chipRateBase=rate; break; case 4: - case 289: switch (flags&0xff) { case 0x01: chipClock=COLOR_PAL*32.0/5.0; diff --git a/src/engine/platform/opl.h b/src/engine/platform/opl.h index a885814a..e3b16679 100644 --- a/src/engine/platform/opl.h +++ b/src/engine/platform/opl.h @@ -151,10 +151,6 @@ class DivPlatformOPL: public DivDispatch { void renderSamples(); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); - DivPlatformOPL(int type, bool drums): - DivDispatch() { - setOPLType(type,drums); - } ~DivPlatformOPL(); }; #endif