Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package sidplayfp for openSUSE:Factory 
checked in at 2026-01-07 16:01:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/sidplayfp (Old)
 and      /work/SRC/openSUSE:Factory/.sidplayfp.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "sidplayfp"

Wed Jan  7 16:01:36 2026 rev:18 rq:1325700 version:2.16.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/sidplayfp/sidplayfp.changes      2025-11-07 
18:24:56.901723738 +0100
+++ /work/SRC/openSUSE:Factory/.sidplayfp.new.1928/sidplayfp.changes    
2026-01-07 16:01:48.732109898 +0100
@@ -1,0 +2,15 @@
+Tue Jan  6 12:49:36 UTC 2026 - Martin Hauke <[email protected]>
+
+- Update to version 2.16.0
+  * Add USBSID support.
+  * Display the actual used SID model(s).
+  * Fix invalid filter range error.
+  * Add --version option.
+  * Replace non-ASCII characters with ASCII when iconv is not
+    enabled.
+  * Correctly restore ANSI console.
+  * Correctly display play errors.
+  * Handle negative fade out values in an useful way.
+  * Init driver output before parsing config.
+
+-------------------------------------------------------------------

Old:
----
  sidplayfp-2.15.2.tar.gz

New:
----
  sidplayfp-2.16.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ sidplayfp.spec ++++++
--- /var/tmp/diff_new_pack.LcQJ5N/_old  2026-01-07 16:01:50.576186651 +0100
+++ /var/tmp/diff_new_pack.LcQJ5N/_new  2026-01-07 16:01:50.608187983 +0100
@@ -1,8 +1,8 @@
 #
 # spec file for package sidplayfp
 #
-# Copyright (c) 2025 SUSE LLC and contributors
-# Copyright (c) 2023-2025, Martin Hauke <[email protected]>
+# Copyright (c) 2026 SUSE LLC and contributors
+# Copyright (c) 2023-2026, Martin Hauke <[email protected]>
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 
 Name:           sidplayfp
-Version:        2.15.2
+Version:        2.16.0
 Release:        0
 Summary:        SID chip music module player
 License:        GPL-2.0-or-later

++++++ sidplayfp-2.15.2.tar.gz -> sidplayfp-2.16.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/AUTHORS new/sidplayfp-2.16.0/AUTHORS
--- old/sidplayfp-2.15.2/AUTHORS        2025-11-02 10:18:27.000000000 +0100
+++ new/sidplayfp-2.16.0/AUTHORS        2025-12-23 16:12:09.000000000 +0100
@@ -20,6 +20,8 @@
     LaLa              - stilview
     Stian Skjelstad   - SID status display
     Michael Hartmann  - filter curves
+    Thibaut VARENE    - exSID support
+    LouD              - USBSID-Pico support
 
 
 Credit where credit is due, so if I missed anyone please let me know.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/Makefile.in 
new/sidplayfp-2.16.0/Makefile.in
--- old/sidplayfp-2.15.2/Makefile.in    2025-11-02 10:18:30.000000000 +0100
+++ new/sidplayfp-2.16.0/Makefile.in    2025-12-23 16:12:12.000000000 +0100
@@ -277,7 +277,7 @@
        $(top_srcdir)/build-aux/depcomp \
        $(top_srcdir)/build-aux/install-sh \
        $(top_srcdir)/build-aux/missing $(top_srcdir)/src/config.h.in \
-       AUTHORS COPYING README TODO build-aux/compile \
+       AUTHORS COPYING NEWS README TODO build-aux/compile \
        build-aux/config.guess build-aux/config.rpath \
        build-aux/config.sub build-aux/depcomp build-aux/install-sh \
        build-aux/missing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/NEWS new/sidplayfp-2.16.0/NEWS
