Files
haikuports/media-libs/libmikmod/patches/libmikmod-3.1.11.patch

4348 lines
165 KiB
Diff

diff -urN libmikmod-3.1.11/NEWS libmikmod-3.1.12/NEWS
--- libmikmod-3.1.11/NEWS 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/NEWS 2007-12-15 12:39:54.000000000 +0000
@@ -1,3 +1,29 @@
+Summary of changes between libmikmod 3.1.11-a and libmikmod 3.1.12
+========================================================================
+libmikmod-3.1.12 was released on 15/12/2007
+
+This is bugfix release by denis111(keygenmusic).
+
+BUGFIXES
+- libmikmod no more hangs on loading XM modules with incorrect number of
+ instrumens.
+- modules with more then 255 orders are now supported
+
+
+Summary of changes between libmikmod 3.1.11 and libmikmod 3.1.11-a
+========================================================================
+libmikmod-3.1.11-a was released on 05/03/2004
+
+Most of my work and attention goes on the 3.2.x series, but I still receive
+occasional bug reports and patchs for the 3.1.11 version. There are not enough
+changes to make a full release, but many people may find this patch useful.
+
+BUGFIXES
+- libmikmod playback now works correcly on amd64 (type size problem)
+- fixed warning issued by automake >= 1.8
+- config.sub and config.guess updated
+
+
Summary of changes between libmikmod 3.1.10 and libmikmod 3.1.11 (Thiers):
==========================================================================
diff -urN libmikmod-3.1.11/README libmikmod-3.1.12/README
--- libmikmod-3.1.11/README 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/README 2007-12-15 12:40:48.000000000 +0000
@@ -1,7 +1,7 @@
Hello folks!
-This is libmikmod, version 3.1.11, a portable sound library for Unix
+This is libmikmod, version 3.1.12, a portable sound library for Unix
and other systems. Check out the file 'NEWS' for more history information.
diff -urN libmikmod-3.1.11/configure.in libmikmod-3.1.12/configure.in
--- libmikmod-3.1.11/configure.in 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/configure.in 2007-12-15 09:22:57.000000000 +0000
@@ -1,6 +1,6 @@
dnl Process this file with autoconf to produce a configure script.
dnl
-dnl $Id: configure.in,v 1.2 2004/01/21 01:41:49 raph Exp $
+dnl $Id: configure.in,v 1.1.1.1 2004/06/01 12:16:16 raph Exp $
AC_INIT(include/mikmod.h.in)
diff -urN libmikmod-3.1.11/dlapi/dl_hpux.c libmikmod-3.1.12/dlapi/dl_hpux.c
--- libmikmod-3.1.11/dlapi/dl_hpux.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/dlapi/dl_hpux.c 2007-12-15 09:23:01.000000000 +0000
@@ -1,6 +1,6 @@
/*==============================================================================
- $Id: dl_hpux.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: dl_hpux.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
simple dlopen()-like implementation above HP-UX shl_xxx() API
diff -urN libmikmod-3.1.11/docs/mikmod.texi libmikmod-3.1.12/docs/mikmod.texi
--- libmikmod-3.1.11/docs/mikmod.texi 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/docs/mikmod.texi 2007-12-15 09:23:05.000000000 +0000
@@ -7,7 +7,7 @@
MikMod Sound Library Documentation
- $Id: mikmod.texi,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: mikmod.texi,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
@end ignore
@c comment this during modifications
diff -urN libmikmod-3.1.11/drivers/drv_AF.c libmikmod-3.1.12/drivers/drv_AF.c
--- libmikmod-3.1.11/drivers/drv_AF.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_AF.c 2007-12-15 09:23:09.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_AF.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: drv_AF.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for output on AF audio server.
diff -urN libmikmod-3.1.11/drivers/drv_aix.c libmikmod-3.1.12/drivers/drv_aix.c
--- libmikmod-3.1.11/drivers/drv_aix.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_aix.c 2007-12-15 09:23:12.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_aix.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: drv_aix.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for output to AIX series audio device
diff -urN libmikmod-3.1.11/drivers/drv_alsa.c libmikmod-3.1.12/drivers/drv_alsa.c
--- libmikmod-3.1.11/drivers/drv_alsa.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_alsa.c 2007-12-15 09:23:17.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_alsa.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: drv_alsa.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for Advanced Linux Sound Architecture (ALSA)
diff -urN libmikmod-3.1.11/drivers/drv_dart.c libmikmod-3.1.12/drivers/drv_dart.c
--- libmikmod-3.1.11/drivers/drv_dart.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_dart.c 2007-12-15 09:23:20.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_dart.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: drv_dart.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for output on OS/2 MMPM/2 using direct audio (DART)
diff -urN libmikmod-3.1.11/drivers/drv_ds.c libmikmod-3.1.12/drivers/drv_ds.c
--- libmikmod-3.1.11/drivers/drv_ds.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_ds.c 2007-12-15 09:23:24.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_ds.c,v 1.2 2004/01/21 17:29:32 raph Exp $
+ $Id: drv_ds.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for output on win32 platforms using DirectSound
diff -urN libmikmod-3.1.11/drivers/drv_esd.c libmikmod-3.1.12/drivers/drv_esd.c
--- libmikmod-3.1.11/drivers/drv_esd.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_esd.c 2007-12-15 09:23:27.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_esd.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: drv_esd.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for the Enlightened sound daemon (EsounD)
diff -urN libmikmod-3.1.11/drivers/drv_hp.c libmikmod-3.1.12/drivers/drv_hp.c
--- libmikmod-3.1.11/drivers/drv_hp.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_hp.c 2007-12-15 09:23:31.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_hp.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: drv_hp.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for output to HP 9000 series /dev/audio
diff -urN libmikmod-3.1.11/drivers/drv_mac.c libmikmod-3.1.12/drivers/drv_mac.c
--- libmikmod-3.1.11/drivers/drv_mac.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_mac.c 2007-12-15 09:23:34.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_mac.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: drv_mac.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for output to the Macintosh Sound Manager
diff -urN libmikmod-3.1.11/drivers/drv_nos.c libmikmod-3.1.12/drivers/drv_nos.c
--- libmikmod-3.1.11/drivers/drv_nos.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_nos.c 2007-12-15 09:23:39.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_nos.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: drv_nos.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for no output
diff -urN libmikmod-3.1.11/drivers/drv_os2.c libmikmod-3.1.12/drivers/drv_os2.c
--- libmikmod-3.1.11/drivers/drv_os2.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_os2.c 2007-12-15 09:23:43.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_os2.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: drv_os2.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for output on OS/2 using MMPM/2 MCI interface
diff -urN libmikmod-3.1.11/drivers/drv_oss.c libmikmod-3.1.12/drivers/drv_oss.c
--- libmikmod-3.1.11/drivers/drv_oss.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_oss.c 2007-12-15 09:23:46.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_oss.c,v 1.2 2004/01/21 01:41:53 raph Exp $
+ $Id: drv_oss.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for output on Linux and FreeBSD Open Sound System (OSS) (/dev/dsp)
diff -urN libmikmod-3.1.11/drivers/drv_pipe.c libmikmod-3.1.12/drivers/drv_pipe.c
--- libmikmod-3.1.11/drivers/drv_pipe.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_pipe.c 2007-12-15 09:23:49.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_pipe.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: drv_pipe.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for output via a pipe to another command
diff -urN libmikmod-3.1.11/drivers/drv_raw.c libmikmod-3.1.12/drivers/drv_raw.c
--- libmikmod-3.1.11/drivers/drv_raw.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_raw.c 2007-12-15 09:23:52.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_raw.c,v 1.2 2004/01/21 17:29:32 raph Exp $
+ $Id: drv_raw.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for output to a file called MUSIC.RAW
diff -urN libmikmod-3.1.11/drivers/drv_sam9407.c libmikmod-3.1.12/drivers/drv_sam9407.c
--- libmikmod-3.1.11/drivers/drv_sam9407.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_sam9407.c 2007-12-15 09:23:55.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_sam9407.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: drv_sam9407.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for the Linux sam9407 driver
diff -urN libmikmod-3.1.11/drivers/drv_sgi.c libmikmod-3.1.12/drivers/drv_sgi.c
--- libmikmod-3.1.11/drivers/drv_sgi.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_sgi.c 2007-12-15 09:24:00.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_sgi.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: drv_sgi.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for output on SGI audio system (needs libaudio from the dmedia
package).
diff -urN libmikmod-3.1.11/drivers/drv_stdout.c libmikmod-3.1.12/drivers/drv_stdout.c
--- libmikmod-3.1.11/drivers/drv_stdout.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_stdout.c 2007-12-15 09:24:03.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_stdout.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: drv_stdout.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Output data to stdout
diff -urN libmikmod-3.1.11/drivers/drv_sun.c libmikmod-3.1.12/drivers/drv_sun.c
--- libmikmod-3.1.11/drivers/drv_sun.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_sun.c 2007-12-15 09:24:07.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_sun.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: drv_sun.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for output on the Sun audio device (/dev/audio).
Also works under NetBSD and OpenBSD
diff -urN libmikmod-3.1.11/drivers/drv_ultra.c libmikmod-3.1.12/drivers/drv_ultra.c
--- libmikmod-3.1.11/drivers/drv_ultra.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_ultra.c 2007-12-15 09:24:10.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_ultra.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: drv_ultra.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for the Linux Ultrasound driver
diff -urN libmikmod-3.1.11/drivers/drv_wav.c libmikmod-3.1.12/drivers/drv_wav.c
--- libmikmod-3.1.11/drivers/drv_wav.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_wav.c 2007-12-15 09:24:13.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_wav.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: drv_wav.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for output to a file called MUSIC.WAV
diff -urN libmikmod-3.1.11/drivers/drv_win.c libmikmod-3.1.12/drivers/drv_win.c
--- libmikmod-3.1.11/drivers/drv_win.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/drivers/drv_win.c 2007-12-15 09:24:16.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: drv_win.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: drv_win.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Driver for output on win32 platforms using the multimedia API
diff -urN libmikmod-3.1.11/include/mikmod.h.in libmikmod-3.1.12/include/mikmod.h.in
--- libmikmod-3.1.11/include/mikmod.h.in 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/include/mikmod.h.in 2009-10-05 07:36:00.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: mikmod.h.in,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: mikmod.h.in,v 1.2 2004/06/01 16:43:45 raph Exp $
MikMod sound library include file
@@ -85,7 +85,7 @@
@DOES_NOT_HAVE_SIGNED@
-#if defined(__arch64__) || defined(__alpha)
+#if defined(__arch64__) || defined(__alpha) || defined(__x86_64) || defined(_LP64)
/* 64 bit architectures */
typedef signed char SBYTE; /* 1 byte, signed */
diff -urN libmikmod-3.1.11/include/mikmod_internals.h libmikmod-3.1.12/include/mikmod_internals.h
--- libmikmod-3.1.11/include/mikmod_internals.h 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/include/mikmod_internals.h 2009-10-05 07:36:00.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: mikmod_internals.h,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: mikmod_internals.h,v 1.1.1.2 2007/12/15 15:24:17 denis111 Exp $
MikMod sound library internal definitions
@@ -50,7 +50,7 @@
/*========== More type definitions */
/* SLONGLONG: 64bit, signed */
-#if defined (__arch64__) || defined(__alpha)
+#if defined(__arch64__) || defined(__alpha) || defined(__x86_64) || defined(_LP64)
typedef long SLONGLONG;
#define NATIVE_64BIT_INT
#elif defined(__WATCOMC__)
@@ -557,7 +557,7 @@
extern SBYTE remap[UF_MAXCHAN]; /* for removing empty channels */
extern UBYTE* poslookup; /* lookup table for pattern jumps after
blank pattern removal */
-extern UBYTE poslookupcnt;
+extern UWORD poslookupcnt;
extern UWORD* origpositions;
extern BOOL filters; /* resonant filters in use */
diff -urN libmikmod-3.1.11/libmikmod.m4 libmikmod-3.1.12/libmikmod.m4
--- libmikmod-3.1.11/libmikmod.m4 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/libmikmod.m4 2007-12-15 09:24:31.000000000 +0000
@@ -8,7 +8,7 @@
dnl Test for libmikmod, and define LIBMIKMOD_CFLAGS, LIBMIKMOD_LIBS and
dnl LIBMIKMOD_LDADD
dnl
-AC_DEFUN(AM_PATH_LIBMIKMOD,
+AC_DEFUN([AM_PATH_LIBMIKMOD],
[dnl
dnl Get the cflags and libraries from the libmikmod-config script
dnl
diff -urN libmikmod-3.1.11/loaders/load_669.c libmikmod-3.1.12/loaders/load_669.c
--- libmikmod-3.1.11/loaders/load_669.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_669.c 2007-12-15 09:24:34.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: load_669.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: load_669.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Composer 669 module loader
diff -urN libmikmod-3.1.11/loaders/load_amf.c libmikmod-3.1.12/loaders/load_amf.c
--- libmikmod-3.1.11/loaders/load_amf.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_amf.c 2007-12-15 09:24:37.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: load_amf.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: load_amf.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
DMP Advanced Module Format loader
diff -urN libmikmod-3.1.11/loaders/load_dsm.c libmikmod-3.1.12/loaders/load_dsm.c
--- libmikmod-3.1.11/loaders/load_dsm.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_dsm.c 2007-12-15 09:24:39.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: load_dsm.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: load_dsm.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
DSIK internal format (DSM) module loader
diff -urN libmikmod-3.1.11/loaders/load_far.c libmikmod-3.1.12/loaders/load_far.c
--- libmikmod-3.1.11/loaders/load_far.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_far.c 2007-12-15 09:24:42.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: load_far.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: load_far.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Farandole (FAR) module loader
diff -urN libmikmod-3.1.11/loaders/load_gdm.c libmikmod-3.1.12/loaders/load_gdm.c
--- libmikmod-3.1.11/loaders/load_gdm.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_gdm.c 2007-12-15 09:24:45.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: load_gdm.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: load_gdm.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
General DigiMusic (GDM) module loader
diff -urN libmikmod-3.1.11/loaders/load_imf.c libmikmod-3.1.12/loaders/load_imf.c
--- libmikmod-3.1.11/loaders/load_imf.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_imf.c 2007-12-15 09:24:48.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: load_imf.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: load_imf.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Imago Orpheus (IMF) module loader
diff -urN libmikmod-3.1.11/loaders/load_it.c libmikmod-3.1.12/loaders/load_it.c
--- libmikmod-3.1.11/loaders/load_it.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_it.c 2007-12-15 09:24:51.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: load_it.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: load_it.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Impulse tracker (IT) module loader
diff -urN libmikmod-3.1.11/loaders/load_m15.c libmikmod-3.1.12/loaders/load_m15.c
--- libmikmod-3.1.11/loaders/load_m15.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_m15.c 2007-12-15 09:24:55.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: load_m15.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: load_m15.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
15 instrument MOD loader
Also supports Ultimate Sound Tracker (old M15 format)
diff -urN libmikmod-3.1.11/loaders/load_med.c libmikmod-3.1.12/loaders/load_med.c
--- libmikmod-3.1.11/loaders/load_med.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_med.c 2007-12-15 09:24:58.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: load_med.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: load_med.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Amiga MED module loader
diff -urN libmikmod-3.1.11/loaders/load_mod.c libmikmod-3.1.12/loaders/load_mod.c
--- libmikmod-3.1.11/loaders/load_mod.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_mod.c 2007-12-15 09:25:01.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: load_mod.c,v 1.2 2004/01/21 13:33:11 raph Exp $
+ $Id: load_mod.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Generic MOD loader (Protracker, StarTracker, FastTracker, etc)
diff -urN libmikmod-3.1.11/loaders/load_mtm.c libmikmod-3.1.12/loaders/load_mtm.c
--- libmikmod-3.1.11/loaders/load_mtm.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_mtm.c 2007-12-15 09:25:04.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: load_mtm.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: load_mtm.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
MTM module loader
diff -urN libmikmod-3.1.11/loaders/load_okt.c libmikmod-3.1.12/loaders/load_okt.c
--- libmikmod-3.1.11/loaders/load_okt.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_okt.c 2007-12-15 09:25:07.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: load_okt.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: load_okt.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Oktalyzer (OKT) module loader
diff -urN libmikmod-3.1.11/loaders/load_s3m.c libmikmod-3.1.12/loaders/load_s3m.c
--- libmikmod-3.1.11/loaders/load_s3m.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_s3m.c 2007-12-15 09:25:10.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: load_s3m.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: load_s3m.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Screamtracker (S3M) module loader
diff -urN libmikmod-3.1.11/loaders/load_stm.c libmikmod-3.1.12/loaders/load_stm.c
--- libmikmod-3.1.11/loaders/load_stm.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_stm.c 2007-12-15 09:25:13.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: load_stm.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: load_stm.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Screamtracker 2 (STM) module loader
diff -urN libmikmod-3.1.11/loaders/load_stx.c libmikmod-3.1.12/loaders/load_stx.c
--- libmikmod-3.1.11/loaders/load_stx.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_stx.c 2007-12-15 09:25:16.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: load_stx.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: load_stx.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
STMIK 0.2 (STX) module loader
diff -urN libmikmod-3.1.11/loaders/load_ult.c libmikmod-3.1.12/loaders/load_ult.c
--- libmikmod-3.1.11/loaders/load_ult.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_ult.c 2007-12-15 09:25:19.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: load_ult.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: load_ult.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Ultratracker (ULT) module loader
diff -urN libmikmod-3.1.11/loaders/load_uni.c libmikmod-3.1.12/loaders/load_uni.c
--- libmikmod-3.1.11/loaders/load_uni.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_uni.c 2007-12-15 09:25:25.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: load_uni.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: load_uni.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
UNIMOD (libmikmod's and APlayer's internal module format) loader
diff -urN libmikmod-3.1.11/loaders/load_xm.c libmikmod-3.1.12/loaders/load_xm.c
--- libmikmod-3.1.11/loaders/load_xm.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_xm.c 2009-10-10 11:12:06.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: load_xm.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: load_xm.c,v 1.1.1.2 2007/12/15 15:24:17 denis111 Exp $
Fasttracker (XM) module loader
@@ -443,7 +443,7 @@
static BOOL LoadInstruments(void)
{
- int t,u;
+ int t,u, ck;
INSTRUMENT *d;
ULONG next=0;
UWORD wavcnt=0;
@@ -460,6 +460,13 @@
headend = _mm_ftell(modreader);
ih.size = _mm_read_I_ULONG(modreader);
headend += ih.size;
+ ck = _mm_ftell(modreader);
+ _mm_fseek(modreader,0,SEEK_END);
+ if ((headend<0) || (_mm_ftell(modreader)<headend) || (headend<ck)) {
+ _mm_fseek(modreader,ck,SEEK_SET);
+ break;
+ }
+ _mm_fseek(modreader,ck,SEEK_SET);
_mm_read_string(ih.name, 22, modreader);
ih.type = _mm_read_UBYTE(modreader);
ih.numsmp = _mm_read_I_UWORD(modreader);
@@ -493,7 +500,7 @@
/* read the remainder of the header
(2 bytes for 1.03, 22 for 1.04) */
- for(u=headend-_mm_ftell(modreader);u;u--) _mm_read_UBYTE(modreader);
+ if (headend>=_mm_ftell(modreader)) for(u=headend-_mm_ftell(modreader);u;u--) _mm_read_UBYTE(modreader);
/* we can't trust the envelope point count here, as some
modules have incorrect values (K_OSPACE.XM reports 32 volume
@@ -620,9 +627,17 @@
of.numsmp+=ih.numsmp;
} else {
/* read the remainder of the header */
+ ck = _mm_ftell(modreader);
+ _mm_fseek(modreader,0,SEEK_END);
+ if ((headend<0) || (_mm_ftell(modreader)<headend) || (headend<ck)) {
+ _mm_fseek(modreader,ck,SEEK_SET);
+ break;
+ }
+ _mm_fseek(modreader,ck,SEEK_SET);
for(u=headend-_mm_ftell(modreader);u;u--) _mm_read_UBYTE(modreader);
- if(_mm_eof(modreader)) {
+ /* last instrument is at the end of file in version 0x0104 */
+ if(_mm_eof(modreader) && (mh->version<0x0104 || t<of.numins-1)) {
free(nextwav);free(wh);
nextwav=NULL;wh=NULL;
_mm_errno = MMERR_LOADING_SAMPLEINFO;
diff -urN libmikmod-3.1.11/loaders/load_xm.c.orig libmikmod-3.1.12/loaders/load_xm.c.orig
--- libmikmod-3.1.11/loaders/load_xm.c.orig 1970-01-01 00:00:00.000000000 +0000
+++ libmikmod-3.1.12/loaders/load_xm.c.orig 2007-12-15 12:29:49.000000000 +0000
@@ -0,0 +1,829 @@
+/* MikMod sound library
+ (c) 1998, 1999, 2000, 2001, 2002 Miodrag Vallat and others - see file
+ AUTHORS for complete list.
+
+ This library is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA.
+*/
+
+/*==============================================================================
+
+ $Id: load_xm.c,v 1.1.1.2 2007/12/15 15:24:17 denis111 Exp $
+
+ Fasttracker (XM) module loader
+
+==============================================================================*/
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <stdio.h>
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#include <string.h>
+
+#include "mikmod_internals.h"
+
+#ifdef SUNOS
+extern int fprintf(FILE *, const char *, ...);
+#endif
+
+/*========== Module structure */
+
+typedef struct XMHEADER {
+ CHAR id[17]; /* ID text: 'Extended module: ' */
+ CHAR songname[21]; /* Module name */
+ CHAR trackername[20]; /* Tracker name */
+ UWORD version; /* Version number */
+ ULONG headersize; /* Header size */
+ UWORD songlength; /* Song length (in patten order table) */
+ UWORD restart; /* Restart position */
+ UWORD numchn; /* Number of channels (2,4,6,8,10,...,32) */
+ UWORD numpat; /* Number of patterns (max 256) */
+ UWORD numins; /* Number of instruments (max 128) */
+ UWORD flags;
+ UWORD tempo; /* Default tempo */
+ UWORD bpm; /* Default BPM */
+ UBYTE orders[256]; /* Pattern order table */
+} XMHEADER;
+
+typedef struct XMINSTHEADER {
+ ULONG size; /* Instrument size */
+ CHAR name[22]; /* Instrument name */
+ UBYTE type; /* Instrument type (always 0) */
+ UWORD numsmp; /* Number of samples in instrument */
+ ULONG ssize;
+} XMINSTHEADER;
+
+#define XMENVCNT (12*2)
+#define XMNOTECNT (8*OCTAVE)
+typedef struct XMPATCHHEADER {
+ UBYTE what[XMNOTECNT]; /* Sample number for all notes */
+ UWORD volenv[XMENVCNT]; /* Points for volume envelope */
+ UWORD panenv[XMENVCNT]; /* Points for panning envelope */
+ UBYTE volpts; /* Number of volume points */
+ UBYTE panpts; /* Number of panning points */
+ UBYTE volsus; /* Volume sustain point */
+ UBYTE volbeg; /* Volume loop start point */
+ UBYTE volend; /* Volume loop end point */
+ UBYTE pansus; /* Panning sustain point */
+ UBYTE panbeg; /* Panning loop start point */
+ UBYTE panend; /* Panning loop end point */
+ UBYTE volflg; /* Volume type: bit 0: On; 1: Sustain; 2: Loop */
+ UBYTE panflg; /* Panning type: bit 0: On; 1: Sustain; 2: Loop */
+ UBYTE vibflg; /* Vibrato type */
+ UBYTE vibsweep; /* Vibrato sweep */
+ UBYTE vibdepth; /* Vibrato depth */
+ UBYTE vibrate; /* Vibrato rate */
+ UWORD volfade; /* Volume fadeout */
+} XMPATCHHEADER;
+
+typedef struct XMWAVHEADER {
+ ULONG length; /* Sample length */
+ ULONG loopstart; /* Sample loop start */
+ ULONG looplength; /* Sample loop length */
+ UBYTE volume; /* Volume */
+ SBYTE finetune; /* Finetune (signed byte -128..+127) */
+ UBYTE type; /* Loop type */
+ UBYTE panning; /* Panning (0-255) */
+ SBYTE relnote; /* Relative note number (signed byte) */
+ UBYTE reserved;
+ CHAR samplename[22]; /* Sample name */
+ UBYTE vibtype; /* Vibrato type */
+ UBYTE vibsweep; /* Vibrato sweep */
+ UBYTE vibdepth; /* Vibrato depth */
+ UBYTE vibrate; /* Vibrato rate */
+} XMWAVHEADER;
+
+typedef struct XMPATHEADER {
+ ULONG size; /* Pattern header length */
+ UBYTE packing; /* Packing type (always 0) */
+ UWORD numrows; /* Number of rows in pattern (1..256) */
+ SWORD packsize; /* Packed patterndata size */
+} XMPATHEADER;
+
+typedef struct XMNOTE {
+ UBYTE note,ins,vol,eff,dat;
+} XMNOTE;
+
+/*========== Loader variables */
+
+static XMNOTE *xmpat=NULL;
+static XMHEADER *mh=NULL;
+
+/* increment unit for sample array reallocation */
+#define XM_SMPINCR 64
+static ULONG *nextwav=NULL;
+static XMWAVHEADER *wh=NULL,*s=NULL;
+
+/*========== Loader code */
+
+BOOL XM_Test(void)
+{
+ UBYTE id[38];
+
+ if(!_mm_read_UBYTES(id,38,modreader)) return 0;
+ if(memcmp(id,"Extended Module: ",17)) return 0;
+ if(id[37]==0x1a) return 1;
+ return 0;
+}
+
+BOOL XM_Init(void)
+{
+ if(!(mh=(XMHEADER *)_mm_malloc(sizeof(XMHEADER)))) return 0;
+ return 1;
+}
+
+void XM_Cleanup(void)
+{
+ _mm_free(mh);
+}
+
+static int XM_ReadNote(XMNOTE* n)
+{
+ UBYTE cmp,result=1;
+
+ memset(n,0,sizeof(XMNOTE));
+ cmp=_mm_read_UBYTE(modreader);
+
+ if(cmp&0x80) {
+ if(cmp&1) { result++;n->note = _mm_read_UBYTE(modreader); }
+ if(cmp&2) { result++;n->ins = _mm_read_UBYTE(modreader); }
+ if(cmp&4) { result++;n->vol = _mm_read_UBYTE(modreader); }
+ if(cmp&8) { result++;n->eff = _mm_read_UBYTE(modreader); }
+ if(cmp&16) { result++;n->dat = _mm_read_UBYTE(modreader); }
+ } else {
+ n->note = cmp;
+ n->ins = _mm_read_UBYTE(modreader);
+ n->vol = _mm_read_UBYTE(modreader);
+ n->eff = _mm_read_UBYTE(modreader);
+ n->dat = _mm_read_UBYTE(modreader);
+ result += 4;
+ }
+ return result;
+}
+
+static UBYTE* XM_Convert(XMNOTE* xmtrack,UWORD rows)
+{
+ int t;
+ UBYTE note,ins,vol,eff,dat;
+
+ UniReset();
+ for(t=0;t<rows;t++) {
+ note = xmtrack->note;
+ ins = xmtrack->ins;
+ vol = xmtrack->vol;
+ eff = xmtrack->eff;
+ dat = xmtrack->dat;
+
+ if(note) {
+ if(note>XMNOTECNT)
+ UniEffect(UNI_KEYFADE,0);
+ else
+ UniNote(note-1);
+ }
+ if(ins) UniInstrument(ins-1);
+
+ switch(vol>>4) {
+ case 0x6: /* volslide down */
+ if(vol&0xf) UniEffect(UNI_XMEFFECTA,vol&0xf);
+ break;
+ case 0x7: /* volslide up */
+ if(vol&0xf) UniEffect(UNI_XMEFFECTA,vol<<4);
+ break;
+
+ /* volume-row fine volume slide is compatible with protracker
+ EBx and EAx effects i.e. a zero nibble means DO NOT SLIDE, as
+ opposed to 'take the last sliding value'. */
+ case 0x8: /* finevol down */
+ UniPTEffect(0xe,0xb0|(vol&0xf));
+ break;
+ case 0x9: /* finevol up */
+ UniPTEffect(0xe,0xa0|(vol&0xf));
+ break;
+ case 0xa: /* set vibrato speed */
+ UniEffect(UNI_XMEFFECT4,vol<<4);
+ break;
+ case 0xb: /* vibrato */
+ UniEffect(UNI_XMEFFECT4,vol&0xf);
+ break;
+ case 0xc: /* set panning */
+ UniPTEffect(0x8,vol<<4);
+ break;
+ case 0xd: /* panning slide left (only slide when data not zero) */
+ if(vol&0xf) UniEffect(UNI_XMEFFECTP,vol&0xf);
+ break;
+ case 0xe: /* panning slide right (only slide when data not zero) */
+ if(vol&0xf) UniEffect(UNI_XMEFFECTP,vol<<4);
+ break;
+ case 0xf: /* tone porta */
+ UniPTEffect(0x3,vol<<4);
+ break;
+ default:
+ if((vol>=0x10)&&(vol<=0x50))
+ UniPTEffect(0xc,vol-0x10);
+ }
+
+ switch(eff) {
+ case 0x4:
+ UniEffect(UNI_XMEFFECT4,dat);
+ break;
+ case 0x6:
+ UniEffect(UNI_XMEFFECT6,dat);
+ break;
+ case 0xa:
+ UniEffect(UNI_XMEFFECTA,dat);
+ break;
+ case 0xe: /* Extended effects */
+ switch(dat>>4) {
+ case 0x1: /* XM fine porta up */
+ UniEffect(UNI_XMEFFECTE1,dat&0xf);
+ break;
+ case 0x2: /* XM fine porta down */
+ UniEffect(UNI_XMEFFECTE2,dat&0xf);
+ break;
+ case 0xa: /* XM fine volume up */
+ UniEffect(UNI_XMEFFECTEA,dat&0xf);
+ break;
+ case 0xb: /* XM fine volume down */
+ UniEffect(UNI_XMEFFECTEB,dat&0xf);
+ break;
+ default:
+ UniPTEffect(eff,dat);
+ }
+ break;
+ case 'G'-55: /* G - set global volume */
+ UniEffect(UNI_XMEFFECTG,dat>64?128:dat<<1);
+ break;
+ case 'H'-55: /* H - global volume slide */
+ UniEffect(UNI_XMEFFECTH,dat);
+ break;
+ case 'K'-55: /* K - keyOff and KeyFade */
+ UniEffect(UNI_KEYFADE,dat);
+ break;
+ case 'L'-55: /* L - set envelope position */
+ UniEffect(UNI_XMEFFECTL,dat);
+ break;
+ case 'P'-55: /* P - panning slide */
+ UniEffect(UNI_XMEFFECTP,dat);
+ break;
+ case 'R'-55: /* R - multi retrig note */
+ UniEffect(UNI_S3MEFFECTQ,dat);
+ break;
+ case 'T'-55: /* T - Tremor */
+ UniEffect(UNI_S3MEFFECTI,dat);
+ break;
+ case 'X'-55:
+ switch(dat>>4) {
+ case 1: /* X1 - Extra Fine Porta up */
+ UniEffect(UNI_XMEFFECTX1,dat&0xf);
+ break;
+ case 2: /* X2 - Extra Fine Porta down */
+ UniEffect(UNI_XMEFFECTX2,dat&0xf);
+ break;
+ }
+ break;
+ default:
+ if(eff<=0xf) {
+ /* the pattern jump destination is written in decimal,
+ but it seems some poor tracker software writes them
+ in hexadecimal... (sigh) */
+ if (eff==0xd)
+ /* don't change anything if we're sure it's in hexa */
+ if ((((dat&0xf0)>>4)<=9)&&((dat&0xf)<=9))
+ /* otherwise, convert from dec to hex */
+ dat=(((dat&0xf0)>>4)*10)+(dat&0xf);
+ UniPTEffect(eff,dat);
+ }
+ break;
+ }
+ UniNewline();
+ xmtrack++;
+ }
+ return UniDup();
+}
+
+static BOOL LoadPatterns(BOOL dummypat)
+{
+ int t,u,v,numtrk;
+
+ if(!AllocTracks()) return 0;
+ if(!AllocPatterns()) return 0;
+
+ numtrk=0;
+ for(t=0;t<mh->numpat;t++) {
+ XMPATHEADER ph;
+
+ ph.size =_mm_read_I_ULONG(modreader);
+ if (ph.size<(mh->version==0x0102?8:9)) {
+ _mm_errno=MMERR_LOADING_PATTERN;
+ return 0;
+ }
+ ph.packing =_mm_read_UBYTE(modreader);
+ if(ph.packing) {
+ _mm_errno=MMERR_LOADING_PATTERN;
+ return 0;
+ }
+ if(mh->version==0x0102)
+ ph.numrows =_mm_read_UBYTE(modreader)+1;
+ else
+ ph.numrows =_mm_read_I_UWORD(modreader);
+ ph.packsize =_mm_read_I_UWORD(modreader);
+
+ ph.size-=(mh->version==0x0102?8:9);
+ if(ph.size)
+ _mm_fseek(modreader,ph.size,SEEK_CUR);
+
+ of.pattrows[t]=ph.numrows;
+
+ if(ph.numrows) {
+ if(!(xmpat=(XMNOTE*)_mm_calloc(ph.numrows*of.numchn,sizeof(XMNOTE))))
+ return 0;
+
+ /* when packsize is 0, don't try to load a pattern.. it's empty. */
+ if(ph.packsize)
+ for(u=0;u<ph.numrows;u++)
+ for(v=0;v<of.numchn;v++) {
+ if(!ph.packsize) break;
+
+ ph.packsize-=XM_ReadNote(&xmpat[(v*ph.numrows)+u]);
+ if(ph.packsize<0) {
+ free(xmpat);xmpat=NULL;
+ _mm_errno=MMERR_LOADING_PATTERN;
+ return 0;
+ }
+ }
+
+ if(ph.packsize) {
+ _mm_fseek(modreader,ph.packsize,SEEK_CUR);
+ }
+
+ if(_mm_eof(modreader)) {
+ free(xmpat);xmpat=NULL;
+ _mm_errno=MMERR_LOADING_PATTERN;
+ return 0;
+ }
+
+ for(v=0;v<of.numchn;v++)
+ of.tracks[numtrk++]=XM_Convert(&xmpat[v*ph.numrows],ph.numrows);
+
+ free(xmpat);xmpat=NULL;
+ } else {
+ for(v=0;v<of.numchn;v++)
+ of.tracks[numtrk++]=XM_Convert(NULL,ph.numrows);
+ }
+ }
+
+ if(dummypat) {
+ of.pattrows[t]=64;
+ if(!(xmpat=(XMNOTE*)_mm_calloc(64*of.numchn,sizeof(XMNOTE)))) return 0;
+ for(v=0;v<of.numchn;v++)
+ of.tracks[numtrk++]=XM_Convert(&xmpat[v*64],64);
+ free(xmpat);xmpat=NULL;
+ }
+
+ return 1;
+}
+
+static void FixEnvelope(ENVPT *cur, int pts)
+{
+ int u, old, tmp;
+ ENVPT *prev;
+
+ /* Some broken XM editing program will only save the low byte
+ of the position value. Try to compensate by adding the
+ missing high byte. */
+
+ prev = cur++;
+ old = prev->pos;
+
+ for (u = 1; u < pts; u++, prev++, cur++) {
+ if (cur->pos < prev->pos) {
+ if (cur->pos < 0x100) {
+ if (cur->pos > old) /* same hex century */
+ tmp = cur->pos + (prev->pos - old);
+ else
+ tmp = cur->pos | ((prev->pos + 0x100) & 0xff00);
+ old = cur->pos;
+ cur->pos = tmp;
+#ifdef MIKMOD_DEBUG
+ fprintf(stderr, "\rbroken envelope position(%d/%d), %d %d -> %d\n",
+ u, pts, prev->pos, old, cur->pos);
+#endif
+ } else {
+#ifdef MIKMOD_DEBUG
+ /* different brokenness style... fix unknown */
+ fprintf(stderr, "\rbroken envelope position(%d/%d), %d %d\n",
+ u, pts, old, cur->pos);
+#endif
+ old = cur->pos;
+ }
+ } else
+ old = cur->pos;
+ }
+}
+
+static BOOL LoadInstruments(void)
+{
+ int t,u, ck;
+ INSTRUMENT *d;
+ ULONG next=0;
+ UWORD wavcnt=0;
+
+ if(!AllocInstruments()) return 0;
+ d=of.instruments;
+ for(t=0;t<of.numins;t++,d++) {
+ XMINSTHEADER ih;
+ long headend;
+
+ memset(d->samplenumber,0xff,INSTNOTES*sizeof(UWORD));
+
+ /* read instrument header */
+ headend = _mm_ftell(modreader);
+ ih.size = _mm_read_I_ULONG(modreader);
+ headend += ih.size;
+ ck = _mm_ftell(modreader);
+ _mm_fseek(modreader,0,SEEK_END);
+ if ((headend<0) || (_mm_ftell(modreader)<headend) || (headend<ck)) {
+ _mm_fseek(modreader,ck,SEEK_SET);
+ break;
+ }
+ _mm_fseek(modreader,ck,SEEK_SET);
+ _mm_read_string(ih.name, 22, modreader);
+ ih.type = _mm_read_UBYTE(modreader);
+ ih.numsmp = _mm_read_I_UWORD(modreader);
+
+ d->insname = DupStr(ih.name,22,1);
+
+ if((SWORD)ih.size>29) {
+ ih.ssize = _mm_read_I_ULONG(modreader);
+ if(((SWORD)ih.numsmp>0)&&(ih.numsmp<=XMNOTECNT)) {
+ XMPATCHHEADER pth;
+ int p;
+
+ _mm_read_UBYTES (pth.what,XMNOTECNT,modreader);
+ _mm_read_I_UWORDS (pth.volenv, XMENVCNT, modreader);
+ _mm_read_I_UWORDS (pth.panenv, XMENVCNT, modreader);
+ pth.volpts = _mm_read_UBYTE(modreader);
+ pth.panpts = _mm_read_UBYTE(modreader);
+ pth.volsus = _mm_read_UBYTE(modreader);
+ pth.volbeg = _mm_read_UBYTE(modreader);
+ pth.volend = _mm_read_UBYTE(modreader);
+ pth.pansus = _mm_read_UBYTE(modreader);
+ pth.panbeg = _mm_read_UBYTE(modreader);
+ pth.panend = _mm_read_UBYTE(modreader);
+ pth.volflg = _mm_read_UBYTE(modreader);
+ pth.panflg = _mm_read_UBYTE(modreader);
+ pth.vibflg = _mm_read_UBYTE(modreader);
+ pth.vibsweep = _mm_read_UBYTE(modreader);
+ pth.vibdepth = _mm_read_UBYTE(modreader);
+ pth.vibrate = _mm_read_UBYTE(modreader);
+ pth.volfade = _mm_read_I_UWORD(modreader);
+
+ /* read the remainder of the header
+ (2 bytes for 1.03, 22 for 1.04) */
+ if (headend>=_mm_ftell(modreader)) for(u=headend-_mm_ftell(modreader);u;u--) _mm_read_UBYTE(modreader);
+
+ /* we can't trust the envelope point count here, as some
+ modules have incorrect values (K_OSPACE.XM reports 32 volume
+ points, for example). */
+ if(pth.volpts>XMENVCNT/2) pth.volpts=XMENVCNT/2;
+ if(pth.panpts>XMENVCNT/2) pth.panpts=XMENVCNT/2;
+
+ if((_mm_eof(modreader))||(pth.volpts>XMENVCNT/2)||(pth.panpts>XMENVCNT/2)) {
+ if(nextwav) { free(nextwav);nextwav=NULL; }
+ if(wh) { free(wh);wh=NULL; }
+ _mm_errno = MMERR_LOADING_SAMPLEINFO;
+ return 0;
+ }
+
+ for(u=0;u<XMNOTECNT;u++)
+ d->samplenumber[u]=pth.what[u]+of.numsmp;
+ d->volfade = pth.volfade;
+
+#if defined __STDC__ || defined _MSC_VER
+#define XM_ProcessEnvelope(name) \
+ for (u = 0; u < (XMENVCNT >> 1); u++) { \
+ d-> name##env[u].pos = pth. name##env[u << 1]; \
+ d-> name##env[u].val = pth. name##env[(u << 1)+ 1]; \
+ } \
+ if (pth. name##flg&1) d-> name##flg|=EF_ON; \
+ if (pth. name##flg&2) d-> name##flg|=EF_SUSTAIN; \
+ if (pth. name##flg&4) d-> name##flg|=EF_LOOP; \
+ d-> name##susbeg=d-> name##susend=pth. name##sus; \
+ d-> name##beg=pth. name##beg; \
+ d-> name##end=pth. name##end; \
+ d-> name##pts=pth. name##pts; \
+ \
+ /* scale envelope */ \
+ for (p=0;p<XMENVCNT/2;p++) \
+ d-> name##env[p].val<<=2; \
+ \
+ if ((d-> name##flg&EF_ON)&&(d-> name##pts<2)) \
+ d-> name##flg&=~EF_ON
+#else
+#define XM_ProcessEnvelope(name) \
+ for (u = 0; u < (XMENVCNT >> 1); u++) { \
+ d-> name/**/env[u].pos = pth. name/**/env[u << 1]; \
+ d-> name/**/env[u].val = pth. name/**/env[(u << 1)+ 1]; \
+ } \
+ if (pth. name/**/flg&1) d-> name/**/flg|=EF_ON; \
+ if (pth. name/**/flg&2) d-> name/**/flg|=EF_SUSTAIN; \
+ if (pth. name/**/flg&4) d-> name/**/flg|=EF_LOOP; \
+ d-> name/**/susbeg=d-> name/**/susend= \
+ pth. name/**/sus; \
+ d-> name/**/beg=pth. name/**/beg; \
+ d-> name/**/end=pth. name/**/end; \
+ d-> name/**/pts=pth. name/**/pts; \
+ \
+ /* scale envelope */ \
+ for (p=0;p<XMENVCNT/2;p++) \
+ d-> name/**/env[p].val<<=2; \
+ \
+ if ((d-> name/**/flg&EF_ON)&&(d-> name/**/pts<2)) \
+ d-> name/**/flg&=~EF_ON
+#endif
+
+ XM_ProcessEnvelope(vol);
+ XM_ProcessEnvelope(pan);
+#undef XM_ProcessEnvelope
+
+ if (d->volflg & EF_ON)
+ FixEnvelope(d->volenv, d->volpts);
+ if (d->panflg & EF_ON)
+ FixEnvelope(d->panenv, d->panpts);
+
+ /* Samples are stored outside the instrument struct now, so we
+ have to load them all into a temp area, count the of.numsmp
+ along the way and then do an AllocSamples() and move
+ everything over */
+ if(mh->version>0x0103) next = 0;
+ for(u=0;u<ih.numsmp;u++,s++) {
+ /* Allocate more room for sample information if necessary */
+ if(of.numsmp+u==wavcnt) {
+ wavcnt+=XM_SMPINCR;
+ if(!(nextwav=realloc(nextwav,wavcnt*sizeof(ULONG)))){
+ if(wh) { free(wh);wh=NULL; }
+ _mm_errno = MMERR_OUT_OF_MEMORY;
+ return 0;
+ }
+ if(!(wh=realloc(wh,wavcnt*sizeof(XMWAVHEADER)))) {
+ free(nextwav);nextwav=NULL;
+ _mm_errno = MMERR_OUT_OF_MEMORY;
+ return 0;
+ }
+ s=wh+(wavcnt-XM_SMPINCR);
+ }
+
+ s->length =_mm_read_I_ULONG (modreader);
+ s->loopstart =_mm_read_I_ULONG (modreader);
+ s->looplength =_mm_read_I_ULONG (modreader);
+ s->volume =_mm_read_UBYTE (modreader);
+ s->finetune =_mm_read_SBYTE (modreader);
+ s->type =_mm_read_UBYTE (modreader);
+ s->panning =_mm_read_UBYTE (modreader);
+ s->relnote =_mm_read_SBYTE (modreader);
+ s->vibtype = pth.vibflg;
+ s->vibsweep = pth.vibsweep;
+ s->vibdepth = pth.vibdepth*4;
+ s->vibrate = pth.vibrate;
+ s->reserved =_mm_read_UBYTE (modreader);
+ _mm_read_string(s->samplename, 22, modreader);
+
+ nextwav[of.numsmp+u]=next;
+ next+=s->length;
+
+ if(_mm_eof(modreader)) {
+ free(nextwav);free(wh);
+ nextwav=NULL;wh=NULL;
+ _mm_errno = MMERR_LOADING_SAMPLEINFO;
+ return 0;
+ }
+ }
+
+ if(mh->version>0x0103) {
+ for(u=0;u<ih.numsmp;u++)
+ nextwav[of.numsmp++]+=_mm_ftell(modreader);
+ _mm_fseek(modreader,next,SEEK_CUR);
+ } else
+ of.numsmp+=ih.numsmp;
+ } else {
+ /* read the remainder of the header */
+ ck = _mm_ftell(modreader);
+ _mm_fseek(modreader,0,SEEK_END);
+ if ((headend<0) || (_mm_ftell(modreader)<headend) || (headend<ck)) {
+ _mm_fseek(modreader,ck,SEEK_SET);
+ break;
+ }
+ _mm_fseek(modreader,ck,SEEK_SET);
+ for(u=headend-_mm_ftell(modreader);u;u--) _mm_read_UBYTE(modreader);
+
+ if(_mm_eof(modreader)) {
+ free(nextwav);free(wh);
+ nextwav=NULL;wh=NULL;
+ _mm_errno = MMERR_LOADING_SAMPLEINFO;
+ return 0;
+ }
+ }
+ }
+ }
+
+ /* sanity check */
+ if(!of.numsmp) {
+ if(nextwav) { free(nextwav);nextwav=NULL; }
+ if(wh) { free(wh);wh=NULL; }
+ _mm_errno = MMERR_LOADING_SAMPLEINFO;
+ return 0;
+ }
+
+ return 1;
+}
+
+BOOL XM_Load(BOOL curious)
+{
+ INSTRUMENT *d;
+ SAMPLE *q;
+ int t,u;
+ BOOL dummypat=0;
+ char tracker[21],modtype[60];
+
+ /* try to read module header */
+ _mm_read_string(mh->id,17,modreader);
+ _mm_read_string(mh->songname,21,modreader);
+ _mm_read_string(mh->trackername,20,modreader);
+ mh->version =_mm_read_I_UWORD(modreader);
+ if((mh->version<0x102)||(mh->version>0x104)) {
+ _mm_errno=MMERR_NOT_A_MODULE;
+ return 0;
+ }
+ mh->headersize =_mm_read_I_ULONG(modreader);
+ mh->songlength =_mm_read_I_UWORD(modreader);
+ mh->restart =_mm_read_I_UWORD(modreader);
+ mh->numchn =_mm_read_I_UWORD(modreader);
+ mh->numpat =_mm_read_I_UWORD(modreader);
+ mh->numins =_mm_read_I_UWORD(modreader);
+ mh->flags =_mm_read_I_UWORD(modreader);
+ mh->tempo =_mm_read_I_UWORD(modreader);
+ mh->bpm =_mm_read_I_UWORD(modreader);
+ if(!mh->bpm) {
+ _mm_errno=MMERR_NOT_A_MODULE;
+ return 0;
+ }
+ _mm_read_UBYTES(mh->orders,256,modreader);
+
+ if(_mm_eof(modreader)) {
+ _mm_errno = MMERR_LOADING_HEADER;
+ return 0;
+ }
+
+ /* set module variables */
+ of.initspeed = mh->tempo;
+ of.inittempo = mh->bpm;
+ strncpy(tracker,mh->trackername,20);tracker[20]=0;
+ for(t=20;(tracker[t]<=' ')&&(t>=0);t--) tracker[t]=0;
+
+ /* some modules have the tracker name empty */
+ if (!tracker[0])
+ strcpy(tracker,"Unknown tracker");
+
+#ifdef HAVE_SNPRINTF
+ snprintf(modtype,60,"%s (XM format %d.%02d)",
+ tracker,mh->version>>8,mh->version&0xff);
+#else
+ sprintf(modtype,"%s (XM format %d.%02d)",
+ tracker,mh->version>>8,mh->version&0xff);
+#endif
+ of.modtype = strdup(modtype);
+ of.numchn = mh->numchn;
+ of.numpat = mh->numpat;
+ of.numtrk = (UWORD)of.numpat*of.numchn; /* get number of channels */
+ of.songname = DupStr(mh->songname,20,1);
+ of.numpos = mh->songlength; /* copy the songlength */
+ of.reppos = mh->restart<mh->songlength?mh->restart:0;
+ of.numins = mh->numins;
+ of.flags |= UF_XMPERIODS | UF_INST | UF_NOWRAP | UF_FT2QUIRKS |
+ UF_PANNING;
+ if(mh->flags&1) of.flags |= UF_LINEAR;
+ of.bpmlimit = 32;
+
+ memset(of.chanvol,64,of.numchn); /* store channel volumes */
+
+ if(!AllocPositions(of.numpos+1)) return 0;
+ for(t=0;t<of.numpos;t++)
+ of.positions[t]=mh->orders[t];
+
+ /* We have to check for any pattern numbers in the order list greater than
+ the number of patterns total. If one or more is found, we set it equal to
+ the pattern total and make a dummy pattern to workaround the problem */
+ for(t=0;t<of.numpos;t++) {
+ if(of.positions[t]>=of.numpat) {
+ of.positions[t]=of.numpat;
+ dummypat=1;
+ }
+ }
+ if(dummypat) {
+ of.numpat++;of.numtrk+=of.numchn;
+ }
+
+ if(mh->version<0x0104) {
+ if(!LoadInstruments()) return 0;
+ if(!LoadPatterns(dummypat)) return 0;
+ for(t=0;t<of.numsmp;t++)
+ nextwav[t]+=_mm_ftell(modreader);
+ } else {
+ if(!LoadPatterns(dummypat)) return 0;
+ if(!LoadInstruments()) return 0;
+ }
+
+ if(!AllocSamples()) {
+ free(nextwav);free(wh);
+ nextwav=NULL;wh=NULL;
+ return 0;
+ }
+ q = of.samples;
+ s = wh;
+ for(u=0;u<of.numsmp;u++,q++,s++) {
+ q->samplename = DupStr(s->samplename,22,1);
+ q->length = s->length;
+ q->loopstart = s->loopstart;
+ q->loopend = s->loopstart+s->looplength;
+ q->volume = s->volume;
+ q->speed = s->finetune+128;
+ q->panning = s->panning;
+ q->seekpos = nextwav[u];
+ q->vibtype = s->vibtype;
+ q->vibsweep = s->vibsweep;
+ q->vibdepth = s->vibdepth;
+ q->vibrate = s->vibrate;
+
+ if(s->type & 0x10) {
+ q->length >>= 1;
+ q->loopstart >>= 1;
+ q->loopend >>= 1;
+ }
+
+ q->flags|=SF_OWNPAN|SF_DELTA|SF_SIGNED;
+ if(s->type&0x3) q->flags|=SF_LOOP;
+ if(s->type&0x2) q->flags|=SF_BIDI;
+ if(s->type&0x10) q->flags|=SF_16BITS;
+ }
+
+ d=of.instruments;
+ s=wh;
+ for(u=0;u<of.numins;u++,d++)
+ for(t=0;t<XMNOTECNT;t++) {
+ if (d->samplenumber[t]>=of.numsmp)
+ d->samplenote[t]=255;
+ else {
+ int note=t+s[d->samplenumber[t]].relnote;
+ d->samplenote[t]=(note<0)?0:note;
+ }
+ }
+
+ free(wh);free(nextwav);
+ wh=NULL;nextwav=NULL;
+ return 1;
+}
+
+CHAR *XM_LoadTitle(void)
+{
+ CHAR s[21];
+
+ _mm_fseek(modreader,17,SEEK_SET);
+ if(!_mm_read_UBYTES(s,21,modreader)) return NULL;
+
+ return(DupStr(s,21,1));
+}
+
+/*========== Loader information */
+
+MIKMODAPI MLOADER load_xm={
+ NULL,
+ "XM",
+ "XM (FastTracker 2)",
+ XM_Init,
+ XM_Test,
+ XM_Load,
+ XM_Cleanup,
+ XM_LoadTitle
+};
+
+/* ex:set ts=4: */
diff -urN libmikmod-3.1.11/m4/esd.m4 libmikmod-3.1.12/m4/esd.m4
--- libmikmod-3.1.11/m4/esd.m4 1970-01-01 00:00:00.000000000 +0000
+++ libmikmod-3.1.12/m4/esd.m4 2009-10-20 03:59:17.000000000 +0000
@@ -0,0 +1,168 @@
+##############################################################################
+#
+# --- esd.m4 ---
+#
+# Configure paths for ESD
+# Manish Singh 98-9-30
+# stolen back from Frank Belew
+# stolen from Manish Singh
+# Shamelessly stolen from Owen Taylor
+
+dnl AM_PATH_ESD([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for ESD, and define ESD_CFLAGS and ESD_LIBS
+dnl
+AC_DEFUN([AM_PATH_ESD],
+[dnl
+dnl Get the cflags and libraries from the esd-config script
+dnl
+AC_ARG_WITH(esd-prefix,[ --with-esd-prefix=PFX Prefix where ESD is installed (optional)],
+ esd_prefix="$withval", esd_prefix="")
+AC_ARG_WITH(esd-exec-prefix,[ --with-esd-exec-prefix=PFX Exec prefix where ESD is installed (optional)],
+ esd_exec_prefix="$withval", esd_exec_prefix="")
+AC_ARG_ENABLE(esdtest, [ --disable-esdtest Do not try to compile and run a test ESD program],
+ , enable_esdtest=yes)
+
+ if test x$esd_exec_prefix != x ; then
+ esd_args="$esd_args --exec-prefix=$esd_exec_prefix"
+ if test x${ESD_CONFIG+set} != xset ; then
+ ESD_CONFIG=$esd_exec_prefix/bin/esd-config
+ fi
+ fi
+ if test x$esd_prefix != x ; then
+ esd_args="$esd_args --prefix=$esd_prefix"
+ if test x${ESD_CONFIG+set} != xset ; then
+ ESD_CONFIG=$esd_prefix/bin/esd-config
+ fi
+ fi
+
+ AC_PATH_PROG(ESD_CONFIG, esd-config, no)
+ min_esd_version=ifelse([$1], ,0.2.7,$1)
+ AC_MSG_CHECKING(for ESD - version >= $min_esd_version)
+ no_esd=""
+ if test "$ESD_CONFIG" = "no" ; then
+ no_esd=yes
+ else
+ ESD_CFLAGS=`$ESD_CONFIG $esdconf_args --cflags`
+ ESD_LIBS=`$ESD_CONFIG $esdconf_args --libs`
+
+ esd_major_version=`$ESD_CONFIG $esd_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+ esd_minor_version=`$ESD_CONFIG $esd_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+ esd_micro_version=`$ESD_CONFIG $esd_config_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+ if test "x$enable_esdtest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $ESD_CFLAGS"
+ LIBS="$LIBS $ESD_LIBS"
+dnl
+dnl Now check if the installed ESD is sufficiently new. (Also sanity
+dnl checks the results of esd-config to some extent
+dnl
+ rm -f conf.esdtest
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <esd.h>
+
+char*
+my_strdup (char *str)
+{
+ char *new_str;
+
+ if (str)
+ {
+ new_str = malloc ((strlen (str) + 1) * sizeof(char));
+ strcpy (new_str, str);
+ }
+ else
+ new_str = NULL;
+
+ return new_str;
+}
+
+int main ()
+{
+ int major, minor, micro;
+ char *tmp_version;
+
+ system ("touch conf.esdtest");
+
+ /* HP/UX 9 (%@#!) writes to sscanf strings */
+ tmp_version = my_strdup("$min_esd_version");
+ if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+ printf("%s, bad version string\n", "$min_esd_version");
+ exit(1);
+ }
+
+ if (($esd_major_version > major) ||
+ (($esd_major_version == major) && ($esd_minor_version > minor)) ||
+ (($esd_major_version == major) && ($esd_minor_version == minor) && ($esd_micro_version >= micro)))
+ {
+ return 0;
+ }
+ else
+ {
+ printf("\n*** 'esd-config --version' returned %d.%d.%d, but the minimum version\n", $esd_major_version, $esd_minor_version, $esd_micro_version);
+ printf("*** of ESD required is %d.%d.%d. If esd-config is correct, then it is\n", major, minor, micro);
+ printf("*** best to upgrade to the required version.\n");
+ printf("*** If esd-config was wrong, set the environment variable ESD_CONFIG\n");
+ printf("*** to point to the correct copy of esd-config, and remove the file\n");
+ printf("*** config.cache before re-running configure\n");
+ return 1;
+ }
+}
+
+],, no_esd=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ if test "x$no_esd" = x ; then
+ AC_MSG_RESULT(yes)
+ ifelse([$2], , :, [$2])
+ else
+ AC_MSG_RESULT(no)
+ if test "$ESD_CONFIG" = "no" ; then
+ echo "*** The esd-config script installed by ESD could not be found"
+ echo "*** If ESD was installed in PREFIX, make sure PREFIX/bin is in"
+ echo "*** your path, or set the ESD_CONFIG environment variable to the"
+ echo "*** full path to esd-config."
+ else
+ if test -f conf.esdtest ; then
+ :
+ else
+ echo "*** Could not run ESD test program, checking why..."
+ CFLAGS="$CFLAGS $ESD_CFLAGS"
+ LIBS="$LIBS $ESD_LIBS"
+ AC_TRY_LINK([
+#include <stdio.h>
+#include <esd.h>
+], [ return 0; ],
+ [ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding ESD or finding the wrong"
+ echo "*** version of ESD. If it is not finding ESD, you'll need to set your"
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+ [ echo "*** The test program failed to compile or link. See the file config.log for the"
+ echo "*** exact error that occured. This usually means ESD was incorrectly installed"
+ echo "*** or that you have moved ESD since it was installed. In the latter case, you"
+ echo "*** may want to edit the esd-config script: $ESD_CONFIG" ])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ ESD_CFLAGS=""
+ ESD_LIBS=""
+ ifelse([$3], , :, [$3])
+ fi
+ AC_SUBST(ESD_CFLAGS)
+ AC_SUBST(ESD_LIBS)
+ rm -f conf.esdtest
+])
diff -urN libmikmod-3.1.11/macintosh/mikmod.h libmikmod-3.1.12/macintosh/mikmod.h
--- libmikmod-3.1.11/macintosh/mikmod.h 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/macintosh/mikmod.h 2007-12-15 09:25:42.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: mikmod.h,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: mikmod.h,v 1.1.1.1 2004/06/01 12:16:18 raph Exp $
MikMod sound library include file
Binary files libmikmod-3.1.11/macosx/.DS_Store and libmikmod-3.1.12/macosx/.DS_Store differ
diff -urN libmikmod-3.1.11/macosx/Cocoa Framework-Info.plist libmikmod-3.1.12/macosx/Cocoa Framework-Info.plist
--- libmikmod-3.1.11/macosx/Cocoa Framework-Info.plist 1970-01-01 00:00:00.000000000 +0000
+++ libmikmod-3.1.12/macosx/Cocoa Framework-Info.plist 2009-10-18 04:21:01.000000000 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleGetInfoString</key>
+ <string>libmikmod 3.1.12</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>mikmod</string>
+ <key>CFBundlePackageType</key>
+ <string>FMWK</string>
+ <key>CFBundleShortVersionString</key>
+ <string>3.1.12</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>3.1.12</string>
+</dict>
+</plist>
Binary files libmikmod-3.1.11/macosx/English.lproj/InfoPlist.strings and libmikmod-3.1.12/macosx/English.lproj/InfoPlist.strings differ
diff -urN libmikmod-3.1.11/macosx/config.h libmikmod-3.1.12/macosx/config.h
--- libmikmod-3.1.11/macosx/config.h 1970-01-01 00:00:00.000000000 +0000
+++ libmikmod-3.1.12/macosx/config.h 2009-10-18 04:24:06.000000000 +0000
@@ -0,0 +1,152 @@
+/* config.h. Generated automatically by configure. */
+/* config.h.in. Generated automatically from configure.in by autoheader. */
+
+/* Define if on AIX 3.
+ System headers sometimes define this.
+ We just want to avoid a redefinition error message. */
+#ifndef _ALL_SOURCE
+/* #undef _ALL_SOURCE */
+#endif
+
+/* Define to empty if the keyword does not work. */
+/* #undef const */
+
+/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef pid_t */
+
+/* Define to `unsigned' if <sys/types.h> doesn't define. */
+/* #undef size_t */
+
+/* Define if you have the ANSI C header files. */
+/* #undef STDC_HEADERS */
+
+/* Define if your system supports binary pipes (i.e. Unix) */
+/* #undef DRV_PIPE */
+
+/* Define if the AudioFile driver is compiled */
+/* #undef DRV_AF */
+/* Define if the AIX audio driver is compiled */
+/* #undef DRV_AIX */
+/* Define if the Linux ALSA driver is compiled */
+/* #undef DRV_ALSA */
+/* Define if the Enlightened Sound Daemon driver is compiled */
+/* #undef DRV_ESD */
+/* Define if the HP-UX audio driver is compiled */
+/* #undef DRV_HP */
+/* Define if the Open Sound System driver is compiled */
+/* #undef DRV_OSS */
+/* Define if the Linux SAM9407 driver is compiled */
+/* #undef DRV_SAM9407 */
+/* Define if the SGI audio driver is compiled */
+/* #undef DRV_SGI */
+/* Define if the Sun audio driver or compatible (NetBSD, OpenBSD)
+ is compiled */
+/* #undef DRV_SUN */
+/* Define if the Linux Ultra driver is compiled */
+/* #undef DRV_ULTRA */
+
+/* Define if you want a debug version of the library */
+/* #undef MIKMOD_DEBUG */
+/* Define if you want runtime dynamic linking of ALSA and EsounD drivers */
+#define MIKMOD_DYNAMIC 1
+/* Define if your system provides POSIX.4 threads */
+#define HAVE_PTHREAD 1
+
+/* Define if your system is SunOS 4.* */
+/* #undef SUNOS */
+/* Define if your system is AIX 3.* - might be needed for 4.* too */
+/* #undef AIX */
+/* Define if your system defines random(3) and srandom(3) in math.h instead
+ of stdlib.h */
+/* #undef SRANDOM_IN_MATH_H */
+/* Define if EsounD driver depends on ALSA */
+/* #undef MIKMOD_DYNAMIC_ESD_NEEDS_ALSA */
+/* Define if your system has RTLD_GLOBAL defined in <dlfcn.h> */
+#define HAVE_RTLD_GLOBAL 1
+/* Define if your system needs leading underscore to function names in dlsym() calls */
+/* #undef DLSYM_NEEDS_UNDERSCORE */
+
+/* Define if you have the setenv function. */
+#define HAVE_SETENV 1
+
+/* Define if you have the snprintf function. */
+#define HAVE_SNPRINTF 1
+
+/* Define if you have the srandom function. */
+#define HAVE_SRANDOM 1
+
+/* Define if you have the strcasecmp function. */
+#define HAVE_STRCASECMP 1
+
+/* Define if you have the strdup function. */
+#define HAVE_STRDUP 1
+
+/* Define if you have the strstr function. */
+#define HAVE_STRSTR 1
+
+/* Define if you have the <AF/AFlib.h> header file. */
+/* #undef HAVE_AF_AFLIB_H */
+
+/* Define if you have the <dl.h> header file. */
+/* #undef HAVE_DL_H */
+
+/* Define if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define if you have the <dmedia/audio.h> header file. */
+/* #undef HAVE_DMEDIA_AUDIO_H */
+
+/* Define if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define if you have the <libgus.h> header file. */
+/* #undef HAVE_LIBGUS_H */
+
+/* Define if you have the <machine/soundcard.h> header file. */
+/* #undef HAVE_MACHINE_SOUNDCARD_H */
+
+/* Define if you have the <malloc.h> header file. */
+/* #undef HAVE_MALLOC_H */
+
+/* Define if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define if you have the <sun/audioio.h> header file. */
+/* #undef HAVE_SUN_AUDIOIO_H */
+
+/* Define if you have the <sys/acpa.h> header file. */
+/* #undef HAVE_SYS_ACPA_H */
+
+/* Define if you have the <sys/asoundlib.h> header file. */
+/* #undef HAVE_SYS_ASOUNDLIB_H */
+
+/* Define if you have the <sys/audio.h> header file. */
+/* #undef HAVE_SYS_AUDIO_H */
+
+/* Define if you have the <sys/audioio.h> header file. */
+/* #undef HAVE_SYS_AUDIOIO_H */
+
+/* Define if you have the <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define if you have the <sys/sam9407.h> header file. */
+/* #undef HAVE_SYS_SAM9407_H */
+
+/* Define if you have the <sys/soundcard.h> header file. */
+/* #undef HAVE_SYS_SOUNDCARD_H */
+
+/* Define if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Name of package */
+#define PACKAGE "libmikmod"
+
+/* Version number of package */
+#define VERSION "3.1.10"
+
diff -urN libmikmod-3.1.11/macosx/libmikmod.xcodeproj/project.pbxproj libmikmod-3.1.12/macosx/libmikmod.xcodeproj/project.pbxproj
--- libmikmod-3.1.11/macosx/libmikmod.xcodeproj/project.pbxproj 1970-01-01 00:00:00.000000000 +0000
+++ libmikmod-3.1.12/macosx/libmikmod.xcodeproj/project.pbxproj 2009-10-18 04:24:28.000000000 +0000
@@ -0,0 +1,658 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 45;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 001D90CC108A2A7A006E367C /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = D22905DF09D892EC00A13A9B /* config.h */; };
+ 001D90CD108A2A7A006E367C /* mikmod_build.h in Headers */ = {isa = PBXBuildFile; fileRef = D22905E009D892EC00A13A9B /* mikmod_build.h */; };
+ D229057509D8927100A13A9B /* drv_nos.c in Sources */ = {isa = PBXBuildFile; fileRef = D229057309D8927100A13A9B /* drv_nos.c */; };
+ D229057609D8927100A13A9B /* drv_nos.c in Sources */ = {isa = PBXBuildFile; fileRef = D229057309D8927100A13A9B /* drv_nos.c */; };
+ D229058509D8929600A13A9B /* drv_raw.c in Sources */ = {isa = PBXBuildFile; fileRef = D229058209D8929600A13A9B /* drv_raw.c */; };
+ D229058609D8929600A13A9B /* drv_stdout.c in Sources */ = {isa = PBXBuildFile; fileRef = D229058309D8929600A13A9B /* drv_stdout.c */; };
+ D229058709D8929600A13A9B /* drv_wav.c in Sources */ = {isa = PBXBuildFile; fileRef = D229058409D8929600A13A9B /* drv_wav.c */; };
+ D229058809D8929600A13A9B /* drv_raw.c in Sources */ = {isa = PBXBuildFile; fileRef = D229058209D8929600A13A9B /* drv_raw.c */; };
+ D229058909D8929600A13A9B /* drv_stdout.c in Sources */ = {isa = PBXBuildFile; fileRef = D229058309D8929600A13A9B /* drv_stdout.c */; };
+ D229058A09D8929600A13A9B /* drv_wav.c in Sources */ = {isa = PBXBuildFile; fileRef = D229058409D8929600A13A9B /* drv_wav.c */; };
+ D22905A909D892D800A13A9B /* load_669.c in Sources */ = {isa = PBXBuildFile; fileRef = D229059709D892D800A13A9B /* load_669.c */; };
+ D22905AA09D892D800A13A9B /* load_amf.c in Sources */ = {isa = PBXBuildFile; fileRef = D229059809D892D800A13A9B /* load_amf.c */; };
+ D22905AB09D892D800A13A9B /* load_dsm.c in Sources */ = {isa = PBXBuildFile; fileRef = D229059909D892D800A13A9B /* load_dsm.c */; };
+ D22905AC09D892D800A13A9B /* load_far.c in Sources */ = {isa = PBXBuildFile; fileRef = D229059A09D892D800A13A9B /* load_far.c */; };
+ D22905AD09D892D800A13A9B /* load_gdm.c in Sources */ = {isa = PBXBuildFile; fileRef = D229059B09D892D800A13A9B /* load_gdm.c */; };
+ D22905AE09D892D800A13A9B /* load_imf.c in Sources */ = {isa = PBXBuildFile; fileRef = D229059C09D892D800A13A9B /* load_imf.c */; };
+ D22905AF09D892D800A13A9B /* load_it.c in Sources */ = {isa = PBXBuildFile; fileRef = D229059D09D892D800A13A9B /* load_it.c */; };
+ D22905B009D892D800A13A9B /* load_m15.c in Sources */ = {isa = PBXBuildFile; fileRef = D229059E09D892D800A13A9B /* load_m15.c */; };
+ D22905B109D892D800A13A9B /* load_med.c in Sources */ = {isa = PBXBuildFile; fileRef = D229059F09D892D800A13A9B /* load_med.c */; };
+ D22905B209D892D800A13A9B /* load_mod.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905A009D892D800A13A9B /* load_mod.c */; };
+ D22905B309D892D800A13A9B /* load_mtm.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905A109D892D800A13A9B /* load_mtm.c */; };
+ D22905B409D892D800A13A9B /* load_okt.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905A209D892D800A13A9B /* load_okt.c */; };
+ D22905B509D892D800A13A9B /* load_s3m.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905A309D892D800A13A9B /* load_s3m.c */; };
+ D22905B609D892D800A13A9B /* load_stm.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905A409D892D800A13A9B /* load_stm.c */; };
+ D22905B709D892D800A13A9B /* load_stx.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905A509D892D800A13A9B /* load_stx.c */; };
+ D22905B809D892D800A13A9B /* load_ult.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905A609D892D800A13A9B /* load_ult.c */; };
+ D22905B909D892D800A13A9B /* load_uni.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905A709D892D800A13A9B /* load_uni.c */; };
+ D22905BA09D892D800A13A9B /* load_xm.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905A809D892D800A13A9B /* load_xm.c */; };
+ D22905BB09D892D800A13A9B /* load_669.c in Sources */ = {isa = PBXBuildFile; fileRef = D229059709D892D800A13A9B /* load_669.c */; };
+ D22905BC09D892D800A13A9B /* load_amf.c in Sources */ = {isa = PBXBuildFile; fileRef = D229059809D892D800A13A9B /* load_amf.c */; };
+ D22905BD09D892D800A13A9B /* load_dsm.c in Sources */ = {isa = PBXBuildFile; fileRef = D229059909D892D800A13A9B /* load_dsm.c */; };
+ D22905BE09D892D800A13A9B /* load_far.c in Sources */ = {isa = PBXBuildFile; fileRef = D229059A09D892D800A13A9B /* load_far.c */; };
+ D22905BF09D892D800A13A9B /* load_gdm.c in Sources */ = {isa = PBXBuildFile; fileRef = D229059B09D892D800A13A9B /* load_gdm.c */; };
+ D22905C009D892D800A13A9B /* load_imf.c in Sources */ = {isa = PBXBuildFile; fileRef = D229059C09D892D800A13A9B /* load_imf.c */; };
+ D22905C109D892D800A13A9B /* load_it.c in Sources */ = {isa = PBXBuildFile; fileRef = D229059D09D892D800A13A9B /* load_it.c */; };
+ D22905C209D892D800A13A9B /* load_m15.c in Sources */ = {isa = PBXBuildFile; fileRef = D229059E09D892D800A13A9B /* load_m15.c */; };
+ D22905C309D892D800A13A9B /* load_med.c in Sources */ = {isa = PBXBuildFile; fileRef = D229059F09D892D800A13A9B /* load_med.c */; };
+ D22905C409D892D800A13A9B /* load_mod.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905A009D892D800A13A9B /* load_mod.c */; };
+ D22905C509D892D800A13A9B /* load_mtm.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905A109D892D800A13A9B /* load_mtm.c */; };
+ D22905C609D892D800A13A9B /* load_okt.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905A209D892D800A13A9B /* load_okt.c */; };
+ D22905C709D892D800A13A9B /* load_s3m.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905A309D892D800A13A9B /* load_s3m.c */; };
+ D22905C809D892D800A13A9B /* load_stm.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905A409D892D800A13A9B /* load_stm.c */; };
+ D22905C909D892D800A13A9B /* load_stx.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905A509D892D800A13A9B /* load_stx.c */; };
+ D22905CA09D892D800A13A9B /* load_ult.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905A609D892D800A13A9B /* load_ult.c */; };
+ D22905CB09D892D800A13A9B /* load_uni.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905A709D892D800A13A9B /* load_uni.c */; };
+ D22905CC09D892D800A13A9B /* load_xm.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905A809D892D800A13A9B /* load_xm.c */; };
+ D22905EA09D8930800A13A9B /* mikmod.h in Headers */ = {isa = PBXBuildFile; fileRef = D22905E909D8930800A13A9B /* mikmod.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D22905EB09D8930800A13A9B /* mikmod.h in Headers */ = {isa = PBXBuildFile; fileRef = D22905E909D8930800A13A9B /* mikmod.h */; };
+ D22905F009D8931A00A13A9B /* mmalloc.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905ED09D8931A00A13A9B /* mmalloc.c */; };
+ D22905F109D8931A00A13A9B /* mmerror.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905EE09D8931A00A13A9B /* mmerror.c */; };
+ D22905F209D8931A00A13A9B /* mmio.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905EF09D8931A00A13A9B /* mmio.c */; };
+ D22905F309D8931A00A13A9B /* mmalloc.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905ED09D8931A00A13A9B /* mmalloc.c */; };
+ D22905F409D8931A00A13A9B /* mmerror.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905EE09D8931A00A13A9B /* mmerror.c */; };
+ D22905F509D8931A00A13A9B /* mmio.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905EF09D8931A00A13A9B /* mmio.c */; };
+ D229060709D8933700A13A9B /* mdreg.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905F909D8933700A13A9B /* mdreg.c */; };
+ D229060809D8933700A13A9B /* mdriver.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905FA09D8933700A13A9B /* mdriver.c */; };
+ D229060909D8933700A13A9B /* mdulaw.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905FB09D8933700A13A9B /* mdulaw.c */; };
+ D229060A09D8933700A13A9B /* mloader.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905FC09D8933700A13A9B /* mloader.c */; };
+ D229060B09D8933700A13A9B /* mlreg.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905FD09D8933700A13A9B /* mlreg.c */; };
+ D229060C09D8933700A13A9B /* mlutil.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905FE09D8933700A13A9B /* mlutil.c */; };
+ D229060D09D8933700A13A9B /* mplayer.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905FF09D8933700A13A9B /* mplayer.c */; };
+ D229060E09D8933700A13A9B /* munitrk.c in Sources */ = {isa = PBXBuildFile; fileRef = D229060009D8933700A13A9B /* munitrk.c */; };
+ D229060F09D8933700A13A9B /* mwav.c in Sources */ = {isa = PBXBuildFile; fileRef = D229060109D8933700A13A9B /* mwav.c */; };
+ D229061009D8933700A13A9B /* npertab.c in Sources */ = {isa = PBXBuildFile; fileRef = D229060209D8933700A13A9B /* npertab.c */; };
+ D229061109D8933700A13A9B /* sloader.c in Sources */ = {isa = PBXBuildFile; fileRef = D229060309D8933700A13A9B /* sloader.c */; };
+ D229061209D8933700A13A9B /* virtch_common.c in Sources */ = {isa = PBXBuildFile; fileRef = D229060409D8933700A13A9B /* virtch_common.c */; };
+ D229061309D8933700A13A9B /* virtch.c in Sources */ = {isa = PBXBuildFile; fileRef = D229060509D8933700A13A9B /* virtch.c */; };
+ D229061409D8933700A13A9B /* virtch2.c in Sources */ = {isa = PBXBuildFile; fileRef = D229060609D8933700A13A9B /* virtch2.c */; };
+ D229061509D8933700A13A9B /* mdreg.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905F909D8933700A13A9B /* mdreg.c */; };
+ D229061609D8933700A13A9B /* mdriver.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905FA09D8933700A13A9B /* mdriver.c */; };
+ D229061709D8933700A13A9B /* mdulaw.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905FB09D8933700A13A9B /* mdulaw.c */; };
+ D229061809D8933700A13A9B /* mloader.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905FC09D8933700A13A9B /* mloader.c */; };
+ D229061909D8933700A13A9B /* mlreg.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905FD09D8933700A13A9B /* mlreg.c */; };
+ D229061A09D8933700A13A9B /* mlutil.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905FE09D8933700A13A9B /* mlutil.c */; };
+ D229061B09D8933700A13A9B /* mplayer.c in Sources */ = {isa = PBXBuildFile; fileRef = D22905FF09D8933700A13A9B /* mplayer.c */; };
+ D229061C09D8933700A13A9B /* munitrk.c in Sources */ = {isa = PBXBuildFile; fileRef = D229060009D8933700A13A9B /* munitrk.c */; };
+ D229061D09D8933700A13A9B /* mwav.c in Sources */ = {isa = PBXBuildFile; fileRef = D229060109D8933700A13A9B /* mwav.c */; };
+ D229061E09D8933700A13A9B /* npertab.c in Sources */ = {isa = PBXBuildFile; fileRef = D229060209D8933700A13A9B /* npertab.c */; };
+ D229061F09D8933700A13A9B /* sloader.c in Sources */ = {isa = PBXBuildFile; fileRef = D229060309D8933700A13A9B /* sloader.c */; };
+ D229062009D8933700A13A9B /* virtch_common.c in Sources */ = {isa = PBXBuildFile; fileRef = D229060409D8933700A13A9B /* virtch_common.c */; };
+ D229062109D8933700A13A9B /* virtch.c in Sources */ = {isa = PBXBuildFile; fileRef = D229060509D8933700A13A9B /* virtch.c */; };
+ D229062209D8933700A13A9B /* virtch2.c in Sources */ = {isa = PBXBuildFile; fileRef = D229060609D8933700A13A9B /* virtch2.c */; };
+ D229063B09D893F200A13A9B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D229063909D893F200A13A9B /* InfoPlist.strings */; };
+ D229075009D89B3500A13A9B /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D229074F09D89B3500A13A9B /* CoreAudio.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D229054709D8912600A13A9B /* mikmod.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = mikmod.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D229054809D8912600A13A9B /* Cocoa Framework-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Cocoa Framework-Info.plist"; sourceTree = "<group>"; };
+ D229056F09D8926200A13A9B /* drv_mac.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = drv_mac.c; path = ../drivers/drv_mac.c; sourceTree = SOURCE_ROOT; };
+ D229057309D8927100A13A9B /* drv_nos.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = drv_nos.c; path = ../drivers/drv_nos.c; sourceTree = SOURCE_ROOT; };
+ D229058209D8929600A13A9B /* drv_raw.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = drv_raw.c; path = ../drivers/drv_raw.c; sourceTree = SOURCE_ROOT; };
+ D229058309D8929600A13A9B /* drv_stdout.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = drv_stdout.c; path = ../drivers/drv_stdout.c; sourceTree = SOURCE_ROOT; };
+ D229058409D8929600A13A9B /* drv_wav.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = drv_wav.c; path = ../drivers/drv_wav.c; sourceTree = SOURCE_ROOT; };
+ D229059009D892B500A13A9B /* mikmod_internals.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = mikmod_internals.h; path = ../include/mikmod_internals.h; sourceTree = SOURCE_ROOT; };
+ D229059709D892D800A13A9B /* load_669.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = load_669.c; path = ../loaders/load_669.c; sourceTree = SOURCE_ROOT; };
+ D229059809D892D800A13A9B /* load_amf.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = load_amf.c; path = ../loaders/load_amf.c; sourceTree = SOURCE_ROOT; };
+ D229059909D892D800A13A9B /* load_dsm.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = load_dsm.c; path = ../loaders/load_dsm.c; sourceTree = SOURCE_ROOT; };
+ D229059A09D892D800A13A9B /* load_far.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = load_far.c; path = ../loaders/load_far.c; sourceTree = SOURCE_ROOT; };
+ D229059B09D892D800A13A9B /* load_gdm.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = load_gdm.c; path = ../loaders/load_gdm.c; sourceTree = SOURCE_ROOT; };
+ D229059C09D892D800A13A9B /* load_imf.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = load_imf.c; path = ../loaders/load_imf.c; sourceTree = SOURCE_ROOT; };
+ D229059D09D892D800A13A9B /* load_it.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = load_it.c; path = ../loaders/load_it.c; sourceTree = SOURCE_ROOT; };
+ D229059E09D892D800A13A9B /* load_m15.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = load_m15.c; path = ../loaders/load_m15.c; sourceTree = SOURCE_ROOT; };
+ D229059F09D892D800A13A9B /* load_med.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = load_med.c; path = ../loaders/load_med.c; sourceTree = SOURCE_ROOT; };
+ D22905A009D892D800A13A9B /* load_mod.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = load_mod.c; path = ../loaders/load_mod.c; sourceTree = SOURCE_ROOT; };
+ D22905A109D892D800A13A9B /* load_mtm.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = load_mtm.c; path = ../loaders/load_mtm.c; sourceTree = SOURCE_ROOT; };
+ D22905A209D892D800A13A9B /* load_okt.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = load_okt.c; path = ../loaders/load_okt.c; sourceTree = SOURCE_ROOT; };
+ D22905A309D892D800A13A9B /* load_s3m.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = load_s3m.c; path = ../loaders/load_s3m.c; sourceTree = SOURCE_ROOT; };
+ D22905A409D892D800A13A9B /* load_stm.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = load_stm.c; path = ../loaders/load_stm.c; sourceTree = SOURCE_ROOT; };
+ D22905A509D892D800A13A9B /* load_stx.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = load_stx.c; path = ../loaders/load_stx.c; sourceTree = SOURCE_ROOT; };
+ D22905A609D892D800A13A9B /* load_ult.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = load_ult.c; path = ../loaders/load_ult.c; sourceTree = SOURCE_ROOT; };
+ D22905A709D892D800A13A9B /* load_uni.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = load_uni.c; path = ../loaders/load_uni.c; sourceTree = SOURCE_ROOT; };
+ D22905A809D892D800A13A9B /* load_xm.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = load_xm.c; path = ../loaders/load_xm.c; sourceTree = SOURCE_ROOT; };
+ D22905DF09D892EC00A13A9B /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
+ D22905E009D892EC00A13A9B /* mikmod_build.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = mikmod_build.h; sourceTree = "<group>"; };
+ D22905E909D8930800A13A9B /* mikmod.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = mikmod.h; sourceTree = "<group>"; };
+ D22905ED09D8931A00A13A9B /* mmalloc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = mmalloc.c; path = ../mmio/mmalloc.c; sourceTree = SOURCE_ROOT; };
+ D22905EE09D8931A00A13A9B /* mmerror.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = mmerror.c; path = ../mmio/mmerror.c; sourceTree = SOURCE_ROOT; };
+ D22905EF09D8931A00A13A9B /* mmio.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = mmio.c; path = ../mmio/mmio.c; sourceTree = SOURCE_ROOT; };
+ D22905F909D8933700A13A9B /* mdreg.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = mdreg.c; path = ../playercode/mdreg.c; sourceTree = SOURCE_ROOT; };
+ D22905FA09D8933700A13A9B /* mdriver.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = mdriver.c; path = ../playercode/mdriver.c; sourceTree = SOURCE_ROOT; };
+ D22905FB09D8933700A13A9B /* mdulaw.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = mdulaw.c; path = ../playercode/mdulaw.c; sourceTree = SOURCE_ROOT; };
+ D22905FC09D8933700A13A9B /* mloader.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = mloader.c; path = ../playercode/mloader.c; sourceTree = SOURCE_ROOT; };
+ D22905FD09D8933700A13A9B /* mlreg.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = mlreg.c; path = ../playercode/mlreg.c; sourceTree = SOURCE_ROOT; };
+ D22905FE09D8933700A13A9B /* mlutil.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = mlutil.c; path = ../playercode/mlutil.c; sourceTree = SOURCE_ROOT; };
+ D22905FF09D8933700A13A9B /* mplayer.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = mplayer.c; path = ../playercode/mplayer.c; sourceTree = SOURCE_ROOT; };
+ D229060009D8933700A13A9B /* munitrk.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = munitrk.c; path = ../playercode/munitrk.c; sourceTree = SOURCE_ROOT; };
+ D229060109D8933700A13A9B /* mwav.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = mwav.c; path = ../playercode/mwav.c; sourceTree = SOURCE_ROOT; };
+ D229060209D8933700A13A9B /* npertab.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = npertab.c; path = ../playercode/npertab.c; sourceTree = SOURCE_ROOT; };
+ D229060309D8933700A13A9B /* sloader.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = sloader.c; path = ../playercode/sloader.c; sourceTree = SOURCE_ROOT; };
+ D229060409D8933700A13A9B /* virtch_common.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = virtch_common.c; path = ../playercode/virtch_common.c; sourceTree = SOURCE_ROOT; };
+ D229060509D8933700A13A9B /* virtch.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = virtch.c; path = ../playercode/virtch.c; sourceTree = SOURCE_ROOT; };
+ D229060609D8933700A13A9B /* virtch2.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = virtch2.c; path = ../playercode/virtch2.c; sourceTree = SOURCE_ROOT; };
+ D229063A09D893F200A13A9B /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+ D229074F09D89B3500A13A9B /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = "<absolute>"; };
+ D2AAC046055464E500DB518D /* libmikmod.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libmikmod.a; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D229054509D8912600A13A9B /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D229075009D89B3500A13A9B /* CoreAudio.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ D289987405E68DCB004EDB86 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 08FB7794FE84155DC02AAC07 /* libmikmod */ = {
+ isa = PBXGroup;
+ children = (
+ 08FB7795FE84155DC02AAC07 /* Library */,
+ C6A0FF2B0290797F04C91782 /* Resources */,
+ D229074109D89AD300A13A9B /* External Frameworks and Libraries */,
+ 1AB674ADFE9D54B511CA2CBB /* Products */,
+ D229054809D8912600A13A9B /* Cocoa Framework-Info.plist */,
+ );
+ name = libmikmod;
+ sourceTree = "<group>";
+ };
+ 08FB7795FE84155DC02AAC07 /* Library */ = {
+ isa = PBXGroup;
+ children = (
+ D229055409D891A300A13A9B /* drivers */,
+ D229055509D891A800A13A9B /* include */,
+ D229055609D891AF00A13A9B /* loaders */,
+ D229055709D891B700A13A9B /* macosx */,
+ D229055809D891C000A13A9B /* mmio */,
+ D229055909D891C800A13A9B /* playercode */,
+ );
+ name = Library;
+ sourceTree = "<group>";
+ };
+ 1AB674ADFE9D54B511CA2CBB /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D2AAC046055464E500DB518D /* libmikmod.a */,
+ D229054709D8912600A13A9B /* mikmod.framework */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ C6A0FF2B0290797F04C91782 /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ D229063909D893F200A13A9B /* InfoPlist.strings */,
+ );
+ name = Resources;
+ sourceTree = "<group>";
+ };
+ D229055409D891A300A13A9B /* drivers */ = {
+ isa = PBXGroup;
+ children = (
+ D229056F09D8926200A13A9B /* drv_mac.c */,
+ D229057309D8927100A13A9B /* drv_nos.c */,
+ D229058209D8929600A13A9B /* drv_raw.c */,
+ D229058309D8929600A13A9B /* drv_stdout.c */,
+ D229058409D8929600A13A9B /* drv_wav.c */,
+ );
+ name = drivers;
+ sourceTree = "<group>";
+ };
+ D229055509D891A800A13A9B /* include */ = {
+ isa = PBXGroup;
+ children = (
+ D229059009D892B500A13A9B /* mikmod_internals.h */,
+ );
+ name = include;
+ sourceTree = "<group>";
+ };
+ D229055609D891AF00A13A9B /* loaders */ = {
+ isa = PBXGroup;
+ children = (
+ D229059709D892D800A13A9B /* load_669.c */,
+ D229059809D892D800A13A9B /* load_amf.c */,
+ D229059909D892D800A13A9B /* load_dsm.c */,
+ D229059A09D892D800A13A9B /* load_far.c */,
+ D229059B09D892D800A13A9B /* load_gdm.c */,
+ D229059C09D892D800A13A9B /* load_imf.c */,
+ D229059D09D892D800A13A9B /* load_it.c */,
+ D229059E09D892D800A13A9B /* load_m15.c */,
+ D229059F09D892D800A13A9B /* load_med.c */,
+ D22905A009D892D800A13A9B /* load_mod.c */,
+ D22905A109D892D800A13A9B /* load_mtm.c */,
+ D22905A209D892D800A13A9B /* load_okt.c */,
+ D22905A309D892D800A13A9B /* load_s3m.c */,
+ D22905A409D892D800A13A9B /* load_stm.c */,
+ D22905A509D892D800A13A9B /* load_stx.c */,
+ D22905A609D892D800A13A9B /* load_ult.c */,
+ D22905A709D892D800A13A9B /* load_uni.c */,
+ D22905A809D892D800A13A9B /* load_xm.c */,
+ );
+ name = loaders;
+ sourceTree = "<group>";
+ };
+ D229055709D891B700A13A9B /* macosx */ = {
+ isa = PBXGroup;
+ children = (
+ D22905E909D8930800A13A9B /* mikmod.h */,
+ D22905DF09D892EC00A13A9B /* config.h */,
+ D22905E009D892EC00A13A9B /* mikmod_build.h */,
+ );
+ name = macosx;
+ sourceTree = "<group>";
+ };
+ D229055809D891C000A13A9B /* mmio */ = {
+ isa = PBXGroup;
+ children = (
+ D22905ED09D8931A00A13A9B /* mmalloc.c */,
+ D22905EE09D8931A00A13A9B /* mmerror.c */,
+ D22905EF09D8931A00A13A9B /* mmio.c */,
+ );
+ name = mmio;
+ sourceTree = "<group>";
+ };
+ D229055909D891C800A13A9B /* playercode */ = {
+ isa = PBXGroup;
+ children = (
+ D22905F909D8933700A13A9B /* mdreg.c */,
+ D22905FA09D8933700A13A9B /* mdriver.c */,
+ D22905FB09D8933700A13A9B /* mdulaw.c */,
+ D22905FC09D8933700A13A9B /* mloader.c */,
+ D22905FD09D8933700A13A9B /* mlreg.c */,
+ D22905FE09D8933700A13A9B /* mlutil.c */,
+ D22905FF09D8933700A13A9B /* mplayer.c */,
+ D229060009D8933700A13A9B /* munitrk.c */,
+ D229060109D8933700A13A9B /* mwav.c */,
+ D229060209D8933700A13A9B /* npertab.c */,
+ D229060309D8933700A13A9B /* sloader.c */,
+ D229060409D8933700A13A9B /* virtch_common.c */,
+ D229060509D8933700A13A9B /* virtch.c */,
+ D229060609D8933700A13A9B /* virtch2.c */,
+ );
+ name = playercode;
+ sourceTree = "<group>";
+ };
+ D229074109D89AD300A13A9B /* External Frameworks and Libraries */ = {
+ isa = PBXGroup;
+ children = (
+ D229074F09D89B3500A13A9B /* CoreAudio.framework */,
+ );
+ name = "External Frameworks and Libraries";
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D229054209D8912600A13A9B /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 001D90CC108A2A7A006E367C /* config.h in Headers */,
+ 001D90CD108A2A7A006E367C /* mikmod_build.h in Headers */,
+ D22905EA09D8930800A13A9B /* mikmod.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ D2AAC043055464E500DB518D /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D22905EB09D8930800A13A9B /* mikmod.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D229054609D8912600A13A9B /* mikmod CoreAudio Framework */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D229054909D8912700A13A9B /* Build configuration list for PBXNativeTarget "mikmod CoreAudio Framework" */;
+ buildPhases = (
+ D229054209D8912600A13A9B /* Headers */,
+ D229054309D8912600A13A9B /* Resources */,
+ D229054409D8912600A13A9B /* Sources */,
+ D229054509D8912600A13A9B /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "mikmod CoreAudio Framework";
+ productName = "Cocoa Framework";
+ productReference = D229054709D8912600A13A9B /* mikmod.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+ D2AAC045055464E500DB518D /* mikmod CoreAudio Static Library */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 1DEB91EB08733DB70010E9CD /* Build configuration list for PBXNativeTarget "mikmod CoreAudio Static Library" */;
+ buildPhases = (
+ D2AAC043055464E500DB518D /* Headers */,
+ D2AAC044055464E500DB518D /* Sources */,
+ D289987405E68DCB004EDB86 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "mikmod CoreAudio Static Library";
+ productName = libmikmod;
+ productReference = D2AAC046055464E500DB518D /* libmikmod.a */;
+ productType = "com.apple.product-type.library.static";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 08FB7793FE84155DC02AAC07 /* Project object */ = {
+ isa = PBXProject;
+ buildConfigurationList = 1DEB91EF08733DB70010E9CD /* Build configuration list for PBXProject "libmikmod" */;
+ compatibilityVersion = "Xcode 3.0";
+ hasScannedForEncodings = 1;
+ mainGroup = 08FB7794FE84155DC02AAC07 /* libmikmod */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D229054609D8912600A13A9B /* mikmod CoreAudio Framework */,
+ D2AAC045055464E500DB518D /* mikmod CoreAudio Static Library */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D229054309D8912600A13A9B /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D229063B09D893F200A13A9B /* InfoPlist.strings in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D229054409D8912600A13A9B /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D229057509D8927100A13A9B /* drv_nos.c in Sources */,
+ D229058509D8929600A13A9B /* drv_raw.c in Sources */,
+ D229058609D8929600A13A9B /* drv_stdout.c in Sources */,
+ D229058709D8929600A13A9B /* drv_wav.c in Sources */,
+ D22905A909D892D800A13A9B /* load_669.c in Sources */,
+ D22905AA09D892D800A13A9B /* load_amf.c in Sources */,
+ D22905AB09D892D800A13A9B /* load_dsm.c in Sources */,
+ D22905AC09D892D800A13A9B /* load_far.c in Sources */,
+ D22905AD09D892D800A13A9B /* load_gdm.c in Sources */,
+ D22905AE09D892D800A13A9B /* load_imf.c in Sources */,
+ D22905AF09D892D800A13A9B /* load_it.c in Sources */,
+ D22905B009D892D800A13A9B /* load_m15.c in Sources */,
+ D22905B109D892D800A13A9B /* load_med.c in Sources */,
+ D22905B209D892D800A13A9B /* load_mod.c in Sources */,
+ D22905B309D892D800A13A9B /* load_mtm.c in Sources */,
+ D22905B409D892D800A13A9B /* load_okt.c in Sources */,
+ D22905B509D892D800A13A9B /* load_s3m.c in Sources */,
+ D22905B609D892D800A13A9B /* load_stm.c in Sources */,
+ D22905B709D892D800A13A9B /* load_stx.c in Sources */,
+ D22905B809D892D800A13A9B /* load_ult.c in Sources */,
+ D22905B909D892D800A13A9B /* load_uni.c in Sources */,
+ D22905BA09D892D800A13A9B /* load_xm.c in Sources */,
+ D22905F009D8931A00A13A9B /* mmalloc.c in Sources */,
+ D22905F109D8931A00A13A9B /* mmerror.c in Sources */,
+ D22905F209D8931A00A13A9B /* mmio.c in Sources */,
+ D229060709D8933700A13A9B /* mdreg.c in Sources */,
+ D229060809D8933700A13A9B /* mdriver.c in Sources */,
+ D229060909D8933700A13A9B /* mdulaw.c in Sources */,
+ D229060A09D8933700A13A9B /* mloader.c in Sources */,
+ D229060B09D8933700A13A9B /* mlreg.c in Sources */,
+ D229060C09D8933700A13A9B /* mlutil.c in Sources */,
+ D229060D09D8933700A13A9B /* mplayer.c in Sources */,
+ D229060E09D8933700A13A9B /* munitrk.c in Sources */,
+ D229060F09D8933700A13A9B /* mwav.c in Sources */,
+ D229061009D8933700A13A9B /* npertab.c in Sources */,
+ D229061109D8933700A13A9B /* sloader.c in Sources */,
+ D229061209D8933700A13A9B /* virtch_common.c in Sources */,
+ D229061309D8933700A13A9B /* virtch.c in Sources */,
+ D229061409D8933700A13A9B /* virtch2.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ D2AAC044055464E500DB518D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D229057609D8927100A13A9B /* drv_nos.c in Sources */,
+ D229058809D8929600A13A9B /* drv_raw.c in Sources */,
+ D229058909D8929600A13A9B /* drv_stdout.c in Sources */,
+ D229058A09D8929600A13A9B /* drv_wav.c in Sources */,
+ D22905BB09D892D800A13A9B /* load_669.c in Sources */,
+ D22905BC09D892D800A13A9B /* load_amf.c in Sources */,
+ D22905BD09D892D800A13A9B /* load_dsm.c in Sources */,
+ D22905BE09D892D800A13A9B /* load_far.c in Sources */,
+ D22905BF09D892D800A13A9B /* load_gdm.c in Sources */,
+ D22905C009D892D800A13A9B /* load_imf.c in Sources */,
+ D22905C109D892D800A13A9B /* load_it.c in Sources */,
+ D22905C209D892D800A13A9B /* load_m15.c in Sources */,
+ D22905C309D892D800A13A9B /* load_med.c in Sources */,
+ D22905C409D892D800A13A9B /* load_mod.c in Sources */,
+ D22905C509D892D800A13A9B /* load_mtm.c in Sources */,
+ D22905C609D892D800A13A9B /* load_okt.c in Sources */,
+ D22905C709D892D800A13A9B /* load_s3m.c in Sources */,
+ D22905C809D892D800A13A9B /* load_stm.c in Sources */,
+ D22905C909D892D800A13A9B /* load_stx.c in Sources */,
+ D22905CA09D892D800A13A9B /* load_ult.c in Sources */,
+ D22905CB09D892D800A13A9B /* load_uni.c in Sources */,
+ D22905CC09D892D800A13A9B /* load_xm.c in Sources */,
+ D22905F309D8931A00A13A9B /* mmalloc.c in Sources */,
+ D22905F409D8931A00A13A9B /* mmerror.c in Sources */,
+ D22905F509D8931A00A13A9B /* mmio.c in Sources */,
+ D229061509D8933700A13A9B /* mdreg.c in Sources */,
+ D229061609D8933700A13A9B /* mdriver.c in Sources */,
+ D229061709D8933700A13A9B /* mdulaw.c in Sources */,
+ D229061809D8933700A13A9B /* mloader.c in Sources */,
+ D229061909D8933700A13A9B /* mlreg.c in Sources */,
+ D229061A09D8933700A13A9B /* mlutil.c in Sources */,
+ D229061B09D8933700A13A9B /* mplayer.c in Sources */,
+ D229061C09D8933700A13A9B /* munitrk.c in Sources */,
+ D229061D09D8933700A13A9B /* mwav.c in Sources */,
+ D229061E09D8933700A13A9B /* npertab.c in Sources */,
+ D229061F09D8933700A13A9B /* sloader.c in Sources */,
+ D229062009D8933700A13A9B /* virtch_common.c in Sources */,
+ D229062109D8933700A13A9B /* virtch.c in Sources */,
+ D229062209D8933700A13A9B /* virtch2.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ D229063909D893F200A13A9B /* InfoPlist.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ D229063A09D893F200A13A9B /* English */,
+ );
+ name = InfoPlist.strings;
+ sourceTree = "<group>";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 1DEB91EC08733DB70010E9CD /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
+ GCC_MODEL_TUNING = G5;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ HAVE_CONFIG_H,
+ DRV_OSX,
+ );
+ INSTALL_PATH = /usr/local/lib;
+ PRODUCT_NAME = mikmod;
+ };
+ name = Debug;
+ };
+ 1DEB91ED08733DB70010E9CD /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G5;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ HAVE_CONFIG_H,
+ DRV_OSX,
+ );
+ INSTALL_PATH = /usr/local/lib;
+ PRODUCT_NAME = mikmod;
+ };
+ name = Release;
+ };
+ 1DEB91F008733DB70010E9CD /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+ GCC_OPTIMIZATION_LEVEL = 3;
+ GCC_PREPROCESSOR_DEFINITIONS = HAVE_CONFIG_H;
+ GCC_VERSION = 4.0;
+ "GCC_VERSION[sdk=macosx10.6][arch=x86_64]" = 4.2;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ PREBINDING = NO;
+ SDKROOT = macosx10.4;
+ "SDKROOT[arch=x86_64]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk";
+ };
+ name = Debug;
+ };
+ 1DEB91F108733DB70010E9CD /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+ GCC_OPTIMIZATION_LEVEL = 3;
+ GCC_PREPROCESSOR_DEFINITIONS = HAVE_CONFIG_H;
+ GCC_VERSION = 4.0;
+ "GCC_VERSION[sdk=macosx10.6][arch=x86_64]" = 4.2;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ PREBINDING = NO;
+ SDKROOT = macosx10.4;
+ "SDKROOT[arch=x86_64]" = "$(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk";
+ };
+ name = Release;
+ };
+ D229054A09D8912700A13A9B /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ FRAMEWORK_VERSION = A;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+ GCC_MODEL_TUNING = G5;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PRECOMPILE_PREFIX_HEADER = NO;
+ GCC_PREFIX_HEADER = "";
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ HAVE_CONFIG_H,
+ DRV_OSX,
+ );
+ INFOPLIST_FILE = "Cocoa Framework-Info.plist";
+ INSTALL_PATH = "@loader_path/Frameworks";
+ OTHER_LDFLAGS = (
+ "-headerpad_max_install_names",
+ "-framework",
+ Foundation,
+ "-framework",
+ AppKit,
+ );
+ PREBINDING = NO;
+ PRODUCT_NAME = mikmod;
+ ZERO_LINK = YES;
+ };
+ name = Debug;
+ };
+ D229054B09D8912700A13A9B /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ FRAMEWORK_VERSION = A;
+ GCC_ENABLE_FIX_AND_CONTINUE = NO;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G5;
+ GCC_PRECOMPILE_PREFIX_HEADER = NO;
+ GCC_PREFIX_HEADER = "";
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ HAVE_CONFIG_H,
+ DRV_OSX,
+ );
+ INFOPLIST_FILE = "Cocoa Framework-Info.plist";
+ INSTALL_PATH = "@loader_path/Frameworks";
+ OTHER_LDFLAGS = (
+ "-headerpad_max_install_names",
+ "-framework",
+ Foundation,
+ "-framework",
+ AppKit,
+ );
+ PREBINDING = NO;
+ PRODUCT_NAME = mikmod;
+ ZERO_LINK = NO;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 1DEB91EB08733DB70010E9CD /* Build configuration list for PBXNativeTarget "mikmod CoreAudio Static Library" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1DEB91ED08733DB70010E9CD /* Release */,
+ 1DEB91EC08733DB70010E9CD /* Debug */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 1DEB91EF08733DB70010E9CD /* Build configuration list for PBXProject "libmikmod" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1DEB91F108733DB70010E9CD /* Release */,
+ 1DEB91F008733DB70010E9CD /* Debug */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ D229054909D8912700A13A9B /* Build configuration list for PBXNativeTarget "mikmod CoreAudio Framework" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D229054B09D8912700A13A9B /* Release */,
+ D229054A09D8912700A13A9B /* Debug */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
+}
diff -urN libmikmod-3.1.11/macosx/mikmod.h libmikmod-3.1.12/macosx/mikmod.h
--- libmikmod-3.1.11/macosx/mikmod.h 1970-01-01 00:00:00.000000000 +0000
+++ libmikmod-3.1.12/macosx/mikmod.h 2009-10-18 04:23:10.000000000 +0000
@@ -0,0 +1,717 @@
+/* MikMod sound library
+ (c) 1998, 1999, 2000 Miodrag Vallat and others - see file AUTHORS
+ for complete list.
+
+ This library is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA.
+*/
+
+/*==============================================================================
+
+ $Id: mikmod.h.in,v 1.2 2004/06/01 16:43:45 raph Exp $
+
+ MikMod sound library include file
+
+==============================================================================*/
+
+#ifndef _MIKMOD_H_
+#define _MIKMOD_H_
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * ========== Compiler magic for shared libraries
+ */
+
+#if defined WIN32 && defined _DLL
+#ifdef DLL_EXPORTS
+#define MIKMODAPI __declspec(dllexport)
+#else
+#define MIKMODAPI __declspec(dllimport)
+#endif
+#else
+#define MIKMODAPI
+#endif
+
+/*
+ * ========== Library version
+ */
+
+#define LIBMIKMOD_VERSION_MAJOR 3L
+#define LIBMIKMOD_VERSION_MINOR 1L
+#define LIBMIKMOD_REVISION 10L
+
+#define LIBMIKMOD_VERSION \
+ ((LIBMIKMOD_VERSION_MAJOR<<16)| \
+ (LIBMIKMOD_VERSION_MINOR<< 8)| \
+ (LIBMIKMOD_REVISION))
+
+MIKMODAPI extern long MikMod_GetVersion(void);
+
+/*
+ * ========== Platform independent-type definitions
+ */
+
+#ifdef WIN32
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <io.h>
+#include <mmsystem.h>
+#endif
+
+#if defined(__OS2__)||defined(__EMX__)
+#define INCL_DOSSEMAPHORES
+#include <os2.h>
+#else
+typedef char CHAR;
+#endif
+
+
+
+#if defined(__arch64__) || defined(__alpha) || defined(__x86_64) || defined(_LP64)
+/* 64 bit architectures */
+
+typedef signed char SBYTE; /* 1 byte, signed */
+typedef unsigned char UBYTE; /* 1 byte, unsigned */
+typedef signed short SWORD; /* 2 bytes, signed */
+typedef unsigned short UWORD; /* 2 bytes, unsigned */
+typedef signed int SLONG; /* 4 bytes, signed */
+typedef unsigned int ULONG; /* 4 bytes, unsigned */
+typedef int BOOL; /* 0=false, <>0 true */
+
+#else
+/* 32 bit architectures */
+
+typedef signed char SBYTE; /* 1 byte, signed */
+typedef unsigned char UBYTE; /* 1 byte, unsigned */
+typedef signed short SWORD; /* 2 bytes, signed */
+typedef unsigned short UWORD; /* 2 bytes, unsigned */
+typedef signed long SLONG; /* 4 bytes, signed */
+#if !defined(__OS2__)&&!defined(__EMX__)&&!defined(WIN32)
+typedef unsigned long ULONG; /* 4 bytes, unsigned */
+typedef int BOOL; /* 0=false, <>0 true */
+#endif
+#endif
+
+/*
+ * ========== Error codes
+ */
+
+enum {
+ MMERR_OPENING_FILE = 1,
+ MMERR_OUT_OF_MEMORY,
+ MMERR_DYNAMIC_LINKING,
+
+ MMERR_SAMPLE_TOO_BIG,
+ MMERR_OUT_OF_HANDLES,
+ MMERR_UNKNOWN_WAVE_TYPE,
+
+ MMERR_LOADING_PATTERN,
+ MMERR_LOADING_TRACK,
+ MMERR_LOADING_HEADER,
+ MMERR_LOADING_SAMPLEINFO,
+ MMERR_NOT_A_MODULE,
+ MMERR_NOT_A_STREAM,
+ MMERR_MED_SYNTHSAMPLES,
+ MMERR_ITPACK_INVALID_DATA,
+
+ MMERR_DETECTING_DEVICE,
+ MMERR_INVALID_DEVICE,
+ MMERR_INITIALIZING_MIXER,
+ MMERR_OPENING_AUDIO,
+ MMERR_8BIT_ONLY,
+ MMERR_16BIT_ONLY,
+ MMERR_STEREO_ONLY,
+ MMERR_ULAW,
+ MMERR_NON_BLOCK,
+
+ MMERR_AF_AUDIO_PORT,
+
+ MMERR_AIX_CONFIG_INIT,
+ MMERR_AIX_CONFIG_CONTROL,
+ MMERR_AIX_CONFIG_START,
+
+ MMERR_GUS_SETTINGS,
+ MMERR_GUS_RESET,
+ MMERR_GUS_TIMER,
+
+ MMERR_HP_SETSAMPLESIZE,
+ MMERR_HP_SETSPEED,
+ MMERR_HP_CHANNELS,
+ MMERR_HP_AUDIO_OUTPUT,
+ MMERR_HP_AUDIO_DESC,
+ MMERR_HP_BUFFERSIZE,
+
+ MMERR_OSS_SETFRAGMENT,
+ MMERR_OSS_SETSAMPLESIZE,
+ MMERR_OSS_SETSTEREO,
+ MMERR_OSS_SETSPEED,
+
+ MMERR_SGI_SPEED,
+ MMERR_SGI_16BIT,
+ MMERR_SGI_8BIT,
+ MMERR_SGI_STEREO,
+ MMERR_SGI_MONO,
+
+ MMERR_SUN_INIT,
+
+ MMERR_OS2_MIXSETUP,
+ MMERR_OS2_SEMAPHORE,
+ MMERR_OS2_TIMER,
+ MMERR_OS2_THREAD,
+
+ MMERR_DS_PRIORITY,
+ MMERR_DS_BUFFER,
+ MMERR_DS_FORMAT,
+ MMERR_DS_NOTIFY,
+ MMERR_DS_EVENT,
+ MMERR_DS_THREAD,
+ MMERR_DS_UPDATE,
+
+ MMERR_WINMM_HANDLE,
+ MMERR_WINMM_ALLOCATED,
+ MMERR_WINMM_DEVICEID,
+ MMERR_WINMM_FORMAT,
+ MMERR_WINMM_UNKNOWN,
+
+ MMERR_MAC_SPEED,
+ MMERR_MAC_START,
+
+ MMERR_MAX
+};
+
+/*
+ * ========== Error handling
+ */
+
+typedef void (MikMod_handler)(void);
+typedef MikMod_handler *MikMod_handler_t;
+
+MIKMODAPI extern int MikMod_errno;
+MIKMODAPI extern BOOL MikMod_critical;
+MIKMODAPI extern char *MikMod_strerror(int);
+
+MIKMODAPI extern MikMod_handler_t MikMod_RegisterErrorHandler(MikMod_handler_t);
+
+/*
+ * ========== Library initialization and core functions
+ */
+
+struct MDRIVER;
+
+MIKMODAPI extern void MikMod_RegisterAllDrivers(void);
+
+MIKMODAPI extern CHAR* MikMod_InfoDriver(void);
+MIKMODAPI extern void MikMod_RegisterDriver(struct MDRIVER*);
+MIKMODAPI extern int MikMod_DriverFromAlias(CHAR*);
+
+MIKMODAPI extern BOOL MikMod_Init(CHAR*);
+MIKMODAPI extern void MikMod_Exit(void);
+MIKMODAPI extern BOOL MikMod_Reset(CHAR*);
+MIKMODAPI extern BOOL MikMod_SetNumVoices(int,int);
+MIKMODAPI extern BOOL MikMod_Active(void);
+MIKMODAPI extern BOOL MikMod_EnableOutput(void);
+MIKMODAPI extern void MikMod_DisableOutput(void);
+MIKMODAPI extern void MikMod_Update(void);
+
+MIKMODAPI extern BOOL MikMod_InitThreads(void);
+MIKMODAPI extern void MikMod_Lock(void);
+MIKMODAPI extern void MikMod_Unlock(void);
+
+/*
+ * ========== Reader, Writer
+ */
+
+typedef struct MREADER {
+ BOOL (*Seek)(struct MREADER*,long,int);
+ long (*Tell)(struct MREADER*);
+ BOOL (*Read)(struct MREADER*,void*,size_t);
+ int (*Get)(struct MREADER*);
+ BOOL (*Eof)(struct MREADER*);
+} MREADER;
+
+typedef struct MWRITER {
+ BOOL (*Seek)(struct MWRITER*,long,int);
+ long (*Tell)(struct MWRITER*);
+ BOOL (*Write)(struct MWRITER*,void*,size_t);
+ BOOL (*Put)(struct MWRITER*,int);
+} MWRITER;
+
+/*
+ * ========== Samples
+ */
+
+/* Sample playback should not be interrupted */
+#define SFX_CRITICAL 1
+
+/* Sample format [loading and in-memory] flags: */
+#define SF_16BITS 0x0001
+#define SF_STEREO 0x0002
+#define SF_SIGNED 0x0004
+#define SF_BIG_ENDIAN 0x0008
+#define SF_DELTA 0x0010
+#define SF_ITPACKED 0x0020
+
+#define SF_FORMATMASK 0x003F
+
+/* General Playback flags */
+
+#define SF_LOOP 0x0100
+#define SF_BIDI 0x0200
+#define SF_REVERSE 0x0400
+#define SF_SUSTAIN 0x0800
+
+#define SF_PLAYBACKMASK 0x0C00
+
+/* Module-only Playback Flags */
+
+#define SF_OWNPAN 0x1000
+#define SF_UST_LOOP 0x2000
+
+#define SF_EXTRAPLAYBACKMASK 0x3000
+
+/* Panning constants */
+#define PAN_LEFT 0
+#define PAN_HALFLEFT 64
+#define PAN_CENTER 128
+#define PAN_HALFRIGHT 192
+#define PAN_RIGHT 255
+#define PAN_SURROUND 512 /* panning value for Dolby Surround */
+
+typedef struct SAMPLE {
+ SWORD panning; /* panning (0-255 or PAN_SURROUND) */
+ ULONG speed; /* Base playing speed/frequency of note */
+ UBYTE volume; /* volume 0-64 */
+ UWORD inflags; /* sample format on disk */
+ UWORD flags; /* sample format in memory */
+ ULONG length; /* length of sample (in samples!) */
+ ULONG loopstart; /* repeat position (relative to start, in samples) */
+ ULONG loopend; /* repeat end */
+ ULONG susbegin; /* sustain loop begin (in samples) \ Not Supported */
+ ULONG susend; /* sustain loop end / Yet! */
+
+ /* Variables used by the module player only! (ignored for sound effects) */
+ UBYTE globvol; /* global volume */
+ UBYTE vibflags; /* autovibrato flag stuffs */
+ UBYTE vibtype; /* Vibratos moved from INSTRUMENT to SAMPLE */
+ UBYTE vibsweep;
+ UBYTE vibdepth;
+ UBYTE vibrate;
+ CHAR* samplename; /* name of the sample */
+
+ /* Values used internally only */
+ UWORD avibpos; /* autovibrato pos [player use] */
+ UBYTE divfactor; /* for sample scaling, maintains proper period slides */
+ ULONG seekpos; /* seek position in file */
+ SWORD handle; /* sample handle used by individual drivers */
+} SAMPLE;
+
+/* Sample functions */
+
+MIKMODAPI extern SAMPLE *Sample_Load(CHAR*);
+MIKMODAPI extern SAMPLE *Sample_LoadFP(FILE*);
+MIKMODAPI extern SAMPLE *Sample_LoadGeneric(MREADER*);
+MIKMODAPI extern void Sample_Free(SAMPLE*);
+MIKMODAPI extern SBYTE Sample_Play(SAMPLE*,ULONG,UBYTE);
+
+MIKMODAPI extern void Voice_SetVolume(SBYTE,UWORD);
+MIKMODAPI extern UWORD Voice_GetVolume(SBYTE);
+MIKMODAPI extern void Voice_SetFrequency(SBYTE,ULONG);
+MIKMODAPI extern ULONG Voice_GetFrequency(SBYTE);
+MIKMODAPI extern void Voice_SetPanning(SBYTE,ULONG);
+MIKMODAPI extern ULONG Voice_GetPanning(SBYTE);
+MIKMODAPI extern void Voice_Play(SBYTE,SAMPLE*,ULONG);
+MIKMODAPI extern void Voice_Stop(SBYTE);
+MIKMODAPI extern BOOL Voice_Stopped(SBYTE);
+MIKMODAPI extern SLONG Voice_GetPosition(SBYTE);
+MIKMODAPI extern ULONG Voice_RealVolume(SBYTE);
+
+/*
+ * ========== Internal module representation (UniMod)
+ */
+
+/*
+ Instrument definition - for information only, the only field which may be
+ of use in user programs is the name field
+*/
+
+/* Instrument note count */
+#define INSTNOTES 120
+
+/* Envelope point */
+typedef struct ENVPT {
+ SWORD pos;
+ SWORD val;
+} ENVPT;
+
+/* Envelope point count */
+#define ENVPOINTS 32
+
+/* Instrument structure */
+typedef struct INSTRUMENT {
+ CHAR* insname;
+
+ UBYTE flags;
+ UWORD samplenumber[INSTNOTES];
+ UBYTE samplenote[INSTNOTES];
+
+ UBYTE nnatype;
+ UBYTE dca; /* duplicate check action */
+ UBYTE dct; /* duplicate check type */
+ UBYTE globvol;
+ UWORD volfade;
+ SWORD panning; /* instrument-based panning var */
+
+ UBYTE pitpansep; /* pitch pan separation (0 to 255) */
+ UBYTE pitpancenter; /* pitch pan center (0 to 119) */
+ UBYTE rvolvar; /* random volume varations (0 - 100%) */
+ UBYTE rpanvar; /* random panning varations (0 - 100%) */
+
+ /* volume envelope */
+ UBYTE volflg; /* bit 0: on 1: sustain 2: loop */
+ UBYTE volpts;
+ UBYTE volsusbeg;
+ UBYTE volsusend;
+ UBYTE volbeg;
+ UBYTE volend;
+ ENVPT volenv[ENVPOINTS];
+ /* panning envelope */
+ UBYTE panflg; /* bit 0: on 1: sustain 2: loop */
+ UBYTE panpts;
+ UBYTE pansusbeg;
+ UBYTE pansusend;
+ UBYTE panbeg;
+ UBYTE panend;
+ ENVPT panenv[ENVPOINTS];
+ /* pitch envelope */
+ UBYTE pitflg; /* bit 0: on 1: sustain 2: loop */
+ UBYTE pitpts;
+ UBYTE pitsusbeg;
+ UBYTE pitsusend;
+ UBYTE pitbeg;
+ UBYTE pitend;
+ ENVPT pitenv[ENVPOINTS];
+} INSTRUMENT;
+
+struct MP_CONTROL;
+struct MP_VOICE;
+
+/*
+ Module definition
+*/
+
+/* maximum master channels supported */
+#define UF_MAXCHAN 64
+
+/* Module flags */
+#define UF_XMPERIODS 0x0001 /* XM periods / finetuning */
+#define UF_LINEAR 0x0002 /* LINEAR periods (UF_XMPERIODS must be set) */
+#define UF_INST 0x0004 /* Instruments are used */
+#define UF_NNA 0x0008 /* IT: NNA used, set numvoices rather
+ than numchn */
+#define UF_S3MSLIDES 0x0010 /* uses old S3M volume slides */
+#define UF_BGSLIDES 0x0020 /* continue volume slides in the background */
+#define UF_HIGHBPM 0x0040 /* MED: can use >255 bpm */
+#define UF_NOWRAP 0x0080 /* XM-type (i.e. illogical) pattern break
+ semantics */
+#define UF_ARPMEM 0x0100 /* IT: need arpeggio memory */
+#define UF_FT2QUIRKS 0x0200 /* emulate some FT2 replay quirks */
+#define UF_PANNING 0x0400 /* module uses panning effects or have
+ non-tracker default initial panning */
+
+typedef struct MODULE {
+ /* general module information */
+ CHAR* songname; /* name of the song */
+ CHAR* modtype; /* string type of module loaded */
+ CHAR* comment; /* module comments */
+
+ UWORD flags; /* See module flags above */
+ UBYTE numchn; /* number of module channels */
+ UBYTE numvoices; /* max # voices used for full NNA playback */
+ UWORD numpos; /* number of positions in this song */
+ UWORD numpat; /* number of patterns in this song */
+ UWORD numins; /* number of instruments */
+ UWORD numsmp; /* number of samples */
+struct INSTRUMENT* instruments; /* all instruments */
+struct SAMPLE* samples; /* all samples */
+ UBYTE realchn; /* real number of channels used */
+ UBYTE totalchn; /* total number of channels used (incl NNAs) */
+
+ /* playback settings */
+ UWORD reppos; /* restart position */
+ UBYTE initspeed; /* initial song speed */
+ UWORD inittempo; /* initial song tempo */
+ UBYTE initvolume; /* initial global volume (0 - 128) */
+ UWORD panning[UF_MAXCHAN]; /* panning positions */
+ UBYTE chanvol[UF_MAXCHAN]; /* channel positions */
+ UWORD bpm; /* current beats-per-minute speed */
+ UWORD sngspd; /* current song speed */
+ SWORD volume; /* song volume (0-128) (or user volume) */
+
+ BOOL extspd; /* extended speed flag (default enabled) */
+ BOOL panflag; /* panning flag (default enabled) */
+ BOOL wrap; /* wrap module ? (default disabled) */
+ BOOL loop; /* allow module to loop ? (default enabled) */
+ BOOL fadeout; /* volume fade out during last pattern */
+
+ UWORD patpos; /* current row number */
+ SWORD sngpos; /* current song position */
+ ULONG sngtime; /* current song time in 2^-10 seconds */
+
+ SWORD relspd; /* relative speed factor */
+
+ /* internal module representation */
+ UWORD numtrk; /* number of tracks */
+ UBYTE** tracks; /* array of numtrk pointers to tracks */
+ UWORD* patterns; /* array of Patterns */
+ UWORD* pattrows; /* array of number of rows for each pattern */
+ UWORD* positions; /* all positions */
+
+ BOOL forbid; /* if true, no player update! */
+ UWORD numrow; /* number of rows on current pattern */
+ UWORD vbtick; /* tick counter (counts from 0 to sngspd) */
+ UWORD sngremainder;/* used for song time computation */
+
+struct MP_CONTROL* control; /* Effects Channel info (size pf->numchn) */
+struct MP_VOICE* voice; /* Audio Voice information (size md_numchn) */
+
+ UBYTE globalslide; /* global volume slide rate */
+ UBYTE pat_repcrazy;/* module has just looped to position -1 */
+ UWORD patbrk; /* position where to start a new pattern */
+ UBYTE patdly; /* patterndelay counter (command memory) */
+ UBYTE patdly2; /* patterndelay counter (real one) */
+ SWORD posjmp; /* flag to indicate a jump is needed... */
+ UWORD bpmlimit; /* threshold to detect bpm or speed values */
+} MODULE;
+
+/*
+ * ========== Module loaders
+ */
+
+struct MLOADER;
+
+MIKMODAPI extern CHAR* MikMod_InfoLoader(void);
+MIKMODAPI extern void MikMod_RegisterAllLoaders(void);
+MIKMODAPI extern void MikMod_RegisterLoader(struct MLOADER*);
+
+MIKMODAPI extern struct MLOADER load_669; /* 669 and Extended-669 (by Tran/Renaissance) */
+MIKMODAPI extern struct MLOADER load_amf; /* DMP Advanced Module Format (by Otto Chrons) */
+MIKMODAPI extern struct MLOADER load_dsm; /* DSIK internal module format */
+MIKMODAPI extern struct MLOADER load_far; /* Farandole Composer (by Daniel Potter) */
+MIKMODAPI extern struct MLOADER load_gdm; /* General DigiMusic (by Edward Schlunder) */
+MIKMODAPI extern struct MLOADER load_it; /* Impulse Tracker (by Jeffrey Lim) */
+MIKMODAPI extern struct MLOADER load_imf; /* Imago Orpheus (by Lutz Roeder) */
+MIKMODAPI extern struct MLOADER load_med; /* Amiga MED modules (by Teijo Kinnunen) */
+MIKMODAPI extern struct MLOADER load_m15; /* Soundtracker 15-instrument */
+MIKMODAPI extern struct MLOADER load_mod; /* Standard 31-instrument Module loader */
+MIKMODAPI extern struct MLOADER load_mtm; /* Multi-Tracker Module (by Renaissance) */
+MIKMODAPI extern struct MLOADER load_okt; /* Amiga Oktalyzer */
+MIKMODAPI extern struct MLOADER load_stm; /* ScreamTracker 2 (by Future Crew) */
+MIKMODAPI extern struct MLOADER load_stx; /* STMIK 0.2 (by Future Crew) */
+MIKMODAPI extern struct MLOADER load_s3m; /* ScreamTracker 3 (by Future Crew) */
+MIKMODAPI extern struct MLOADER load_ult; /* UltraTracker (by MAS) */
+MIKMODAPI extern struct MLOADER load_uni; /* MikMod and APlayer internal module format */
+MIKMODAPI extern struct MLOADER load_xm; /* FastTracker 2 (by Triton) */
+
+/*
+ * ========== Module player
+ */
+
+MIKMODAPI extern MODULE* Player_Load(CHAR*,int,BOOL);
+MIKMODAPI extern MODULE* Player_LoadFP(FILE*,int,BOOL);
+MIKMODAPI extern MODULE* Player_LoadGeneric(MREADER*,int,BOOL);
+MIKMODAPI extern CHAR* Player_LoadTitle(CHAR*);
+MIKMODAPI extern CHAR* Player_LoadTitleFP(FILE*);
+MIKMODAPI extern void Player_Free(MODULE*);
+MIKMODAPI extern void Player_Start(MODULE*);
+MIKMODAPI extern BOOL Player_Active(void);
+MIKMODAPI extern void Player_Stop(void);
+MIKMODAPI extern void Player_TogglePause(void);
+MIKMODAPI extern BOOL Player_Paused(void);
+MIKMODAPI extern void Player_NextPosition(void);
+MIKMODAPI extern void Player_PrevPosition(void);
+MIKMODAPI extern void Player_SetPosition(UWORD);
+MIKMODAPI extern BOOL Player_Muted(UBYTE);
+MIKMODAPI extern void Player_SetVolume(SWORD);
+MIKMODAPI extern MODULE* Player_GetModule(void);
+MIKMODAPI extern void Player_SetSpeed(UWORD);
+MIKMODAPI extern void Player_SetTempo(UWORD);
+MIKMODAPI extern void Player_Unmute(SLONG,...);
+MIKMODAPI extern void Player_Mute(SLONG,...);
+MIKMODAPI extern void Player_ToggleMute(SLONG,...);
+MIKMODAPI extern int Player_GetChannelVoice(UBYTE);
+MIKMODAPI extern UWORD Player_GetChannelPeriod(UBYTE);
+
+typedef void (MikMod_player)(void);
+typedef MikMod_player *MikMod_player_t;
+
+MIKMODAPI extern MikMod_player_t MikMod_RegisterPlayer(MikMod_player_t);
+
+#define MUTE_EXCLUSIVE 32000
+#define MUTE_INCLUSIVE 32001
+
+/*
+ * ========== Drivers
+ */
+
+enum {
+ MD_MUSIC = 0,
+ MD_SNDFX
+};
+
+enum {
+ MD_HARDWARE = 0,
+ MD_SOFTWARE
+};
+
+/* Mixing flags */
+
+/* These ones take effect only after MikMod_Init or MikMod_Reset */
+#define DMODE_16BITS 0x0001 /* enable 16 bit output */
+#define DMODE_STEREO 0x0002 /* enable stereo output */
+#define DMODE_SOFT_SNDFX 0x0004 /* Process sound effects via software mixer */
+#define DMODE_SOFT_MUSIC 0x0008 /* Process music via software mixer */
+#define DMODE_HQMIXER 0x0010 /* Use high-quality (slower) software mixer */
+/* These take effect immediately. */
+#define DMODE_SURROUND 0x0100 /* enable surround sound */
+#define DMODE_INTERP 0x0200 /* enable interpolation */
+#define DMODE_REVERSE 0x0400 /* reverse stereo */
+
+struct SAMPLOAD;
+typedef struct MDRIVER {
+struct MDRIVER* next;
+ CHAR* Name;
+ CHAR* Version;
+
+ UBYTE HardVoiceLimit; /* Limit of hardware mixer voices */
+ UBYTE SoftVoiceLimit; /* Limit of software mixer voices */
+
+ CHAR* Alias;
+
+ void (*CommandLine) (CHAR*);
+ BOOL (*IsPresent) (void);
+ SWORD (*SampleLoad) (struct SAMPLOAD*,int);
+ void (*SampleUnload) (SWORD);
+ ULONG (*FreeSampleSpace) (int);
+ ULONG (*RealSampleLength) (int,struct SAMPLE*);
+ BOOL (*Init) (void);
+ void (*Exit) (void);
+ BOOL (*Reset) (void);
+ BOOL (*SetNumVoices) (void);
+ BOOL (*PlayStart) (void);
+ void (*PlayStop) (void);
+ void (*Update) (void);
+ void (*Pause) (void);
+ void (*VoiceSetVolume) (UBYTE,UWORD);
+ UWORD (*VoiceGetVolume) (UBYTE);
+ void (*VoiceSetFrequency)(UBYTE,ULONG);
+ ULONG (*VoiceGetFrequency)(UBYTE);
+ void (*VoiceSetPanning) (UBYTE,ULONG);
+ ULONG (*VoiceGetPanning) (UBYTE);
+ void (*VoicePlay) (UBYTE,SWORD,ULONG,ULONG,ULONG,ULONG,UWORD);
+ void (*VoiceStop) (UBYTE);
+ BOOL (*VoiceStopped) (UBYTE);
+ SLONG (*VoiceGetPosition) (UBYTE);
+ ULONG (*VoiceRealVolume) (UBYTE);
+} MDRIVER;
+
+/* These variables can be changed at ANY time and results will be immediate */
+MIKMODAPI extern UBYTE md_volume; /* global sound volume (0-128) */
+MIKMODAPI extern UBYTE md_musicvolume; /* volume of song */
+MIKMODAPI extern UBYTE md_sndfxvolume; /* volume of sound effects */
+MIKMODAPI extern UBYTE md_reverb; /* 0 = none; 15 = chaos */
+MIKMODAPI extern UBYTE md_pansep; /* 0 = mono; 128 == 100% (full left/right) */
+
+/* The variables below can be changed at any time, but changes will not be
+ implemented until MikMod_Reset is called. A call to MikMod_Reset may result
+ in a skip or pop in audio (depending on the soundcard driver and the settings
+ changed). */
+MIKMODAPI extern UWORD md_device; /* device */
+MIKMODAPI extern UWORD md_mixfreq; /* mixing frequency */
+MIKMODAPI extern UWORD md_mode; /* mode. See DMODE_? flags above */
+
+/* The following variable should not be changed! */
+MIKMODAPI extern MDRIVER* md_driver; /* Current driver in use. */
+
+/* Known drivers list */
+
+MIKMODAPI extern struct MDRIVER drv_nos; /* no sound */
+MIKMODAPI extern struct MDRIVER drv_pipe; /* piped output */
+MIKMODAPI extern struct MDRIVER drv_raw; /* raw file disk writer [music.raw] */
+MIKMODAPI extern struct MDRIVER drv_stdout; /* output to stdout */
+MIKMODAPI extern struct MDRIVER drv_wav; /* RIFF WAVE file disk writer [music.wav] */
+
+MIKMODAPI extern struct MDRIVER drv_ultra; /* Linux Ultrasound driver */
+MIKMODAPI extern struct MDRIVER drv_sam9407; /* Linux sam9407 driver */
+
+MIKMODAPI extern struct MDRIVER drv_AF; /* Dec Alpha AudioFile */
+MIKMODAPI extern struct MDRIVER drv_aix; /* AIX audio device */
+MIKMODAPI extern struct MDRIVER drv_alsa; /* Advanced Linux Sound Architecture (ALSA) */
+MIKMODAPI extern struct MDRIVER drv_esd; /* Enlightened sound daemon (EsounD) */
+MIKMODAPI extern struct MDRIVER drv_hp; /* HP-UX audio device */
+MIKMODAPI extern struct MDRIVER drv_oss; /* OpenSound System (Linux,FreeBSD...) */
+MIKMODAPI extern struct MDRIVER drv_sgi; /* SGI audio library */
+MIKMODAPI extern struct MDRIVER drv_sun; /* Sun/NetBSD/OpenBSD audio device */
+
+MIKMODAPI extern struct MDRIVER drv_dart; /* OS/2 Direct Audio RealTime */
+MIKMODAPI extern struct MDRIVER drv_os2; /* OS/2 MMPM/2 */
+
+MIKMODAPI extern struct MDRIVER drv_ds; /* Win32 DirectSound driver */
+MIKMODAPI extern struct MDRIVER drv_win; /* Win32 multimedia API driver */
+
+MIKMODAPI extern struct MDRIVER drv_mac; /* Macintosh Sound Manager driver */
+
+/*========== Virtual channel mixer interface (for user-supplied drivers only) */
+
+MIKMODAPI extern BOOL VC_Init(void);
+MIKMODAPI extern void VC_Exit(void);
+MIKMODAPI extern BOOL VC_SetNumVoices(void);
+MIKMODAPI extern ULONG VC_SampleSpace(int);
+MIKMODAPI extern ULONG VC_SampleLength(int,SAMPLE*);
+
+MIKMODAPI extern BOOL VC_PlayStart(void);
+MIKMODAPI extern void VC_PlayStop(void);
+
+MIKMODAPI extern SWORD VC_SampleLoad(struct SAMPLOAD*,int);
+MIKMODAPI extern void VC_SampleUnload(SWORD);
+
+MIKMODAPI extern ULONG VC_WriteBytes(SBYTE*,ULONG);
+MIKMODAPI extern ULONG VC_SilenceBytes(SBYTE*,ULONG);
+
+MIKMODAPI extern void VC_VoiceSetVolume(UBYTE,UWORD);
+MIKMODAPI extern UWORD VC_VoiceGetVolume(UBYTE);
+MIKMODAPI extern void VC_VoiceSetFrequency(UBYTE,ULONG);
+MIKMODAPI extern ULONG VC_VoiceGetFrequency(UBYTE);
+MIKMODAPI extern void VC_VoiceSetPanning(UBYTE,ULONG);
+MIKMODAPI extern ULONG VC_VoiceGetPanning(UBYTE);
+MIKMODAPI extern void VC_VoicePlay(UBYTE,SWORD,ULONG,ULONG,ULONG,ULONG,UWORD);
+
+MIKMODAPI extern void VC_VoiceStop(UBYTE);
+MIKMODAPI extern BOOL VC_VoiceStopped(UBYTE);
+MIKMODAPI extern SLONG VC_VoiceGetPosition(UBYTE);
+MIKMODAPI extern ULONG VC_VoiceRealVolume(UBYTE);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* ex:set ts=4: */
diff -urN libmikmod-3.1.11/macosx/mikmod_build.h libmikmod-3.1.12/macosx/mikmod_build.h
--- libmikmod-3.1.11/macosx/mikmod_build.h 1970-01-01 00:00:00.000000000 +0000
+++ libmikmod-3.1.12/macosx/mikmod_build.h 2009-10-18 04:22:56.000000000 +0000
@@ -0,0 +1,717 @@
+/* MikMod sound library
+ (c) 1998, 1999, 2000 Miodrag Vallat and others - see file AUTHORS
+ for complete list.
+
+ This library is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA.
+*/
+
+/*==============================================================================
+
+ $Id: mikmod.h.in,v 1.2 2004/06/01 16:43:45 raph Exp $
+
+ MikMod sound library include file
+
+==============================================================================*/
+
+#ifndef _MIKMOD_H_
+#define _MIKMOD_H_
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * ========== Compiler magic for shared libraries
+ */
+
+#if defined WIN32 && defined _DLL
+#ifdef DLL_EXPORTS
+#define MIKMODAPI __declspec(dllexport)
+#else
+#define MIKMODAPI __declspec(dllimport)
+#endif
+#else
+#define MIKMODAPI
+#endif
+
+/*
+ * ========== Library version
+ */
+
+#define LIBMIKMOD_VERSION_MAJOR 3L
+#define LIBMIKMOD_VERSION_MINOR 1L
+#define LIBMIKMOD_REVISION 10L
+
+#define LIBMIKMOD_VERSION \
+ ((LIBMIKMOD_VERSION_MAJOR<<16)| \
+ (LIBMIKMOD_VERSION_MINOR<< 8)| \
+ (LIBMIKMOD_REVISION))
+
+MIKMODAPI extern long MikMod_GetVersion(void);
+
+/*
+ * ========== Platform independent-type definitions
+ */
+
+#ifdef WIN32
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <io.h>
+#include <mmsystem.h>
+#endif
+
+#if defined(__OS2__)||defined(__EMX__)
+#define INCL_DOSSEMAPHORES
+#include <os2.h>
+#else
+typedef char CHAR;
+#endif
+
+
+
+#if defined(__arch64__) || defined(__alpha) || defined(__x86_64) || defined(_LP64)
+/* 64 bit architectures */
+
+typedef signed char SBYTE; /* 1 byte, signed */
+typedef unsigned char UBYTE; /* 1 byte, unsigned */
+typedef signed short SWORD; /* 2 bytes, signed */
+typedef unsigned short UWORD; /* 2 bytes, unsigned */
+typedef signed int SLONG; /* 4 bytes, signed */
+typedef unsigned int ULONG; /* 4 bytes, unsigned */
+typedef int BOOL; /* 0=false, <>0 true */
+
+#else
+/* 32 bit architectures */
+
+typedef signed char SBYTE; /* 1 byte, signed */
+typedef unsigned char UBYTE; /* 1 byte, unsigned */
+typedef signed short SWORD; /* 2 bytes, signed */
+typedef unsigned short UWORD; /* 2 bytes, unsigned */
+typedef signed long SLONG; /* 4 bytes, signed */
+#if !defined(__OS2__)&&!defined(__EMX__)&&!defined(WIN32)
+typedef unsigned long ULONG; /* 4 bytes, unsigned */
+typedef int BOOL; /* 0=false, <>0 true */
+#endif
+#endif
+
+/*
+ * ========== Error codes
+ */
+
+enum {
+ MMERR_OPENING_FILE = 1,
+ MMERR_OUT_OF_MEMORY,
+ MMERR_DYNAMIC_LINKING,
+
+ MMERR_SAMPLE_TOO_BIG,
+ MMERR_OUT_OF_HANDLES,
+ MMERR_UNKNOWN_WAVE_TYPE,
+
+ MMERR_LOADING_PATTERN,
+ MMERR_LOADING_TRACK,
+ MMERR_LOADING_HEADER,
+ MMERR_LOADING_SAMPLEINFO,
+ MMERR_NOT_A_MODULE,
+ MMERR_NOT_A_STREAM,
+ MMERR_MED_SYNTHSAMPLES,
+ MMERR_ITPACK_INVALID_DATA,
+
+ MMERR_DETECTING_DEVICE,
+ MMERR_INVALID_DEVICE,
+ MMERR_INITIALIZING_MIXER,
+ MMERR_OPENING_AUDIO,
+ MMERR_8BIT_ONLY,
+ MMERR_16BIT_ONLY,
+ MMERR_STEREO_ONLY,
+ MMERR_ULAW,
+ MMERR_NON_BLOCK,
+
+ MMERR_AF_AUDIO_PORT,
+
+ MMERR_AIX_CONFIG_INIT,
+ MMERR_AIX_CONFIG_CONTROL,
+ MMERR_AIX_CONFIG_START,
+
+ MMERR_GUS_SETTINGS,
+ MMERR_GUS_RESET,
+ MMERR_GUS_TIMER,
+
+ MMERR_HP_SETSAMPLESIZE,
+ MMERR_HP_SETSPEED,
+ MMERR_HP_CHANNELS,
+ MMERR_HP_AUDIO_OUTPUT,
+ MMERR_HP_AUDIO_DESC,
+ MMERR_HP_BUFFERSIZE,
+
+ MMERR_OSS_SETFRAGMENT,
+ MMERR_OSS_SETSAMPLESIZE,
+ MMERR_OSS_SETSTEREO,
+ MMERR_OSS_SETSPEED,
+
+ MMERR_SGI_SPEED,
+ MMERR_SGI_16BIT,
+ MMERR_SGI_8BIT,
+ MMERR_SGI_STEREO,
+ MMERR_SGI_MONO,
+
+ MMERR_SUN_INIT,
+
+ MMERR_OS2_MIXSETUP,
+ MMERR_OS2_SEMAPHORE,
+ MMERR_OS2_TIMER,
+ MMERR_OS2_THREAD,
+
+ MMERR_DS_PRIORITY,
+ MMERR_DS_BUFFER,
+ MMERR_DS_FORMAT,
+ MMERR_DS_NOTIFY,
+ MMERR_DS_EVENT,
+ MMERR_DS_THREAD,
+ MMERR_DS_UPDATE,
+
+ MMERR_WINMM_HANDLE,
+ MMERR_WINMM_ALLOCATED,
+ MMERR_WINMM_DEVICEID,
+ MMERR_WINMM_FORMAT,
+ MMERR_WINMM_UNKNOWN,
+
+ MMERR_MAC_SPEED,
+ MMERR_MAC_START,
+
+ MMERR_MAX
+};
+
+/*
+ * ========== Error handling
+ */
+
+typedef void (MikMod_handler)(void);
+typedef MikMod_handler *MikMod_handler_t;
+
+MIKMODAPI extern int MikMod_errno;
+MIKMODAPI extern BOOL MikMod_critical;
+MIKMODAPI extern char *MikMod_strerror(int);
+
+MIKMODAPI extern MikMod_handler_t MikMod_RegisterErrorHandler(MikMod_handler_t);
+
+/*
+ * ========== Library initialization and core functions
+ */
+
+struct MDRIVER;
+
+MIKMODAPI extern void MikMod_RegisterAllDrivers(void);
+
+MIKMODAPI extern CHAR* MikMod_InfoDriver(void);
+MIKMODAPI extern void MikMod_RegisterDriver(struct MDRIVER*);
+MIKMODAPI extern int MikMod_DriverFromAlias(CHAR*);
+
+MIKMODAPI extern BOOL MikMod_Init(CHAR*);
+MIKMODAPI extern void MikMod_Exit(void);
+MIKMODAPI extern BOOL MikMod_Reset(CHAR*);
+MIKMODAPI extern BOOL MikMod_SetNumVoices(int,int);
+MIKMODAPI extern BOOL MikMod_Active(void);
+MIKMODAPI extern BOOL MikMod_EnableOutput(void);
+MIKMODAPI extern void MikMod_DisableOutput(void);
+MIKMODAPI extern void MikMod_Update(void);
+
+MIKMODAPI extern BOOL MikMod_InitThreads(void);
+MIKMODAPI extern void MikMod_Lock(void);
+MIKMODAPI extern void MikMod_Unlock(void);
+
+/*
+ * ========== Reader, Writer
+ */
+
+typedef struct MREADER {
+ BOOL (*Seek)(struct MREADER*,long,int);
+ long (*Tell)(struct MREADER*);
+ BOOL (*Read)(struct MREADER*,void*,size_t);
+ int (*Get)(struct MREADER*);
+ BOOL (*Eof)(struct MREADER*);
+} MREADER;
+
+typedef struct MWRITER {
+ BOOL (*Seek)(struct MWRITER*,long,int);
+ long (*Tell)(struct MWRITER*);
+ BOOL (*Write)(struct MWRITER*,void*,size_t);
+ BOOL (*Put)(struct MWRITER*,int);
+} MWRITER;
+
+/*
+ * ========== Samples
+ */
+
+/* Sample playback should not be interrupted */
+#define SFX_CRITICAL 1
+
+/* Sample format [loading and in-memory] flags: */
+#define SF_16BITS 0x0001
+#define SF_STEREO 0x0002
+#define SF_SIGNED 0x0004
+#define SF_BIG_ENDIAN 0x0008
+#define SF_DELTA 0x0010
+#define SF_ITPACKED 0x0020
+
+#define SF_FORMATMASK 0x003F
+
+/* General Playback flags */
+
+#define SF_LOOP 0x0100
+#define SF_BIDI 0x0200
+#define SF_REVERSE 0x0400
+#define SF_SUSTAIN 0x0800
+
+#define SF_PLAYBACKMASK 0x0C00
+
+/* Module-only Playback Flags */
+
+#define SF_OWNPAN 0x1000
+#define SF_UST_LOOP 0x2000
+
+#define SF_EXTRAPLAYBACKMASK 0x3000
+
+/* Panning constants */
+#define PAN_LEFT 0
+#define PAN_HALFLEFT 64
+#define PAN_CENTER 128
+#define PAN_HALFRIGHT 192
+#define PAN_RIGHT 255
+#define PAN_SURROUND 512 /* panning value for Dolby Surround */
+
+typedef struct SAMPLE {
+ SWORD panning; /* panning (0-255 or PAN_SURROUND) */
+ ULONG speed; /* Base playing speed/frequency of note */
+ UBYTE volume; /* volume 0-64 */
+ UWORD inflags; /* sample format on disk */
+ UWORD flags; /* sample format in memory */
+ ULONG length; /* length of sample (in samples!) */
+ ULONG loopstart; /* repeat position (relative to start, in samples) */
+ ULONG loopend; /* repeat end */
+ ULONG susbegin; /* sustain loop begin (in samples) \ Not Supported */
+ ULONG susend; /* sustain loop end / Yet! */
+
+ /* Variables used by the module player only! (ignored for sound effects) */
+ UBYTE globvol; /* global volume */
+ UBYTE vibflags; /* autovibrato flag stuffs */
+ UBYTE vibtype; /* Vibratos moved from INSTRUMENT to SAMPLE */
+ UBYTE vibsweep;
+ UBYTE vibdepth;
+ UBYTE vibrate;
+ CHAR* samplename; /* name of the sample */
+
+ /* Values used internally only */
+ UWORD avibpos; /* autovibrato pos [player use] */
+ UBYTE divfactor; /* for sample scaling, maintains proper period slides */
+ ULONG seekpos; /* seek position in file */
+ SWORD handle; /* sample handle used by individual drivers */
+} SAMPLE;
+
+/* Sample functions */
+
+MIKMODAPI extern SAMPLE *Sample_Load(CHAR*);
+MIKMODAPI extern SAMPLE *Sample_LoadFP(FILE*);
+MIKMODAPI extern SAMPLE *Sample_LoadGeneric(MREADER*);
+MIKMODAPI extern void Sample_Free(SAMPLE*);
+MIKMODAPI extern SBYTE Sample_Play(SAMPLE*,ULONG,UBYTE);
+
+MIKMODAPI extern void Voice_SetVolume(SBYTE,UWORD);
+MIKMODAPI extern UWORD Voice_GetVolume(SBYTE);
+MIKMODAPI extern void Voice_SetFrequency(SBYTE,ULONG);
+MIKMODAPI extern ULONG Voice_GetFrequency(SBYTE);
+MIKMODAPI extern void Voice_SetPanning(SBYTE,ULONG);
+MIKMODAPI extern ULONG Voice_GetPanning(SBYTE);
+MIKMODAPI extern void Voice_Play(SBYTE,SAMPLE*,ULONG);
+MIKMODAPI extern void Voice_Stop(SBYTE);
+MIKMODAPI extern BOOL Voice_Stopped(SBYTE);
+MIKMODAPI extern SLONG Voice_GetPosition(SBYTE);
+MIKMODAPI extern ULONG Voice_RealVolume(SBYTE);
+
+/*
+ * ========== Internal module representation (UniMod)
+ */
+
+/*
+ Instrument definition - for information only, the only field which may be
+ of use in user programs is the name field
+*/
+
+/* Instrument note count */
+#define INSTNOTES 120
+
+/* Envelope point */
+typedef struct ENVPT {
+ SWORD pos;
+ SWORD val;
+} ENVPT;
+
+/* Envelope point count */
+#define ENVPOINTS 32
+
+/* Instrument structure */
+typedef struct INSTRUMENT {
+ CHAR* insname;
+
+ UBYTE flags;
+ UWORD samplenumber[INSTNOTES];
+ UBYTE samplenote[INSTNOTES];
+
+ UBYTE nnatype;
+ UBYTE dca; /* duplicate check action */
+ UBYTE dct; /* duplicate check type */
+ UBYTE globvol;
+ UWORD volfade;
+ SWORD panning; /* instrument-based panning var */
+
+ UBYTE pitpansep; /* pitch pan separation (0 to 255) */
+ UBYTE pitpancenter; /* pitch pan center (0 to 119) */
+ UBYTE rvolvar; /* random volume varations (0 - 100%) */
+ UBYTE rpanvar; /* random panning varations (0 - 100%) */
+
+ /* volume envelope */
+ UBYTE volflg; /* bit 0: on 1: sustain 2: loop */
+ UBYTE volpts;
+ UBYTE volsusbeg;
+ UBYTE volsusend;
+ UBYTE volbeg;
+ UBYTE volend;
+ ENVPT volenv[ENVPOINTS];
+ /* panning envelope */
+ UBYTE panflg; /* bit 0: on 1: sustain 2: loop */
+ UBYTE panpts;
+ UBYTE pansusbeg;
+ UBYTE pansusend;
+ UBYTE panbeg;
+ UBYTE panend;
+ ENVPT panenv[ENVPOINTS];
+ /* pitch envelope */
+ UBYTE pitflg; /* bit 0: on 1: sustain 2: loop */
+ UBYTE pitpts;
+ UBYTE pitsusbeg;
+ UBYTE pitsusend;
+ UBYTE pitbeg;
+ UBYTE pitend;
+ ENVPT pitenv[ENVPOINTS];
+} INSTRUMENT;
+
+struct MP_CONTROL;
+struct MP_VOICE;
+
+/*
+ Module definition
+*/
+
+/* maximum master channels supported */
+#define UF_MAXCHAN 64
+
+/* Module flags */
+#define UF_XMPERIODS 0x0001 /* XM periods / finetuning */
+#define UF_LINEAR 0x0002 /* LINEAR periods (UF_XMPERIODS must be set) */
+#define UF_INST 0x0004 /* Instruments are used */
+#define UF_NNA 0x0008 /* IT: NNA used, set numvoices rather
+ than numchn */
+#define UF_S3MSLIDES 0x0010 /* uses old S3M volume slides */
+#define UF_BGSLIDES 0x0020 /* continue volume slides in the background */
+#define UF_HIGHBPM 0x0040 /* MED: can use >255 bpm */
+#define UF_NOWRAP 0x0080 /* XM-type (i.e. illogical) pattern break
+ semantics */
+#define UF_ARPMEM 0x0100 /* IT: need arpeggio memory */
+#define UF_FT2QUIRKS 0x0200 /* emulate some FT2 replay quirks */
+#define UF_PANNING 0x0400 /* module uses panning effects or have
+ non-tracker default initial panning */
+
+typedef struct MODULE {
+ /* general module information */
+ CHAR* songname; /* name of the song */
+ CHAR* modtype; /* string type of module loaded */
+ CHAR* comment; /* module comments */
+
+ UWORD flags; /* See module flags above */
+ UBYTE numchn; /* number of module channels */
+ UBYTE numvoices; /* max # voices used for full NNA playback */
+ UWORD numpos; /* number of positions in this song */
+ UWORD numpat; /* number of patterns in this song */
+ UWORD numins; /* number of instruments */
+ UWORD numsmp; /* number of samples */
+struct INSTRUMENT* instruments; /* all instruments */
+struct SAMPLE* samples; /* all samples */
+ UBYTE realchn; /* real number of channels used */
+ UBYTE totalchn; /* total number of channels used (incl NNAs) */
+
+ /* playback settings */
+ UWORD reppos; /* restart position */
+ UBYTE initspeed; /* initial song speed */
+ UWORD inittempo; /* initial song tempo */
+ UBYTE initvolume; /* initial global volume (0 - 128) */
+ UWORD panning[UF_MAXCHAN]; /* panning positions */
+ UBYTE chanvol[UF_MAXCHAN]; /* channel positions */
+ UWORD bpm; /* current beats-per-minute speed */
+ UWORD sngspd; /* current song speed */
+ SWORD volume; /* song volume (0-128) (or user volume) */
+
+ BOOL extspd; /* extended speed flag (default enabled) */
+ BOOL panflag; /* panning flag (default enabled) */
+ BOOL wrap; /* wrap module ? (default disabled) */
+ BOOL loop; /* allow module to loop ? (default enabled) */
+ BOOL fadeout; /* volume fade out during last pattern */
+
+ UWORD patpos; /* current row number */
+ SWORD sngpos; /* current song position */
+ ULONG sngtime; /* current song time in 2^-10 seconds */
+
+ SWORD relspd; /* relative speed factor */
+
+ /* internal module representation */
+ UWORD numtrk; /* number of tracks */
+ UBYTE** tracks; /* array of numtrk pointers to tracks */
+ UWORD* patterns; /* array of Patterns */
+ UWORD* pattrows; /* array of number of rows for each pattern */
+ UWORD* positions; /* all positions */
+
+ BOOL forbid; /* if true, no player update! */
+ UWORD numrow; /* number of rows on current pattern */
+ UWORD vbtick; /* tick counter (counts from 0 to sngspd) */
+ UWORD sngremainder;/* used for song time computation */
+
+struct MP_CONTROL* control; /* Effects Channel info (size pf->numchn) */
+struct MP_VOICE* voice; /* Audio Voice information (size md_numchn) */
+
+ UBYTE globalslide; /* global volume slide rate */
+ UBYTE pat_repcrazy;/* module has just looped to position -1 */
+ UWORD patbrk; /* position where to start a new pattern */
+ UBYTE patdly; /* patterndelay counter (command memory) */
+ UBYTE patdly2; /* patterndelay counter (real one) */
+ SWORD posjmp; /* flag to indicate a jump is needed... */
+ UWORD bpmlimit; /* threshold to detect bpm or speed values */
+} MODULE;
+
+/*
+ * ========== Module loaders
+ */
+
+struct MLOADER;
+
+MIKMODAPI extern CHAR* MikMod_InfoLoader(void);
+MIKMODAPI extern void MikMod_RegisterAllLoaders(void);
+MIKMODAPI extern void MikMod_RegisterLoader(struct MLOADER*);
+
+MIKMODAPI extern struct MLOADER load_669; /* 669 and Extended-669 (by Tran/Renaissance) */
+MIKMODAPI extern struct MLOADER load_amf; /* DMP Advanced Module Format (by Otto Chrons) */
+MIKMODAPI extern struct MLOADER load_dsm; /* DSIK internal module format */
+MIKMODAPI extern struct MLOADER load_far; /* Farandole Composer (by Daniel Potter) */
+MIKMODAPI extern struct MLOADER load_gdm; /* General DigiMusic (by Edward Schlunder) */
+MIKMODAPI extern struct MLOADER load_it; /* Impulse Tracker (by Jeffrey Lim) */
+MIKMODAPI extern struct MLOADER load_imf; /* Imago Orpheus (by Lutz Roeder) */
+MIKMODAPI extern struct MLOADER load_med; /* Amiga MED modules (by Teijo Kinnunen) */
+MIKMODAPI extern struct MLOADER load_m15; /* Soundtracker 15-instrument */
+MIKMODAPI extern struct MLOADER load_mod; /* Standard 31-instrument Module loader */
+MIKMODAPI extern struct MLOADER load_mtm; /* Multi-Tracker Module (by Renaissance) */
+MIKMODAPI extern struct MLOADER load_okt; /* Amiga Oktalyzer */
+MIKMODAPI extern struct MLOADER load_stm; /* ScreamTracker 2 (by Future Crew) */
+MIKMODAPI extern struct MLOADER load_stx; /* STMIK 0.2 (by Future Crew) */
+MIKMODAPI extern struct MLOADER load_s3m; /* ScreamTracker 3 (by Future Crew) */
+MIKMODAPI extern struct MLOADER load_ult; /* UltraTracker (by MAS) */
+MIKMODAPI extern struct MLOADER load_uni; /* MikMod and APlayer internal module format */
+MIKMODAPI extern struct MLOADER load_xm; /* FastTracker 2 (by Triton) */
+
+/*
+ * ========== Module player
+ */
+
+MIKMODAPI extern MODULE* Player_Load(CHAR*,int,BOOL);
+MIKMODAPI extern MODULE* Player_LoadFP(FILE*,int,BOOL);
+MIKMODAPI extern MODULE* Player_LoadGeneric(MREADER*,int,BOOL);
+MIKMODAPI extern CHAR* Player_LoadTitle(CHAR*);
+MIKMODAPI extern CHAR* Player_LoadTitleFP(FILE*);
+MIKMODAPI extern void Player_Free(MODULE*);
+MIKMODAPI extern void Player_Start(MODULE*);
+MIKMODAPI extern BOOL Player_Active(void);
+MIKMODAPI extern void Player_Stop(void);
+MIKMODAPI extern void Player_TogglePause(void);
+MIKMODAPI extern BOOL Player_Paused(void);
+MIKMODAPI extern void Player_NextPosition(void);
+MIKMODAPI extern void Player_PrevPosition(void);
+MIKMODAPI extern void Player_SetPosition(UWORD);
+MIKMODAPI extern BOOL Player_Muted(UBYTE);
+MIKMODAPI extern void Player_SetVolume(SWORD);
+MIKMODAPI extern MODULE* Player_GetModule(void);
+MIKMODAPI extern void Player_SetSpeed(UWORD);
+MIKMODAPI extern void Player_SetTempo(UWORD);
+MIKMODAPI extern void Player_Unmute(SLONG,...);
+MIKMODAPI extern void Player_Mute(SLONG,...);
+MIKMODAPI extern void Player_ToggleMute(SLONG,...);
+MIKMODAPI extern int Player_GetChannelVoice(UBYTE);
+MIKMODAPI extern UWORD Player_GetChannelPeriod(UBYTE);
+
+typedef void (MikMod_player)(void);
+typedef MikMod_player *MikMod_player_t;
+
+MIKMODAPI extern MikMod_player_t MikMod_RegisterPlayer(MikMod_player_t);
+
+#define MUTE_EXCLUSIVE 32000
+#define MUTE_INCLUSIVE 32001
+
+/*
+ * ========== Drivers
+ */
+
+enum {
+ MD_MUSIC = 0,
+ MD_SNDFX
+};
+
+enum {
+ MD_HARDWARE = 0,
+ MD_SOFTWARE
+};
+
+/* Mixing flags */
+
+/* These ones take effect only after MikMod_Init or MikMod_Reset */
+#define DMODE_16BITS 0x0001 /* enable 16 bit output */
+#define DMODE_STEREO 0x0002 /* enable stereo output */
+#define DMODE_SOFT_SNDFX 0x0004 /* Process sound effects via software mixer */
+#define DMODE_SOFT_MUSIC 0x0008 /* Process music via software mixer */
+#define DMODE_HQMIXER 0x0010 /* Use high-quality (slower) software mixer */
+/* These take effect immediately. */
+#define DMODE_SURROUND 0x0100 /* enable surround sound */
+#define DMODE_INTERP 0x0200 /* enable interpolation */
+#define DMODE_REVERSE 0x0400 /* reverse stereo */
+
+struct SAMPLOAD;
+typedef struct MDRIVER {
+struct MDRIVER* next;
+ CHAR* Name;
+ CHAR* Version;
+
+ UBYTE HardVoiceLimit; /* Limit of hardware mixer voices */
+ UBYTE SoftVoiceLimit; /* Limit of software mixer voices */
+
+ CHAR* Alias;
+
+ void (*CommandLine) (CHAR*);
+ BOOL (*IsPresent) (void);
+ SWORD (*SampleLoad) (struct SAMPLOAD*,int);
+ void (*SampleUnload) (SWORD);
+ ULONG (*FreeSampleSpace) (int);
+ ULONG (*RealSampleLength) (int,struct SAMPLE*);
+ BOOL (*Init) (void);
+ void (*Exit) (void);
+ BOOL (*Reset) (void);
+ BOOL (*SetNumVoices) (void);
+ BOOL (*PlayStart) (void);
+ void (*PlayStop) (void);
+ void (*Update) (void);
+ void (*Pause) (void);
+ void (*VoiceSetVolume) (UBYTE,UWORD);
+ UWORD (*VoiceGetVolume) (UBYTE);
+ void (*VoiceSetFrequency)(UBYTE,ULONG);
+ ULONG (*VoiceGetFrequency)(UBYTE);
+ void (*VoiceSetPanning) (UBYTE,ULONG);
+ ULONG (*VoiceGetPanning) (UBYTE);
+ void (*VoicePlay) (UBYTE,SWORD,ULONG,ULONG,ULONG,ULONG,UWORD);
+ void (*VoiceStop) (UBYTE);
+ BOOL (*VoiceStopped) (UBYTE);
+ SLONG (*VoiceGetPosition) (UBYTE);
+ ULONG (*VoiceRealVolume) (UBYTE);
+} MDRIVER;
+
+/* These variables can be changed at ANY time and results will be immediate */
+MIKMODAPI extern UBYTE md_volume; /* global sound volume (0-128) */
+MIKMODAPI extern UBYTE md_musicvolume; /* volume of song */
+MIKMODAPI extern UBYTE md_sndfxvolume; /* volume of sound effects */
+MIKMODAPI extern UBYTE md_reverb; /* 0 = none; 15 = chaos */
+MIKMODAPI extern UBYTE md_pansep; /* 0 = mono; 128 == 100% (full left/right) */
+
+/* The variables below can be changed at any time, but changes will not be
+ implemented until MikMod_Reset is called. A call to MikMod_Reset may result
+ in a skip or pop in audio (depending on the soundcard driver and the settings
+ changed). */
+MIKMODAPI extern UWORD md_device; /* device */
+MIKMODAPI extern UWORD md_mixfreq; /* mixing frequency */
+MIKMODAPI extern UWORD md_mode; /* mode. See DMODE_? flags above */
+
+/* The following variable should not be changed! */
+MIKMODAPI extern MDRIVER* md_driver; /* Current driver in use. */
+
+/* Known drivers list */
+
+MIKMODAPI extern struct MDRIVER drv_nos; /* no sound */
+MIKMODAPI extern struct MDRIVER drv_pipe; /* piped output */
+MIKMODAPI extern struct MDRIVER drv_raw; /* raw file disk writer [music.raw] */
+MIKMODAPI extern struct MDRIVER drv_stdout; /* output to stdout */
+MIKMODAPI extern struct MDRIVER drv_wav; /* RIFF WAVE file disk writer [music.wav] */
+
+MIKMODAPI extern struct MDRIVER drv_ultra; /* Linux Ultrasound driver */
+MIKMODAPI extern struct MDRIVER drv_sam9407; /* Linux sam9407 driver */
+
+MIKMODAPI extern struct MDRIVER drv_AF; /* Dec Alpha AudioFile */
+MIKMODAPI extern struct MDRIVER drv_aix; /* AIX audio device */
+MIKMODAPI extern struct MDRIVER drv_alsa; /* Advanced Linux Sound Architecture (ALSA) */
+MIKMODAPI extern struct MDRIVER drv_esd; /* Enlightened sound daemon (EsounD) */
+MIKMODAPI extern struct MDRIVER drv_hp; /* HP-UX audio device */
+MIKMODAPI extern struct MDRIVER drv_oss; /* OpenSound System (Linux,FreeBSD...) */
+MIKMODAPI extern struct MDRIVER drv_sgi; /* SGI audio library */
+MIKMODAPI extern struct MDRIVER drv_sun; /* Sun/NetBSD/OpenBSD audio device */
+
+MIKMODAPI extern struct MDRIVER drv_dart; /* OS/2 Direct Audio RealTime */
+MIKMODAPI extern struct MDRIVER drv_os2; /* OS/2 MMPM/2 */
+
+MIKMODAPI extern struct MDRIVER drv_ds; /* Win32 DirectSound driver */
+MIKMODAPI extern struct MDRIVER drv_win; /* Win32 multimedia API driver */
+
+MIKMODAPI extern struct MDRIVER drv_mac; /* Macintosh Sound Manager driver */
+
+/*========== Virtual channel mixer interface (for user-supplied drivers only) */
+
+MIKMODAPI extern BOOL VC_Init(void);
+MIKMODAPI extern void VC_Exit(void);
+MIKMODAPI extern BOOL VC_SetNumVoices(void);
+MIKMODAPI extern ULONG VC_SampleSpace(int);
+MIKMODAPI extern ULONG VC_SampleLength(int,SAMPLE*);
+
+MIKMODAPI extern BOOL VC_PlayStart(void);
+MIKMODAPI extern void VC_PlayStop(void);
+
+MIKMODAPI extern SWORD VC_SampleLoad(struct SAMPLOAD*,int);
+MIKMODAPI extern void VC_SampleUnload(SWORD);
+
+MIKMODAPI extern ULONG VC_WriteBytes(SBYTE*,ULONG);
+MIKMODAPI extern ULONG VC_SilenceBytes(SBYTE*,ULONG);
+
+MIKMODAPI extern void VC_VoiceSetVolume(UBYTE,UWORD);
+MIKMODAPI extern UWORD VC_VoiceGetVolume(UBYTE);
+MIKMODAPI extern void VC_VoiceSetFrequency(UBYTE,ULONG);
+MIKMODAPI extern ULONG VC_VoiceGetFrequency(UBYTE);
+MIKMODAPI extern void VC_VoiceSetPanning(UBYTE,ULONG);
+MIKMODAPI extern ULONG VC_VoiceGetPanning(UBYTE);
+MIKMODAPI extern void VC_VoicePlay(UBYTE,SWORD,ULONG,ULONG,ULONG,ULONG,UWORD);
+
+MIKMODAPI extern void VC_VoiceStop(UBYTE);
+MIKMODAPI extern BOOL VC_VoiceStopped(UBYTE);
+MIKMODAPI extern SLONG VC_VoiceGetPosition(UBYTE);
+MIKMODAPI extern ULONG VC_VoiceRealVolume(UBYTE);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* ex:set ts=4: */
diff -urN libmikmod-3.1.11/mkinstalldirs libmikmod-3.1.12/mkinstalldirs
--- libmikmod-3.1.11/mkinstalldirs 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/mkinstalldirs 2007-12-15 09:25:45.000000000 +0000
@@ -4,7 +4,7 @@
# Created: 1993-05-16
# Public domain
-# $Id: mkinstalldirs,v 1.1.1.1 2004/01/21 01:36:34 raph Exp $
+# $Id: mkinstalldirs,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
errstatus=0
diff -urN libmikmod-3.1.11/mmio/mmalloc.c libmikmod-3.1.12/mmio/mmalloc.c
--- libmikmod-3.1.11/mmio/mmalloc.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/mmio/mmalloc.c 2007-12-15 09:25:50.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: mmalloc.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: mmalloc.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Dynamic memory routines
diff -urN libmikmod-3.1.11/mmio/mmerror.c libmikmod-3.1.12/mmio/mmerror.c
--- libmikmod-3.1.11/mmio/mmerror.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/mmio/mmerror.c 2007-12-15 09:25:54.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: mmerror.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: mmerror.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Error handling functions.
Register an error handler with _mm_RegisterErrorHandler() and you're all set.
diff -urN libmikmod-3.1.11/mmio/mmio.c libmikmod-3.1.12/mmio/mmio.c
--- libmikmod-3.1.11/mmio/mmio.c 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/mmio/mmio.c 2007-12-15 09:26:03.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: mmio.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: mmio.c,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Portable file I/O routines
diff -urN libmikmod-3.1.11/os2/configure.cmd libmikmod-3.1.12/os2/configure.cmd
--- libmikmod-3.1.11/os2/configure.cmd 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/os2/configure.cmd 2007-12-15 09:26:06.000000000 +0000
@@ -22,7 +22,7 @@
/*==============================================================================
- $Id: configure.cmd,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: configure.cmd,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
Configuration script for libmikmod under OS/2
diff -urN libmikmod-3.1.11/playercode/mdreg.c libmikmod-3.1.12/playercode/mdreg.c
--- libmikmod-3.1.11/playercode/mdreg.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/playercode/mdreg.c 2007-12-15 09:26:10.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: mdreg.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: mdreg.c,v 1.1.1.1 2004/06/01 12:16:18 raph Exp $
Routine for registering all drivers in libmikmod for the current platform.
diff -urN libmikmod-3.1.11/playercode/mdriver.c libmikmod-3.1.12/playercode/mdriver.c
--- libmikmod-3.1.11/playercode/mdriver.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/playercode/mdriver.c 2007-12-15 09:26:13.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: mdriver.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: mdriver.c,v 1.1.1.1 2004/06/01 12:16:18 raph Exp $
These routines are used to access the available soundcard drivers.
diff -urN libmikmod-3.1.11/playercode/mdulaw.c libmikmod-3.1.12/playercode/mdulaw.c
--- libmikmod-3.1.11/playercode/mdulaw.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/playercode/mdulaw.c 2007-12-15 09:26:15.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: mdulaw.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: mdulaw.c,v 1.1.1.1 2004/06/01 12:16:18 raph Exp $
Mu-law routines
diff -urN libmikmod-3.1.11/playercode/mloader.c libmikmod-3.1.12/playercode/mloader.c
--- libmikmod-3.1.11/playercode/mloader.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/playercode/mloader.c 2009-10-10 11:12:06.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: mloader.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: mloader.c,v 1.1.1.1 2004/06/01 12:16:18 raph Exp $
These routines are used to access the available module loaders
@@ -450,10 +450,12 @@
if (!l->Init || l->Init()) {
_mm_rewind(modreader);
ok = l->Load(curious);
- /* propagate inflags=flags for in-module samples */
- for (t = 0; t < of.numsmp; t++)
- if (of.samples[t].inflags == 0)
- of.samples[t].inflags = of.samples[t].flags;
+ if (ok) {
+ /* propagate inflags=flags for in-module samples */
+ for (t = 0; t < of.numsmp; t++)
+ if (of.samples[t].inflags == 0)
+ of.samples[t].inflags = of.samples[t].flags;
+ }
} else
ok = 0;
diff -urN libmikmod-3.1.11/playercode/mlreg.c libmikmod-3.1.12/playercode/mlreg.c
--- libmikmod-3.1.11/playercode/mlreg.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/playercode/mlreg.c 2007-12-15 09:26:22.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: mlreg.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: mlreg.c,v 1.1.1.1 2004/06/01 12:16:18 raph Exp $
Routine for registering all loaders in libmikmod for the current platform.
diff -urN libmikmod-3.1.11/playercode/mlutil.c libmikmod-3.1.12/playercode/mlutil.c
--- libmikmod-3.1.11/playercode/mlutil.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/playercode/mlutil.c 2007-12-15 12:32:25.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: mlutil.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: mlutil.c,v 1.1.1.2 2007/12/15 15:24:17 denis111 Exp $
Utility functions for the module loader
@@ -60,7 +60,7 @@
SBYTE remap[UF_MAXCHAN]; /* for removing empty channels */
UBYTE* poslookup=NULL; /* lookup table for pattern jumps after blank
pattern removal */
-UBYTE poslookupcnt;
+UWORD poslookupcnt;
UWORD* origpositions=NULL;
BOOL filters; /* resonant filters in use */
diff -urN libmikmod-3.1.11/playercode/mplayer.c libmikmod-3.1.12/playercode/mplayer.c
--- libmikmod-3.1.11/playercode/mplayer.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/playercode/mplayer.c 2009-10-05 08:07:30.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: mplayer.c,v 1.2 2004/01/21 01:41:55 raph Exp $
+ $Id: mplayer.c,v 1.1.1.1 2004/06/01 12:16:18 raph Exp $
The Protracker Player Driver
@@ -52,6 +52,8 @@
will wait */
/*static*/ MODULE *pf = NULL;
+#define NUMVOICES(mod) (md_sngchn < (mod)->numvoices ? md_sngchn : (mod)->numvoices)
+
#define HIGH_OCTAVE 2 /* number of above-range octaves */
static UWORD oldperiods[OCTAVE*2]={
@@ -248,14 +250,14 @@
MP_VOICE *a;
ULONG t,k,tvol,pp;
- for (t=0;t<md_sngchn;t++)
+ for (t=0;t<NUMVOICES(mod);t++)
if (((mod->voice[t].main.kick==KICK_ABSENT)||
(mod->voice[t].main.kick==KICK_ENV))&&
Voice_Stopped_internal(t))
return t;
tvol=0xffffffUL;t=-1;a=mod->voice;
- for (k=0;k<md_sngchn;k++,a++) {
+ for (k=0;k<NUMVOICES(mod);k++,a++) {
/* allow us to take over a nonexisting sample */
if (!a->main.s)
return k;
@@ -2249,12 +2251,12 @@
switch (dat) {
case 0x0: /* past note cut */
- for (t=0;t<md_sngchn;t++)
+ for (t=0;t<NUMVOICES(mod);t++)
if (mod->voice[t].master==a)
mod->voice[t].main.fadevol=0;
break;
case 0x1: /* past note off */
- for (t=0;t<md_sngchn;t++)
+ for (t=0;t<NUMVOICES(mod);t++)
if (mod->voice[t].master==a) {
mod->voice[t].main.keyoff|=KEY_OFF;
if ((!(mod->voice[t].venv.flg & EF_ON))||
@@ -2263,7 +2265,7 @@
}
break;
case 0x2: /* past note fade */
- for (t=0;t<md_sngchn;t++)
+ for (t=0;t<NUMVOICES(mod);t++)
if (mod->voice[t].master==a)
mod->voice[t].main.keyoff|=KEY_FADE;
break;
@@ -2318,7 +2320,7 @@
SAMPLE *s;
mod->totalchn=mod->realchn=0;
- for (channel=0;channel<md_sngchn;channel++) {
+ for (channel=0;channel<NUMVOICES(mod);channel++) {
aout=&mod->voice[channel];
i=aout->main.i;
s=aout->main.s;
@@ -2736,7 +2738,7 @@
if (a->dct!=DCT_OFF) {
int t;
- for (t=0;t<md_sngchn;t++)
+ for (t=0;t<NUMVOICES(mod);t++)
if ((!Voice_Stopped_internal(t))&&
(mod->voice[t].masterchn==channel)&&
(a->main.sample==mod->voice[t].main.sample)) {
@@ -2978,6 +2980,11 @@
if (!(mod->voice=(MP_VOICE*)_mm_calloc(md_sngchn,sizeof(MP_VOICE))))
return 1;
+ /* mod->numvoices was used during loading to clamp md_sngchn.
+ After loading it's used to remember how big mod->voice is.
+ */
+ mod->numvoices = md_sngchn;
+
Player_Init_internal(mod);
return 0;
}
@@ -3012,7 +3019,7 @@
{
MUTEX_LOCK(vars);
if (pf)
- pf->volume=(volume<0)?0:(volume>128)?128:volume;
+ pf->volume=pf->initvolume=(volume<0)?0:(volume>128)?128:volume;
MUTEX_UNLOCK(vars);
}
@@ -3086,7 +3093,7 @@
pf->patbrk=0;
pf->vbtick=pf->sngspd;
- for (t=0;t<md_sngchn;t++) {
+ for (t=0;t<NUMVOICES(pf);t++) {
Voice_Stop_internal(t);
pf->voice[t].main.i=NULL;
pf->voice[t].main.s=NULL;
@@ -3111,7 +3118,7 @@
pf->patbrk=0;
pf->vbtick=pf->sngspd;
- for (t=0;t<md_sngchn;t++) {
+ for (t=0;t<NUMVOICES(pf);t++) {
Voice_Stop_internal(t);
pf->voice[t].main.i=NULL;
pf->voice[t].main.s=NULL;
@@ -3138,7 +3145,7 @@
pf->sngpos=pos;
pf->vbtick=pf->sngspd;
- for (t=0;t<md_sngchn;t++) {
+ for (t=0;t<NUMVOICES(pf);t++) {
Voice_Stop_internal(t);
pf->voice[t].main.i=NULL;
pf->voice[t].main.s=NULL;
diff -urN libmikmod-3.1.11/playercode/munitrk.c libmikmod-3.1.12/playercode/munitrk.c
--- libmikmod-3.1.11/playercode/munitrk.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/playercode/munitrk.c 2007-12-15 09:26:32.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: munitrk.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: munitrk.c,v 1.1.1.1 2004/06/01 12:16:18 raph Exp $
All routines dealing with the manipulation of UNITRK streams
diff -urN libmikmod-3.1.11/playercode/mwav.c libmikmod-3.1.12/playercode/mwav.c
--- libmikmod-3.1.11/playercode/mwav.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/playercode/mwav.c 2007-12-15 09:26:35.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: mwav.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: mwav.c,v 1.1.1.1 2004/06/01 12:16:18 raph Exp $
WAV sample loader
diff -urN libmikmod-3.1.11/playercode/npertab.c libmikmod-3.1.12/playercode/npertab.c
--- libmikmod-3.1.11/playercode/npertab.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/playercode/npertab.c 2007-12-15 09:26:39.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: npertab.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: npertab.c,v 1.1.1.1 2004/06/01 12:16:18 raph Exp $
MOD format period table. Used by both the MOD and M15 (15-inst mod) Loaders.
diff -urN libmikmod-3.1.11/playercode/sloader.c libmikmod-3.1.12/playercode/sloader.c
--- libmikmod-3.1.11/playercode/sloader.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/playercode/sloader.c 2007-12-15 09:26:43.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: sloader.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: sloader.c,v 1.1.1.1 2004/06/01 12:16:18 raph Exp $
Routines for loading samples. The sample loader utilizes the routines
provided by the "registered" sample loader.
diff -urN libmikmod-3.1.11/playercode/virtch.c libmikmod-3.1.12/playercode/virtch.c
--- libmikmod-3.1.11/playercode/virtch.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/playercode/virtch.c 2007-12-15 09:26:46.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: virtch.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: virtch.c,v 1.1.1.1 2004/06/01 12:16:18 raph Exp $
Sample mixing routines, using a 32 bits mixing buffer.
diff -urN libmikmod-3.1.11/playercode/virtch2.c libmikmod-3.1.12/playercode/virtch2.c
--- libmikmod-3.1.11/playercode/virtch2.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/playercode/virtch2.c 2007-12-15 09:26:49.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: virtch2.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: virtch2.c,v 1.1.1.1 2004/06/01 12:16:18 raph Exp $
High-quality sample mixing routines, using a 32 bits mixing buffer,
interpolation, and sample smoothing to improve sound quality and remove
diff -urN libmikmod-3.1.11/playercode/virtch_common.c libmikmod-3.1.12/playercode/virtch_common.c
--- libmikmod-3.1.11/playercode/virtch_common.c 2004-01-21 17:43:53.000000000 +0000
+++ libmikmod-3.1.12/playercode/virtch_common.c 2009-10-05 07:42:37.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: virtch_common.c,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: virtch_common.c,v 1.1.1.1 2004/06/01 12:16:18 raph Exp $
Common source parts between the two software mixers.
This file is probably the ugliest part of libmikmod...
@@ -347,7 +347,7 @@
void VC1_SampleUnload(SWORD handle)
{
- if (handle<MAXSAMPLEHANDLES) {
+ if (Samples && handle<MAXSAMPLEHANDLES) {
if (Samples[handle])
free(Samples[handle]);
Samples[handle]=NULL;
diff -urN libmikmod-3.1.11/win32/mikmod_build.h libmikmod-3.1.12/win32/mikmod_build.h
--- libmikmod-3.1.11/win32/mikmod_build.h 2004-01-21 17:43:52.000000000 +0000
+++ libmikmod-3.1.12/win32/mikmod_build.h 2007-12-15 09:26:57.000000000 +0000
@@ -20,7 +20,7 @@
/*==============================================================================
- $Id: mikmod_build.h,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
+ $Id: mikmod_build.h,v 1.1.1.1 2004/06/01 12:16:17 raph Exp $
MikMod sound library include file