diff src/xs_config.c @ 78:ab522ab65c85

Various fixes and improvements
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 03 Oct 2003 03:11:05 +0000
parents 3fca0b13a80a
children 94497283affa
line wrap: on
line diff
--- a/src/xs_config.c	Fri Sep 19 23:55:01 2003 +0000
+++ b/src/xs_config.c	Fri Oct 03 03:11:05 2003 +0000
@@ -53,7 +53,8 @@
 	{CTYPE_INT,	&xs_cfg.clockSpeed,		"clockSpeed"},
 	{CTYPE_BOOL,	&xs_cfg.forceSpeed,		"forceSpeed"},
 
-	{CTYPE_INT,	&xs_cfg.optimiseLevel,		"optimiseLevel"},
+	{CTYPE_INT,	&xs_cfg.sid2Builder,		"sid2Builder"},
+	{CTYPE_INT,	&xs_cfg.sid2OptLevel,		"sid2OptLevel"},
 
 	{CTYPE_BOOL,	&xs_cfg.oversampleEnable,	"oversampleEnable"},
 	{CTYPE_INT,	&xs_cfg.oversampleFactor,	"oversampleFactor"},
@@ -68,8 +69,8 @@
 	{CTYPE_BOOL,	&xs_cfg.stilDBEnable,		"stilDBEnable"},
 	{CTYPE_STR,	&xs_cfg.stilDBPath,		"stilDBPath"},
 
+	{CTYPE_INT,	&xs_cfg.subsongControl,		"subsongControl"},
 	{CTYPE_BOOL,	&xs_cfg.detectMagic,		"detectMagic"},
-	{CTYPE_BOOL,	&xs_cfg.alwaysRaise,		"alwaysRaise"},
 
 	{CTYPE_BOOL,	&xs_cfg.titleOverride,		"titleOverride"},
 	{CTYPE_STR,	&xs_cfg.titleFormat,		"titleFormat"},
@@ -94,16 +95,19 @@
 
 { WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_sidplay1",	&xs_cfg.playerEngine,		XS_ENG_SIDPLAY1 },
 { WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_sidplay2",	&xs_cfg.playerEngine,		XS_ENG_SIDPLAY2 },
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_emu_sidplay2_opt",	&xs_cfg.optimiseLevel,		0 },
 { WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_nanosid",	&xs_cfg.playerEngine,		XS_ENG_NANOSID },
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_emu_mos8580",	&xs_cfg.mos8580,		0 },
 { WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_mem_real",	&xs_cfg.memoryMode,		XS_MPU_REAL },
 { WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_mem_banksw",	&xs_cfg.memoryMode,		XS_MPU_BANK_SWITCHING },
 { WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_mem_transrom",	&xs_cfg.memoryMode,		XS_MPU_TRANSPARENT_ROM },
 { WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_mem_playsid",	&xs_cfg.memoryMode,		XS_MPU_PLAYSID_ENVIRONMENT },
+
+{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_emu_mos8580",	&xs_cfg.mos8580,		0 },
 { WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_clock_ntsc",	&xs_cfg.clockSpeed,		XS_CLOCK_NTSC },
 { WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_clock_pal",	&xs_cfg.clockSpeed,		XS_CLOCK_PAL },
 { WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_emu_clock_force",	&xs_cfg.forceSpeed,		0 },
+{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_emu_sidplay2_opt",	&xs_cfg.sid2OptLevel,		0 },
+{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_emu_sidplay2_resid",&xs_cfg.sid2Builder,		XS_BLD_RESID },
+{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_emu_sidplay2_hardsid",&xs_cfg.sid2Builder,		XS_BLD_HARDSID },
 
 { WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_emu_filters",	&xs_cfg.emulateFilters,		0 },
 { WTYPE_SCALE,	CTYPE_FLOAT,	"cfg_emu_filt_fs",	&xs_cfg.filterFs,		0 },
@@ -115,15 +119,15 @@
 { WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_maxtime_unknown",	&xs_cfg.playMaxTimeUnknown,	0 },
 { WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_sld_enable",	&xs_cfg.songlenDBEnable,	0 },
 { WTYPE_TEXT,	CTYPE_STR,	"cfg_sld_dbpath",	&xs_cfg.songlenDBPath,		0 },
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_silence_enable",	&xs_cfg.silenceEnable,		0 },
-{ WTYPE_SPIN,	CTYPE_INT,	"cfg_silence_min",	&xs_cfg.silenceMinTime,		0 },
-{ WTYPE_SPIN,	CTYPE_INT,	"cfg_silence_max",	&xs_cfg.silenceMaxCheck,	0 },
 
 { WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_stil_enable",	&xs_cfg.stilDBEnable,		0 },
 { WTYPE_TEXT,	CTYPE_STR,	"cfg_stil_dbpath",	&xs_cfg.stilDBPath,		0 },
 
+{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_subsong_none",	&xs_cfg.subsongControl,		XS_SSC_NONE },
+{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_subsong_popup",	&xs_cfg.subsongControl,		XS_SSC_POPUP },
+{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_subsong_patch",	&xs_cfg.subsongControl,		XS_SSC_PATCH },
+
 { WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_detectmagic",	&xs_cfg.detectMagic,		0 },
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_alwaysraise",	&xs_cfg.alwaysRaise,		0 },
 
 { WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_ftitle_override",	&xs_cfg.titleOverride,		0 },
 { WTYPE_TEXT,	CTYPE_STR,	"cfg_ftitle_format",	&xs_cfg.titleFormat,		0 },
@@ -178,7 +182,7 @@
 #ifdef HAVE_NANOSID
  xs_cfg.playerEngine		= XS_ENG_NANOSID;
 #else
-#error Something strange is going on here... Please re-configure!
+#error This should not happen! No emulator engines found!
 #endif
 #endif
 #endif
@@ -186,7 +190,16 @@
  xs_cfg.clockSpeed		= XS_CLOCK_PAL;
  xs_cfg.forceSpeed		= FALSE;
 
- xs_cfg.optimiseLevel		= FALSE;
+ xs_cfg.sid2OptLevel		= FALSE;
+#ifdef HAVE_RESID_BUILDER
+ xs_cfg.sid2Builder		= XS_BLD_RESID;
+#else
+#ifdef HAVE_HARDSID_BUILDER
+ xs_cfg.sid2Builder		= XS_BLD_HARDSID;
+#else
+#error This should not happen! No reSID or HardSID builder(s) found!
+#endif
+#endif
 
  xs_cfg.oversampleEnable	= FALSE;
  xs_cfg.oversampleFactor	= XS_MIN_OVERSAMPLE;
@@ -200,8 +213,13 @@
  xs_cfg.stilDBEnable		= FALSE;
  xs_strcalloc(&xs_cfg.stilDBPath, "~/C64Music/DOCUMENTS/STIL.txt");
 
+#ifdef HAVE_SONG_POSITION
+ xs_cfg.subsongControl		= XS_SSC_PATCH;
+#else
+ xs_cfg.subsongControl		= XS_SSC_POPUP;
+#endif
+
  xs_cfg.detectMagic		= FALSE;
- xs_cfg.alwaysRaise		= TRUE;
 
 #ifdef HAVE_XMMSEXTRA
  xs_cfg.titleOverride		= FALSE;
@@ -507,40 +525,58 @@
 }
 
 
-void xs_cfg_emu_sidplay1_toggled(GtkToggleButton *togglebutton, gpointer user_data)
+void xs_cfg_emu_filters_toggled(GtkToggleButton *togglebutton, gpointer user_data)
 {
-#ifdef HAVE_SIDPLAY1
-#endif
 }
 
 
-void xs_cfg_emu_sidplay2_set(gboolean isActive)
+void xs_cfg_ftitle_override_toggled(GtkToggleButton *togglebutton, gpointer user_data)
 {
- gtk_widget_set_sensitive(LUW("cfg_emu_sidplay2_opt"), isActive);
+ gboolean isActive = GTK_TOGGLE_BUTTON(LUW("cfg_ftitle_override"))->active;
+
+ gtk_widget_set_sensitive(LUW("cfg_ftitle_format"), isActive);
+ gtk_widget_set_sensitive(LUW("cfg_ftitle_desc1"), isActive);
+ gtk_widget_set_sensitive(LUW("cfg_ftitle_desc2"), isActive);
+ gtk_widget_set_sensitive(LUW("cfg_ftitle_desc3"), isActive);
+}
+
+
+void xs_cfg_emu_sidplay1_toggled(GtkToggleButton *togglebutton, gpointer user_data)
+{
+}
+
+
+void xs_cfg_emu_sidplay2_toggled(GtkToggleButton *togglebutton, gpointer user_data)
+{
+ gboolean isActive = GTK_TOGGLE_BUTTON(LUW("cfg_emu_sidplay2"))->active;
 
  gtk_widget_set_sensitive(LUW("cfg_emu_mem_real"), isActive);
 
  gtk_widget_set_sensitive(LUW("cfg_oversample_grp"), isActive);
  gtk_widget_set_sensitive(LUW("cfg_oversample"), isActive);
  gtk_widget_set_sensitive(LUW("cfg_oversample_factor"), isActive);
-
  gtk_widget_set_sensitive(LUW("cfg_overfilter_average"), isActive);
  gtk_widget_set_sensitive(LUW("cfg_overfilter_sinc"), isActive);
-}
 
+ gtk_widget_set_sensitive(LUW("cfg_sidplay2_grp"), isActive);
+ gtk_widget_set_sensitive(LUW("cfg_emu_sidplay2_opt"), isActive);
 
-void xs_cfg_emu_sidplay2_toggled(GtkToggleButton *togglebutton, gpointer user_data)
-{
-#ifdef HAVE_SIDPLAY2
- xs_cfg_emu_sidplay2_set(GTK_TOGGLE_BUTTON(LUW("cfg_emu_sidplay2"))->active);
+#ifdef HAVE_RESID_BUILDER
+ gtk_widget_set_sensitive(LUW("cfg_emu_sidplay2_resid"), isActive);
+#else
+ gtk_widget_set_sensitive(LUW("cfg_emu_sidplay2_resid"), FALSE);
+#endif
+
+#ifdef HAVE_HARDSID_BUILDER
+ gtk_widget_set_sensitive(LUW("cfg_emu_sidplay2_hardsid"), isActive);
+#else
+ gtk_widget_set_sensitive(LUW("cfg_emu_sidplay2_hardsid"), FALSE);
 #endif
 }
 
 
 void xs_cfg_emu_nanosid_toggled(GtkToggleButton *togglebutton, gpointer user_data)
 {
-#ifdef HAVE_NANOSID
-#endif
 }
 
 
@@ -562,6 +598,7 @@
  /* Create the window */
  xs_configwin = create_xs_configwin();
 
+
  /* Based on selected emulation library, disable options */
 #ifndef HAVE_SIDPLAY1
  gtk_widget_set_sensitive(LUW("cfg_emu_sidplay1"), FALSE);
@@ -569,23 +606,25 @@
 
 #ifndef HAVE_SIDPLAY2
  gtk_widget_set_sensitive(LUW("cfg_emu_sidplay2"), FALSE);
- xs_cfg_emu_sidplay2_set(FALSE);
 #endif
 
 #ifndef HAVE_NANOSID
  gtk_widget_set_sensitive(LUW("cfg_emu_nanosid"), FALSE);
 #endif
 
+ /* Other UI options */ 
+#ifndef HAVE_XMMSEXTRA
+ gtk_widget_set_sensitive(LUW("cfg_ftitle_override"), FALSE);
+#endif
+
+
+ /* Update the widget sensitivities */
+ xs_cfg_emu_filters_toggled(NULL, NULL);
+ xs_cfg_ftitle_override_toggled(NULL, NULL);
  xs_cfg_emu_sidplay1_toggled(NULL, NULL);
  xs_cfg_emu_sidplay2_toggled(NULL, NULL);
  xs_cfg_emu_nanosid_toggled(NULL, NULL);
 
- /* Other UI options */ 
-#ifndef HAVE_XMMSEXTRA
- gtk_widget_set_sensitive(LUW("cfg_ftitle_override"), FALSE);
- xs_cfg.titleOverride = TRUE;
-#endif
-
 
  /* Set current data to widgets */
  for (i = 0; i < xs_widtable_max; i++)