From 429b6d0248bad525378396af820ec37245d2cb0d Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Fri, 21 Mar 2025 10:55:24 +0300
Subject: [PATCH] upgrade vendored libgme to latest 0.6.4 release
Reference issue: https://github.com/libsdl-org/SDL_mixer/issues/680
(cherry picked from commit db01f938bc08db2c6cb51dc1f5188ae0464ae64e)
---
.gitmodules | 2 +-
CMakeLists.txt | 18 +++++---
VisualC/external/include/gme/gme.h | 50 +++++++++++++++++------
VisualC/external/optional/x64/libgme.dll | Bin 409088 -> 445440 bytes
VisualC/external/optional/x86/libgme.dll | Bin 383488 -> 418304 bytes
Xcode/gme/gme.xcodeproj/project.pbxproj | 16 ++++++++
external/libgme | 2 +-
7 files changed, 68 insertions(+), 20 deletions(-)
diff --git a/.gitmodules b/.gitmodules
index 2b9fdff6b..146670a9b 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -37,4 +37,4 @@
[submodule "external/libgme"]
path = external/libgme
url = https://github.com/libsdl-org/game-music-emu.git
- branch = v0.6.3-SDL
+ branch = v0.6.4-SDL
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a4089aaf8..daf210abf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -591,16 +591,24 @@ endif()
if(SDL2MIXER_GME)
target_compile_definitions(SDL2_mixer PRIVATE MUSIC_GME)
if(SDL2MIXER_VENDORED)
- set(BUILD_SHARED_LIBS "${SDL2MIXER_GME_SHARED}")
- set(ENABLE_UBSAN OFF)
- set(BUILD_FRAMEWORK OFF)
+ set(GME_BUILD_SHARED "${SDL2MIXER_GME_SHARED}")
+ if(SDL2MIXER_GME_SHARED)
+ set(GME_BUILD_STATIC OFF)
+ set(tgt_gme gme_shared)
+ else()
+ set(GME_BUILD_STATIC ON)
+ set(tgt_gme gme_static)
+ endif()
+ set(GME_BUILD_FRAMEWORK OFF)
+ set(GME_BUILD_TESTING OFF)
+ set(GME_BUILD_EXAMPLES OFF)
+ set(GME_ENABLE_UBSAN OFF)
option(GME_ZLIB "Enable GME to support compressed sound formats" OFF)
message(STATUS "Using vendored libgme")
sdl_check_project_in_subfolder(external/libgme libgme SDL2MIXER_VENDORED)
add_subdirectory(external/libgme EXCLUDE_FROM_ALL)
- add_library(gme::gme ALIAS gme)
if(SDL2MIXER_GME_SHARED)
- list(APPEND INSTALL_EXTRA_TARGETS gme)
+ list(APPEND INSTALL_EXTRA_TARGETS ${tgt_gme})
endif()
if(NOT SDL2MIXER_GME_SHARED)
list(APPEND PC_LIBS -l$<TARGET_FILE_BASE_NAME:gme>)
diff --git a/VisualC/external/include/gme/gme.h b/VisualC/external/include/gme/gme.h
index 145f04a33..b3eb54ca7 100644
--- a/VisualC/external/include/gme/gme.h
+++ b/VisualC/external/include/gme/gme.h
@@ -1,6 +1,6 @@
/* Game music emulator library C interface (also usable from C++) */
-/* Game_Music_Emu 0.6.3 */
+/* Game_Music_Emu 0.6.4 */
#ifndef GME_H
#define GME_H
@@ -8,7 +8,7 @@
extern "C" {
#endif
-#define GME_VERSION 0x000603 /* 1 byte major, 1 byte minor, 1 byte patch-level */
+#define GME_VERSION 0x000604 /* 1 byte major, 1 byte minor, 1 byte patch-level */
/* Error string returned by library functions, or NULL if no error (success) */
typedef const char* gme_err_t;
@@ -57,6 +57,11 @@ BLARGG_EXPORT void gme_delete( Music_Emu* );
Fade time can be changed while track is playing. */
BLARGG_EXPORT void gme_set_fade( Music_Emu*, int start_msec );
+/** See gme_set_fade.
+ * @since 0.6.4
+ */
+BLARGG_EXPORT void gme_set_fade_msecs( Music_Emu*, int start_msec, int length_msecs );
+
/**
* If do_autoload_limit is nonzero, then automatically load track length
* metadata (if present) and terminate playback once the track length has been
@@ -67,12 +72,13 @@ BLARGG_EXPORT void gme_set_fade( Music_Emu*, int start_msec );
*
* By default, playback limits are loaded and applied.
*
- * @since 0.6.2
+ * @since 0.6.3
*/
BLARGG_EXPORT void gme_set_autoload_playback_limit( Music_Emu *, int do_autoload_limit );
/** See gme_set_autoload_playback_limit.
- * @since 0.6.2
+ * (This was actually added in 0.6.3, but wasn't exported because of a typo.)
+ * @since 0.6.4
*/
BLARGG_EXPORT int gme_autoload_playback_limit( Music_Emu const* );
@@ -123,13 +129,16 @@ struct gme_info_t
int length; /* total length, if file specifies it */
int intro_length; /* length of song up to looping section */
int loop_length; /* length of looping section */
-
+
/* Length if available, otherwise intro_length+loop_length*2 if available,
otherwise a default of 150000 (2.5 minutes). */
int play_length;
-
- int i4,i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,i15; /* reserved */
-
+
+ /* fade length in milliseconds; -1 if unknown */
+ int fade_length;
+
+ int i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,i15; /* reserved */
+
/* empty string ("") if not available */
const char* system;
const char* game;
@@ -138,7 +147,7 @@ struct gme_info_t
const char* copyright;
const char* comment;
const char* dumper;
-
+
const char *s7,*s8,*s9,*s10,*s11,*s12,*s13,*s14,*s15; /* reserved */
};
@@ -170,13 +179,17 @@ BLARGG_EXPORT void gme_mute_voice( Music_Emu*, int index, int mute );
voices, 0 unmutes them all, 0x01 mutes just the first voice, etc. */
BLARGG_EXPORT void gme_mute_voices( Music_Emu*, int muting_mask );
+/* Disable/Enable echo effect for SPC files */
+/* Available since 0.6.4 */
+BLARGG_EXPORT void gme_disable_echo( Music_Emu*, int disable );
+
/* Frequency equalizer parameters (see gme.txt) */
/* Implementers: If modified, also adjust Music_Emu::make_equalizer as needed */
typedef struct gme_equalizer_t
{
double treble; /* -50.0 = muffled, 0 = flat, +5.0 = extra-crisp */
double bass; /* 1 = full bass, 90 = average, 16000 = almost no bass */
-
+
double d2,d3,d4,d5,d6,d7,d8,d9; /* reserved */
} gme_equalizer_t;
@@ -224,7 +237,7 @@ BLARGG_EXPORT int gme_type_multitrack( gme_type_t );
/* whether the pcm output retrieved by gme_play() will have all 8 voices rendered to their
* individual stereo channel or (if false) these voices get mixed into one single stereo channel
- * @since 0.6.2 */
+ * @since 0.6.3 */
BLARGG_EXPORT int gme_multi_channel( Music_Emu const* );
/******** Advanced file loading ********/
@@ -248,7 +261,7 @@ BLARGG_EXPORT gme_type_t gme_identify_extension( const char path_or_extension []
* Get typical file extension for a given music type. This is not a replacement
* for a file content identification library (but see gme_identify_header).
*
- * @since 0.6.2
+ * @since 0.6.3
*/
BLARGG_EXPORT const char* gme_type_extension( gme_type_t music_type );
@@ -263,7 +276,7 @@ BLARGG_EXPORT Music_Emu* gme_new_emu( gme_type_t, int sample_rate );
/* Create new multichannel emulator and set sample rate. Returns NULL if out of memory.
* If you only need track information, pass gme_info_only for sample_rate.
* (see gme_multi_channel for more information on multichannel support)
- * @since 0.6.2
+ * @since 0.6.3
*/
BLARGG_EXPORT Music_Emu* gme_new_emu_multi_channel( gme_type_t, int sample_rate );
@@ -273,6 +286,17 @@ BLARGG_EXPORT gme_err_t gme_load_file( Music_Emu*, const char path [] );
/* Load music file from memory into emulator. Makes a copy of data passed. */
BLARGG_EXPORT gme_err_t gme_load_data( Music_Emu*, void const* data, long size );
+/* Load multiple single-track music files from memory into emulator.
+ * @since 0.6.4
+ */
+BLARGG_EXPORT gme_err_t gme_load_tracks( Music_Emu* me,
+ void const* data, long* sizes, int count );
+
+/* Return the fixed track count of an emu file type
+ * @since 0.6.4
+ */
+BLARGG_EXPORT int gme_fixed_track_count( gme_type_t );
+
/* Load music file using custom data reader function that will be called to
read file data. Most emulators load the entire file in one read call. */
typedef gme_err_t (*gme_reader_t)( void* your_data, void* out, int count );
diff --git a/VisualC/external/optional/x64/libgme.dll b/VisualC/external/optional/x64/libgme.dll
index 5a827ffac61a81b08505d895758ad3fc308182fb..5585a1f38912195ef5886dd3f77d94fb6d01dec7 100644
GIT binary patch
delta 156896
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
(Patch may be truncated, please check the link at the top of this post.)