diff -urP xmms-OpenSPC-0.0.3/AUTHORS bmp-OpenSPC-0.0.3/AUTHORS
--- xmms-OpenSPC-0.0.3/AUTHORS	2002-10-10 07:26:06.000000000 +0200
+++ bmp-OpenSPC-0.0.3/AUTHORS	2005-04-26 00:30:16.000000000 +0200
@@ -1,5 +1,5 @@
 
-xmms-OpenSPC:	Zinx Verituse <zinx@xmms.org>
-OpenSPC:	FatlXception
-resample.[ch]:	Simon Hosie <gumboot@clear.net.nz>
-
+xmms-OpenSPC:		Zinx Verituse <zinx@xmms.org>
+OpenSPC:		FatlXception
+resample.[ch]:		Simon Hosie <gumboot@clear.net.nz>
+BMP-OpenSPC port:	Giacomo Lozito aka city_hunter
diff -urP xmms-OpenSPC-0.0.3/BMP-OPENSPC bmp-OpenSPC-0.0.3/BMP-OPENSPC
--- xmms-OpenSPC-0.0.3/BMP-OPENSPC	1970-01-01 01:00:00.000000000 +0100
+++ bmp-OpenSPC-0.0.3/BMP-OPENSPC	2005-10-23 13:26:38.000000000 +0200
@@ -0,0 +1,18 @@
+
+BMP-OPENSPC port
+----------------
+
+rev 0.02
+
+  - changed InputPlugin assignments code in spc.c to make it work with BMP 0.9.7.1
+
+
+rev.0.01
+
+  - modified Makefile.am and configure.in
+  - made code link to GTK+2 libraries
+  - adapted dialog boxes creation for GTK+2
+  - converted some displayable string to utf8 for GTK+2
+  - made source code use bmp headers instead of xmms ones
+  - renamed res_init (from resample.[ch]) to resamp_init to avoid a name clash
+
diff -urP xmms-OpenSPC-0.0.3/Makefile.am bmp-OpenSPC-0.0.3/Makefile.am
--- xmms-OpenSPC-0.0.3/Makefile.am	2002-10-11 09:22:52.000000000 +0200
+++ bmp-OpenSPC-0.0.3/Makefile.am	2005-04-26 01:04:46.000000000 +0200
@@ -1,3 +1,3 @@
 SUBDIRS = openspc src
 
-EXTRA_DIST = TODO
+EXTRA_DIST = TODO BMP-OPENSPC xmmsospc-to-bmpospc.diff
diff -urP xmms-OpenSPC-0.0.3/config.h.in bmp-OpenSPC-0.0.3/config.h.in
--- xmms-OpenSPC-0.0.3/config.h.in	2002-10-11 19:53:00.000000000 +0200
+++ bmp-OpenSPC-0.0.3/config.h.in	2005-04-25 23:35:37.000000000 +0200
@@ -12,7 +12,8 @@
 /* Define to 1 if you have the `z' library (-lz). */
 #undef HAVE_LIBZ
 
-/* Define to 1 if your system has a working `malloc' function. */
+/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
+   to 0 otherwise. */
 #undef HAVE_MALLOC
 
 /* Define to 1 if you have the <memory.h> header file. */
@@ -78,6 +79,9 @@
 /* Define to empty if `const' does not conform to ANSI C. */
 #undef const
 
+/* Define to rpl_malloc if the replacement function should be used. */
+#undef malloc
+
 /* Define to `long' if <sys/types.h> does not define. */
 #undef off_t
 
diff -urP xmms-OpenSPC-0.0.3/configure.in bmp-OpenSPC-0.0.3/configure.in
--- xmms-OpenSPC-0.0.3/configure.in	2002-10-11 19:50:07.000000000 +0200
+++ bmp-OpenSPC-0.0.3/configure.in	2005-04-25 23:29:39.000000000 +0200
@@ -1,9 +1,10 @@
 # Process this file with autoconf to produce a configure script.
 AC_INIT(src/spc.c)
-AM_INIT_AUTOMAKE(xmms-OpenSPC, 0.0.3)
+AM_INIT_AUTOMAKE(bmp-OpenSPC, 0.0.3)
 AM_CONFIG_HEADER(config.h)
 
 AM_DISABLE_STATIC
