diff src/xs_sidplay2.cc @ 402:f997b79a7251

More work on merging of improved STIL/SLDB handling code with completely dynamic memory allocation.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 01 Jun 2006 02:18:02 +0000
parents 0a60ef2b5ab0
children 7f694e5a1493
line wrap: on
line diff
--- a/src/xs_sidplay2.cc	Wed May 31 22:52:00 2006 +0000
+++ b/src/xs_sidplay2.cc	Thu Jun 01 02:18:02 2006 +0000
@@ -28,8 +28,7 @@
 #include <stdio.h>
 #include "xs_config.h"
 #include "xs_support.h"
-#include "xs_length.h"
-#include "xs_title.h"
+
 
 #include <sidplay/sidplay2.h>
 #ifdef HAVE_RESID_BUILDER
@@ -200,7 +199,7 @@
 			/* Builder object created, initialize it */
 			rs->create((myEngine->currEng->info()).maxsids);
 			if (!*rs) {
-				xs_error("rs->create() failed. SIDPlay2 suxx again.\n");
+				xs_error("rs->create() failed.\n");
 				return FALSE;
 			}
 
@@ -210,12 +209,15 @@
 				return FALSE;
 			}
 
+			// FIXME FIX ME: support other configurable parameters ...
+			// ... WHEN/IF resid-builder+libsidplay2 gets fixed
 			rs->sampling(tmpFreq);
 			if (!*rs) {
 				xs_error("rs->sampling(%d) failed.\n", tmpFreq);
 				return FALSE;
 			}
 
+			// FIXME FIX ME: load filter spec
 			rs->filter((sid_filter_t *) NULL);
 			if (!*rs) {
 				xs_error("rs->filter(NULL) failed.\n");
@@ -232,7 +234,7 @@
 			/* Builder object created, initialize it */
 			hs->create((myEngine->currEng->info()).maxsids);
 			if (!*hs) {
-				xs_error("hs->create() failed. SIDPlay2 suxx again.\n");
+				xs_error("hs->create() failed.\n");
 				return FALSE;
 			}
 
@@ -259,8 +261,10 @@
 		myEngine->currConfig.clockDefault = SID2_CLOCK_NTSC;
 		break;
 
+	default:
+		xs_error("Invalid clockSpeed=%d, falling back to PAL.\n", xs_cfg.clockSpeed);
+
 	case XS_CLOCK_PAL:
-	default:
 		myEngine->currConfig.clockDefault = SID2_CLOCK_PAL;
 		xs_cfg.clockSpeed = XS_CLOCK_PAL;
 		break;
@@ -278,10 +282,15 @@
 		myEngine->currConfig.clockSpeed = SID2_CLOCK_CORRECT;
 	}
 	
-	if (xs_cfg.sid2OptLevel)
-		myEngine->currConfig.optimisation = 1;
-	else
-		myEngine->currConfig.optimisation = 0;
+	if ((xs_cfg.sid2OptLevel >= 0) && (xs_cfg.sid2OptLevel <= SID2_MAX_OPTIMISATION))
+		myEngine->currConfig.optimisation = xs_cfg.sid2OptLevel;
+	else {
+		xs_error("Invalid sid2OptLevel=%d, falling back to %d.\n",
+			xs_cfg.sid2OptLevel, SID2_DEFAULT_OPTIMISATION);
+		
+		xs_cfg.sid2OptLevel =
+		myEngine->currConfig.optimisation = SID2_DEFAULT_OPTIMISATION;
+	}
 
 	if (xs_cfg.mos8580)
 		myEngine->currConfig.sidDefault = SID2_MOS8580;
@@ -293,7 +302,8 @@
 	else
 		myEngine->currConfig.sidModel = SID2_MODEL_CORRECT;
 
-	myEngine->currConfig.sidSamples = TRUE;	// FIXME FIX ME, make configurable!
+	/* XXX: Should this be configurable? libSIDPlay1 does not support it, though */
+	myEngine->currConfig.sidSamples = TRUE;
 
 
 	/* Now set the emulator configuration */