From b94f91ec7e36fa494d24514b113b61d6f6528d66 Mon Sep 17 00:00:00 2001 From: Scott McCreary Date: Wed, 28 Oct 2009 23:31:13 +0000 Subject: [PATCH] Initial .bep, and .OptionalPackageDescription files for libmikmod and a patch that was derived from the patch included in sdl-mixer-1.2.9 tarball, with the config.guess and config.sub parts removed. --- media-libs/libmikmod/libmikmod-3.1.11.bep | 27 + .../libmikmod.OptionalPackageDescription | 5 + .../libmikmod/patches/libmikmod-3.1.11.patch | 4347 +++++++++++++++++ 3 files changed, 4379 insertions(+) create mode 100644 media-libs/libmikmod/libmikmod-3.1.11.bep create mode 100644 media-libs/libmikmod/libmikmod.OptionalPackageDescription create mode 100644 media-libs/libmikmod/patches/libmikmod-3.1.11.patch diff --git a/media-libs/libmikmod/libmikmod-3.1.11.bep b/media-libs/libmikmod/libmikmod-3.1.11.bep new file mode 100644 index 000000000..6557c2195 --- /dev/null +++ b/media-libs/libmikmod/libmikmod-3.1.11.bep @@ -0,0 +1,27 @@ +DESCRIPTION="libmikmod is a lib for playing mod files" +HOMEPAGE="http://mikmod.raphnet.net" +SRC_URI="http://mikmod.raphnet.net/files/libmikmod-3.1.11.tar.gz" +REVISION="1" +STATUS_HAIKU="stable" +DEPEND="" +BUILD { + cd libmikmod-3.1.11 + rm aclocal.m4 + echo "AC_CONFIG_MACRO_DIR([m4])" >> configure.in + libtoolize --force --copy --install + cp /boot/common/share/aclocal/libtool.m4 m4 + cp /boot/common/share/aclocal/ltoptions.m4 m4 + cp /boot/common/share/aclocal/ltversion.m4 m4 + cp /boot/common/share/aclocal/ltsugar.m4 m4 + cp /boot/common/share/aclocal/lt~obsolete.m4 m4 + aclocal -I m4 + autoconf + automake --add-missing + ./configure --prefix=/boot/common + make +} + +INSTALL { + cd libmikmod-3.1.11 + make install +} diff --git a/media-libs/libmikmod/libmikmod.OptionalPackageDescription b/media-libs/libmikmod/libmikmod.OptionalPackageDescription new file mode 100644 index 000000000..806cc85eb --- /dev/null +++ b/media-libs/libmikmod/libmikmod.OptionalPackageDescription @@ -0,0 +1,5 @@ +Package: libmikmod +Version: 3.1.11 +Copyright: 2003-2004 Jean-Paul Mikkers +License: GNU LGPL v2.1 +URL: http://mikmod.raphnet.net diff --git a/media-libs/libmikmod/patches/libmikmod-3.1.11.patch b/media-libs/libmikmod/patches/libmikmod-3.1.11.patch new file mode 100644 index 000000000..f3a120288 --- /dev/null +++ b/media-libs/libmikmod/patches/libmikmod-3.1.11.patch @@ -0,0 +1,4347 @@ +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)=_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)version<0x0104 || t ++#endif ++ ++#include ++#ifdef HAVE_MEMORY_H ++#include ++#endif ++#include ++ ++#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;tnote; ++ 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;tnumpat;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;upos; ++ ++ 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;tsamplenumber,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)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;usamplenumber[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 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 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;ulength =_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;uid,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->restartsonglength?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;torders[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.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;tsamplename = 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;usamplenumber[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 ++#include ++#include ++#include ++ ++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, µ) != 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 ++#include ++], [ 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 @@ ++ ++ ++ ++ ++ CFBundleDevelopmentRegion ++ English ++ CFBundleExecutable ++ ${EXECUTABLE_NAME} ++ CFBundleGetInfoString ++ libmikmod 3.1.12 ++ CFBundleInfoDictionaryVersion ++ 6.0 ++ CFBundleName ++ mikmod ++ CFBundlePackageType ++ FMWK ++ CFBundleShortVersionString ++ 3.1.12 ++ CFBundleSignature ++ ???? ++ CFBundleVersion ++ 3.1.12 ++ ++ +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 that is POSIX.1 compatible. */ ++#define HAVE_SYS_WAIT_H 1 ++ ++/* Define to `int' if doesn't define. */ ++/* #undef pid_t */ ++ ++/* Define to `unsigned' if 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 */ ++#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 header file. */ ++/* #undef HAVE_AF_AFLIB_H */ ++ ++/* Define if you have the header file. */ ++/* #undef HAVE_DL_H */ ++ ++/* Define if you have the header file. */ ++#define HAVE_DLFCN_H 1 ++ ++/* Define if you have the header file. */ ++/* #undef HAVE_DMEDIA_AUDIO_H */ ++ ++/* Define if you have the header file. */ ++#define HAVE_FCNTL_H 1 ++ ++/* Define if you have the header file. */ ++/* #undef HAVE_LIBGUS_H */ ++ ++/* Define if you have the header file. */ ++/* #undef HAVE_MACHINE_SOUNDCARD_H */ ++ ++/* Define if you have the header file. */ ++/* #undef HAVE_MALLOC_H */ ++ ++/* Define if you have the header file. */ ++#define HAVE_MEMORY_H 1 ++ ++/* Define if you have the header file. */ ++#define HAVE_STRINGS_H 1 ++ ++/* Define if you have the header file. */ ++/* #undef HAVE_SUN_AUDIOIO_H */ ++ ++/* Define if you have the header file. */ ++/* #undef HAVE_SYS_ACPA_H */ ++ ++/* Define if you have the header file. */ ++/* #undef HAVE_SYS_ASOUNDLIB_H */ ++ ++/* Define if you have the header file. */ ++/* #undef HAVE_SYS_AUDIO_H */ ++ ++/* Define if you have the header file. */ ++/* #undef HAVE_SYS_AUDIOIO_H */ ++ ++/* Define if you have the header file. */ ++#define HAVE_SYS_IOCTL_H 1 ++ ++/* Define if you have the header file. */ ++/* #undef HAVE_SYS_SAM9407_H */ ++ ++/* Define if you have the header file. */ ++/* #undef HAVE_SYS_SOUNDCARD_H */ ++ ++/* Define if you have the 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 = ""; }; ++ 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 = ""; }; ++ D22905E009D892EC00A13A9B /* mikmod_build.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = mikmod_build.h; sourceTree = ""; }; ++ D22905E909D8930800A13A9B /* mikmod.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = mikmod.h; sourceTree = ""; }; ++ 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 = ""; }; ++ D229074F09D89B3500A13A9B /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; ++ 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 = ""; ++ }; ++ 08FB7795FE84155DC02AAC07 /* Library */ = { ++ isa = PBXGroup; ++ children = ( ++ D229055409D891A300A13A9B /* drivers */, ++ D229055509D891A800A13A9B /* include */, ++ D229055609D891AF00A13A9B /* loaders */, ++ D229055709D891B700A13A9B /* macosx */, ++ D229055809D891C000A13A9B /* mmio */, ++ D229055909D891C800A13A9B /* playercode */, ++ ); ++ name = Library; ++ sourceTree = ""; ++ }; ++ 1AB674ADFE9D54B511CA2CBB /* Products */ = { ++ isa = PBXGroup; ++ children = ( ++ D2AAC046055464E500DB518D /* libmikmod.a */, ++ D229054709D8912600A13A9B /* mikmod.framework */, ++ ); ++ name = Products; ++ sourceTree = ""; ++ }; ++ C6A0FF2B0290797F04C91782 /* Resources */ = { ++ isa = PBXGroup; ++ children = ( ++ D229063909D893F200A13A9B /* InfoPlist.strings */, ++ ); ++ name = Resources; ++ sourceTree = ""; ++ }; ++ 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 = ""; ++ }; ++ D229055509D891A800A13A9B /* include */ = { ++ isa = PBXGroup; ++ children = ( ++ D229059009D892B500A13A9B /* mikmod_internals.h */, ++ ); ++ name = include; ++ sourceTree = ""; ++ }; ++ 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 = ""; ++ }; ++ D229055709D891B700A13A9B /* macosx */ = { ++ isa = PBXGroup; ++ children = ( ++ D22905E909D8930800A13A9B /* mikmod.h */, ++ D22905DF09D892EC00A13A9B /* config.h */, ++ D22905E009D892EC00A13A9B /* mikmod_build.h */, ++ ); ++ name = macosx; ++ sourceTree = ""; ++ }; ++ D229055809D891C000A13A9B /* mmio */ = { ++ isa = PBXGroup; ++ children = ( ++ D22905ED09D8931A00A13A9B /* mmalloc.c */, ++ D22905EE09D8931A00A13A9B /* mmerror.c */, ++ D22905EF09D8931A00A13A9B /* mmio.c */, ++ ); ++ name = mmio; ++ sourceTree = ""; ++ }; ++ 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 = ""; ++ }; ++ D229074109D89AD300A13A9B /* External Frameworks and Libraries */ = { ++ isa = PBXGroup; ++ children = ( ++ D229074F09D89B3500A13A9B /* CoreAudio.framework */, ++ ); ++ name = "External Frameworks and Libraries"; ++ sourceTree = ""; ++ }; ++/* 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 = ""; ++ }; ++/* 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 ++#include ++ ++#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 ++#include ++#include ++#endif ++ ++#if defined(__OS2__)||defined(__EMX__) ++#define INCL_DOSSEMAPHORES ++#include ++#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 ++#include ++ ++#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 ++#include ++#include ++#endif ++ ++#if defined(__OS2__)||defined(__EMX__) ++#define INCL_DOSSEMAPHORES ++#include ++#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;tvoice[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;kmain.s) + return k; +@@ -2249,12 +2251,12 @@ + + switch (dat) { + case 0x0: /* past note cut */ +- for (t=0;tvoice[t].master==a) + mod->voice[t].main.fadevol=0; + break; + case 0x1: /* past note off */ +- for (t=0;tvoice[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;tvoice[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;channelvoice[channel]; + i=aout->main.i; + s=aout->main.s; +@@ -2736,7 +2738,7 @@ + if (a->dct!=DCT_OFF) { + int t; + +- for (t=0;tvoice[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;tvoice[t].main.i=NULL; + pf->voice[t].main.s=NULL; +@@ -3111,7 +3118,7 @@ + pf->patbrk=0; + pf->vbtick=pf->sngspd; + +- for (t=0;tvoice[t].main.i=NULL; + pf->voice[t].main.s=NULL; +@@ -3138,7 +3145,7 @@ + pf->sngpos=pos; + pf->vbtick=pf->sngspd; + +- for (t=0;tvoice[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