+AC_LIBTOOL_DLOPEN
 AM_PROG_LIBTOOL
 
 # Checks for programs.
@@ -15,8 +16,12 @@
 fi
 
 # Checks for libraries.
-AC_CHECK_LIB([z],[gzopen],,AC_MSG_ERROR([xmms-OpenSPC requires zlib]))
-AM_PATH_XMMS(1.2.0,,AC_MSG_ERROR([xmms-OpenSPC requires xmms >= 1.2.0]))
+AC_CHECK_LIB([z],[gzopen],,AC_MSG_ERROR([bmp-OpenSPC requires zlib]))
+AM_PATH_GLIB_2_0(2.4.0, , AC_MSG_ERROR([*** GLIB >= 2.4.0 not installed - please install first ***]))
+AM_PATH_GTK_2_0(2.4.0, , AC_MSG_ERROR([*** GTK+ >= 2.4.0 not installed - please install first ***]))
+PKG_CHECK_MODULES(BEEP, [ bmp >= 0.9.7], , AC_MSG_ERROR("**** You need the BEEP development files to compile this plugin ****"))
+BEEP_INPUT_PLUGIN_DIR="`$PKG_CONFIG --variable=input_plugin_dir bmp`"
+AC_SUBST(BEEP_INPUT_PLUGIN_DIR)
 
 # Checks for header files.
 AC_HEADER_STDC
diff -urP xmms-OpenSPC-0.0.3/src/Makefile.am bmp-OpenSPC-0.0.3/src/Makefile.am
--- xmms-OpenSPC-0.0.3/src/Makefile.am	2002-10-12 03:23:12.000000000 +0200
+++ bmp-OpenSPC-0.0.3/src/Makefile.am	2005-04-26 00:07:57.000000000 +0200
@@ -1,13 +1,13 @@
 
-plugindir = $(XMMS_INPUT_PLUGIN_DIR)
+plugindir = $(BEEP_INPUT_PLUGIN_DIR)
 
-plugin_LTLIBRARIES = openspc.la
+plugin_LTLIBRARIES = bmpopenspc.la
 
-openspc_la_CFLAGS = $(XMMS_CFLAGS) -I$(top_srcdir)/openspc
-openspc_la_LDFLAGS = -avoid-version -module
-openspc_la_LIBADD = $(top_builddir)/openspc/libopenspc.a -lm -lz $(XMMS_LIBS)
+bmpopenspc_la_CFLAGS = $(BEEP_CFLAGS) -I$(top_srcdir)/openspc
+bmpopenspc_la_LDFLAGS = -avoid-version -module
+bmpopenspc_la_LIBADD = $(top_builddir)/openspc/libopenspc.a -lm -lz $(BEEP_LIBS)
 
-openspc_la_SOURCES = spc.c \
+bmpopenspc_la_SOURCES = spc.c \
 	spc-about.c spc-about.h \
 	spc-config.c spc-config.h \
 	fileinfo.c fileinfo.h \
Only in xmms-OpenSPC-0.0.3/src: Makefile.in
diff -urP xmms-OpenSPC-0.0.3/src/fileinfo.c bmp-OpenSPC-0.0.3/src/fileinfo.c
--- xmms-OpenSPC-0.0.3/src/fileinfo.c	2002-10-12 03:27:18.000000000 +0200
+++ bmp-OpenSPC-0.0.3/src/fileinfo.c	2005-04-26 00:52:38.000000000 +0200
@@ -34,7 +34,8 @@
 	if (fileinfo_win)
 		return;
 
-	fileinfo_win = gtk_window_new(GTK_WINDOW_DIALOG);
+	fileinfo_win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+	gtk_window_set_type_hint ( GTK_WINDOW (fileinfo_win), GDK_WINDOW_TYPE_HINT_DIALOG);
 	gtk_signal_connect(GTK_OBJECT(fileinfo_win), "destroy", GTK_SIGNAL_FUNC(fileinfo_destroy), &info);
 	gtk_window_set_title(GTK_WINDOW(fileinfo_win), "id666 tag editor");
 	gtk_container_set_border_width(GTK_CONTAINER(fileinfo_win), 5);
