changeset 773:45108b3d88db

Add resid-fp and resid backend to sidplay2fp support.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 06 Nov 2012 11:56:00 +0200
parents 91a36a4b79c6
children d09d5c852b7e
files src/xs_config.c src/xs_config.h src/xs_sidplay2.cc xmms-sid.glade
diffstat 4 files changed, 41 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/xs_config.c	Tue Nov 06 11:26:59 2012 +0200
+++ b/src/xs_config.c	Tue Nov 06 11:56:00 2012 +0200
@@ -157,6 +157,7 @@
 { WTYPE_BUTTON, CTYPE_BOOL,     "cfg_emu_clock_force",  &xs_cfg.forceSpeed,             0 },
 { WTYPE_BUTTON, CTYPE_BOOL,     "cfg_emu_sp2_opt",      &xs_cfg.sid2OptLevel,           0 },
 
+{ WTYPE_BGROUP, CTYPE_INT,      "cfg_emu_sp2_resid_fp", &xs_cfg.sid2Builder,            XS_BLD_RESID_FP },
 { WTYPE_BGROUP, CTYPE_INT,      "cfg_emu_sp2_resid",    &xs_cfg.sid2Builder,            XS_BLD_RESID },
 { WTYPE_BGROUP, CTYPE_INT,      "cfg_emu_sp2_hardsid",  &xs_cfg.sid2Builder,            XS_BLD_HARDSID },
 
@@ -1248,6 +1249,7 @@
 
     gtk_widget_set_sensitive(LUW("cfg_chn_autopan"), !isActive);
 
+    gtk_widget_set_sensitive(LUW("cfg_emu_sp2_resid_fp"), HAVE_RESID_BUILDER && HAVE_SIDPLAY2_FP && isActive);
     gtk_widget_set_sensitive(LUW("cfg_emu_sp2_resid"), HAVE_RESID_BUILDER && isActive);
     gtk_widget_set_sensitive(LUW("cfg_emu_sp2_hardsid"), HAVE_HARDSID_BUILDER && isActive);
 }
--- a/src/xs_config.h	Tue Nov 06 11:26:59 2012 +0200
+++ b/src/xs_config.h	Tue Nov 06 11:56:00 2012 +0200
@@ -19,7 +19,8 @@
 
 enum XS_BUILDER {
     XS_BLD_RESID = 1,
-    XS_BLD_HARDSID
+    XS_BLD_HARDSID,
+    XS_BLD_RESID_FP
 };
 
 enum XS_RESOLUTION {
--- a/src/xs_sidplay2.cc	Tue Nov 06 11:26:59 2012 +0200
+++ b/src/xs_sidplay2.cc	Tue Nov 06 11:56:00 2012 +0200
@@ -69,6 +69,7 @@
 #ifdef HAVE_RESID_BUILDER
 #  ifdef HAVE_SIDPLAY2_FP
 #    include <sidplayfp/builders/residfp.h>
+#    include <sidplayfp/builders/resid.h>
 #  else
 #    include <sidplay/builders/resid.h>
 #  endif
@@ -265,8 +266,22 @@
     switch (xs_cfg.sid2Builder)
     {
 #ifdef HAVE_RESID_BUILDER
+#ifdef HAVE_SIDPLAY2_FP
         case XS_BLD_RESID:
-#ifdef HAVE_SIDPLAY2_FP
+            {
+                ReSIDBuilder *rs = new ReSIDBuilder("ReSID builder");
+                if (rs)
+                {
+                    engine->config.sidEmulation = rs;
+                    if (!*rs) return FALSE;
+                    rs->create((engine->emu.info()).maxsids);
+                    if (!*rs) return FALSE;
+                    rs->bias(0.0f);
+                }
+            }
+            break;
+
+        case XS_BLD_RESID_FP:
             {
                 ReSIDfpBuilder *rs = new ReSIDfpBuilder("ReSID builder FP!");
                 if (rs)
@@ -283,7 +298,11 @@
                         rs->filter8580Curve((double)m_filter.filterCurve8580);
 */
                 }
+            }
+            break;
 #else
+        case XS_BLD_RESID:
+            {
                 engine->config.sidEmulation = ReSIDBuilderCreate("ReSID builder");
                 SidLazyIPtr<IReSIDBuilder> rs(engine->config.sidEmulation);
                 if (rs)
@@ -292,10 +311,10 @@
                     rs->create((engine->emu.info()).maxsids);
                     if (!*rs) return FALSE;
                 }
-#endif
             }
             break;
 #endif
+#endif
 
 #ifdef HAVE_HARDSID_BUILDER
         case XS_BLD_HARDSID:
--- a/xmms-sid.glade	Tue Nov 06 11:26:59 2012 +0200
+++ b/xmms-sid.glade	Tue Nov 06 11:56:00 2012 +0200
@@ -653,6 +653,22 @@
 
 	    <widget>
 	      <class>GtkRadioButton</class>
+	      <name>cfg_emu_sp2_resid_fp</name>
+	      <tooltip>reSID-FP is the heaviest and most accurate software SID-chip simulator based on SID reverse-engineering, created by Dag Lem, Antti Lankila and others. It is probably the closest thing to real SID available as software-only emulation.</tooltip>
+	      <can_focus>True</can_focus>
+	      <label>reSID-FP-emulation</label>
+	      <active>False</active>
+	      <draw_indicator>True</draw_indicator>
+	      <group>emutype</group>
+	      <child>
+		<padding>0</padding>
+		<expand>False</expand>
+		<fill>False</fill>
+	      </child>
+	    </widget>
+
+	    <widget>
+	      <class>GtkRadioButton</class>
 	      <name>cfg_emu_sp2_resid</name>
 	      <tooltip>reSID is the software SID-chip simulator based on SID reverse-engineering, created by Dag Lem. It is probably the closest thing to real SID available as software-only emulation.</tooltip>
 	      <can_focus>True</can_focus>