This commit is contained in:
tildearrow 2022-12-20 17:55:05 -05:00
parent 7a92811fd9
commit 909c553be3
11 changed files with 98 additions and 98 deletions

View file

@ -191,22 +191,22 @@ void DivDispatchContainer::init(DivSystem sys, DivEngine* eng, int chanCount, do
dispatch=new DivPlatformOPL; dispatch=new DivPlatformOPL;
((DivPlatformOPL*)dispatch)->setOPLType(759,false); ((DivPlatformOPL*)dispatch)->setOPLType(759,false);
break; break;
case DIV_SYSTEM_YM2612_DUALPCM: case DIV_SYSTEM_YM2612:
dispatch=new DivPlatformGenesis; dispatch=new DivPlatformGenesis;
((DivPlatformGenesis*)dispatch)->setYMFM(eng->getConfInt("ym2612Core",0)); ((DivPlatformGenesis*)dispatch)->setYMFM(eng->getConfInt("ym2612Core",0));
((DivPlatformGenesis*)dispatch)->setSoftPCM(false); ((DivPlatformGenesis*)dispatch)->setSoftPCM(false);
break; break;
case DIV_SYSTEM_YM2612_DUALPCM_EXT: case DIV_SYSTEM_YM2612_EXT:
dispatch=new DivPlatformGenesisExt; dispatch=new DivPlatformGenesisExt;
((DivPlatformGenesisExt*)dispatch)->setYMFM(eng->getConfInt("ym2612Core",0)); ((DivPlatformGenesisExt*)dispatch)->setYMFM(eng->getConfInt("ym2612Core",0));
((DivPlatformGenesisExt*)dispatch)->setSoftPCM(false); ((DivPlatformGenesisExt*)dispatch)->setSoftPCM(false);
break; break;
case DIV_SYSTEM_YM2612_DUALPCM_FRAC: case DIV_SYSTEM_YM2612_DUALPCM:
dispatch=new DivPlatformGenesis; dispatch=new DivPlatformGenesis;
((DivPlatformGenesis*)dispatch)->setYMFM(eng->getConfInt("ym2612Core",0)); ((DivPlatformGenesis*)dispatch)->setYMFM(eng->getConfInt("ym2612Core",0));
((DivPlatformGenesis*)dispatch)->setSoftPCM(true); ((DivPlatformGenesis*)dispatch)->setSoftPCM(true);
break; break;
case DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT: case DIV_SYSTEM_YM2612_DUALPCM_EXT:
dispatch=new DivPlatformGenesisExt; dispatch=new DivPlatformGenesisExt;
((DivPlatformGenesisExt*)dispatch)->setYMFM(eng->getConfInt("ym2612Core",0)); ((DivPlatformGenesisExt*)dispatch)->setYMFM(eng->getConfInt("ym2612Core",0));
((DivPlatformGenesisExt*)dispatch)->setSoftPCM(true); ((DivPlatformGenesisExt*)dispatch)->setSoftPCM(true);

View file

@ -2440,7 +2440,7 @@ int DivEngine::getEffectiveSampleRate(int rate) {
switch (song.system[0]) { switch (song.system[0]) {
case DIV_SYSTEM_YMU759: case DIV_SYSTEM_YMU759:
return 8000; return 8000;
case DIV_SYSTEM_YM2612_DUALPCM: case DIV_SYSTEM_YM2612_DUALPCM_EXT: case DIV_SYSTEM_YM2612: case DIV_SYSTEM_YM2612_EXT:
return 1278409/(1280000/rate); return 1278409/(1280000/rate);
case DIV_SYSTEM_PCE: case DIV_SYSTEM_PCE:
return 1789773/(1789773/rate); return 1789773/(1789773/rate);

View file

@ -937,13 +937,13 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
// handle compound systems // handle compound systems
if (ds.system[0]==DIV_SYSTEM_GENESIS) { if (ds.system[0]==DIV_SYSTEM_GENESIS) {
ds.systemLen=2; ds.systemLen=2;
ds.system[0]=DIV_SYSTEM_YM2612_DUALPCM; ds.system[0]=DIV_SYSTEM_YM2612;
ds.system[1]=DIV_SYSTEM_SMS; ds.system[1]=DIV_SYSTEM_SMS;
ds.systemVol[1]=32; ds.systemVol[1]=32;
} }
if (ds.system[0]==DIV_SYSTEM_GENESIS_EXT) { if (ds.system[0]==DIV_SYSTEM_GENESIS_EXT) {
ds.systemLen=2; ds.systemLen=2;
ds.system[0]=DIV_SYSTEM_YM2612_DUALPCM_EXT; ds.system[0]=DIV_SYSTEM_YM2612_EXT;
ds.system[1]=DIV_SYSTEM_SMS; ds.system[1]=DIV_SYSTEM_SMS;
ds.systemVol[1]=32; ds.systemVol[1]=32;
} }
@ -1205,10 +1205,10 @@ void DivEngine::convertOldFlags(unsigned int oldFlags, DivConfig& newFlags, DivS
break; break;
} }
break; break;
case DIV_SYSTEM_YM2612:
case DIV_SYSTEM_YM2612_EXT:
case DIV_SYSTEM_YM2612_DUALPCM: case DIV_SYSTEM_YM2612_DUALPCM:
case DIV_SYSTEM_YM2612_DUALPCM_EXT: case DIV_SYSTEM_YM2612_DUALPCM_EXT:
case DIV_SYSTEM_YM2612_DUALPCM_FRAC:
case DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT:
switch (oldFlags&0x7fffffff) { switch (oldFlags&0x7fffffff) {
case 0: case 0:
newFlags.set("clockSel",0); newFlags.set("clockSel",0);
@ -1857,14 +1857,14 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) {
if (++ds.systemLen>DIV_MAX_CHIPS) ds.systemLen=DIV_MAX_CHIPS; if (++ds.systemLen>DIV_MAX_CHIPS) ds.systemLen=DIV_MAX_CHIPS;
if (ds.system[i]==DIV_SYSTEM_GENESIS) { if (ds.system[i]==DIV_SYSTEM_GENESIS) {
ds.system[i]=DIV_SYSTEM_YM2612_DUALPCM; ds.system[i]=DIV_SYSTEM_YM2612;
if (i<31) { if (i<31) {
ds.system[i+1]=DIV_SYSTEM_SMS; ds.system[i+1]=DIV_SYSTEM_SMS;
ds.systemVol[i+1]=(((ds.systemVol[i]&127)*3)>>3)|(ds.systemVol[i]&128); ds.systemVol[i+1]=(((ds.systemVol[i]&127)*3)>>3)|(ds.systemVol[i]&128);
} }
} }
if (ds.system[i]==DIV_SYSTEM_GENESIS_EXT) { if (ds.system[i]==DIV_SYSTEM_GENESIS_EXT) {
ds.system[i]=DIV_SYSTEM_YM2612_DUALPCM_EXT; ds.system[i]=DIV_SYSTEM_YM2612_EXT;
if (i<31) { if (i<31) {
ds.system[i+1]=DIV_SYSTEM_SMS; ds.system[i+1]=DIV_SYSTEM_SMS;
ds.systemVol[i+1]=(((ds.systemVol[i]&127)*3)>>3)|(ds.systemVol[i]&128); ds.systemVol[i+1]=(((ds.systemVol[i]&127)*3)>>3)|(ds.systemVol[i]&128);
@ -2488,10 +2488,10 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) {
case DIV_SYSTEM_YM2203_EXT: case DIV_SYSTEM_YM2203_EXT:
case DIV_SYSTEM_YM2608: case DIV_SYSTEM_YM2608:
case DIV_SYSTEM_YM2608_EXT: case DIV_SYSTEM_YM2608_EXT:
case DIV_SYSTEM_YM2612:
case DIV_SYSTEM_YM2612_EXT:
case DIV_SYSTEM_YM2612_DUALPCM: case DIV_SYSTEM_YM2612_DUALPCM:
case DIV_SYSTEM_YM2612_DUALPCM_EXT: case DIV_SYSTEM_YM2612_DUALPCM_EXT:
case DIV_SYSTEM_YM2612_DUALPCM_FRAC:
case DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT:
opnCount++; opnCount++;
break; break;
default: default:
@ -2513,8 +2513,8 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) {
// ExtCh compat flag // ExtCh compat flag
if (ds.version<125) { if (ds.version<125) {
for (int i=0; i<ds.systemLen; i++) { for (int i=0; i<ds.systemLen; i++) {
if (ds.system[i]==DIV_SYSTEM_YM2612_DUALPCM_EXT || if (ds.system[i]==DIV_SYSTEM_YM2612_EXT ||
ds.system[i]==DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT || ds.system[i]==DIV_SYSTEM_YM2612_DUALPCM_EXT ||
ds.system[i]==DIV_SYSTEM_YM2610_EXT || ds.system[i]==DIV_SYSTEM_YM2610_EXT ||
ds.system[i]==DIV_SYSTEM_YM2610_FULL_EXT || ds.system[i]==DIV_SYSTEM_YM2610_FULL_EXT ||
ds.system[i]==DIV_SYSTEM_YM2610B_EXT || ds.system[i]==DIV_SYSTEM_YM2610B_EXT ||
@ -4625,10 +4625,10 @@ SafeWriter* DivEngine::saveDMF(unsigned char version) {
// check whether system is compound // check whether system is compound
bool isFlat=false; bool isFlat=false;
if (song.systemLen==2) { if (song.systemLen==2) {
if (song.system[0]==DIV_SYSTEM_YM2612_DUALPCM && song.system[1]==DIV_SYSTEM_SMS) { if (song.system[0]==DIV_SYSTEM_YM2612 && song.system[1]==DIV_SYSTEM_SMS) {
isFlat=true; isFlat=true;
} }
if (song.system[0]==DIV_SYSTEM_YM2612_DUALPCM_EXT && song.system[1]==DIV_SYSTEM_SMS) { if (song.system[0]==DIV_SYSTEM_YM2612_EXT && song.system[1]==DIV_SYSTEM_SMS) {
isFlat=true; isFlat=true;
} }
if (song.system[0]==DIV_SYSTEM_YM2151 && song.system[1]==DIV_SYSTEM_SEGAPCM_COMPAT) { if (song.system[0]==DIV_SYSTEM_YM2151 && song.system[1]==DIV_SYSTEM_SEGAPCM_COMPAT) {
@ -4717,10 +4717,10 @@ SafeWriter* DivEngine::saveDMF(unsigned char version) {
// version // version
w->writeC(version); w->writeC(version);
DivSystem sys=DIV_SYSTEM_NULL; DivSystem sys=DIV_SYSTEM_NULL;
if (song.system[0]==DIV_SYSTEM_YM2612_DUALPCM && song.system[1]==DIV_SYSTEM_SMS) { if (song.system[0]==DIV_SYSTEM_YM2612 && song.system[1]==DIV_SYSTEM_SMS) {
w->writeC(systemToFileDMF(DIV_SYSTEM_GENESIS)); w->writeC(systemToFileDMF(DIV_SYSTEM_GENESIS));
sys=DIV_SYSTEM_GENESIS; sys=DIV_SYSTEM_GENESIS;
} else if (song.system[0]==DIV_SYSTEM_YM2612_DUALPCM_EXT && song.system[1]==DIV_SYSTEM_SMS) { } else if (song.system[0]==DIV_SYSTEM_YM2612_EXT && song.system[1]==DIV_SYSTEM_SMS) {
w->writeC(systemToFileDMF(DIV_SYSTEM_GENESIS_EXT)); w->writeC(systemToFileDMF(DIV_SYSTEM_GENESIS_EXT));
sys=DIV_SYSTEM_GENESIS_EXT; sys=DIV_SYSTEM_GENESIS_EXT;
} else if (song.system[0]==DIV_SYSTEM_YM2151 && song.system[1]==DIV_SYSTEM_SEGAPCM_COMPAT) { } else if (song.system[0]==DIV_SYSTEM_YM2151 && song.system[1]==DIV_SYSTEM_SEGAPCM_COMPAT) {

View file

@ -52,7 +52,7 @@ enum DivSystem {
DIV_SYSTEM_AY8910, DIV_SYSTEM_AY8910,
DIV_SYSTEM_AMIGA, DIV_SYSTEM_AMIGA,
DIV_SYSTEM_YM2151, DIV_SYSTEM_YM2151,
DIV_SYSTEM_YM2612_DUALPCM, DIV_SYSTEM_YM2612,
DIV_SYSTEM_TIA, DIV_SYSTEM_TIA,
DIV_SYSTEM_SAA1099, DIV_SYSTEM_SAA1099,
DIV_SYSTEM_AY8930, DIV_SYSTEM_AY8930,
@ -83,7 +83,7 @@ enum DivSystem {
DIV_SYSTEM_VRC7, DIV_SYSTEM_VRC7,
DIV_SYSTEM_YM2610B, DIV_SYSTEM_YM2610B,
DIV_SYSTEM_SFX_BEEPER, DIV_SYSTEM_SFX_BEEPER,
DIV_SYSTEM_YM2612_DUALPCM_EXT, DIV_SYSTEM_YM2612_EXT,
DIV_SYSTEM_SCC, DIV_SYSTEM_SCC,
DIV_SYSTEM_OPL_DRUMS, DIV_SYSTEM_OPL_DRUMS,
DIV_SYSTEM_OPL2_DRUMS, DIV_SYSTEM_OPL2_DRUMS,
@ -111,8 +111,8 @@ enum DivSystem {
DIV_SYSTEM_NAMCO, DIV_SYSTEM_NAMCO,
DIV_SYSTEM_NAMCO_15XX, DIV_SYSTEM_NAMCO_15XX,
DIV_SYSTEM_NAMCO_CUS30, DIV_SYSTEM_NAMCO_CUS30,
DIV_SYSTEM_YM2612_DUALPCM_FRAC, DIV_SYSTEM_YM2612_DUALPCM,
DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT, DIV_SYSTEM_YM2612_DUALPCM_EXT,
DIV_SYSTEM_MSM5232, DIV_SYSTEM_MSM5232,
DIV_SYSTEM_T6W28, DIV_SYSTEM_T6W28,
DIV_SYSTEM_K007232, DIV_SYSTEM_K007232,
@ -120,7 +120,7 @@ enum DivSystem {
DIV_SYSTEM_PCM_DAC, DIV_SYSTEM_PCM_DAC,
DIV_SYSTEM_PONG, DIV_SYSTEM_PONG,
DIV_SYSTEM_DUMMY, DIV_SYSTEM_DUMMY,
DIV_SYSTEM_YM2612_DUALPCM_CSM, DIV_SYSTEM_YM2612_CSM,
DIV_SYSTEM_YM2610_CSM, DIV_SYSTEM_YM2610_CSM,
DIV_SYSTEM_YM2610B_CSM, DIV_SYSTEM_YM2610B_CSM,
DIV_SYSTEM_YM2203_CSM, DIV_SYSTEM_YM2203_CSM,
@ -442,7 +442,7 @@ struct DivSong {
systemPan[i]=0; systemPan[i]=0;
} }
subsong.push_back(new DivSubSong); subsong.push_back(new DivSubSong);
system[0]=DIV_SYSTEM_YM2612_DUALPCM; system[0]=DIV_SYSTEM_YM2612;
system[1]=DIV_SYSTEM_SMS; system[1]=DIV_SYSTEM_SMS;
// OPLL default instrument contest winner - piano_guitar_idk by Weeppiko // OPLL default instrument contest winner - piano_guitar_idk by Weeppiko

View file

@ -128,7 +128,7 @@ String DivEngine::getSongSystemLegacyName(DivSong& ds, bool isMultiSystemAccepta
} }
break; break;
} }
} else if (ds.system[0]==DIV_SYSTEM_YM2612_DUALPCM) { } else if (ds.system[0]==DIV_SYSTEM_YM2612) {
switch (ds.systemFlags[0].getInt("clockSel",0)) { switch (ds.systemFlags[0].getInt("clockSel",0)) {
case 2: case 2:
return "FM Towns"; return "FM Towns";
@ -146,10 +146,10 @@ String DivEngine::getSongSystemLegacyName(DivSong& ds, bool isMultiSystemAccepta
} }
return getSystemName(ds.system[0]); return getSystemName(ds.system[0]);
case 2: case 2:
if (ds.system[0]==DIV_SYSTEM_YM2612_DUALPCM && ds.system[1]==DIV_SYSTEM_SMS) { if (ds.system[0]==DIV_SYSTEM_YM2612 && ds.system[1]==DIV_SYSTEM_SMS) {
return "Sega Genesis/Mega Drive"; return "Sega Genesis/Mega Drive";
} }
if (ds.system[0]==DIV_SYSTEM_YM2612_DUALPCM_EXT && ds.system[1]==DIV_SYSTEM_SMS) { if (ds.system[0]==DIV_SYSTEM_YM2612_EXT && ds.system[1]==DIV_SYSTEM_SMS) {
return "Sega Genesis Extended Channel 3"; return "Sega Genesis Extended Channel 3";
} }
@ -293,7 +293,7 @@ const char* DivEngine::getSystemNameJ(DivSystem sys) {
return ""; return "";
case DIV_SYSTEM_YM2151: case DIV_SYSTEM_YM2151:
return ""; return "";
case DIV_SYSTEM_YM2612_DUALPCM: case DIV_SYSTEM_YM2612:
return ""; return "";
case DIV_SYSTEM_TIA: case DIV_SYSTEM_TIA:
return ""; return "";
@ -811,7 +811,7 @@ void DivEngine::registerSystems() {
fmOPMPostEffectHandlerMap fmOPMPostEffectHandlerMap
); );
sysDefs[DIV_SYSTEM_YM2612_DUALPCM]=new DivSysDef( sysDefs[DIV_SYSTEM_YM2612]=new DivSysDef(
"Yamaha YM2612 (OPN2)", NULL, 0x83, 0, 6, true, false, 0x150, false, 1U<<DIV_SAMPLE_DEPTH_8BIT, "Yamaha YM2612 (OPN2)", NULL, 0x83, 0, 6, true, false, 0x150, false, 1U<<DIV_SAMPLE_DEPTH_8BIT,
"this chip is mostly known for being in the Sega Genesis (but it also was on the FM Towns computer).", "this chip is mostly known for being in the Sega Genesis (but it also was on the FM Towns computer).",
{"FM 1", "FM 2", "FM 3", "FM 4", "FM 5", "FM 6"}, {"FM 1", "FM 2", "FM 3", "FM 4", "FM 5", "FM 6"},
@ -1274,7 +1274,7 @@ void DivEngine::registerSystems() {
} }
); );
sysDefs[DIV_SYSTEM_YM2612_DUALPCM_EXT]=new DivSysDef( sysDefs[DIV_SYSTEM_YM2612_EXT]=new DivSysDef(
"Yamaha YM2612 (OPN2) Extended Channel 3", NULL, 0xa0, 0, 9, true, false, 0x150, false, 1U<<DIV_SAMPLE_DEPTH_8BIT, "Yamaha YM2612 (OPN2) Extended Channel 3", NULL, 0xa0, 0, 9, true, false, 0x150, false, 1U<<DIV_SAMPLE_DEPTH_8BIT,
"this chip is mostly known for being in the Sega Genesis (but it also was on the FM Towns computer).\nthis one is in Extended Channel mode, which turns the third FM channel into four operators with independent notes/frequencies.", "this chip is mostly known for being in the Sega Genesis (but it also was on the FM Towns computer).\nthis one is in Extended Channel mode, which turns the third FM channel into four operators with independent notes/frequencies.",
{"FM 1", "FM 2", "FM 3 OP1", "FM 3 OP2", "FM 3 OP3", "FM 3 OP4", "FM 4", "FM 5", "FM 6"}, {"FM 1", "FM 2", "FM 3 OP1", "FM 3 OP2", "FM 3 OP3", "FM 3 OP4", "FM 4", "FM 5", "FM 6"},
@ -1286,7 +1286,7 @@ void DivEngine::registerSystems() {
fmOPN2PostEffectHandlerMap fmOPN2PostEffectHandlerMap
); );
sysDefs[DIV_SYSTEM_YM2612_DUALPCM_CSM]=new DivSysDef( sysDefs[DIV_SYSTEM_YM2612_CSM]=new DivSysDef(
"Yamaha YM2612 (OPN2) CSM", NULL, 0xc1, 0, 10, true, false, 0x150, false, 1U<<DIV_SAMPLE_DEPTH_8BIT, "Yamaha YM2612 (OPN2) CSM", NULL, 0xc1, 0, 10, true, false, 0x150, false, 1U<<DIV_SAMPLE_DEPTH_8BIT,
"this chip is mostly known for being in the Sega Genesis (but it also was on the FM Towns computer).\nthis one includes CSM mode control for special effects on Channel 3.", "this chip is mostly known for being in the Sega Genesis (but it also was on the FM Towns computer).\nthis one includes CSM mode control for special effects on Channel 3.",
{"FM 1", "FM 2", "FM 3 OP1", "FM 3 OP2", "FM 3 OP3", "FM 3 OP4", "FM 4", "FM 5", "FM 6", "CSM Timer"}, {"FM 1", "FM 2", "FM 3 OP1", "FM 3 OP2", "FM 3 OP3", "FM 3 OP4", "FM 4", "FM 5", "FM 6", "CSM Timer"},
@ -1712,7 +1712,7 @@ void DivEngine::registerSystems() {
} }
); );
sysDefs[DIV_SYSTEM_YM2612_DUALPCM_FRAC]=new DivSysDef( sysDefs[DIV_SYSTEM_YM2612_DUALPCM]=new DivSysDef(
"Yamaha YM2612 (OPN2) with DualPCM", NULL, 0xbe, 0, 7, true, false, 0x150, false, 1U<<DIV_SAMPLE_DEPTH_8BIT, "Yamaha YM2612 (OPN2) with DualPCM", NULL, 0xbe, 0, 7, true, false, 0x150, false, 1U<<DIV_SAMPLE_DEPTH_8BIT,
"this chip is mostly known for being in the Sega Genesis (but it also was on the FM Towns computer).\nthis system uses software mixing to provide two sample channels.", "this chip is mostly known for being in the Sega Genesis (but it also was on the FM Towns computer).\nthis system uses software mixing to provide two sample channels.",
{"FM 1", "FM 2", "FM 3", "FM 4", "FM 5", "FM 6/PCM 1", "PCM 2"}, {"FM 1", "FM 2", "FM 3", "FM 4", "FM 5", "FM 6/PCM 1", "PCM 2"},
@ -1724,7 +1724,7 @@ void DivEngine::registerSystems() {
fmOPN2PostEffectHandlerMap fmOPN2PostEffectHandlerMap
); );
sysDefs[DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT]=new DivSysDef( sysDefs[DIV_SYSTEM_YM2612_DUALPCM_EXT]=new DivSysDef(
"Yamaha YM2612 (OPN2) Extended Channel 3 with DualPCM and CSM", NULL, 0xbd, 0, 11, true, false, 0x150, false, 1U<<DIV_SAMPLE_DEPTH_8BIT, "Yamaha YM2612 (OPN2) Extended Channel 3 with DualPCM and CSM", NULL, 0xbd, 0, 11, true, false, 0x150, false, 1U<<DIV_SAMPLE_DEPTH_8BIT,
"this chip is mostly known for being in the Sega Genesis (but it also was on the FM Towns computer).\nthis system uses software mixing to provide two sample channels.\nthis one is in Extended Channel mode, which turns the third FM channel into four operators with independent notes/frequencies.", "this chip is mostly known for being in the Sega Genesis (but it also was on the FM Towns computer).\nthis system uses software mixing to provide two sample channels.\nthis one is in Extended Channel mode, which turns the third FM channel into four operators with independent notes/frequencies.",
{"FM 1", "FM 2", "FM 3 OP1", "FM 3 OP2", "FM 3 OP3", "FM 3 OP4", "FM 4", "FM 5", "FM 6/PCM 1", "PCM 2", "CSM Timer"}, {"FM 1", "FM 2", "FM 3 OP1", "FM 3 OP2", "FM 3 OP3", "FM 3 OP4", "FM 4", "FM 5", "FM 6/PCM 1", "PCM 2", "CSM Timer"},

View file

@ -32,10 +32,10 @@ void DivEngine::performVGMWrite(SafeWriter* w, DivSystem sys, DivRegWrite& write
unsigned char rf5c68Addr=isSecond?0xb1:0xb0; unsigned char rf5c68Addr=isSecond?0xb1:0xb0;
if (write.addr==0xffffffff) { // Furnace fake reset if (write.addr==0xffffffff) { // Furnace fake reset
switch (sys) { switch (sys) {
case DIV_SYSTEM_YM2612:
case DIV_SYSTEM_YM2612_EXT:
case DIV_SYSTEM_YM2612_DUALPCM: case DIV_SYSTEM_YM2612_DUALPCM:
case DIV_SYSTEM_YM2612_DUALPCM_EXT: case DIV_SYSTEM_YM2612_DUALPCM_EXT:
case DIV_SYSTEM_YM2612_DUALPCM_FRAC:
case DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT:
for (int i=0; i<3; i++) { // set SL and RR to highest for (int i=0; i<3; i++) { // set SL and RR to highest
w->writeC(2|baseAddr1); w->writeC(2|baseAddr1);
w->writeC(0x80+i); w->writeC(0x80+i);
@ -571,10 +571,10 @@ void DivEngine::performVGMWrite(SafeWriter* w, DivSystem sys, DivRegWrite& write
return; return;
} }
switch (sys) { switch (sys) {
case DIV_SYSTEM_YM2612:
case DIV_SYSTEM_YM2612_EXT:
case DIV_SYSTEM_YM2612_DUALPCM: case DIV_SYSTEM_YM2612_DUALPCM:
case DIV_SYSTEM_YM2612_DUALPCM_EXT: case DIV_SYSTEM_YM2612_DUALPCM_EXT:
case DIV_SYSTEM_YM2612_DUALPCM_FRAC:
case DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT:
switch (write.addr>>8) { switch (write.addr>>8) {
case 0: // port 0 case 0: // port 0
w->writeC(2|baseAddr1); w->writeC(2|baseAddr1);
@ -1178,10 +1178,10 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version, bool p
howManyChips++; howManyChips++;
} }
break; break;
case DIV_SYSTEM_YM2612:
case DIV_SYSTEM_YM2612_EXT:
case DIV_SYSTEM_YM2612_DUALPCM: case DIV_SYSTEM_YM2612_DUALPCM:
case DIV_SYSTEM_YM2612_DUALPCM_EXT: case DIV_SYSTEM_YM2612_DUALPCM_EXT:
case DIV_SYSTEM_YM2612_DUALPCM_FRAC:
case DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT:
if (!hasOPN2) { if (!hasOPN2) {
hasOPN2=disCont[i].dispatch->chipClock; hasOPN2=disCont[i].dispatch->chipClock;
willExport[i]=true; willExport[i]=true;
@ -1846,10 +1846,10 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version, bool p
if (!willExport[i]) continue; if (!willExport[i]) continue;
streamIDs[i]=streamID; streamIDs[i]=streamID;
switch (song.system[i]) { switch (song.system[i]) {
case DIV_SYSTEM_YM2612:
case DIV_SYSTEM_YM2612_EXT:
case DIV_SYSTEM_YM2612_DUALPCM: case DIV_SYSTEM_YM2612_DUALPCM:
case DIV_SYSTEM_YM2612_DUALPCM_EXT: case DIV_SYSTEM_YM2612_DUALPCM_EXT:
case DIV_SYSTEM_YM2612_DUALPCM_FRAC:
case DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT:
w->writeC(0x90); w->writeC(0x90);
w->writeC(streamID); w->writeC(streamID);
w->writeC(0x02); w->writeC(0x02);

View file

@ -239,10 +239,10 @@ void putDispatchChip(void* data, int type) {
ImVec4 colorOn=ImVec4(1.0f,1.0f,0.0f,1.0f); ImVec4 colorOn=ImVec4(1.0f,1.0f,0.0f,1.0f);
ImVec4 colorOff=ImVec4(0.3f,0.3f,0.3f,1.0f); ImVec4 colorOff=ImVec4(0.3f,0.3f,0.3f,1.0f);
switch (type) { switch (type) {
case DIV_SYSTEM_YM2612:
case DIV_SYSTEM_YM2612_EXT:
case DIV_SYSTEM_YM2612_DUALPCM: case DIV_SYSTEM_YM2612_DUALPCM:
case DIV_SYSTEM_YM2612_DUALPCM_EXT: case DIV_SYSTEM_YM2612_DUALPCM_EXT: {
case DIV_SYSTEM_YM2612_DUALPCM_FRAC:
case DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT: {
GENESIS_CHIP_DEBUG; GENESIS_CHIP_DEBUG;
break; break;
} }
@ -540,13 +540,13 @@ void putDispatchChan(void* data, int chanNum, int type) {
} }
break; break;
} }
case DIV_SYSTEM_YM2612_DUALPCM: case DIV_SYSTEM_YM2612:
case DIV_SYSTEM_YM2612_DUALPCM_FRAC: { case DIV_SYSTEM_YM2612_DUALPCM: {
GENESIS_CHAN_DEBUG; GENESIS_CHAN_DEBUG;
break; break;
} }
case DIV_SYSTEM_YM2612_DUALPCM_EXT: case DIV_SYSTEM_YM2612_EXT:
case DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT: { case DIV_SYSTEM_YM2612_DUALPCM_EXT: {
if (chanNum>=2 && chanNum<=5) { if (chanNum>=2 && chanNum<=5) {
DivPlatformOPN::OPNOpChannelStereo* ch=(DivPlatformOPN::OPNOpChannelStereo*)data; DivPlatformOPN::OPNOpChannelStereo* ch=(DivPlatformOPN::OPNOpChannelStereo*)data;
ImGui::Text("> YM2612 (per operator)"); ImGui::Text("> YM2612 (per operator)");

View file

@ -911,10 +911,10 @@ const FurnaceGUIColorDef guiColors[GUI_COLOR_MAX]={
// all chips // all chips
const int availableSystems[]={ const int availableSystems[]={
DIV_SYSTEM_YM2612,
DIV_SYSTEM_YM2612_EXT,
DIV_SYSTEM_YM2612_DUALPCM, DIV_SYSTEM_YM2612_DUALPCM,
DIV_SYSTEM_YM2612_DUALPCM_EXT, DIV_SYSTEM_YM2612_DUALPCM_EXT,
DIV_SYSTEM_YM2612_DUALPCM_FRAC,
DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT,
DIV_SYSTEM_SMS, DIV_SYSTEM_SMS,
DIV_SYSTEM_GB, DIV_SYSTEM_GB,
DIV_SYSTEM_PCE, DIV_SYSTEM_PCE,
@ -992,10 +992,10 @@ const int availableSystems[]={
// FM // FM
const int chipsFM[]={ const int chipsFM[]={
DIV_SYSTEM_YM2612,
DIV_SYSTEM_YM2612_EXT,
DIV_SYSTEM_YM2612_DUALPCM, DIV_SYSTEM_YM2612_DUALPCM,
DIV_SYSTEM_YM2612_DUALPCM_EXT, DIV_SYSTEM_YM2612_DUALPCM_EXT,
DIV_SYSTEM_YM2612_DUALPCM_FRAC,
DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT,
DIV_SYSTEM_YM2151, DIV_SYSTEM_YM2151,
DIV_SYSTEM_YM2610, DIV_SYSTEM_YM2610,
DIV_SYSTEM_YM2610_EXT, DIV_SYSTEM_YM2610_EXT,

View file

@ -45,31 +45,31 @@ void FurnaceGUI::initSystemPresets() {
CATEGORY_BEGIN("Game consoles","let's play some chiptune making games!"); CATEGORY_BEGIN("Game consoles","let's play some chiptune making games!");
ENTRY( ENTRY(
"Sega Genesis", { "Sega Genesis", {
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, ""), CH(DIV_SYSTEM_YM2612, 64, 0, ""),
CH(DIV_SYSTEM_SMS, 32, 0, "") CH(DIV_SYSTEM_SMS, 32, 0, "")
} }
); );
ENTRY( ENTRY(
"Sega Genesis (extended channel 3)", { "Sega Genesis (extended channel 3)", {
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, ""), CH(DIV_SYSTEM_YM2612_EXT, 64, 0, ""),
CH(DIV_SYSTEM_SMS, 32, 0, "") CH(DIV_SYSTEM_SMS, 32, 0, "")
} }
); );
ENTRY( ENTRY(
"Sega Genesis (DualPCM)", { "Sega Genesis (DualPCM)", {
CH(DIV_SYSTEM_YM2612_DUALPCM_FRAC, 64, 0, ""), CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, ""),
CH(DIV_SYSTEM_SMS, 32, 0, "") CH(DIV_SYSTEM_SMS, 32, 0, "")
} }
); );
ENTRY( ENTRY(
"Sega Genesis (DualPCM, extended channel 3)", { "Sega Genesis (DualPCM, extended channel 3)", {
CH(DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT, 64, 0, ""), CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, ""),
CH(DIV_SYSTEM_SMS, 32, 0, "") CH(DIV_SYSTEM_SMS, 32, 0, "")
} }
); );
ENTRY( ENTRY(
"Sega Genesis (with Sega CD)", { "Sega Genesis (with Sega CD)", {
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, ""), CH(DIV_SYSTEM_YM2612, 64, 0, ""),
CH(DIV_SYSTEM_SMS, 32, 0, ""), CH(DIV_SYSTEM_SMS, 32, 0, ""),
CH(DIV_SYSTEM_RF5C68, 64, 0, CH(DIV_SYSTEM_RF5C68, 64, 0,
"clockSel=2\n" "clockSel=2\n"
@ -79,7 +79,7 @@ void FurnaceGUI::initSystemPresets() {
); );
ENTRY( ENTRY(
"Sega Genesis (extended channel 3 with Sega CD)", { "Sega Genesis (extended channel 3 with Sega CD)", {
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, ""), CH(DIV_SYSTEM_YM2612_EXT, 64, 0, ""),
CH(DIV_SYSTEM_SMS, 32, 0, ""), CH(DIV_SYSTEM_SMS, 32, 0, ""),
CH(DIV_SYSTEM_RF5C68, 64, 0, CH(DIV_SYSTEM_RF5C68, 64, 0,
"clockSel=2\n" "clockSel=2\n"
@ -1047,13 +1047,13 @@ void FurnaceGUI::initSystemPresets() {
); );
ENTRY( ENTRY(
"FM Towns", { "FM Towns", {
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "clockSel=2"), // YM3438 CH(DIV_SYSTEM_YM2612, 64, 0, "clockSel=2"), // YM3438
CH(DIV_SYSTEM_RF5C68, 64, 0, "") CH(DIV_SYSTEM_RF5C68, 64, 0, "")
} }
); );
ENTRY( ENTRY(
"FM Towns (extended channel 3)", { "FM Towns (extended channel 3)", {
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "clockSel=2"), // YM3438 CH(DIV_SYSTEM_YM2612_EXT, 64, 0, "clockSel=2"), // YM3438
CH(DIV_SYSTEM_RF5C68, 64, 0, "") CH(DIV_SYSTEM_RF5C68, 64, 0, "")
} }
); );
@ -1121,22 +1121,22 @@ void FurnaceGUI::initSystemPresets() {
); );
ENTRY( ENTRY(
"Yamaha YM2612 (OPN2)", { "Yamaha YM2612 (OPN2)", {
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "ladderEffect=true") CH(DIV_SYSTEM_YM2612, 64, 0, "ladderEffect=true")
} }
); );
ENTRY( ENTRY(
"Yamaha YM2612 (extended channel 3)", { "Yamaha YM2612 (extended channel 3)", {
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "ladderEffect=true") CH(DIV_SYSTEM_YM2612_EXT, 64, 0, "ladderEffect=true")
} }
); );
ENTRY( ENTRY(
"Yamaha YM2612 (OPN2) with DualPCM", { "Yamaha YM2612 (OPN2) with DualPCM", {
CH(DIV_SYSTEM_YM2612_DUALPCM_FRAC, 64, 0, "ladderEffect=true") CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "ladderEffect=true")
} }
); );
ENTRY( ENTRY(
"Yamaha YM2612 (extended channel 3) with DualPCM", { "Yamaha YM2612 (extended channel 3) with DualPCM", {
CH(DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT, 64, 0, "ladderEffect=true") CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "ladderEffect=true")
} }
); );
ENTRY( ENTRY(
@ -1156,22 +1156,22 @@ void FurnaceGUI::initSystemPresets() {
); );
ENTRY( ENTRY(
"Yamaha YM3438 (OPN2C)", { "Yamaha YM3438 (OPN2C)", {
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "") CH(DIV_SYSTEM_YM2612, 64, 0, "")
} }
); );
ENTRY( ENTRY(
"Yamaha YM3438 (extended channel 3)", { "Yamaha YM3438 (extended channel 3)", {
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "") CH(DIV_SYSTEM_YM2612_EXT, 64, 0, "")
} }
); );
ENTRY( ENTRY(
"Yamaha YM3438 (OPN2C) with DualPCM", { "Yamaha YM3438 (OPN2C) with DualPCM", {
CH(DIV_SYSTEM_YM2612_DUALPCM_FRAC, 64, 0, "") CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "")
} }
); );
ENTRY( ENTRY(
"Yamaha YM3438 (extended channel 3) with DualPCM", { "Yamaha YM3438 (extended channel 3) with DualPCM", {
CH(DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT, 64, 0, "") CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "")
} }
); );
ENTRY( ENTRY(
@ -1719,57 +1719,57 @@ void FurnaceGUI::initSystemPresets() {
); );
ENTRY( ENTRY(
"Sega System 18", { "Sega System 18", {
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "clockSel=2"), // discrete 8MHz YM3438 CH(DIV_SYSTEM_YM2612, 64, 0, "clockSel=2"), // discrete 8MHz YM3438
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "clockSel=2"), // ^^ CH(DIV_SYSTEM_YM2612, 64, 0, "clockSel=2"), // ^^
CH(DIV_SYSTEM_RF5C68, 64, 0, "clockSel=1") // 10MHz CH(DIV_SYSTEM_RF5C68, 64, 0, "clockSel=1") // 10MHz
} }
); );
ENTRY( ENTRY(
"Sega System 18 (extended channel 3 on first OPN2C)", { "Sega System 18 (extended channel 3 on first OPN2C)", {
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "clockSel=2"), // discrete 8MHz YM3438 CH(DIV_SYSTEM_YM2612_EXT, 64, 0, "clockSel=2"), // discrete 8MHz YM3438
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "clockSel=2"), // ^^ CH(DIV_SYSTEM_YM2612, 64, 0, "clockSel=2"), // ^^
CH(DIV_SYSTEM_RF5C68, 64, 0, "clockSel=1") // 10MHz CH(DIV_SYSTEM_RF5C68, 64, 0, "clockSel=1") // 10MHz
} }
); );
ENTRY( ENTRY(
"Sega System 18 (extended channel 3 on second OPN2C)", { "Sega System 18 (extended channel 3 on second OPN2C)", {
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "clockSel=2"), // discrete 8MHz YM3438 CH(DIV_SYSTEM_YM2612, 64, 0, "clockSel=2"), // discrete 8MHz YM3438
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "clockSel=2"), // ^^ CH(DIV_SYSTEM_YM2612_EXT, 64, 0, "clockSel=2"), // ^^
CH(DIV_SYSTEM_RF5C68, 64, 0, "clockSel=1") // 10MHz CH(DIV_SYSTEM_RF5C68, 64, 0, "clockSel=1") // 10MHz
} }
); );
ENTRY( ENTRY(
"Sega System 18 (extended channel 3 on both OPN2Cs)", { "Sega System 18 (extended channel 3 on both OPN2Cs)", {
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "clockSel=2"), // discrete 8MHz YM3438 CH(DIV_SYSTEM_YM2612_EXT, 64, 0, "clockSel=2"), // discrete 8MHz YM3438
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "clockSel=2"), // ^^ CH(DIV_SYSTEM_YM2612_EXT, 64, 0, "clockSel=2"), // ^^
CH(DIV_SYSTEM_RF5C68, 64, 0, "clockSel=1") // 10MHz CH(DIV_SYSTEM_RF5C68, 64, 0, "clockSel=1") // 10MHz
} }
); );
ENTRY( ENTRY(
"Sega System 32", { "Sega System 32", {
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "clockSel=4"), // discrete 8.05MHz YM3438 CH(DIV_SYSTEM_YM2612, 64, 0, "clockSel=4"), // discrete 8.05MHz YM3438
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "clockSel=4"), // ^^ CH(DIV_SYSTEM_YM2612, 64, 0, "clockSel=4"), // ^^
CH(DIV_SYSTEM_RF5C68, 64, 0, "clockSel=2") // 12.5MHz CH(DIV_SYSTEM_RF5C68, 64, 0, "clockSel=2") // 12.5MHz
} }
); );
ENTRY( ENTRY(
"Sega System 32 (extended channel 3 on first OPN2C)", { "Sega System 32 (extended channel 3 on first OPN2C)", {
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "clockSel=4"), // discrete 8.05MHz YM3438 CH(DIV_SYSTEM_YM2612_EXT, 64, 0, "clockSel=4"), // discrete 8.05MHz YM3438
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "clockSel=4"), // ^^ CH(DIV_SYSTEM_YM2612, 64, 0, "clockSel=4"), // ^^
CH(DIV_SYSTEM_RF5C68, 64, 0, "clockSel=2") // 12.5MHz CH(DIV_SYSTEM_RF5C68, 64, 0, "clockSel=2") // 12.5MHz
} }
); );
ENTRY( ENTRY(
"Sega System 32 (extended channel 3 on second OPN2C)", { "Sega System 32 (extended channel 3 on second OPN2C)", {
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "clockSel=4"), // discrete 8.05MHz YM3438 CH(DIV_SYSTEM_YM2612, 64, 0, "clockSel=4"), // discrete 8.05MHz YM3438
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "clockSel=4"), // ^^ CH(DIV_SYSTEM_YM2612_EXT, 64, 0, "clockSel=4"), // ^^
CH(DIV_SYSTEM_RF5C68, 64, 0, "clockSel=2") // 12.5MHz CH(DIV_SYSTEM_RF5C68, 64, 0, "clockSel=2") // 12.5MHz
} }
); );
ENTRY( ENTRY(
"Sega System 32 (extended channel 3 on both OPN2Cs)", { "Sega System 32 (extended channel 3 on both OPN2Cs)", {
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "clockSel=4"), // discrete 8.05MHz YM3438 CH(DIV_SYSTEM_YM2612_EXT, 64, 0, "clockSel=4"), // discrete 8.05MHz YM3438
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "clockSel=4"), // ^^ CH(DIV_SYSTEM_YM2612_EXT, 64, 0, "clockSel=4"), // ^^
CH(DIV_SYSTEM_RF5C68, 64, 0, "clockSel=2") // 12.5MHz CH(DIV_SYSTEM_RF5C68, 64, 0, "clockSel=2") // 12.5MHz
} }
); );
@ -1986,13 +1986,13 @@ void FurnaceGUI::initSystemPresets() {
); );
ENTRY( ENTRY(
"Sunsoft Arcade", { "Sunsoft Arcade", {
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "clockSel=2"), // discrete YM3438 8MHz CH(DIV_SYSTEM_YM2612, 64, 0, "clockSel=2"), // discrete YM3438 8MHz
CH(DIV_SYSTEM_MSM6295, 64, 0, "clockSel=1") // 1.056MHz CH(DIV_SYSTEM_MSM6295, 64, 0, "clockSel=1") // 1.056MHz
} }
); );
ENTRY( ENTRY(
"Sunsoft Arcade (extended channel 3)", { "Sunsoft Arcade (extended channel 3)", {
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "clockSel=2"), // discrete YM3438 8MHz CH(DIV_SYSTEM_YM2612_EXT, 64, 0, "clockSel=2"), // discrete YM3438 8MHz
CH(DIV_SYSTEM_MSM6295, 64, 0, "clockSel=1") // 1.056MHz CH(DIV_SYSTEM_MSM6295, 64, 0, "clockSel=1") // 1.056MHz
} }
); );
@ -2331,13 +2331,13 @@ void FurnaceGUI::initSystemPresets() {
ENTRY( ENTRY(
"Seta 1 + FM addon", { "Seta 1 + FM addon", {
CH(DIV_SYSTEM_X1_010, 64, 0, ""), CH(DIV_SYSTEM_X1_010, 64, 0, ""),
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "clockSel=2") // Discrete YM3438 CH(DIV_SYSTEM_YM2612, 64, 0, "clockSel=2") // Discrete YM3438
} }
); );
ENTRY( ENTRY(
"Seta 1 + FM addon (extended channel 3)", { "Seta 1 + FM addon (extended channel 3)", {
CH(DIV_SYSTEM_X1_010, 64, 0, ""), CH(DIV_SYSTEM_X1_010, 64, 0, ""),
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "clockSel=2") // Discrete YM3438 CH(DIV_SYSTEM_YM2612_EXT, 64, 0, "clockSel=2") // Discrete YM3438
} }
); );
ENTRY( ENTRY(
@ -2432,13 +2432,13 @@ void FurnaceGUI::initSystemPresets() {
CATEGORY_BEGIN("DefleMask-compatible","these configurations are compatible with DefleMask.\nselect this if you need to save as .dmf or work with that program."); CATEGORY_BEGIN("DefleMask-compatible","these configurations are compatible with DefleMask.\nselect this if you need to save as .dmf or work with that program.");
ENTRY( ENTRY(
"Sega Genesis", { "Sega Genesis", {
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, ""), CH(DIV_SYSTEM_YM2612, 64, 0, ""),
CH(DIV_SYSTEM_SMS, 32, 0, "") CH(DIV_SYSTEM_SMS, 32, 0, "")
} }
); );
ENTRY( ENTRY(
"Sega Genesis (extended channel 3)", { "Sega Genesis (extended channel 3)", {
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, ""), CH(DIV_SYSTEM_YM2612_EXT, 64, 0, ""),
CH(DIV_SYSTEM_SMS, 32, 0, "") CH(DIV_SYSTEM_SMS, 32, 0, "")
} }
); );

View file

@ -333,7 +333,7 @@ void FurnaceGUI::drawSettings() {
ImGui::SameLine(); ImGui::SameLine();
if (ImGui::Button("Reset to defaults")) { if (ImGui::Button("Reset to defaults")) {
settings.initialSys.clear(); settings.initialSys.clear();
settings.initialSys.set("id0",e->systemToFileFur(DIV_SYSTEM_YM2612_DUALPCM)); settings.initialSys.set("id0",e->systemToFileFur(DIV_SYSTEM_YM2612));
settings.initialSys.set("vol0",64); settings.initialSys.set("vol0",64);
settings.initialSys.set("pan0",0); settings.initialSys.set("pan0",0);
settings.initialSys.set("flags0",""); settings.initialSys.set("flags0","");
@ -429,7 +429,7 @@ void FurnaceGUI::drawSettings() {
} }
if (sysCount<32) if (ImGui::Button(ICON_FA_PLUS "##InitSysAdd")) { if (sysCount<32) if (ImGui::Button(ICON_FA_PLUS "##InitSysAdd")) {
settings.initialSys.set(fmt::sprintf("id%d",sysCount),(int)e->systemToFileFur(DIV_SYSTEM_YM2612_DUALPCM)); settings.initialSys.set(fmt::sprintf("id%d",sysCount),(int)e->systemToFileFur(DIV_SYSTEM_YM2612));
settings.initialSys.set(fmt::sprintf("vol%d",sysCount),64); settings.initialSys.set(fmt::sprintf("vol%d",sysCount),64);
settings.initialSys.set(fmt::sprintf("pan%d",sysCount),0); settings.initialSys.set(fmt::sprintf("pan%d",sysCount),0);
settings.initialSys.set(fmt::sprintf("flags%d",sysCount),""); settings.initialSys.set(fmt::sprintf("flags%d",sysCount),"");
@ -2566,7 +2566,7 @@ void FurnaceGUI::syncSettings() {
settings.initialSys.loadFromBase64(initialSys2.c_str()); settings.initialSys.loadFromBase64(initialSys2.c_str());
if (settings.initialSys.getInt("id0",0)==0) { if (settings.initialSys.getInt("id0",0)==0) {
settings.initialSys.clear(); settings.initialSys.clear();
settings.initialSys.set("id0",e->systemToFileFur(DIV_SYSTEM_YM2612_DUALPCM)); settings.initialSys.set("id0",e->systemToFileFur(DIV_SYSTEM_YM2612));
settings.initialSys.set("vol0",64); settings.initialSys.set("vol0",64);
settings.initialSys.set("pan0",0); settings.initialSys.set("pan0",0);
settings.initialSys.set("flags0",""); settings.initialSys.set("flags0","");

View file

@ -28,10 +28,10 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo
bool supportsCustomRate=true; bool supportsCustomRate=true;
switch (type) { switch (type) {
case DIV_SYSTEM_YM2612:
case DIV_SYSTEM_YM2612_EXT:
case DIV_SYSTEM_YM2612_DUALPCM: case DIV_SYSTEM_YM2612_DUALPCM:
case DIV_SYSTEM_YM2612_DUALPCM_EXT: case DIV_SYSTEM_YM2612_DUALPCM_EXT: {
case DIV_SYSTEM_YM2612_DUALPCM_FRAC:
case DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT: {
int clockSel=flags.getInt("clockSel",0); int clockSel=flags.getInt("clockSel",0);
bool ladder=flags.getBool("ladderEffect",0); bool ladder=flags.getBool("ladderEffect",0);
bool noExtMacros=flags.getBool("noExtMacros",false); bool noExtMacros=flags.getBool("noExtMacros",false);
@ -59,7 +59,7 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo
if (ImGui::Checkbox("Enable DAC distortion",&ladder)) { if (ImGui::Checkbox("Enable DAC distortion",&ladder)) {
altered=true; altered=true;
} }
if (type==DIV_SYSTEM_YM2612_DUALPCM_EXT || type==DIV_SYSTEM_YM2612_DUALPCM_FRAC_EXT) { if (type==DIV_SYSTEM_YM2612_EXT || type==DIV_SYSTEM_YM2612_DUALPCM_EXT) {
if (ImGui::Checkbox("Disable ExtCh FM macros (compatibility)",&noExtMacros)) { if (ImGui::Checkbox("Disable ExtCh FM macros (compatibility)",&noExtMacros)) {
altered=true; altered=true;
} }