mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-22 12:35:11 +00:00
prepare for 0.6pre3
OPN: add flag to make ExtCh op 1 be the only one controlling FB GUI: move Arcade presets to top GUI: fix YM2612 CSM not having flags
This commit is contained in:
parent
72ff7ad11a
commit
a09ad00e48
17 changed files with 549 additions and 499 deletions
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.tildearrow.furnace"
|
||||
android:versionCode="132"
|
||||
android:versionName="0.6pre2"
|
||||
android:versionCode="133"
|
||||
android:versionName="0.6pre3"
|
||||
android:installLocation="auto">
|
||||
|
||||
<!-- OpenGL ES 2.0 -->
|
||||
|
|
|
@ -32,6 +32,7 @@ these fields are 0 in format versions prior to 100 (0.6pre1).
|
|||
|
||||
the format versions are:
|
||||
|
||||
- 133: Furnace 0.6pre3
|
||||
- 132: Furnace 0.6pre2
|
||||
- 131: Furnace dev131
|
||||
- 130: Furnace dev130
|
||||
|
|
|
@ -15,17 +15,17 @@
|
|||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleLongVersionString</key>
|
||||
<string>0.6pre2</string>
|
||||
<string>0.6pre3</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Furnace</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.6pre2</string>
|
||||
<string>0.6pre3</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>0.6pre2</string>
|
||||
<string>0.6pre3</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string></string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
|
|
|
@ -47,8 +47,8 @@
|
|||
#define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock();
|
||||
#define BUSY_END isBusy.unlock(); softLocked=false;
|
||||
|
||||
#define DIV_VERSION "0.6pre2"
|
||||
#define DIV_ENGINE_VERSION 132
|
||||
#define DIV_VERSION "0.6pre3"
|
||||
#define DIV_ENGINE_VERSION 133
|
||||
// for imports
|
||||
#define DIV_VERSION_MOD 0xff01
|
||||
#define DIV_VERSION_FC 0xff02
|
||||
|
|
|
@ -2511,17 +2511,25 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) {
|
|||
}
|
||||
|
||||
// ExtCh compat flag
|
||||
if (ds.version<125) {
|
||||
for (int i=0; i<ds.systemLen; i++) {
|
||||
if (ds.system[i]==DIV_SYSTEM_YM2612_EXT ||
|
||||
ds.system[i]==DIV_SYSTEM_YM2612_DUALPCM_EXT ||
|
||||
ds.system[i]==DIV_SYSTEM_YM2610_EXT ||
|
||||
ds.system[i]==DIV_SYSTEM_YM2610_FULL_EXT ||
|
||||
ds.system[i]==DIV_SYSTEM_YM2610B_EXT ||
|
||||
ds.system[i]==DIV_SYSTEM_YM2203_EXT ||
|
||||
ds.system[i]==DIV_SYSTEM_YM2608_EXT) {
|
||||
for (int i=0; i<ds.systemLen; i++) {
|
||||
if (ds.system[i]==DIV_SYSTEM_YM2612_EXT ||
|
||||
ds.system[i]==DIV_SYSTEM_YM2612_DUALPCM_EXT ||
|
||||
ds.system[i]==DIV_SYSTEM_YM2610_EXT ||
|
||||
ds.system[i]==DIV_SYSTEM_YM2610_FULL_EXT ||
|
||||
ds.system[i]==DIV_SYSTEM_YM2610B_EXT ||
|
||||
ds.system[i]==DIV_SYSTEM_YM2203_EXT ||
|
||||
ds.system[i]==DIV_SYSTEM_YM2608_EXT ||
|
||||
ds.system[i]==DIV_SYSTEM_YM2612_CSM ||
|
||||
ds.system[i]==DIV_SYSTEM_YM2203_CSM ||
|
||||
ds.system[i]==DIV_SYSTEM_YM2608_CSM ||
|
||||
ds.system[i]==DIV_SYSTEM_YM2610_CSM ||
|
||||
ds.system[i]==DIV_SYSTEM_YM2610B_CSM) {
|
||||
if (ds.version<125) {
|
||||
ds.systemFlags[i].set("noExtMacros",true);
|
||||
}
|
||||
if (ds.version<133) {
|
||||
ds.systemFlags[i].set("fbAllOps",true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -154,7 +154,7 @@ class DivPlatformOPN: public DivPlatformFMBase {
|
|||
unsigned int ayDiv;
|
||||
unsigned char csmChan;
|
||||
unsigned char lfoValue;
|
||||
bool extSys, useCombo;
|
||||
bool extSys, useCombo, fbAllOps;
|
||||
|
||||
DivConfig ayFlags;
|
||||
|
||||
|
@ -173,7 +173,8 @@ class DivPlatformOPN: public DivPlatformFMBase {
|
|||
csmChan(cc),
|
||||
lfoValue(0),
|
||||
extSys(isExtSys),
|
||||
useCombo(false) {}
|
||||
useCombo(false),
|
||||
fbAllOps(false) {}
|
||||
public:
|
||||
void setCombo(bool combo) {
|
||||
useCombo=combo;
|
||||
|
|
|
@ -1250,6 +1250,7 @@ void DivPlatformGenesis::setFlags(const DivConfig& flags) {
|
|||
}
|
||||
ladder=flags.getBool("ladderEffect",false);
|
||||
noExtMacros=flags.getBool("noExtMacros",false);
|
||||
fbAllOps=flags.getBool("fbAllOps",false);
|
||||
OPN2_SetChipType(&fm,ladder?ym3438_mode_ym2612:0);
|
||||
CHECK_CUSTOM_CLOCK;
|
||||
if (useYMFM) {
|
||||
|
|
|
@ -46,7 +46,9 @@ int DivPlatformGenesisExt::dispatch(DivCommand c) {
|
|||
|
||||
if (opChan[ch].insChanged) {
|
||||
chan[2].state.alg=ins->fm.alg;
|
||||
chan[2].state.fb=ins->fm.fb;
|
||||
if (ch==0 || fbAllOps) {
|
||||
chan[2].state.fb=ins->fm.fb;
|
||||
}
|
||||
chan[2].state.fms=ins->fm.fms;
|
||||
chan[2].state.ams=ins->fm.ams;
|
||||
chan[2].state.op[ordch]=ins->fm.op[ordch];
|
||||
|
|
|
@ -1041,6 +1041,7 @@ void DivPlatformYM2203::setFlags(const DivConfig& flags) {
|
|||
}
|
||||
CHECK_CUSTOM_CLOCK;
|
||||
noExtMacros=flags.getBool("noExtMacros",false);
|
||||
fbAllOps=flags.getBool("fbAllOps",false);
|
||||
rate=fm->sample_rate(chipClock);
|
||||
for (int i=0; i<6; i++) {
|
||||
oscBuf[i]->rate=rate;
|
||||
|
|
|
@ -44,7 +44,9 @@ int DivPlatformYM2203Ext::dispatch(DivCommand c) {
|
|||
|
||||
if (opChan[ch].insChanged) {
|
||||
chan[2].state.alg=ins->fm.alg;
|
||||
chan[2].state.fb=ins->fm.fb;
|
||||
if (ch==0 || fbAllOps) {
|
||||
chan[2].state.fb=ins->fm.fb;
|
||||
}
|
||||
chan[2].state.op[ordch]=ins->fm.op[ordch];
|
||||
}
|
||||
|
||||
|
|
|
@ -1538,6 +1538,7 @@ void DivPlatformYM2608::setFlags(const DivConfig& flags) {
|
|||
}
|
||||
CHECK_CUSTOM_CLOCK;
|
||||
noExtMacros=flags.getBool("noExtMacros",false);
|
||||
fbAllOps=flags.getBool("fbAllOps",false);
|
||||
rate=fm->sample_rate(chipClock);
|
||||
for (int i=0; i<16; i++) {
|
||||
oscBuf[i]->rate=rate;
|
||||
|
|
|
@ -44,7 +44,9 @@ int DivPlatformYM2608Ext::dispatch(DivCommand c) {
|
|||
|
||||
if (opChan[ch].insChanged) {
|
||||
chan[2].state.alg=ins->fm.alg;
|
||||
chan[2].state.fb=ins->fm.fb;
|
||||
if (ch==0 || fbAllOps) {
|
||||
chan[2].state.fb=ins->fm.fb;
|
||||
}
|
||||
chan[2].state.fms=ins->fm.fms;
|
||||
chan[2].state.ams=ins->fm.ams;
|
||||
chan[2].state.op[ordch]=ins->fm.op[ordch];
|
||||
|
|
|
@ -40,7 +40,9 @@ int DivPlatformYM2610BExt::dispatch(DivCommand c) {
|
|||
|
||||
if (opChan[ch].insChanged) {
|
||||
chan[extChanOffs].state.alg=ins->fm.alg;
|
||||
chan[extChanOffs].state.fb=ins->fm.fb;
|
||||
if (ch==0 || fbAllOps) {
|
||||
chan[extChanOffs].state.fb=ins->fm.fb;
|
||||
}
|
||||
chan[extChanOffs].state.fms=ins->fm.fms;
|
||||
chan[extChanOffs].state.ams=ins->fm.ams;
|
||||
chan[extChanOffs].state.op[ordch]=ins->fm.op[ordch];
|
||||
|
|
|
@ -40,7 +40,9 @@ int DivPlatformYM2610Ext::dispatch(DivCommand c) {
|
|||
|
||||
if (opChan[ch].insChanged) {
|
||||
chan[extChanOffs].state.alg=ins->fm.alg;
|
||||
chan[extChanOffs].state.fb=ins->fm.fb;
|
||||
if (ch==0 || fbAllOps) {
|
||||
chan[extChanOffs].state.fb=ins->fm.fb;
|
||||
}
|
||||
chan[extChanOffs].state.fms=ins->fm.fms;
|
||||
chan[extChanOffs].state.ams=ins->fm.ams;
|
||||
chan[extChanOffs].state.op[ordch]=ins->fm.op[ordch];
|
||||
|
|
|
@ -221,6 +221,7 @@ class DivPlatformYM2610Base: public DivPlatformOPN {
|
|||
}
|
||||
CHECK_CUSTOM_CLOCK;
|
||||
noExtMacros=flags.getBool("noExtMacros",false);
|
||||
fbAllOps=flags.getBool("fbAllOps",false);
|
||||
rate=fm->sample_rate(chipClock);
|
||||
for (int i=0; i<16; i++) {
|
||||
oscBuf[i]->rate=rate;
|
||||
|
|
|
@ -1114,474 +1114,6 @@ void FurnaceGUI::initSystemPresets() {
|
|||
);
|
||||
CATEGORY_END;
|
||||
|
||||
CATEGORY_BEGIN("FM","chips which use frequency modulation (FM) to generate sound.\nsome of these also pack more (like square and sample channels).");
|
||||
ENTRY(
|
||||
"Yamaha YM2151 (OPM)", {
|
||||
CH(DIV_SYSTEM_YM2151, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2203 (OPN)", {
|
||||
CH(DIV_SYSTEM_YM2203, 64, 0, "clockSel=3")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2203 (extended channel 3)", {
|
||||
CH(DIV_SYSTEM_YM2203_EXT, 64, 0, "clockSel=3")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2608 (OPNA)", {
|
||||
CH(DIV_SYSTEM_YM2608, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2608 (extended channel 3)", {
|
||||
CH(DIV_SYSTEM_YM2608_EXT, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2610 (OPNB)", {
|
||||
CH(DIV_SYSTEM_YM2610_FULL, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2610 (extended channel 2)", {
|
||||
CH(DIV_SYSTEM_YM2610_FULL_EXT, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2610B (OPNB2)", {
|
||||
CH(DIV_SYSTEM_YM2610B, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2610B (extended channel 3)", {
|
||||
CH(DIV_SYSTEM_YM2610B_EXT, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2612 (OPN2)", {
|
||||
CH(DIV_SYSTEM_YM2612, 64, 0, "ladderEffect=true")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2612 (extended channel 3)", {
|
||||
CH(DIV_SYSTEM_YM2612_EXT, 64, 0, "ladderEffect=true")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2612 (OPN2) CSM", {
|
||||
CH(DIV_SYSTEM_YM2612_CSM, 64, 0, "ladderEffect=true")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2612 (OPN2) with DualPCM", {
|
||||
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "ladderEffect=true")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2612 (extended channel 3) with DualPCM", {
|
||||
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "ladderEffect=true")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2413 (OPLL)", {
|
||||
CH(DIV_SYSTEM_OPLL, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2413 (drums mode)", {
|
||||
CH(DIV_SYSTEM_OPLL_DRUMS, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2414 (OPZ)", {
|
||||
CH(DIV_SYSTEM_OPZ, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM3438 (OPN2C)", {
|
||||
CH(DIV_SYSTEM_YM2612, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM3438 (extended channel 3)", {
|
||||
CH(DIV_SYSTEM_YM2612_EXT, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM3438 (OPN2C) CSM", {
|
||||
CH(DIV_SYSTEM_YM2612_CSM, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM3438 (OPN2C) with DualPCM", {
|
||||
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM3438 (extended channel 3) with DualPCM", {
|
||||
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM3526 (OPL)", {
|
||||
CH(DIV_SYSTEM_OPL, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM3526 (drums mode)", {
|
||||
CH(DIV_SYSTEM_OPL_DRUMS, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha Y8950", {
|
||||
CH(DIV_SYSTEM_Y8950, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha Y8950 (drums mode)", {
|
||||
CH(DIV_SYSTEM_Y8950_DRUMS, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM3812 (OPL2)", {
|
||||
CH(DIV_SYSTEM_OPL2, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM3812 (drums mode)", {
|
||||
CH(DIV_SYSTEM_OPL2_DRUMS, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YMF262 (OPL3)", {
|
||||
CH(DIV_SYSTEM_OPL3, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YMF262 (drums mode)", {
|
||||
CH(DIV_SYSTEM_OPL3_DRUMS, 64, 0, "")
|
||||
}
|
||||
);
|
||||
if (settings.hiddenSystems) {
|
||||
ENTRY(
|
||||
"Yamaha YMU759 (MA-2)", {
|
||||
CH(DIV_SYSTEM_YMU759, 64, 0, "")
|
||||
}
|
||||
);
|
||||
}
|
||||
CATEGORY_END;
|
||||
|
||||
CATEGORY_BEGIN("Square","these chips generate square/pulse tones only (but may include noise).");
|
||||
ENTRY(
|
||||
"TI SN76489", {
|
||||
CH(DIV_SYSTEM_SMS, 64, 0, "chipType=1")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"TI SN76489A", {
|
||||
CH(DIV_SYSTEM_SMS, 64, 0, "chipType=4")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"TI SN76496", {
|
||||
CH(DIV_SYSTEM_SMS, 64, 0, "chipType=5")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"NCR 8496", {
|
||||
CH(DIV_SYSTEM_SMS, 64, 0, "chipType=6")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Tandy PSSJ 3-voice sound", {
|
||||
CH(DIV_SYSTEM_SMS, 64, 0, "chipType=7")
|
||||
// 8 bit DAC
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Sega PSG (SN76489-like)", {
|
||||
CH(DIV_SYSTEM_SMS, 64, 0, ""),
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Sega PSG (SN76489-like, Stereo)", {
|
||||
CH(DIV_SYSTEM_SMS, 64, 0, "chipType=3")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"TI SN94624", {
|
||||
CH(DIV_SYSTEM_SMS, 64, 0,
|
||||
"clockSel=6\n"
|
||||
"chipType=8\n"
|
||||
)
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"TI SN76494", {
|
||||
CH(DIV_SYSTEM_SMS, 64, 0,
|
||||
"clockSel=6\n"
|
||||
"chipType=9\n"
|
||||
)
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Toshiba T6W28", {
|
||||
CH(DIV_SYSTEM_T6W28, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"AY-3-8910", {
|
||||
CH(DIV_SYSTEM_AY8910, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"AY-3-8914", {
|
||||
CH(DIV_SYSTEM_AY8910, 64, 0, "chipType=3")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2149(F)", {
|
||||
CH(DIV_SYSTEM_AY8910, 64, 0, "chipType=1")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Philips SAA1099", {
|
||||
CH(DIV_SYSTEM_SAA1099, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"PC Speaker", {
|
||||
CH(DIV_SYSTEM_PCSPKR, 32, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Pokémon Mini", {
|
||||
CH(DIV_SYSTEM_POKEMINI, 32, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Commodore VIC", {
|
||||
CH(DIV_SYSTEM_VIC20, 64, 0, "clockSel=1")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"OKI MSM5232", {
|
||||
CH(DIV_SYSTEM_MSM5232, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Pong", {
|
||||
CH(DIV_SYSTEM_PONG, 64, 0, "")
|
||||
}
|
||||
);
|
||||
CATEGORY_END;
|
||||
|
||||
CATEGORY_BEGIN("Sample","chips/systems which use PCM or ADPCM samples for sound synthesis.");
|
||||
ENTRY(
|
||||
"Amiga", {
|
||||
CH(DIV_SYSTEM_AMIGA, 64, 0, "clockSel=1")
|
||||
},
|
||||
"tickRate=50"
|
||||
);
|
||||
ENTRY(
|
||||
"SegaPCM", {
|
||||
CH(DIV_SYSTEM_SEGAPCM, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Capcom QSound", {
|
||||
CH(DIV_SYSTEM_QSOUND, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Seta/Allumer X1-010", {
|
||||
CH(DIV_SYSTEM_X1_010, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YMZ280B (PCMD8)", {
|
||||
CH(DIV_SYSTEM_YMZ280B, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Ricoh RF5C68", {
|
||||
CH(DIV_SYSTEM_RF5C68, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"OKI MSM6258", {
|
||||
CH(DIV_SYSTEM_MSM6258, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"OKI MSM6295", {
|
||||
CH(DIV_SYSTEM_MSM6295, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"SNES", {
|
||||
CH(DIV_SYSTEM_SNES, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Konami K007232", {
|
||||
CH(DIV_SYSTEM_K007232, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Irem GA20", {
|
||||
CH(DIV_SYSTEM_GA20, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Generic PCM DAC", {
|
||||
CH(DIV_SYSTEM_PCM_DAC, 64, 0, "")
|
||||
}
|
||||
);
|
||||
CATEGORY_END;
|
||||
|
||||
CATEGORY_BEGIN("Wavetable","chips which use user-specified waveforms to generate sound.");
|
||||
ENTRY(
|
||||
"PC Engine", {
|
||||
CH(DIV_SYSTEM_PCE, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Commodore PET (pseudo-wavetable)", {
|
||||
CH(DIV_SYSTEM_PET, 64, 0, "")
|
||||
},
|
||||
"tickRate=50"
|
||||
);
|
||||
ENTRY(
|
||||
"Konami Bubble System WSG", {
|
||||
CH(DIV_SYSTEM_BUBSYS_WSG, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Konami SCC", {
|
||||
CH(DIV_SYSTEM_SCC, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Konami SCC+", {
|
||||
CH(DIV_SYSTEM_SCC_PLUS, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Namco WSG", {
|
||||
CH(DIV_SYSTEM_NAMCO, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Namco C15 (8-channel mono)", {
|
||||
CH(DIV_SYSTEM_NAMCO_15XX, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Namco C30 (8-channel stereo)", {
|
||||
CH(DIV_SYSTEM_NAMCO_CUS30, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Namco 163", {
|
||||
CH(DIV_SYSTEM_N163, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Famicom Disk System (chip)", {
|
||||
CH(DIV_SYSTEM_FDS, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"WonderSwan", {
|
||||
CH(DIV_SYSTEM_SWAN, 64, 0, "")
|
||||
},
|
||||
"tickRate=75.47169811320754716981"
|
||||
);
|
||||
ENTRY(
|
||||
"Virtual Boy", {
|
||||
CH(DIV_SYSTEM_VBOY, 64, 0, "")
|
||||
},
|
||||
"tickRate=50.2734877734878"
|
||||
);
|
||||
ENTRY(
|
||||
"Seta/Allumer X1-010", {
|
||||
CH(DIV_SYSTEM_X1_010, 64, 0, "")
|
||||
}
|
||||
);
|
||||
CATEGORY_END;
|
||||
|
||||
CATEGORY_BEGIN("Specialized","chips/systems with unique sound synthesis methods.");
|
||||
ENTRY(
|
||||
"MOS Technology SID (6581)", {
|
||||
CH(DIV_SYSTEM_C64_6581, 64, 0, "clockSel=1")
|
||||
},
|
||||
"tickRate=50.1245421"
|
||||
);
|
||||
ENTRY(
|
||||
"MOS Technology SID (8580)", {
|
||||
CH(DIV_SYSTEM_C64_8580, 64, 0, "clockSel=1")
|
||||
},
|
||||
"tickRate=50.1245421"
|
||||
);
|
||||
ENTRY(
|
||||
"Microchip AY8930", {
|
||||
CH(DIV_SYSTEM_AY8930, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Game Boy", {
|
||||
CH(DIV_SYSTEM_GB, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Atari Lynx", {
|
||||
CH(DIV_SYSTEM_LYNX, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"POKEY", {
|
||||
CH(DIV_SYSTEM_POKEY, 64, 0, "clockSel=1")
|
||||
},
|
||||
"tickRate=50"
|
||||
);
|
||||
ENTRY(
|
||||
"Atari TIA", {
|
||||
CH(DIV_SYSTEM_TIA, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"NES (Ricoh 2A03)", {
|
||||
CH(DIV_SYSTEM_NES, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Commander X16 (VERA only)", {
|
||||
CH(DIV_SYSTEM_VERA, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"ZX Spectrum (beeper only)", {
|
||||
CH(DIV_SYSTEM_SFX_BEEPER, 64, 0, "")
|
||||
}
|
||||
);
|
||||
if (settings.hiddenSystems) {
|
||||
ENTRY(
|
||||
"Dummy System", {
|
||||
CH(DIV_SYSTEM_DUMMY, 64, 0, "")
|
||||
}
|
||||
);
|
||||
}
|
||||
ENTRY(
|
||||
"tildearrow Sound Unit", {
|
||||
CH(DIV_SYSTEM_SOUND_UNIT, 64, 0, "")
|
||||
}
|
||||
);
|
||||
CATEGORY_END;
|
||||
|
||||
CATEGORY_BEGIN("Arcade systems","INSERT COIN");
|
||||
ENTRY(
|
||||
"Pong", {
|
||||
|
@ -2564,6 +2096,475 @@ void FurnaceGUI::initSystemPresets() {
|
|||
);
|
||||
CATEGORY_END;
|
||||
|
||||
|
||||
CATEGORY_BEGIN("FM","chips which use frequency modulation (FM) to generate sound.\nsome of these also pack more (like square and sample channels).");
|
||||
ENTRY(
|
||||
"Yamaha YM2151 (OPM)", {
|
||||
CH(DIV_SYSTEM_YM2151, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2203 (OPN)", {
|
||||
CH(DIV_SYSTEM_YM2203, 64, 0, "clockSel=3")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2203 (extended channel 3)", {
|
||||
CH(DIV_SYSTEM_YM2203_EXT, 64, 0, "clockSel=3")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2608 (OPNA)", {
|
||||
CH(DIV_SYSTEM_YM2608, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2608 (extended channel 3)", {
|
||||
CH(DIV_SYSTEM_YM2608_EXT, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2610 (OPNB)", {
|
||||
CH(DIV_SYSTEM_YM2610_FULL, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2610 (extended channel 2)", {
|
||||
CH(DIV_SYSTEM_YM2610_FULL_EXT, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2610B (OPNB2)", {
|
||||
CH(DIV_SYSTEM_YM2610B, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2610B (extended channel 3)", {
|
||||
CH(DIV_SYSTEM_YM2610B_EXT, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2612 (OPN2)", {
|
||||
CH(DIV_SYSTEM_YM2612, 64, 0, "ladderEffect=true")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2612 (extended channel 3)", {
|
||||
CH(DIV_SYSTEM_YM2612_EXT, 64, 0, "ladderEffect=true")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2612 (OPN2) CSM", {
|
||||
CH(DIV_SYSTEM_YM2612_CSM, 64, 0, "ladderEffect=true")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2612 (OPN2) with DualPCM", {
|
||||
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "ladderEffect=true")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2612 (extended channel 3) with DualPCM", {
|
||||
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "ladderEffect=true")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2413 (OPLL)", {
|
||||
CH(DIV_SYSTEM_OPLL, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2413 (drums mode)", {
|
||||
CH(DIV_SYSTEM_OPLL_DRUMS, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2414 (OPZ)", {
|
||||
CH(DIV_SYSTEM_OPZ, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM3438 (OPN2C)", {
|
||||
CH(DIV_SYSTEM_YM2612, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM3438 (extended channel 3)", {
|
||||
CH(DIV_SYSTEM_YM2612_EXT, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM3438 (OPN2C) CSM", {
|
||||
CH(DIV_SYSTEM_YM2612_CSM, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM3438 (OPN2C) with DualPCM", {
|
||||
CH(DIV_SYSTEM_YM2612_DUALPCM, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM3438 (extended channel 3) with DualPCM", {
|
||||
CH(DIV_SYSTEM_YM2612_DUALPCM_EXT, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM3526 (OPL)", {
|
||||
CH(DIV_SYSTEM_OPL, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM3526 (drums mode)", {
|
||||
CH(DIV_SYSTEM_OPL_DRUMS, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha Y8950", {
|
||||
CH(DIV_SYSTEM_Y8950, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha Y8950 (drums mode)", {
|
||||
CH(DIV_SYSTEM_Y8950_DRUMS, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM3812 (OPL2)", {
|
||||
CH(DIV_SYSTEM_OPL2, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM3812 (drums mode)", {
|
||||
CH(DIV_SYSTEM_OPL2_DRUMS, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YMF262 (OPL3)", {
|
||||
CH(DIV_SYSTEM_OPL3, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YMF262 (drums mode)", {
|
||||
CH(DIV_SYSTEM_OPL3_DRUMS, 64, 0, "")
|
||||
}
|
||||
);
|
||||
if (settings.hiddenSystems) {
|
||||
ENTRY(
|
||||
"Yamaha YMU759 (MA-2)", {
|
||||
CH(DIV_SYSTEM_YMU759, 64, 0, "")
|
||||
}
|
||||
);
|
||||
}
|
||||
CATEGORY_END;
|
||||
|
||||
CATEGORY_BEGIN("Square","these chips generate square/pulse tones only (but may include noise).");
|
||||
ENTRY(
|
||||
"TI SN76489", {
|
||||
CH(DIV_SYSTEM_SMS, 64, 0, "chipType=1")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"TI SN76489A", {
|
||||
CH(DIV_SYSTEM_SMS, 64, 0, "chipType=4")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"TI SN76496", {
|
||||
CH(DIV_SYSTEM_SMS, 64, 0, "chipType=5")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"NCR 8496", {
|
||||
CH(DIV_SYSTEM_SMS, 64, 0, "chipType=6")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Tandy PSSJ 3-voice sound", {
|
||||
CH(DIV_SYSTEM_SMS, 64, 0, "chipType=7")
|
||||
// 8 bit DAC
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Sega PSG (SN76489-like)", {
|
||||
CH(DIV_SYSTEM_SMS, 64, 0, ""),
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Sega PSG (SN76489-like, Stereo)", {
|
||||
CH(DIV_SYSTEM_SMS, 64, 0, "chipType=3")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"TI SN94624", {
|
||||
CH(DIV_SYSTEM_SMS, 64, 0,
|
||||
"clockSel=6\n"
|
||||
"chipType=8\n"
|
||||
)
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"TI SN76494", {
|
||||
CH(DIV_SYSTEM_SMS, 64, 0,
|
||||
"clockSel=6\n"
|
||||
"chipType=9\n"
|
||||
)
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Toshiba T6W28", {
|
||||
CH(DIV_SYSTEM_T6W28, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"AY-3-8910", {
|
||||
CH(DIV_SYSTEM_AY8910, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"AY-3-8914", {
|
||||
CH(DIV_SYSTEM_AY8910, 64, 0, "chipType=3")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YM2149(F)", {
|
||||
CH(DIV_SYSTEM_AY8910, 64, 0, "chipType=1")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Philips SAA1099", {
|
||||
CH(DIV_SYSTEM_SAA1099, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"PC Speaker", {
|
||||
CH(DIV_SYSTEM_PCSPKR, 32, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Pokémon Mini", {
|
||||
CH(DIV_SYSTEM_POKEMINI, 32, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Commodore VIC", {
|
||||
CH(DIV_SYSTEM_VIC20, 64, 0, "clockSel=1")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"OKI MSM5232", {
|
||||
CH(DIV_SYSTEM_MSM5232, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Pong", {
|
||||
CH(DIV_SYSTEM_PONG, 64, 0, "")
|
||||
}
|
||||
);
|
||||
CATEGORY_END;
|
||||
|
||||
CATEGORY_BEGIN("Sample","chips/systems which use PCM or ADPCM samples for sound synthesis.");
|
||||
ENTRY(
|
||||
"Amiga", {
|
||||
CH(DIV_SYSTEM_AMIGA, 64, 0, "clockSel=1")
|
||||
},
|
||||
"tickRate=50"
|
||||
);
|
||||
ENTRY(
|
||||
"SegaPCM", {
|
||||
CH(DIV_SYSTEM_SEGAPCM, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Capcom QSound", {
|
||||
CH(DIV_SYSTEM_QSOUND, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Seta/Allumer X1-010", {
|
||||
CH(DIV_SYSTEM_X1_010, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Yamaha YMZ280B (PCMD8)", {
|
||||
CH(DIV_SYSTEM_YMZ280B, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Ricoh RF5C68", {
|
||||
CH(DIV_SYSTEM_RF5C68, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"OKI MSM6258", {
|
||||
CH(DIV_SYSTEM_MSM6258, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"OKI MSM6295", {
|
||||
CH(DIV_SYSTEM_MSM6295, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"SNES", {
|
||||
CH(DIV_SYSTEM_SNES, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Konami K007232", {
|
||||
CH(DIV_SYSTEM_K007232, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Irem GA20", {
|
||||
CH(DIV_SYSTEM_GA20, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Generic PCM DAC", {
|
||||
CH(DIV_SYSTEM_PCM_DAC, 64, 0, "")
|
||||
}
|
||||
);
|
||||
CATEGORY_END;
|
||||
|
||||
CATEGORY_BEGIN("Wavetable","chips which use user-specified waveforms to generate sound.");
|
||||
ENTRY(
|
||||
"PC Engine", {
|
||||
CH(DIV_SYSTEM_PCE, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Commodore PET (pseudo-wavetable)", {
|
||||
CH(DIV_SYSTEM_PET, 64, 0, "")
|
||||
},
|
||||
"tickRate=50"
|
||||
);
|
||||
ENTRY(
|
||||
"Konami Bubble System WSG", {
|
||||
CH(DIV_SYSTEM_BUBSYS_WSG, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Konami SCC", {
|
||||
CH(DIV_SYSTEM_SCC, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Konami SCC+", {
|
||||
CH(DIV_SYSTEM_SCC_PLUS, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Namco WSG", {
|
||||
CH(DIV_SYSTEM_NAMCO, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Namco C15 (8-channel mono)", {
|
||||
CH(DIV_SYSTEM_NAMCO_15XX, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Namco C30 (8-channel stereo)", {
|
||||
CH(DIV_SYSTEM_NAMCO_CUS30, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Namco 163", {
|
||||
CH(DIV_SYSTEM_N163, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Famicom Disk System (chip)", {
|
||||
CH(DIV_SYSTEM_FDS, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"WonderSwan", {
|
||||
CH(DIV_SYSTEM_SWAN, 64, 0, "")
|
||||
},
|
||||
"tickRate=75.47169811320754716981"
|
||||
);
|
||||
ENTRY(
|
||||
"Virtual Boy", {
|
||||
CH(DIV_SYSTEM_VBOY, 64, 0, "")
|
||||
},
|
||||
"tickRate=50.2734877734878"
|
||||
);
|
||||
ENTRY(
|
||||
"Seta/Allumer X1-010", {
|
||||
CH(DIV_SYSTEM_X1_010, 64, 0, "")
|
||||
}
|
||||
);
|
||||
CATEGORY_END;
|
||||
|
||||
CATEGORY_BEGIN("Specialized","chips/systems with unique sound synthesis methods.");
|
||||
ENTRY(
|
||||
"MOS Technology SID (6581)", {
|
||||
CH(DIV_SYSTEM_C64_6581, 64, 0, "clockSel=1")
|
||||
},
|
||||
"tickRate=50.1245421"
|
||||
);
|
||||
ENTRY(
|
||||
"MOS Technology SID (8580)", {
|
||||
CH(DIV_SYSTEM_C64_8580, 64, 0, "clockSel=1")
|
||||
},
|
||||
"tickRate=50.1245421"
|
||||
);
|
||||
ENTRY(
|
||||
"Microchip AY8930", {
|
||||
CH(DIV_SYSTEM_AY8930, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Game Boy", {
|
||||
CH(DIV_SYSTEM_GB, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Atari Lynx", {
|
||||
CH(DIV_SYSTEM_LYNX, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"POKEY", {
|
||||
CH(DIV_SYSTEM_POKEY, 64, 0, "clockSel=1")
|
||||
},
|
||||
"tickRate=50"
|
||||
);
|
||||
ENTRY(
|
||||
"Atari TIA", {
|
||||
CH(DIV_SYSTEM_TIA, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"NES (Ricoh 2A03)", {
|
||||
CH(DIV_SYSTEM_NES, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"Commander X16 (VERA only)", {
|
||||
CH(DIV_SYSTEM_VERA, 64, 0, "")
|
||||
}
|
||||
);
|
||||
ENTRY(
|
||||
"ZX Spectrum (beeper only)", {
|
||||
CH(DIV_SYSTEM_SFX_BEEPER, 64, 0, "")
|
||||
}
|
||||
);
|
||||
if (settings.hiddenSystems) {
|
||||
ENTRY(
|
||||
"Dummy System", {
|
||||
CH(DIV_SYSTEM_DUMMY, 64, 0, "")
|
||||
}
|
||||
);
|
||||
}
|
||||
ENTRY(
|
||||
"tildearrow Sound Unit", {
|
||||
CH(DIV_SYSTEM_SOUND_UNIT, 64, 0, "")
|
||||
}
|
||||
);
|
||||
CATEGORY_END;
|
||||
|
||||
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(
|
||||
"Sega Genesis", {
|
||||
|
|
|
@ -31,10 +31,12 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo
|
|||
case DIV_SYSTEM_YM2612:
|
||||
case DIV_SYSTEM_YM2612_EXT:
|
||||
case DIV_SYSTEM_YM2612_DUALPCM:
|
||||
case DIV_SYSTEM_YM2612_DUALPCM_EXT: {
|
||||
case DIV_SYSTEM_YM2612_DUALPCM_EXT:
|
||||
case DIV_SYSTEM_YM2612_CSM: {
|
||||
int clockSel=flags.getInt("clockSel",0);
|
||||
bool ladder=flags.getBool("ladderEffect",0);
|
||||
bool noExtMacros=flags.getBool("noExtMacros",false);
|
||||
bool fbAllOps=flags.getBool("fbAllOps",false);
|
||||
|
||||
if (ImGui::RadioButton("NTSC (7.67MHz)",clockSel==0)) {
|
||||
clockSel=0;
|
||||
|
@ -59,10 +61,13 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo
|
|||
if (ImGui::Checkbox("Enable DAC distortion",&ladder)) {
|
||||
altered=true;
|
||||
}
|
||||
if (type==DIV_SYSTEM_YM2612_EXT || type==DIV_SYSTEM_YM2612_DUALPCM_EXT) {
|
||||
if (type==DIV_SYSTEM_YM2612_EXT || type==DIV_SYSTEM_YM2612_DUALPCM_EXT || type==DIV_SYSTEM_YM2612_CSM) {
|
||||
if (ImGui::Checkbox("Disable ExtCh FM macros (compatibility)",&noExtMacros)) {
|
||||
altered=true;
|
||||
}
|
||||
if (ImGui::Checkbox("Ins change in ExtCh operator 2-4 affects FB (compatibility)",&fbAllOps)) {
|
||||
altered=true;
|
||||
}
|
||||
}
|
||||
|
||||
if (altered) {
|
||||
|
@ -70,6 +75,7 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo
|
|||
flags.set("clockSel",clockSel);
|
||||
flags.set("ladderEffect",ladder);
|
||||
flags.set("noExtMacros",noExtMacros);
|
||||
flags.set("fbAllOps",fbAllOps);
|
||||
});
|
||||
}
|
||||
break;
|
||||
|
@ -457,12 +463,15 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo
|
|||
}
|
||||
case DIV_SYSTEM_YM2610:
|
||||
case DIV_SYSTEM_YM2610_EXT:
|
||||
case DIV_SYSTEM_YM2610_CSM:
|
||||
case DIV_SYSTEM_YM2610_FULL:
|
||||
case DIV_SYSTEM_YM2610_FULL_EXT:
|
||||
case DIV_SYSTEM_YM2610B:
|
||||
case DIV_SYSTEM_YM2610B_EXT: {
|
||||
case DIV_SYSTEM_YM2610B_EXT:
|
||||
case DIV_SYSTEM_YM2610B_CSM: {
|
||||
int clockSel=flags.getInt("clockSel",0);
|
||||
bool noExtMacros=flags.getBool("noExtMacros",false);
|
||||
bool fbAllOps=flags.getBool("fbAllOps",false);
|
||||
|
||||
if (ImGui::RadioButton("8MHz (Neo Geo MVS)",clockSel==0)) {
|
||||
clockSel=0;
|
||||
|
@ -473,16 +482,20 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo
|
|||
altered=true;
|
||||
}
|
||||
|
||||
if (type==DIV_SYSTEM_YM2610_EXT || type==DIV_SYSTEM_YM2610_FULL_EXT || type==DIV_SYSTEM_YM2610B_EXT) {
|
||||
if (type==DIV_SYSTEM_YM2610_EXT || type==DIV_SYSTEM_YM2610_FULL_EXT || type==DIV_SYSTEM_YM2610B_EXT || type==DIV_SYSTEM_YM2610_CSM || type==DIV_SYSTEM_YM2610B_CSM) {
|
||||
if (ImGui::Checkbox("Disable ExtCh FM macros (compatibility)",&noExtMacros)) {
|
||||
altered=true;
|
||||
}
|
||||
if (ImGui::Checkbox("Ins change in ExtCh operator 2-4 affects FB (compatibility)",&fbAllOps)) {
|
||||
altered=true;
|
||||
}
|
||||
}
|
||||
|
||||
if (altered) {
|
||||
e->lockSave([&]() {
|
||||
flags.set("clockSel",clockSel);
|
||||
flags.set("noExtMacros",noExtMacros);
|
||||
flags.set("fbAllOps",fbAllOps);
|
||||
});
|
||||
}
|
||||
break;
|
||||
|
@ -835,10 +848,12 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo
|
|||
break;
|
||||
}
|
||||
case DIV_SYSTEM_YM2203:
|
||||
case DIV_SYSTEM_YM2203_EXT: {
|
||||
case DIV_SYSTEM_YM2203_EXT:
|
||||
case DIV_SYSTEM_YM2203_CSM: {
|
||||
int clockSel=flags.getInt("clockSel",0);
|
||||
int prescale=flags.getInt("prescale",0);
|
||||
bool noExtMacros=flags.getBool("noExtMacros",false);
|
||||
bool fbAllOps=flags.getBool("fbAllOps",false);
|
||||
|
||||
ImGui::Text("Clock rate:");
|
||||
if (ImGui::RadioButton("3.58MHz (NTSC)",clockSel==0)) {
|
||||
|
@ -879,10 +894,13 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo
|
|||
altered=true;
|
||||
}
|
||||
|
||||
if (type==DIV_SYSTEM_YM2203_EXT) {
|
||||
if (type==DIV_SYSTEM_YM2203_EXT || type==DIV_SYSTEM_YM2203_CSM) {
|
||||
if (ImGui::Checkbox("Disable ExtCh FM macros (compatibility)",&noExtMacros)) {
|
||||
altered=true;
|
||||
}
|
||||
if (ImGui::Checkbox("Ins change in ExtCh operator 2-4 affects FB (compatibility)",&fbAllOps)) {
|
||||
altered=true;
|
||||
}
|
||||
}
|
||||
|
||||
if (altered) {
|
||||
|
@ -890,15 +908,18 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo
|
|||
flags.set("clockSel",clockSel);
|
||||
flags.set("prescale",prescale);
|
||||
flags.set("noExtMacros",noExtMacros);
|
||||
flags.set("fbAllOps",fbAllOps);
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DIV_SYSTEM_YM2608:
|
||||
case DIV_SYSTEM_YM2608_EXT: {
|
||||
case DIV_SYSTEM_YM2608_EXT:
|
||||
case DIV_SYSTEM_YM2608_CSM: {
|
||||
int clockSel=flags.getInt("clockSel",0);
|
||||
int prescale=flags.getInt("prescale",0);
|
||||
bool noExtMacros=flags.getBool("noExtMacros",false);
|
||||
bool fbAllOps=flags.getBool("fbAllOps",false);
|
||||
|
||||
ImGui::Text("Clock rate:");
|
||||
if (ImGui::RadioButton("8MHz (Arcade)",clockSel==0)) {
|
||||
|
@ -923,10 +944,13 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo
|
|||
altered=true;
|
||||
}
|
||||
|
||||
if (type==DIV_SYSTEM_YM2608_EXT) {
|
||||
if (type==DIV_SYSTEM_YM2608_EXT || type==DIV_SYSTEM_YM2608_CSM) {
|
||||
if (ImGui::Checkbox("Disable ExtCh FM macros (compatibility)",&noExtMacros)) {
|
||||
altered=true;
|
||||
}
|
||||
if (ImGui::Checkbox("Ins change in ExtCh operator 2-4 affects FB (compatibility)",&fbAllOps)) {
|
||||
altered=true;
|
||||
}
|
||||
}
|
||||
|
||||
if (altered) {
|
||||
|
@ -934,6 +958,7 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo
|
|||
flags.set("clockSel",clockSel);
|
||||
flags.set("prescale",prescale);
|
||||
flags.set("noExtMacros",noExtMacros);
|
||||
flags.set("fbAllOps",fbAllOps);
|
||||
});
|
||||
}
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue