Accepting request 159684 from multimedia:libs
- Update to 0.6.0 * SPC improvements: - Switched to newer snes_spc 0.9.0 for SPC emulation. Uses fast DSP. - Fixed Spc_Emu::gain(). - Fixed support for files <0x10200 bytes. * Other bugfixes: - Fixed a couple of GBS bugs, one involving access of memory after realloc. - Blip_Buffer works on systems where 'double' is a single-precision floating-point type. - Fix uninitialized buffer size in dual_resampler. - Compilation warnings squashed out as of clang 3.3-pre and gcc 4.7.2. * API changes/additions: - Removed documentation of C++ interface, as the C interface in gme.h is the only supported one. - Added gme_enable_accuracy() for enabling more accurate sound emulation options (currently affects SPC only). * Build system improvements: - Add pkg_config support. - Fix build on case-insensitive systems. - Allow for install on Cygwin. - Fix install on multilib systems, such as many 64-bit distros (CMake must be able to figure out your system's libsuffix, if any). - C++ implementation symbols are not leaked into the resultant library file (requires symbol visibility support). * Sample player improvements: - Can toggle fast/accurate emulation (with the 'A' key). - Remove all the previous patches (libgme-0.5.5-LIB_SUFFIX.patch, libgme-0.5.5-pkg_config.patch and libgme-0.5.5-symbol_visibility.patch) - Add libgme-0.6.0-pkgconfig_path.patch OBS-URL: https://build.opensuse.org/request/show/159684 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libgme?expand=0&rev=10
This commit is contained in:
14
_service
14
_service
@@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" ?>
|
||||
<services>
|
||||
<service name="download_url">
|
||||
<param name="protocol">http</param>
|
||||
<param name="host">game-music-emu.googlecode.com</param>
|
||||
<param name="path">/files/game-music-emu-0.5.5.tbz2</param>
|
||||
</service>
|
||||
<service name="verify_file">
|
||||
<param name="file">_service:download_url:game-music-emu-0.5.5.tbz2</param>
|
||||
<param name="verifier">sha256</param>
|
||||
<param name="checksum">ecb3586aac9feff2b3141167835f73da0c997efbdd32e559f99477ad01e19089</param>
|
||||
</service>
|
||||
<service name="set_version"/>
|
||||
</services>
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ecb3586aac9feff2b3141167835f73da0c997efbdd32e559f99477ad01e19089
|
||||
size 161954
|
@@ -1,118 +0,0 @@
|
||||
#
|
||||
# spec file for package libgme
|
||||
#
|
||||
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%define soname 0
|
||||
|
||||
Name: libgme
|
||||
Version: 0.5.5
|
||||
Release: 0
|
||||
License: LGPL-2.1+
|
||||
Summary: Collection of video game music file emulators
|
||||
Url: http://code.google.com/p/game-music-emu/
|
||||
Group: System/Libraries
|
||||
Source0: game-music-emu-%{version}.tbz2
|
||||
# PATCH-FIX-UPSTREAM %%{name}-0.5.5-LIB_SUFFIX.patch http://code.google.com/p/game-music-emu/issues/detail?id=8 reddwarf@opensuse.org -- Add LIB_SUFFIX support
|
||||
Patch0: %{name}-0.5.5-LIB_SUFFIX.patch
|
||||
# PATCH-FIX-UPSTREAM %%{name}-0.5.5-pkg_config.patch reddwarf@opensuse.org -- Add pkg-config file. From upstream SVN.
|
||||
Patch1: %{name}-0.5.5-pkg_config.patch
|
||||
# PATCH-FIX-UPSTREAM %%{name}-0.5.5-symbol_visibility.patch reddwarf@opensuse.org -- Don't export internal symbols. From upstream SVN.
|
||||
Patch2: %{name}-0.5.5-symbol_visibility.patch
|
||||
BuildRequires: cmake
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: pkg-config
|
||||
|
||||
%description
|
||||
Game_Music_Emu is a collection of video game music file emulators that support
|
||||
the following formats and systems:
|
||||
- AY: ZX Spectrum/Amstrad CPC
|
||||
- GBS: Nintendo Game Boy
|
||||
- GYM: Sega Genesis/Mega Drive
|
||||
- HES: NEC TurboGrafx-16/PC Engine
|
||||
- KSS: MSX Home Computer/other Z80 systems (doesn't support FM sound)
|
||||
- NSF/NSFE: Nintendo NES/Famicom (with VRC 6, Namco 106, and FME-7 sound)
|
||||
- SAP: Atari systems using POKEY sound chip
|
||||
- SPC: Super Nintendo/Super Famicom
|
||||
- VGM/VGZ: Sega Master System/Mark III, Sega Genesis/Mega Drive,BBC Micro
|
||||
|
||||
%package -n %{name}%{soname}
|
||||
|
||||
Summary: Collection of video game music file emulators
|
||||
Group: System/Libraries
|
||||
|
||||
%description -n %{name}%{soname}
|
||||
Game_Music_Emu is a collection of video game music file emulators that support
|
||||
the following formats and systems:
|
||||
- AY: ZX Spectrum/Amstrad CPC
|
||||
- GBS: Nintendo Game Boy
|
||||
- GYM: Sega Genesis/Mega Drive
|
||||
- HES: NEC TurboGrafx-16/PC Engine
|
||||
- KSS: MSX Home Computer/other Z80 systems (doesn't support FM sound)
|
||||
- NSF/NSFE: Nintendo NES/Famicom (with VRC 6, Namco 106, and FME-7 sound)
|
||||
- SAP: Atari systems using POKEY sound chip
|
||||
- SPC: Super Nintendo/Super Famicom
|
||||
- VGM/VGZ: Sega Master System/Mark III, Sega Genesis/Mega Drive,BBC Micro
|
||||
|
||||
%package devel
|
||||
License: LGPL-2.1+
|
||||
Summary: Development libraries and headers for %{name}
|
||||
Group: Development/Libraries/C and C++
|
||||
Requires: %{name}%{soname} = %{version}
|
||||
|
||||
%description devel
|
||||
The developmental files that must be installed in order to compile applications
|
||||
which use %{name}.
|
||||
|
||||
%prep
|
||||
%setup -q -n game-music-emu-%{version}
|
||||
%patch0
|
||||
%patch1
|
||||
%patch2
|
||||
sed -i 's/\r$//' changes.txt design.txt gme.txt license.txt readme.txt
|
||||
|
||||
%build
|
||||
export CFLAGS='%{optflags}'
|
||||
export CXXFLAGS='%{optflags}'
|
||||
%{__mkdir} build
|
||||
cd build
|
||||
cmake -DCMAKE_SKIP_RPATH=1 \
|
||||
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
|
||||
-DLIB_SUFFIX=$(echo %{_lib} | cut -b4-) \
|
||||
-DCMAKE_BUILD_TYPE=Release ..
|
||||
%{__make} %{?_smp_mflags} VERBOSE=1
|
||||
|
||||
%install
|
||||
cd build
|
||||
%make_install
|
||||
|
||||
%post -n %{name}%{soname} -p /sbin/ldconfig
|
||||
|
||||
%postun -n %{name}%{soname} -p /sbin/ldconfig
|
||||
|
||||
%files -n %{name}%{soname}
|
||||
%defattr(0644, root, root, 0755)
|
||||
%doc changes.txt gme.txt license.txt readme.txt
|
||||
%{_libdir}/%{name}.so.%{soname}*
|
||||
|
||||
%files devel
|
||||
%defattr(0644, root, root, 0755)
|
||||
%doc design.txt
|
||||
%{_includedir}/gme
|
||||
%{_libdir}/%{name}.so
|
||||
%{_libdir}/pkgconfig/%{name}.pc
|
||||
|
||||
%changelog
|
3
game-music-emu-0.6.0.tar.bz2
Normal file
3
game-music-emu-0.6.0.tar.bz2
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:506e81d0c61e1a26d503fbf5351503e0b31f9fbb374cb1f09979758b46a24987
|
||||
size 170202
|
@@ -1,12 +0,0 @@
|
||||
Index: gme/CMakeLists.txt
|
||||
===================================================================
|
||||
--- gme/CMakeLists.txt.orig
|
||||
+++ gme/CMakeLists.txt
|
||||
@@ -158,6 +158,6 @@ set_target_properties(gme
|
||||
SOVERSION 0)
|
||||
|
||||
# TODO: Libsuffix for 64-bit?
|
||||
-install(TARGETS gme LIBRARY DESTINATION lib)
|
||||
+install(TARGETS gme LIBRARY DESTINATION lib${LIB_SUFFIX})
|
||||
|
||||
install(FILES ${EXPORTED_HEADERS} DESTINATION include/gme)
|
@@ -1,60 +0,0 @@
|
||||
Index: gme/libgme.pc.in
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ gme/libgme.pc.in
|
||||
@@ -0,0 +1,15 @@
|
||||
+# entries grouped with CMake are expanded by CMake
|
||||
+# ${foo} entries are left alone by CMake and much
|
||||
+# later are used by pkg-config.
|
||||
+prefix=@CMAKE_INSTALL_PREFIX@
|
||||
+exec_prefix=${prefix}
|
||||
+lib_suffix=@LIB_SUFFIX@
|
||||
+libdir=${exec_prefix}/lib${lib_suffix}
|
||||
+includedir=${prefix}/include
|
||||
+
|
||||
+Name: Game_Music_Emu
|
||||
+Description: A video game emulation library for music.
|
||||
+URL: http://code.google.com/p/game-music-emu/
|
||||
+Version: @GME_VERSION@
|
||||
+Cflags: -I${includedir}
|
||||
+Libs: -L${libdir} -lgme
|
||||
Index: gme/CMakeLists.txt
|
||||
===================================================================
|
||||
--- gme/CMakeLists.txt.orig
|
||||
+++ gme/CMakeLists.txt
|
||||
@@ -144,6 +144,9 @@ set (EXPORTED_HEADERS gme.h
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/gme_types.h.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/gme_types.h)
|
||||
|
||||
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libgme.pc.in
|
||||
+ ${CMAKE_CURRENT_BINARY_DIR}/libgme.pc @ONLY)
|
||||
+
|
||||
# For the gme_types.h
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
@@ -154,10 +157,11 @@ add_library(gme SHARED ${libgme_SRCS})
|
||||
# as only build fixes are performed (i.e. no changes/additions to API) the
|
||||
# SOVERSION should be the same even when bumping up VERSION.
|
||||
set_target_properties(gme
|
||||
- PROPERTIES VERSION 0.5.3
|
||||
+ PROPERTIES VERSION ${GME_VERSION}
|
||||
SOVERSION 0)
|
||||
|
||||
# TODO: Libsuffix for 64-bit?
|
||||
install(TARGETS gme LIBRARY DESTINATION lib${LIB_SUFFIX})
|
||||
|
||||
install(FILES ${EXPORTED_HEADERS} DESTINATION include/gme)
|
||||
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libgme.pc DESTINATION lib${LIB_SUFFIX}/pkgconfig)
|
||||
Index: CMakeLists.txt
|
||||
===================================================================
|
||||
--- CMakeLists.txt.orig
|
||||
+++ CMakeLists.txt
|
||||
@@ -1,6 +1,8 @@
|
||||
# CMake project definition file.
|
||||
project(libgme)
|
||||
|
||||
+set(GME_VERSION 0.5.5 CACHE INTERNAL "libgme Version")
|
||||
+
|
||||
# 2.6+ always assumes FATAL_ERROR, but 2.4 and below don't.
|
||||
# Of course, 2.4 might work, in which case you're welcome to drop
|
||||
# down the requirement, but I can't test that.
|
@@ -1,509 +0,0 @@
|
||||
Index: gme/gme.cpp
|
||||
===================================================================
|
||||
--- gme/gme.cpp.orig
|
||||
+++ gme/gme.cpp
|
||||
@@ -22,7 +22,7 @@ Inc., 51 Franklin Street, Fifth Floor, B
|
||||
|
||||
#include "blargg_source.h"
|
||||
|
||||
-gme_type_t const* gme_type_list()
|
||||
+BLARGG_EXPORT gme_type_t const* gme_type_list()
|
||||
{
|
||||
static gme_type_t const gme_type_list_ [] = {
|
||||
#ifdef USE_GME_AY
|
||||
@@ -61,7 +61,7 @@ gme_type_t const* gme_type_list()
|
||||
return gme_type_list_;
|
||||
}
|
||||
|
||||
-const char* gme_identify_header( void const* header )
|
||||
+BLARGG_EXPORT const char* gme_identify_header( void const* header )
|
||||
{
|
||||
switch ( get_be32( header ) )
|
||||
{
|
||||
@@ -90,7 +90,7 @@ static void to_uppercase( const char* in
|
||||
*out = 0; // extension too long
|
||||
}
|
||||
|
||||
-gme_type_t gme_identify_extension( const char* extension_ )
|
||||
+BLARGG_EXPORT gme_type_t gme_identify_extension( const char* extension_ )
|
||||
{
|
||||
char const* end = strrchr( extension_, '.' );
|
||||
if ( end )
|
||||
@@ -105,7 +105,7 @@ gme_type_t gme_identify_extension( const
|
||||
return 0;
|
||||
}
|
||||
|
||||
-gme_err_t gme_identify_file( const char* path, gme_type_t* type_out )
|
||||
+BLARGG_EXPORT gme_err_t gme_identify_file( const char* path, gme_type_t* type_out )
|
||||
{
|
||||
*type_out = gme_identify_extension( path );
|
||||
// TODO: don't examine header if file has extension?
|
||||
@@ -120,7 +120,7 @@ gme_err_t gme_identify_file( const char*
|
||||
return 0;
|
||||
}
|
||||
|
||||
-gme_err_t gme_open_data( void const* data, long size, Music_Emu** out, int sample_rate )
|
||||
+BLARGG_EXPORT gme_err_t gme_open_data( void const* data, long size, Music_Emu** out, int sample_rate )
|
||||
{
|
||||
require( (data || !size) && out );
|
||||
*out = 0;
|
||||
@@ -144,7 +144,7 @@ gme_err_t gme_open_data( void const* dat
|
||||
return err;
|
||||
}
|
||||
|
||||
-gme_err_t gme_open_file( const char* path, Music_Emu** out, int sample_rate )
|
||||
+BLARGG_EXPORT gme_err_t gme_open_file( const char* path, Music_Emu** out, int sample_rate )
|
||||
{
|
||||
require( path && out );
|
||||
*out = 0;
|
||||
@@ -181,7 +181,7 @@ gme_err_t gme_open_file( const char* pat
|
||||
return err;
|
||||
}
|
||||
|
||||
-Music_Emu* gme_new_emu( gme_type_t type, int rate )
|
||||
+BLARGG_EXPORT Music_Emu* gme_new_emu( gme_type_t type, int rate )
|
||||
{
|
||||
if ( type )
|
||||
{
|
||||
@@ -214,27 +214,27 @@ Music_Emu* gme_new_emu( gme_type_t type,
|
||||
return 0;
|
||||
}
|
||||
|
||||
-gme_err_t gme_load_file( Music_Emu* me, const char* path ) { return me->load_file( path ); }
|
||||
+BLARGG_EXPORT gme_err_t gme_load_file( Music_Emu* me, const char* path ) { return me->load_file( path ); }
|
||||
|
||||
-gme_err_t gme_load_data( Music_Emu* me, void const* data, long size )
|
||||
+BLARGG_EXPORT gme_err_t gme_load_data( Music_Emu* me, void const* data, long size )
|
||||
{
|
||||
Mem_File_Reader in( data, size );
|
||||
return me->load( in );
|
||||
}
|
||||
|
||||
-gme_err_t gme_load_custom( Music_Emu* me, gme_reader_t func, long size, void* data )
|
||||
+BLARGG_EXPORT gme_err_t gme_load_custom( Music_Emu* me, gme_reader_t func, long size, void* data )
|
||||
{
|
||||
Callback_Reader in( func, size, data );
|
||||
return me->load( in );
|
||||
}
|
||||
|
||||
-void gme_delete( Music_Emu* me ) { delete me; }
|
||||
+BLARGG_EXPORT void gme_delete( Music_Emu* me ) { delete me; }
|
||||
|
||||
-gme_type_t gme_type( Music_Emu const* me ) { return me->type(); }
|
||||
+BLARGG_EXPORT gme_type_t gme_type( Music_Emu const* me ) { return me->type(); }
|
||||
|
||||
-const char* gme_warning( Music_Emu* me ) { return me->warning(); }
|
||||
+BLARGG_EXPORT const char* gme_warning( Music_Emu* me ) { return me->warning(); }
|
||||
|
||||
-int gme_track_count( Music_Emu const* me ) { return me->track_count(); }
|
||||
+BLARGG_EXPORT int gme_track_count( Music_Emu const* me ) { return me->track_count(); }
|
||||
|
||||
struct gme_info_t_ : gme_info_t
|
||||
{
|
||||
@@ -243,7 +243,7 @@ struct gme_info_t_ : gme_info_t
|
||||
BLARGG_DISABLE_NOTHROW
|
||||
};
|
||||
|
||||
-gme_err_t gme_track_info( Music_Emu const* me, gme_info_t** out, int track )
|
||||
+BLARGG_EXPORT gme_err_t gme_track_info( Music_Emu const* me, gme_info_t** out, int track )
|
||||
{
|
||||
*out = NULL;
|
||||
|
||||
@@ -309,12 +309,12 @@ gme_err_t gme_track_info( Music_Emu cons
|
||||
return 0;
|
||||
}
|
||||
|
||||
-void gme_free_info( gme_info_t* info )
|
||||
+BLARGG_EXPORT void gme_free_info( gme_info_t* info )
|
||||
{
|
||||
delete STATIC_CAST(gme_info_t_*,info);
|
||||
}
|
||||
|
||||
-void gme_set_stereo_depth( Music_Emu* me, double depth )
|
||||
+BLARGG_EXPORT void gme_set_stereo_depth( Music_Emu* me, double depth )
|
||||
{
|
||||
#if !GME_DISABLE_STEREO_DEPTH
|
||||
if ( me->effects_buffer )
|
||||
@@ -322,23 +322,25 @@ void gme_set_stereo_depth( Music_Emu* me
|
||||
#endif
|
||||
}
|
||||
|
||||
-void* gme_user_data ( Music_Emu const* me ) { return me->user_data(); }
|
||||
-void gme_set_user_data ( Music_Emu* me, void* new_user_data ) { me->set_user_data( new_user_data ); }
|
||||
-void gme_set_user_cleanup(Music_Emu* me, gme_user_cleanup_t func ) { me->set_user_cleanup( func ); }
|
||||
-
|
||||
-gme_err_t gme_start_track ( Music_Emu* me, int index ) { return me->start_track( index ); }
|
||||
-gme_err_t gme_play ( Music_Emu* me, int n, short* p ) { return me->play( n, p ); }
|
||||
-void gme_set_fade ( Music_Emu* me, int start_msec ) { me->set_fade( start_msec ); }
|
||||
-int gme_track_ended ( Music_Emu const* me ) { return me->track_ended(); }
|
||||
-int gme_tell ( Music_Emu const* me ) { return me->tell(); }
|
||||
-gme_err_t gme_seek ( Music_Emu* me, int msec ) { return me->seek( msec ); }
|
||||
-int gme_voice_count ( Music_Emu const* me ) { return me->voice_count(); }
|
||||
-void gme_ignore_silence ( Music_Emu* me, int disable ) { me->ignore_silence( disable != 0 ); }
|
||||
-void gme_set_tempo ( Music_Emu* me, double t ) { me->set_tempo( t ); }
|
||||
-void gme_mute_voice ( Music_Emu* me, int index, int mute ) { me->mute_voice( index, mute != 0 ); }
|
||||
-void gme_mute_voices ( Music_Emu* me, int mask ) { me->mute_voices( mask ); }
|
||||
+BLARGG_EXPORT void* gme_user_data ( Music_Emu const* me ) { return me->user_data(); }
|
||||
+BLARGG_EXPORT void gme_set_user_data ( Music_Emu* me, void* new_user_data ) { me->set_user_data( new_user_data ); }
|
||||
+BLARGG_EXPORT void gme_set_user_cleanup(Music_Emu* me, gme_user_cleanup_t func ) { me->set_user_cleanup( func ); }
|
||||
+
|
||||
+BLARGG_EXPORT gme_err_t gme_start_track ( Music_Emu* me, int index ) { return me->start_track( index ); }
|
||||
+BLARGG_EXPORT gme_err_t gme_play ( Music_Emu* me, int n, short* p ) { return me->play( n, p ); }
|
||||
+BLARGG_EXPORT void gme_set_fade ( Music_Emu* me, int start_msec ) { me->set_fade( start_msec ); }
|
||||
+BLARGG_EXPORT int gme_track_ended ( Music_Emu const* me ) { return me->track_ended(); }
|
||||
+BLARGG_EXPORT int gme_tell ( Music_Emu const* me ) { return me->tell(); }
|
||||
+BLARGG_EXPORT gme_err_t gme_seek ( Music_Emu* me, int msec ) { return me->seek( msec ); }
|
||||
+BLARGG_EXPORT int gme_voice_count ( Music_Emu const* me ) { return me->voice_count(); }
|
||||
+BLARGG_EXPORT void gme_ignore_silence ( Music_Emu* me, int disable ) { me->ignore_silence( disable != 0 ); }
|
||||
+BLARGG_EXPORT void gme_set_tempo ( Music_Emu* me, double t ) { me->set_tempo( t ); }
|
||||
+BLARGG_EXPORT void gme_mute_voice ( Music_Emu* me, int index, int mute ) { me->mute_voice( index, mute != 0 ); }
|
||||
+BLARGG_EXPORT void gme_mute_voices ( Music_Emu* me, int mask ) { me->mute_voices( mask ); }
|
||||
+BLARGG_EXPORT void gme_clear_playlist ( Music_Emu* me ) { me->clear_playlist(); }
|
||||
+BLARGG_EXPORT int gme_type_multitrack( gme_type_t t ) { return t->track_count != 1; }
|
||||
|
||||
-void gme_set_equalizer ( Music_Emu* me, gme_equalizer_t const* eq )
|
||||
+BLARGG_EXPORT void gme_set_equalizer ( Music_Emu* me, gme_equalizer_t const* eq )
|
||||
{
|
||||
Music_Emu::equalizer_t e = me->equalizer();
|
||||
e.treble = eq->treble;
|
||||
@@ -346,7 +348,7 @@ void gme_set_equalizer ( Music_Emu
|
||||
me->set_equalizer( e );
|
||||
}
|
||||
|
||||
-void gme_equalizer( Music_Emu const* me, gme_equalizer_t* out )
|
||||
+BLARGG_EXPORT void gme_equalizer( Music_Emu const* me, gme_equalizer_t* out )
|
||||
{
|
||||
gme_equalizer_t e = { };
|
||||
e.treble = me->equalizer().treble;
|
||||
@@ -354,13 +356,13 @@ void gme_equalizer( Music_Emu const* me,
|
||||
*out = e;
|
||||
}
|
||||
|
||||
-const char* gme_voice_name( Music_Emu const* me, int i )
|
||||
+BLARGG_EXPORT const char* gme_voice_name( Music_Emu const* me, int i )
|
||||
{
|
||||
assert( (unsigned) i < (unsigned) me->voice_count() );
|
||||
return me->voice_names() [i];
|
||||
}
|
||||
|
||||
-const char* gme_type_system( gme_type_t type )
|
||||
+BLARGG_EXPORT const char* gme_type_system( gme_type_t type )
|
||||
{
|
||||
assert( type );
|
||||
return type->system;
|
||||
Index: gme/M3u_Playlist.cpp
|
||||
===================================================================
|
||||
--- gme/M3u_Playlist.cpp.orig
|
||||
+++ gme/M3u_Playlist.cpp
|
||||
@@ -52,9 +52,9 @@ blargg_err_t Gme_File::load_m3u( const c
|
||||
|
||||
blargg_err_t Gme_File::load_m3u( Data_Reader& in ) { return load_m3u_( playlist.load( in ) ); }
|
||||
|
||||
-gme_err_t gme_load_m3u( Music_Emu* me, const char* path ) { return me->load_m3u( path ); }
|
||||
+BLARGG_EXPORT gme_err_t gme_load_m3u( Music_Emu* me, const char* path ) { return me->load_m3u( path ); }
|
||||
|
||||
-gme_err_t gme_load_m3u_data( Music_Emu* me, const void* data, long size )
|
||||
+BLARGG_EXPORT gme_err_t gme_load_m3u_data( Music_Emu* me, const void* data, long size )
|
||||
{
|
||||
Mem_File_Reader in( data, size );
|
||||
return me->load_m3u( in );
|
||||
Index: gme/blargg_source.h
|
||||
===================================================================
|
||||
--- gme/blargg_source.h.orig
|
||||
+++ gme/blargg_source.h
|
||||
@@ -66,6 +66,17 @@ inline T max( T x, T y )
|
||||
#define byte byte_
|
||||
typedef unsigned char byte;
|
||||
|
||||
+// Setup compiler defines useful for exporting required public API symbols in gme.cpp
|
||||
+#ifndef BLARGG_EXPORT
|
||||
+ #if defined (_WIN32) && defined(BLARGG_BUILD_DLL)
|
||||
+ #define BLARGG_EXPORT __declspec(dllexport)
|
||||
+ #elif defined (LIBGME_VISIBILITY)
|
||||
+ #define BLARGG_EXPORT __attribute__((visibility ("default")))
|
||||
+ #else
|
||||
+ #define BLARGG_EXPORT
|
||||
+ #endif
|
||||
+#endif
|
||||
+
|
||||
// deprecated
|
||||
#define BLARGG_CHECK_ALLOC CHECK_ALLOC
|
||||
#define BLARGG_RETURN_ERR RETURN_ERR
|
||||
Index: player/Music_Player.h
|
||||
===================================================================
|
||||
--- player/Music_Player.h.orig
|
||||
+++ player/Music_Player.h
|
||||
@@ -4,18 +4,18 @@
|
||||
#ifndef MUSIC_PLAYER_H
|
||||
#define MUSIC_PLAYER_H
|
||||
|
||||
-#include "gme/Music_Emu.h"
|
||||
+#include "gme.h"
|
||||
|
||||
class Music_Player {
|
||||
public:
|
||||
// Initialize player and set sample rate
|
||||
- blargg_err_t init( long sample_rate = 44100 );
|
||||
+ gme_err_t init( long sample_rate = 44100 );
|
||||
|
||||
// Load game music file. NULL on success, otherwise error string.
|
||||
- blargg_err_t load_file( const char* path );
|
||||
+ gme_err_t load_file( const char* path );
|
||||
|
||||
// (Re)start playing track. Tracks are numbered from 0 to track_count() - 1.
|
||||
- blargg_err_t start_track( int track );
|
||||
+ gme_err_t start_track( int track );
|
||||
|
||||
// Stop playing current file
|
||||
void stop();
|
||||
@@ -26,7 +26,7 @@ public:
|
||||
int track_count() const;
|
||||
|
||||
// Info for current track
|
||||
- track_info_t const& track_info() const { return track_info_; }
|
||||
+ gme_info_t const& track_info() const { return *track_info_; }
|
||||
|
||||
// Pause/resume playing current track.
|
||||
void pause( int );
|
||||
@@ -59,7 +59,7 @@ private:
|
||||
long sample_rate;
|
||||
int scope_buf_size;
|
||||
bool paused;
|
||||
- track_info_t track_info_;
|
||||
+ gme_info_t* track_info_;
|
||||
|
||||
void suspend();
|
||||
void resume();
|
||||
Index: player/Music_Player.cpp
|
||||
===================================================================
|
||||
--- player/Music_Player.cpp.orig
|
||||
+++ player/Music_Player.cpp
|
||||
@@ -2,12 +2,10 @@
|
||||
|
||||
#include "Music_Player.h"
|
||||
|
||||
-#include "gme/Music_Emu.h"
|
||||
-
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
-/* Copyright (C) 2005-2006 by Shay Green. Permission is hereby granted, free of
|
||||
+/* Copyright (C) 2005-2010 by Shay Green. Permission is hereby granted, free of
|
||||
charge, to any person obtaining a copy of this software module and associated
|
||||
documentation files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use, copy, modify,
|
||||
@@ -22,7 +20,12 @@ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAI
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
|
||||
-#include "blargg_source.h"
|
||||
+#define RETURN_ERR( expr ) \
|
||||
+ do {\
|
||||
+ gme_err_t err_ = (expr);\
|
||||
+ if ( err_ )\
|
||||
+ return err_;\
|
||||
+ } while ( 0 )
|
||||
|
||||
// Number of audio buffers per second. Adjust if you encounter audio skipping.
|
||||
const int fill_rate = 45;
|
||||
@@ -36,12 +39,13 @@ static void sound_cleanup();
|
||||
|
||||
Music_Player::Music_Player()
|
||||
{
|
||||
- emu_ = 0;
|
||||
- scope_buf = 0;
|
||||
- paused = false;
|
||||
+ emu_ = 0;
|
||||
+ scope_buf = 0;
|
||||
+ paused = false;
|
||||
+ track_info_ = NULL;
|
||||
}
|
||||
|
||||
-blargg_err_t Music_Player::init( long rate )
|
||||
+gme_err_t Music_Player::init( long rate )
|
||||
{
|
||||
sample_rate = rate;
|
||||
|
||||
@@ -56,17 +60,18 @@ blargg_err_t Music_Player::init( long ra
|
||||
void Music_Player::stop()
|
||||
{
|
||||
sound_stop();
|
||||
- delete emu_;
|
||||
- emu_ = 0;
|
||||
+ gme_delete( emu_ );
|
||||
+ emu_ = NULL;
|
||||
}
|
||||
|
||||
Music_Player::~Music_Player()
|
||||
{
|
||||
stop();
|
||||
sound_cleanup();
|
||||
+ gme_free_info( track_info_ );
|
||||
}
|
||||
|
||||
-blargg_err_t Music_Player::load_file( const char* path )
|
||||
+gme_err_t Music_Player::load_file( const char* path )
|
||||
{
|
||||
stop();
|
||||
|
||||
@@ -79,34 +84,36 @@ blargg_err_t Music_Player::load_file( co
|
||||
if ( !p )
|
||||
p = m3u_path + strlen( m3u_path );
|
||||
strcpy( p, ".m3u" );
|
||||
- if ( emu_->load_m3u( m3u_path ) ) { } // ignore error
|
||||
+ if ( gme_load_m3u( emu_, m3u_path ) ) { } // ignore error
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Music_Player::track_count() const
|
||||
{
|
||||
- return emu_ ? emu_->track_count() : false;
|
||||
+ return emu_ ? gme_track_count( emu_ ) : false;
|
||||
}
|
||||
|
||||
-blargg_err_t Music_Player::start_track( int track )
|
||||
+gme_err_t Music_Player::start_track( int track )
|
||||
{
|
||||
if ( emu_ )
|
||||
{
|
||||
+ gme_free_info( track_info_ );
|
||||
+ track_info_ = NULL;
|
||||
+ RETURN_ERR( gme_track_info( emu_, &track_info_, track ) );
|
||||
+
|
||||
// Sound must not be running when operating on emulator
|
||||
sound_stop();
|
||||
- RETURN_ERR( emu_->start_track( track ) );
|
||||
+ RETURN_ERR( gme_start_track( emu_, track ) );
|
||||
|
||||
// Calculate track length
|
||||
- if ( !emu_->track_info( &track_info_ ) )
|
||||
- {
|
||||
- if ( track_info_.length <= 0 )
|
||||
- track_info_.length = track_info_.intro_length +
|
||||
- track_info_.loop_length * 2;
|
||||
- }
|
||||
- if ( track_info_.length <= 0 )
|
||||
- track_info_.length = (long) (2.5 * 60 * 1000);
|
||||
- emu_->set_fade( track_info_.length );
|
||||
+ if ( track_info_->length <= 0 )
|
||||
+ track_info_->length = track_info_->intro_length +
|
||||
+ track_info_->loop_length * 2;
|
||||
+
|
||||
+ if ( track_info_->length <= 0 )
|
||||
+ track_info_->length = (long) (2.5 * 60 * 1000);
|
||||
+ gme_set_fade( emu_, track_info_->length );
|
||||
|
||||
paused = false;
|
||||
sound_start();
|
||||
@@ -137,7 +144,7 @@ void Music_Player::resume()
|
||||
|
||||
bool Music_Player::track_ended() const
|
||||
{
|
||||
- return emu_ ? emu_->track_ended() : false;
|
||||
+ return emu_ ? gme_track_ended( emu_ ) : false;
|
||||
}
|
||||
|
||||
void Music_Player::set_stereo_depth( double tempo )
|
||||
@@ -150,15 +157,15 @@ void Music_Player::set_stereo_depth( dou
|
||||
void Music_Player::set_tempo( double tempo )
|
||||
{
|
||||
suspend();
|
||||
- emu_->set_tempo( tempo );
|
||||
+ gme_set_tempo( emu_, tempo );
|
||||
resume();
|
||||
}
|
||||
|
||||
void Music_Player::mute_voices( int mask )
|
||||
{
|
||||
suspend();
|
||||
- emu_->mute_voices( mask );
|
||||
- emu_->ignore_silence( mask != 0 );
|
||||
+ gme_mute_voices( emu_, mask );
|
||||
+ gme_ignore_silence( emu_, mask != 0 );
|
||||
resume();
|
||||
}
|
||||
|
||||
@@ -167,7 +174,7 @@ void Music_Player::fill_buffer( void* da
|
||||
Music_Player* self = (Music_Player*) data;
|
||||
if ( self->emu_ )
|
||||
{
|
||||
- if ( self->emu_->play( count, out ) ) { } // ignore error
|
||||
+ if ( gme_play( self->emu_, count, out ) ) { } // ignore error
|
||||
|
||||
if ( self->scope_buf )
|
||||
memcpy( self->scope_buf, out, self->scope_buf_size * sizeof *self->scope_buf );
|
||||
Index: CMakeLists.txt
|
||||
===================================================================
|
||||
--- CMakeLists.txt.orig
|
||||
+++ CMakeLists.txt
|
||||
@@ -1,6 +1,8 @@
|
||||
# CMake project definition file.
|
||||
project(libgme)
|
||||
|
||||
+include (CheckCXXCompilerFlag)
|
||||
+
|
||||
set(GME_VERSION 0.5.5 CACHE INTERNAL "libgme Version")
|
||||
|
||||
# 2.6+ always assumes FATAL_ERROR, but 2.4 and below don't.
|
||||
@@ -54,6 +56,33 @@ if (USE_GME_NSFE AND NOT USE_GME_NSF)
|
||||
SET(USE_GME_NSF 1 CACHE BOOL "Enable NES NSF music emulation" FORCE)
|
||||
endif()
|
||||
|
||||
+# Check for GCC "visibility" support.
|
||||
+if (CMAKE_COMPILER_IS_GNUCXX)
|
||||
+ check_cxx_compiler_flag (-fvisibility=hidden __LIBGME_TEST_VISIBILITY)
|
||||
+ set (ENABLE_VISIBILITY OFF)
|
||||
+ if (__LIBGME_TEST_VISIBILITY)
|
||||
+ # get the gcc version
|
||||
+ exec_program(${CMAKE_CXX_COMPILER} ARGS --version OUTPUT_VARIABLE _gcc_version_info)
|
||||
+ string (REGEX MATCH "[3-9]\\.[0-9]\\.[0-9]" _gcc_version "${_gcc_version_info}")
|
||||
+
|
||||
+ # gcc <4.1 had poor support for symbol visibility
|
||||
+ if ((${_gcc_version} VERSION_GREATER "4.1") OR (${_gcc_version} VERSION_EQUAL "4.1"))
|
||||
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
|
||||
+ set (ENABLE_VISIBILITY ON)
|
||||
+ add_definitions (-DLIBGME_VISIBILITY)
|
||||
+
|
||||
+ # GCC >= 4.2 also correctly supports making inline members have hidden
|
||||
+ # visibility by default.
|
||||
+ if ((${_gcc_version} VERSION_GREATER "4.2") OR (${_gcc_version} VERSION_EQUAL "4.2"))
|
||||
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility-inlines-hidden")
|
||||
+ endif()
|
||||
+ endif()
|
||||
+ endif() # test visibility
|
||||
+endif (CMAKE_COMPILER_IS_GNUCXX)
|
||||
+
|
||||
+# Cache this result
|
||||
+set( LIBGME_HAVE_GCC_VISIBILITY ${ENABLE_VISIBILITY} CACHE BOOL "GCC support for hidden visibility")
|
||||
+
|
||||
# Shared library defined here
|
||||
add_subdirectory(gme)
|
||||
|
||||
Index: gme/CMakeLists.txt
|
||||
===================================================================
|
||||
--- gme/CMakeLists.txt.orig
|
||||
+++ gme/CMakeLists.txt
|
||||
@@ -124,21 +124,7 @@ if (USE_GME_VGM)
|
||||
endif()
|
||||
|
||||
# These headers are part of the generic gme interface.
|
||||
-set (EXPORTED_HEADERS gme.h
|
||||
- "${CMAKE_CURRENT_BINARY_DIR}/gme_types.h"
|
||||
- blargg_config.h
|
||||
- blargg_common.h
|
||||
- blargg_source.h
|
||||
- Music_Emu.h
|
||||
- Blip_Buffer.h
|
||||
- Classic_Emu.h
|
||||
- Gme_File.h
|
||||
- Data_Reader.h
|
||||
- Dual_Resampler.h
|
||||
- Effects_Buffer.h
|
||||
- Fir_Resampler.h
|
||||
- M3u_Playlist.h
|
||||
- Multi_Buffer.h)
|
||||
+set (EXPORTED_HEADERS gme.h)
|
||||
|
||||
# Run during cmake phase, so this is available during make
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/gme_types.h.in
|
10
libgme-0.6.0-pkgconfig_path.patch
Normal file
10
libgme-0.6.0-pkgconfig_path.patch
Normal file
@@ -0,0 +1,10 @@
|
||||
Index: gme/CMakeLists.txt
|
||||
===================================================================
|
||||
--- gme/CMakeLists.txt.orig
|
||||
+++ gme/CMakeLists.txt
|
||||
@@ -159,4 +159,4 @@ install(TARGETS gme LIBRARY DESTINATION
|
||||
ARCHIVE DESTINATION lib) # DLL platforms
|
||||
|
||||
install(FILES ${EXPORTED_HEADERS} DESTINATION include/gme)
|
||||
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libgme.pc DESTINATION lib/pkgconfig)
|
||||
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libgme.pc DESTINATION lib${LIB_SUFFIX}/pkgconfig)
|
@@ -1,3 +1,37 @@
|
||||
-------------------------------------------------------------------
|
||||
Sun Mar 17 09:26:23 UTC 2013 - reddwarf@opensuse.org
|
||||
|
||||
- Update to 0.6.0
|
||||
* SPC improvements:
|
||||
- Switched to newer snes_spc 0.9.0 for SPC emulation. Uses fast DSP.
|
||||
- Fixed Spc_Emu::gain().
|
||||
- Fixed support for files <0x10200 bytes.
|
||||
* Other bugfixes:
|
||||
- Fixed a couple of GBS bugs, one involving access of memory after
|
||||
realloc.
|
||||
- Blip_Buffer works on systems where 'double' is a single-precision
|
||||
floating-point type.
|
||||
- Fix uninitialized buffer size in dual_resampler.
|
||||
- Compilation warnings squashed out as of clang 3.3-pre and gcc 4.7.2.
|
||||
* API changes/additions:
|
||||
- Removed documentation of C++ interface, as the C interface in gme.h is
|
||||
the only supported one.
|
||||
- Added gme_enable_accuracy() for enabling more accurate sound emulation
|
||||
options (currently affects SPC only).
|
||||
* Build system improvements:
|
||||
- Add pkg_config support.
|
||||
- Fix build on case-insensitive systems.
|
||||
- Allow for install on Cygwin.
|
||||
- Fix install on multilib systems, such as many 64-bit distros (CMake must
|
||||
be able to figure out your system's libsuffix, if any).
|
||||
- C++ implementation symbols are not leaked into the resultant library
|
||||
file (requires symbol visibility support).
|
||||
* Sample player improvements:
|
||||
- Can toggle fast/accurate emulation (with the 'A' key).
|
||||
- Remove all the previous patches (libgme-0.5.5-LIB_SUFFIX.patch,
|
||||
libgme-0.5.5-pkg_config.patch and libgme-0.5.5-symbol_visibility.patch)
|
||||
- Add libgme-0.6.0-pkgconfig_path.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 3 20:22:22 UTC 2011 - reddwarf@opensuse.org
|
||||
|
||||
|
50
libgme.spec
50
libgme.spec
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package libgme
|
||||
#
|
||||
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@@ -19,19 +19,16 @@
|
||||
%define soname 0
|
||||
|
||||
Name: libgme
|
||||
Version: to_be_filled_by_service
|
||||
Release: 2
|
||||
License: LGPL-2.1+
|
||||
Version: 0.6.0
|
||||
Release: 0
|
||||
Summary: Collection of video game music file emulators
|
||||
Url: http://code.google.com/p/game-music-emu/
|
||||
License: LGPL-2.1+
|
||||
Group: System/Libraries
|
||||
Source0: game-music-emu-%{version}.tbz2
|
||||
# PATCH-FIX-UPSTREAM %%{name}-0.5.5-LIB_SUFFIX.patch http://code.google.com/p/game-music-emu/issues/detail?id=8 reddwarf@opensuse.org -- Add LIB_SUFFIX support
|
||||
Patch0: %{name}-0.5.5-LIB_SUFFIX.patch
|
||||
# PATCH-FIX-UPSTREAM %%{name}-0.5.5-pkg_config.patch reddwarf@opensuse.org -- Add pkg-config file. From upstream SVN.
|
||||
Patch1: %{name}-0.5.5-pkg_config.patch
|
||||
# PATCH-FIX-UPSTREAM %%{name}-0.5.5-symbol_visibility.patch reddwarf@opensuse.org -- Don't export internal symbols. From upstream SVN.
|
||||
Patch2: %{name}-0.5.5-symbol_visibility.patch
|
||||
Url: http://code.google.com/p/game-music-emu/
|
||||
Source0: http://game-music-emu.googlecode.com/files/game-music-emu-%{version}.tar.bz2
|
||||
# PATCH-FIX-UPSTREAM libgme-0.6.0-pkgconfig_path.patch http://code.google.com/p/game-music-emu/issues/detail?id=19 reddwarf@opensuse.org -- Fix .pc installation path
|
||||
Patch0: libgme-0.6.0-pkgconfig_path.patch
|
||||
# See http://code.google.com/p/game-music-emu/issues/detail?id=19 for the overflow/underflow warnings
|
||||
BuildRequires: cmake
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: pkg-config
|
||||
@@ -49,12 +46,12 @@ the following formats and systems:
|
||||
- SPC: Super Nintendo/Super Famicom
|
||||
- VGM/VGZ: Sega Master System/Mark III, Sega Genesis/Mega Drive,BBC Micro
|
||||
|
||||
%package -n %{name}%{soname}
|
||||
%package -n libgme%{soname}
|
||||
|
||||
Summary: Collection of video game music file emulators
|
||||
Group: System/Libraries
|
||||
|
||||
%description -n %{name}%{soname}
|
||||
%description -n libgme%{soname}
|
||||
Game_Music_Emu is a collection of video game music file emulators that support
|
||||
the following formats and systems:
|
||||
- AY: ZX Spectrum/Amstrad CPC
|
||||
@@ -68,51 +65,48 @@ the following formats and systems:
|
||||
- VGM/VGZ: Sega Master System/Mark III, Sega Genesis/Mega Drive,BBC Micro
|
||||
|
||||
%package devel
|
||||
License: LGPL-2.1+
|
||||
Summary: Development libraries and headers for %{name}
|
||||
Summary: Development libraries and headers for libgme
|
||||
Group: Development/Libraries/C and C++
|
||||
Requires: %{name}%{soname} = %{version}
|
||||
Requires: libgme%{soname} = %{version}
|
||||
|
||||
%description devel
|
||||
The developmental files that must be installed in order to compile applications
|
||||
which use %{name}.
|
||||
which use libgme.
|
||||
|
||||
%prep
|
||||
%setup -q -n game-music-emu-%{version}
|
||||
%patch0
|
||||
%patch1
|
||||
%patch2
|
||||
sed -i 's/\r$//' changes.txt design.txt gme.txt license.txt readme.txt
|
||||
|
||||
%build
|
||||
export CFLAGS='%{optflags}'
|
||||
export CXXFLAGS='%{optflags}'
|
||||
%{__mkdir} build
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DCMAKE_SKIP_RPATH=1 \
|
||||
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
|
||||
-DLIB_SUFFIX=$(echo %{_lib} | cut -b4-) \
|
||||
-DCMAKE_BUILD_TYPE=Release ..
|
||||
%{__make} %{?_smp_mflags} VERBOSE=1
|
||||
make %{?_smp_mflags} VERBOSE=1
|
||||
|
||||
%install
|
||||
cd build
|
||||
%make_install
|
||||
|
||||
%post -n %{name}%{soname} -p /sbin/ldconfig
|
||||
%post -n libgme%{soname} -p /sbin/ldconfig
|
||||
|
||||
%postun -n %{name}%{soname} -p /sbin/ldconfig
|
||||
%postun -n libgme%{soname} -p /sbin/ldconfig
|
||||
|
||||
%files -n %{name}%{soname}
|
||||
%files -n libgme%{soname}
|
||||
%defattr(0644, root, root, 0755)
|
||||
%doc changes.txt gme.txt license.txt readme.txt
|
||||
%{_libdir}/%{name}.so.%{soname}*
|
||||
%{_libdir}/libgme.so.%{soname}*
|
||||
|
||||
%files devel
|
||||
%defattr(0644, root, root, 0755)
|
||||
%doc design.txt
|
||||
%{_includedir}/gme
|
||||
%{_libdir}/%{name}.so
|
||||
%{_libdir}/pkgconfig/%{name}.pc
|
||||
%{_libdir}/libgme.so
|
||||
%{_libdir}/pkgconfig/libgme.pc
|
||||
|
||||
%changelog
|
||||
|
Reference in New Issue
Block a user