diff -urP xmms-OpenSPC-0.0.3/src/resample.c bmp-OpenSPC-0.0.3/src/resample.c
--- xmms-OpenSPC-0.0.3/src/resample.c	2002-10-10 01:24:56.000000000 +0200
+++ bmp-OpenSPC-0.0.3/src/resample.c	2005-04-26 00:19:56.000000000 +0200
@@ -125,7 +125,7 @@
 }
 
 
-int res_init(res_state *state, int channels, int outfreq, int infreq, res_parameter op1, ...)
+int resamp_init(res_state *state, int channels, int outfreq, int infreq, res_parameter op1, ...)
 {
 	double beta = 16.0,
 		cutoff = 0.80,
diff -urP xmms-OpenSPC-0.0.3/src/resample.h bmp-OpenSPC-0.0.3/src/resample.h
--- xmms-OpenSPC-0.0.3/src/resample.h	2002-10-10 01:24:56.000000000 +0200
+++ bmp-OpenSPC-0.0.3/src/resample.h	2005-04-26 00:20:02.000000000 +0200
@@ -42,7 +42,7 @@
 	RES_BETA	/* (double)16.0 */
 } res_parameter;
 
-int res_init(res_state *state, int channels, int outfreq, int infreq, res_parameter op1, ...);
+int resamp_init(res_state *state, int channels, int outfreq, int infreq, res_parameter op1, ...);
 /*
  * Configure *state to manage a data stream with the specified parameters.  The
  * string 'params' is currently unspecified, but will configure the parameters
diff -urP xmms-OpenSPC-0.0.3/src/spc-about.c bmp-OpenSPC-0.0.3/src/spc-about.c
--- xmms-OpenSPC-0.0.3/src/spc-about.c	2002-10-11 20:26:33.000000000 +0200
+++ bmp-OpenSPC-0.0.3/src/spc-about.c	2005-04-26 00:28:50.000000000 +0200
@@ -39,6 +39,8 @@
 "\n"
 "resample.c and resample.h are Copyright (C) 2002 Simon Hosie,\n"
 "and are also under the GNU LGPL\n"
+"\n"
+"BMP-OpenSPC port by Giacomo Lozito aka city_hunter\n"
 );
 
 	gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), label, TRUE, TRUE, 0);
diff -urP xmms-OpenSPC-0.0.3/src/spc-config.c bmp-OpenSPC-0.0.3/src/spc-config.c
--- xmms-OpenSPC-0.0.3/src/spc-config.c	2002-10-12 02:59:50.000000000 +0200
+++ bmp-OpenSPC-0.0.3/src/spc-config.c	2005-04-26 00:10:47.000000000 +0200
@@ -8,7 +8,7 @@
 #include <config.h>
 #endif
 
-#include "configfile.h"
+#include <bmp/configfile.h>
 
 #include "spc-config.h"
 #include "spc-util.h"
@@ -28,7 +28,7 @@
 	spc_cfg.loop_count = 1;
 	spc_cfg.loop_mintime = (3*60+0)*32000;
 
-	filename = g_strconcat(g_get_home_dir(), "/.xmms/openspc.conf", NULL);
+	filename = g_strconcat(g_get_home_dir(), "/.bmp/openspc.conf", NULL);
 	cfg = xmms_cfg_open_file(filename);
 
 	if (cfg) {
@@ -60,7 +60,7 @@
 	ConfigFile *cfg;
 	gchar *filename, *tmp;
 
-	filename = g_strconcat(g_get_home_dir(), "/.xmms/openspc.conf", NULL);
+	filename = g_strconcat(g_get_home_dir(), "/.bmp/openspc.conf", NULL);
 	cfg = xmms_cfg_open_file(filename);
 	if (!cfg) cfg = xmms_cfg_new();
 
@@ -123,7 +123,8 @@
 
 	/* Race condition exists here.  I don't care. :) */
 
-	config_win = gtk_window_new(GTK_WINDOW_DIALOG);
+	config_win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+	gtk_window_set_type_hint ( GTK_WINDOW (config_win), GDK_WINDOW_TYPE_HINT_DIALOG);
 	gtk_signal_connect(GTK_OBJECT(config_win), "destroy", GTK_SIGNAL_FUNC(conf_destroy), NULL);
 	gtk_window_set_title(GTK_WINDOW(config_win), PACKAGE " configuration");
 	gtk_container_set_border_width(GTK_CONTAINER(config_win), 5);
