changeset 78:ab522ab65c85

Various fixes and improvements
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 03 Oct 2003 03:11:05 +0000
parents 3fca0b13a80a
children b3e17bb32b21
files src/xmms-sid.c src/xmms-sid.h src/xs_config.c src/xs_config.h src/xs_genui.c src/xs_genui.h src/xs_sidplay1.cc src/xs_sidplay1.h src/xs_sidplay2.cc
diffstat 9 files changed, 148 insertions(+), 88 deletions(-) [+]
line wrap: on
line diff
--- a/src/xmms-sid.c	Fri Sep 19 23:55:01 2003 +0000
+++ b/src/xmms-sid.c	Fri Oct 03 03:11:05 2003 +0000
@@ -98,28 +98,10 @@
  */
 static GtkWidget		*xs_ctrlwin	= NULL;
 static pthread_t		xs_decode_thread;
-static pthread_mutex_t		xs_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t		xs_mutex	= PTHREAD_MUTEX_INITIALIZER;
 struct t_xs_cfg			xs_cfg;
 t_xs_status			xs_status;
-t_xs_player			*xs_player;
-
-
-/*
- * Create sub-song control window
- */
-void xs_ctrlwin_open(void)
-{
- /* Create sub-song control window */
- if (xs_ctrlwin != NULL)
-	{
-	if (xs_cfg.alwaysRaise)
-		gdk_window_raise(xs_ctrlwin->window);
-	return;
-	}
-
- xs_ctrlwin = create_xs_ctrlwin();
- gtk_widget_show(xs_ctrlwin);
-}
+t_xs_player			*xs_player	= NULL;
 
 
 /*
@@ -179,8 +161,6 @@
 	
  /* Initialize STIL structures */
 
-// xs_ctrlwin_open();
-
 // FIXME FIXME FIx ME
 
  XSDEBUG("OK\n");
@@ -200,8 +180,6 @@
  xs_player->plrDeleteSID(&xs_status);
  xs_player->plrClose(&xs_status);
 
- /* Close sub-song control window */
-
  /* Free allocated memory */
  xs_songlen_close();
 
