diff options
author | martymac <martymac@FreeBSD.org> | 2014-01-13 16:20:30 +0800 |
---|---|---|
committer | martymac <martymac@FreeBSD.org> | 2014-01-13 16:20:30 +0800 |
commit | 30c34dd1380d1b2efdb3afd9cb09b404d52f0738 (patch) | |
tree | 6d8cadb66d9715b8cb4b5c6e0e4d629f37ad3ddd /games | |
parent | 69d06a39d58d406282e1c43a8250690a9098a96a (diff) | |
download | freebsd-ports-gnome-30c34dd1380d1b2efdb3afd9cb09b404d52f0738.tar.gz freebsd-ports-gnome-30c34dd1380d1b2efdb3afd9cb09b404d52f0738.tar.zst freebsd-ports-gnome-30c34dd1380d1b2efdb3afd9cb09b404d52f0738.zip |
- Fix build on recent FreeBSD (10, 11)
- Add LICENSE and update LEGAL accordingly
- Update USES
- Use NO_WRKSUBDIR/BUILD_WRKSRC instead of WRKSRC
- Enable staging (and always stage documentation)
- Rework patches: split them and convert them to UNIX file format (use dos2unix)
Diffstat (limited to 'games')
28 files changed, 1846 insertions, 1862 deletions
diff --git a/games/jfsw/Makefile b/games/jfsw/Makefile index 4dd0e3649867..5c08ed0fcf8f 100644 --- a/games/jfsw/Makefile +++ b/games/jfsw/Makefile @@ -3,7 +3,7 @@ PORTNAME= jfsw PORTVERSION= 20051009 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= games MASTER_SITES= http://users.on.net/~jonof/buildport/ DISTFILES= ${PORTNAME}_src_${PORTVERSION}.zip \ @@ -12,25 +12,35 @@ DISTFILES= ${PORTNAME}_src_${PORTVERSION}.zip \ MAINTAINER= martymac@FreeBSD.org COMMENT= Jonathon Fowler's Shadow Warrior Port +LICENSE= GPLv2 BuildLic +LICENSE_COMB= multi +LICENSE_NAME_BuildLic= Build source code license +LICENSE_FILE_BuildLic= ${WRKDIR}/jfbuild_src_${PORTVERSION}/buildlic.txt +LICENSE_PERMS_BuildLic= dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept + BUILD_DEPENDS= nasm:${PORTSDIR}/devel/nasm +NO_CDROM= Must be distributed only through the Internet and free of charge + ONLY_FOR_ARCHS= i386 ONLY_FOR_ARCHS_REASON= uses x86 assembly code + USE_ZIP= yes -USE_GMAKE= yes USE_GL= gl USE_GNOME= gtk20 USE_SDL= mixer sdl -WRKSRC= ${WRKDIR}/${PORTNAME}_src_${PORTVERSION} -PATCH_WRKSRC= ${WRKDIR} +USE_GCC= any + +USES= dos2unix gmake +DOS2UNIX_REGEX= .*(\.(c|h)|Makefile)(\.deps)? + +NO_WRKSUBDIR= yes +BUILD_WRKSRC= ${WRKDIR}/${PORTNAME}_src_${PORTVERSION} SUB_FILES= pkg-message PORTDOCS= readme.txt releasenotes.html -NO_STAGE= yes -.include <bsd.port.options.mk> - post-patch: @${REINPLACE_CMD} -Ee \ 's|^(EROOT=)../build/|\1../jfbuild_src_${PORTVERSION}/|; \ @@ -39,22 +49,20 @@ post-patch: s|^(NASMFLAGS=).*|\1 -s -f elf|; \ s|/usr/X11R6|${LOCALBASE}|; \ s|sdl-config|${SDL_CONFIG}|' \ - ${WRKSRC}/Makefile \ + ${BUILD_WRKSRC}/Makefile \ ${WRKDIR}/jfbuild_src_${PORTVERSION}/Makefile \ ${WRKDIR}/jfbuild_src_${PORTVERSION}/Makefile.shared @${REINPLACE_CMD} -e 's|/usr/share/games/jfsw|${DATADIR}|' \ - ${WRKSRC}/source/game.c ${WRKSRC}/source/jnstub.c + ${BUILD_WRKSRC}/source/game.c \ + ${BUILD_WRKSRC}/source/jnstub.c do-install: - ${INSTALL_PROGRAM} ${WRKSRC}/sw ${PREFIX}/bin/${PORTNAME} - ${INSTALL_PROGRAM} ${WRKSRC}/build ${PREFIX}/bin/${PORTNAME}-build - ${MKDIR} ${DATADIR} -.if ${PORT_OPTIONS:MDOCS} - ${MKDIR} ${DOCSDIR} -.for doc in ${PORTDOCS} - ${INSTALL_DATA} ${WRKSRC}/${doc} ${DOCSDIR} -.endfor - @${CAT} ${PKGMESSAGE} -.endif + ${INSTALL_PROGRAM} ${BUILD_WRKSRC}/sw ${STAGEDIR}${PREFIX}/bin/${PORTNAME} + ${INSTALL_PROGRAM} ${BUILD_WRKSRC}/build ${STAGEDIR}${PREFIX}/bin/${PORTNAME}-build + ${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${PORTDOCS:S|^|${BUILD_WRKSRC}/|} ${STAGEDIR}${DOCSDIR} + +post-install: + ${MKDIR} ${STAGEDIR}${DATADIR} .include <bsd.port.mk> diff --git a/games/jfsw/files/patch-jfbuild_src_20051009 b/games/jfsw/files/patch-jfbuild_src_20051009 deleted file mode 100644 index 5cf0cb2feb02..000000000000 --- a/games/jfsw/files/patch-jfbuild_src_20051009 +++ /dev/null @@ -1,125 +0,0 @@ -diff -Nur jfbuild_src_20051009.orig/include/editor.h jfbuild_src_20051009/include/editor.h ---- jfbuild_src_20051009.orig/include/editor.h 2005-10-09 15:23:02.000000000 +0200 -+++ jfbuild_src_20051009/include/editor.h 2005-10-10 15:06:18.000000000 +0200 -@@ -18,7 +18,7 @@ -
- extern short temppicnum, tempcstat, templotag, temphitag, tempextra;
- extern char tempshade, temppal, tempxrepeat, tempyrepeat;
--extern char somethingintab;
-+static char somethingintab;
-
- extern char buildkeys[NUMBUILDKEYS];
-
-diff -Nur jfbuild_src_20051009.orig/Makefile jfbuild_src_20051009/Makefile ---- jfbuild_src_20051009.orig/Makefile 2005-10-09 15:23:00.000000000 +0200 -+++ jfbuild_src_20051009/Makefile 2005-10-10 15:06:22.000000000 +0200 -@@ -27,7 +27,7 @@ - # Debugging options - # RELEASE - 1 = no debugging - # EFENCE - 1 = compile with Electric Fence for malloc() debugging --RELEASE?=0 -+RELEASE?=1 - EFENCE?=0 - - # SDK locations - adjust to match your setup -diff -Nur jfbuild_src_20051009.orig/src/build.c jfbuild_src_20051009/src/build.c ---- jfbuild_src_20051009.orig/src/build.c 2005-10-09 15:23:00.000000000 +0200 -+++ jfbuild_src_20051009/src/build.c 2005-10-10 15:06:18.000000000 +0200 -@@ -86,7 +86,7 @@ - - short temppicnum, tempcstat, templotag, temphitag, tempextra; - char tempshade, temppal, tempvis, tempxrepeat, tempyrepeat; --char somethingintab = 255; -+static char somethingintab = 255; - - static char boardfilename[BMAX_PATH], selectedboardfilename[BMAX_PATH]; - static struct _directoryitem { -diff -Nur jfbuild_src_20051009.orig/src/crc32.c jfbuild_src_20051009/src/crc32.c ---- jfbuild_src_20051009.orig/src/crc32.c 2005-10-09 15:23:00.000000000 +0200 -+++ jfbuild_src_20051009/src/crc32.c 2005-10-10 15:06:18.000000000 +0200 -@@ -73,16 +73,6 @@ - }
- }
-
--
--unsigned long crc32(unsigned char *blk, unsigned long len)
--{
-- unsigned long crc;
--
-- crc32init(&crc);
-- crc32block(&crc, blk, len);
-- return crc32finish(&crc);
--}
--
- void crc32init(unsigned long *crcvar)
- {
- if (!crcvar) return;
-diff -Nur jfbuild_src_20051009.orig/src/sdlayer.c jfbuild_src_20051009/src/sdlayer.c ---- jfbuild_src_20051009.orig/src/sdlayer.c 2005-10-09 15:23:00.000000000 +0200 -+++ jfbuild_src_20051009/src/sdlayer.c 2005-10-10 15:06:22.000000000 +0200 -@@ -24,6 +24,10 @@ - // undefine to restrict windowed resolutions to conventional sizes - #define ANY_WINDOWED_SIZE - -+// fix for mousewheel -+#define MWHEELTICKS 10 -+static unsigned long mwheelup, mwheeldown; -+ - int _buildargc = 1; - char **_buildargv = NULL; - extern long app_main(long argc, char *argv[]); -@@ -486,8 +490,8 @@ - initprintf("Initialising mouse\n"); - - // grab input -- grabmouse(1); - moustat=1; -+ grabmouse(1); - - return 0; - } -@@ -1363,14 +1367,22 @@ - case SDL_BUTTON_LEFT: j = 0; break; - case SDL_BUTTON_RIGHT: j = 1; break; - case SDL_BUTTON_MIDDLE: j = 2; break; -- default: j = -1; break; -+ default: j = ev.button.button; break; - } - if (j<0) break; - -- if (ev.button.state == SDL_PRESSED) -+ if (ev.button.state == SDL_PRESSED) { -+ if (ev.button.button == SDL_BUTTON_WHEELUP) { -+ mwheelup = totalclock; -+ } -+ if (ev.button.button == SDL_BUTTON_WHEELDOWN) { -+ mwheeldown = totalclock; -+ } - mouseb |= (1<<j); -- else -- mouseb &= ~(1<<j); -+ } -+ else { -+ if (j < 4) mouseb &= ~(1<<j); -+ } - - if (mousepresscallback) - mousepresscallback(j+1, ev.button.state == SDL_PRESSED); -@@ -1435,6 +1447,17 @@ - - sampletimer(); - -+ if (moustat) { -+ if ((mwheelup) && (mwheelup <= (totalclock - MWHEELTICKS))) { -+ mouseb &= ~16; -+ mwheelup = 0; -+ } -+ if ((mwheeldown) && (mwheeldown <= (totalclock - MWHEELTICKS))) { -+ mouseb &= ~32; -+ mwheeldown = 0; -+ } -+ } -+ - #ifdef HAVE_GTK2 - if (gtkenabled) update_startwin(); - #endif diff --git a/games/jfsw/files/patch-jfbuild_src_20051009-Makefile b/games/jfsw/files/patch-jfbuild_src_20051009-Makefile new file mode 100644 index 000000000000..d372d2754d7a --- /dev/null +++ b/games/jfsw/files/patch-jfbuild_src_20051009-Makefile @@ -0,0 +1,11 @@ +--- jfbuild_src_20051009/Makefile.orig 2005-10-09 15:23:00.000000000 +0200 ++++ jfbuild_src_20051009/Makefile 2005-10-10 15:06:22.000000000 +0200 +@@ -27,7 +27,7 @@ + # Debugging options + # RELEASE - 1 = no debugging + # EFENCE - 1 = compile with Electric Fence for malloc() debugging +-RELEASE?=0 ++RELEASE?=1 + EFENCE?=0 + + # SDK locations - adjust to match your setup diff --git a/games/jfsw/files/patch-jfbuild_src_20051009-include-editor.h b/games/jfsw/files/patch-jfbuild_src_20051009-include-editor.h new file mode 100644 index 000000000000..040514ff1d22 --- /dev/null +++ b/games/jfsw/files/patch-jfbuild_src_20051009-include-editor.h @@ -0,0 +1,11 @@ +--- jfbuild_src_20051009/include/editor.h.orig 2005-10-09 15:23:02.000000000 +0200 ++++ jfbuild_src_20051009/include/editor.h 2005-10-10 15:06:18.000000000 +0200 +@@ -18,7 +18,7 @@ + + extern short temppicnum, tempcstat, templotag, temphitag, tempextra; + extern char tempshade, temppal, tempxrepeat, tempyrepeat; +-extern char somethingintab; ++static char somethingintab; + + extern char buildkeys[NUMBUILDKEYS]; + diff --git a/games/jfsw/files/patch-jfbuild_src_20051009-src-build.c b/games/jfsw/files/patch-jfbuild_src_20051009-src-build.c new file mode 100644 index 000000000000..f98cdb0d6837 --- /dev/null +++ b/games/jfsw/files/patch-jfbuild_src_20051009-src-build.c @@ -0,0 +1,11 @@ +--- jfbuild_src_20051009/src/build.c.orig 2005-10-09 15:23:00.000000000 +0200 ++++ jfbuild_src_20051009/src/build.c 2005-10-10 15:06:18.000000000 +0200 +@@ -86,7 +86,7 @@ + + short temppicnum, tempcstat, templotag, temphitag, tempextra; + char tempshade, temppal, tempvis, tempxrepeat, tempyrepeat; +-char somethingintab = 255; ++static char somethingintab = 255; + + static char boardfilename[BMAX_PATH], selectedboardfilename[BMAX_PATH]; + static struct _directoryitem { diff --git a/games/jfsw/files/patch-jfbuild_src_20051009-src-crc32.c b/games/jfsw/files/patch-jfbuild_src_20051009-src-crc32.c new file mode 100644 index 000000000000..5f6b5c9520c6 --- /dev/null +++ b/games/jfsw/files/patch-jfbuild_src_20051009-src-crc32.c @@ -0,0 +1,19 @@ +--- jfbuild_src_20051009/src/crc32.c.orig 2005-10-09 15:23:00.000000000 +0200 ++++ jfbuild_src_20051009/src/crc32.c 2005-10-10 15:06:18.000000000 +0200 +@@ -73,16 +73,6 @@ + } + } + +- +-unsigned long crc32(unsigned char *blk, unsigned long len) +-{ +- unsigned long crc; +- +- crc32init(&crc); +- crc32block(&crc, blk, len); +- return crc32finish(&crc); +-} +- + void crc32init(unsigned long *crcvar) + { + if (!crcvar) return; diff --git a/games/jfsw/files/patch-jfbuild_src_20051009-src-sdlayer.c b/games/jfsw/files/patch-jfbuild_src_20051009-src-sdlayer.c new file mode 100644 index 000000000000..25d516afbd5f --- /dev/null +++ b/games/jfsw/files/patch-jfbuild_src_20051009-src-sdlayer.c @@ -0,0 +1,68 @@ +--- jfbuild_src_20051009/src/sdlayer.c.orig 2005-10-09 15:23:00.000000000 +0200 ++++ jfbuild_src_20051009/src/sdlayer.c 2005-10-10 15:06:22.000000000 +0200 +@@ -24,6 +24,10 @@ + // undefine to restrict windowed resolutions to conventional sizes + #define ANY_WINDOWED_SIZE + ++// fix for mousewheel ++#define MWHEELTICKS 10 ++static unsigned long mwheelup, mwheeldown; ++ + int _buildargc = 1; + char **_buildargv = NULL; + extern long app_main(long argc, char *argv[]); +@@ -486,8 +490,8 @@ + initprintf("Initialising mouse\n"); + + // grab input +- grabmouse(1); + moustat=1; ++ grabmouse(1); + + return 0; + } +@@ -1363,14 +1367,22 @@ + case SDL_BUTTON_LEFT: j = 0; break; + case SDL_BUTTON_RIGHT: j = 1; break; + case SDL_BUTTON_MIDDLE: j = 2; break; +- default: j = -1; break; ++ default: j = ev.button.button; break; + } + if (j<0) break; + +- if (ev.button.state == SDL_PRESSED) ++ if (ev.button.state == SDL_PRESSED) { ++ if (ev.button.button == SDL_BUTTON_WHEELUP) { ++ mwheelup = totalclock; ++ } ++ if (ev.button.button == SDL_BUTTON_WHEELDOWN) { ++ mwheeldown = totalclock; ++ } + mouseb |= (1<<j); +- else +- mouseb &= ~(1<<j); ++ } ++ else { ++ if (j < 4) mouseb &= ~(1<<j); ++ } + + if (mousepresscallback) + mousepresscallback(j+1, ev.button.state == SDL_PRESSED); +@@ -1435,6 +1447,17 @@ + + sampletimer(); + ++ if (moustat) { ++ if ((mwheelup) && (mwheelup <= (totalclock - MWHEELTICKS))) { ++ mouseb &= ~16; ++ mwheelup = 0; ++ } ++ if ((mwheeldown) && (mwheeldown <= (totalclock - MWHEELTICKS))) { ++ mouseb &= ~32; ++ mwheeldown = 0; ++ } ++ } ++ + #ifdef HAVE_GTK2 + if (gtkenabled) update_startwin(); + #endif diff --git a/games/jfsw/files/patch-jfsw_src_20051009-Makefile b/games/jfsw/files/patch-jfsw_src_20051009-Makefile new file mode 100644 index 000000000000..a1990abca4ec --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-Makefile @@ -0,0 +1,57 @@ +--- jfsw_src_20051009/Makefile.orig 2005-10-09 15:28:24.000000000 +0200 ++++ jfsw_src_20051009/Makefile 2005-10-10 15:02:08.000000000 +0200 +@@ -12,7 +12,7 @@ + NOASM = 0 + + # Debugging options +-RELEASE?=0 ++RELEASE?=1 + + # build locations + SRC=source/ +@@ -56,11 +56,8 @@ + AUDIOLIB_FX=$(OBJ)mv_mix.$o \ + $(OBJ)mv_mix16.$o \ + $(OBJ)mvreverb.$o \ +- $(OBJ)pitch.$o \ +- $(OBJ)multivoc.$o \ + $(OBJ)ll_man.$o \ +- $(OBJ)fx_man.$o \ +- $(OBJ)dsoundout.$o ++ $(OBJ)fx_man.$o + AUDIOLIB_MUSIC=$(OBJ)midi.$o \ + $(OBJ)mpu401.$o \ + $(OBJ)music.$o +@@ -157,9 +154,16 @@ + EDITOROBJS+= $(OBJ)buildres.$o + endif + +-ifeq ($(RENDERTYPE),SDL) +- override CFLAGS+= $(subst -Dmain=SDL_main,,$(shell sdl-config --cflags)) +- AUDIOLIBOBJ=$(AUDIOLIB_MUSIC_STUB) $(AUDIOLIB_FX_STUB) ++ifeq ($(RENDERTYPE),SDL) ++ override CFLAGS+= $(subst -Dmain=SDL_main,,$(shell sdl-config --cflags) -D__cdecl=" ") ++ LIBS+= $(shell sdl-config --libs) -lSDL_mixer ++ AUDIOLIB_FX+= $(OBJ)dsl.$o \ ++ $(OBJ)nodpmi.$o \ ++ $(OBJ)unixpitch.$o \ ++ $(OBJ)unixvoc.$o ++ ++ AUDIOLIB_MUSIC=$(OBJ)sdlmusic.$o $(OBJ)unixglob.$o ++ AUDIOLIBOBJ=$(AUDIOLIB_MUSIC) $(AUDIOLIB_FX) + + ifeq (1,$(HAVE_GTK2)) + override CFLAGS+= -DHAVE_GTK2 $(shell pkg-config --cflags gtk+-2.0) +@@ -170,7 +174,11 @@ + GAMEOBJS+= $(OBJ)game_icon.$o + EDITOROBJS+= $(OBJ)build_icon.$o + endif +-ifeq ($(RENDERTYPE),WIN) ++ifeq ($(RENDERTYPE),WIN) ++ AUDIOLIB_FX+= $(OBJ)audiolib_fx_fmod.$o \ ++ $(OBJ)dsoundout.$o \ ++ $(OBJ)pitch.$o \ ++ $(OBJ)multivoc.$o + AUDIOLIBOBJ=$(AUDIOLIB_MUSIC) $(AUDIOLIB_FX) + endif + diff --git a/games/jfsw/files/patch-jfsw_src_20051009-Makefile.deps b/games/jfsw/files/patch-jfsw_src_20051009-Makefile.deps new file mode 100644 index 000000000000..1581e05f77b5 --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-Makefile.deps @@ -0,0 +1,14 @@ +--- jfsw_src_20051009/Makefile.deps.orig 2005-10-09 15:28:24.000000000 +0200 ++++ jfsw_src_20051009/Makefile.deps 2005-10-10 15:02:08.000000000 +0200 +@@ -95,6 +95,11 @@ + $(OBJ)animlib.$o: $(SRC)jmact/animlib.c $(SRC)jmact/types.h $(SRC)jmact/develop.h $(SRC)jmact/util_lib.h $(SRC)jmact/animlib.h + + # jAudioLib objects ++$(OBJ)dsl.$o: $(SRC)jaudiolib/dsl.c $(SRC)jaudiolib/util.h ++$(OBJ)nodpmi.$o: $(SRC)jaudiolib/nodpmi.c $(SRC)jaudiolib/dpmi.h ++$(OBJ)unixpitch.$o: $(SRC)jaudiolib/unixpitch.c $(SRC)jaudiolib/pitch.h ++$(OBJ)unixvoc.$o: $(SRC)jaudiolib/unixvoc.c $(SRC)jaudiolib/usrhooks.h $(SRC)jaudiolib/linklist.h $(SRC)jaudiolib/pitch.h $(SRC)jaudiolib/multivoc.h $(SRC)jaudiolib/_multivc.h ++ + $(OBJ)audiolib_fxstub.$o: $(SRC)jaudiolib/audiolib_fxstub.c $(SRC)jaudiolib/fx_man.h + $(OBJ)audiolib_musicstub.$o: $(SRC)jaudiolib/audiolib_musicstub.c $(SRC)jaudiolib/music.h + diff --git a/games/jfsw/files/patch-jfsw_src_20051009-source-config.c b/games/jfsw/files/patch-jfsw_src_20051009-source-config.c new file mode 100644 index 000000000000..7227720de041 --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-config.c @@ -0,0 +1,24 @@ +--- jfsw_src_20051009/source/config.c.orig 2005-10-09 15:28:26.000000000 +0200 ++++ jfsw_src_20051009/source/config.c 2005-10-10 15:02:08.000000000 +0200 +@@ -63,8 +63,8 @@ + // + // Sound variables + // +-int32 FXDevice = -1; +-int32 MusicDevice = -1; ++int32 FXDevice = 1; ++int32 MusicDevice = 1; + int32 FXVolume = 192; + int32 MusicVolume = 128; + int32 NumVoices = 4; +@@ -215,8 +215,8 @@ + ScreenWidth = 640; + ScreenHeight = 480; + ScreenBPP = 8; +- FXDevice = -1; +- MusicDevice = -1; ++ FXDevice = 1; ++ MusicDevice = 1; + FXVolume = 192; + MusicVolume = 128; + NumVoices = 4; diff --git a/games/jfsw/files/patch-jfsw_src_20051009-source-game.c b/games/jfsw/files/patch-jfsw_src_20051009-source-game.c new file mode 100644 index 000000000000..7ddac0838d5a --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-game.c @@ -0,0 +1,23 @@ +--- jfsw_src_20051009/source/game.c.orig.orig 2005-10-09 15:28:24.000000000 +0000 ++++ jfsw_src_20051009/source/game.c 2010-03-17 07:30:51.119214522 +0000 +@@ -197,7 +197,7 @@ + TRUE, // fx on + TRUE, // Music on + TRUE, // talking +-TRUE, // ambient ++FALSE, // ambient + FALSE, // Flip Stereo + + // Network game settings +@@ -5182,7 +5182,10 @@ + angvel = info.dyaw >> 8; + } + +- svel -= info.dx; ++ if (!running) svel -= (info.dx / 8.75); ++ else svel -= (info.dx / 4.375); ++ if (!running) vel -= (info.dpitch / 8.75); ++ else vel -= (info.dpitch / 4.375); + + switch (ControllerType) + { diff --git a/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-_multivc.h b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-_multivc.h new file mode 100644 index 000000000000..2ee82b071a39 --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-_multivc.h @@ -0,0 +1,15 @@ +--- jfsw_src_20051009/source/jaudiolib/_multivc.h.orig 2005-10-09 15:28:24.000000000 +0200 ++++ jfsw_src_20051009/source/jaudiolib/_multivc.h 2005-10-10 15:02:08.000000000 +0200 +@@ -67,8 +67,11 @@ + #define SILENCE_8BIT 0x80808080 + //#define SILENCE_16BIT_PAS 0 + +-//#define MixBufferSize 256 ++#ifdef WINDOWS + #define MixBufferSize (MV_GetBufferSize(MV_RequestedMixRate)) ++#else ++#define MixBufferSize 256 ++#endif + + #define NumberOfBuffers 16 + #define TotalBufferSize ( MixBufferSize * NumberOfBuffers ) diff --git a/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-debugio.h b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-debugio.h new file mode 100644 index 000000000000..616e47812f76 --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-debugio.h @@ -0,0 +1,33 @@ +--- jfsw_src_20051009/source/jaudiolib/debugio.h.orig 1970-01-01 01:00:00.000000000 +0100 ++++ jfsw_src_20051009/source/jaudiolib/debugio.h 2005-10-10 15:02:08.000000000 +0200 +@@ -0,0 +1,30 @@ ++/* ++Copyright (C) 1994-1995 Apogee Software, Ltd. ++ ++This program is free software; you can redistribute it and/or ++modify it under the terms of the GNU 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 General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with this program; if not, write to the Free Software ++Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++*/ ++#ifndef __DEBUGIO_H ++#define __DEBUGIO_H ++ ++void DB_SetXY( int x, int y ); ++void DB_PutChar( char ch ); ++int DB_PrintString( char *string ); ++int DB_PrintNum( int number ); ++int DB_PrintUnsigned( unsigned long number, int radix ); ++int DB_printf( char *fmt, ... ); ++ ++#endif diff --git a/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-dma.h b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-dma.h new file mode 100644 index 000000000000..c4fee17d9df1 --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-dma.h @@ -0,0 +1,86 @@ +--- jfsw_src_20051009/source/jaudiolib/dma.h.orig 1970-01-01 01:00:00.000000000 +0100 ++++ jfsw_src_20051009/source/jaudiolib/dma.h 2005-10-10 15:02:08.000000000 +0200 +@@ -0,0 +1,83 @@ ++/* ++Copyright (C) 1994-1995 Apogee Software, Ltd. ++ ++This program is free software; you can redistribute it and/or ++modify it under the terms of the GNU 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 General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with this program; if not, write to the Free Software ++Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++*/ ++/********************************************************************** ++ file: DMA.H ++ ++ author: James R. Dose ++ date: February 4, 1994 ++ ++ Public header file for DMA.C ++ ++ (c) Copyright 1994 James R. Dose. All Rights Reserved. ++**********************************************************************/ ++ ++#ifndef __DMA_H ++#define __DMA_H ++ ++enum DMA_ERRORS ++ { ++ DMA_Error = -1, ++ DMA_Ok = 0, ++ DMA_ChannelOutOfRange, ++ DMA_InvalidChannel ++ }; ++ ++enum DMA_Modes ++ { ++ DMA_SingleShotRead, ++ DMA_SingleShotWrite, ++ DMA_AutoInitRead, ++ DMA_AutoInitWrite ++ }; ++ ++char *DMA_ErrorString ++ ( ++ int ErrorNumber ++ ); ++ ++int DMA_VerifyChannel ++ ( ++ int channel ++ ); ++ ++int DMA_SetupTransfer ++ ( ++ int channel, ++ char *address, ++ int length, ++ int mode ++ ); ++ ++int DMA_EndTransfer ++ ( ++ int channel ++ ); ++ ++char *DMA_GetCurrentPos ++ ( ++ int channel ++ ); ++ ++int DMA_GetTransferCount ++ ( ++ int channel ++ ); ++ ++#endif diff --git a/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-dpmi.h b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-dpmi.h new file mode 100644 index 000000000000..663da716e903 --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-dpmi.h @@ -0,0 +1,46 @@ +--- jfsw_src_20051009/source/jaudiolib/dpmi.h.orig 1970-01-01 01:00:00.000000000 +0100 ++++ jfsw_src_20051009/source/jaudiolib/dpmi.h 2005-10-10 15:02:08.000000000 +0200 +@@ -0,0 +1,43 @@ ++/* ++Copyright (C) 1994-1995 Apogee Software, Ltd. ++ ++This program is free software; you can redistribute it and/or ++modify it under the terms of the GNU 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 General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with this program; if not, write to the Free Software ++Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++*/ ++/********************************************************************** ++ module: DPMI.H ++ ++ author: James R. Dose ++ date: March 31, 1994 ++ ++ Inline functions for performing DPMI calls. ++ ++ (c) Copyright 1994 James R. Dose. All Rights Reserved. ++**********************************************************************/ ++ ++#ifndef __DPMI_H ++#define __DPMI_H ++ ++enum DPMI_Errors ++ { ++ DPMI_Warning = -2, ++ DPMI_Error = -1, ++ DPMI_Ok = 0 ++ }; ++ ++int DPMI_GetDOSMemory( void **ptr, int *descriptor, unsigned length ); ++int DPMI_FreeDOSMemory( int descriptor ); ++#endif diff --git a/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-dsl.c b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-dsl.c new file mode 100644 index 000000000000..3ba5251036cf --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-dsl.c @@ -0,0 +1,260 @@ +--- jfsw_src_20051009/source/jaudiolib/dsl.c.orig 1970-01-01 01:00:00.000000000 +0100 ++++ jfsw_src_20051009/source/jaudiolib/dsl.c 2005-10-10 15:02:08.000000000 +0200 +@@ -0,0 +1,257 @@ ++/* ++Copyright (C) 2003-2004 Ryan C. Gordon. and James Bentler ++ ++This program is free software; you can redistribute it and/or ++modify it under the terms of the GNU 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 General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with this program; if not, write to the Free Software ++Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++Originally written by Ryan C. Gordon. (icculus@clutteredmind.org) ++Adapted to work with JonoF's port by James Bentler (bentler@cs.umn.edu) ++ ++*/ ++#include <stdlib.h> ++#include <string.h> ++ ++#include "dsl.h" ++#include "util.h" ++ ++#include "SDL.h" ++#include "SDL_mixer.h" ++ ++extern volatile int MV_MixPage; ++ ++static int DSL_ErrorCode = DSL_Ok; ++ ++static int mixer_initialized; ++ ++static void ( *_CallBackFunc )( void ); ++static volatile char *_BufferStart; ++static int _BufferSize; ++static int _NumDivisions; ++static int _SampleRate; ++static int _remainder; ++ ++static Mix_Chunk *blank; ++static unsigned char *blank_buf; ++ ++/* ++possible todo ideas: cache sdl/sdl mixer error messages. ++*/ ++ ++char *DSL_ErrorString( int ErrorNumber ) ++{ ++ char *ErrorString; ++ ++ switch (ErrorNumber) { ++ case DSL_Warning: ++ case DSL_Error: ++ ErrorString = DSL_ErrorString(DSL_ErrorCode); ++ break; ++ ++ case DSL_Ok: ++ ErrorString = "SDL Driver ok."; ++ break; ++ ++ case DSL_SDLInitFailure: ++ ErrorString = "SDL Audio initialization failed."; ++ break; ++ ++ case DSL_MixerActive: ++ ErrorString = "SDL Mixer already initialized."; ++ break; ++ ++ case DSL_MixerInitFailure: ++ ErrorString = "SDL Mixer initialization failed."; ++ break; ++ ++ default: ++ ErrorString = "Unknown SDL Driver error."; ++ break; ++ } ++ ++ return ErrorString; ++} ++ ++static void DSL_SetErrorCode(int ErrorCode) ++{ ++ DSL_ErrorCode = ErrorCode; ++} ++ ++int DSL_Init( void ) ++{ ++ DSL_SetErrorCode(DSL_Ok); ++ ++ if (SDL_InitSubSystem(SDL_INIT_AUDIO) < 0) { ++ DSL_SetErrorCode(DSL_SDLInitFailure); ++ ++ return DSL_Error; ++ } ++ ++ return DSL_Ok; ++} ++ ++void DSL_Shutdown( void ) ++{ ++ DSL_StopPlayback(); ++} ++ ++static void mixer_callback(int chan, void *stream, int len, void *udata) ++{ ++ Uint8 *stptr; ++ Uint8 *fxptr; ++ int copysize; ++ ++ /* len should equal _BufferSize, else this is screwed up */ ++ ++ stptr = (Uint8 *)stream; ++ ++ if (_remainder > 0) { ++ copysize = min(len, _remainder); ++ ++ fxptr = (Uint8 *)(&_BufferStart[MV_MixPage * ++ _BufferSize]); ++ ++ memcpy(stptr, fxptr+(_BufferSize-_remainder), copysize); ++ ++ len -= copysize; ++ _remainder -= copysize; ++ ++ stptr += copysize; ++ } ++ ++ while (len > 0) { ++ /* new buffer */ ++ ++ _CallBackFunc(); ++ ++ fxptr = (Uint8 *)(&_BufferStart[MV_MixPage * ++ _BufferSize]); ++ ++ copysize = min(len, _BufferSize); ++ ++ memcpy(stptr, fxptr, copysize); ++ ++ len -= copysize; ++ ++ stptr += copysize; ++ } ++ ++ _remainder = len; ++} ++ ++int DSL_BeginBufferedPlayback( char *BufferStart, ++ int BufferSize, int NumDivisions, unsigned SampleRate, ++ int MixMode, void ( *CallBackFunc )( void ) ) ++{ ++ Uint16 format; ++ Uint8 *tmp; ++ int channels; ++ int chunksize; ++ ++ if (mixer_initialized) { ++ DSL_SetErrorCode(DSL_MixerActive); ++ ++ return DSL_Error; ++ } ++ ++ _CallBackFunc = CallBackFunc; ++ _BufferStart = BufferStart; ++ _BufferSize = (BufferSize / NumDivisions); ++ _NumDivisions = NumDivisions; ++ _SampleRate = SampleRate; ++ ++ _remainder = 0; ++ ++ format = (MixMode & SIXTEEN_BIT) ? AUDIO_S16SYS : AUDIO_U8; ++ channels = (MixMode & STEREO) ? 2 : 1; ++ ++/* ++ 23ms is typically ideal (11025,22050,44100) ++ 46ms isn't bad ++*/ ++ ++ chunksize = 512; ++ ++ if (SampleRate >= 16000) chunksize *= 2; ++ if (SampleRate >= 32000) chunksize *= 2; ++ ++/* ++// SDL mixer does this already ++ if (MixMode & SIXTEEN_BIT) chunksize *= 2; ++ if (MixMode & STEREO) chunksize *= 2; ++*/ ++ ++ if (Mix_OpenAudio(SampleRate, format, channels, chunksize) < 0) { ++ DSL_SetErrorCode(DSL_MixerInitFailure); ++ ++ return DSL_Error; ++ } ++ ++/* ++ Mix_SetPostMix(mixer_callback, NULL); ++*/ ++ /* have to use a channel because postmix will overwrite the music... */ ++ Mix_RegisterEffect(0, mixer_callback, NULL, NULL); ++ ++ /* create a dummy sample just to allocate that channel */ ++ blank_buf = (Uint8 *)malloc(4096); ++ memset(blank_buf, 0, 4096); ++ ++ blank = Mix_QuickLoad_RAW(blank_buf, 4096); ++ ++ Mix_PlayChannel(0, blank, -1); ++ ++ mixer_initialized = 1; ++ ++ return DSL_Ok; ++} ++ ++void DSL_StopPlayback( void ) ++{ ++ if (mixer_initialized) { ++ Mix_HaltChannel(0); ++ } ++ ++ if (blank != NULL) { ++ Mix_FreeChunk(blank); ++ } ++ ++ blank = NULL; ++ ++ if (blank_buf != NULL) { ++ free(blank_buf); ++ } ++ ++ blank_buf = NULL; ++ ++ if (mixer_initialized) { ++ Mix_CloseAudio(); ++ } ++ ++ mixer_initialized = 0; ++} ++ ++unsigned DSL_GetPlaybackRate( void ) ++{ ++ return _SampleRate; ++} ++ ++unsigned long DisableInterrupts( void ) ++{ ++ return 0; ++} ++ ++void RestoreInterrupts( unsigned long flags ) ++{ ++} diff --git a/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-dsl.h b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-dsl.h new file mode 100644 index 000000000000..aff942e4c49e --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-dsl.h @@ -0,0 +1,53 @@ +--- jfsw_src_20051009/source/jaudiolib/dsl.h.orig 1970-01-01 01:00:00.000000000 +0100 ++++ jfsw_src_20051009/source/jaudiolib/dsl.h 2005-10-10 15:02:08.000000000 +0200 +@@ -0,0 +1,50 @@ ++/* ++Copyright (C) 2003-2004 Ryan C. Gordon. and James Bentler ++ ++This program is free software; you can redistribute it and/or ++modify it under the terms of the GNU 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 General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with this program; if not, write to the Free Software ++Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++Originally written by Ryan C. Gordon. (icculus@clutteredmind.org) ++Adapted to work with JonoF's port by James Bentler (bentler@cs.umn.edu) ++ ++*/ ++#ifndef AUDIOLIB__DSL_H ++#define AUDIOLIB__DSL_H ++ ++#define MONO_8BIT 0 ++#define STEREO 1 ++#define SIXTEEN_BIT 2 ++#define STEREO_16BIT ( STEREO | SIXTEEN_BIT ) ++ ++enum DSL_ERRORS ++ { ++ DSL_Warning = -2, ++ DSL_Error = -1, ++ DSL_Ok = 0, ++ DSL_SDLInitFailure, ++ DSL_MixerActive, ++ DSL_MixerInitFailure ++ }; ++ ++char *DSL_ErrorString( int ErrorNumber ); ++int DSL_Init( void ); ++void DSL_StopPlayback( void ); ++unsigned DSL_GetPlaybackRate( void ); ++int DSL_BeginBufferedPlayback( char *BufferStart, ++ int BufferSize, int NumDivisions, unsigned SampleRate, ++ int MixMode, void ( *CallBackFunc )( void ) ); ++void DSL_Shutdown( void ); ++ ++#endif diff --git a/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-interrup.h b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-interrup.h new file mode 100644 index 000000000000..abad619e8fef --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-interrup.h @@ -0,0 +1,53 @@ +--- jfsw_src_20051009/source/jaudiolib/interrup.h.orig 1970-01-01 01:00:00.000000000 +0100 ++++ jfsw_src_20051009/source/jaudiolib/interrup.h 2005-10-10 15:02:08.000000000 +0200 +@@ -0,0 +1,50 @@ ++/* ++Copyright (C) 1994-1995 Apogee Software, Ltd. ++ ++This program is free software; you can redistribute it and/or ++modify it under the terms of the GNU 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 General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with this program; if not, write to the Free Software ++Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++*/ ++/********************************************************************** ++ module: INTERRUP.H ++ ++ author: James R. Dose ++ date: March 31, 1994 ++ ++ Inline functions for disabling and restoring the interrupt flag. ++ ++ (c) Copyright 1994 James R. Dose. All Rights Reserved. ++**********************************************************************/ ++ ++#ifndef __INTERRUPT_H ++#define __INTERRUPT_H ++ ++unsigned long DisableInterrupts( void ); ++void RestoreInterrupts( unsigned long flags ); ++ ++#ifdef PLAT_DOS ++#pragma aux DisableInterrupts = \ ++ "pushfd", \ ++ "pop eax", \ ++ "cli" \ ++ modify [ eax ]; ++ ++#pragma aux RestoreInterrupts = \ ++ "push eax", \ ++ "popfd" \ ++ parm [ eax ]; ++#endif ++ ++#endif diff --git a/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-nodpmi.c b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-nodpmi.c new file mode 100644 index 000000000000..3bb69b147a98 --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-nodpmi.c @@ -0,0 +1,53 @@ +--- jfsw_src_20051009/source/jaudiolib/nodpmi.c.orig 1970-01-01 01:00:00.000000000 +0100 ++++ jfsw_src_20051009/source/jaudiolib/nodpmi.c 2005-10-10 15:02:08.000000000 +0200 +@@ -0,0 +1,50 @@ ++/* ++Copyright (C) 1994-1995 Apogee Software, Ltd. ++ ++This program is free software; you can redistribute it and/or ++modify it under the terms of the GNU 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 General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with this program; if not, write to the Free Software ++Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++*/ ++/********************************************************************** ++ module: NODPMI.C ++ ++ Functions for faking DPMI calls. ++ ++**********************************************************************/ ++ ++#include <stdlib.h> ++#include <string.h> ++#include "dpmi.h" ++ ++#define TRUE ( 1 == 1 ) ++#define FALSE ( !TRUE ) ++ ++int DPMI_GetDOSMemory( void **ptr, int *descriptor, unsigned length ) ++{ ++ /* Lovely... */ ++ ++ *ptr = (void *)malloc(length); ++ ++ *descriptor = (int) *ptr; ++ ++ return (descriptor == 0) ? DPMI_Error : DPMI_Ok; ++} ++ ++int DPMI_FreeDOSMemory( int descriptor ) ++{ ++ free((void *)descriptor); ++ ++ return (descriptor == 0) ? DPMI_Error : DPMI_Ok; ++} diff --git a/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-platform.h b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-platform.h new file mode 100644 index 000000000000..6aaab6cb52db --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-platform.h @@ -0,0 +1,63 @@ +--- jfsw_src_20051009/source/jaudiolib/platform.h.orig 1970-01-01 01:00:00.000000000 +0100 ++++ jfsw_src_20051009/source/jaudiolib/platform.h 2005-10-10 15:02:08.000000000 +0200 +@@ -0,0 +1,60 @@ ++#ifndef _INCLUDE_PLATFORM_H_ ++#define _INCLUDE_PLATFORM_H_ ++ ++#if (!defined __EXPORT__) ++#define __EXPORT__ ++#endif ++ ++#if (defined __WATCOMC__) ++#define snprintf _snprintf ++#endif ++ ++static __inline unsigned short _swap16(unsigned short D) ++{ ++#if PLATFORM_MACOSX ++ register unsigned short returnValue; ++ __asm__ volatile("lhbrx %0,0,%1" ++ : "=r" (returnValue) ++ : "r" (&D) ++ ); ++ return returnValue; ++#else ++ return((D<<8)|(D>>8)); ++#endif ++} ++ ++static __inline unsigned int _swap32(unsigned int D) ++{ ++#if PLATFORM_MACOSX ++ register unsigned int returnValue; ++ __asm__ volatile("lwbrx %0,0,%1" ++ : "=r" (returnValue) ++ : "r" (&D) ++ ); ++ return returnValue; ++#else ++ return((D<<24)|((D<<8)&0x00FF0000)|((D>>8)&0x0000FF00)|(D>>24)); ++#endif ++} ++ ++#if PLATFORM_MACOSX ++#define PLATFORM_BIGENDIAN 1 ++#define BUILDSWAP_INTEL16(x) _swap16(x) ++#define BUILDSWAP_INTEL32(x) _swap32(x) ++#else ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++#define PLATFORM_LITTLEENDIAN 1 ++#define BUILDSWAP_INTEL16(x) (x) ++#define BUILDSWAP_INTEL32(x) (x) ++#else ++#define PLATFORM_BIGENDIAN 1 ++#define BUILDSWAP_INTEL16(x) _swap16(x) ++#define BUILDSWAP_INTEL32(x) _swap32(x) ++#endif ++#endif ++ ++extern int has_altivec; /* PowerPC-specific. */ ++ ++#endif /* !defined _INCLUDE_PLATFORM_H_ */ ++ ++/* end of platform.h ... */ diff --git a/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-sdlmusic.c b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-sdlmusic.c new file mode 100644 index 000000000000..05b1d4a76b31 --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-sdlmusic.c @@ -0,0 +1,483 @@ +--- jfsw_src_20051009/source/jaudiolib/sdlmusic.c.orig 1970-01-01 01:00:00.000000000 +0100 ++++ jfsw_src_20051009/source/jaudiolib/sdlmusic.c 2005-10-10 15:02:08.000000000 +0200 +@@ -0,0 +1,480 @@ ++/* ++Copyright (C) 2003-2004 Ryan C. Gordon. and James Bentler ++ ++This program is free software; you can redistribute it and/or ++modify it under the terms of the GNU 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 General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with this program; if not, write to the Free Software ++Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++Originally written by Ryan C. Gordon. (icculus@clutteredmind.org) ++Adapted to work with JonoF's port by James Bentler (bentler@cs.umn.edu) ++ ++*/ ++/* ++ * A reimplementation of Jim Dose's FX_MAN routines, using SDL_mixer 1.2. ++ * Whee. FX_MAN is also known as the "Apogee Sound System", or "ASS" for ++ * short. How strangely appropriate that seems. ++ */ ++ ++#include <stdio.h> ++#include <stdlib.h> ++#include <stdarg.h> ++#include <string.h> ++#include <assert.h> ++ ++#include "types.h" ++#include "file_lib.h" ++#include "compat.h" ++#include "cache1d.h" ++ ++#ifndef MAX_PATH ++#define MAX_PATH 256 ++#endif ++ ++#if (defined __WATCOMC__) ++// This is probably out of date. --ryan. ++#include "dukesnd_watcom.h" ++#endif ++ ++#if (!defined __WATCOMC__) ++#define cdecl ++#endif ++ ++#include "SDL.h" ++#include "SDL_mixer.h" ++#include "music.h" ++ ++#define __FX_TRUE (1 == 1) ++#define __FX_FALSE (!__FX_TRUE) ++ ++#define DUKESND_DEBUG "DUKESND_DEBUG" ++ ++#ifndef min ++#define min(a, b) (((a) < (b)) ? (a) : (b)) ++#endif ++ ++#ifndef max ++#define max(a, b) (((a) > (b)) ? (a) : (b)) ++#endif ++ ++void GetUnixPathFromEnvironment( char *fullname, int32 length, const char *filename ); ++ ++int MUSIC_ErrorCode = MUSIC_Ok; ++ ++static char warningMessage[80]; ++static char errorMessage[80]; ++static int fx_initialized = 0; ++static int numChannels = MIX_CHANNELS; ++static void (*callback)(unsigned long); ++static int reverseStereo = 0; ++static int reverbDelay = 256; ++static int reverbLevel = 0; ++static int fastReverb = 0; ++static FILE *debug_file = NULL; ++static int initialized_debugging = 0; ++static int mixerIsStereo = 1; ++ ++// This gets called all over the place for information and debugging messages. ++// If the user set the DUKESND_DEBUG environment variable, the messages ++// go to the file that is specified in that variable. Otherwise, they ++// are ignored for the expense of the function call. If DUKESND_DEBUG is ++// set to "-" (without the quotes), then the output goes to stdout. ++static void musdebug(const char *fmt, ...) ++{ ++ va_list ap; ++ ++ if (debug_file) ++ { ++ fprintf(debug_file, "DUKEMUS: "); ++ va_start(ap, fmt); ++ vfprintf(debug_file, fmt, ap); ++ va_end(ap); ++ fprintf(debug_file, "\n"); ++ fflush(debug_file); ++ } // if ++} // musdebug ++ ++static void init_debugging(void) ++{ ++ const char *envr; ++ ++ if (initialized_debugging) ++ return; ++ ++ envr = getenv(DUKESND_DEBUG); ++ if (envr != NULL) ++ { ++ if (strcmp(envr, "-") == 0) ++ debug_file = stdout; ++ else ++ debug_file = fopen(envr, "w"); ++ ++ if (debug_file == NULL) ++ fprintf(stderr, "DUKESND: -WARNING- Could not open debug file!\n"); ++ else ++ setbuf(debug_file, NULL); ++ } // if ++ ++ initialized_debugging = 1; ++} // init_debugging ++ ++static void setWarningMessage(const char *msg) ++{ ++ strncpy(warningMessage, msg, sizeof (warningMessage)); ++ // strncpy() doesn't add the null char if there isn't room... ++ warningMessage[sizeof (warningMessage) - 1] = '\0'; ++ musdebug("Warning message set to [%s].", warningMessage); ++} // setErrorMessage ++ ++ ++static void setErrorMessage(const char *msg) ++{ ++ strncpy(errorMessage, msg, sizeof (errorMessage)); ++ // strncpy() doesn't add the null char if there isn't room... ++ errorMessage[sizeof (errorMessage) - 1] = '\0'; ++ musdebug("Error message set to [%s].", errorMessage); ++} // setErrorMessage ++ ++// The music functions... ++ ++char *MUSIC_ErrorString(int ErrorNumber) ++{ ++ switch (ErrorNumber) ++ { ++ case MUSIC_Warning: ++ return(warningMessage); ++ ++ case MUSIC_Error: ++ return(errorMessage); ++ ++ case MUSIC_Ok: ++ return("OK; no error."); ++ ++ case MUSIC_ASSVersion: ++ return("Incorrect sound library version."); ++ ++ case MUSIC_SoundCardError: ++ return("General sound card error."); ++ ++ case MUSIC_InvalidCard: ++ return("Invalid sound card."); ++ ++ case MUSIC_MidiError: ++ return("MIDI error."); ++ ++ case MUSIC_MPU401Error: ++ return("MPU401 error."); ++ ++ case MUSIC_TaskManError: ++ return("Task Manager error."); ++ ++ //case MUSIC_FMNotDetected: ++ // return("FM not detected error."); ++ ++ case MUSIC_DPMI_Error: ++ return("DPMI error."); ++ ++ default: ++ return("Unknown error."); ++ } // switch ++ ++ assert(0); // shouldn't hit this point. ++ return(NULL); ++} // MUSIC_ErrorString ++ ++ ++static int music_initialized = 0; ++static int music_context = 0; ++static int music_loopflag = MUSIC_PlayOnce; ++static char *music_songdata = NULL; ++static Mix_Music *music_musicchunk = NULL; ++ ++int MUSIC_Init(int SoundCard, int Address) ++{ ++ init_debugging(); ++ ++ musdebug("INIT! card=>%d, address=>%d...", SoundCard, Address); ++ ++ if (music_initialized) ++ { ++ setErrorMessage("Music system is already initialized."); ++ return(MUSIC_Error); ++ } // if ++ ++ SoundCard = 1; ++ ++ music_initialized = 1; ++ return(MUSIC_Ok); ++} // MUSIC_Init ++ ++ ++int MUSIC_Shutdown(void) ++{ ++ musdebug("shutting down sound subsystem."); ++ ++ MUSIC_StopSong(); ++ music_context = 0; ++ music_initialized = 0; ++ music_loopflag = MUSIC_PlayOnce; ++ return(MUSIC_Ok); ++} // MUSIC_Shutdown ++ ++ ++void MUSIC_SetMaxFMMidiChannel(int channel) ++{ ++ musdebug("STUB ... MUSIC_SetMaxFMMidiChannel(%d).\n", channel); ++} // MUSIC_SetMaxFMMidiChannel ++ ++ ++void MUSIC_SetVolume(int volume) ++{ ++ volume = max( 0, volume ); ++ volume = min( volume, 255 ); ++ ++ Mix_VolumeMusic(volume >> 1); // convert 0-255 to 0-128. ++} // MUSIC_SetVolume ++ ++ ++void MUSIC_SetMidiChannelVolume(int channel, int volume) ++{ ++ musdebug("STUB ... MUSIC_SetMidiChannelVolume(%d, %d).\n", channel, volume); ++} // MUSIC_SetMidiChannelVolume ++ ++ ++void MUSIC_ResetMidiChannelVolumes(void) ++{ ++ musdebug("STUB ... MUSIC_ResetMidiChannelVolumes().\n"); ++} // MUSIC_ResetMidiChannelVolumes ++ ++ ++int MUSIC_GetVolume(void) ++{ ++ return(Mix_VolumeMusic(-1) << 1); // convert 0-128 to 0-255. ++} // MUSIC_GetVolume ++ ++ ++void MUSIC_SetLoopFlag(int loopflag) ++{ ++ music_loopflag = loopflag; ++} // MUSIC_SetLoopFlag ++ ++ ++int MUSIC_SongPlaying(void) ++{ ++ return((Mix_PlayingMusic()) ? __FX_TRUE : __FX_FALSE); ++} // MUSIC_SongPlaying ++ ++ ++void MUSIC_Continue(void) ++{ ++ if (Mix_PausedMusic()) ++ Mix_ResumeMusic(); ++ else if (music_songdata) ++ MUSIC_PlaySong(music_songdata, MUSIC_PlayOnce); ++} // MUSIC_Continue ++ ++ ++void MUSIC_Pause(void) ++{ ++ Mix_PauseMusic(); ++} // MUSIC_Pause ++ ++ ++int MUSIC_StopSong(void) ++{ ++ //if (!fx_initialized) ++ if (!Mix_QuerySpec(NULL, NULL, NULL)) ++ { ++ setErrorMessage("Need FX system initialized, too. Sorry."); ++ return(MUSIC_Error); ++ } // if ++ ++ if ( (Mix_PlayingMusic()) || (Mix_PausedMusic()) ) ++ Mix_HaltMusic(); ++ ++ if (music_musicchunk) ++ Mix_FreeMusic(music_musicchunk); ++ ++ music_songdata = NULL; ++ music_musicchunk = NULL; ++ return(MUSIC_Ok); ++} // MUSIC_StopSong ++ ++ ++int MUSIC_PlaySong(unsigned char *song, int loopflag) ++{ ++ //SDL_RWops *rw; ++ ++ MUSIC_StopSong(); ++ ++ music_songdata = song; ++ ++ // !!! FIXME: This could be a problem...SDL/SDL_mixer wants a RWops, which ++ // !!! FIXME: is an i/o abstraction. Since we already have the MIDI data ++ // !!! FIXME: in memory, we fake it with a memory-based RWops. None of ++ // !!! FIXME: this is a problem, except the RWops wants to know how big ++ // !!! FIXME: its memory block is (so it can do things like seek on an ++ // !!! FIXME: offset from the end of the block), and since we don't have ++ // !!! FIXME: this information, we have to give it SOMETHING. ++ ++ /* !!! ARGH! There's no LoadMUS_RW ?! ++ rw = SDL_RWFromMem((void *) song, (10 * 1024) * 1024); // yikes. ++ music_musicchunk = Mix_LoadMUS_RW(rw); ++ Mix_PlayMusic(music_musicchunk, (loopflag == MUSIC_PlayOnce) ? 0 : -1); ++ */ ++ ++ return(MUSIC_Ok); ++} // MUSIC_PlaySong ++ ++ ++extern char ApogeePath[256] = "/tmp/"; ++ ++// Duke3D-specific. --ryan. ++void PlayMusic(char *_filename) ++{ ++ //char filename[MAX_PATH]; ++ //strcpy(filename, _filename); ++ //FixFilePath(filename); ++ ++ char filename[MAX_PATH]; ++ long handle; ++ long size; ++ void *song; ++ long rc; ++ ++ MUSIC_StopSong(); ++ ++ // Read from a groupfile, write it to disk so SDL_mixer can read it. ++ // Lame. --ryan. ++ handle = kopen4load(_filename, 0); ++ if (handle == -1) ++ return; ++ ++ size = kfilelength(handle); ++ if (size == -1) ++ { ++ kclose(handle); ++ return; ++ } // if ++ ++ song = malloc(size); ++ if (song == NULL) ++ { ++ kclose(handle); ++ return; ++ } // if ++ ++ rc = kread(handle, song, size); ++ kclose(handle); ++ if (rc != size) ++ { ++ free(song); ++ return; ++ } // if ++ ++ // save the file somewhere, so SDL_mixer can load it ++ GetUnixPathFromEnvironment(filename, MAX_PATH, "tmpsong.mid"); ++ handle = SafeOpenWrite(filename, filetype_binary); ++ ++ SafeWrite(handle, song, size); ++ close(handle); ++ free(song); ++ ++ //music_songdata = song; ++ ++ music_musicchunk = Mix_LoadMUS(filename); ++ if (music_musicchunk != NULL) ++ { ++ // !!! FIXME: I set the music to loop. Hope that's okay. --ryan. ++ Mix_PlayMusic(music_musicchunk, -1); ++ } // if ++} ++ ++ ++void MUSIC_SetContext(int context) ++{ ++ musdebug("STUB ... MUSIC_SetContext().\n"); ++ music_context = context; ++} // MUSIC_SetContext ++ ++ ++int MUSIC_GetContext(void) ++{ ++ return(music_context); ++} // MUSIC_GetContext ++ ++ ++void MUSIC_SetSongTick(unsigned long PositionInTicks) ++{ ++ musdebug("STUB ... MUSIC_SetSongTick().\n"); ++} // MUSIC_SetSongTick ++ ++ ++void MUSIC_SetSongTime(unsigned long milliseconds) ++{ ++ musdebug("STUB ... MUSIC_SetSongTime().\n"); ++}// MUSIC_SetSongTime ++ ++ ++void MUSIC_SetSongPosition(int measure, int beat, int tick) ++{ ++ musdebug("STUB ... MUSIC_SetSongPosition().\n"); ++} // MUSIC_SetSongPosition ++ ++ ++void MUSIC_GetSongPosition(songposition *pos) ++{ ++ musdebug("STUB ... MUSIC_GetSongPosition().\n"); ++} // MUSIC_GetSongPosition ++ ++ ++void MUSIC_GetSongLength(songposition *pos) ++{ ++ musdebug("STUB ... MUSIC_GetSongLength().\n"); ++} // MUSIC_GetSongLength ++ ++ ++int MUSIC_FadeVolume(int tovolume, int milliseconds) ++{ ++ Mix_FadeOutMusic(milliseconds); ++ return(MUSIC_Ok); ++} // MUSIC_FadeVolume ++ ++ ++int MUSIC_FadeActive(void) ++{ ++ return((Mix_FadingMusic() == MIX_FADING_OUT) ? __FX_TRUE : __FX_FALSE); ++} // MUSIC_FadeActive ++ ++ ++void MUSIC_StopFade(void) ++{ ++ musdebug("STUB ... MUSIC_StopFade().\n"); ++} // MUSIC_StopFade ++ ++ ++void MUSIC_RerouteMidiChannel(int channel, int cdecl (*function)( int event, int c1, int c2 )) ++{ ++ musdebug("STUB ... MUSIC_RerouteMidiChannel().\n"); ++} // MUSIC_RerouteMidiChannel ++ ++ ++void MUSIC_RegisterTimbreBank(unsigned char *timbres) ++{ ++ musdebug("STUB ... MUSIC_RegisterTimbreBank().\n"); ++} // MUSIC_RegisterTimbreBank ++ ++ ++void MUSIC_Update(void) ++{ ++} diff --git a/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-unixglob.c b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-unixglob.c new file mode 100644 index 000000000000..22a26f86e533 --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-unixglob.c @@ -0,0 +1,155 @@ +--- jfsw_src_20051009/source/jaudiolib/unixglob.c.orig 1970-01-01 01:00:00.000000000 +0100 ++++ jfsw_src_20051009/source/jaudiolib/unixglob.c 2005-10-10 15:02:08.000000000 +0200 +@@ -0,0 +1,152 @@ ++/* ++Copyright (C) 2003-2004 Ryan C. Gordon. and James Bentler ++ ++This program is free software; you can redistribute it and/or ++modify it under the terms of the GNU 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 General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with this program; if not, write to the Free Software ++Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++Originally written by Ryan C. Gordon. (icculus@clutteredmind.org) ++Adapted to work with JonoF's port by James Bentler (bentler@cs.umn.edu) ++ ++*/ ++ ++static char ApogeePath[256] = "/tmp/"; ++ ++#define PATH_SEP_CHAR '/' ++#define PATH_SEP_STR "/" ++#define ROOTDIR "/" ++#define CURDIR "./" ++ ++#include "types.h" ++#include "compat.h" ++#include <dirent.h> ++#include <errno.h> ++ ++#define Error printf ++ ++#ifndef MAX_PATH ++#define MAX_PATH 256 ++#endif ++ ++void FixFilePath(char *filename) ++{ ++ char *ptr; ++ char *lastsep = filename; ++ ++ if ((!filename) || (*filename == '\0')) ++ return; ++ ++ if (access(filename, F_OK) == 0) /* File exists; we're good to go. */ ++ return; ++ ++ for (ptr = filename; 1; ptr++) ++ { ++ if (*ptr == '\\') ++ *ptr = PATH_SEP_CHAR; ++ ++ if ((*ptr == PATH_SEP_CHAR) || (*ptr == '\0')) ++ { ++ char pch = *ptr; ++ struct dirent *dent = NULL; ++ DIR *dir; ++ ++ if ((pch == PATH_SEP_CHAR) && (*(ptr + 1) == '\0')) ++ return; /* eos is pathsep; we're done. */ ++ ++ if (lastsep == ptr) ++ continue; /* absolute path; skip to next one. */ ++ ++ *ptr = '\0'; ++ if (lastsep == filename) { ++ dir = opendir((*lastsep == PATH_SEP_CHAR) ? ROOTDIR : CURDIR); ++ ++ if (*lastsep == PATH_SEP_CHAR) { ++ lastsep++; ++ } ++ } ++ else ++ { ++ *lastsep = '\0'; ++ dir = opendir(filename); ++ *lastsep = PATH_SEP_CHAR; ++ lastsep++; ++ } ++ ++ if (dir == NULL) ++ { ++ *ptr = PATH_SEP_CHAR; ++ return; /* maybe dir doesn't exist? give up. */ ++ } ++ ++ while ((dent = readdir(dir)) != NULL) ++ { ++ if (strcasecmp(dent->d_name, lastsep) == 0) ++ { ++ /* found match; replace it. */ ++ strcpy(lastsep, dent->d_name); ++ break; ++ } ++ } ++ ++ closedir(dir); ++ *ptr = pch; ++ lastsep = ptr; ++ ++ if (dent == NULL) ++ return; /* no match. oh well. */ ++ ++ if (pch == '\0') /* eos? */ ++ return; ++ } ++ } ++} ++ ++int32 SafeOpenWrite (const char *_filename, int32 filetype) ++{ ++ int handle; ++ char filename[MAX_PATH]; ++ strncpy(filename, _filename, sizeof (filename)); ++ filename[sizeof (filename) - 1] = '\0'; ++ FixFilePath(filename); ++ ++ handle = open(filename,O_RDWR | O_BINARY | O_CREAT | O_TRUNC ++ , S_IREAD | S_IWRITE); ++ ++ if (handle == -1) ++ Error ("Error opening %s: %s",filename,strerror(errno)); ++ ++ return handle; ++} ++ ++ ++void SafeWrite (int32 handle, void *buffer, int32 count) ++{ ++ unsigned iocount; ++ ++ while (count) ++ { ++ iocount = count > 0x8000 ? 0x8000 : count; ++ if (write (handle,buffer,iocount) != (int)iocount) ++ Error ("File write failure writing %ld bytes",count); ++ buffer = (void *)( (byte *)buffer + iocount ); ++ count -= iocount; ++ } ++} ++ ++ ++ ++void GetUnixPathFromEnvironment( char *fullname, int32 length, const char *filename ) ++{ ++ snprintf(fullname, length-1, "%s%s", ApogeePath, filename); ++} diff --git a/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-unixpitch.c b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-unixpitch.c new file mode 100644 index 000000000000..a39965d876c4 --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-unixpitch.c @@ -0,0 +1,215 @@ +--- jfsw_src_20051009/source/jaudiolib/unixpitch.c.orig 1970-01-01 01:00:00.000000000 +0100 ++++ jfsw_src_20051009/source/jaudiolib/unixpitch.c 2005-10-10 15:02:08.000000000 +0200 +@@ -0,0 +1,212 @@ ++/* ++Copyright (C) 1994-1995 Apogee Software, Ltd. ++ ++This program is free software; you can redistribute it and/or ++modify it under the terms of the GNU 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 General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with this program; if not, write to the Free Software ++Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++*/ ++/********************************************************************** ++ module: PITCH.C ++ ++ author: James R. Dose ++ date: June 14, 1993 ++ ++ Routines for pitch scaling. ++ ++ (c) Copyright 1993 James R. Dose. All Rights Reserved. ++**********************************************************************/ ++ ++#include <stdlib.h> ++//#include <math.h> ++#include "dpmi.h" ++#include "standard.h" ++#include "pitch.h" ++ ++#define MAXDETUNE 25 ++ ++static unsigned long PitchTable[ 12 ][ MAXDETUNE ] = ++ { ++ { 0x10000, 0x10097, 0x1012f, 0x101c7, 0x10260, 0x102f9, 0x10392, 0x1042c, ++ 0x104c6, 0x10561, 0x105fb, 0x10696, 0x10732, 0x107ce, 0x1086a, 0x10907, ++ 0x109a4, 0x10a41, 0x10adf, 0x10b7d, 0x10c1b, 0x10cba, 0x10d59, 0x10df8, ++ 0x10e98 }, ++ { 0x10f38, 0x10fd9, 0x1107a, 0x1111b, 0x111bd, 0x1125f, 0x11302, 0x113a5, ++ 0x11448, 0x114eb, 0x1158f, 0x11634, 0x116d8, 0x1177e, 0x11823, 0x118c9, ++ 0x1196f, 0x11a16, 0x11abd, 0x11b64, 0x11c0c, 0x11cb4, 0x11d5d, 0x11e06, ++ 0x11eaf }, ++ { 0x11f59, 0x12003, 0x120ae, 0x12159, 0x12204, 0x122b0, 0x1235c, 0x12409, ++ 0x124b6, 0x12563, 0x12611, 0x126bf, 0x1276d, 0x1281c, 0x128cc, 0x1297b, ++ 0x12a2b, 0x12adc, 0x12b8d, 0x12c3e, 0x12cf0, 0x12da2, 0x12e55, 0x12f08, ++ 0x12fbc }, ++ { 0x1306f, 0x13124, 0x131d8, 0x1328d, 0x13343, 0x133f9, 0x134af, 0x13566, ++ 0x1361d, 0x136d5, 0x1378d, 0x13846, 0x138fe, 0x139b8, 0x13a72, 0x13b2c, ++ 0x13be6, 0x13ca1, 0x13d5d, 0x13e19, 0x13ed5, 0x13f92, 0x1404f, 0x1410d, ++ 0x141cb }, ++ { 0x1428a, 0x14349, 0x14408, 0x144c8, 0x14588, 0x14649, 0x1470a, 0x147cc, ++ 0x1488e, 0x14951, 0x14a14, 0x14ad7, 0x14b9b, 0x14c5f, 0x14d24, 0x14dea, ++ 0x14eaf, 0x14f75, 0x1503c, 0x15103, 0x151cb, 0x15293, 0x1535b, 0x15424, ++ 0x154ee }, ++ { 0x155b8, 0x15682, 0x1574d, 0x15818, 0x158e4, 0x159b0, 0x15a7d, 0x15b4a, ++ 0x15c18, 0x15ce6, 0x15db4, 0x15e83, 0x15f53, 0x16023, 0x160f4, 0x161c5, ++ 0x16296, 0x16368, 0x1643a, 0x1650d, 0x165e1, 0x166b5, 0x16789, 0x1685e, ++ 0x16934 }, ++ { 0x16a09, 0x16ae0, 0x16bb7, 0x16c8e, 0x16d66, 0x16e3e, 0x16f17, 0x16ff1, ++ 0x170ca, 0x171a5, 0x17280, 0x1735b, 0x17437, 0x17513, 0x175f0, 0x176ce, ++ 0x177ac, 0x1788a, 0x17969, 0x17a49, 0x17b29, 0x17c09, 0x17cea, 0x17dcc, ++ 0x17eae }, ++ { 0x17f91, 0x18074, 0x18157, 0x1823c, 0x18320, 0x18406, 0x184eb, 0x185d2, ++ 0x186b8, 0x187a0, 0x18888, 0x18970, 0x18a59, 0x18b43, 0x18c2d, 0x18d17, ++ 0x18e02, 0x18eee, 0x18fda, 0x190c7, 0x191b5, 0x192a2, 0x19391, 0x19480, ++ 0x1956f }, ++ { 0x1965f, 0x19750, 0x19841, 0x19933, 0x19a25, 0x19b18, 0x19c0c, 0x19d00, ++ 0x19df4, 0x19ee9, 0x19fdf, 0x1a0d5, 0x1a1cc, 0x1a2c4, 0x1a3bc, 0x1a4b4, ++ 0x1a5ad, 0x1a6a7, 0x1a7a1, 0x1a89c, 0x1a998, 0x1aa94, 0x1ab90, 0x1ac8d, ++ 0x1ad8b }, ++ { 0x1ae89, 0x1af88, 0x1b088, 0x1b188, 0x1b289, 0x1b38a, 0x1b48c, 0x1b58f, ++ 0x1b692, 0x1b795, 0x1b89a, 0x1b99f, 0x1baa4, 0x1bbaa, 0x1bcb1, 0x1bdb8, ++ 0x1bec0, 0x1bfc9, 0x1c0d2, 0x1c1dc, 0x1c2e6, 0x1c3f1, 0x1c4fd, 0x1c609, ++ 0x1c716 }, ++ { 0x1c823, 0x1c931, 0x1ca40, 0x1cb50, 0x1cc60, 0x1cd70, 0x1ce81, 0x1cf93, ++ 0x1d0a6, 0x1d1b9, 0x1d2cd, 0x1d3e1, 0x1d4f6, 0x1d60c, 0x1d722, 0x1d839, ++ 0x1d951, 0x1da69, 0x1db82, 0x1dc9c, 0x1ddb6, 0x1ded1, 0x1dfec, 0x1e109, ++ 0x1e225 }, ++ { 0x1e343, 0x1e461, 0x1e580, 0x1e6a0, 0x1e7c0, 0x1e8e0, 0x1ea02, 0x1eb24, ++ 0x1ec47, 0x1ed6b, 0x1ee8f, 0x1efb4, 0x1f0d9, 0x1f1ff, 0x1f326, 0x1f44e, ++ 0x1f576, 0x1f69f, 0x1f7c9, 0x1f8f3, 0x1fa1e, 0x1fb4a, 0x1fc76, 0x1fda3, ++ 0x1fed1 } ++ }; ++ ++ ++//static int PITCH_Installed = FALSE; ++ ++ ++/*--------------------------------------------------------------------- ++ Function: PITCH_Init ++ ++ Initializes pitch table. ++---------------------------------------------------------------------*/ ++/* ++void PITCH_Init ++ ( ++ void ++ ) ++ ++ { ++ int note; ++ int detune; ++ ++ if ( !PITCH_Installed ) ++ { ++ for( note = 0; note < 12; note++ ) ++ { ++ for( detune = 0; detune < MAXDETUNE; detune++ ) ++ { ++ PitchTable[ note ][ detune ] = 0x10000 * ++ pow( 2, ( note * MAXDETUNE + detune ) / ( 12.0 * MAXDETUNE ) ); ++ } ++ } ++ ++ PITCH_Installed = TRUE; ++ } ++ } ++*/ ++ ++/********************************************************************** ++ ++ Memory locked functions: ++ ++**********************************************************************/ ++ ++ ++#define PITCH_LockStart PITCH_GetScale ++ ++ ++/*--------------------------------------------------------------------- ++ Function: PITCH_GetScale ++ ++ Returns a fixed-point value to scale number the specified amount. ++---------------------------------------------------------------------*/ ++ ++unsigned long PITCH_GetScale ++ ( ++ int pitchoffset ++ ) ++ ++ { ++ unsigned long scale; ++ int octaveshift; ++ int noteshift; ++ int note; ++ int detune; ++ ++// if ( !PITCH_Installed ) ++// { ++// PITCH_Init(); ++// } ++ ++ if ( pitchoffset == 0 ) ++ { ++ return( PitchTable[ 0 ][ 0 ] ); ++ } ++ ++ noteshift = pitchoffset % 1200; ++ if ( noteshift < 0 ) ++ { ++ noteshift += 1200; ++ } ++ ++ note = noteshift / 100; ++ detune = ( noteshift % 100 ) / ( 100 / MAXDETUNE ); ++ octaveshift = ( pitchoffset - noteshift ) / 1200; ++ ++ if ( detune < 0 ) ++ { ++ detune += ( 100 / MAXDETUNE ); ++ note--; ++ if ( note < 0 ) ++ { ++ note += 12; ++ octaveshift--; ++ } ++ } ++ ++ scale = PitchTable[ note ][ detune ]; ++ ++ if ( octaveshift < 0 ) ++ { ++ scale >>= -octaveshift; ++ } ++ else ++ { ++ scale <<= octaveshift; ++ } ++ ++ return( scale ); ++ } ++ ++ ++/*--------------------------------------------------------------------- ++ Function: PITCH_LockEnd ++ ++ Used for determining the length of the functions to lock in memory. ++---------------------------------------------------------------------*/ ++ ++static void PITCH_LockEnd ++ ( ++ void ++ ) ++ ++ { ++ } diff --git a/games/jfsw/files/patch-jfsw_src_20051009 b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-unixvoc.c index 9f950c69475f..1fea8137da50 100644 --- a/games/jfsw/files/patch-jfsw_src_20051009 +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-unixvoc.c @@ -1,1630 +1,4 @@ -diff -Nur jfsw_src_20051009.orig/Makefile jfsw_src_20051009/Makefile ---- jfsw_src_20051009.orig/Makefile 2005-10-09 15:28:24.000000000 +0200 -+++ jfsw_src_20051009/Makefile 2005-10-10 15:02:08.000000000 +0200 -@@ -12,7 +12,7 @@ - NOASM = 0
-
- # Debugging options
--RELEASE?=0
-+RELEASE?=1
-
- # build locations
- SRC=source/
-@@ -56,11 +56,8 @@ - AUDIOLIB_FX=$(OBJ)mv_mix.$o \
- $(OBJ)mv_mix16.$o \
- $(OBJ)mvreverb.$o \
-- $(OBJ)pitch.$o \
-- $(OBJ)multivoc.$o \
- $(OBJ)ll_man.$o \
-- $(OBJ)fx_man.$o \
-- $(OBJ)dsoundout.$o
-+ $(OBJ)fx_man.$o
- AUDIOLIB_MUSIC=$(OBJ)midi.$o \
- $(OBJ)mpu401.$o \
- $(OBJ)music.$o
-@@ -157,9 +154,16 @@ - EDITOROBJS+= $(OBJ)buildres.$o
- endif
-
--ifeq ($(RENDERTYPE),SDL)
-- override CFLAGS+= $(subst -Dmain=SDL_main,,$(shell sdl-config --cflags))
-- AUDIOLIBOBJ=$(AUDIOLIB_MUSIC_STUB) $(AUDIOLIB_FX_STUB)
-+ifeq ($(RENDERTYPE),SDL) -+ override CFLAGS+= $(subst -Dmain=SDL_main,,$(shell sdl-config --cflags) -D__cdecl=" ") -+ LIBS+= $(shell sdl-config --libs) -lSDL_mixer -+ AUDIOLIB_FX+= $(OBJ)dsl.$o \ -+ $(OBJ)nodpmi.$o \ -+ $(OBJ)unixpitch.$o \ -+ $(OBJ)unixvoc.$o -+ -+ AUDIOLIB_MUSIC=$(OBJ)sdlmusic.$o $(OBJ)unixglob.$o -+ AUDIOLIBOBJ=$(AUDIOLIB_MUSIC) $(AUDIOLIB_FX)
-
- ifeq (1,$(HAVE_GTK2))
- override CFLAGS+= -DHAVE_GTK2 $(shell pkg-config --cflags gtk+-2.0)
-@@ -170,7 +174,11 @@ - GAMEOBJS+= $(OBJ)game_icon.$o
- EDITOROBJS+= $(OBJ)build_icon.$o
- endif
--ifeq ($(RENDERTYPE),WIN)
-+ifeq ($(RENDERTYPE),WIN) -+ AUDIOLIB_FX+= $(OBJ)audiolib_fx_fmod.$o \ -+ $(OBJ)dsoundout.$o \ -+ $(OBJ)pitch.$o \ -+ $(OBJ)multivoc.$o
- AUDIOLIBOBJ=$(AUDIOLIB_MUSIC) $(AUDIOLIB_FX)
- endif
-
-diff -Nur jfsw_src_20051009.orig/Makefile.deps jfsw_src_20051009/Makefile.deps ---- jfsw_src_20051009.orig/Makefile.deps 2005-10-09 15:28:24.000000000 +0200 -+++ jfsw_src_20051009/Makefile.deps 2005-10-10 15:02:08.000000000 +0200 -@@ -95,6 +95,11 @@ - $(OBJ)animlib.$o: $(SRC)jmact/animlib.c $(SRC)jmact/types.h $(SRC)jmact/develop.h $(SRC)jmact/util_lib.h $(SRC)jmact/animlib.h
-
- # jAudioLib objects
-+$(OBJ)dsl.$o: $(SRC)jaudiolib/dsl.c $(SRC)jaudiolib/util.h
-+$(OBJ)nodpmi.$o: $(SRC)jaudiolib/nodpmi.c $(SRC)jaudiolib/dpmi.h
-+$(OBJ)unixpitch.$o: $(SRC)jaudiolib/unixpitch.c $(SRC)jaudiolib/pitch.h
-+$(OBJ)unixvoc.$o: $(SRC)jaudiolib/unixvoc.c $(SRC)jaudiolib/usrhooks.h $(SRC)jaudiolib/linklist.h $(SRC)jaudiolib/pitch.h $(SRC)jaudiolib/multivoc.h $(SRC)jaudiolib/_multivc.h
-+
- $(OBJ)audiolib_fxstub.$o: $(SRC)jaudiolib/audiolib_fxstub.c $(SRC)jaudiolib/fx_man.h
- $(OBJ)audiolib_musicstub.$o: $(SRC)jaudiolib/audiolib_musicstub.c $(SRC)jaudiolib/music.h
-
-diff -Nur jfsw_src_20051009.orig/source/config.c jfsw_src_20051009/source/config.c ---- jfsw_src_20051009.orig/source/config.c 2005-10-09 15:28:26.000000000 +0200 -+++ jfsw_src_20051009/source/config.c 2005-10-10 15:02:08.000000000 +0200 -@@ -63,8 +63,8 @@ - //
- // Sound variables
- //
--int32 FXDevice = -1;
--int32 MusicDevice = -1;
-+int32 FXDevice = 1;
-+int32 MusicDevice = 1;
- int32 FXVolume = 192;
- int32 MusicVolume = 128;
- int32 NumVoices = 4;
-@@ -215,8 +215,8 @@ - ScreenWidth = 640;
- ScreenHeight = 480;
- ScreenBPP = 8;
-- FXDevice = -1;
-- MusicDevice = -1;
-+ FXDevice = 1;
-+ MusicDevice = 1;
- FXVolume = 192;
- MusicVolume = 128;
- NumVoices = 4;
-diff -Nur jfsw_src_20051009.orig/source/jaudiolib/debugio.h jfsw_src_20051009/source/jaudiolib/debugio.h ---- jfsw_src_20051009.orig/source/jaudiolib/debugio.h 1970-01-01 01:00:00.000000000 +0100 -+++ jfsw_src_20051009/source/jaudiolib/debugio.h 2005-10-10 15:02:08.000000000 +0200 -@@ -0,0 +1,30 @@ -+/* -+Copyright (C) 1994-1995 Apogee Software, Ltd. -+ -+This program is free software; you can redistribute it and/or -+modify it under the terms of the GNU 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 General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with this program; if not, write to the Free Software -+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+*/ -+#ifndef __DEBUGIO_H -+#define __DEBUGIO_H -+ -+void DB_SetXY( int x, int y ); -+void DB_PutChar( char ch ); -+int DB_PrintString( char *string ); -+int DB_PrintNum( int number ); -+int DB_PrintUnsigned( unsigned long number, int radix ); -+int DB_printf( char *fmt, ... ); -+ -+#endif -diff -Nur jfsw_src_20051009.orig/source/jaudiolib/dma.h jfsw_src_20051009/source/jaudiolib/dma.h ---- jfsw_src_20051009.orig/source/jaudiolib/dma.h 1970-01-01 01:00:00.000000000 +0100 -+++ jfsw_src_20051009/source/jaudiolib/dma.h 2005-10-10 15:02:08.000000000 +0200 -@@ -0,0 +1,83 @@ -+/* -+Copyright (C) 1994-1995 Apogee Software, Ltd. -+ -+This program is free software; you can redistribute it and/or -+modify it under the terms of the GNU 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 General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with this program; if not, write to the Free Software -+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+*/ -+/********************************************************************** -+ file: DMA.H -+ -+ author: James R. Dose -+ date: February 4, 1994 -+ -+ Public header file for DMA.C -+ -+ (c) Copyright 1994 James R. Dose. All Rights Reserved. -+**********************************************************************/ -+ -+#ifndef __DMA_H -+#define __DMA_H -+ -+enum DMA_ERRORS -+ { -+ DMA_Error = -1, -+ DMA_Ok = 0, -+ DMA_ChannelOutOfRange, -+ DMA_InvalidChannel -+ }; -+ -+enum DMA_Modes -+ { -+ DMA_SingleShotRead, -+ DMA_SingleShotWrite, -+ DMA_AutoInitRead, -+ DMA_AutoInitWrite -+ }; -+ -+char *DMA_ErrorString -+ ( -+ int ErrorNumber -+ ); -+ -+int DMA_VerifyChannel -+ ( -+ int channel -+ ); -+ -+int DMA_SetupTransfer -+ ( -+ int channel, -+ char *address, -+ int length, -+ int mode -+ ); -+ -+int DMA_EndTransfer -+ ( -+ int channel -+ ); -+ -+char *DMA_GetCurrentPos -+ ( -+ int channel -+ ); -+ -+int DMA_GetTransferCount -+ ( -+ int channel -+ ); -+ -+#endif -diff -Nur jfsw_src_20051009.orig/source/jaudiolib/dpmi.h jfsw_src_20051009/source/jaudiolib/dpmi.h ---- jfsw_src_20051009.orig/source/jaudiolib/dpmi.h 1970-01-01 01:00:00.000000000 +0100 -+++ jfsw_src_20051009/source/jaudiolib/dpmi.h 2005-10-10 15:02:08.000000000 +0200 -@@ -0,0 +1,43 @@ -+/* -+Copyright (C) 1994-1995 Apogee Software, Ltd. -+ -+This program is free software; you can redistribute it and/or -+modify it under the terms of the GNU 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 General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with this program; if not, write to the Free Software -+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+*/ -+/********************************************************************** -+ module: DPMI.H -+ -+ author: James R. Dose -+ date: March 31, 1994 -+ -+ Inline functions for performing DPMI calls. -+ -+ (c) Copyright 1994 James R. Dose. All Rights Reserved. -+**********************************************************************/ -+ -+#ifndef __DPMI_H -+#define __DPMI_H -+ -+enum DPMI_Errors -+ { -+ DPMI_Warning = -2, -+ DPMI_Error = -1, -+ DPMI_Ok = 0 -+ }; -+ -+int DPMI_GetDOSMemory( void **ptr, int *descriptor, unsigned length ); -+int DPMI_FreeDOSMemory( int descriptor ); -+#endif -diff -Nur jfsw_src_20051009.orig/source/jaudiolib/dsl.c jfsw_src_20051009/source/jaudiolib/dsl.c ---- jfsw_src_20051009.orig/source/jaudiolib/dsl.c 1970-01-01 01:00:00.000000000 +0100 -+++ jfsw_src_20051009/source/jaudiolib/dsl.c 2005-10-10 15:02:08.000000000 +0200 -@@ -0,0 +1,257 @@ -+/* -+Copyright (C) 2003-2004 Ryan C. Gordon. and James Bentler -+ -+This program is free software; you can redistribute it and/or -+modify it under the terms of the GNU 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 General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with this program; if not, write to the Free Software -+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+Originally written by Ryan C. Gordon. (icculus@clutteredmind.org) -+Adapted to work with JonoF's port by James Bentler (bentler@cs.umn.edu) -+ -+*/ -+#include <stdlib.h> -+#include <string.h> -+ -+#include "dsl.h" -+#include "util.h" -+ -+#include "SDL.h" -+#include "SDL_mixer.h" -+ -+extern volatile int MV_MixPage; -+ -+static int DSL_ErrorCode = DSL_Ok; -+ -+static int mixer_initialized; -+ -+static void ( *_CallBackFunc )( void ); -+static volatile char *_BufferStart; -+static int _BufferSize; -+static int _NumDivisions; -+static int _SampleRate; -+static int _remainder; -+ -+static Mix_Chunk *blank; -+static unsigned char *blank_buf; -+ -+/* -+possible todo ideas: cache sdl/sdl mixer error messages. -+*/ -+ -+char *DSL_ErrorString( int ErrorNumber ) -+{ -+ char *ErrorString; -+ -+ switch (ErrorNumber) { -+ case DSL_Warning: -+ case DSL_Error: -+ ErrorString = DSL_ErrorString(DSL_ErrorCode); -+ break; -+ -+ case DSL_Ok: -+ ErrorString = "SDL Driver ok."; -+ break; -+ -+ case DSL_SDLInitFailure: -+ ErrorString = "SDL Audio initialization failed."; -+ break; -+ -+ case DSL_MixerActive: -+ ErrorString = "SDL Mixer already initialized."; -+ break; -+ -+ case DSL_MixerInitFailure: -+ ErrorString = "SDL Mixer initialization failed."; -+ break; -+ -+ default: -+ ErrorString = "Unknown SDL Driver error."; -+ break; -+ } -+ -+ return ErrorString; -+} -+ -+static void DSL_SetErrorCode(int ErrorCode) -+{ -+ DSL_ErrorCode = ErrorCode; -+} -+ -+int DSL_Init( void ) -+{ -+ DSL_SetErrorCode(DSL_Ok); -+ -+ if (SDL_InitSubSystem(SDL_INIT_AUDIO) < 0) { -+ DSL_SetErrorCode(DSL_SDLInitFailure); -+ -+ return DSL_Error; -+ } -+ -+ return DSL_Ok; -+} -+ -+void DSL_Shutdown( void ) -+{ -+ DSL_StopPlayback(); -+} -+ -+static void mixer_callback(int chan, void *stream, int len, void *udata) -+{ -+ Uint8 *stptr; -+ Uint8 *fxptr; -+ int copysize; -+ -+ /* len should equal _BufferSize, else this is screwed up */ -+ -+ stptr = (Uint8 *)stream; -+ -+ if (_remainder > 0) { -+ copysize = min(len, _remainder); -+ -+ fxptr = (Uint8 *)(&_BufferStart[MV_MixPage * -+ _BufferSize]); -+ -+ memcpy(stptr, fxptr+(_BufferSize-_remainder), copysize); -+ -+ len -= copysize; -+ _remainder -= copysize; -+ -+ stptr += copysize; -+ } -+ -+ while (len > 0) { -+ /* new buffer */ -+ -+ _CallBackFunc(); -+ -+ fxptr = (Uint8 *)(&_BufferStart[MV_MixPage * -+ _BufferSize]); -+ -+ copysize = min(len, _BufferSize); -+ -+ memcpy(stptr, fxptr, copysize); -+ -+ len -= copysize; -+ -+ stptr += copysize; -+ } -+ -+ _remainder = len; -+} -+ -+int DSL_BeginBufferedPlayback( char *BufferStart, -+ int BufferSize, int NumDivisions, unsigned SampleRate, -+ int MixMode, void ( *CallBackFunc )( void ) ) -+{ -+ Uint16 format; -+ Uint8 *tmp; -+ int channels; -+ int chunksize; -+ -+ if (mixer_initialized) { -+ DSL_SetErrorCode(DSL_MixerActive); -+ -+ return DSL_Error; -+ } -+ -+ _CallBackFunc = CallBackFunc; -+ _BufferStart = BufferStart; -+ _BufferSize = (BufferSize / NumDivisions); -+ _NumDivisions = NumDivisions; -+ _SampleRate = SampleRate; -+ -+ _remainder = 0; -+ -+ format = (MixMode & SIXTEEN_BIT) ? AUDIO_S16SYS : AUDIO_U8; -+ channels = (MixMode & STEREO) ? 2 : 1; -+ -+/* -+ 23ms is typically ideal (11025,22050,44100) -+ 46ms isn't bad -+*/ -+ -+ chunksize = 512; -+ -+ if (SampleRate >= 16000) chunksize *= 2; -+ if (SampleRate >= 32000) chunksize *= 2; -+ -+/* -+// SDL mixer does this already -+ if (MixMode & SIXTEEN_BIT) chunksize *= 2; -+ if (MixMode & STEREO) chunksize *= 2; -+*/ -+ -+ if (Mix_OpenAudio(SampleRate, format, channels, chunksize) < 0) { -+ DSL_SetErrorCode(DSL_MixerInitFailure); -+ -+ return DSL_Error; -+ } -+ -+/* -+ Mix_SetPostMix(mixer_callback, NULL); -+*/ -+ /* have to use a channel because postmix will overwrite the music... */ -+ Mix_RegisterEffect(0, mixer_callback, NULL, NULL); -+ -+ /* create a dummy sample just to allocate that channel */ -+ blank_buf = (Uint8 *)malloc(4096); -+ memset(blank_buf, 0, 4096); -+ -+ blank = Mix_QuickLoad_RAW(blank_buf, 4096); -+ -+ Mix_PlayChannel(0, blank, -1); -+ -+ mixer_initialized = 1; -+ -+ return DSL_Ok; -+} -+ -+void DSL_StopPlayback( void ) -+{ -+ if (mixer_initialized) { -+ Mix_HaltChannel(0); -+ } -+ -+ if (blank != NULL) { -+ Mix_FreeChunk(blank); -+ } -+ -+ blank = NULL; -+ -+ if (blank_buf != NULL) { -+ free(blank_buf); -+ } -+ -+ blank_buf = NULL; -+ -+ if (mixer_initialized) { -+ Mix_CloseAudio(); -+ } -+ -+ mixer_initialized = 0; -+} -+ -+unsigned DSL_GetPlaybackRate( void ) -+{ -+ return _SampleRate; -+} -+ -+unsigned long DisableInterrupts( void ) -+{ -+ return 0; -+} -+ -+void RestoreInterrupts( unsigned long flags ) -+{ -+} -diff -Nur jfsw_src_20051009.orig/source/jaudiolib/dsl.h jfsw_src_20051009/source/jaudiolib/dsl.h ---- jfsw_src_20051009.orig/source/jaudiolib/dsl.h 1970-01-01 01:00:00.000000000 +0100 -+++ jfsw_src_20051009/source/jaudiolib/dsl.h 2005-10-10 15:02:08.000000000 +0200 -@@ -0,0 +1,50 @@ -+/* -+Copyright (C) 2003-2004 Ryan C. Gordon. and James Bentler -+ -+This program is free software; you can redistribute it and/or -+modify it under the terms of the GNU 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 General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with this program; if not, write to the Free Software -+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+Originally written by Ryan C. Gordon. (icculus@clutteredmind.org) -+Adapted to work with JonoF's port by James Bentler (bentler@cs.umn.edu) -+ -+*/ -+#ifndef AUDIOLIB__DSL_H -+#define AUDIOLIB__DSL_H -+ -+#define MONO_8BIT 0 -+#define STEREO 1 -+#define SIXTEEN_BIT 2 -+#define STEREO_16BIT ( STEREO | SIXTEEN_BIT ) -+ -+enum DSL_ERRORS -+ { -+ DSL_Warning = -2, -+ DSL_Error = -1, -+ DSL_Ok = 0, -+ DSL_SDLInitFailure, -+ DSL_MixerActive, -+ DSL_MixerInitFailure -+ }; -+ -+char *DSL_ErrorString( int ErrorNumber ); -+int DSL_Init( void ); -+void DSL_StopPlayback( void ); -+unsigned DSL_GetPlaybackRate( void ); -+int DSL_BeginBufferedPlayback( char *BufferStart, -+ int BufferSize, int NumDivisions, unsigned SampleRate, -+ int MixMode, void ( *CallBackFunc )( void ) ); -+void DSL_Shutdown( void ); -+ -+#endif -diff -Nur jfsw_src_20051009.orig/source/jaudiolib/interrup.h jfsw_src_20051009/source/jaudiolib/interrup.h ---- jfsw_src_20051009.orig/source/jaudiolib/interrup.h 1970-01-01 01:00:00.000000000 +0100 -+++ jfsw_src_20051009/source/jaudiolib/interrup.h 2005-10-10 15:02:08.000000000 +0200 -@@ -0,0 +1,50 @@ -+/* -+Copyright (C) 1994-1995 Apogee Software, Ltd. -+ -+This program is free software; you can redistribute it and/or -+modify it under the terms of the GNU 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 General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with this program; if not, write to the Free Software -+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+*/ -+/********************************************************************** -+ module: INTERRUP.H -+ -+ author: James R. Dose -+ date: March 31, 1994 -+ -+ Inline functions for disabling and restoring the interrupt flag. -+ -+ (c) Copyright 1994 James R. Dose. All Rights Reserved. -+**********************************************************************/ -+ -+#ifndef __INTERRUPT_H -+#define __INTERRUPT_H -+ -+unsigned long DisableInterrupts( void ); -+void RestoreInterrupts( unsigned long flags ); -+ -+#ifdef PLAT_DOS -+#pragma aux DisableInterrupts = \ -+ "pushfd", \ -+ "pop eax", \ -+ "cli" \ -+ modify [ eax ]; -+ -+#pragma aux RestoreInterrupts = \ -+ "push eax", \ -+ "popfd" \ -+ parm [ eax ]; -+#endif -+ -+#endif -diff -Nur jfsw_src_20051009.orig/source/jaudiolib/_multivc.h jfsw_src_20051009/source/jaudiolib/_multivc.h ---- jfsw_src_20051009.orig/source/jaudiolib/_multivc.h 2005-10-09 15:28:24.000000000 +0200 -+++ jfsw_src_20051009/source/jaudiolib/_multivc.h 2005-10-10 15:02:08.000000000 +0200 -@@ -67,8 +67,11 @@ - #define SILENCE_8BIT 0x80808080
- //#define SILENCE_16BIT_PAS 0
-
--//#define MixBufferSize 256
-+#ifdef WINDOWS
- #define MixBufferSize (MV_GetBufferSize(MV_RequestedMixRate))
-+#else
-+#define MixBufferSize 256
-+#endif
-
- #define NumberOfBuffers 16
- #define TotalBufferSize ( MixBufferSize * NumberOfBuffers )
-diff -Nur jfsw_src_20051009.orig/source/jaudiolib/nodpmi.c jfsw_src_20051009/source/jaudiolib/nodpmi.c ---- jfsw_src_20051009.orig/source/jaudiolib/nodpmi.c 1970-01-01 01:00:00.000000000 +0100 -+++ jfsw_src_20051009/source/jaudiolib/nodpmi.c 2005-10-10 15:02:08.000000000 +0200 -@@ -0,0 +1,50 @@ -+/* -+Copyright (C) 1994-1995 Apogee Software, Ltd. -+ -+This program is free software; you can redistribute it and/or -+modify it under the terms of the GNU 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 General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with this program; if not, write to the Free Software -+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+*/ -+/********************************************************************** -+ module: NODPMI.C -+ -+ Functions for faking DPMI calls. -+ -+**********************************************************************/ -+ -+#include <stdlib.h> -+#include <string.h> -+#include "dpmi.h" -+ -+#define TRUE ( 1 == 1 ) -+#define FALSE ( !TRUE ) -+ -+int DPMI_GetDOSMemory( void **ptr, int *descriptor, unsigned length ) -+{ -+ /* Lovely... */ -+ -+ *ptr = (void *)malloc(length); -+ -+ *descriptor = (int) *ptr; -+ -+ return (descriptor == 0) ? DPMI_Error : DPMI_Ok; -+} -+ -+int DPMI_FreeDOSMemory( int descriptor ) -+{ -+ free((void *)descriptor); -+ -+ return (descriptor == 0) ? DPMI_Error : DPMI_Ok; -+} -diff -Nur jfsw_src_20051009.orig/source/jaudiolib/platform.h jfsw_src_20051009/source/jaudiolib/platform.h ---- jfsw_src_20051009.orig/source/jaudiolib/platform.h 1970-01-01 01:00:00.000000000 +0100 -+++ jfsw_src_20051009/source/jaudiolib/platform.h 2005-10-10 15:02:08.000000000 +0200 -@@ -0,0 +1,60 @@ -+#ifndef _INCLUDE_PLATFORM_H_ -+#define _INCLUDE_PLATFORM_H_ -+ -+#if (!defined __EXPORT__) -+#define __EXPORT__ -+#endif -+ -+#if (defined __WATCOMC__) -+#define snprintf _snprintf -+#endif -+ -+static __inline unsigned short _swap16(unsigned short D) -+{ -+#if PLATFORM_MACOSX -+ register unsigned short returnValue; -+ __asm__ volatile("lhbrx %0,0,%1" -+ : "=r" (returnValue) -+ : "r" (&D) -+ ); -+ return returnValue; -+#else -+ return((D<<8)|(D>>8)); -+#endif -+} -+ -+static __inline unsigned int _swap32(unsigned int D) -+{ -+#if PLATFORM_MACOSX -+ register unsigned int returnValue; -+ __asm__ volatile("lwbrx %0,0,%1" -+ : "=r" (returnValue) -+ : "r" (&D) -+ ); -+ return returnValue; -+#else -+ return((D<<24)|((D<<8)&0x00FF0000)|((D>>8)&0x0000FF00)|(D>>24)); -+#endif -+} -+ -+#if PLATFORM_MACOSX -+#define PLATFORM_BIGENDIAN 1 -+#define BUILDSWAP_INTEL16(x) _swap16(x) -+#define BUILDSWAP_INTEL32(x) _swap32(x) -+#else -+#if __BYTE_ORDER == __LITTLE_ENDIAN -+#define PLATFORM_LITTLEENDIAN 1 -+#define BUILDSWAP_INTEL16(x) (x) -+#define BUILDSWAP_INTEL32(x) (x) -+#else -+#define PLATFORM_BIGENDIAN 1 -+#define BUILDSWAP_INTEL16(x) _swap16(x) -+#define BUILDSWAP_INTEL32(x) _swap32(x) -+#endif -+#endif -+ -+extern int has_altivec; /* PowerPC-specific. */ -+ -+#endif /* !defined _INCLUDE_PLATFORM_H_ */ -+ -+/* end of platform.h ... */ -diff -Nur jfsw_src_20051009.orig/source/jaudiolib/sdlmusic.c jfsw_src_20051009/source/jaudiolib/sdlmusic.c ---- jfsw_src_20051009.orig/source/jaudiolib/sdlmusic.c 1970-01-01 01:00:00.000000000 +0100 -+++ jfsw_src_20051009/source/jaudiolib/sdlmusic.c 2005-10-10 15:02:08.000000000 +0200 -@@ -0,0 +1,480 @@ -+/* -+Copyright (C) 2003-2004 Ryan C. Gordon. and James Bentler -+ -+This program is free software; you can redistribute it and/or -+modify it under the terms of the GNU 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 General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with this program; if not, write to the Free Software -+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+Originally written by Ryan C. Gordon. (icculus@clutteredmind.org) -+Adapted to work with JonoF's port by James Bentler (bentler@cs.umn.edu) -+ -+*/ -+/* -+ * A reimplementation of Jim Dose's FX_MAN routines, using SDL_mixer 1.2. -+ * Whee. FX_MAN is also known as the "Apogee Sound System", or "ASS" for -+ * short. How strangely appropriate that seems. -+ */ -+ -+#include <stdio.h> -+#include <stdlib.h> -+#include <stdarg.h> -+#include <string.h> -+#include <assert.h> -+ -+#include "types.h" -+#include "file_lib.h" -+#include "compat.h" -+#include "cache1d.h" -+ -+#ifndef MAX_PATH -+#define MAX_PATH 256 -+#endif -+ -+#if (defined __WATCOMC__) -+// This is probably out of date. --ryan. -+#include "dukesnd_watcom.h" -+#endif -+ -+#if (!defined __WATCOMC__) -+#define cdecl -+#endif -+ -+#include "SDL.h" -+#include "SDL_mixer.h" -+#include "music.h" -+ -+#define __FX_TRUE (1 == 1) -+#define __FX_FALSE (!__FX_TRUE) -+ -+#define DUKESND_DEBUG "DUKESND_DEBUG" -+ -+#ifndef min -+#define min(a, b) (((a) < (b)) ? (a) : (b)) -+#endif -+ -+#ifndef max -+#define max(a, b) (((a) > (b)) ? (a) : (b)) -+#endif -+ -+void GetUnixPathFromEnvironment( char *fullname, int32 length, const char *filename ); -+ -+int MUSIC_ErrorCode = MUSIC_Ok; -+ -+static char warningMessage[80]; -+static char errorMessage[80]; -+static int fx_initialized = 0; -+static int numChannels = MIX_CHANNELS; -+static void (*callback)(unsigned long); -+static int reverseStereo = 0; -+static int reverbDelay = 256; -+static int reverbLevel = 0; -+static int fastReverb = 0; -+static FILE *debug_file = NULL; -+static int initialized_debugging = 0; -+static int mixerIsStereo = 1; -+ -+// This gets called all over the place for information and debugging messages. -+// If the user set the DUKESND_DEBUG environment variable, the messages -+// go to the file that is specified in that variable. Otherwise, they -+// are ignored for the expense of the function call. If DUKESND_DEBUG is -+// set to "-" (without the quotes), then the output goes to stdout. -+static void musdebug(const char *fmt, ...) -+{ -+ va_list ap; -+ -+ if (debug_file) -+ { -+ fprintf(debug_file, "DUKEMUS: "); -+ va_start(ap, fmt); -+ vfprintf(debug_file, fmt, ap); -+ va_end(ap); -+ fprintf(debug_file, "\n"); -+ fflush(debug_file); -+ } // if -+} // musdebug -+ -+static void init_debugging(void) -+{ -+ const char *envr; -+ -+ if (initialized_debugging) -+ return; -+ -+ envr = getenv(DUKESND_DEBUG); -+ if (envr != NULL) -+ { -+ if (strcmp(envr, "-") == 0) -+ debug_file = stdout; -+ else -+ debug_file = fopen(envr, "w"); -+ -+ if (debug_file == NULL) -+ fprintf(stderr, "DUKESND: -WARNING- Could not open debug file!\n"); -+ else -+ setbuf(debug_file, NULL); -+ } // if -+ -+ initialized_debugging = 1; -+} // init_debugging -+ -+static void setWarningMessage(const char *msg) -+{ -+ strncpy(warningMessage, msg, sizeof (warningMessage)); -+ // strncpy() doesn't add the null char if there isn't room... -+ warningMessage[sizeof (warningMessage) - 1] = '\0'; -+ musdebug("Warning message set to [%s].", warningMessage); -+} // setErrorMessage -+ -+ -+static void setErrorMessage(const char *msg) -+{ -+ strncpy(errorMessage, msg, sizeof (errorMessage)); -+ // strncpy() doesn't add the null char if there isn't room... -+ errorMessage[sizeof (errorMessage) - 1] = '\0'; -+ musdebug("Error message set to [%s].", errorMessage); -+} // setErrorMessage -+ -+// The music functions... -+ -+char *MUSIC_ErrorString(int ErrorNumber) -+{ -+ switch (ErrorNumber) -+ { -+ case MUSIC_Warning: -+ return(warningMessage); -+ -+ case MUSIC_Error: -+ return(errorMessage); -+ -+ case MUSIC_Ok: -+ return("OK; no error."); -+ -+ case MUSIC_ASSVersion: -+ return("Incorrect sound library version."); -+ -+ case MUSIC_SoundCardError: -+ return("General sound card error."); -+ -+ case MUSIC_InvalidCard: -+ return("Invalid sound card."); -+ -+ case MUSIC_MidiError: -+ return("MIDI error."); -+ -+ case MUSIC_MPU401Error: -+ return("MPU401 error."); -+ -+ case MUSIC_TaskManError: -+ return("Task Manager error."); -+ -+ //case MUSIC_FMNotDetected: -+ // return("FM not detected error."); -+ -+ case MUSIC_DPMI_Error: -+ return("DPMI error."); -+ -+ default: -+ return("Unknown error."); -+ } // switch -+ -+ assert(0); // shouldn't hit this point. -+ return(NULL); -+} // MUSIC_ErrorString -+ -+ -+static int music_initialized = 0; -+static int music_context = 0; -+static int music_loopflag = MUSIC_PlayOnce; -+static char *music_songdata = NULL; -+static Mix_Music *music_musicchunk = NULL; -+ -+int MUSIC_Init(int SoundCard, int Address) -+{ -+ init_debugging(); -+ -+ musdebug("INIT! card=>%d, address=>%d...", SoundCard, Address); -+ -+ if (music_initialized) -+ { -+ setErrorMessage("Music system is already initialized."); -+ return(MUSIC_Error); -+ } // if -+ -+ SoundCard = 1; -+ -+ music_initialized = 1; -+ return(MUSIC_Ok); -+} // MUSIC_Init -+ -+ -+int MUSIC_Shutdown(void) -+{ -+ musdebug("shutting down sound subsystem."); -+ -+ MUSIC_StopSong(); -+ music_context = 0; -+ music_initialized = 0; -+ music_loopflag = MUSIC_PlayOnce; -+ return(MUSIC_Ok); -+} // MUSIC_Shutdown -+ -+ -+void MUSIC_SetMaxFMMidiChannel(int channel) -+{ -+ musdebug("STUB ... MUSIC_SetMaxFMMidiChannel(%d).\n", channel); -+} // MUSIC_SetMaxFMMidiChannel -+ -+ -+void MUSIC_SetVolume(int volume) -+{ -+ volume = max( 0, volume ); -+ volume = min( volume, 255 ); -+ -+ Mix_VolumeMusic(volume >> 1); // convert 0-255 to 0-128. -+} // MUSIC_SetVolume -+ -+ -+void MUSIC_SetMidiChannelVolume(int channel, int volume) -+{ -+ musdebug("STUB ... MUSIC_SetMidiChannelVolume(%d, %d).\n", channel, volume); -+} // MUSIC_SetMidiChannelVolume -+ -+ -+void MUSIC_ResetMidiChannelVolumes(void) -+{ -+ musdebug("STUB ... MUSIC_ResetMidiChannelVolumes().\n"); -+} // MUSIC_ResetMidiChannelVolumes -+ -+ -+int MUSIC_GetVolume(void) -+{ -+ return(Mix_VolumeMusic(-1) << 1); // convert 0-128 to 0-255. -+} // MUSIC_GetVolume -+ -+ -+void MUSIC_SetLoopFlag(int loopflag) -+{ -+ music_loopflag = loopflag; -+} // MUSIC_SetLoopFlag -+ -+ -+int MUSIC_SongPlaying(void) -+{ -+ return((Mix_PlayingMusic()) ? __FX_TRUE : __FX_FALSE); -+} // MUSIC_SongPlaying -+ -+ -+void MUSIC_Continue(void) -+{ -+ if (Mix_PausedMusic()) -+ Mix_ResumeMusic(); -+ else if (music_songdata) -+ MUSIC_PlaySong(music_songdata, MUSIC_PlayOnce); -+} // MUSIC_Continue -+ -+ -+void MUSIC_Pause(void) -+{ -+ Mix_PauseMusic(); -+} // MUSIC_Pause -+ -+ -+int MUSIC_StopSong(void) -+{ -+ //if (!fx_initialized) -+ if (!Mix_QuerySpec(NULL, NULL, NULL)) -+ { -+ setErrorMessage("Need FX system initialized, too. Sorry."); -+ return(MUSIC_Error); -+ } // if -+ -+ if ( (Mix_PlayingMusic()) || (Mix_PausedMusic()) ) -+ Mix_HaltMusic(); -+ -+ if (music_musicchunk) -+ Mix_FreeMusic(music_musicchunk); -+ -+ music_songdata = NULL; -+ music_musicchunk = NULL; -+ return(MUSIC_Ok); -+} // MUSIC_StopSong -+ -+ -+int MUSIC_PlaySong(unsigned char *song, int loopflag) -+{ -+ //SDL_RWops *rw; -+ -+ MUSIC_StopSong(); -+ -+ music_songdata = song; -+ -+ // !!! FIXME: This could be a problem...SDL/SDL_mixer wants a RWops, which -+ // !!! FIXME: is an i/o abstraction. Since we already have the MIDI data -+ // !!! FIXME: in memory, we fake it with a memory-based RWops. None of -+ // !!! FIXME: this is a problem, except the RWops wants to know how big -+ // !!! FIXME: its memory block is (so it can do things like seek on an -+ // !!! FIXME: offset from the end of the block), and since we don't have -+ // !!! FIXME: this information, we have to give it SOMETHING. -+ -+ /* !!! ARGH! There's no LoadMUS_RW ?! -+ rw = SDL_RWFromMem((void *) song, (10 * 1024) * 1024); // yikes. -+ music_musicchunk = Mix_LoadMUS_RW(rw); -+ Mix_PlayMusic(music_musicchunk, (loopflag == MUSIC_PlayOnce) ? 0 : -1); -+ */ -+ -+ return(MUSIC_Ok); -+} // MUSIC_PlaySong -+ -+ -+extern char ApogeePath[256] = "/tmp/"; -+ -+// Duke3D-specific. --ryan. -+void PlayMusic(char *_filename) -+{ -+ //char filename[MAX_PATH]; -+ //strcpy(filename, _filename); -+ //FixFilePath(filename); -+ -+ char filename[MAX_PATH]; -+ long handle; -+ long size; -+ void *song; -+ long rc; -+ -+ MUSIC_StopSong(); -+ -+ // Read from a groupfile, write it to disk so SDL_mixer can read it. -+ // Lame. --ryan. -+ handle = kopen4load(_filename, 0); -+ if (handle == -1) -+ return; -+ -+ size = kfilelength(handle); -+ if (size == -1) -+ { -+ kclose(handle); -+ return; -+ } // if -+ -+ song = malloc(size); -+ if (song == NULL) -+ { -+ kclose(handle); -+ return; -+ } // if -+ -+ rc = kread(handle, song, size); -+ kclose(handle); -+ if (rc != size) -+ { -+ free(song); -+ return; -+ } // if -+ -+ // save the file somewhere, so SDL_mixer can load it -+ GetUnixPathFromEnvironment(filename, MAX_PATH, "tmpsong.mid"); -+ handle = SafeOpenWrite(filename, filetype_binary); -+ -+ SafeWrite(handle, song, size); -+ close(handle); -+ free(song); -+ -+ //music_songdata = song; -+ -+ music_musicchunk = Mix_LoadMUS(filename); -+ if (music_musicchunk != NULL) -+ { -+ // !!! FIXME: I set the music to loop. Hope that's okay. --ryan. -+ Mix_PlayMusic(music_musicchunk, -1); -+ } // if -+} -+ -+ -+void MUSIC_SetContext(int context) -+{ -+ musdebug("STUB ... MUSIC_SetContext().\n"); -+ music_context = context; -+} // MUSIC_SetContext -+ -+ -+int MUSIC_GetContext(void) -+{ -+ return(music_context); -+} // MUSIC_GetContext -+ -+ -+void MUSIC_SetSongTick(unsigned long PositionInTicks) -+{ -+ musdebug("STUB ... MUSIC_SetSongTick().\n"); -+} // MUSIC_SetSongTick -+ -+ -+void MUSIC_SetSongTime(unsigned long milliseconds) -+{ -+ musdebug("STUB ... MUSIC_SetSongTime().\n"); -+}// MUSIC_SetSongTime -+ -+ -+void MUSIC_SetSongPosition(int measure, int beat, int tick) -+{ -+ musdebug("STUB ... MUSIC_SetSongPosition().\n"); -+} // MUSIC_SetSongPosition -+ -+ -+void MUSIC_GetSongPosition(songposition *pos) -+{ -+ musdebug("STUB ... MUSIC_GetSongPosition().\n"); -+} // MUSIC_GetSongPosition -+ -+ -+void MUSIC_GetSongLength(songposition *pos) -+{ -+ musdebug("STUB ... MUSIC_GetSongLength().\n"); -+} // MUSIC_GetSongLength -+ -+ -+int MUSIC_FadeVolume(int tovolume, int milliseconds) -+{ -+ Mix_FadeOutMusic(milliseconds); -+ return(MUSIC_Ok); -+} // MUSIC_FadeVolume -+ -+ -+int MUSIC_FadeActive(void) -+{ -+ return((Mix_FadingMusic() == MIX_FADING_OUT) ? __FX_TRUE : __FX_FALSE); -+} // MUSIC_FadeActive -+ -+ -+void MUSIC_StopFade(void) -+{ -+ musdebug("STUB ... MUSIC_StopFade().\n"); -+} // MUSIC_StopFade -+ -+ -+void MUSIC_RerouteMidiChannel(int channel, int cdecl (*function)( int event, int c1, int c2 )) -+{ -+ musdebug("STUB ... MUSIC_RerouteMidiChannel().\n"); -+} // MUSIC_RerouteMidiChannel -+ -+ -+void MUSIC_RegisterTimbreBank(unsigned char *timbres) -+{ -+ musdebug("STUB ... MUSIC_RegisterTimbreBank().\n"); -+} // MUSIC_RegisterTimbreBank -+ -+ -+void MUSIC_Update(void) -+{ -+} -diff -Nur jfsw_src_20051009.orig/source/jaudiolib/unixglob.c jfsw_src_20051009/source/jaudiolib/unixglob.c ---- jfsw_src_20051009.orig/source/jaudiolib/unixglob.c 1970-01-01 01:00:00.000000000 +0100 -+++ jfsw_src_20051009/source/jaudiolib/unixglob.c 2005-10-10 15:02:08.000000000 +0200 -@@ -0,0 +1,152 @@ -+/* -+Copyright (C) 2003-2004 Ryan C. Gordon. and James Bentler -+ -+This program is free software; you can redistribute it and/or -+modify it under the terms of the GNU 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 General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with this program; if not, write to the Free Software -+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+Originally written by Ryan C. Gordon. (icculus@clutteredmind.org) -+Adapted to work with JonoF's port by James Bentler (bentler@cs.umn.edu) -+ -+*/ -+ -+static char ApogeePath[256] = "/tmp/"; -+ -+#define PATH_SEP_CHAR '/' -+#define PATH_SEP_STR "/" -+#define ROOTDIR "/" -+#define CURDIR "./" -+ -+#include "types.h" -+#include "compat.h" -+#include <dirent.h> -+#include <errno.h> -+ -+#define Error printf -+ -+#ifndef MAX_PATH -+#define MAX_PATH 256 -+#endif -+ -+void FixFilePath(char *filename) -+{ -+ char *ptr; -+ char *lastsep = filename; -+ -+ if ((!filename) || (*filename == '\0')) -+ return; -+ -+ if (access(filename, F_OK) == 0) /* File exists; we're good to go. */ -+ return; -+ -+ for (ptr = filename; 1; ptr++) -+ { -+ if (*ptr == '\\') -+ *ptr = PATH_SEP_CHAR; -+ -+ if ((*ptr == PATH_SEP_CHAR) || (*ptr == '\0')) -+ { -+ char pch = *ptr; -+ struct dirent *dent = NULL; -+ DIR *dir; -+ -+ if ((pch == PATH_SEP_CHAR) && (*(ptr + 1) == '\0')) -+ return; /* eos is pathsep; we're done. */ -+ -+ if (lastsep == ptr) -+ continue; /* absolute path; skip to next one. */ -+ -+ *ptr = '\0'; -+ if (lastsep == filename) { -+ dir = opendir((*lastsep == PATH_SEP_CHAR) ? ROOTDIR : CURDIR); -+ -+ if (*lastsep == PATH_SEP_CHAR) { -+ lastsep++; -+ } -+ } -+ else -+ { -+ *lastsep = '\0'; -+ dir = opendir(filename); -+ *lastsep = PATH_SEP_CHAR; -+ lastsep++; -+ } -+ -+ if (dir == NULL) -+ { -+ *ptr = PATH_SEP_CHAR; -+ return; /* maybe dir doesn't exist? give up. */ -+ } -+ -+ while ((dent = readdir(dir)) != NULL) -+ { -+ if (strcasecmp(dent->d_name, lastsep) == 0) -+ { -+ /* found match; replace it. */ -+ strcpy(lastsep, dent->d_name); -+ break; -+ } -+ } -+ -+ closedir(dir); -+ *ptr = pch; -+ lastsep = ptr; -+ -+ if (dent == NULL) -+ return; /* no match. oh well. */ -+ -+ if (pch == '\0') /* eos? */ -+ return; -+ } -+ } -+} -+ -+int32 SafeOpenWrite (const char *_filename, int32 filetype) -+{ -+ int handle; -+ char filename[MAX_PATH]; -+ strncpy(filename, _filename, sizeof (filename)); -+ filename[sizeof (filename) - 1] = '\0'; -+ FixFilePath(filename); -+ -+ handle = open(filename,O_RDWR | O_BINARY | O_CREAT | O_TRUNC -+ , S_IREAD | S_IWRITE); -+ -+ if (handle == -1) -+ Error ("Error opening %s: %s",filename,strerror(errno)); -+ -+ return handle; -+} -+ -+ -+void SafeWrite (int32 handle, void *buffer, int32 count) -+{ -+ unsigned iocount; -+ -+ while (count) -+ { -+ iocount = count > 0x8000 ? 0x8000 : count; -+ if (write (handle,buffer,iocount) != (int)iocount) -+ Error ("File write failure writing %ld bytes",count); -+ buffer = (void *)( (byte *)buffer + iocount ); -+ count -= iocount; -+ } -+} -+ -+ -+ -+void GetUnixPathFromEnvironment( char *fullname, int32 length, const char *filename ) -+{ -+ snprintf(fullname, length-1, "%s%s", ApogeePath, filename); -+} -diff -Nur jfsw_src_20051009.orig/source/jaudiolib/unixpitch.c jfsw_src_20051009/source/jaudiolib/unixpitch.c ---- jfsw_src_20051009.orig/source/jaudiolib/unixpitch.c 1970-01-01 01:00:00.000000000 +0100 -+++ jfsw_src_20051009/source/jaudiolib/unixpitch.c 2005-10-10 15:02:08.000000000 +0200 -@@ -0,0 +1,212 @@ -+/* -+Copyright (C) 1994-1995 Apogee Software, Ltd. -+ -+This program is free software; you can redistribute it and/or -+modify it under the terms of the GNU 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 General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with this program; if not, write to the Free Software -+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+*/ -+/********************************************************************** -+ module: PITCH.C -+ -+ author: James R. Dose -+ date: June 14, 1993 -+ -+ Routines for pitch scaling. -+ -+ (c) Copyright 1993 James R. Dose. All Rights Reserved. -+**********************************************************************/ -+ -+#include <stdlib.h> -+//#include <math.h> -+#include "dpmi.h" -+#include "standard.h" -+#include "pitch.h" -+ -+#define MAXDETUNE 25 -+ -+static unsigned long PitchTable[ 12 ][ MAXDETUNE ] = -+ { -+ { 0x10000, 0x10097, 0x1012f, 0x101c7, 0x10260, 0x102f9, 0x10392, 0x1042c, -+ 0x104c6, 0x10561, 0x105fb, 0x10696, 0x10732, 0x107ce, 0x1086a, 0x10907, -+ 0x109a4, 0x10a41, 0x10adf, 0x10b7d, 0x10c1b, 0x10cba, 0x10d59, 0x10df8, -+ 0x10e98 }, -+ { 0x10f38, 0x10fd9, 0x1107a, 0x1111b, 0x111bd, 0x1125f, 0x11302, 0x113a5, -+ 0x11448, 0x114eb, 0x1158f, 0x11634, 0x116d8, 0x1177e, 0x11823, 0x118c9, -+ 0x1196f, 0x11a16, 0x11abd, 0x11b64, 0x11c0c, 0x11cb4, 0x11d5d, 0x11e06, -+ 0x11eaf }, -+ { 0x11f59, 0x12003, 0x120ae, 0x12159, 0x12204, 0x122b0, 0x1235c, 0x12409, -+ 0x124b6, 0x12563, 0x12611, 0x126bf, 0x1276d, 0x1281c, 0x128cc, 0x1297b, -+ 0x12a2b, 0x12adc, 0x12b8d, 0x12c3e, 0x12cf0, 0x12da2, 0x12e55, 0x12f08, -+ 0x12fbc }, -+ { 0x1306f, 0x13124, 0x131d8, 0x1328d, 0x13343, 0x133f9, 0x134af, 0x13566, -+ 0x1361d, 0x136d5, 0x1378d, 0x13846, 0x138fe, 0x139b8, 0x13a72, 0x13b2c, -+ 0x13be6, 0x13ca1, 0x13d5d, 0x13e19, 0x13ed5, 0x13f92, 0x1404f, 0x1410d, -+ 0x141cb }, -+ { 0x1428a, 0x14349, 0x14408, 0x144c8, 0x14588, 0x14649, 0x1470a, 0x147cc, -+ 0x1488e, 0x14951, 0x14a14, 0x14ad7, 0x14b9b, 0x14c5f, 0x14d24, 0x14dea, -+ 0x14eaf, 0x14f75, 0x1503c, 0x15103, 0x151cb, 0x15293, 0x1535b, 0x15424, -+ 0x154ee }, -+ { 0x155b8, 0x15682, 0x1574d, 0x15818, 0x158e4, 0x159b0, 0x15a7d, 0x15b4a, -+ 0x15c18, 0x15ce6, 0x15db4, 0x15e83, 0x15f53, 0x16023, 0x160f4, 0x161c5, -+ 0x16296, 0x16368, 0x1643a, 0x1650d, 0x165e1, 0x166b5, 0x16789, 0x1685e, -+ 0x16934 }, -+ { 0x16a09, 0x16ae0, 0x16bb7, 0x16c8e, 0x16d66, 0x16e3e, 0x16f17, 0x16ff1, -+ 0x170ca, 0x171a5, 0x17280, 0x1735b, 0x17437, 0x17513, 0x175f0, 0x176ce, -+ 0x177ac, 0x1788a, 0x17969, 0x17a49, 0x17b29, 0x17c09, 0x17cea, 0x17dcc, -+ 0x17eae }, -+ { 0x17f91, 0x18074, 0x18157, 0x1823c, 0x18320, 0x18406, 0x184eb, 0x185d2, -+ 0x186b8, 0x187a0, 0x18888, 0x18970, 0x18a59, 0x18b43, 0x18c2d, 0x18d17, -+ 0x18e02, 0x18eee, 0x18fda, 0x190c7, 0x191b5, 0x192a2, 0x19391, 0x19480, -+ 0x1956f }, -+ { 0x1965f, 0x19750, 0x19841, 0x19933, 0x19a25, 0x19b18, 0x19c0c, 0x19d00, -+ 0x19df4, 0x19ee9, 0x19fdf, 0x1a0d5, 0x1a1cc, 0x1a2c4, 0x1a3bc, 0x1a4b4, -+ 0x1a5ad, 0x1a6a7, 0x1a7a1, 0x1a89c, 0x1a998, 0x1aa94, 0x1ab90, 0x1ac8d, -+ 0x1ad8b }, -+ { 0x1ae89, 0x1af88, 0x1b088, 0x1b188, 0x1b289, 0x1b38a, 0x1b48c, 0x1b58f, -+ 0x1b692, 0x1b795, 0x1b89a, 0x1b99f, 0x1baa4, 0x1bbaa, 0x1bcb1, 0x1bdb8, -+ 0x1bec0, 0x1bfc9, 0x1c0d2, 0x1c1dc, 0x1c2e6, 0x1c3f1, 0x1c4fd, 0x1c609, -+ 0x1c716 }, -+ { 0x1c823, 0x1c931, 0x1ca40, 0x1cb50, 0x1cc60, 0x1cd70, 0x1ce81, 0x1cf93, -+ 0x1d0a6, 0x1d1b9, 0x1d2cd, 0x1d3e1, 0x1d4f6, 0x1d60c, 0x1d722, 0x1d839, -+ 0x1d951, 0x1da69, 0x1db82, 0x1dc9c, 0x1ddb6, 0x1ded1, 0x1dfec, 0x1e109, -+ 0x1e225 }, -+ { 0x1e343, 0x1e461, 0x1e580, 0x1e6a0, 0x1e7c0, 0x1e8e0, 0x1ea02, 0x1eb24, -+ 0x1ec47, 0x1ed6b, 0x1ee8f, 0x1efb4, 0x1f0d9, 0x1f1ff, 0x1f326, 0x1f44e, -+ 0x1f576, 0x1f69f, 0x1f7c9, 0x1f8f3, 0x1fa1e, 0x1fb4a, 0x1fc76, 0x1fda3, -+ 0x1fed1 } -+ }; -+ -+ -+//static int PITCH_Installed = FALSE; -+ -+ -+/*--------------------------------------------------------------------- -+ Function: PITCH_Init -+ -+ Initializes pitch table. -+---------------------------------------------------------------------*/ -+/* -+void PITCH_Init -+ ( -+ void -+ ) -+ -+ { -+ int note; -+ int detune; -+ -+ if ( !PITCH_Installed ) -+ { -+ for( note = 0; note < 12; note++ ) -+ { -+ for( detune = 0; detune < MAXDETUNE; detune++ ) -+ { -+ PitchTable[ note ][ detune ] = 0x10000 * -+ pow( 2, ( note * MAXDETUNE + detune ) / ( 12.0 * MAXDETUNE ) ); -+ } -+ } -+ -+ PITCH_Installed = TRUE; -+ } -+ } -+*/ -+ -+/********************************************************************** -+ -+ Memory locked functions: -+ -+**********************************************************************/ -+ -+ -+#define PITCH_LockStart PITCH_GetScale -+ -+ -+/*--------------------------------------------------------------------- -+ Function: PITCH_GetScale -+ -+ Returns a fixed-point value to scale number the specified amount. -+---------------------------------------------------------------------*/ -+ -+unsigned long PITCH_GetScale -+ ( -+ int pitchoffset -+ ) -+ -+ { -+ unsigned long scale; -+ int octaveshift; -+ int noteshift; -+ int note; -+ int detune; -+ -+// if ( !PITCH_Installed ) -+// { -+// PITCH_Init(); -+// } -+ -+ if ( pitchoffset == 0 ) -+ { -+ return( PitchTable[ 0 ][ 0 ] ); -+ } -+ -+ noteshift = pitchoffset % 1200; -+ if ( noteshift < 0 ) -+ { -+ noteshift += 1200; -+ } -+ -+ note = noteshift / 100; -+ detune = ( noteshift % 100 ) / ( 100 / MAXDETUNE ); -+ octaveshift = ( pitchoffset - noteshift ) / 1200; -+ -+ if ( detune < 0 ) -+ { -+ detune += ( 100 / MAXDETUNE ); -+ note--; -+ if ( note < 0 ) -+ { -+ note += 12; -+ octaveshift--; -+ } -+ } -+ -+ scale = PitchTable[ note ][ detune ]; -+ -+ if ( octaveshift < 0 ) -+ { -+ scale >>= -octaveshift; -+ } -+ else -+ { -+ scale <<= octaveshift; -+ } -+ -+ return( scale ); -+ } -+ -+ -+/*--------------------------------------------------------------------- -+ Function: PITCH_LockEnd -+ -+ Used for determining the length of the functions to lock in memory. -+---------------------------------------------------------------------*/ -+ -+static void PITCH_LockEnd -+ ( -+ void -+ ) -+ -+ { -+ } -diff -Nur jfsw_src_20051009.orig/source/jaudiolib/unixvoc.c jfsw_src_20051009/source/jaudiolib/unixvoc.c ---- jfsw_src_20051009.orig/source/jaudiolib/unixvoc.c 1970-01-01 01:00:00.000000000 +0100 +--- jfsw_src_20051009/source/jaudiolib/unixvoc.c.orig 1970-01-01 01:00:00.000000000 +0100 +++ jfsw_src_20051009/source/jaudiolib/unixvoc.c 2005-10-10 15:02:08.000000000 +0200 @@ -0,0 +1,2877 @@ +/* @@ -4504,94 +2878,3 @@ diff -Nur jfsw_src_20051009.orig/source/jaudiolib/unixvoc.c jfsw_src_20051009/so + + return( MV_Ok ); + } -diff -Nur jfsw_src_20051009.orig/source/jaudiolib/util.h jfsw_src_20051009/source/jaudiolib/util.h ---- jfsw_src_20051009.orig/source/jaudiolib/util.h 1970-01-01 01:00:00.000000000 +0100 -+++ jfsw_src_20051009/source/jaudiolib/util.h 2005-10-10 15:02:08.000000000 +0200 -@@ -0,0 +1,12 @@ -+#ifndef AUDIOLIB__UTIL_H -+#define AUDIOLIB__UTIL_H -+ -+#ifndef min -+#define min(a, b) ((a) < (b) ? (a) : (b)) -+#endif -+ -+#ifndef max -+#define max(a, b) ((a) > (b) ? (a) : (b)) -+#endif -+ -+#endif -diff -Nur jfsw_src_20051009.orig/source/lists.h jfsw_src_20051009/source/lists.h ---- jfsw_src_20051009.orig/source/lists.h 2005-10-09 15:28:24.000000000 +0200 -+++ jfsw_src_20051009/source/lists.h 2005-10-10 15:02:08.000000000 +0200 -@@ -57,7 +57,7 @@ - ((LIST) nodep)->Next->Prev = ((LIST) nodep)->Prev)
-
-
-- #define TRAVERSE(l, o, n) ASSERT(((LIST)l)->Next && ((LIST)l)->Prev); for ((LIST) o = ((LIST)l)->Next; \
-+ #define TRAVERSE(l, o, n) ASSERT(((LIST)l)->Next && ((LIST)l)->Prev); for (o = ((LIST)l)->Next; \
- n = o->Next, (LIST) o != (LIST) l; \
- o = n)
-
-diff -Nur jfsw_src_20051009.orig/source/sounds.c jfsw_src_20051009/source/sounds.c ---- jfsw_src_20051009.orig/source/sounds.c 2005-10-09 15:28:24.000000000 +0200 -+++ jfsw_src_20051009/source/sounds.c 2005-10-10 15:02:08.000000000 +0200 -@@ -392,6 +392,7 @@ - if (DemoMode)
- return(MUSIC_Error);
-
-+#ifdef WINDOWS
- if (SongPtr)
- StopSong();
-
-@@ -412,7 +413,16 @@ - //DSPRINTF(ds,"Playing song");
- //MONO_PRINT(ds);
-
-- return((int)MUSIC_PlaySong(SongPtr, loopflag));
-+ return((int)MUSIC_PlaySong(SongPtr, loopflag)); -+
-+#else
-+ void PlayMusic(char *_filename);
-+ if(MusicDevice < 0) return;
-+
-+ // FIXME: I need this to get the music volume initialized (not sure why) -- Jim Bentler
-+ MUSIC_SetVolume( MusicVolume );
-+ PlayMusic(song_file_name);
-+#endif
- }
-
- VOID
---- jfsw_src_20051009/source/game.c.orig 2005-10-09 15:28:24.000000000 +0000 -+++ jfsw_src_20051009/source/game.c 2010-03-17 07:30:51.119214522 +0000 -@@ -197,7 +197,7 @@ - TRUE, // fx on
- TRUE, // Music on
- TRUE, // talking
--TRUE, // ambient
-+FALSE, // ambient
- FALSE, // Flip Stereo
-
- // Network game settings
-@@ -5182,7 +5182,10 @@ - angvel = info.dyaw >> 8;
- }
-
-- svel -= info.dx;
-+ if (!running) svel -= (info.dx / 8.75); -+ else svel -= (info.dx / 4.375);
-+ if (!running) vel -= (info.dpitch / 8.75); -+ else vel -= (info.dpitch / 4.375); -
- switch (ControllerType)
- {
---- jfsw_src_20051009/source/menus.c.orig 2010-03-17 07:27:03.425230860 +0000 -+++ jfsw_src_20051009/source/menus.c 2010-03-17 07:27:14.823211050 +0000 -@@ -196,7 +196,7 @@ - {DefInert(0, NULL), OPT_XSIDE, OPT_LINE(3), 0, m_defshade, 0, NULL, NULL, NULL},
-
- //{DefButton(btn_talking, 0, "Talking"), OPT_XS, OPT_LINE(4), 1, m_defshade, 0, NULL, MNU_FxCheck, NULL},
-- {DefButton(btn_ambience, 0, "Ambience"), OPT_XS, OPT_LINE(4), 1, m_defshade, 0, NULL, MNU_FxCheck, NULL},
-+ //{DefButton(btn_ambience, 0, "Ambience"), OPT_XS, OPT_LINE(4), 1, m_defshade, 0, NULL, MNU_FxCheck, NULL},
- {DefButton(btn_flipstereo, 0, "Flip Stereo"), OPT_XS, OPT_LINE(5), 1, m_defshade, 0, NULL, MNU_FxCheck, NULL},
- //{DefButton(btn_playcd, 0, "Play CD"), OPT_XS, OPT_LINE(6), 1, m_defshade, 0, NULL, NULL, NULL},
- {DefNone}
diff --git a/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-util.h b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-util.h new file mode 100644 index 000000000000..2ee258083a99 --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-jaudiolib-util.h @@ -0,0 +1,15 @@ +--- jfsw_src_20051009/source/jaudiolib/util.h.orig 1970-01-01 01:00:00.000000000 +0100 ++++ jfsw_src_20051009/source/jaudiolib/util.h 2005-10-10 15:02:08.000000000 +0200 +@@ -0,0 +1,12 @@ ++#ifndef AUDIOLIB__UTIL_H ++#define AUDIOLIB__UTIL_H ++ ++#ifndef min ++#define min(a, b) ((a) < (b) ? (a) : (b)) ++#endif ++ ++#ifndef max ++#define max(a, b) ((a) > (b) ? (a) : (b)) ++#endif ++ ++#endif diff --git a/games/jfsw/files/patch-jfsw_src_20051009-source-lists.h b/games/jfsw/files/patch-jfsw_src_20051009-source-lists.h new file mode 100644 index 000000000000..6fd51115da5d --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-lists.h @@ -0,0 +1,11 @@ +--- jfsw_src_20051009/source/lists.h.orig 2005-10-09 15:28:24.000000000 +0200 ++++ jfsw_src_20051009/source/lists.h 2005-10-10 15:02:08.000000000 +0200 +@@ -57,7 +57,7 @@ + ((LIST) nodep)->Next->Prev = ((LIST) nodep)->Prev) + + +- #define TRAVERSE(l, o, n) ASSERT(((LIST)l)->Next && ((LIST)l)->Prev); for ((LIST) o = ((LIST)l)->Next; \ ++ #define TRAVERSE(l, o, n) ASSERT(((LIST)l)->Next && ((LIST)l)->Prev); for (o = ((LIST)l)->Next; \ + n = o->Next, (LIST) o != (LIST) l; \ + o = n) + diff --git a/games/jfsw/files/patch-jfsw_src_20051009-source-menus.c b/games/jfsw/files/patch-jfsw_src_20051009-source-menus.c new file mode 100644 index 000000000000..0726c78bc5db --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-menus.c @@ -0,0 +1,11 @@ +--- jfsw_src_20051009/source/menus.c.orig.orig 2010-03-17 07:27:03.425230860 +0000 ++++ jfsw_src_20051009/source/menus.c 2010-03-17 07:27:14.823211050 +0000 +@@ -196,7 +196,7 @@ + {DefInert(0, NULL), OPT_XSIDE, OPT_LINE(3), 0, m_defshade, 0, NULL, NULL, NULL}, + + //{DefButton(btn_talking, 0, "Talking"), OPT_XS, OPT_LINE(4), 1, m_defshade, 0, NULL, MNU_FxCheck, NULL}, +- {DefButton(btn_ambience, 0, "Ambience"), OPT_XS, OPT_LINE(4), 1, m_defshade, 0, NULL, MNU_FxCheck, NULL}, ++ //{DefButton(btn_ambience, 0, "Ambience"), OPT_XS, OPT_LINE(4), 1, m_defshade, 0, NULL, MNU_FxCheck, NULL}, + {DefButton(btn_flipstereo, 0, "Flip Stereo"), OPT_XS, OPT_LINE(5), 1, m_defshade, 0, NULL, MNU_FxCheck, NULL}, + //{DefButton(btn_playcd, 0, "Play CD"), OPT_XS, OPT_LINE(6), 1, m_defshade, 0, NULL, NULL, NULL}, + {DefNone} diff --git a/games/jfsw/files/patch-jfsw_src_20051009-source-sounds.c b/games/jfsw/files/patch-jfsw_src_20051009-source-sounds.c new file mode 100644 index 000000000000..6c4bff03237b --- /dev/null +++ b/games/jfsw/files/patch-jfsw_src_20051009-source-sounds.c @@ -0,0 +1,28 @@ +--- jfsw_src_20051009/source/sounds.c.orig 2005-10-09 15:28:24.000000000 +0200 ++++ jfsw_src_20051009/source/sounds.c 2005-10-10 15:02:08.000000000 +0200 +@@ -392,6 +392,7 @@ + if (DemoMode) + return(MUSIC_Error); + ++#ifdef WINDOWS + if (SongPtr) + StopSong(); + +@@ -412,7 +413,16 @@ + //DSPRINTF(ds,"Playing song"); + //MONO_PRINT(ds); + +- return((int)MUSIC_PlaySong(SongPtr, loopflag)); ++ return((int)MUSIC_PlaySong(SongPtr, loopflag)); ++ ++#else ++ void PlayMusic(char *_filename); ++ if(MusicDevice < 0) return; ++ ++ // FIXME: I need this to get the music volume initialized (not sure why) -- Jim Bentler ++ MUSIC_SetVolume( MusicVolume ); ++ PlayMusic(song_file_name); ++#endif + } + + VOID |