--- old/sidplayfp-2.15.2/NEWS   1970-01-01 01:00:00.000000000 +0100
+++ new/sidplayfp-2.16.0/NEWS   2025-12-23 16:12:09.000000000 +0100
@@ -0,0 +1,11 @@
+2.16.0 2025-12-23
+* Add USBSID support (#84)
+* Display the actual used SID model(s) (#79)
+* Fix invalid filter range error (#94)
+* Add --version option (#99)
+* Replace non-ASCII characters with ASCII when iconv is not enabled (#97)
+* Correctly restore ANSI console (#100)
+* Correctly display play errors (#101)
+* Handle negative fade out values in an useful way (#93)
+* Init driver output before parsing config (#89)
+* Build windows binaries with dynamic SIMD dispatch
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/README new/sidplayfp-2.16.0/README
--- old/sidplayfp-2.15.2/README 2025-11-02 10:18:27.000000000 +0100
+++ new/sidplayfp-2.16.0/README 2025-12-23 16:12:09.000000000 +0100
@@ -69,3 +69,8 @@
 --with-out123
 Build with out123 library providing support for additional audio interfaces
 enabled by default
+
+--with-libiconv-prefix[=DIR]:
+search for libiconv in DIR/include and DIR/lib
+
+the character conversion requires presence of the POSIX/XSI iconv function 
family in either the C library or a separate libiconv library (see 
https://www.gnu.org/software/gettext/manual/html_node/AM_005fICONV.html)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/configure 
new/sidplayfp-2.16.0/configure
--- old/sidplayfp-2.15.2/configure      2025-11-02 10:18:30.000000000 +0100
+++ new/sidplayfp-2.16.0/configure      2025-12-23 16:12:12.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for sidplayfp 2.15.2.
+# Generated by GNU Autoconf 2.71 for sidplayfp 2.16.0.
 #
 #
 # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
@@ -608,8 +608,8 @@
 # Identity of this package.
 PACKAGE_NAME='sidplayfp'
 PACKAGE_TARNAME='sidplayfp'
-PACKAGE_VERSION='2.15.2'
-PACKAGE_STRING='sidplayfp 2.15.2'
+PACKAGE_VERSION='2.16.0'
+PACKAGE_STRING='sidplayfp 2.16.0'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL='https://github.com/libsidplayfp/sidplayfp/'
 
@@ -1367,7 +1367,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures sidplayfp 2.15.2 to adapt to many kinds of systems.
+\`configure' configures sidplayfp 2.16.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1438,7 +1438,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of sidplayfp 2.15.2:";;
+     short | recursive ) echo "Configuration of sidplayfp 2.16.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1566,7 +1566,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-sidplayfp configure 2.15.2
+sidplayfp configure 2.16.0
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -1842,7 +1842,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by sidplayfp $as_me 2.15.2, which was
+It was created by sidplayfp $as_me 2.16.0, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3332,7 +3332,7 @@
 
 # Define the identity of the package.
  PACKAGE='sidplayfp'
- VERSION='2.15.2'
+ VERSION='2.16.0'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -10688,6 +10688,20 @@
 printf "%s\n" "no" >&6; }
 
 fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 
$SIDPLAYPF_INCLUDE/sidplayfp/builders/usbsid.h" >&5
+printf %s "checking for $SIDPLAYPF_INCLUDE/sidplayfp/builders/usbsid.h... " 
>&6; }
+if test -f $SIDPLAYPF_INCLUDE/sidplayfp/builders/usbsid.h
+then :
+
+printf "%s\n" "#define HAVE_SIDPLAYFP_BUILDERS_USBSID_H 1" >>confdefs.h
+
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+
+fi
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build for 
debugging" >&5
 printf %s "checking whether to build for debugging... " >&6; }
@@ -11255,7 +11269,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by sidplayfp $as_me 2.15.2, which was
+This file was extended by sidplayfp $as_me 2.16.0, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -11324,7 +11338,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-sidplayfp config.status 2.15.2
+sidplayfp config.status 2.16.0
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/configure.ac 
new/sidplayfp-2.16.0/configure.ac
--- old/sidplayfp-2.15.2/configure.ac   2025-11-02 10:18:27.000000000 +0100
+++ new/sidplayfp-2.16.0/configure.ac   2025-12-23 16:12:09.000000000 +0100
@@ -1,5 +1,5 @@
 dnl Process this file with autoconf to produce a configure script.
-AC_INIT([sidplayfp], [2.15.2], [], [], 
[https://github.com/libsidplayfp/sidplayfp/])
+AC_INIT([sidplayfp], [2.16.0], [], [], 
[https://github.com/libsidplayfp/sidplayfp/])
 AC_CONFIG_SRCDIR([src/main.cpp])
 AC_CONFIG_AUX_DIR([build-aux])
 AC_CONFIG_MACRO_DIR([m4])
@@ -126,6 +126,12 @@
     AC_MSG_RESULT([yes])],
     [AC_MSG_RESULT([no])]
 )
+AC_MSG_CHECKING([for $SIDPLAYPF_INCLUDE/sidplayfp/builders/usbsid.h])
+AS_IF([test -f $SIDPLAYPF_INCLUDE/sidplayfp/builders/usbsid.h],
+    [AC_DEFINE([HAVE_SIDPLAYFP_BUILDERS_USBSID_H], [1], [usbsid builder])
+    AC_MSG_RESULT([yes])],
+    [AC_MSG_RESULT([no])]
+)
 
 AC_MSG_CHECKING([whether to build for debugging])
 AC_ARG_ENABLE(debug, [AS_HELP_STRING([--enable-debug], [compile for debugging 
@<:@no/yes, default=no@:>@])],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/doc/en/sidplayfp.1 
new/sidplayfp-2.16.0/doc/en/sidplayfp.1
--- old/sidplayfp-2.15.2/doc/en/sidplayfp.1     2025-11-02 10:18:35.000000000 
+0100
+++ new/sidplayfp-2.16.0/doc/en/sidplayfp.1     2025-12-23 16:12:15.000000000 
+0100
@@ -55,7 +55,7 @@
 .\" ========================================================================
 .\"
 .IX Title "SIDPLAYFP 1"
-.TH SIDPLAYFP 1 2025-11-02 "perl v5.38.2" "User Programs"
+.TH SIDPLAYFP 1 2025-12-23 "perl v5.38.2" "User Programs"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -81,11 +81,13 @@
 .IP "\fB\-h, \-\-help\-debug\fR" 4
 .IX Item "-h, --help-debug"
 Display additional options helpful for debugging.
-.IP \fB\-fo\fR\fI<num>\fR 4
-.IX Item "-fo<num>"
+.IP "\fB\-fo\fR\fI<a|b> <num>\fR" 4
+.IX Item "-fo<a|b> <num>"
 Set fade-out time in seconds (default: 0).
-The fade-out starts at the song end so this adds
-the specified number of seconds to the tune length.
+Ends a(fter) or starts b(efore) actual song end time,
+the specified number of seconds wil be added to the tune length
+when after. If not specified starts after.
+Mostly useful for looping tunes.
 .IP \fB\-f\fR\fI<num>\fR 4
 .IX Item "-f<num>"
 Set audio output frequency in Hz (default: 48000).
@@ -202,6 +204,9 @@
 .IP \fB\-\-exsid\fR 4
 .IX Item "--exsid"
 Use exSID device.
+.IP \fB\-\-usbsid\fR 4
+.IX Item "--usbsid"
+Use USBSID-Pico device.
 .IP \fB\-\-cpu\-debug\fR 4
 .IX Item "--cpu-debug"
 Display CPU register and assembly dumps, available only
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/doc/en/sidplayfp.ini.5 
new/sidplayfp-2.16.0/doc/en/sidplayfp.ini.5
--- old/sidplayfp-2.15.2/doc/en/sidplayfp.ini.5 2025-11-02 10:18:35.000000000 
+0100
+++ new/sidplayfp-2.16.0/doc/en/sidplayfp.ini.5 2025-12-23 16:12:15.000000000 
+0100
@@ -55,7 +55,7 @@
 .\" ========================================================================
 .\"
 .IX Title "SIDPLAYFP.INI 5"
-.TH SIDPLAYFP.INI 5 2025-11-02 "perl v5.38.2" "File formats"
+.TH SIDPLAYFP.INI 5 2025-12-23 "perl v5.38.2" "File formats"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -192,8 +192,8 @@
 improve latency.
 .SS Emulation
 .IX Subsection "Emulation"
-.IP \fBEngine\fR=\fI<RESIDFP|RESID|HARDSID|EXSID|NONE>\fR 4
-.IX Item "Engine=<RESIDFP|RESID|HARDSID|EXSID|NONE>"
+.IP \fBEngine\fR=\fI<RESIDFP|RESID|HARDSID|EXSID|USBSID|NONE>\fR 4
+.IX Item "Engine=<RESIDFP|RESID|HARDSID|EXSID|USBSID|NONE>"
 Set the SID emulation engine. Default is RESIDFP.
 .IP \fBC64Model\fR=\fI<PAL|NTSC|OLD_NTSC|DREAN>\fR 4
 .IX Item "C64Model=<PAL|NTSC|OLD_NTSC|DREAN>"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/doc/en/sidplayfp.ini.pod 
new/sidplayfp-2.16.0/doc/en/sidplayfp.ini.pod
--- old/sidplayfp-2.15.2/doc/en/sidplayfp.ini.pod       2025-11-02 
10:18:27.000000000 +0100
+++ new/sidplayfp-2.16.0/doc/en/sidplayfp.ini.pod       2025-12-23 
16:12:09.000000000 +0100
@@ -175,7 +175,7 @@
 
 =over
 
-=item B<Engine>=I<< <RESIDFP|RESID|HARDSID|EXSID|NONE> >>
+=item B<Engine>=I<< <RESIDFP|RESID|HARDSID|EXSID|USBSID|NONE> >>
 
 Set the SID emulation engine. Default is RESIDFP.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/doc/en/sidplayfp.pod 
new/sidplayfp-2.16.0/doc/en/sidplayfp.pod
--- old/sidplayfp-2.15.2/doc/en/sidplayfp.pod   2025-11-02 10:18:27.000000000 
+0100
+++ new/sidplayfp-2.16.0/doc/en/sidplayfp.pod   2025-12-23 16:12:09.000000000 
+0100
@@ -33,11 +33,13 @@
 
 Display additional options helpful for debugging.
 
-=item B<-fo>I<< <num> >>
+=item B<-fo>I<< <a|b> <num> >>
 
 Set fade-out time in seconds (default: 0).
-The fade-out starts at the song end so this adds
-the specified number of seconds to the tune length.
+Ends a(fter) or starts b(efore) actual song end time,
+the specified number of seconds wil be added to the tune length
+when after. If not specified starts after.
+Mostly useful for looping tunes.
 
 =item B<-f>I<< <num> >>
 
@@ -179,6 +181,10 @@
 
 Use exSID device.
 
+=item B<--usbsid>
+
+Use USBSID-Pico device.
+
 =item B<--cpu-debug>
 
 Display CPU register and assembly dumps, available only
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/doc/en/stilview.1 
new/sidplayfp-2.16.0/doc/en/stilview.1
--- old/sidplayfp-2.15.2/doc/en/stilview.1      2025-11-02 10:18:35.000000000 
+0100
+++ new/sidplayfp-2.16.0/doc/en/stilview.1      2025-12-23 16:12:15.000000000 
+0100
@@ -55,7 +55,7 @@
 .\" ========================================================================
 .\"
 .IX Title "STILVIEW 1"
-.TH STILVIEW 1 2025-11-02 "perl v5.38.2" "User Programs"
+.TH STILVIEW 1 2025-12-23 "perl v5.38.2" "User Programs"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/src/args.cpp 
new/sidplayfp-2.16.0/src/args.cpp
--- old/sidplayfp-2.15.2/src/args.cpp   2025-11-02 10:18:27.000000000 +0100
+++ new/sidplayfp-2.16.0/src/args.cpp   2025-12-23 16:12:09.000000000 +0100
@@ -45,6 +45,10 @@
 #  include <sidplayfp/builders/exsid.h>
 #endif
 
+#ifdef HAVE_SIDPLAYFP_BUILDERS_USBSID_H
+#  include <sidplayfp/builders/usbsid.h>
+#endif
+
 // Wide-chars are not yet supported here
 #undef SEPARATOR
 #define SEPARATOR "/"
@@ -164,7 +168,6 @@
     }
 
     // default arg options
-    m_driver.output = output_t::SOUNDCARD;
     m_driver.file   = false;
     m_driver.info   = false;
 
@@ -190,6 +193,11 @@
                 displayDebugArgs ();
                 return 0;
             }
+            else if (!std::strcmp(&argv[i][1], "-version"))
+            {
+                displayVersion();
+                return 0;
+            }
 
             else if (argv[i][1] == 'b')
             {
@@ -209,9 +217,25 @@
 #ifdef FEAT_NEW_PLAY_API
             else if (strncmp (&argv[i][1], "fo", 2) == 0)
             {
-                if (argv[i][3] == '\0')
+                m_fadeAfter = true;
+                int j = 3;
+                if (argv[i][j] == 'a')
+                {
+                    j++;
+                }
+                else if (argv[i][j] == 'b')
+                {
+                    j++;
+                    m_fadeAfter = false;
+                }
+                if (argv[i][j] == '\0')
                     err = true;
-                m_fadeoutTime = (uint_least32_t) atoi (&argv[i][3]);
+                int fadeoutTime = (uint_least32_t) atoi (&argv[i][j]);
+                if (fadeoutTime < 0)
+                {
+                    err = true;
+                }
+                m_fadeoutTime = static_cast<uint_least32_t>(fadeoutTime);
             }
 #endif
             else if (argv[i][1] == 'f')
@@ -431,7 +455,7 @@
             else if (std::strcmp (&argv[i][1], "cws") == 0)
             {
                 m_combinedWaveformsStrength  = SidConfig::STRONG;
-            }  
+            }
 #endif
             // File format conversions
             else if (argv[i][1] == 'w')
@@ -490,6 +514,14 @@
             }
 #endif // HAVE_SIDPLAYFP_BUILDERS_EXSID_H
 
+#ifdef HAVE_SIDPLAYFP_BUILDERS_USBSID_H
+            else if (std::strcmp (&argv[i][1], "-usbsid") == 0)
+            {
+                m_driver.sid    = EMU_USBSID;
+                m_driver.output = output_t::NONE;
+            }
+#endif // HAVE_SIDPLAYFP_BUILDERS_USBSID_H
+
             // These are for debug
             else if (std::strcmp (&argv[i][1], "-none") == 0)
             {
@@ -675,7 +707,7 @@
         << " --help-debug debug help menu" << endl
         << " -b<num>      set start time in [mins:]secs[.milli] format 
(default: 0)" << endl
 #ifdef FEAT_NEW_PLAY_API
-        << " -fo<num>     set fade-out time in seconds (default: 0)" << endl
+        << " -fo[a|b]<num> set fade-out time in seconds, ends a(fter) or 
starts b(efore) actual song end time (default: 0=no fade out)" << endl
 #endif
         << " -f<num>      set frequency in Hz (default: "
         << SidConfig::DEFAULT_SAMPLING_FREQ << ")" << endl
@@ -741,6 +773,13 @@
             out << " --exsid      enable exSID support" << endl;
     }
 #endif
+#ifdef HAVE_SIDPLAYFP_BUILDERS_USBSID_H
+    {
+        USBSIDBuilder us("");
+        if (us.availDevices ())
+            out << " --usbsid     enable USBSID support" << endl;
+    }
+#endif
     out << endl
         << "Home Page: " PACKAGE_URL << endl;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/src/audio/null/null.h 
new/sidplayfp-2.16.0/src/audio/null/null.h
--- old/sidplayfp-2.15.2/src/audio/null/null.h  2025-11-02 10:18:27.000000000 
+0100
+++ new/sidplayfp-2.16.0/src/audio/null/null.h  2025-12-23 16:12:09.000000000 
+0100
@@ -26,7 +26,7 @@
 #  include "config.h"
 #endif
 
-#if defined(HAVE_SIDPLAYFP_BUILDERS_HARDSID_H) || 
defined(HAVE_SIDPLAYFP_BUILDERS_EXSID_H)
+#if defined(HAVE_SIDPLAYFP_BUILDERS_HARDSID_H) || 
defined(HAVE_SIDPLAYFP_BUILDERS_EXSID_H) || 
defined(HAVE_SIDPLAYFP_BUILDERS_USBSID_H)
 #  ifndef AudioDriver
 #    define AudioDriver Audio_Null
 #  endif
@@ -35,7 +35,7 @@
 #include "../AudioBase.h"
 
 /*
- * Null audio driver used for hardsid, exSID
+ * Null audio driver used for hardsid, exSID and USBSID-Pico
  * and songlength detection
  */
 class Audio_Null: public AudioBase
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/src/codeConvert.cpp 
new/sidplayfp-2.16.0/src/codeConvert.cpp
--- old/sidplayfp-2.15.2/src/codeConvert.cpp    2025-11-02 10:18:27.000000000 
+0100
+++ new/sidplayfp-2.16.0/src/codeConvert.cpp    2025-12-23 16:12:09.000000000 
+0100
@@ -29,31 +29,43 @@
 const char* codeConvert::convert(const char* src)
 {
 #ifdef HAVE_ICONV
-    if (cd == (iconv_t) -1)
-        return src;
+    if (cd != (iconv_t) -1)
+    {
+        ICONV_CONST char *srcPtr = const_cast<ICONV_CONST char*>(src);
+        size_t srcLeft = std::strlen(src);
+        char *outPtr = buffer;
+        size_t outLeft = sizeof (buffer)-1;
+
+        while (srcLeft > 0)
+        {
+            size_t ret = iconv(cd, &srcPtr, &srcLeft, &outPtr, &outLeft);
+            if (ret == (size_t) -1)
+                return src;
+        }
+
+        // flush
+        iconv(cd, nullptr, &srcLeft, &outPtr, &outLeft);
 
-    ICONV_CONST char *srcPtr = const_cast<ICONV_CONST char*>(src);
-    size_t srcLeft = strlen(src);
-    char *outPtr = buffer;
-    size_t outLeft = sizeof (buffer)-1;
+        // terminate buffer string
+        *outPtr = 0;
 
-    while (srcLeft > 0)
+        return buffer;
+    }
+#endif
+    // convert non-ASCII characters to ASCII
+    const char ascii[64 + 1] = 
"AAAAAAECEEEEIIIIDNOOOOOxOUUUUYTSaaaaaaeceeeeiiiidnooooo/ouuuuyty";
+    int i=0;
+    while (src[i])
     {
-        size_t ret = iconv(cd, &srcPtr, &srcLeft, &outPtr, &outLeft);
-        if (ret == (size_t) -1)
-            return src;
+        unsigned char ch = static_cast<unsigned char>(src[i]);
+        buffer[i] = (ch < 0xc0) ? ch : ascii[ch - 0xc0];
+        i++;
     }
 
-    // flush
-    iconv(cd, nullptr, &srcLeft, &outPtr, &outLeft);
-
     // terminate buffer string
-    *outPtr = 0;
+    buffer[i] = 0;
 
     return buffer;
-#else
-    return src;
-#endif
 }
 
 codeConvert::codeConvert()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/src/codeConvert.h 
new/sidplayfp-2.16.0/src/codeConvert.h
--- old/sidplayfp-2.15.2/src/codeConvert.h      2025-11-02 10:18:27.000000000 
+0100
+++ new/sidplayfp-2.16.0/src/codeConvert.h      2025-12-23 16:12:09.000000000 
+0100
@@ -45,9 +45,9 @@
 private:
 #ifdef HAVE_ICONV
     iconv_t cd;
+#endif
 
     char buffer[1024];
-#endif
 
 public:
     codeConvert();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/src/config.h.in 
new/sidplayfp-2.16.0/src/config.h.in
--- old/sidplayfp-2.15.2/src/config.h.in        2025-11-02 10:18:30.000000000 
+0100
+++ new/sidplayfp-2.16.0/src/config.h.in        2025-12-23 16:12:12.000000000 
+0100
@@ -54,6 +54,9 @@
 /* resid builder */
 #undef HAVE_SIDPLAYFP_BUILDERS_RESID_H
 
+/* usbsid builder */
+#undef HAVE_SIDPLAYFP_BUILDERS_USBSID_H
+
 /* Define to 1 if you have the <soundcard.h> header file. */
 #undef HAVE_SOUNDCARD_H
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/src/menu.cpp 
new/sidplayfp-2.16.0/src/menu.cpp
--- old/sidplayfp-2.15.2/src/menu.cpp   2025-11-02 10:18:27.000000000 +0100
+++ new/sidplayfp-2.16.0/src/menu.cpp   2025-12-23 16:12:09.000000000 +0100
@@ -1,7 +1,7 @@
 /*
  * This file is part of sidplayfp, a console SID player.
  *
- * Copyright 2011-2023 Leandro Nini
+ * Copyright 2011-2025 Leandro Nini
  * Copyright 2000-2001 Simon White
  *
  * This program is free software; you can redistribute it and/or modify
@@ -137,6 +137,18 @@
     return "---";
 }
 #endif
+
+void ConsolePlayer::displayVersion()
+{
+    const SidInfo &info = m_engine.info();
+
+    cout << PACKAGE_NAME " " VERSION << endl;
+    string version;
+    version.append("Using ").append(info.name()).append(" 
").append(info.version());
+    cout << version << endl;
+    cout << "Home Page: " PACKAGE_URL << endl;
+}
+
 // Display console menu
 void ConsolePlayer::menu ()
 {
@@ -350,7 +362,7 @@
         consoleColour (color_t::yellow, true);
         cerr << " SID Details  : ";
         consoleColour (color_t::white, false);
-        cerr << "Model = ";
+        cerr << "1st SID = $d400, Model = ";
         cerr << getModel(tuneInfo->sidModel(0));
         cerr << endl;
         if (tuneInfo->sidChips() > 1)
@@ -402,13 +414,19 @@
 
         consoleTable  (table_t::middle);
         consoleColour (color_t::yellow, true);
-        cerr << " SID Model    : ";
+        cerr << " SID Model(s) : ";
         consoleColour (color_t::white, false);
+#ifdef FEAT_SID_MODEL
+        for (unsigned int i=0; i<info.numberOfSIDs(); i++)
+            cerr << getModel(info.sidModel(i)) << " ";
+        cerr << endl;
+#else
         if (m_engCfg.forceSidModel)
             cerr << "Forced ";
         else
             cerr << "from tune, default = ";
         cerr << getModel(m_engCfg.defaultSidModel) << endl;
+#endif
 
         if (m_verboseLevel > 1)
         {
@@ -501,6 +519,9 @@
     // is not disturbed.
     if ( !m_quietLevel )
         cerr << "00:00";
+
+    consoleRestore();
+
     cerr << flush;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/src/player.cpp 
new/sidplayfp-2.16.0/src/player.cpp
--- old/sidplayfp-2.15.2/src/player.cpp 2025-11-02 10:18:27.000000000 +0100
+++ new/sidplayfp-2.16.0/src/player.cpp 2025-12-23 16:12:09.000000000 +0100
@@ -90,6 +90,11 @@
 const char ConsolePlayer::EXSID_ID[] = "exSID";
 #endif
 
+#ifdef HAVE_SIDPLAYFP_BUILDERS_USBSID_H
+#   include <sidplayfp/builders/usbsid.h>
+const char ConsolePlayer::USBSID_ID[] = "USBSID";
+#endif
+
 #ifdef FEAT_REGS_DUMP_SID
 uint16_t freqTablePal[]
 {
@@ -249,7 +254,7 @@
         double adjustment = it->second;
         return (adjustment * 20. - 1.) / 39.;
     }
-    return -1;
+    return -1.;
 }
 #else
 double getRecommendedFilterCurve(const std::string& author)
@@ -390,6 +395,9 @@
         if (emulation.powerOnDelay >= 0)
             m_engCfg.powerOnDelay    = emulation.powerOnDelay;
 
+        // Set default output
+        m_driver.output = output_t::SOUNDCARD;
+
         if (!emulation.engine.empty())
         {
             if (emulation.engine.compare(TEXT("RESIDFP")) == 0)
@@ -414,6 +422,13 @@
                 m_driver.output = output_t::NONE;
             }
 #endif
+#ifdef HAVE_SIDPLAYFP_BUILDERS_USBSID_H
+            else if (emulation.engine.compare(TEXT("USBSID")) == 0)
+            {
+                m_driver.sid    = EMU_USBSID;
+                m_driver.output = output_t::NONE;
+            }
+#endif
             else if (emulation.engine.compare(TEXT("NONE")) == 0)
             {
                 m_driver.sid    = EMU_NONE;
@@ -424,6 +439,7 @@
     m_verboseLevel = (m_iniCfg.sidplay2()).verboseLevel;
 #ifdef FEAT_NEW_PLAY_API
     m_fadeoutTime = 0;
+    m_fadeAfter = false;
 #endif
     createOutput (output_t::NONE, nullptr);
     createSidEmu (EMU_NONE, nullptr);
@@ -621,9 +637,18 @@
 
             if (m_autofilter && (tuneInfo->numberOfInfoStrings() == 3))
             {
-                frange = getRecommendedFilterRange(tuneInfo->infoString(1));
-                if (m_verboseLevel > 1)
-                    cerr << "Recommended filter range: " << frange << endl;
+                double rfr = 
getRecommendedFilterRange(tuneInfo->infoString(1));
+                if (rfr < 0.)
+                {
+                    if (m_verboseLevel > 1)
+                        cerr << "No recommended filter range available" << 
endl;
+                }
+                else
+                {
+                    if (m_verboseLevel > 1)
+                        cerr << "Recommended filter range: " << rfr << endl;
+                    frange = rfr;
+                }
             }
 
             if (m_frange.has_value())
@@ -647,9 +672,18 @@
 #ifndef FEAT_FILTER_RANGE
             if (m_autofilter && (tuneInfo->numberOfInfoStrings() == 3))
             {
-                fcurve = getRecommendedFilterCurve(tuneInfo->infoString(1));
-                if (m_verboseLevel > 1)
-                    cerr << "Recommended filter curve: " << fcurve << endl;
+                double rfc = 
getRecommendedFilterCurve(tuneInfo->infoString(1));
+                if (rfc < 0.)
+                {
+                    if (m_verboseLevel > 1)
+                        cerr << "No recommended filter curve available" << 
endl;
+                }
+                else
+                {
+                    if (m_verboseLevel > 1)
+                        cerr << "Recommended filter curve: " << rfc << endl;
+                    fcurve = rfc;
+                }
             }
 #endif
             if (m_fcurve.has_value())
@@ -742,6 +776,23 @@
     }
 #endif // HAVE_SIDPLAYFP_BUILDERS_EXSID_H
 
+#ifdef HAVE_SIDPLAYFP_BUILDERS_USBSID_H
+    case EMU_USBSID:
+    {
+        try
+        {
+            USBSIDBuilder *us = new USBSIDBuilder( USBSID_ID );
+
+            m_engCfg.sidEmulation = us;
+            if (!us->getStatus()) goto createSidEmu_error;
+            us->create ((m_engine.info ()).maxsids());
+            if (!us->getStatus()) goto createSidEmu_error;
+        }
+        catch (std::bad_alloc const &ba) {}
+        break;
+    }
+#endif // HAVE_SIDPLAYFP_BUILDERS_USBSID_H
+
     default:
         // Emulation Not yet handled
         // This default case results in the default
@@ -872,7 +923,7 @@
                     (tuneInfo->clockSpeed() != SidTuneInfo::CLOCK_PAL)
                     ? FREQ_NTSC
                     : FREQ_PAL;
-                length /= 
+                length /=
                     (m_engCfg.defaultC64Model == SidConfig::NTSC) ||
                     (m_engCfg.defaultC64Model == SidConfig::OLD_NTSC)
                     ? FREQ_NTSC
@@ -885,7 +936,8 @@
     // Set up the play timer
     m_timer.stop = m_timer.length;
 #ifdef FEAT_NEW_PLAY_API
-    m_timer.stop += m_fadeoutTime;
+    if (m_fadeAfter)
+        m_timer.stop += m_fadeoutTime;
 #endif
 
     if (m_timer.valid)
@@ -931,18 +983,6 @@
     createSidEmu    (EMU_NONE, nullptr);
     m_engine.load   (nullptr);
     m_engine.config (m_engCfg);
-
-    if (m_quietLevel < 2)
-    {   // Correctly leave ansi mode and get prompt to
-        // end up in a suitable location
-        if ((m_iniCfg.console ()).ansi) {
-            cerr << '\x1b' << "[?25h";
-            cerr << '\x1b' << "[0m";
-        }
-#ifndef _WIN32
-        cerr << endl;
-#endif
-    }
 }
 
 // Flush any hardware sid fifos so all music is played
@@ -960,6 +1000,11 @@
         ((exSIDBuilder *)m_engCfg.sidEmulation)->flush ();
         break;
 #endif // HAVE_SIDPLAYFP_BUILDERS_EXSID_H
+#ifdef HAVE_SIDPLAYFP_BUILDERS_USBSID_H
+    case EMU_USBSID:
+        ((USBSIDBuilder *)m_engCfg.sidEmulation)->flush ();
+        break;
+#endif // HAVE_SIDPLAYFP_BUILDERS_USBSID_H
     default:
         break;
     }
@@ -1001,7 +1046,7 @@
             int samples = m_engine.play(2000);
             if (samples < 0) UNLIKELY
             {
-                cerr << m_engine.error();
+                displayError (m_engine.error());
                 m_state = playerError;
                 return false;
             }
@@ -1020,7 +1065,7 @@
         uint_least32_t samples = m_engine.play(buffer, length);
         if ((samples < length) || !m_engine.isPlaying()) UNLIKELY
         {
-            cerr << m_engine.error();
+            displayError (m_engine.error());
             m_state = playerError;
             return false;
         }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/src/player.h 
new/sidplayfp-2.16.0/src/player.h
--- old/sidplayfp-2.15.2/src/player.h   2025-11-02 10:18:27.000000000 +0100
+++ new/sidplayfp-2.16.0/src/player.h   2025-12-23 16:12:09.000000000 +0100
@@ -102,6 +102,7 @@
     /* The following should disable the soundcard */
     EMU_HARDSID,
     EMU_EXSID,
+    EMU_USBSID,
     EMU_SIDSTATION,
     EMU_COMMODORE,
     EMU_SIDSYN,
@@ -144,6 +145,9 @@
 #ifdef HAVE_SIDPLAYFP_BUILDERS_EXSID_H
     static const char  EXSID_ID[];
 #endif
+#ifdef HAVE_SIDPLAYFP_BUILDERS_USBSID_H
+    static const char  USBSID_ID[];
+#endif
 #ifdef HAVE_TSID
     TSID               m_tsid;
 #endif
@@ -169,6 +173,11 @@
 #endif
 #ifdef FEAT_NEW_PLAY_API
     uint_least32_t     m_fadeoutTime;
+    /*
+     * fade out after song end
+     * if true fade out time will be added to song duration
+     */
+    bool               m_fadeAfter;
 #endif
 #ifdef FEAT_REGS_DUMP_SID
     uint8_t            m_registers[3][32];
@@ -255,6 +264,7 @@
 
     // Command line args
     void displayArgs    (const char *arg = nullptr);
+    void displayVersion ();
 
     bool createOutput   (output_t driver, const SidTuneInfo *tuneInfo);
     bool createSidEmu   (SIDEMUS emu, const SidTuneInfo *tuneInfo);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sidplayfp-2.15.2/src/sidlib_features.h 
new/sidplayfp-2.16.0/src/sidlib_features.h
--- old/sidplayfp-2.15.2/src/sidlib_features.h  2025-11-02 10:18:27.000000000 
+0100
+++ new/sidplayfp-2.16.0/src/sidlib_features.h  2025-12-23 16:12:09.000000000 
+0100
@@ -42,4 +42,8 @@
 #  define FEAT_NEW_PLAY_API
 #endif
 
+#if LIBSIDPLAYFP_VERSION_MAJ > 2 || (LIBSIDPLAYFP_VERSION_MAJ == 2 && 
LIBSIDPLAYFP_VERSION_MIN >= 16)
+#  define FEAT_SID_MODEL
+#endif
+
 #endif

Reply via email to