diff -urP xmms-OpenSPC-0.0.3/src/spc-util.c bmp-OpenSPC-0.0.3/src/spc-util.c
--- xmms-OpenSPC-0.0.3/src/spc-util.c	2002-10-12 01:40:27.000000000 +0200
+++ bmp-OpenSPC-0.0.3/src/spc-util.c	2005-04-26 00:53:42.000000000 +0200
@@ -181,7 +181,7 @@
 	GtkWidget *widget;
 
 	widget = gtk_entry_new();
-	gtk_entry_set_text(GTK_ENTRY(widget), *str?*str:"");
+	gtk_entry_set_text(GTK_ENTRY(widget), *str?g_locale_to_utf8(*str,strlen(*str),NULL,NULL,NULL):"");
 	gtk_signal_connect(GTK_OBJECT(widget), "changed", GTK_SIGNAL_FUNC(string_changed), str);
 
 	return widget;
diff -urP xmms-OpenSPC-0.0.3/src/spc.c bmp-OpenSPC-0.0.3/src/spc.c
--- xmms-OpenSPC-0.0.3/src/spc.c	2002-10-12 03:32:27.000000000 +0200
+++ bmp-OpenSPC-0.0.3/src/spc.c	2005-10-23 13:22:49.000000000 +0200
@@ -2,19 +2,19 @@
 #include <gtk/gtk.h>
 #include <glib.h>
 #include <pthread.h>
-
-#include <stdio.h>
 #include <string.h>
 #include <unistd.h>
 #include <fcntl.h>
 
+#include <stdio.h>
+
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
 
-#include "plugin.h"
-#include "titlestring.h"
-#include "util.h"
+#include <bmp/plugin.h>
+#include <bmp/titlestring.h>
+#include <bmp/util.h>
 
 #include "id666.h"
 #include "openspc.h"
@@ -24,7 +24,6 @@
 #include "spc-config.h"
 #include "fileinfo.h"
 
-static InputPlugin spc_ip;
 
 #define OUTPUT_FREQ	44100
 
@@ -48,30 +47,33 @@
 
 static void spc_get_info(char *filename, char **title, int *length);
 
-InputPlugin *get_iplugin_info(void) {
-	memset(&spc_ip, 0, sizeof(spc_ip));
-
-	spc_ip.description =		"OpenSPC (" OPENSPC_VERSION ") Player " VERSION;
-
-	spc_ip.init =			spc_init;
-	spc_ip.cleanup =		spc_cleanup;
-
-	spc_ip.about =			spc_about;
-
-	spc_ip.configure =		spc_configure;
-
-	spc_ip.is_our_file =		spc_is_our_file;
-
-	spc_ip.play_file =		spc_play;
-	spc_ip.stop =			spc_stop;
-	spc_ip.pause =			spc_pause;
-	spc_ip.seek =			spc_seek;
-	spc_ip.get_time =		spc_get_time;
-
-	spc_ip.get_song_info =		spc_get_info;
-
-	spc_ip.file_info_box =		spc_fileinfo;
+static InputPlugin spc_ip = {
+        NULL,
+        NULL,
+        "BMP-OpenSPC Plugin",
+        spc_init,
+        spc_about,
+        spc_configure,
+        spc_is_our_file,
+        NULL,
+        spc_play,
+        spc_stop,
+        spc_pause,
+        spc_seek,
+        NULL,
+        spc_get_time,
+        NULL,
+        NULL,
+        spc_cleanup,
+        NULL,
+        NULL,
+        NULL, NULL,
+        spc_get_info,
+        spc_fileinfo,
+        NULL
+};
 
+InputPlugin *get_iplugin_info(void) {
 	return &spc_ip;
 }
 
@@ -235,7 +237,7 @@
 	spc_ip.output->flush(0);
 
 	if (!OSPC_Init(spc_p->data, sizeof(spc_p->data)))
-	if (!res_init(&resampler, OSPC_CHANNELS, OUTPUT_FREQ, OSPC_FREQ, RES_END)) {
+	if (!resamp_init(&resampler, OSPC_CHANNELS, OUTPUT_FREQ, OSPC_FREQ, RES_END)) {
 	while (spc_p->going) {
 		if (spc_p->seek_to != -1) {
 			dist = (spc_p->seek_to * 32) - pos;