@@ -216,6 +194,7 @@
 gint xs_is_our_file(gchar *pcFileName)
 {
  char *pcExt;
+ assert(xs_player);
 
  /* Check the filename */
  if (pcFileName == NULL)
@@ -295,14 +274,13 @@
  /* Get song information for current subtune */
  songLength = xs_songlen_get(myStatus.currFileName, myStatus.currSong);
 
-/*
  xs_plugin_ip.set_info(
- 	myTuneInfo.titleStr,
+ 	myStatus.currFileName,
  	(songLength > 0) ? (songLength * 1000) : -1,
- 	1000 * myTuneInfo.songSpeed,
+ 	1000 * xs_player->plrGetTuneSpeed(&xs_status),
 	audioFreq,
 	audioChannels);
-*/
+
 
  /* Open the audio output */
  if (!xs_plugin_ip.output->open_audio(audioFmt, audioFreq, audioChannels))
@@ -470,14 +448,22 @@
  */
 void xs_seek(gint iTime)
 {
+ if (xs_cfg.subsongControl == XS_SSC_POPUP)
+ {
+ /* User wants to use the pop-up */
+ }
+
  /* If we have song-position patch, check settings */
 #ifdef HAVE_SONG_POSITION
- pthread_mutex_lock(&xs_mutex);
+ if (xs_cfg.subsongControl == XS_SSC_PATCH)
+ 	{
+	pthread_mutex_lock(&xs_mutex);
 
- if ((iTime > 0) && (iTime <= xs_status.nSongs) && xs_status.isPlaying)
-	xs_status.currSong = iTime;
+	if ((iTime > 0) && (iTime <= xs_status.nSongs) && xs_status.isPlaying)
+		xs_status.currSong = iTime;
 
- pthread_mutex_unlock(&xs_mutex);
+	pthread_mutex_unlock(&xs_mutex);
+	}
 #endif
 }
 
@@ -495,11 +481,14 @@
  if (!xs_status.isPlaying)
 	return -1;
 
- /* Obsolete? */
+ /* Let's see what we do */
 #ifdef HAVE_SONG_POSITION
- pthread_mutex_lock(&xs_mutex);
- set_song_position(xs_status.currSong, 1, xs_status.nSongs);
- pthread_mutex_unlock(&xs_mutex);
+ if (xs_cfg.subsongControl == XS_SSC_PATCH)
+ 	{
+	pthread_mutex_lock(&xs_mutex);
+	set_song_position(xs_status.currSong, 1, xs_status.nSongs);
+	pthread_mutex_unlock(&xs_mutex);
+	}
 #endif
 
  /* Else, return output time reported by audio output plugin */
--- a/src/xmms-sid.h	Fri Sep 19 23:55:01 2003 +0000
+++ b/src/xmms-sid.h	Fri Oct 03 03:11:05 2003 +0000
@@ -20,8 +20,6 @@
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
-#define DEBUG
-
 #ifndef XMMS_SID_H
 #define XMMS_SID_H
 
@@ -34,6 +32,11 @@
 #include <xmms/plugin.h>
 #include <assert.h>
 
+/*
+ * Some defines
+ */
+#define DEBUG			/* ... */
+#undef HAVE_HARDSID_BUILDER	/* HardSID-support is not working and is untested */
 
 /*
  * Generals
@@ -52,10 +55,18 @@
 
 
 typedef struct {
+	gint		tuneSpeed;
+	gint		tuneLength;
+	gchar		*titleStr;
+} t_xs_tuneinfo;
+
+
+typedef struct {
 	void		*player;
 	gboolean	isError, isPlaying, allowNext;
-	gint		currSong, nSongs;
+	gint		currSong, nSongs, startSong;
 	gchar		*currFileName;
+	t_xs_tuneinfo	subTunes[XS_STIL_MAXENTRY];
 } t_xs_status;
 
 extern t_xs_status xs_status;
--- 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++)
--- a/src/xs_config.h	Fri Sep 19 23:55:01 2003 +0000
+++ b/src/xs_config.h	Fri Oct 03 03:11:05 2003 +0000
@@ -11,12 +11,17 @@
  * Configuration structure
  */
 enum XS_EMUENGINE {
-	XS_ENG_SIDPLAY1,
+	XS_ENG_SIDPLAY1 = 1,
 	XS_ENG_SIDPLAY2,
 	XS_ENG_NANOSID	
 };
 
 
+enum XS_BUILDER {
+	XS_BLD_RESID = 1,
+	XS_BLD_HARDSID
+};
+
 enum XS_RESOLUTION {
 	XS_RES_8BIT = 8,
 	XS_RES_16BIT = 16,
@@ -50,6 +55,13 @@
 };
 
 
+enum XS_SSC {
+	XS_SSC_NONE = 1,
+	XS_SSC_POPUP,
+	XS_SSC_PATCH
+};
+
+
 extern struct t_xs_cfg {
 	/* General audio settings */
 	gint		fmtBitsPerSample;
@@ -66,7 +78,8 @@
 	gint		clockSpeed;		/* PAL (50Hz) or NTSC (60Hz) */
 	gboolean	forceSpeed;		/* TRUE = force to given clockspeed */
 
-	gboolean	optimiseLevel;		/* SIDPlay2 emulation optimization */
+	gboolean	sid2OptLevel;		/* SIDPlay2 emulation optimization */
+	gint		sid2Builder;		/* SIDPlay2 "builder" aka SID-emu */
 
 	gboolean	oversampleEnable;
 	gint		oversampleFactor;	/* Factor of oversampling */
@@ -87,8 +100,8 @@
 	gboolean	stilDBEnable;
 	gchar		*stilDBPath;		/* Path to STIL.txt */
 
+	gint		subsongControl;
 	gboolean	detectMagic;
-	gboolean	alwaysRaise;
 
 	gboolean	titleOverride;		/* TRUE if XMMS titles are overriden */
 	gchar		*titleFormat;
--- a/src/xs_genui.c	Fri Sep 19 23:55:01 2003 +0000
+++ b/src/xs_genui.c	Fri Oct 03 03:11:05 2003 +0000
@@ -43,10 +43,3 @@
 
 
 
-void
-xs_cfg_emu_filters_toggled             (GtkToggleButton *togglebutton,
-                                        gpointer         user_data)
-{
-
-}
-
--- a/src/xs_genui.h	Fri Sep 19 23:55:01 2003 +0000
+++ b/src/xs_genui.h	Fri Oct 03 03:11:05 2003 +0000
@@ -72,3 +72,7 @@
 void
 xs_cfg_emu_filters_toggled             (GtkToggleButton *togglebutton,
                                         gpointer         user_data);
+
+void
+xs_cfg_ftitle_override_toggled         (GtkToggleButton *togglebutton,
+                                        gpointer         user_data);
--- a/src/xs_sidplay1.cc	Fri Sep 19 23:55:01 2003 +0000
+++ b/src/xs_sidplay1.cc	Fri Oct 03 03:11:05 2003 +0000
@@ -297,7 +297,7 @@
  */
 #include "xs_sidplay.h"	// Include common function
 
-void xs_sidplay1_getsidinfo(gchar *songFileName, gchar **songTitle, gint *songLength)
+void xs_sidplay1_getsidinfo(gchar *songFileName, gchar **songTitle, gint *songLength, gint subSong)
 {
  sidTuneInfo tuneInfo;
  sidTune *testTune;
@@ -317,7 +317,12 @@
  delete testTune;
 
  /* Get titlestring */
- *songTitle = xs_make_filetitle(songFileName, &tuneInfo, tuneInfo.startSong);
+ if (subSong < 0)
+	tmpInt = tuneInfo.startSong;
+	else
+	tmpInt = subSong;
+
+ *songTitle = xs_make_filetitle(songFileName, &tuneInfo, tmpInt);
 
  /* Get song length (in milliseconds), negative if no known length */
  tmpInt = xs_songlen_get(songFileName, tuneInfo.startSong);
--- a/src/xs_sidplay1.h	Fri Sep 19 23:55:01 2003 +0000
+++ b/src/xs_sidplay1.h	Fri Oct 03 03:11:05 2003 +0000
@@ -11,6 +11,6 @@
 gboolean	xs_sidplay1_loadsid(t_xs_status *, gchar *);
 void		xs_sidplay1_deletesid(t_xs_status *);
 gint		xs_sidplay1_gettunespeed(t_xs_status *);
-void		xs_sidplay1_getsidinfo(gchar *, gchar **, gint *);
+void		xs_sidplay1_getsidinfo(gchar *, gchar **, gint *, gint);
 
 #endif /* _XS_SIDPLAY1_H */
--- a/src/xs_sidplay2.cc	Fri Sep 19 23:55:01 2003 +0000
+++ b/src/xs_sidplay2.cc	Fri Oct 03 03:11:05 2003 +0000
@@ -100,14 +100,20 @@
 	FIXME! we need to select builder by configuration!
  */
 #ifdef HAVE_RESID_BUILDER
- ReSIDBuilder *tmpb = new ReSIDBuilder("SIDPlay2 suxx and is made by a fag - ReSID builder");
+ if (xs_cfg.sid2Builder == XS_BLD_RESID)
+	{
+	ReSIDBuilder *tmpb = new ReSIDBuilder("SIDPlay2 suxx and is made by a fag - ReSID builder");
 
- /* Create the builder -- WHAT IS THIS MEANT FOR??? */
- tmpb->create(myPlayer->currEng->info().maxsids);
+	/* Create the builder -- WHAT IS THIS MEANT FOR??? */
+	tmpb->create(myPlayer->currEng->info().maxsids);
 
- myPlayer->currBuilder = (sidbuilder *) tmpb;
+	myPlayer->currBuilder = (sidbuilder *) tmpb;
+	}
 #endif
 #ifdef HAVE_HARDSID_BUILDER
+ if (xs_cfg.sid2Builder == XS_BLD_HARDSID)
+	{
+	}
 #endif
 
  if (!myPlayer->currBuilder)
@@ -269,7 +275,7 @@
  myPlayer->currConfig.precision		= xs_cfg.fmtBitsPerSample;
  myPlayer->currConfig.frequency		= xs_cfg.fmtFrequency; 
  myPlayer->currConfig.clockForced	= xs_cfg.forceSpeed;
- myPlayer->currConfig.optimisation	= (xs_cfg.optimiseLevel) ? 1 : 0;
+ myPlayer->currConfig.optimisation	= (xs_cfg.sid2OptLevel) ? 1 : 0;
  myPlayer->currConfig.sidDefault	= myPlayer->currConfig.sidModel = (xs_cfg.mos8580) ? SID2_MOS8580 : SID2_MOS6581;
  myPlayer->currConfig.sidSamples	= TRUE;	// FIXME FIX ME, make configurable!