Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
This commit is contained in:
commit
0a49d4bfd0
449 changed files with 36799 additions and 10388 deletions
|
|
@ -109,6 +109,104 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool
|
|||
}
|
||||
break;
|
||||
}
|
||||
case DIV_SYSTEM_PCE: {
|
||||
sysPal=flags&1;
|
||||
if (ImGui::Checkbox("Pseudo-PAL",&sysPal)) {
|
||||
copyOfFlags=(flags&(~1))|(unsigned int)sysPal;
|
||||
}
|
||||
bool antiClick=flags&8;
|
||||
if (ImGui::Checkbox("Disable anti-click",&antiClick)) {
|
||||
copyOfFlags=(flags&(~8))|(antiClick<<3);
|
||||
}
|
||||
ImGui::Text("Chip revision:");
|
||||
if (ImGui::RadioButton("HuC6280 (original)",(flags&4)==0)) {
|
||||
copyOfFlags=(flags&(~4))|0;
|
||||
}
|
||||
if (ImGui::RadioButton("HuC6280A (SuperGrafx)",(flags&4)==4)) {
|
||||
copyOfFlags=(flags&(~4))|4;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DIV_SYSTEM_SOUND_UNIT: {
|
||||
ImGui::Text("CPU rate:");
|
||||
if (ImGui::RadioButton("6.18MHz (NTSC)",(flags&3)==0)) {
|
||||
copyOfFlags=(flags&(~3))|0;
|
||||
}
|
||||
if (ImGui::RadioButton("5.95MHz (PAL)",(flags&3)==1)) {
|
||||
copyOfFlags=(flags&(~3))|1;
|
||||
}
|
||||
ImGui::Text("Sample memory:");
|
||||
if (ImGui::RadioButton("8K (rev A/B/E)",(flags&16)==0)) {
|
||||
copyOfFlags=(flags&(~16))|0;
|
||||
}
|
||||
if (ImGui::RadioButton("64K (rev D/F)",(flags&16)==16)) {
|
||||
copyOfFlags=(flags&(~16))|16;
|
||||
}
|
||||
ImGui::Text("DAC resolution");
|
||||
if (ImGui::RadioButton("16-bit (rev A/B/D/F)",(flags&32)==0)) {
|
||||
copyOfFlags=(flags&(~32))|0;
|
||||
}
|
||||
if (ImGui::RadioButton("1-bit PDM (rev C/E)",(flags&32)==32)) {
|
||||
copyOfFlags=(flags&(~32))|32;
|
||||
}
|
||||
bool echo=flags&4;
|
||||
if (ImGui::Checkbox("Enable echo",&echo)) {
|
||||
copyOfFlags=(flags&(~4))|(echo<<2);
|
||||
}
|
||||
bool flipEcho=flags&8;
|
||||
if (ImGui::Checkbox("Swap echo channels",&flipEcho)) {
|
||||
copyOfFlags=(flags&(~8))|(flipEcho<<3);
|
||||
}
|
||||
ImGui::Text("Echo delay:");
|
||||
int echoBufSize=(flags&0x3f00)>>8;
|
||||
if (CWSliderInt("##EchoBufSize",&echoBufSize,0,63)) {
|
||||
if (echoBufSize<0) echoBufSize=0;
|
||||
if (echoBufSize>63) echoBufSize=63;
|
||||
copyOfFlags=(flags&~0x3f00)|(echoBufSize<<8);
|
||||
} rightClickable
|
||||
ImGui::Text("Echo resolution:");
|
||||
int echoResolution=(flags&0xf00000)>>20;
|
||||
if (CWSliderInt("##EchoResolution",&echoResolution,0,15)) {
|
||||
if (echoResolution<0) echoResolution=0;
|
||||
if (echoResolution>15) echoResolution=15;
|
||||
copyOfFlags=(flags&(~0xf00000))|(echoResolution<<20);
|
||||
} rightClickable
|
||||
ImGui::Text("Echo feedback:");
|
||||
int echoFeedback=(flags&0xf0000)>>16;
|
||||
if (CWSliderInt("##EchoFeedback",&echoFeedback,0,15)) {
|
||||
if (echoFeedback<0) echoFeedback=0;
|
||||
if (echoFeedback>15) echoFeedback=15;
|
||||
copyOfFlags=(flags&(~0xf0000))|(echoFeedback<<16);
|
||||
} rightClickable
|
||||
ImGui::Text("Echo volume:");
|
||||
int echoVolume=(signed char)((flags&0xff000000)>>24);
|
||||
if (CWSliderInt("##EchoVolume",&echoVolume,-128,127)) {
|
||||
if (echoVolume<-128) echoVolume=-128;
|
||||
if (echoVolume>127) echoVolume=127;
|
||||
copyOfFlags=(flags&(~0xff000000))|(((unsigned char)echoVolume)<<24);
|
||||
} rightClickable
|
||||
break;
|
||||
}
|
||||
case DIV_SYSTEM_GB: {
|
||||
bool antiClick=flags&8;
|
||||
if (ImGui::Checkbox("Disable anti-click",&antiClick)) {
|
||||
copyOfFlags=(flags&(~8))|(antiClick<<3);
|
||||
}
|
||||
ImGui::Text("Chip revision:");
|
||||
if (ImGui::RadioButton("Original (DMG)",(flags&7)==0)) {
|
||||
copyOfFlags=(flags&(~7))|0;
|
||||
}
|
||||
if (ImGui::RadioButton("Game Boy Color (rev C)",(flags&7)==1)) {
|
||||
copyOfFlags=(flags&(~7))|1;
|
||||
}
|
||||
if (ImGui::RadioButton("Game Boy Color (rev E)",(flags&7)==2)) {
|
||||
copyOfFlags=(flags&(~7))|2;
|
||||
}
|
||||
if (ImGui::RadioButton("Game Boy Advance",(flags&7)==3)) {
|
||||
copyOfFlags=(flags&(~7))|3;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DIV_SYSTEM_OPLL:
|
||||
case DIV_SYSTEM_OPLL_DRUMS:
|
||||
case DIV_SYSTEM_VRC7: {
|
||||
|
|
@ -119,7 +217,7 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool
|
|||
if (ImGui::RadioButton("PAL (3.55MHz)",(flags&15)==1)) {
|
||||
copyOfFlags=(flags&(~15))|1;
|
||||
}
|
||||
if (ImGui::RadioButton("BBC Micro (4MHz)",(flags&15)==2)) {
|
||||
if (ImGui::RadioButton("Arcade (4MHz)",(flags&15)==2)) {
|
||||
copyOfFlags=(flags&(~15))|2;
|
||||
}
|
||||
if (ImGui::RadioButton("Half NTSC (1.79MHz)",(flags&15)==3)) {
|
||||
|
|
@ -260,6 +358,14 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool
|
|||
if (ImGui::Checkbox("Stereo##_AY_STEREO",&stereo)) {
|
||||
copyOfFlags=(flags&(~0x40))|(stereo?0x40:0);
|
||||
}
|
||||
if (stereo) {
|
||||
int sep=256-((flags>>8)&255);
|
||||
if (CWSliderInt("Separation",&sep,1,256)) {
|
||||
if (sep<1) sep=1;
|
||||
if (sep>256) sep=256;
|
||||
copyOfFlags=(flags&(~0xff00))|((256-sep)<<8);
|
||||
}
|
||||
}
|
||||
ImGui::EndDisabled();
|
||||
bool clockSel=flags&0x80;
|
||||
ImGui::BeginDisabled((type==DIV_SYSTEM_AY8910) && ((flags&0x30)!=16));
|
||||
|
|
@ -304,6 +410,24 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool
|
|||
}
|
||||
break;
|
||||
}
|
||||
case DIV_SYSTEM_TIA: {
|
||||
ImGui::Text("Mixing mode:");
|
||||
if (ImGui::RadioButton("Mono",(flags&6)==0)) {
|
||||
copyOfFlags=(flags&(~6));
|
||||
}
|
||||
if (ImGui::RadioButton("Mono (no distortion)",(flags&6)==2)) {
|
||||
copyOfFlags=(flags&(~6))|2;
|
||||
}
|
||||
if (ImGui::RadioButton("Stereo",(flags&6)==4)) {
|
||||
copyOfFlags=(flags&(~6))|4;
|
||||
}
|
||||
|
||||
sysPal=flags&1;
|
||||
if (ImGui::Checkbox("PAL",&sysPal)) {
|
||||
copyOfFlags=(flags&(~1))|(unsigned int)sysPal;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DIV_SYSTEM_PCSPKR: {
|
||||
ImGui::Text("Speaker type:");
|
||||
if (ImGui::RadioButton("Unfiltered",(flags&3)==0)) {
|
||||
|
|
@ -578,7 +702,7 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool
|
|||
case DIV_SYSTEM_OPL3:
|
||||
case DIV_SYSTEM_OPL3_DRUMS: {
|
||||
ImGui::Text("Clock rate:");
|
||||
if (ImGui::RadioButton("14.32MHz (MTSC)",(flags&255)==0)) {
|
||||
if (ImGui::RadioButton("14.32MHz (NTSC)",(flags&255)==0)) {
|
||||
copyOfFlags=(flags&(~255))|0;
|
||||
}
|
||||
if (ImGui::RadioButton("14.19MHz (PAL)",(flags&255)==1)) {
|
||||
|
|
@ -600,10 +724,10 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool
|
|||
if (ImGui::RadioButton("16.9344MHz",(flags&255)==0)) {
|
||||
copyOfFlags=(flags&(~255))|0;
|
||||
}
|
||||
if (ImGui::RadioButton("14.32MHz (MTSC)",(flags&255)==1)) {
|
||||
if (ImGui::RadioButton("14.32MHz (NTSC)",(flags&255)==1)) {
|
||||
copyOfFlags=(flags&(~255))|1;
|
||||
}
|
||||
if (ImGui::RadioButton("14.19MHz (PAL)",(flags&255)==3)) {
|
||||
if (ImGui::RadioButton("14.19MHz (PAL)",(flags&255)==2)) {
|
||||
copyOfFlags=(flags&(~255))|2;
|
||||
}
|
||||
if (ImGui::RadioButton("16MHz",(flags&255)==3)) {
|
||||
|
|
@ -618,16 +742,18 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool
|
|||
break;
|
||||
}
|
||||
case DIV_SYSTEM_PCM_DAC: {
|
||||
// default to 44100Hz 16-bit stereo
|
||||
if (!flags) copyOfFlags=flags=0x1f0000|44099;
|
||||
int sampRate=(flags&65535)+1;
|
||||
int bitDepth=((flags>>16)&15)+1;
|
||||
bool stereo=(flags>>20)&1;
|
||||
ImGui::Text("Output rate:");
|
||||
if (CWSliderInt("##SampRate",&sampRate,1,65536)) {
|
||||
if (sampRate<1) sampRate=1;
|
||||
if (CWSliderInt("##SampRate",&sampRate,1000,65536)) {
|
||||
if (sampRate<1000) sampRate=1000;
|
||||
if (sampRate>65536) sampRate=65536;
|
||||
copyOfFlags=(flags&(~65535))|(sampRate-1);
|
||||
} rightClickable
|
||||
ImGui::Text("Output depth:");
|
||||
ImGui::Text("Output bit depth:");
|
||||
if (CWSliderInt("##BitDepth",&bitDepth,1,16)) {
|
||||
if (bitDepth<1) bitDepth=1;
|
||||
if (bitDepth>16) bitDepth=16;
|
||||
|
|
@ -638,12 +764,12 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool
|
|||
}
|
||||
break;
|
||||
}
|
||||
case DIV_SYSTEM_GB:
|
||||
case DIV_SYSTEM_SWAN:
|
||||
case DIV_SYSTEM_VERA:
|
||||
case DIV_SYSTEM_BUBSYS_WSG:
|
||||
case DIV_SYSTEM_YMU759:
|
||||
case DIV_SYSTEM_PET:
|
||||
case DIV_SYSTEM_SNES:
|
||||
case DIV_SYSTEM_T6W28:
|
||||
ImGui::Text("nothing to configure");
|
||||
break;
|
||||
|
|
@ -657,6 +783,9 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool
|
|||
if (copyOfFlags!=flags) {
|
||||
if (chan>=0) {
|
||||
e->setSysFlags(chan,copyOfFlags,restart);
|
||||
if (e->song.autoSystem) {
|
||||
autoDetectSystem();
|
||||
}
|
||||
updateWindowTitle();
|
||||
} else {
|
||||
flags=copyOfFlags;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue