diff options
author | Kirill Ponomarev <krion@FreeBSD.org> | 2004-01-23 15:31:16 +0000 |
---|---|---|
committer | Kirill Ponomarev <krion@FreeBSD.org> | 2004-01-23 15:31:16 +0000 |
commit | 78ac02537e488068066d33b911aafc48f83f2599 (patch) | |
tree | 4bf46472f9852b98b86b37fbcd464990a7d9a749 /games | |
parent | b0063e081403ecc3ee1d4b02462be8db29930024 (diff) | |
download | ports-78ac02537e488068066d33b911aafc48f83f2599.tar.gz ports-78ac02537e488068066d33b911aafc48f83f2599.zip |
Add vavoom 1.15.1,
Vavoom is a source port based on sources of Doom, Heretic,
Hexen and a little bit from Quake. To play Vavoom you need main
wad file from Doom, Ultimate Doom, Doom II, Heretic, Hexen or
Strife.
Differences from original game:
* Polygonal engine with colored lighting, with software mode,
* OpenGL support;
* Translucency;
* Complete support for freelook (look up & down) in all games;
* A powerful language to describe game logic;
* 100% client/server architecture with in-game joining;
* Quake-style console, with key bindings;
* Indirect support for DeHackEd;
* Crosshair;
* Jumping;
PR: ports/61765
Submitted by: Igor Pokrovsky <tiamat@comset.net>
Notes
Notes:
svn path=/head/; revision=98893
Diffstat (limited to 'games')
-rw-r--r-- | games/Makefile | 1 | ||||
-rw-r--r-- | games/vavoom/Makefile | 76 | ||||
-rw-r--r-- | games/vavoom/distinfo | 1 | ||||
-rw-r--r-- | games/vavoom/files/patch-Makefile | 112 | ||||
-rw-r--r-- | games/vavoom/files/patch-source-asm_i386.h | 18 | ||||
-rw-r--r-- | games/vavoom/files/patch-source-cd_linux.cpp | 186 | ||||
-rw-r--r-- | games/vavoom/files/patch-source-s_sdl.cpp | 150 | ||||
-rw-r--r-- | games/vavoom/files/patch-source-sys_sdl.cpp | 74 | ||||
-rw-r--r-- | games/vavoom/pkg-descr | 23 | ||||
-rw-r--r-- | games/vavoom/pkg-message | 17 | ||||
-rw-r--r-- | games/vavoom/pkg-plist | 30 |
11 files changed, 688 insertions, 0 deletions
diff --git a/games/Makefile b/games/Makefile index c05ab9230cc0..579e6d74c7c0 100644 --- a/games/Makefile +++ b/games/Makefile @@ -424,6 +424,7 @@ SUBDIR += utserver-asu SUBDIR += utserver-to SUBDIR += vamos + SUBDIR += vavoom SUBDIR += vectoroids SUBDIR += virt SUBDIR += wesnoth diff --git a/games/vavoom/Makefile b/games/vavoom/Makefile new file mode 100644 index 000000000000..ed35fb2e5e5d --- /dev/null +++ b/games/vavoom/Makefile @@ -0,0 +1,76 @@ +# New ports collection makefile for: vavoom +# Date created: 18 Jan 2004 +# Whom: Igor Pokrovsky <tiamat@comset.net> +# +# $FreeBSD$ +# + +PORTNAME= vavoom +PORTVERSION= 1.15.1 +CATEGORIES= games +MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} +MASTER_SITE_SUBDIR= ${PORTNAME} +DISTNAME= v115_1_src + +MAINTAINER= tiamat@comset.net +COMMENT= Doom, Doom II, Heretic, Hexen and Strife source port + +.ifdef (WITH_OPENAL) +LIB_DEPENDS+= openal.0:${PORTSDIR}/audio/openal +.endif + +USE_ZIP= yes +USE_GMAKE= yes +USE_REINPLACE= yes +USE_SDL= mixer sdl +USE_GL= yes +ALL_TARGET= all sv +ONLY_FOR_ARCHS= i386 + +EXTRACT_AFTER_ARGS= -d ${WRKSRC} + +.ifdef (WITH_OPENAL) +MAKE_ARGS= "USE_AL=1" +.endif + +.ifndef (WITH_OPENAL) +pre-everything:: + @${ECHO_CMD} "********************************************************************" + @${ECHO_CMD} "You can define WITH_OPENAL=yes to build Vavoom with 3D sound support" + @${ECHO_CMD} "********************************************************************" +.endif + +post-patch: + cd ${WRKSRC} && ${SH} ${WRKSRC}/fixunix.sh + @${REINPLACE_CMD} -e 's|SDL\/||g' ${WRKSRC}/source/*.cpp + +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/Vavoom ${PREFIX}/bin + ${INSTALL_PROGRAM} ${WRKSRC}/VavoomSV ${PREFIX}/bin + + @${MKDIR} ${DATADIR} + @${MKDIR} ${DATADIR}/basev + ${INSTALL_DATA} ${WRKSRC}/basev/default.cfg ${DATADIR}/basev + ${INSTALL_DATA} ${WRKSRC}/basev/startup.vs ${DATADIR}/basev + ${INSTALL_DATA} ${WRKSRC}/basev/games.txt ${DATADIR}/basev +.for i in doom heretic hexen strife + @${MKDIR} ${DATADIR}/basev/${i} + ${INSTALL_DATA} ${WRKSRC}/basev/${i}/wad0.wad ${DATADIR}/basev/${i} +.endfor +.for i in doom1 doom2 tnt plutonia + @${MKDIR} ${DATADIR}/basev/${i} + ${INSTALL_DATA} ${WRKSRC}/basev/${i}/wad0.wad ${DATADIR}/basev/${i} + ${INSTALL_DATA} ${WRKSRC}/basev/${i}/base.txt ${DATADIR}/basev/${i} +.endfor + +.ifndef (NOPORTDOCS) + @${MKDIR} ${DOCSDIR} + ${INSTALL_DATA} ${WRKSRC}/docs/vavmref.txt ${DOCSDIR} + ${INSTALL_DATA} ${WRKSRC}/docs/vavoom.txt ${DOCSDIR} +.endif + +post-install: + @${SED} -e 's|%%PREFIX%%|${PREFIX}|; s|%%DATADIR%%|${DATADIR}|' \ + <${PKGMESSAGE} + +.include <bsd.port.mk> diff --git a/games/vavoom/distinfo b/games/vavoom/distinfo new file mode 100644 index 000000000000..296eb2612fdd --- /dev/null +++ b/games/vavoom/distinfo @@ -0,0 +1 @@ +MD5 (v115_1_src.zip) = 58a9fad8ec2168b12fe7154ebbee04ad diff --git a/games/vavoom/files/patch-Makefile b/games/vavoom/files/patch-Makefile new file mode 100644 index 000000000000..08e1e9ed0e98 --- /dev/null +++ b/games/vavoom/files/patch-Makefile @@ -0,0 +1,112 @@ +--- Makefile.orig Fri Dec 19 20:00:14 2003 ++++ Makefile Fri Jan 23 16:41:34 2004 +@@ -8,7 +8,7 @@ + #DEBUG = 1
+
+ # Uncomment to compile using SDL
+-#USE_SDL = 1
++USE_SDL = 1
+
+ # Uncomment to compile without OpenGL driver
+ #NOGL = 1
+@@ -70,7 +70,7 @@ + obj/sys_i386.o \
+ obj/sys_sdl.o
+ GL_SYS_OBJ = obj/gl_sdl.o
+-LIBS := `sdl-config --libs` -lSDL_mixer -lm -lstdc++
++LIBS := `${SDL_CONFIG} --libs` -lSDL_mixer -lm -lstdc++
+ else
+ #-- Linux with Allegro --
+ SYS_OBJS = \
+@@ -214,7 +214,7 @@ + ifdef MESAGL
+ LIBS := -lMesaGL $(LIBS)
+ else
+-LIBS := -lGL $(LIBS)
++LIBS := -lGL -L${X11BASE}/lib $(LIBS)
+ endif
+ endif
+
+@@ -308,8 +308,8 @@ +
+ # ---------------------------------------
+
+-C_ARGS = -c -W -Wall -march=pentiumpro -ffast-math
+-CPP_ARGS = -c -W -Wall -march=pentiumpro -ffast-math
++C_ARGS = -c ${CFLAGS} -I${X11BASE}/include `${SDL_CONFIG} --cflags` -W -Wall -ffast-math
++CPP_ARGS = -c ${CFLAGS} -I${X11BASE}/include `${SDL_CONFIG} --cflags` -W -Wall -ffast-math
+ ASM_ARGS = -c -W -Wall -x assembler-with-cpp
+ LINK_ARGS = -Wall
+
+@@ -337,7 +337,7 @@ + exe: Vavoom$(EXE)
+
+ Vavoom$(EXE): $(OBJ_FILES) $(LIB_FILES)
+- gcc $(LINK_ARGS) -o $@ $^ $(LIBS)
++ ${CC} $(LINK_ARGS) -o $@ $^ $(LIBS)
+
+ suid:
+ chown root.root Vavoom
+@@ -347,13 +347,13 @@ + addr2line -e Vavoom -f < crash.txt >> basev/debug.txt
+
+ obj/%.o : source/%.c
+- gcc $(C_ARGS) -o $@ $<
++ ${CC} $(C_ARGS) -o $@ $<
+
+ obj/%.o : source/%.cpp source/*.h
+- gcc $(CPP_ARGS) -o $@ $<
++ ${CC} $(CPP_ARGS) -o $@ $<
+
+ obj/%.o : source/%.s source/asm_i386.h
+- gcc $(ASM_ARGS) -o $@ $<
++ ${CC} $(ASM_ARGS) -o $@ $<
+
+ # ---------------------------------------
+
+@@ -370,16 +370,16 @@ + svexe: VavoomSV$(EXE)
+
+ VavoomSV$(EXE): $(SV_OBJ_FILES)
+- gcc $(LINK_ARGS) -o $@ $(SV_OBJ_FILES) $(SV_LIBS)
++ ${CC} $(LINK_ARGS) -o $@ $(SV_OBJ_FILES) $(SV_LIBS)
+
+ obj/sv/%.o : source/%.c
+- gcc $(C_ARGS) -DSERVER -o $@ $<
++ ${CC} $(C_ARGS) -DSERVER -o $@ $<
+
+ obj/sv/%.o : source/%.cpp source/*.h
+- gcc $(CPP_ARGS) -DSERVER -o $@ $<
++ ${CC} $(CPP_ARGS) -DSERVER -o $@ $<
+
+ obj/sv/%.o : source/%.s
+- gcc $(ASM_ARGS) -DSERVER -o $@ $<
++ ${CC} $(ASM_ARGS) -DSERVER -o $@ $<
+
+ # ---------------------------------------
+
+@@ -415,11 +415,11 @@ + # ---------------------------------------
+
+ ifndef INSTALL
+-INSTALL = ginstall
++INSTALL = install -c
+ endif
+
+ ifndef INSTALL_DIR
+-INSTALL_DIR = /usr/local/games/Vavoom
++INSTALL_DIR = ${DATADIR}
+ endif
+
+ ifndef INSTALL_GROUP
+@@ -511,8 +511,8 @@ + asm: $(ASM_FILES)
+
+ source/%.asm : source/%.s source/asm_i386.h source/gas2tasm.exe
+- gcc -x assembler-with-cpp -E -P -DGAS2TASM $< -o - | source/gas2tasm.exe > $@
++ ${CC} -x assembler-with-cpp -E -P -DGAS2TASM $< -o - | source/gas2tasm.exe > $@
+
+ source/gas2tasm.exe : source/gas2tasm.c
+- gcc -O3 -ffast-math -fomit-frame-pointer -s -o $@ $<
++ ${CC} -O3 -ffast-math -fomit-frame-pointer -s -o $@ $<
+
diff --git a/games/vavoom/files/patch-source-asm_i386.h b/games/vavoom/files/patch-source-asm_i386.h new file mode 100644 index 000000000000..7fa5793831f4 --- /dev/null +++ b/games/vavoom/files/patch-source-asm_i386.h @@ -0,0 +1,18 @@ +--- source/asm_i386.h.orig Mon Jan 19 09:45:14 2004 ++++ source/asm_i386.h Mon Jan 19 09:46:32 2004 +@@ -27,13 +27,13 @@ +
+ #define USEASM
+
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__) + #define C(label) label // ELF format
+ #else
+ #define C(label) _##label // COFF format
+ #endif
+
+-#if !defined GAS2TASM && (defined DJGPP || defined __linux__)
++#if !defined GAS2TASM && (defined DJGPP || defined __linux__ || defined __FreeBSD__)
+ #define Align4 .p2align 2
+ #define Align8 .p2align 3
+ #define Align16 .p2align 4
diff --git a/games/vavoom/files/patch-source-cd_linux.cpp b/games/vavoom/files/patch-source-cd_linux.cpp new file mode 100644 index 000000000000..7f2c3de300b1 --- /dev/null +++ b/games/vavoom/files/patch-source-cd_linux.cpp @@ -0,0 +1,186 @@ +--- source/cd_linux.cpp.orig Fri Jan 23 14:59:01 2004 ++++ source/cd_linux.cpp Fri Jan 23 14:59:04 2004 +@@ -32,7 +32,7 @@ + #include <fcntl.h>
+ #include <time.h>
+ #include <errno.h>
+-#include <linux/cdrom.h>
++#include <sys/cdio.h> +
+ #include "gamedefs.h"
+ #include "s_local.h"
+@@ -137,7 +137,8 @@ + void CD_Update(void)
+ {
+ guard(CD_Update);
+- struct cdrom_subchnl subchnl;
++ struct ioc_read_subchannel subchnl; ++ struct cd_sub_channel_info data; + static time_t lastchk;
+
+ if (!cd_started)
+@@ -149,15 +150,18 @@ + if (playing && lastchk < time(NULL))
+ {
+ lastchk = time(NULL) + 2; //two seconds between chks
+- subchnl.cdsc_format = CDROM_MSF;
+- if (ioctl(cdfile, CDROMSUBCHNL, &subchnl) == -1 )
++ subchnl.data = &data; ++ subchnl.data_len = sizeof(data); ++ subchnl.address_format = CD_MSF_FORMAT; ++ subchnl.data_format = CD_CURRENT_POSITION; ++ if (ioctl(cdfile, CDIOCREADSUBCHANNEL, (char*) &subchnl) == -1 )
+ {
+- GCon->Log(NAME_Dev, "ioctl cdromsubchnl failed");
++ GCon->Log(NAME_Dev, "ioctl CDIOCREADSUBCHANNEL failed");
+ playing = false;
+ return;
+ }
+- if (subchnl.cdsc_audiostatus != CDROM_AUDIO_PLAY &&
+- subchnl.cdsc_audiostatus != CDROM_AUDIO_PAUSED)
++ if (subchnl.data->header.audio_status != CD_AS_PLAY_IN_PROGRESS && ++ subchnl.data->header.audio_status != CD_AS_PLAY_PAUSED) + {
+ playing = false;
+ if (playLooping)
+@@ -337,24 +341,24 @@ +
+ static void CD_GetInfo(void)
+ {
+- struct cdrom_tochdr tochdr;
++ struct ioc_toc_header tochdr; +
+ cdValid = false;
+
+- if (ioctl(cdfile, CDROMREADTOCHDR, &tochdr) == -1)
++ if (ioctl(cdfile, CDIOREADTOCHEADER, &tochdr) == -1) + {
+- GCon->Log(NAME_Dev, "ioctl cdromreadtochdr failed");
++ GCon->Log(NAME_Dev, "ioctl CDIOREADTOCHEADER failed");
+ return;
+ }
+
+- if (tochdr.cdth_trk0 < 1)
++ if (tochdr.starting_track < 1)
+ {
+ GCon->Log(NAME_Dev, "CDAudio: no music tracks");
+ return;
+ }
+
+ cdValid = true;
+- maxTrack = tochdr.cdth_trk1;
++ maxTrack = tochdr.ending_track;
+ }
+
+ //==========================================================================
+@@ -365,8 +369,8 @@ +
+ static void CD_Play(int track, boolean looping)
+ {
+- struct cdrom_tocentry entry;
+- struct cdrom_ti ti;
++ struct ioc_read_toc_single_entry entry; ++ struct ioc_play_track ti; +
+ if (!cdValid)
+ {
+@@ -383,6 +387,7 @@ + return;
+ }
+
++/* + // don't try to play a non-audio track
+ entry.cdte_track = track;
+ entry.cdte_format = CDROM_MSF;
+@@ -396,7 +401,7 @@ + GCon->Logf("CDAudio: track %d is not audio", track);
+ return;
+ }
+-
++*/ + if (playing)
+ {
+ if (playTrack == track)
+@@ -404,19 +409,19 @@ + CD_Stop();
+ }
+
+- ti.cdti_trk0 = track;
+- ti.cdti_trk1 = track;
+- ti.cdti_ind0 = 1;
+- ti.cdti_ind1 = 99;
++ ti.start_track = track; ++ ti.end_track = track; ++ ti.start_index = 1; ++ ti.end_index = 99; +
+- if (ioctl(cdfile, CDROMPLAYTRKIND, &ti) == -1)
++ if (ioctl(cdfile, CDIOCPLAYTRACKS, &ti) == -1)
+ {
+- GCon->Log(NAME_Dev, "ioctl cdromplaytrkind failed");
++ GCon->Log(NAME_Dev, "ioctl CDIOCPLAYTRACKS failed");
+ return;
+ }
+
+- if (ioctl(cdfile, CDROMRESUME) == -1)
+- GCon->Log(NAME_Dev, "ioctl cdromresume failed");
++ if (ioctl(cdfile, CDIOCRESUME) == -1)
++ GCon->Log(NAME_Dev, "ioctl CDIOCRESUME failed");
+
+ playLooping = looping;
+ playTrack = track;
+@@ -434,8 +439,8 @@ + if (!playing)
+ return;
+
+- if (ioctl(cdfile, CDROMPAUSE) == -1)
+- GCon->Log(NAME_Dev, "ioctl cdrompause failed");
++ if (ioctl(cdfile, CDIOCPAUSE) == -1)
++ GCon->Log(NAME_Dev, "ioctl CDIOCPAUSE failed");
+
+ wasPlaying = playing;
+ playing = false;
+@@ -452,8 +457,8 @@ + if (!wasPlaying)
+ return;
+
+- if (ioctl(cdfile, CDROMRESUME) == -1)
+- GCon->Log(NAME_Dev, "ioctl cdromresume failed");
++ if (ioctl(cdfile, CDIOCRESUME) == -1)
++ GCon->Log(NAME_Dev, "ioctl CDIOCRESUME failed");
+
+ playing = true;
+ }
+@@ -469,8 +474,8 @@ + if (!playing)
+ return;
+
+- if (ioctl(cdfile, CDROMSTOP) == -1)
+- GCon->Log(NAME_Dev, "ioctl cdromstop failed");
++ if (ioctl(cdfile, CDIOCSTOP) == -1)
++ GCon->Log(NAME_Dev, "ioctl CDIOCSTOP failed");
+
+ wasPlaying = false;
+ playing = false;
+@@ -484,8 +489,8 @@ +
+ static void CD_OpenDoor(void)
+ {
+- if (ioctl(cdfile, CDROMEJECT) == -1)
+- GCon->Log(NAME_Dev, "ioctl cdromeject failed");
++ if (ioctl(cdfile, CDIOCEJECT) == -1)
++ GCon->Log(NAME_Dev, "ioctl CDIOCEJECT failed");
+ }
+
+ //==========================================================================
+@@ -496,8 +501,8 @@ +
+ static void CD_CloseDoor(void)
+ {
+- if (ioctl(cdfile, CDROMCLOSETRAY) == -1)
+- GCon->Log(NAME_Dev, "ioctl cdromclosetray failed");
++ if (ioctl(cdfile, CDIOCCLOSE) == -1)
++ GCon->Log(NAME_Dev, "ioctl CDIOCCLOSE failed");
+ }
+
+ //**************************************************************************
diff --git a/games/vavoom/files/patch-source-s_sdl.cpp b/games/vavoom/files/patch-source-s_sdl.cpp new file mode 100644 index 000000000000..8a8c16414181 --- /dev/null +++ b/games/vavoom/files/patch-source-s_sdl.cpp @@ -0,0 +1,150 @@ +--- source/s_sdl.cpp.orig Sat Mar 8 14:08:04 2003 ++++ source/s_sdl.cpp Wed Jan 21 15:41:52 2004 +@@ -82,8 +82,8 @@ +
+ IMPLEMENT_CLASS(VDefaultSoundDevice);
+
+-static TCvarI mix_frequency ("mix_frequency", "22050", CVAR_ARCHIVE);
+-static TCvarI mix_bits ("mix_bits", "16", CVAR_ARCHIVE);
++static TCvarI mix_frequency ("mix_frequency", "44100", CVAR_ARCHIVE);
++static TCvarI mix_bits ("mix_bits", "8", CVAR_ARCHIVE);
+ static TCvarI mix_channels ("mix_channels", "2", CVAR_ARCHIVE);
+
+ static TCvarI mix_chunksize ("mix_chunksize", "4096", CVAR_ARCHIVE);
+@@ -107,6 +107,8 @@ + static TVec listener_forward;
+ static TVec listener_right;
+ static TVec listener_up;
++ ++SDL_AudioCVT wavecvt; +
+ // CODE --------------------------------------------------------------------
+
+@@ -337,6 +339,12 @@ + mix_bits = fmt & 0xFF;
+ mix_channels = ch;
+
++ if (SDL_BuildAudioCVT(&wavecvt, AUDIO_S8, 2, 4096, ++ fmt, mix_channels, mix_frequency) == -1) { ++ Sys_Error("SDL_BuildAudioCVT: failed.\n"); ++ return; ++ } ++ + channels = Z_CNew<channel_t>(mix_voices);
+ for (i = 0; i < mix_voices; i++)
+ {
+@@ -425,13 +433,23 @@ + return;
+ }
+
+- // copy the lump to a SDL_Mixer chunk...
+- chunk = Mix_LoadRAW_RW(SDL_RWFromMem((void*)S_sfx[sound_id].data,
+- S_sfx[sound_id].len), 0, S_sfx[sound_id].freq, AUDIO_U8, 1);
+- if (chunk == NULL)
+- Sys_Error("Mix_LoadRAW_RW() failed!\n");
+- voice = Mix_LoadChannel(-1, chunk, 0);
+-
++ wavecvt.len = S_sfx[sound_id].len; ++ wavecvt.buf = (Uint8*)malloc(wavecvt.len*wavecvt.len_mult); ++ memcpy(wavecvt.buf, S_sfx[sound_id].data, S_sfx[sound_id].len); ++ ++ if (SDL_ConvertAudio(&wavecvt) == -1) { ++ Sys_Error("SDL_ConvertAudio: error during conversion\n"); ++ return; ++ } ++ ++ // copy the lump to a SDL_Mixer chunk... ++ chunk = Mix_QuickLoad_RAW((Uint8*)wavecvt.buf, ++ wavecvt.len*wavecvt.len_mult); ++ if (chunk == NULL) ++ Sys_Error("Mix_QuickLoad_RAW() failed!\n"); ++ ++ voice = Mix_PlayChannel(-1, chunk, 0); ++ + if (voice < 0)
+ {
+ S_DoneWithLump(sound_id);
+@@ -448,9 +466,6 @@ + pitch = CalcPitch(S_sfx[sound_id].freq, sound_id);
+ #warning how to set the pitch? (CS)
+
+- // ready to go...
+- Mix_Play(voice);
+-
+ channels[chan].origin_id = origin_id;
+ channels[chan].origin = origin;
+ channels[chan].channel = channel;
+@@ -501,22 +516,28 @@ + return;
+ }
+
+- // copy the lump to a SDL_Mixer chunk...
+- chunk = Mix_LoadRAW_RW(SDL_RWFromMem((void*)S_VoiceInfo.data,
+- S_VoiceInfo.len), 0, S_VoiceInfo.freq, AUDIO_U8, 1);
+- if (chunk == NULL)
+- Sys_Error("Mix_LoadRAW_RW() failed!\n");
+- voice = Mix_LoadChannel(-1, chunk, 0);
+-
++ wavecvt.len = S_sfx[VOICE_SOUND_ID].len; ++ wavecvt.buf = (Uint8*)malloc(wavecvt.len*wavecvt.len_mult); ++ memcpy(wavecvt.buf, S_sfx[VOICE_SOUND_ID].data, S_sfx[VOICE_SOUND_ID].len); ++ ++ if (SDL_ConvertAudio(&wavecvt) == -1) { ++ Sys_Error("SDL_ConvertAudio: error during conversion\n"); ++ return; ++ } ++ // copy the lump to a SDL_Mixer chunk... ++ chunk = Mix_QuickLoad_RAW((Uint8*)wavecvt.buf, ++ wavecvt.len*wavecvt.len_mult); ++ if (chunk == NULL) ++ Sys_Error("Mix_QuickLoad_RAW() failed!\n"); ++ ++ voice = Mix_PlayChannel(-1, chunk, 0); ++ + if (voice < 0)
+ {
+ S_DoneWithLump(VOICE_SOUND_ID);
+ return;
+ }
+
+- // ready to go...
+- Mix_Play(voice);
+-
+ channels[chan].origin_id = 0;
+ channels[chan].origin = TVec(0, 0, 0);
+ channels[chan].channel = 1;
+@@ -558,19 +579,26 @@ + return;
+ }
+
+- chunk = Mix_LoadRAW_RW(SDL_RWFromMem((void*)S_sfx[sound_id].data,
+- S_sfx[sound_id].len), 0, S_sfx[sound_id].freq, AUDIO_U8, 1);
+- if (chunk == NULL)
+- Sys_Error("Mix_LoadRAW_RW() failed!\n");
+-
+- voice = Mix_LoadChannel(-1, chunk, 0);
++ wavecvt.len = S_sfx[sound_id].len; ++ wavecvt.buf = (Uint8*)malloc(wavecvt.len*wavecvt.len_mult); ++ memcpy(wavecvt.buf, S_sfx[sound_id].data, S_sfx[sound_id].len); ++ ++ if (SDL_ConvertAudio(&wavecvt) == -1) { ++ Sys_Error("SDL_ConvertAudio: error during conversion\n"); ++ return; ++ } ++ // copy the lump to a SDL_Mixer chunk... ++ chunk = Mix_QuickLoad_RAW((Uint8*)wavecvt.buf, ++ wavecvt.len*wavecvt.len_mult); ++ if (chunk == NULL) ++ Sys_Error("Mix_QuickLoad_RAW() failed!\n"); ++ ++ voice = Mix_PlayChannel(-1, chunk, 0); +
+ if (voice < 0)
+ {
+ return;
+ }
+-
+- Mix_Play(voice);
+
+ start = Sys_Time();
+ while (1)
diff --git a/games/vavoom/files/patch-source-sys_sdl.cpp b/games/vavoom/files/patch-source-sys_sdl.cpp new file mode 100644 index 000000000000..61b50de13164 --- /dev/null +++ b/games/vavoom/files/patch-source-sys_sdl.cpp @@ -0,0 +1,74 @@ +--- source/sys_sdl.cpp.orig Wed Jan 21 15:22:13 2004 ++++ source/sys_sdl.cpp Wed Jan 21 15:29:23 2004 +@@ -45,7 +45,7 @@ +
+ // EXTERNAL FUNCTION PROTOTYPES --------------------------------------------
+
+-#ifdef __i386__
++#if defined(__i386__)
+ extern "C" {
+
+ void Sys_SetFPCW(void);
+@@ -61,8 +61,10 @@ +
+ // PUBLIC DATA DEFINITIONS -------------------------------------------------
+
++#ifndef __FreeBSD__ + jmp_buf __Context::Env;
+ const char* __Context::ErrToThrow;
++#endif +
+ // PRIVATE DATA DEFINITIONS ------------------------------------------------
+
+@@ -256,6 +258,7 @@ +
+ void Sys_MakeCodeWriteable(unsigned long startaddr, unsigned long length)
+ {
++#ifndef __FreeBSD__ + int r;
+ unsigned long addr;
+ int psize = getpagesize();
+@@ -268,6 +271,7 @@ + {
+ Sys_Error("Protection change failed\n");
+ }
++#endif + }
+
+ //**************************************************************************
+@@ -726,6 +730,7 @@ + {
+ signal(s, SIG_IGN); // Ignore future instances of this signal.
+
++#ifndef __FreeBSD__ + switch (s)
+ {
+ case SIGABRT:
+@@ -756,6 +761,27 @@ + __Context::ErrToThrow = "Terminated by signal";
+ }
+ longjmp(__Context::Env, 1);
++#else ++ switch (s) ++ { ++ case SIGABRT: throw VavoomError("Abnormal termination triggered by abort call"); ++ case SIGFPE: throw VavoomError("Floating Point Exception"); ++ case SIGILL: throw VavoomError("Illegal Instruction"); ++ case SIGINT: throw VavoomError("Interrupted by User"); ++ case SIGSEGV: throw VavoomError("Segmentation Violation"); ++ case SIGTERM: throw VavoomError("Software termination signal from kill"); ++#ifdef SIGKILL ++ case SIGKILL: throw VavoomError("Killed"); ++#endif ++#ifdef SIGQUIT ++ case SIGQUIT: throw VavoomError("Quited"); ++#endif ++#ifdef SIGNOFP ++ case SIGNOFP: throw VavoomError("VAVOOM requires a floating-point processor"); ++#endif ++ default: throw VavoomError("Terminated by signal"); ++ } ++#endif + }
+
+ //==========================================================================
diff --git a/games/vavoom/pkg-descr b/games/vavoom/pkg-descr new file mode 100644 index 000000000000..89fe8bae3f53 --- /dev/null +++ b/games/vavoom/pkg-descr @@ -0,0 +1,23 @@ +Vavoom is a source port based on sources of Doom, Heretic, Hexen +and a little bit from Quake. To play Vavoom you need main wad file +from Doom, Ultimate Doom, Doom II, Heretic, Hexen or Strife. + +Differences from original game: +* Polygonal engine with colored lighting, with software mode, OpenGL support; +* Translucency; +* Complete support for freelook (look up & down) in all games; +* A powerful language to describe game logic; +* 100% client/server architecture with in-game joining; +* Quake-style console, with key bindings; +* Indirect support for DeHackEd; +* Crosshair; +* Jumping; +.... + +No music support is available in SDL compiled version at the moment. +Sound effects are 8 bit, 44100KHz, stereo. + +WWW: http://www.vavoom-engine.com/ + +- Igor Pokrovsky +tiamat@comset.net diff --git a/games/vavoom/pkg-message b/games/vavoom/pkg-message new file mode 100644 index 000000000000..1c40a36425e4 --- /dev/null +++ b/games/vavoom/pkg-message @@ -0,0 +1,17 @@ +***************************************************************************** +* In order to run Vavoom you will need original IWAD file from either: +* Doom, Doom II, TNT, Plutonia, Heretic, Hexen or Strife. +* +* Manually do the following: +* 1. Make directory for Vavoom data +* mkdir ${HOME}/vavoom +* 2. Copy Vavoom data into this directory +* cp -r %%DATADIR%%/basev ${HOME}/vavoom +* 3. Copy IWAD from original game here as well +* cp /where/is/doom.wad ${HOME}/vavoom +* 4. Execute Vavoom from directory with game data +* cd ${HOME}/vavoom && %%PREFIX%%/bin/Vavoom -opengl +* or +* cd ${HOME}/vavoom && %%PREFIX%%/bin/Vavoom -opengl -openal +* if you compiled Vavoom with OpenAL support +***************************************************************************** diff --git a/games/vavoom/pkg-plist b/games/vavoom/pkg-plist new file mode 100644 index 000000000000..c158903d0141 --- /dev/null +++ b/games/vavoom/pkg-plist @@ -0,0 +1,30 @@ +bin/Vavoom +bin/VavoomSV +%%DATADIR%%/basev/doom/wad0.wad +@dirrm %%DATADIR%%/basev/doom +%%DATADIR%%/basev/doom1/base.txt +%%DATADIR%%/basev/doom1/wad0.wad +@dirrm %%DATADIR%%/basev/doom1 +%%DATADIR%%/basev/doom2/base.txt +%%DATADIR%%/basev/doom2/wad0.wad +@dirrm %%DATADIR%%/basev/doom2 +%%DATADIR%%/basev/heretic/wad0.wad +@dirrm %%DATADIR%%/basev/heretic +%%DATADIR%%/basev/hexen/wad0.wad +@dirrm %%DATADIR%%/basev/hexen +%%DATADIR%%/basev/plutonia/base.txt +%%DATADIR%%/basev/plutonia/wad0.wad +@dirrm %%DATADIR%%/basev/plutonia +%%DATADIR%%/basev/strife/wad0.wad +@dirrm %%DATADIR%%/basev/strife +%%DATADIR%%/basev/tnt/base.txt +%%DATADIR%%/basev/tnt/wad0.wad +@dirrm %%DATADIR%%/basev/tnt +%%DATADIR%%/basev/default.cfg +%%DATADIR%%/basev/games.txt +%%DATADIR%%/basev/startup.vs +@dirrm %%DATADIR%%/basev +@dirrm %%DATADIR%% +%%PORTDOCS%%%%DOCSDIR%%/vavmref.txt +%%PORTDOCS%%%%DOCSDIR%%/vavoom.txt +%%PORTDOCS%%@dirrm %%DOCSDIR%% |