diff options
Diffstat (limited to 'games/quake2lnx')
21 files changed, 836 insertions, 923 deletions
diff --git a/games/quake2lnx/Makefile b/games/quake2lnx/Makefile index 0e1865e489ce..1abbe9793d04 100644 --- a/games/quake2lnx/Makefile +++ b/games/quake2lnx/Makefile @@ -6,19 +6,29 @@ # PORTNAME= quake2lnx -PORTVERSION= 0.15 -PORTREVISION= 2 +PORTVERSION= 0.16.2 CATEGORIES= games -MASTER_SITES= http://www.icculus.org/quake2/files/:src \ - http://freebsd.nsu.ru/distfiles/q2/:pak +MASTER_SITES= http://www.icculus.org/quake2/files/:icc \ + ftp://ftp.idsoftware.com/idstuff/quake2/:id DISTNAME= quake2-r${PORTVERSION} -DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:src +DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:icc .if defined(WITH_EYECANDY) -DISTFILES+= maxpak.pak:pak +DISTFILES+= maxpak.pak:icc .endif -.if defined(WITH_SHAREWARE_DATA) -DISTFILES+= pak0.pak:pak \ - players.tgz:pak +.if defined(WITH_RETEXTURE) +. for i in 10 11 12 13 14 16 17 19 +DISTFILES+= pak${i}.pak:icc +. endfor +.endif +.if defined(WITH_SHAREWARE_DATA) || defined(WITH_MANUAL) +DISTFILES+= q2-314-demo-x86.exe:id +EXTRACT_DEPENDS+= unzip:${PORTSDIR}/archivers/unzip +.endif +.if defined(WITH_XATRIX) +DISTFILES+= source/xatrixsrc320.shar.Z:id +.endif +.if defined(WITH_ROGUE) +DISTFILES+= source/roguesrc320.shar.Z:id .endif DIST_SUBDIR= ${PORTNAME} EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} @@ -47,7 +57,7 @@ PLIST_SUB+= SVGA="@comment " .endif .if defined(WITH_SDLCLIENT) || defined(WITH_SDL) || defined(WITH_SDLGL) \ - || ${HAVE_SDL:Msdl}!="" + || ${HAVE_SDL:Msdl} != "" . if !(defined(WITHOUT_SDLCLIENT) && defined(WITHOUT_SDL) \ && defined(WITHOUT_SDLGL)) USE_SDL= sdl @@ -142,6 +152,24 @@ PLIST_SUB+= GAME="" PLIST_SUB+= GAME="@comment " .endif +.if defined(WITH_XATRIX) +MAKE_ARGS+= BUILD_XATRIX=YES +Q2MP+= xatrix +IS_INTERACTIVE= yes +PLIST_SUB+= XATRIX="" +.else +PLIST_SUB+= XATRIX="@comment " +.endif + +.if defined(WITH_ROGUE) +MAKE_ARGS+= BUILD_ROGUE=YES +Q2MP+= rogue +IS_INTERACTIVE= yes +PLIST_SUB+= ROGUE="" +.else +PLIST_SUB+= ROGUE="@comment " +.endif + .if defined(WITH_CTF) MAKE_ARGS+= BUILD_CTFDLL=YES PLIST_SUB+= CTF="" @@ -159,6 +187,17 @@ PLIST_SUB+= SHAREWARE="@comment " ## MISCELLANEOUS TUNABLES ## # ### +.if defined(WITH_RETEXTURE) +MAKE_ARGS+= BUILD_RETEXTURE=YES +PLIST_SUB+= RETEX="" +.else +PLIST_SUB+= RETEX="@comment " +.endif + +.if defined(WITH_REDBLUE) +MAKE_ARGS+= BUILD_REDBLUE=YES +.endif + .if defined(WITH_JOYSTICK) MAKE_ARGS+= BUILD_JOYSTICK=YES .endif @@ -181,6 +220,12 @@ MAKE_ARGS+= OPTIMIZED_CFLAGS="-O9 -pipe -s -ffast-math -funroll-loops -fomit-fra MAKE_ARGS+= NO_X86_ASM=YES .endif +.if defined(WITH_MANUAL) +PLIST_SUB+= MANUAL="" +.else +PLIST_SUB+= MANUAL="@comment " +.endif + ### # ## END OF CONFIGURATION KNOBS ## # ### @@ -189,14 +234,14 @@ pre-everything:: .if ${ARCH} == "i386" && !(defined(WITH_SVGA) || exists(${LOCALBASE}/lib/libvga.so.1)) @${ECHO_MSG} "Define WITH_SVGA to build SVGA driver" .endif -.if !(defined(WITH_SDL) || ${HAVE_SDL:Msdl}!="") +.if !(defined(WITH_SDL) || ${HAVE_SDL:Msdl} != "") @${ECHO_MSG} "Define WITH_SDL to build SDL software driver" .endif -.if !(defined(WITH_SDLGL) || ${HAVE_SDL:Msdl}!="") +.if !(defined(WITH_SDLGL) || ${HAVE_SDL:Msdl} != "") @${ECHO_MSG} "Define WITH_SDLGL to build SDL OpenGL driver" .endif -.if !(defined(WITH_SDLCLIENT) || ${HAVE_SDL:Msdl}!="") - @${ECHO_MSG} "Define WITH_SDLCLIENT to build executable that uses SDL for cdrom and sound" +.if !(defined(WITH_SDLCLIENT) || ${HAVE_SDL:Msdl} != "") + @${ECHO_MSG} "Define WITH_SDLCLIENT to build executable that uses SDL for CDROM and sound" .endif .if !(defined(WITH_AA) || exists(${LOCALBASE}/lib/libaa.so.1)) @${ECHO_MSG} "Define WITH_AA to build ASCII software renderer" @@ -222,9 +267,24 @@ pre-everything:: .if !defined(WITH_CTF) @${ECHO_MSG} "Define WITH_CTF to build Capture The Flag mod" .endif +.if !defined(WITH_XATRIX) + @${ECHO_MSG} "Define WITH_XATRIX to install \"The Reckoning\" (Xatrix) mission pack .so" +.endif +.if !defined(WITH_ROGUE) + @${ECHO_MSG} "Define WITH_ROGUE to install the \"Ground Zero\" (Rogue) mission pack .so" +.endif .if !defined(WITH_SHAREWARE_DATA) @${ECHO_MSG} "Define WITH_SHAREWARE_DATA to install demo version game data" .endif +.if !defined(WITH_MANUAL) + @${ECHO_MSG} "Define WITH_MANUAL to install the official Quake II HTML manual" +.endif +.if !defined(WITH_RETEXTURE) + @${ECHO_MSG} "Define WITH_RETEXTURE to enable support of retextured graphics" +.endif +.if !defined(WITH_REDBLUE) + @${ECHO_MSG} "Define WITH_REDBLUE to enable red-blue 3D glasses rendering" +.endif .if !defined(WITH_JOYSTICK) @${ECHO_MSG} "Define WITH_JOYSTICK to enable joystick support" .endif @@ -241,15 +301,28 @@ pre-everything:: @${ECHO_MSG} "Define WITHOUT_X86_ASM to disable x86 assembly code" .endif +ALL_TARGET= build_release TGTDIR= ${WRKSRC}/release${ARCH} +post-extract: +.if defined(WITH_XATRIX) || defined(WITH_ROGUE) +. for mp in ${Q2MP} + @${MKDIR} ${WRKSRC}/src/${mp} + @(cd ${WRKSRC}/src/${mp} && ${GUNZIP_CMD} -c \ + ${DISTDIR}/${DIST_SUBDIR}/source/${mp}src320.shar.Z > \ + ${mp}src320.shar && ${SH} ./${mp}src320.shar) + @${REINPLACE_CMD} -e 's/__ $$/&|| defined __FreeBSD__/' \ + ${WRKSRC}/src/${mp}/q_shared.c +. endfor +.endif +.if defined(WITH_ROGUE) + @${REINPLACE_CMD} -e '/^#include <nan.h>/d' ${WRKSRC}/src/rogue/g_local.h +.endif + @${REINPLACE_CMD} -e 's|/dev/js|/dev/joy|' ${WRKSRC}/src/linux/joystick.c + post-patch: @${REINPLACE_CMD} -e 's|%%%%BASEDIR%%%%|${DATADIR}|' ${WRKSRC}/src/qcommon/files.c -do-build: - @(cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${GMAKE} \ - ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} build_release) - PLIST_SUB+= ARCH="${ARCH}" do-install: @@ -263,20 +336,54 @@ do-install: .if !defined(WITHOUT_GAME) ${INSTALL_PROGRAM} ${TGTDIR}/game${ARCH}.so ${DATADIR}/baseq2 .endif +.if defined(WITH_XATRIX) || defined(WITH_ROGUE) +. for mp in ${Q2MP} + @${MKDIR} ${DATADIR}/${mp} + ${INSTALL_PROGRAM} ${TGTDIR}/${mp}/game${ARCH}.so ${DATADIR}/${mp} +. endfor +.endif .if defined(WITH_CTF) @${MKDIR} ${DATADIR}/ctf ${INSTALL_PROGRAM} ${TGTDIR}/ctf/game${ARCH}.so ${DATADIR}/ctf .endif .if defined(WITH_SHAREWARE_DATA) - ${INSTALL_DATA} ${DISTDIR}/${PORTNAME}/pak0.pak ${DATADIR}/baseq2 - ${GUNZIP_CMD} -c ${DISTDIR}/${PORTNAME}/players.tgz | ${TAR} -C ${DATADIR}/baseq2 -xf - + @${MKDIR} ${DATADIR}/baseq2/players + ${UNZIP_CMD} -oj -d ${DATADIR}/baseq2/players/female \ + ${DISTDIR}/${DIST_SUBDIR}/q2-314-demo-x86.exe \ + Install/Data/baseq2/players/female/\* + ${UNZIP_CMD} -oj -d ${DATADIR}/baseq2/players/male \ + ${DISTDIR}/${DIST_SUBDIR}/q2-314-demo-x86.exe \ + Install/Data/baseq2/players/male/\* + ${UNZIP_CMD} -oj -d ${DATADIR}/baseq2 \ + ${DISTDIR}/${DIST_SUBDIR}/q2-314-demo-x86.exe \ + Install/Data/baseq2/pak0.pak +.endif +.if defined(WITH_RETEXTURE) +. for i in 10 11 12 13 14 16 17 19 + ${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/pak${i}.pak ${DATADIR}/baseq2 +. endfor .endif .if defined(WITH_EYECANDY) - ${INSTALL_DATA} ${DISTDIR}/${PORTNAME}/maxpak.pak ${DATADIR}/baseq2 + ${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/maxpak.pak ${DATADIR}/baseq2 .endif .if !defined(NOPORTDOCS) @${MKDIR} ${DOCSDIR} ${INSTALL_DATA} ${WRKSRC}/README ${DOCSDIR} + ${INSTALL_DATA} ${WRKSRC}/src/docs/README ${DOCSDIR}/README.320 + ${INSTALL_DATA} ${WRKSRC}/src/docs/joystick.txt ${DOCSDIR} + ${INSTALL_DATA} ${WRKSRC}/src/docs/quake2.3dfxgl ${DOCSDIR} +. if defined(WITH_MANUAL) + ${UNZIP_CMD} -oj -d ${DOCSDIR}/quake2_manual \ + ${DISTDIR}/${DIST_SUBDIR}/q2-314-demo-x86.exe \ + Install/Data/DOCS/quake2_manual/\* \ + -x Install/Data/DOCS/quake2_manual/images\* + ${UNZIP_CMD} -oj -d ${DOCSDIR}/quake2_manual/images \ + ${DISTDIR}/${DIST_SUBDIR}/q2-314-demo-x86.exe \ + Install/Data/DOCS/quake2_manual/images\* + ${UNZIP_CMD} -oj -d ${DOCSDIR} \ + ${DISTDIR}/${DIST_SUBDIR}/q2-314-demo-x86.exe \ + Install/Data/DOCS/Manual.html +. endif .endif post-install: diff --git a/games/quake2lnx/distinfo b/games/quake2lnx/distinfo index 561e684b7e00..33db03259c20 100644 --- a/games/quake2lnx/distinfo +++ b/games/quake2lnx/distinfo @@ -1,8 +1,26 @@ -MD5 (quake2lnx/quake2-r0.15.tar.gz) = 9e16f29db33715f2f9420b5bb31e6263 -SIZE (quake2lnx/quake2-r0.15.tar.gz) = 2660511 -MD5 (quake2lnx/maxpak.pak) = 5207a493edd1d359f5b7312fa028343b -SIZE (quake2lnx/maxpak.pak) = 3365391 -MD5 (quake2lnx/pak0.pak) = 27d77240466ec4f3253256832b54db8a -SIZE (quake2lnx/pak0.pak) = 49951322 -MD5 (quake2lnx/players.tgz) = c20ee0e8ee77fb615cae61ad5f8f5347 -SIZE (quake2lnx/players.tgz) = 1097559 +MD5 (quake2lnx/quake2-r0.16.2.tar.gz) = 872fee27fb13a2a4c8876d5973c3c691 +SIZE (quake2lnx/quake2-r0.16.2.tar.gz) = 1496377 +MD5 (quake2lnx/maxpak.pak) = 04d3f1fb7fb4dada7175a41f4595c7eb +SIZE (quake2lnx/maxpak.pak) = 3282742 +MD5 (quake2lnx/pak10.pak) = fc2de3c33c23cca5f0e6fcec068ce616 +SIZE (quake2lnx/pak10.pak) = 16315845 +MD5 (quake2lnx/pak11.pak) = 221019679613a13c6d7e5f9e21701d85 +SIZE (quake2lnx/pak11.pak) = 1702702 +MD5 (quake2lnx/pak12.pak) = 0c8b49c303014e535394168aed9b668a +SIZE (quake2lnx/pak12.pak) = 3629554 +MD5 (quake2lnx/pak13.pak) = 9628c82566535e48c59caaee5281b963 +SIZE (quake2lnx/pak13.pak) = 2198193 +MD5 (quake2lnx/pak14.pak) = 5d47605de09c458c7f1c69d8e6fea6a7 +SIZE (quake2lnx/pak14.pak) = 2397651 +MD5 (quake2lnx/pak16.pak) = 94b18e1f2d76fb7e7d0c5bd0ae8d7c69 +SIZE (quake2lnx/pak16.pak) = 2675893 +MD5 (quake2lnx/pak17.pak) = e24d79286ba3c1f3da1f9642a78c49af +SIZE (quake2lnx/pak17.pak) = 1431798 +MD5 (quake2lnx/pak19.pak) = 070a4d00b93a2a427ca92adee2736000 +SIZE (quake2lnx/pak19.pak) = 648896 +MD5 (quake2lnx/q2-314-demo-x86.exe) = 4d1cd4618e80a38db59304132ea0856c +SIZE (quake2lnx/q2-314-demo-x86.exe) = 39015499 +MD5 (quake2lnx/source/xatrixsrc320.shar.Z) = 41fc4ecc4f25c068e7d1f488bd4a1e1a +SIZE (quake2lnx/source/xatrixsrc320.shar.Z) = 455917 +MD5 (quake2lnx/source/roguesrc320.shar.Z) = 7d5e052839c9e629bad0a6570aa70554 +SIZE (quake2lnx/source/roguesrc320.shar.Z) = 626769 diff --git a/games/quake2lnx/files/patch-Makefile b/games/quake2lnx/files/patch-Makefile index d7d30abd19f8..2c19abb064ea 100644 --- a/games/quake2lnx/files/patch-Makefile +++ b/games/quake2lnx/files/patch-Makefile @@ -1,6 +1,6 @@ --- Makefile.orig Thu Oct 10 01:08:21 2002 +++ Makefile Tue Jun 17 22:23:11 2003 -@@ -12,28 +12,28 @@ +@@ -12,30 +12,30 @@ # (Note: not all options are available for all platforms). # quake2 (uses OSS for sound, cdrom ioctls for cd audio) is automatically built. # game$(ARCH).so is automatically built. @@ -16,9 +16,12 @@ -BUILD_ROGUE=NO # game$(ARCH).so for rogue (see README.r for details) -BUILD_JOYSTICK=YES # build in joystick support -BUILD_ARTS=NO # build in support for libaRts sound. +-BUILD_ALSA=NO # build in support for ALSA (default sound on 2.6) -BUILD_DEDICATED=NO # build a dedicated quake2 server --BUILD_AA=YES # build the ascii soft renderer. --BUILD_QMAX=YES # build the fancier GL graphics +-BUILD_AA=NO # build the ascii soft renderer. +-BUILD_QMAX=NO # build the fancier GL graphics +-BUILD_RETEXTURE=NO # build a version supporting retextured graphics +-BUILD_REDBLUE=NO # build a red-blue 3d glasses renderer... +#BUILD_SDLQUAKE2=YES # sdlquake2 executable (uses SDL for cdrom and sound) +#BUILD_SVGA=NO # SVGAlib driver. Seems to work fine. +#BUILD_X11=YES # X11 software driver. Works somewhat ok. @@ -31,10 +34,12 @@ +#BUILD_ROGUE=NO # game$(ARCH).so for rogue (see README.r for details) +#BUILD_JOYSTICK=YES # build in joystick support +#BUILD_ARTS=NO # build in support for libaRts sound. ++#BUILD_ALSA=NO # build in support for ALSA (default sound on 2.6) +#BUILD_DEDICATED=NO # build a dedicated quake2 server -+#BUILD_AA=YES # build the ascii soft renderer. -+#BUILD_QMAX=YES # build the fancier GL graphics - ++#BUILD_AA=NO # build the ascii soft renderer. ++#BUILD_QMAX=NO # build the fancier GL graphics ++#BUILD_RETEXTURE=NO # build a version supporting retextured graphics ++#BUILD_REDBLUE=NO # build a red-blue 3d glasses renderer... STATICSDL=NO -SDLDIR=/usr/local/lib +SDLDIR=${PREFIX}/lib @@ -46,7 +51,7 @@ # (hopefully) end of configurable options -@@ -50,47 +50,11 @@ +@@ -52,55 +52,11 @@ endif endif @@ -54,8 +59,9 @@ -# this nice line comes from the linux kernel makefile -ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc/ -e s/sparc64/sparc/ -e s/arm.*/arm/ -e s/sa110/arm/ -e s/alpha/axp/) -+RELEASE_CFLAGS= $(BASE_CFLAGS) $(OPTIMIZED_CFLAGS) ++RELEASE_CFLAGS=$(BASE_CFLAGS) $(OPTIMIZED_CFLAGS) +-ifneq ($(ARCH),x86_64) -ifneq ($(ARCH),i386) -ifneq ($(ARCH),axp) -ifneq ($(ARCH),ppc) @@ -65,6 +71,7 @@ -endif -endif -endif +-endif - -CC=gcc - @@ -84,29 +91,35 @@ -endif - -ifeq ($(ARCH),i386) --RELEASE_CFLAGS=$(BASE_CFLAGS) -O2 -ffast-math -funroll-loops -malign-loops=2 \ -- -malign-jumps=2 -malign-functions=2 -g +-RELEASE_CFLAGS=$(BASE_CFLAGS) -O2 -ffast-math -funroll-loops -falign-loops=2 \ +- -falign-jumps=2 -falign-functions=2 -fno-strict-aliasing -# compiler bugs with gcc 2.96 and 3.0.1 can cause bad builds with heavy opts. -#RELEASE_CFLAGS=$(BASE_CFLAGS) -O6 -m486 -ffast-math -funroll-loops \ -# -fomit-frame-pointer -fexpensive-optimizations -malign-loops=2 \ -# -malign-jumps=2 -malign-functions=2 -endif - --VERSION=3.21+rCVS -+VERSION=3.21+r0.15 +-ifeq ($(ARCH),x86_64) +-_LIB := 64 +-RELEASE_CFLAGS=$(BASE_CFLAGS) -O2 -ffast-math -funroll-loops \ +- -fomit-frame-pointer -fexpensive-optimizations -fno-strict-aliasing +-endif +- +-VERSION=3.21+r0.16 ++VERSION=3.21+r0.16.2 MOUNT_DIR=src -@@ -108,7 +72,7 @@ +@@ -118,7 +74,7 @@ ROGUE_DIR=$(MOUNT_DIR)/rogue NULL_DIR=$(MOUNT_DIR)/null -BASE_CFLAGS=-Wall -pipe -Dstricmp=strcasecmp +BASE_CFLAGS=-Wall -pipe -Dstricmp=strcasecmp $(CFLAGS) ifeq ($(HAVE_IPV6),YES) - BASE_CFLAGS+= -DHAVE_IPV6 -DHAVE_SIN6_LEN - NET_UDP=net_udp6 -@@ -127,7 +91,13 @@ + BASE_CFLAGS+= -DHAVE_IPV6 + ifeq ($(OSTYPE),FreeBSD) +@@ -144,7 +100,13 @@ BASE_CFLAGS+=$(shell artsc-config --cflags) endif @@ -121,16 +134,16 @@ BASE_CFLAGS+=-DC_ONLY endif -@@ -144,20 +114,22 @@ - LDFLAGS+=$(shell artsc-config --libs) +@@ -166,20 +128,22 @@ endif + -SVGALDFLAGS=-lvga +SVGALDFLAGS=-L${PREFIX}/lib -lvga +SVGACFLAGS=-I${PREFIX}/include -XCFLAGS=-I/usr/X11R6/include --XLDFLAGS=-L/usr/X11R6/lib -lX11 -lXext -lXxf86dga -lXxf86vm +-XLDFLAGS=-L/usr/X11R6/lib$(_LIB) -lX11 -lXext -lXxf86dga -lXxf86vm -AALDFLAGS=-lm -laa +XCFLAGS=-I${X11BASE}/include +XLDFLAGS=-L${X11BASE}/lib -lX11 -lXext -lXxf86dga -lXxf86vm @@ -140,8 +153,8 @@ -SDLCFLAGS=$(shell sdl-config --cflags) +SDLCFLAGS=$(shell sdl11-config --cflags) ifeq ($(strip $(STATICSDL)),YES) -- SDLLDFLAGS += -L/usr/X11R6/lib -Wl,-Bstatic $(SDLDIR)/libSDL.a -+ SDLLDFLAGS += -L${X11BASE}/lib -Wl,-Bstatic $(SDLDIR)/libSDL.a +- SDLLDFLAGS += -L/usr/X11R6/lib$(_LIB) -Wl,-Bstatic $(SDLDIR)/libSDL.a ++ SDLLDFLAGS += -L${X11BASE}/lib$(_LIB) -Wl,-Bstatic $(SDLDIR)/libSDL.a SDLLDFLAGS += $(SDLDIR)/libesd.a $(SDLDIR)/libartsc.a -Wl,-Bdynamic SDLLDFLAGS += -lpthread -lX11 -lXext -lXxf86dga -lXxf86vm -lXv \ -lXinerama @@ -151,14 +164,14 @@ endif ifeq ($(strip $(BUILD_JOYSTICK)),YES) -@@ -168,15 +140,16 @@ +@@ -190,15 +154,16 @@ FXGLLDFLAGS=-L/usr/local/glide/lib -L/usr/X11/lib -L/usr/local/lib \ -L/usr/X11R6/lib -lX11 -lXext -lGL -lvga -GLXCFLAGS=-I/usr/X11R6/include -DOPENGL --GLXLDFLAGS=-L/usr/X11R6/lib -lX11 -lXext -lXxf86dga -lXxf86vm +-GLXLDFLAGS=-L/usr/X11R6/lib$(_LIB) -lX11 -lXext -lXxf86dga -lXxf86vm +GLXCFLAGS=-I${X11BASE}/include -DOPENGL -+GLXLDFLAGS=-L${X11BASE}/lib -lX11 -lXext -lXxf86dga -lXxf86vm ++GLXLDFLAGS=-L${X11BASE}/lib$(_LIB) -lX11 -lXext -lXxf86dga -lXxf86vm SDLGLCFLAGS=$(SDLCFLAGS) -DOPENGL SDLGLLDFLAGS=$(SDLLDFLAGS) @@ -172,7 +185,7 @@ REF_GL_DIR = $(MOUNT_DIR)/ref_candygl CL_FX = cl_fxmax.c else -@@ -192,7 +165,7 @@ +@@ -214,7 +179,7 @@ DO_DED_CC=$(CC) $(CFLAGS) -DDEDICATED_ONLY -o $@ -c $< DO_DED_DEBUG_CC=$(CC) $(DEBUG_CFLAGS) -DDEDICATED_ONLY -o $@ -c $< DO_SHLIB_CC=$(CC) $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $< @@ -181,7 +194,7 @@ DO_AS=$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $< DO_SHLIB_AS=$(CC) $(CFLAGS) $(SHLIBCFLAGS) -DELF -x assembler-with-cpp -o $@ -c $< -@@ -202,10 +175,42 @@ +@@ -224,10 +189,42 @@ .PHONY : targets build_debug build_release clean clean-debug clean-release clean2 @@ -225,7 +238,7 @@ ifeq ($(strip $(BUILD_CTFDLL)),YES) TARGETS += $(BUILDDIR)/ctf/game$(ARCH).$(SHLIBEXT) endif -@@ -218,126 +223,6 @@ +@@ -240,152 +237,6 @@ TARGETS += $(BUILDDIR)/rogue/game$(ARCH).$(SHLIBEXT) endif @@ -319,6 +332,32 @@ - endif -endif # ARCH sparc - +-ifeq ($(ARCH),x86_64) +- ifeq ($(strip $(BUILD_SDLQUAKE2)),YES) +- TARGETS += $(BUILDDIR)/sdlquake2 +- endif +- +- ifeq ($(strip $(BUILD_SVGA)),YES) +- $(warning Warning: SVGA not supported for $(ARCH)) +- endif +- +- ifeq ($(strip $(BUILD_SOFTX)),YES) +- $(warning Warning: Software X Renderer not supported for $(ARCH)) +- endif +- +- ifeq ($(strip $(BUILD_GLX)),YES) +- TARGETS += $(BUILDDIR)/ref_glx.$(SHLIBEXT) +- endif +- +- ifeq ($(strip $(BUILD_FXGL)),YES) +- $(warning Warning: FXGL not currently supported for $(ARCH)) +- endif +- +- ifeq ($(strip $(BUILD_SDLGL)),YES) +- TARGETS += $(BUILDDIR)/ref_sdlgl.$(SHLIBEXT) +- endif +-endif # ARCH x86_64 +- -ifeq ($(ARCH),i386) - ifeq ($(strip $(BUILD_SDLQUAKE2)),YES) - TARGETS += $(BUILDDIR)/sdlquake2 @@ -352,7 +391,7 @@ ifeq ($(strip $(BUILD_AA)),YES) TARGETS += $(BUILDDIR)/ref_softaa.$(SHLIBEXT) endif -@@ -437,10 +322,11 @@ +@@ -493,10 +344,11 @@ $(BUILDDIR)/client/snd_sdl.o ifeq ($(ARCH),i386) @@ -365,34 +404,15 @@ endif $(BUILDDIR)/quake2 : $(QUAKE2_OBJS) $(QUAKE2_LNX_OBJS) $(QUAKE2_AS_OBJS) -@@ -626,7 +512,7 @@ - $(BUILDDIR)/ded/q_shlinux.o \ - $(BUILDDIR)/ded/sys_linux.o \ - $(BUILDDIR)/ded/glob.o \ -- $(BUILDDIR)/ded/net_udp.o \ -+ $(BUILDDIR)/ded/$(NET_UDP).o \ - $(BUILDDIR)/ded/q_shared.o \ - $(BUILDDIR)/ded/pmove.o \ - $(BUILDDIR)/ded/cl_null.o \ -@@ -701,6 +587,9 @@ - $(BUILDDIR)/ded/net_udp.o : $(LINUX_DIR)/net_udp.c - $(DO_DED_CC) - -+$(BUILDDIR)/ded/net_udp6.o : $(LINUX_DIR)/net_udp6.c -+ $(DO_DED_CC) -+ - $(BUILDDIR)/ded/cd_null.o : $(NULL_DIR)/cd_null.c - $(DO_DED_CC) - -@@ -1525,6 +1414,7 @@ - $(BUILDDIR)/ref_soft/glob.o +@@ -1588,6 +1440,7 @@ + endif ifeq ($(ARCH),i386) +ifneq ($(strip $(NO_X86_ASM)),YES) REF_SOFT_OBJS += \ $(BUILDDIR)/ref_soft/r_aclipa.o \ $(BUILDDIR)/ref_soft/r_draw16.o \ -@@ -1538,6 +1428,7 @@ +@@ -1601,6 +1454,7 @@ $(BUILDDIR)/ref_soft/r_varsa.o \ $(BUILDDIR)/ref_soft/sys_dosa.o endif @@ -400,7 +420,7 @@ REF_SOFT_SVGA_OBJS = \ $(BUILDDIR)/ref_soft/rw_svgalib.o \ -@@ -1667,10 +1558,10 @@ +@@ -1732,10 +1586,10 @@ $(DO_SHLIB_AS) $(BUILDDIR)/ref_soft/rw_svgalib.o : $(LINUX_DIR)/rw_svgalib.c @@ -413,7 +433,7 @@ $(BUILDDIR)/ref_soft/rw_x11.o : $(LINUX_DIR)/rw_x11.c $(DO_SHLIB_CC) $(XCFLAGS) -@@ -1679,10 +1570,10 @@ +@@ -1750,10 +1604,10 @@ $(DO_SHLIB_CC) $(SDLCFLAGS) $(BUILDDIR)/ref_soft/rw_aa.o : $(LINUX_DIR)/rw_aa.c diff --git a/games/quake2lnx/files/patch-security b/games/quake2lnx/files/patch-security new file mode 100644 index 000000000000..89934359d270 --- /dev/null +++ b/games/quake2lnx/files/patch-security @@ -0,0 +1,201 @@ +Index: client/cl_parse.c +=================================================================== +RCS file: /cvs/cvsroot/quake2/src/client/cl_parse.c,v +retrieving revision 1.3 +diff -u -r1.3 cl_parse.c +--- src/client/cl_parse.c 24 Sep 2004 22:06:52 -0000 1.3 ++++ src/client/cl_parse.c 29 Jan 2005 20:57:01 -0000 +@@ -397,6 +397,9 @@ + strncpy(ci->cinfo, s, sizeof(ci->cinfo)); + ci->cinfo[sizeof(ci->cinfo)-1] = 0; + ++ // sku - avoid potentional buffer overflow vulnerability ++ s = ci->cinfo; ++ + // isolate the player's name + strncpy(ci->name, s, sizeof(ci->name)); + ci->name[sizeof(ci->name)-1] = 0; +@@ -528,6 +531,7 @@ + int i; + char *s; + char olds[MAX_QPATH]; ++ int length; + + i = MSG_ReadShort (&net_message); + if (i < 0 || i >= MAX_CONFIGSTRINGS) +@@ -537,6 +541,12 @@ + strncpy (olds, cl.configstrings[i], sizeof(olds)); + olds[sizeof(olds) - 1] = 0; + ++ // sku - avoid potentional buffer overflow vulnerability ++ length = strlen( s ); ++ if( length > sizeof( cl.configstrings ) - sizeof( cl.configstrings[0] ) * i - 1 ) { ++ Com_Error( ERR_DROP, "CL_ParseConfigString: oversize configstring" ); ++ } ++ + strcpy (cl.configstrings[i], s); + + // do something apropriate +Index: qcommon/cmd.c +=================================================================== +RCS file: /cvs/cvsroot/quake2/src/qcommon/cmd.c,v +retrieving revision 1.2 +diff -u -r1.2 cmd.c +--- src/qcommon/cmd.c 3 Jan 2002 05:10:14 -0000 1.2 ++++ src/qcommon/cmd.c 29 Jan 2005 20:57:01 -0000 +@@ -215,8 +215,11 @@ + if (text[i] == '\n') + break; + } +- +- ++ ++ // sku - removed potentional buffer overflow vulnerability ++ if( i > sizeof( line ) - 1 ) { ++ i = sizeof( line ) - 1; ++ } + memcpy (line, text, i); + line[i] = 0; + +@@ -657,7 +660,8 @@ + { + int l; + +- strcpy (cmd_args, text); ++ // sku - removed potentional buffer overflow vulnerability ++ strncpy( cmd_args, text, sizeof( cmd_args ) ); + + // strip off any trailing whitespace + l = strlen(cmd_args) - 1; +Index: qcommon/common.c +=================================================================== +RCS file: /cvs/cvsroot/quake2/src/qcommon/common.c,v +retrieving revision 1.4 +diff -u -r1.4 common.c +--- src/qcommon/common.c 30 Mar 2002 22:48:36 -0000 1.4 ++++ src/qcommon/common.c 29 Jan 2005 20:57:02 -0000 +@@ -797,7 +797,9 @@ + l = 0; + do + { +- c = MSG_ReadChar (msg_read); ++ // sku - replaced MSG_ReadChar with MSG_ReadByte to avoid ++ // potentional vulnerability ++ c = MSG_ReadByte (msg_read); + if (c == -1 || c == 0) + break; + string[l] = c; +@@ -817,7 +819,9 @@ + l = 0; + do + { +- c = MSG_ReadChar (msg_read); ++ // sku - replaced MSG_ReadChar with MSG_ReadByte to avoid ++ // potentional vulnerability ++ c = MSG_ReadByte (msg_read); + if (c == -1 || c == 0 || c == '\n') + break; + string[l] = c; +Index: server/sv_main.c +=================================================================== +RCS file: /cvs/cvsroot/quake2/src/server/sv_main.c,v +retrieving revision 1.2 +diff -u -r1.2 sv_main.c +--- src/server/sv_main.c 22 Mar 2002 00:24:37 -0000 1.2 ++++ src/server/sv_main.c 29 Jan 2005 20:57:03 -0000 +@@ -293,8 +293,9 @@ + + challenge = atoi(Cmd_Argv(3)); + +- strncpy (userinfo, Cmd_Argv(4), sizeof(userinfo)-1); +- userinfo[sizeof(userinfo) - 1] = 0; ++ // sku - reserve 32 bytes for the IP address ++ strncpy (userinfo, Cmd_Argv(4), sizeof(userinfo)-32); ++ userinfo[sizeof(userinfo) - 32] = 0; + + // force the IP key/value pair so the game can filter based on ip + Info_SetValueForKey (userinfo, "ip", NET_AdrToString(net_from)); +@@ -317,8 +318,11 @@ + { + if (NET_CompareBaseAdr (net_from, svs.challenges[i].adr)) + { +- if (challenge == svs.challenges[i].challenge) ++ // sku - ignore zero challenges ++ if( svs.challenges[i].challenge && challenge == svs.challenges[i].challenge ) { ++ svs.challenges[i].challenge = 0; + break; // good ++ } + Netchan_OutOfBandPrint (NS_SERVER, adr, "print\nBad challenge.\n"); + return; + } +@@ -342,6 +346,11 @@ + && ( cl->netchan.qport == qport + || adr.port == cl->netchan.remote_address.port ) ) + { ++ // sku - avoid reusing slot of the client already connected ++ if( cl->state != cs_zombie ) { ++ Netchan_OutOfBandPrint( NS_SERVER, adr, "print\nConnected client from this IP is already present.\n" ); ++ return; ++ } + if (!NET_IsLocalAddress (adr) && (svs.realtime - cl->lastconnect) < ((int)sv_reconnect_limit->value * 1000)) + { + Com_DPrintf ("%s:reconnect rejected : too soon\n", NET_AdrToString (adr)); +Index: server/sv_user.c +=================================================================== +RCS file: /cvs/cvsroot/quake2/src/server/sv_user.c,v +retrieving revision 1.2 +diff -u -r1.2 sv_user.c +--- src/server/sv_user.c 21 Mar 2002 04:44:46 -0000 1.2 ++++ src/server/sv_user.c 29 Jan 2005 20:57:04 -0000 +@@ -142,6 +142,9 @@ + } + + start = atoi(Cmd_Argv(2)); ++ if( start < 0 ) { ++ start = 0; // sku - catch negative offsets ++ } + + // write a packet full of data + +@@ -150,9 +153,18 @@ + { + if (sv.configstrings[start][0]) + { ++ int length; ++ ++ // sku - write configstrings that exceed MAX_QPATH in proper-sized chunks ++ length = strlen( sv.configstrings[start] ); ++ if( length > MAX_QPATH ) { ++ length = MAX_QPATH; ++ } ++ + MSG_WriteByte (&sv_client->netchan.message, svc_configstring); + MSG_WriteShort (&sv_client->netchan.message, start); +- MSG_WriteString (&sv_client->netchan.message, sv.configstrings[start]); ++ SZ_Write (&sv_client->netchan.message, sv.configstrings[start], length); ++ MSG_WriteByte (&sv_client->netchan.message, 0); + } + start++; + } +@@ -199,6 +211,9 @@ + } + + start = atoi(Cmd_Argv(2)); ++ if( start < 0 ) { ++ start = 0; ++ } + + memset (&nullstate, 0, sizeof(nullstate)); + +@@ -398,7 +413,7 @@ + */ + void SV_ShowServerinfo_f (void) + { +- Info_Print (Cvar_Serverinfo()); ++// Info_Print (Cvar_Serverinfo()); + } + + + + + diff --git a/games/quake2lnx/files/patch-src::client::cl_fx.c b/games/quake2lnx/files/patch-src::client::cl_fx.c deleted file mode 100644 index a1da485a1ecc..000000000000 --- a/games/quake2lnx/files/patch-src::client::cl_fx.c +++ /dev/null @@ -1,11 +0,0 @@ ---- src/client/cl_fx.c.orig Thu Jun 12 14:24:20 2003 -+++ src/client/cl_fx.c Thu Jun 12 14:24:42 2003 -@@ -1507,7 +1507,7 @@ - */ - #ifdef QMAX - void CL_FlagTrail (vec3_t start, vec3_t end, boolean isred) --#else) -+#else - void CL_FlagTrail (vec3_t start, vec3_t end, float color) - #endif - { diff --git a/games/quake2lnx/files/patch-src::client::cl_fxmax.c b/games/quake2lnx/files/patch-src::client::cl_fxmax.c deleted file mode 100644 index 574c30595f03..000000000000 --- a/games/quake2lnx/files/patch-src::client::cl_fxmax.c +++ /dev/null @@ -1,43 +0,0 @@ ---- src/client/cl_fxmax.c.orig Thu Jun 12 14:32:17 2003 -+++ src/client/cl_fxmax.c Thu Jun 12 14:34:33 2003 -@@ -1733,7 +1733,6 @@ - - void CL_Disruptor_Explosion_Particle (vec3_t org, float size) - { -- int i; - float alphastart = 1, - alphadecel = -5; - cparticle_t *p; -@@ -1817,7 +1816,7 @@ - { - float length; - int i; -- vec3_t len, ang; -+ vec3_t len; - - VectorSubtract(p->angle, org, len); - { -@@ -2194,7 +2193,6 @@ - - void pSparksThink (cparticle_t *p, vec3_t org, vec3_t angle, float *alpha, float *size, int *image, float *time) - { -- vec3_t dir; - int i; - - //setting up angle for sparks -@@ -2523,7 +2521,6 @@ - #define pBlasterMaxSize 5 - void pBlasterThink (cparticle_t *p, vec3_t org, vec3_t angle, float *alpha, float *size, int *image, float *time) - { -- int i; - vec3_t len; - VectorSubtract(p->angle, org, len); - -@@ -3038,7 +3035,6 @@ - vec3_t vec, point; - int i; - float len; -- float dec; - vec3_t right, up; - qboolean colored = (cl_railtype->value!=1); - diff --git a/games/quake2lnx/files/patch-src::client::cl_newfx.c b/games/quake2lnx/files/patch-src::client::cl_newfx.c deleted file mode 100644 index d5628a3837c1..000000000000 --- a/games/quake2lnx/files/patch-src::client::cl_newfx.c +++ /dev/null @@ -1,85 +0,0 @@ ---- src/client/cl_newfx.c.orig Thu Jun 12 14:36:30 2003 -+++ src/client/cl_newfx.c Thu Jun 12 14:58:25 2003 -@@ -143,7 +143,9 @@ - vec3_t vec; - float len; - // int j; -+#ifndef QMAX - cparticle_t *p; -+#endif - float dec; - vec3_t right, up; - // int i; -@@ -266,11 +268,12 @@ - vec3_t vec; - #ifdef QMAX - vec3_t color = { color8red(color8), color8green(color8), color8blue(color8)}; -+#else -+ int j; -+ cparticle_t *p; - #endif - - float len; -- int j; -- cparticle_t *p; - - VectorCopy (start, move); - VectorSubtract (end, start, vec); -@@ -448,8 +451,11 @@ - vec3_t move; - vec3_t vec; - float len; -- int i, j; -+ int i; -+#ifndef QMAX -+ int j; - cparticle_t *p; -+#endif - float dec; - - VectorCopy (start, move); -@@ -1062,7 +1068,9 @@ - vec3_t dir; - int i; - cparticle_t *p; -+#ifndef QMAX - static int colortable[4] = {2*8,13*8,21*8,18*8}; -+#endif - float ratio; - - ratio = 1.0 - (((float)self->endtime - (float)cl.time)/2100.0); -@@ -1099,7 +1107,9 @@ - vec3_t dir; - int i; - cparticle_t *p; -+#ifndef QMAX - static int colortable[4] = {110, 112, 114, 116}; -+#endif - float ratio; - - ratio = 1.0 - (((float)self->endtime - (float)cl.time)/1000.0); -@@ -1133,7 +1143,9 @@ - - void CL_WidowSplash (vec3_t org) - { -+#ifndef QMAX - static int colortable[4] = {2*8,13*8,21*8,18*8}; -+#endif - int i; - cparticle_t *p; - vec3_t dir; -@@ -1260,10 +1272,12 @@ - */ - void CL_ColorExplosionParticles (vec3_t org, int color8, int run) - { -- int i, j; -- cparticle_t *p; -+ int i; - #ifdef QMAX - vec3_t color = { color8red(color8), color8green(color8), color8blue(color8)}; -+#else -+ int j; -+ cparticle_t *p; - #endif - for (i=0 ; i<128 ; i++) - { diff --git a/games/quake2lnx/files/patch-src::client::cl_view.c b/games/quake2lnx/files/patch-src::client::cl_view.c deleted file mode 100644 index 937fff2d4cef..000000000000 --- a/games/quake2lnx/files/patch-src::client::cl_view.c +++ /dev/null @@ -1,12 +0,0 @@ ---- src/client/cl_view.c.orig Thu Jun 12 14:25:46 2003 -+++ src/client/cl_view.c Thu Jun 12 14:26:07 2003 -@@ -470,7 +470,9 @@ - */ - void SCR_DrawCrosshair (void) - { -+#ifdef QMAX - float scale; -+#endif - if (!crosshair->value) - return; - diff --git a/games/quake2lnx/files/patch-src::client::snd_mix.c b/games/quake2lnx/files/patch-src::client::snd_mix.c deleted file mode 100644 index c295644afe3a..000000000000 --- a/games/quake2lnx/files/patch-src::client::snd_mix.c +++ /dev/null @@ -1,20 +0,0 @@ ---- src/client/snd_mix.c.orig Wed Oct 9 03:54:25 2002 -+++ src/client/snd_mix.c Thu Jun 12 15:16:54 2003 -@@ -30,7 +30,7 @@ - - void S_WriteLinearBlastStereo16 (void); - --#if !((defined __linux__ || defined __FreeBSD__) && defined __i386__) -+#if !((defined __linux__ || defined __FreeBSD__) && defined __i386__) || defined C_ONLY - #if !id386 - - void S_WriteLinearBlastStereo16 (void) -@@ -362,7 +362,7 @@ - } - - --#if !((defined __linux__ || __FreeBSD__) && defined __i386__) -+#if !((defined __linux__ || __FreeBSD__) && defined __i386__) || defined C_ONLY - #if !id386 - - void S_PaintChannelFrom8 (channel_t *ch, sfxcache_t *sc, int count, int offset) diff --git a/games/quake2lnx/files/patch-src::game::g_phys.c b/games/quake2lnx/files/patch-src::game::g_phys.c new file mode 100644 index 000000000000..d6684b01e770 --- /dev/null +++ b/games/quake2lnx/files/patch-src::game::g_phys.c @@ -0,0 +1,17 @@ +--- src/game/g_phys.c.orig Tue Mar 15 22:15:11 2005 ++++ src/game/g_phys.c Tue Mar 15 22:16:41 2005 +@@ -356,7 +356,13 @@ + mask = MASK_SOLID; + + trace = gi.trace (start, ent->mins, ent->maxs, end, ent, mask); +- ++ ++ if (trace.startsolid || trace.allsolid) ++ { ++ mask ^= CONTENTS_DEADMONSTER; ++ trace = gi.trace (start, ent->mins, ent->maxs, end, ent, mask); ++ } ++ + VectorCopy (trace.endpos, ent->s.origin); + gi.linkentity (ent); + diff --git a/games/quake2lnx/files/patch-src::linux::gl_glx.c b/games/quake2lnx/files/patch-src::linux::gl_glx.c index fbbfbea08fb9..16b252319b98 100644 --- a/games/quake2lnx/files/patch-src::linux::gl_glx.c +++ b/games/quake2lnx/files/patch-src::linux::gl_glx.c @@ -1,183 +1,100 @@ --- src/linux/gl_glx.c.orig Thu Oct 10 01:29:47 2002 +++ src/linux/gl_glx.c Mon Jun 16 23:19:21 2003 -@@ -40,7 +40,6 @@ - #include <signal.h> - #include <dlfcn.h> - #ifdef Joystick --#include <sys/stat.h> - #include <fcntl.h> - #endif - #include "../ref_gl/gl_local.h" -@@ -58,7 +57,11 @@ - #include <X11/extensions/xf86dga.h> - #include <X11/extensions/xf86vmode.h> - #ifdef Joystick --#include <linux/joystick.h> -+# if defined(__linux__) -+# include <linux/joystick.h> -+# elif defined(__FreeBSD__) -+# include <sys/joystick.h> -+# endif - #include <glob.h> - #endif - #include <GL/glx.h> -@@ -87,18 +90,19 @@ - #ifdef Joystick - static cvar_t *in_joystick; - static qboolean joystick_avail = false; --static int joy_fd, jx, jy, jt; -+static int joy_fd, jx, jy, center_jx, center_jy; - static cvar_t *j_invert_y; -+static cvar_t *j_sensitivity; - #endif - - #ifdef Joystick - void InitJoystick() { +@@ -475,6 +475,10 @@ + in_state->Key_Event_fp (K_MWHEELUP, 1); + else if (event.xbutton.button == 5) + in_state->Key_Event_fp (K_MWHEELDOWN, 1); ++ else if (event.xbutton.button == 6) ++ in_state->Key_Event_fp (K_MOUSE4, 1); ++ else if (event.xbutton.button == 7) ++ in_state->Key_Event_fp (K_MOUSE5, 1); + if (b>=0 && in_state && in_state->Key_Event_fp) + in_state->Key_Event_fp (K_MOUSE1 + b, true); + if (b>=0) +@@ -493,6 +497,10 @@ + in_state->Key_Event_fp (K_MWHEELUP, 0); + else if (event.xbutton.button == 5) + in_state->Key_Event_fp (K_MWHEELDOWN, 0); ++ else if (event.xbutton.button == 6) ++ in_state->Key_Event_fp (K_MOUSE4, 0); ++ else if (event.xbutton.button == 7) ++ in_state->Key_Event_fp (K_MOUSE5, 0); + if (b>=0 && in_state && in_state->Key_Event_fp) + in_state->Key_Event_fp (K_MOUSE1 + b, false); + if (b>=0) +@@ -1015,7 +1023,7 @@ + qboolean OpenJoystick(cvar_t *joy_dev) { int i, err; glob_t pglob; - struct js_event e; + struct joystick j; - joystick_avail = false; -- err = glob("/dev/js*", 0, NULL, &pglob); -+ err = glob("/dev/joy*", 0, NULL, &pglob); - - if (err) { - switch (err) { -@@ -111,7 +115,7 @@ + err = glob(joy_dev->string, 0, NULL, &pglob); + +@@ -1030,7 +1038,7 @@ default: ri.Con_Printf(PRINT_ALL, "Error #%d while looking for joysticks\n",err); } -- return; +- return false; + goto out; } for (i=0;i<pglob.gl_pathc;i++) { -@@ -121,15 +125,14 @@ +@@ -1039,38 +1047,36 @@ + if (joy_fd == -1) { ri.Con_Printf(PRINT_ALL, "Error opening joystick dev %s\n", pglob.gl_pathv[i]); +- return false; ++ goto out; } - else { - while (read(joy_fd, &e, sizeof(struct js_event))!=-1 && - (e.type & JS_EVENT_INIT)) - ri.Con_Printf(PRINT_ALL, "Read init event\n"); -- ri.Con_Printf(PRINT_ALL, "Using joystick dev %s\n", pglob.gl_pathv[i]); + else if (read(joy_fd, &j, sizeof(struct joystick)) != -1) { -+ ri.Con_Printf(PRINT_ALL, "Using joystick dev %s\n", pglob.gl_pathv[i]); - joystick_avail = true; -- return; -+ center_jx = j.x; center_jy = j.y; -+ break; + ri.Con_Printf(PRINT_ALL, "Using joystick dev %s\n", pglob.gl_pathv[i]); + return true; } } +out: globfree(&pglob); + return false; } - #endif -@@ -288,6 +291,7 @@ - #ifdef Joystick - in_joystick = ri.Cvar_Get ("in_joystick", "1", CVAR_ARCHIVE); - j_invert_y = ri.Cvar_Get ("j_invert_y", "1", CVAR_ARCHIVE); -+ j_sensitivity = ri.Cvar_Get ("j_sensitivity", "3", 0); - #endif - // mouse variables -@@ -342,8 +346,7 @@ - { - int i; - #ifdef Joystick -- struct js_event e; -- int key_index; -+ struct joystick j; - #endif - if (mouse_avail) { - for (i=0 ; i<3 ; i++) { -@@ -356,31 +359,18 @@ - mouse_oldbuttonstate = mouse_buttonstate; - } - #ifdef Joystick -+ /* FreeBSD does not fully support multi-buttoned joysticks */ - if (joystick_avail) { -- while (read(joy_fd, &e, sizeof(struct js_event))!=-1) { -- if (JS_EVENT_BUTTON & e.type) { -- key_index = (e.number < 4) ? K_JOY1 : K_AUX1; -- if (e.value) { -- in_state->Key_Event_fp (key_index + e.number, true); -- } -- else { -- in_state->Key_Event_fp (key_index + e.number, false); -- } -- //joy_oldbuttonstate = e.number; -- } -- else if (JS_EVENT_AXIS & e.type) { -- switch (e.number) { -- case 0: -- jx = e.value; -- break; -- case 1: -- jy = e.value; -- break; -- case 3: -- jt = e.value; -- break; -- } -- } -+ if (read(joy_fd, &j, sizeof(struct joystick)) != -1) { -+ if (j.b1) -+ in_state->Key_Event_fp (K_JOY1, true); -+ else -+ in_state->Key_Event_fp (K_JOY1, false); -+ if (j.b2) -+ in_state->Key_Event_fp (K_JOY2, true); -+ else -+ in_state->Key_Event_fp (K_JOY2, false); -+ jx = j.x; jy = j.y; - } - } - #endif -@@ -393,7 +383,11 @@ - */ - void RW_IN_Move (usercmd_t *cmd) - { -- if (!mouse_avail) -+ if (!mouse_avail -+#ifdef Joystick -+ && !joystick_avail -+#endif -+ ) - return; - - if (m_filter->value) -@@ -429,25 +423,26 @@ - - #ifdef Joystick - if (joystick_avail) { -+ int djx = (jx - center_jx) * j_sensitivity->value / 10, -+ djy = (jy - center_jy) * j_sensitivity->value / 10; - // add joy X/Y movement to cmd - if ( (*in_state->in_strafe_state & 1) || - (lookstrafe->value && mlooking )) -- cmd->sidemove += m_side->value * (jx/100); -+ cmd->sidemove += m_side->value * djx; - else -- in_state->viewangles[YAW] -= m_yaw->value * (jx/100); -+ in_state->viewangles[YAW] -= m_yaw->value * djx; - - if ( (mlooking || freelook->value) && - !(*in_state->in_strafe_state & 1)) - { - if (j_invert_y) -- in_state->viewangles[PITCH] -= m_pitch->value * (jy/100); -+ in_state->viewangles[PITCH] -= m_pitch->value * djy; - else -- in_state->viewangles[PITCH] += m_pitch->value * (jy/100); -- cmd->forwardmove -= m_forward->value * (jt/100); -+ in_state->viewangles[PITCH] += m_pitch->value * djy; - } - else - { -- cmd->forwardmove -= m_forward->value * (jy/100); -+ cmd->forwardmove -= m_forward->value * djy; - } + void PlatformJoyCommands(int *axis_vals, int *axis_map) { +- struct js_event e; +- int key_index; ++ struct joystick j; + in_state_t *in_state = getState(); +- +- while (read(joy_fd, &e, sizeof(struct js_event))!=-1) { +- if (JS_EVENT_BUTTON & e.type) { +- key_index = (e.number < 4) ? K_JOY1 : K_AUX1; +- if (e.value) { +- in_state->Key_Event_fp (key_index + e.number, true); +- } +- else { +- in_state->Key_Event_fp (key_index + e.number, false); +- } +- } +- else if (JS_EVENT_AXIS & e.type) { +- axis_vals[axis_map[e.number]] = e.value; +- } ++ ++ /* ++ * FreeBSD does not fully support multi-buttoned joysticks. ++ */ ++ if (read(joy_fd, &j, sizeof(struct joystick)) != -1) { ++ if (j.b1) ++ in_state->Key_Event_fp (K_JOY1, true); ++ else ++ in_state->Key_Event_fp (K_JOY1, false); ++ if (j.b2) ++ in_state->Key_Event_fp (K_JOY2, true); ++ else ++ in_state->Key_Event_fp (K_JOY2, false); ++ axis_vals[axis_map[0]] = j.x; ++ axis_vals[axis_map[1]] = j.y; } - #endif + } + diff --git a/games/quake2lnx/files/patch-src::linux::rw_aa.c b/games/quake2lnx/files/patch-src::linux::rw_aa.c deleted file mode 100644 index 9e3db53af38d..000000000000 --- a/games/quake2lnx/files/patch-src::linux::rw_aa.c +++ /dev/null @@ -1,30 +0,0 @@ ---- src/linux/rw_aa.c.orig Thu Jun 12 18:26:51 2003 -+++ src/linux/rw_aa.c Thu Jun 12 18:30:59 2003 -@@ -53,15 +53,18 @@ - */
-
- #include <termios.h>
-+#include <unistd.h>
- #include <sys/ioctl.h>
- #include <sys/stat.h>
--#include <sys/vt.h>
- #include <stdarg.h>
- #include <stdio.h>
- #include <signal.h>
- #include <sys/mman.h>
- #include <dlfcn.h>
-+#ifdef __linux__ -+#include <sys/vt.h>
- #include <asm/io.h>
-+#endif -
- #include <aalib.h>
-
-@@ -240,7 +243,6 @@ - */
- void SWimp_SetPalette( const unsigned char *palette )
- {
-- static int tmppal[256*3];
- const unsigned char *pal;
- int i;
-
diff --git a/games/quake2lnx/files/patch-src::linux::rw_in_aa.c b/games/quake2lnx/files/patch-src::linux::rw_in_aa.c deleted file mode 100644 index dfc466519b5c..000000000000 --- a/games/quake2lnx/files/patch-src::linux::rw_in_aa.c +++ /dev/null @@ -1,19 +0,0 @@ ---- src/linux/rw_in_aa.c.orig Thu Jun 12 18:31:47 2003 -+++ src/linux/rw_in_aa.c Thu Jun 12 18:32:19 2003 -@@ -40,13 +40,14 @@ - #include <termios.h>
- #include <sys/ioctl.h>
- #include <sys/stat.h>
--#include <sys/vt.h>
- #include <stdarg.h>
- #include <stdio.h>
- #include <signal.h>
- #include <sys/mman.h>
--
-+#ifdef __linux__ -+#include <sys/vt.h>
- #include <asm/io.h>
-+#endif -
- #include <aalib.h>
-
diff --git a/games/quake2lnx/files/patch-src::linux::rw_in_svgalib.c b/games/quake2lnx/files/patch-src::linux::rw_in_svgalib.c index 255532e3b1d6..f5502683e86f 100644 --- a/games/quake2lnx/files/patch-src::linux::rw_in_svgalib.c +++ b/games/quake2lnx/files/patch-src::linux::rw_in_svgalib.c @@ -1,6 +1,6 @@ --- src/linux/rw_in_svgalib.c.orig Wed Oct 9 03:54:25 2002 +++ src/linux/rw_in_svgalib.c Mon Jun 16 23:00:10 2003 -@@ -20,11 +20,23 @@ +@@ -20,7 +20,9 @@ #include <termios.h> #include <sys/ioctl.h> #include <sys/stat.h> @@ -10,21 +10,7 @@ #include <stdarg.h> #include <stdio.h> #include <signal.h> - #include <sys/mman.h> -+#ifdef Joystick -+# if defined(__linux__) -+# include <linux/joystick.h> -+# elif defined(__FreeBSD__) -+# include <sys/joystick.h> -+# endif -+#include <fcntl.h> -+#include <glob.h> -+#include <unistd.h> -+#endif - - #include "vga.h" - #include "vgakeyboard.h" -@@ -145,26 +157,22 @@ +@@ -145,26 +147,22 @@ // 84 to 86 not used scantokey[ 87] = K_F11; scantokey[ 88] = K_F12; @@ -67,207 +53,3 @@ if (keyboard_init()) Sys_Error("keyboard_init() failed"); -@@ -184,7 +192,7 @@ - } - - /*****************************************************************************/ --/* MOUSE */ -+/* MOUSE AND JOYSTICK */ - /*****************************************************************************/ - - // this is inside the renderer shared lib, so these are called from vid_so -@@ -207,6 +215,14 @@ - static cvar_t *mdev; - static cvar_t *mrate; - -+#ifdef Joystick -+static cvar_t *in_joystick; -+static qboolean joystick_avail = false; -+static int joy_fd, jx, jy, center_jx, center_jy; -+static cvar_t *j_invert_y; -+static cvar_t *j_sensitivity; -+#endif -+ - static qboolean mlooking; - - // state struct passed in Init -@@ -254,6 +270,49 @@ - } - #endif - -+#ifdef Joystick -+void -+InitJoystick() -+{ -+ int i, err; -+ glob_t pglob; -+ struct joystick j; -+ -+ err = glob("/dev/joy*", 0, NULL, &pglob); -+ -+ if (err) { -+ switch (err) { -+ case GLOB_NOSPACE: -+ ri.Con_Printf(PRINT_ALL, "Error, out of memory while looking for joysticks\n"); -+ break; -+ case GLOB_NOMATCH: -+ ri.Con_Printf(PRINT_ALL, "No joysticks found\n"); -+ break; -+ default: -+ ri.Con_Printf(PRINT_ALL, "Error #%d while looking for joysticks\n", err); -+ } -+ goto out; -+ } -+ -+ for (i = 0; i < pglob.gl_pathc; i++) { -+ ri.Con_Printf(PRINT_ALL, "Trying joystick dev %s\n", pglob.gl_pathv[i]); -+ joy_fd = open(pglob.gl_pathv[i], O_RDONLY | O_NONBLOCK); -+ if (joy_fd == -1) { -+ ri.Con_Printf(PRINT_ALL, "Error opening joystick dev %s\n", -+ pglob.gl_pathv[i]); -+ } -+ else if (read(joy_fd, &j, sizeof(struct joystick)) != -1) { -+ ri.Con_Printf(PRINT_ALL, "Using joystick dev %s\n", pglob.gl_pathv[i]); -+ joystick_avail = true; -+ center_jx = j.x; center_jy = j.y; -+ break; -+ } -+ } -+out: -+ globfree(&pglob); -+} -+#endif -+ - void RW_IN_Init(in_state_t *in_state_p) - { - int mtype; -@@ -262,7 +321,12 @@ - - // mouse variables - m_filter = ri.Cvar_Get ("m_filter", "0", 0); -- in_mouse = ri.Cvar_Get ("in_mouse", "1", CVAR_ARCHIVE); -+ in_mouse = ri.Cvar_Get ("in_mouse", "1", CVAR_ARCHIVE); -+#ifdef Joystick -+ in_joystick = ri.Cvar_Get ("in_joystick", "1", CVAR_ARCHIVE); -+ j_invert_y = ri.Cvar_Get ("j_invert_y", "1", CVAR_ARCHIVE); -+ j_sensitivity = ri.Cvar_Get ("j_sensitivity", "3", 0); -+#endif - freelook = ri.Cvar_Get( "freelook", "0", 0 ); - lookstrafe = ri.Cvar_Get ("lookstrafe", "0", 0); - sensitivity = ri.Cvar_Get ("sensitivity", "3", 0); -@@ -293,11 +357,20 @@ - } - else - mouse_seteventhandler(mousehandler); -+#ifdef Joystick -+ if (in_joystick) -+ InitJoystick(); -+#endif - } - - void RW_IN_Shutdown(void) - { - mouse_close(); -+#ifdef Joystick -+ if (joystick_avail) -+ if (close(joy_fd)) -+ ri.Con_Printf(PRINT_ALL, "Error, problem closing joystick\n"); -+#endif - } - - /* -@@ -307,7 +380,14 @@ - */ - void RW_IN_Commands (void) - { -- if (!UseMouse) -+#ifdef Joystick -+ struct joystick j; -+#endif -+ if (!UseMouse -+#ifdef Joystick -+ && !joystick_avail -+#endif -+ ) - return; - - // poll mouse values -@@ -346,6 +426,23 @@ - in_state->Key_Event_fp (K_MWHEELDOWN, false); - } - mwheel = 0; -+ -+#ifdef Joystick -+ /* FreeBSD does not fully support multi-buttoned joysticks */ -+ if (joystick_avail) { -+ if (read(joy_fd, &j, sizeof(struct joystick)) != -1) { -+ if (j.b1) -+ in_state->Key_Event_fp (K_JOY1, true); -+ else -+ in_state->Key_Event_fp (K_JOY1, false); -+ if (j.b2) -+ in_state->Key_Event_fp (K_JOY2, true); -+ else -+ in_state->Key_Event_fp (K_JOY2, false); -+ jx = j.x; jy = j.y; -+ } -+ } -+#endif - } - - /* -@@ -355,7 +452,11 @@ - */ - void RW_IN_Move (usercmd_t *cmd) - { -- if (!UseMouse) -+ if (!UseMouse -+#ifdef Joystick -+ && !joystick_avail -+#endif -+ ) - return; - - // poll mouse values -@@ -374,7 +475,11 @@ - old_mouse_x = mx; - old_mouse_y = my; - -- if (!mx && !my) -+ if (!mx && !my -+#ifdef Joystick -+ && !joystick_avail -+#endif -+ ) - return; - - mx = my = 0; // clear for next update -@@ -398,6 +503,28 @@ - { - cmd->forwardmove -= m_forward->value * mouse_y; - } -+ -+#ifdef Joystick -+ if (joystick_avail) { -+ int djx = (jx - center_jx) * j_sensitivity->value / 10, -+ djy = (jy - center_jy) * j_sensitivity->value / 10; -+// add joy X/Y movement to cmd -+ if ((*in_state->in_strafe_state & 1) || -+ (lookstrafe->value && mlooking)) -+ cmd->sidemove += m_side->value * djx; -+ else -+ in_state->viewangles[YAW] -= m_yaw->value * djx; -+ -+ if ((mlooking || freelook->value) && -+ !(*in_state->in_strafe_state & 1)) { -+ if (j_invert_y) -+ in_state->viewangles[PITCH] -= m_pitch->value * djy; -+ else -+ in_state->viewangles[PITCH] += m_pitch->value * djy; -+ } -+ else cmd->forwardmove -= m_forward->value * djy; -+ } -+#endif - } - - void RW_IN_Frame (void) diff --git a/games/quake2lnx/files/patch-src::linux::rw_linux.c b/games/quake2lnx/files/patch-src::linux::rw_linux.c new file mode 100644 index 000000000000..2ad83894da85 --- /dev/null +++ b/games/quake2lnx/files/patch-src::linux::rw_linux.c @@ -0,0 +1,13 @@ +--- src/linux/rw_linux.c.orig Sun Jan 2 09:46:35 2005 ++++ src/linux/rw_linux.c Wed Mar 9 17:40:28 2005 +@@ -31,6 +31,10 @@ + static int mouse_buttonstate; + static int mouse_oldbuttonstate; + ++#ifdef OPENGL ++static cvar_t *use_stencil; ++#endif ++ + in_state_t *getState() { + return in_state; + } diff --git a/games/quake2lnx/files/patch-src::linux::rw_sdl.c b/games/quake2lnx/files/patch-src::linux::rw_sdl.c deleted file mode 100644 index 7b3989bd2da8..000000000000 --- a/games/quake2lnx/files/patch-src::linux::rw_sdl.c +++ /dev/null @@ -1,14 +0,0 @@ ---- src/linux/rw_sdl.c.orig Wed Jun 18 08:01:40 2003 -+++ src/linux/rw_sdl.c Wed Jun 18 08:02:13 2003 -@@ -190,7 +190,10 @@ - */ - void RW_IN_Commands (void) - { -- int i, key_index; -+ int i; -+#ifdef Joystick -+ int key_index; -+#endif - - if (mouse_avail) { - for (i=0 ; i<3 ; i++) { diff --git a/games/quake2lnx/files/patch-src::linux::rw_x11.c b/games/quake2lnx/files/patch-src::linux::rw_x11.c index 3472cb66844e..72144026f5a4 100644 --- a/games/quake2lnx/files/patch-src::linux::rw_x11.c +++ b/games/quake2lnx/files/patch-src::linux::rw_x11.c @@ -1,171 +1,102 @@ --- src/linux/rw_x11.c.orig Wed Oct 9 03:54:25 2002 +++ src/linux/rw_x11.c Mon Jun 16 23:19:40 2003 -@@ -36,7 +36,6 @@ - #include <sys/time.h> - #include <sys/types.h> - #ifdef Joystick --#include <sys/stat.h> - #include <fcntl.h> - #endif - #include <unistd.h> -@@ -58,7 +57,11 @@ - #include <X11/extensions/xf86vmode.h> - #endif - #ifdef Joystick --#include <linux/joystick.h> -+# if defined(__linux__) -+# include <linux/joystick.h> -+# elif defined(__FreeBSD__) -+# include <sys/joystick.h> -+# endif - #include <glob.h> - #endif - -@@ -317,8 +320,9 @@ - #ifdef Joystick - static cvar_t *in_joystick; - static qboolean joystick_avail = false; --static int joy_fd, jx, jy, jt; -+static int joy_fd, jx, jy, center_jx, center_jy; - static cvar_t *j_invert_y; -+static cvar_t *j_sensitivity; - #endif - - static qboolean mlooking; -@@ -357,10 +361,10 @@ - void InitJoystick() { +@@ -446,7 +446,7 @@ + qboolean OpenJoystick(cvar_t *joy_dev) { int i, err; glob_t pglob; - struct js_event e; + struct joystick j; - joystick_avail = false; -- err = glob("/dev/js*", 0, NULL, &pglob); -+ err = glob("/dev/joy*", 0, NULL, &pglob); - - if (err) { - switch (err) { -@@ -373,7 +377,7 @@ + err = glob(joy_dev->string, 0, NULL, &pglob); + +@@ -461,7 +461,7 @@ default: ri.Con_Printf(PRINT_ALL, "Error #%d while looking for joysticks\n",err); } -- return; +- return false; + goto out; } for (i=0;i<pglob.gl_pathc;i++) { -@@ -383,15 +387,14 @@ +@@ -470,16 +470,14 @@ + if (joy_fd == -1) { ri.Con_Printf(PRINT_ALL, "Error opening joystick dev %s\n", pglob.gl_pathv[i]); +- return false; ++ goto out; } - else { - while (read(joy_fd, &e, sizeof(struct js_event))!=-1 && - (e.type & JS_EVENT_INIT)) - ri.Con_Printf(PRINT_ALL, "Read init event\n"); -- ri.Con_Printf(PRINT_ALL, "Using joystick dev %s\n", pglob.gl_pathv[i]); + else if (read(joy_fd, &j, sizeof(struct joystick)) != -1) { -+ ri.Con_Printf(PRINT_ALL, "Using joystick dev %s\n", pglob.gl_pathv[i]); - joystick_avail = true; -- return; -+ center_jx = j.x; center_jy = j.y; -+ break; + ri.Con_Printf(PRINT_ALL, "Using joystick dev %s\n", pglob.gl_pathv[i]); + return true; } } +out: globfree(&pglob); + return false; } - #endif -@@ -407,6 +410,7 @@ - #ifdef Joystick - in_joystick = ri.Cvar_Get ("in_joystick", "1", CVAR_ARCHIVE); - j_invert_y = ri.Cvar_Get ("j_invert_y", "1", CVAR_ARCHIVE); -+ j_sensitivity = ri.Cvar_Get ("j_sensitivity", "3", 0); - #endif - freelook = ri.Cvar_Get( "freelook", "0", 0 ); - lookstrafe = ri.Cvar_Get ("lookstrafe", "0", 0); -@@ -442,8 +446,7 @@ - { - int i; - #ifdef Joystick -- struct js_event e; -- int key_index; -+ struct joystick j; - #endif - if (mouse_avail) { - for (i=0 ; i<3 ; i++) { -@@ -456,31 +459,18 @@ - mouse_oldbuttonstate = mouse_buttonstate; - } - #ifdef Joystick -+ /* FreeBSD does not fully support multi-buttoned joysticks */ - if (joystick_avail) { -- while (read(joy_fd, &e, sizeof(struct js_event))!=-1) { -- if (JS_EVENT_BUTTON & e.type) { -- key_index = (e.number < 4) ? K_JOY1 : K_AUX1; -- if (e.value) { -- in_state->Key_Event_fp (key_index + e.number, true); -- } -- else { -- in_state->Key_Event_fp (key_index + e.number, false); -- } -- //joy_oldbuttonstate = e.number; -- } -- else if (JS_EVENT_AXIS & e.type) { -- switch (e.number) { -- case 0: -- jx = e.value; -- break; -- case 1: -- jy = e.value; -- break; -- case 3: -- jt = e.value; -- break; -- } -- } -+ if (read(joy_fd, &j, sizeof(struct joystick)) != -1) { -+ if (j.b1) -+ in_state->Key_Event_fp (K_JOY1, true); -+ else -+ in_state->Key_Event_fp (K_JOY1, false); -+ if (j.b2) -+ in_state->Key_Event_fp (K_JOY2, true); -+ else -+ in_state->Key_Event_fp (K_JOY2, false); -+ jx = j.x; jy = j.y; - } - } - #endif -@@ -542,25 +532,26 @@ - } +@@ -1014,6 +1012,10 @@ + in_state->Key_Event_fp (K_MWHEELUP, 1); + else if (event.xbutton.button == 5) + in_state->Key_Event_fp (K_MWHEELDOWN, 1); ++ else if (event.xbutton.button == 6) ++ in_state->Key_Event_fp (K_MOUSE4, 1); ++ else if (event.xbutton.button == 7) ++ in_state->Key_Event_fp (K_MOUSE5, 1); + if (b>=0) + mouse_buttonstate |= 1<<b; + break; +@@ -1030,6 +1032,10 @@ + in_state->Key_Event_fp (K_MWHEELUP, 0); + else if (event.xbutton.button == 5) + in_state->Key_Event_fp (K_MWHEELDOWN, 0); ++ else if (event.xbutton.button == 6) ++ in_state->Key_Event_fp (K_MOUSE4, 0); ++ else if (event.xbutton.button == 7) ++ in_state->Key_Event_fp (K_MOUSE5, 0); + if (b>=0) + mouse_buttonstate &= ~(1<<b); + break; +@@ -1969,23 +1975,23 @@ + #ifdef Joystick - if (joystick_avail) { -+ int djx = (jx - center_jx) * j_sensitivity->value / 10, -+ djy = (jy - center_jy) * j_sensitivity->value / 10; - // add joy X/Y movement to cmd - if ( (*in_state->in_strafe_state & 1) || - (lookstrafe->value && mlooking )) -- cmd->sidemove += m_side->value * (jx/100); -+ cmd->sidemove += m_side->value * djx; - else -- in_state->viewangles[YAW] -= m_yaw->value * (jx/100); -+ in_state->viewangles[YAW] -= m_yaw->value * djx; - - if ( (mlooking || freelook->value) && - !(*in_state->in_strafe_state & 1)) - { - if (j_invert_y) -- in_state->viewangles[PITCH] -= m_pitch->value * (jy/100); -+ in_state->viewangles[PITCH] -= m_pitch->value * djy; - else -- in_state->viewangles[PITCH] += m_pitch->value * (jy/100); -- cmd->forwardmove -= m_forward->value * (jt/100); -+ in_state->viewangles[PITCH] += m_pitch->value * djy; - } - else - { -- cmd->forwardmove -= m_forward->value * (jy/100); -+ cmd->forwardmove -= m_forward->value * djy; - } + void PlatformJoyCommands(int *axis_vals, int *axis_map) { +- struct js_event e; +- int key_index; ++ struct joystick j; + in_state_t *in_state = getState(); +- +- while (read(joy_fd, &e, sizeof(struct js_event))!=-1) { +- if (JS_EVENT_BUTTON & e.type) { +- key_index = (e.number < 4) ? K_JOY1 : K_AUX1; +- if (e.value) { +- in_state->Key_Event_fp (key_index + e.number, true); +- } +- else { +- in_state->Key_Event_fp (key_index + e.number, false); +- } +- } +- else if (JS_EVENT_AXIS & e.type) { +- axis_vals[axis_map[e.number]] = e.value; +- } ++ ++ /* ++ * FreeBSD does not fully support multi-buttoned joysticks. ++ */ ++ if (read(joy_fd, &j, sizeof(struct joystick)) != -1) { ++ if (j.b1) ++ in_state->Key_Event_fp (K_JOY1, true); ++ else ++ in_state->Key_Event_fp (K_JOY1, false); ++ if (j.b2) ++ in_state->Key_Event_fp (K_JOY2, true); ++ else ++ in_state->Key_Event_fp (K_JOY2, false); ++ axis_vals[axis_map[0]] = j.x; ++ axis_vals[axis_map[1]] = j.y; } + } #endif diff --git a/games/quake2lnx/files/patch-src::linux::sys_linux.c b/games/quake2lnx/files/patch-src::linux::sys_linux.c index 6b7a327a19b6..f8937490018d 100644 --- a/games/quake2lnx/files/patch-src::linux::sys_linux.c +++ b/games/quake2lnx/files/patch-src::linux::sys_linux.c @@ -1,11 +1,20 @@ --- src/linux/sys_linux.c.orig Sun Feb 1 19:06:29 2004 +++ src/linux/sys_linux.c Sun Feb 1 19:18:07 2004 -@@ -223,6 +223,10 @@ +@@ -217,14 +217,16 @@ + char *str_p; + #if defined __i386__ + const char *gamename = "gamei386.so"; +-#elif defined __x86_64__ +- const char *gamename = "gamex86_64.so"; ++#elif defined __amd64__ ++ const char *gamename = "gameamd64.so"; + #elif defined __alpha__ +- const char *gamename = "gameaxp.so"; ++ const char *gamename = "gamealpha.so"; + #elif defined __powerpc__ const char *gamename = "gameppc.so"; #elif defined __sparc__ const char *gamename = "gamesparc.so"; -+#elif defined __amd64__ -+ const char *gamename = "gameamd64.so"; +#elif defined __ia64__ + const char *gamename = "gameia64.so"; #else diff --git a/games/quake2lnx/files/patch-src::ref_candygl::gl_rmisc.c b/games/quake2lnx/files/patch-src::ref_candygl::gl_rmisc.c deleted file mode 100644 index 5579805c15ac..000000000000 --- a/games/quake2lnx/files/patch-src::ref_candygl::gl_rmisc.c +++ /dev/null @@ -1,12 +0,0 @@ ---- src/ref_candygl/gl_rmisc.c.orig Thu Jun 12 18:05:46 2003 -+++ src/ref_candygl/gl_rmisc.c Thu Jun 12 18:08:56 2003 -@@ -100,9 +100,6 @@ - int x,y; - byte data[8][8][4]; - -- byte *pic, *palette; -- int width, height; -- - partscale = (float)((int)gl_partscale->value)*0.01; - if (partscale>1) - partscale=1; diff --git a/games/quake2lnx/pkg-message b/games/quake2lnx/pkg-message index 3b8e61e983ef..9a80d8668d2d 100644 --- a/games/quake2lnx/pkg-message +++ b/games/quake2lnx/pkg-message @@ -9,4 +9,9 @@ sion data files. Note that you do not need full version to run dedicated server. + If you decide to build Xatrix/Rogue mission + packs, you'll need to copy their data files + to ${DATADIR}/xatrix|rogue/ + directory from installation CD. + =================================================== diff --git a/games/quake2lnx/pkg-plist b/games/quake2lnx/pkg-plist index b441f950b3a2..066afc155f83 100644 --- a/games/quake2lnx/pkg-plist +++ b/games/quake2lnx/pkg-plist @@ -2,83 +2,222 @@ %%CLIENT%%bin/quake2 %%SDLCLIENT%%bin/sdlquake2 %%SERVER%%bin/q2ded -@comment === DOCS === -%%PORTDOCS%%share/doc/quake2lnx/README -%%PORTDOCS%%@dirrm share/doc/quake2lnx @comment === RENDERERS === -%%SVGA%%share/quake2lnx/ref_soft.so -%%SDL%%share/quake2lnx/ref_softsdl.so -%%SDLGL%%share/quake2lnx/ref_sdlgl.so -%%X11%%share/quake2lnx/ref_softx.so -%%GLX%%share/quake2lnx/ref_glx.so -%%AA%%share/quake2lnx/ref_softaa.so +%%SVGA%%%%DATADIR%%/ref_soft.so +%%SDL%%%%DATADIR%%/ref_softsdl.so +%%SDLGL%%%%DATADIR%%/ref_sdlgl.so +%%X11%%%%DATADIR%%/ref_softx.so +%%GLX%%%%DATADIR%%/ref_glx.so +%%AA%%%%DATADIR%%/ref_softaa.so @comment === DATA === -%%GAME%%share/quake2lnx/baseq2/game%%ARCH%%.so -%%QMAX%%share/quake2lnx/baseq2/maxpak.pak -%%SHAREWARE%%share/quake2lnx/baseq2/pak0.pak -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/athena.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/athena_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/brianna.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/brianna_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/cobalt.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/cobalt_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/doomgal.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/doomgal_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/ensign.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/ensign_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/jezebel.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/jezebel_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/jungle.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/jungle_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/lotus.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/lotus_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/stiletto.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/stiletto_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/tris.md2 -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/venus.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/venus_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/voodoo.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/voodoo_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/weapon.md2 -%%SHAREWARE%%share/quake2lnx/baseq2/players/female/weapon.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/cipher.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/cipher_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/claymore.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/claymore_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/flak.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/flak_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/grunt.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/grunt_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/howitzer.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/howitzer_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/major.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/major_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/nightops.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/nightops_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/pointman.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/pointman_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/psycho.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/psycho_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/rampage.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/rampage_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/razor.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/razor_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/recon.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/recon_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/scout.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/scout_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/skin.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/sniper.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/sniper_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/tris.md2 -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/viper.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/viper_i.pcx -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/weapon.md2 -%%SHAREWARE%%share/quake2lnx/baseq2/players/male/weapon.pcx -%%SHAREWARE%%@dirrm share/quake2lnx/baseq2/players/male -%%SHAREWARE%%@dirrm share/quake2lnx/baseq2/players/female -%%SHAREWARE%%@dirrm share/quake2lnx/baseq2/players -%%CTF%%share/quake2lnx/ctf/game%%ARCH%%.so -%%CTF%%@dirrm share/quake2lnx/ctf -@dirrm share/quake2lnx/baseq2 -@dirrm share/quake2lnx +%%GAME%%%%DATADIR%%/baseq2/game%%ARCH%%.so +%%QMAX%%%%DATADIR%%/baseq2/maxpak.pak +%%RETEX%%%%DATADIR%%/baseq2/pak10.pak +%%RETEX%%%%DATADIR%%/baseq2/pak11.pak +%%RETEX%%%%DATADIR%%/baseq2/pak12.pak +%%RETEX%%%%DATADIR%%/baseq2/pak13.pak +%%RETEX%%%%DATADIR%%/baseq2/pak14.pak +%%RETEX%%%%DATADIR%%/baseq2/pak16.pak +%%RETEX%%%%DATADIR%%/baseq2/pak17.pak +%%RETEX%%%%DATADIR%%/baseq2/pak19.pak +%%SHAREWARE%%%%DATADIR%%/baseq2/pak0.pak +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/athena.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/athena_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/brianna.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/brianna_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/cobalt.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/cobalt_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/doomgal.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/doomgal_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/ensign.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/ensign_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/jezebel.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/jezebel_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/jungle.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/jungle_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/lotus.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/lotus_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/stiletto.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/stiletto_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/tris.md2 +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/venus.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/venus_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/voodoo.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/voodoo_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/weapon.md2 +%%SHAREWARE%%%%DATADIR%%/baseq2/players/female/weapon.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/cipher.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/cipher_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/claymore.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/claymore_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/flak.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/flak_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/grunt.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/grunt_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/howitzer.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/howitzer_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/major.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/major_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/nightops.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/nightops_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/pointman.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/pointman_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/psycho.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/psycho_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/rampage.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/rampage_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/razor.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/razor_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/recon.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/recon_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/scout.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/scout_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/skin.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/sniper.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/sniper_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/tris.md2 +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/viper.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/viper_i.pcx +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/weapon.md2 +%%SHAREWARE%%%%DATADIR%%/baseq2/players/male/weapon.pcx +%%SHAREWARE%%@dirrm %%DATADIR%%/baseq2/players/male +%%SHAREWARE%%@dirrm %%DATADIR%%/baseq2/players/female +%%SHAREWARE%%@dirrm %%DATADIR%%/baseq2/players +@dirrm %%DATADIR%%/baseq2 +%%CTF%%%%DATADIR%%/ctf/game%%ARCH%%.so +%%CTF%%@dirrm %%DATADIR%%/ctf +%%XATRIX%%%%DATADIR%%/xatrix/game%%ARCH%%.so +%%XATRIX%%@dirrm %%DATADIR%%/xatrix +%%ROGUE%%%%DATADIR%%/rogue/game%%ARCH%%.so +%%ROGUE%%@dirrm %%DATADIR%%/rogue +@dirrm %%DATADIR%% +@comment === DOCS === +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/bottom.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/credits.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/customer_support.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/enemy_barracuda_shark.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/enemy_berserker.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/enemy_brains.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/enemy_enforcer.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/enemy_flyer.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/enemy_gladiator.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/enemy_gunner.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/enemy_icarus.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/enemy_iron_maiden.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/enemy_light_guard.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/enemy_machinegun_guard.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/enemy_medic.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/enemy_mutant.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/adrenaline.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/amor_body.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/armor_combat.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/armor_jacket.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/armor_shard.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/bandoleer.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/barracuda_shark.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/berserker.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/bfg.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/blaster.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/bluekey.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/bottom_id_link_transparent.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/brains.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/breather.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/bullets.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/buttons.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/cells.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/chaingun.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/commandant_james.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/credits_main.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/door.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/elevator_base_exit_sign.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/enemy_groupshot.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/energy_armour.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/enforcer.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/envirosuit.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/explosive_barrels.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/first_aid.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/flyer.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/gladiator.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/grenades.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/grenade_launcher.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/gunner.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/hand_grenade.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/heavy_pack.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/hyper_blaster.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/icarus.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/invulnerability.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/iron_maiden.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/lava.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/lever.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/light_guard.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/machinegun.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/machinegun_guard.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/main_cover_image.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/manual_back.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/manual_bottom.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/manual_cover_image.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/manual_top.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/medic.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/medkit.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/mega_health.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/menu.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/multiplayer_main.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/multiplayer_menu1.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/multiplayer_screen1.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/mutant.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/no_data.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/options_menu.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/parasite.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/player_properties_screen1.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/quad_damage.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/rail_gun.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/rockets.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/rocket_launcher.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/secret_door.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/shells.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/shotgun.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/shotgun_guard.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/silencer.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/slime.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/start_network_server_screen1.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/stimpack.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/story_main.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/strogg_environ_1.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/strogg_environ_2.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/strogg_environ_3.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/supershotgun.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/tank.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/tank_commander.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/technician.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/top_nav_imagemap.gif +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/unit_exit_door.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/images/water.jpg +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/enemy_parasite.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/enemy_shotgun_guard.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/enemy_tank.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/enemy_tank_commander.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/enemy_technician.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/intel_brief.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/intel_brief2.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/intel_brief3.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/intel_brief4.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/intel_brief5.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/intel_brief6.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/intel_brief7.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/intel_brief8.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/intel_brief_enemy.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/main.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/multiplayer.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/page_index.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/story.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/setup_controls_screenmenus.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/technical_information.html +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/quake2_manual/top_nav.html +%%PORTDOCS%%%%MANUAL%%@dirrm %%DOCSDIR%%/quake2_manual/images +%%PORTDOCS%%%%MANUAL%%@dirrm %%DOCSDIR%%/quake2_manual +%%PORTDOCS%%%%MANUAL%%%%DOCSDIR%%/Manual.html +%%PORTDOCS%%%%DOCSDIR%%/README +%%PORTDOCS%%%%DOCSDIR%%/README.320 +%%PORTDOCS%%%%DOCSDIR%%/joystick.txt +%%PORTDOCS%%%%DOCSDIR%%/quake2.3dfxgl +%%PORTDOCS%%@dirrm %%DOCSDIR%% |