Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 9 Oct 2005 18:35:39 -0300
From:      "Alejandro Pulver" <alejandro@varnet.biz>
To:        "FreeBSD gnats submit" <FreeBSD-gnats-submit@FreeBSD.org>
Subject:   ports/87181: [UPDATE] games/quake2lnx: integrate with "quake2-data"
Message-ID:  <1128893739.0@phobos.mars.bsd>
Resent-Message-ID: <200510092140.j99LeLM2031858@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         87181
>Category:       ports
>Synopsis:       [UPDATE] games/quake2lnx: integrate with "quake2-data"
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Sun Oct 09 21:40:21 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Alejandro Pulver
>Release:        FreeBSD 5.4-RELEASE i386
>Organization:
>Environment:





>Description:


Changes:
* Integrate with "quake2-data".
* Add OPTIONS (21).
* Clean-up (sort knobs alphabetically, etc.).
* Automatically extract Rogue and Xatrix mission packs.
* Remove ARCH from library names (gamei386.so -> game.so). Also increases portability (the library name was manually defined between #ifdefs checking the architecture, and a #error at the end).
* Change patch names (using "_" instead of "::"), and also some patches.


>How-To-Repeat:





>Fix:


--- quake2lnx.diff begins here ---
diff -urN /usr/ports/games/quake2lnx/Makefile quake2lnx/Makefile
--- /usr/ports/games/quake2lnx/Makefile	Wed Jul 27 18:15:50 2005
+++ quake2lnx/Makefile	Fri Oct  7 18:45:23 2005
@@ -10,31 +10,9 @@
 PORTREVISION=	1
 CATEGORIES=	games
 MASTER_SITES=	http://www.icculus.org/quake2/files/:icc \
-		ftp://ftp.idsoftware.com/idstuff/quake2/:id
+		ftp://ftp.idsoftware.com/idstuff/quake2/source/:id
 DISTNAME=	quake2-r${PORTVERSION}
 DISTFILES=	${DISTNAME}${EXTRACT_SUFX}:icc
-.if defined(WITH_EYECANDY)
-DISTFILES+=	maxpak.pak:icc
-.endif
-.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) || defined(WITH_CTF_MAPS)
-EXTRACT_DEPENDS+=	unzip:${PORTSDIR}/archivers/unzip
-. if defined(WITH_CTF_MAPS)
-DISTFILES+=	q2-3.20-x86-full-ctf.exe:id
-. else
-DISTFILES+=	q2-314-demo-x86.exe:id
-. endif
-.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}
 
@@ -42,78 +20,43 @@
 COMMENT=	Cleaned up copy of the original Quake II source code
 
 USE_GMAKE=	yes
-USE_REINPLACE=	yes
 WANT_SDL=	yes
 
-.include <bsd.port.pre.mk>
+OPTIONS=	AA "Build ASCII software renderer" off \
+		ARTS "Enable support for aRts sound daemon" off \
+		CLIENT "Build client executable" on \
+		CTF "Build Capture The Flag mod" off \
+		EYECANDY "Build executable with fancier GL graphics" off \
+		GAME "Build a main game .so file" on \
+		GLX "Build GLX driver" on \
+		IPV6 "Enable experimental IPv6 support" off \
+		JOYSTICK "Enable joystick support" off \
+		OPTIMIZED_CFLAGS "Enable extra optimization options" off \
+		REDBLUE "Enable 3D glasses rendering" off \
+		RETEXTURE "Enable support of retextured graphics" off \
+		ROGUE "Build Ground Zero (Rogue) mission pack" off \
+		SDL "Build SDL software driver" off \
+		SDLCLIENT "Build executable that uses SDL" off \
+		SDLGL "Build SDL OpenGL driver" off \
+		SERVER "Build dedicated server executable" on \
+		SVGA "Build SVGA driver" off \
+		XATRIX "Build The Reckoning (Xatrix) mission pack" off \
+		X11 "Build X11 software driver" on \
+		X86_ASM "Enable use of x86 assembly code" on
 
-###                       #
-## CLIENTS AND RENDERERS ##
-#                       ###
+ALL_TARGET=	build_release
+MAKE_ENV=	DATADIR="${DATADIR}" LIBDIR="${LIBDIR}"
 
-.if ${ARCH} == "i386" && !defined(WITHOUT_SVGA) \
-	&& (defined(WITH_SVGA) || exists(${LOCALBASE}/lib/libvga.so.1))
-LIB_DEPENDS+=	vga.1:${PORTSDIR}/graphics/svgalib
-MAKE_ARGS+=	BUILD_SVGA=YES
-REF_TARGETS+=	soft
-PLIST_SUB+=	SVGA=""
-.else
-PLIST_SUB+=	SVGA="@comment "
-.endif
+PLIST_SUB+=	LIBDIR="${LIBDIR:S/${PREFIX}\///}"
 
-.if defined(WITH_SDLCLIENT) || defined(WITH_SDL) || defined(WITH_SDLGL) \
-	|| ${HAVE_SDL:Msdl} != ""
-. if !(defined(WITHOUT_SDLCLIENT) && defined(WITHOUT_SDL) \
-	&& defined(WITHOUT_SDLGL))
-USE_SDL=	sdl
-. endif
-. if !defined(WITHOUT_SDLCLIENT)
-MAKE_ARGS+=	BUILD_SDLQUAKE2=YES
-EXE_TARGETS+=	sdlquake2
-PLIST_SUB+=	SDLCLIENT=""
-. else
-PLIST_SUB+=	SDLCLIENT="@comment "
-. endif
-. if !defined(WITHOUT_SDL)
-MAKE_ARGS+=	BUILD_SDL=YES
-REF_TARGETS+=	softsdl
-PLIST_SUB+=	SDL=""
-. else
-PLIST_SUB+=	SDL="@comment "
-. endif
-. if !defined(WITHOUT_SDLGL)
-MAKE_ARGS+=	BUILD_SDLGL=YES
-REF_TARGETS+=	sdlgl
-PLIST_SUB+=	SDLGL=""
-. else
-PLIST_SUB+=	SDLGL="@comment "
-. endif
-.else
-PLIST_SUB+=	SDLCLIENT="@comment "
-PLIST_SUB+=	SDL="@comment "
-PLIST_SUB+=	SDLGL="@comment "
-.endif
+TGTDIR=		${WRKSRC}/release
+LIBDIR=		${PREFIX}/lib/${PORTNAME}
 
-.if !defined(WITHOUT_X11)
-USE_XLIB=	yes
-MAKE_ARGS+=	BUILD_X11=YES
-REF_TARGETS+=	softx
-PLIST_SUB+=	X11=""
-.else
-PLIST_SUB+=	X11="@comment "
-.endif
+.include "${.CURDIR}/../quake2-data/Makefile.include"
 
-.if !defined(WITHOUT_GLX) || defined(WITH_EYECANDY)
-USE_GL=		yes
-MAKE_ARGS+=	BUILD_GLX=YES
-REF_TARGETS+=	glx
-PLIST_SUB+=	GLX=""
-.else
-PLIST_SUB+=	GLX="@comment "
-.endif
+.include <bsd.port.pre.mk>
 
-.if !defined(WITHOUT_AA) && (defined(WITH_AA) \
-	|| exists(${LOCALBASE}/lib/libaa.so.1))
+.if defined(WITH_AA) || exists(${LOCALBASE}/lib/libaa.so.1)
 LIB_DEPENDS+=	aa.1:${PORTSDIR}/graphics/aalib
 MAKE_ARGS+=	BUILD_AA=YES
 REF_TARGETS+=	softaa
@@ -122,15 +65,12 @@
 PLIST_SUB+=	AA="@comment "
 .endif
 
-.if defined(WITH_EYECANDY)
-LIB_DEPENDS+=	jpeg.9:${PORTSDIR}/graphics/jpeg
-MAKE_ARGS+=	BUILD_QMAX=YES
-PLIST_SUB+=	QMAX=""
-.else
-PLIST_SUB+=	QMAX="@comment "
+.if defined(WITH_ARTS) || exists (${LOCALBASE}/lib/libartsc.so.0)
+LIB_DEPENDS+=	artsc.0:${PORTSDIR}/audio/arts
+MAKE_ARGS+=	BUILD_ARTS=YES
 .endif
 
-.if !defined(WITHOUT_CLIENT)
+.if defined(WITH_CLIENT)
 MAKE_ARGS+=	BUILD_CLIENT=YES
 EXE_TARGETS+=	quake2
 PLIST_SUB+=	CLIENT=""
@@ -138,275 +78,185 @@
 PLIST_SUB+=	CLIENT="@comment "
 .endif
 
-.if !defined(WITHOUT_SERVER)
-MAKE_ARGS+=	BUILD_DEDICATED=YES
-PLIST_SUB+=	SERVER=""
-EXE_TARGETS+=	q2ded
+.if defined(WITH_CTF)
+MAKE_ARGS+=	BUILD_CTFDLL=YES
+PLIST_SUB+=	CTF=""
 .else
-PLIST_SUB+=	SERVER="@comment "
+PLIST_SUB+=	CTF="@comment "
 .endif
 
-###                                #
-## GAME, MISSION ADDONS, AND MODS ##
-#                                ###
+.if defined(WITH_EYECANDY)
+DISTFILES+=	maxpak.pak:icc
+LIB_DEPENDS+=	jpeg.9:${PORTSDIR}/graphics/jpeg
+MAKE_ARGS+=	BUILD_QMAX=YES
+PLIST_SUB+=	QMAX=""
+.else
+PLIST_SUB+=	QMAX="@comment "
+.endif
 
-.if !defined(WITHOUT_GAME)
+.if defined(WITH_GAME)
 MAKE_ARGS+=	BUILD_GAME=YES
 PLIST_SUB+=	GAME=""
 .else
 PLIST_SUB+=	GAME="@comment "
 .endif
 
-.if defined(WITH_XATRIX)
-MAKE_ARGS+=	BUILD_XATRIX=YES
-Q2MP+=		xatrix
-IS_INTERACTIVE=	yes
-PLIST_SUB+=	XATRIX=""
+.if defined(WITH_GLX) || defined(WITH_EYECANDY)
+USE_GL=		yes
+MAKE_ARGS+=	BUILD_GLX=YES
+REF_TARGETS+=	glx
+PLIST_SUB+=	GLX=""
 .else
-PLIST_SUB+=	XATRIX="@comment "
+PLIST_SUB+=	GLX="@comment "
 .endif
 
-.if defined(WITH_ROGUE)
-MAKE_ARGS+=	BUILD_ROGUE=YES
-Q2MP+=		rogue
-IS_INTERACTIVE=	yes
-PLIST_SUB+=	ROGUE=""
-.else
-PLIST_SUB+=	ROGUE="@comment "
+.if defined(WITH_IPV6)
+MAKE_ARGS+=	HAVE_IPV6=YES
 .endif
 
-.if defined(WITH_CTF)
-MAKE_ARGS+=	BUILD_CTFDLL=YES
-PLIST_SUB+=	CTF=""
-.else
-PLIST_SUB+=	CTF="@comment "
+.if defined(WITH_JOYSTICK)
+MAKE_ARGS+=	BUILD_JOYSTICK=YES
 .endif
 
-.if defined(WITH_CTF_MAPS)
-PLIST_SUB+=	CTFMAPS=""
-.else
-PLIST_SUB+=	CTFMAPS="@comment "
+.if defined(WITH_OPTIMIZED_CFLAGS)
+MAKE_ARGS+=	OPTIMIZED_CFLAGS="-O3 -s -ffast-math -funroll-loops -fomit-frame-pointer -fexpensive-optimizations"
 .endif
 
-.if defined(WITH_SHAREWARE_DATA)
-PLIST_SUB+=	SHAREWARE=""
-.else
-PLIST_SUB+=	SHAREWARE="@comment "
+.if defined(WITH_REDBLUE)
+MAKE_ARGS+=	BUILD_REDBLUE=YES
 .endif
 
-###                        #
-## MISCELLANEOUS TUNABLES ##
-#                        ###
-
 .if defined(WITH_RETEXTURE)
+.   for i in 10 11 12 13 14 16 17 19
+DISTFILES+=	pak${i}.pak:icc
+.   endfor
 MAKE_ARGS+=	BUILD_RETEXTURE=YES
 PLIST_SUB+=	RETEX=""
 .else
 PLIST_SUB+=	RETEX="@comment "
 .endif
 
-.if defined(WITH_REDBLUE)
-MAKE_ARGS+=	BUILD_REDBLUE=YES
+.if defined(WITH_ROGUE)
+DISTFILES+=	roguesrc320.shar.Z:id
+EXTRA_PATCHES+=	${FILESDIR}/extra-patch-src_rogue_g__local.h \
+		${FILESDIR}/extra-patch-src_rogue_q__shared.c
+MAKE_ARGS+=	BUILD_ROGUE=YES
+Q2MP+=		rogue
+ROGUE_OFF=	454
+PLIST_SUB+=	ROGUE=""
+.else
+PLIST_SUB+=	ROGUE="@comment "
 .endif
 
-.if defined(WITH_JOYSTICK)
-MAKE_ARGS+=	BUILD_JOYSTICK=YES
+.if defined(WITH_SDL) || ${HAVE_SDL:Msdl} != ""
+USE_SDL=	sdl
+MAKE_ARGS+=	BUILD_SDL=YES
+REF_TARGETS+=	softsdl
+PLIST_SUB+=	SDL=""
+.else
+PLIST_SUB+=	SDL="@comment "
 .endif
 
-.if !defined(WITHOUT_ARTS) && (defined(WITH_ARTS) \
-	|| exists (${LOCALBASE}/lib/libartsc.so.0))
-LIB_DEPENDS+=	artsc.0:${PORTSDIR}/audio/arts
-MAKE_ARGS+=	BUILD_ARTS=YES
+.if defined(WITH_SDLCLIENT) && (defined(WITH_SDL) || ${HAVE_SDL:Msdl} != "")
+MAKE_ARGS+=	BUILD_SDLQUAKE2=YES
+EXE_TARGETS+=	sdlquake2
+PLIST_SUB+=	SDLCLIENT=""
+.else
+PLIST_SUB+=	SDLCLIENT="@comment "
 .endif
 
-.if defined(WITH_IPV6)
-MAKE_ARGS+=	HAVE_IPV6=YES
+.if defined(WITH_SDLGL) && (defined(WITH_SDL) || ${HAVE_SDL:Msdl} != "")
+MAKE_ARGS+=	BUILD_SDLGL=YES
+REF_TARGETS+=	sdlgl
+PLIST_SUB+=	SDLGL=""
+.else
+PLIST_SUB+=	SDLGL="@comment "
 .endif
 
-.if defined(WITH_OPTIMIZED_CFLAGS)
-MAKE_ARGS+=	OPTIMIZED_CFLAGS="-O9 -pipe -s -ffast-math -funroll-loops -fomit-frame-pointer -fexpensive-optimizations"
+.if defined(WITH_SERVER)
+MAKE_ARGS+=	BUILD_DEDICATED=YES
+PLIST_SUB+=	SERVER=""
+EXE_TARGETS+=	q2ded
+.else
+PLIST_SUB+=	SERVER="@comment "
 .endif
 
-.if ${ARCH} != "i386" || defined(WITHOUT_X86_ASM)
-MAKE_ARGS+=	NO_X86_ASM=YES
+.if defined(WITH_SVGA) || exists(${LOCALBASE}/lib/libvga.so.1)
+LIB_DEPENDS+=	vga.1:${PORTSDIR}/graphics/svgalib
+MAKE_ARGS+=	BUILD_SVGA=YES
+REF_TARGETS+=	soft
+PLIST_SUB+=	SVGA=""
+.else
+PLIST_SUB+=	SVGA="@comment "
 .endif
 
-.if defined(WITH_MANUAL)
-PLIST_SUB+=	MANUAL=""
+.if defined(WITH_XATRIX)
+DISTFILES+=	xatrixsrc320.shar.Z:id
+EXTRA_PATCHES+=	${FILESDIR}/extra-patch-src_xatrix_q__shared.c
+MAKE_ARGS+=	BUILD_XATRIX=YES
+Q2MP+=		xatrix
+XATRIX_OFF=	441
+PLIST_SUB+=	XATRIX=""
 .else
-PLIST_SUB+=	MANUAL="@comment "
+PLIST_SUB+=	XATRIX="@comment "
 .endif
 
-###                            #
-## END OF CONFIGURATION KNOBS ##
-#                            ###
-
-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} != "")
-	@${ECHO_MSG} "Define WITH_SDL to build SDL software driver"
-.endif
-.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"
-.endif
-.if !(defined(WITH_AA) || exists(${LOCALBASE}/lib/libaa.so.1))
-	@${ECHO_MSG} "Define WITH_AA to build ASCII software renderer"
-.endif
-.if !defined(WITHOUT_X11)
-	@${ECHO_MSG} "Define WITHOUT_X11 to disable building of X11 driver"
-.endif
-.if !defined(WITHOUT_GLX)
-	@${ECHO_MSG} "Define WITHOUT_GLX to disable building of GLX driver"
-.endif
-.if !defined(WITH_EYECANDY)
-	@${ECHO_MSG} "Define WITH_EYECANDY to build executable with fancier GL graphics"
-.endif
-.if !defined(WITHOUT_CLIENT)
-	@${ECHO_MSG} "Define WITHOUT_CLIENT to disable building Quake2 client executable"
-.endif
-.if !defined(WITHOUT_SERVER)
-	@${ECHO_MSG} "Define WITHOUT_SERVER to disable building of dedicated server"
-.endif
-.if !defined(WITHOUT_GAME)
-	@${ECHO_MSG} "Define WITHOUT_GAME to build without main game .so"
-.endif
-.if !defined(WITH_CTF)
-	@${ECHO_MSG} "Define WITH_CTF to build Capture The Flag mod"
-.endif
-.if !defined(WITH_CTF_MAPS)
-	@${ECHO_MSG} "Define WITH_CTF_MAPS to install maps for CTF 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
-.if !(defined(WITH_ARTS) || exists (${LOCALBASE}/lib/libartsc.so.0))
-	@${ECHO_MSG} "Define WITH_ARTS to enable support for aRts sound daemon"
-.endif
-.if !defined(WITH_IPV6)
-	@${ECHO_MSG} "Define WITH_IPV6 to enable experimental IPv6 support"
-.endif
-.if !defined(WITH_OPTIMIZED_CFLAGS)
-	@${ECHO_MSG} "Define WITH_OPTIMIZED_CFLAGS to enable extra optimization options"
-.endif
-.if ${ARCH} == "i386" && !defined(WITHOUT_X86_ASM)
-	@${ECHO_MSG} "Define WITHOUT_X86_ASM to disable x86 assembly code"
+.if defined(WITH_X11)
+USE_XLIB=	yes
+MAKE_ARGS+=	BUILD_X11=YES
+REF_TARGETS+=	softx
+PLIST_SUB+=	X11=""
+.else
+PLIST_SUB+=	X11="@comment "
 .endif
 
-ALL_TARGET=	build_release
-TGTDIR=		${WRKSRC}/release${ARCH}
+.if ${ARCH} != "i386" || defined(WITHOUT_X86_ASM)
+MAKE_ARGS+=	NO_X86_ASM=YES
+.endif
 
 post-extract:
-.if defined(WITH_XATRIX) || defined(WITH_ROGUE)
-. for mp in ${Q2MP}
+.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
-
-PLIST_SUB+=	ARCH="${ARCH}"
+		${DISTDIR}/${DIST_SUBDIR}/${mp}src320.shar.Z > \
+		${mp}src320.shar && \
+		${TAIL} +${${mp:U}_OFF} ${mp}src320.shar | ${SH})
+.endfor
 
 do-install:
 .for tgt in ${EXE_TARGETS}
 	${INSTALL_PROGRAM} ${TGTDIR}/${tgt} ${PREFIX}/bin
 .endfor
-	@${MKDIR} ${DATADIR}/baseq2 ${DATADIR}/ctf
+	${MKDIR} ${LIBDIR}
 .for tgt in ${REF_TARGETS}
-	${INSTALL_PROGRAM} ${TGTDIR}/ref_${tgt}.so ${DATADIR}
+	${INSTALL_PROGRAM} ${TGTDIR}/ref_${tgt}.so ${LIBDIR}
 .endfor
-.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)
-	${INSTALL_PROGRAM} ${TGTDIR}/ctf/game${ARCH}.so ${DATADIR}/ctf
+	${MKDIR} ${LIBDIR}/ctf
+	${INSTALL_PROGRAM} ${TGTDIR}/ctf/game.so ${LIBDIR}/ctf
 .endif
-.if defined(WITH_CTF_MAPS)
-	${UNZIP_CMD} -oj -d ${DATADIR}/ctf \
-		${DISTDIR}/${DIST_SUBDIR}/q2-3.20-x86-full-ctf.exe ctf/pak0.pak
-.endif
-.if defined(WITH_SHAREWARE_DATA)
-	@${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
+.if defined(WITH_EYECANDY)
+	${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/maxpak.pak ${DATADIR}/baseq2
+.endif
+.if defined(WITH_GAME)
+	${MKDIR} ${LIBDIR}/baseq2
+	${INSTALL_PROGRAM} ${TGTDIR}/game.so ${LIBDIR}/baseq2
 .endif
 .if defined(WITH_RETEXTURE)
-. for i in 10 11 12 13 14 16 17 19
+.   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}/${DIST_SUBDIR}/maxpak.pak ${DATADIR}/baseq2
+.   endfor
 .endif
+.for mp in ${Q2MP}
+	${MKDIR} ${LIBDIR}/${mp}
+	${INSTALL_PROGRAM} ${TGTDIR}/${mp}/game.so ${LIBDIR}/${mp}
+.endfor
 .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
-
-PKGMESSAGE=	${WRKDIR}/pkg-message
-
-post-install:
-	@${SED} -e 's|$${DATADIR}|${DATADIR}|g' ${.CURDIR}/pkg-message >${PKGMESSAGE}
-	@${CAT} ${PKGMESSAGE}
+.endif
 
 .include <bsd.port.post.mk>
diff -urN /usr/ports/games/quake2lnx/distinfo quake2lnx/distinfo
--- /usr/ports/games/quake2lnx/distinfo	Mon Mar 21 09:22:46 2005
+++ quake2lnx/distinfo	Tue Sep 27 19:54:44 2005
@@ -18,11 +18,7 @@
 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/q2-3.20-x86-full-ctf.exe) = 490557d4a90ff346a175d865a2bade87
-SIZE (quake2lnx/q2-3.20-x86-full-ctf.exe) = 19267584
-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
+MD5 (quake2lnx/roguesrc320.shar.Z) = 7d5e052839c9e629bad0a6570aa70554
+SIZE (quake2lnx/roguesrc320.shar.Z) = 626769
+MD5 (quake2lnx/xatrixsrc320.shar.Z) = 41fc4ecc4f25c068e7d1f488bd4a1e1a
+SIZE (quake2lnx/xatrixsrc320.shar.Z) = 455917
diff -urN /usr/ports/games/quake2lnx/files/extra-patch-src_rogue_g__local.h quake2lnx/files/extra-patch-src_rogue_g__local.h
--- /usr/ports/games/quake2lnx/files/extra-patch-src_rogue_g__local.h	Wed Dec 31 21:00:00 1969
+++ quake2lnx/files/extra-patch-src_rogue_g__local.h	Tue Sep 27 20:20:48 2005
@@ -0,0 +1,10 @@
+--- src/rogue/g_local.h.orig	Mon Nov 30 17:53:20 1998
++++ src/rogue/g_local.h	Tue Sep 27 20:20:27 2005
+@@ -22,7 +22,6 @@
+ //==================================================================
+ 
+ #ifndef _WIN32
+-#include <nan.h>
+ #define min(a,b) ((a) < (b) ? (a) : (b))
+ #define max(a,b) ((a) > (b) ? (a) : (b))
+ #ifdef __sun__
diff -urN /usr/ports/games/quake2lnx/files/extra-patch-src_rogue_q__shared.c quake2lnx/files/extra-patch-src_rogue_q__shared.c
--- /usr/ports/games/quake2lnx/files/extra-patch-src_rogue_q__shared.c	Wed Dec 31 21:00:00 1969
+++ quake2lnx/files/extra-patch-src_rogue_q__shared.c	Tue Sep 27 20:04:08 2005
@@ -0,0 +1,11 @@
+--- src/rogue/q_shared.c.orig	Mon Nov 30 17:53:34 1998
++++ src/rogue/q_shared.c	Tue Sep 27 20:03:24 2005
+@@ -329,7 +329,7 @@
+ Returns 1, 2, or 1 + 2
+ ==================
+ */
+-#if !id386 || defined __linux__ 
++#if !id386 || defined __linux__ || defined __FreeBSD__
+ int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p)
+ {
+ 	float	dist1, dist2;
diff -urN /usr/ports/games/quake2lnx/files/extra-patch-src_xatrix_q__shared.c quake2lnx/files/extra-patch-src_xatrix_q__shared.c
--- /usr/ports/games/quake2lnx/files/extra-patch-src_xatrix_q__shared.c	Wed Dec 31 21:00:00 1969
+++ quake2lnx/files/extra-patch-src_xatrix_q__shared.c	Tue Sep 27 20:05:15 2005
@@ -0,0 +1,11 @@
+--- src/xatrix/q_shared.c.orig	Mon Nov 30 17:55:36 1998
++++ src/xatrix/q_shared.c	Tue Sep 27 20:04:53 2005
+@@ -326,7 +326,7 @@
+ Returns 1, 2, or 1 + 2
+ ==================
+ */
+-#if !id386 || defined __linux__ 
++#if !id386 || defined __linux__ || defined __FreeBSD__
+ int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p)
+ {
+ 	float	dist1, dist2;
diff -urN /usr/ports/games/quake2lnx/files/patch-Makefile quake2lnx/files/patch-Makefile
--- /usr/ports/games/quake2lnx/files/patch-Makefile	Tue Mar 15 16:32:31 2005
+++ quake2lnx/files/patch-Makefile	Fri Oct  7 17:37:28 2005
@@ -1,5 +1,5 @@
---- Makefile.orig	Thu Oct 10 01:08:21 2002
-+++ Makefile	Tue Jun 17 22:23:11 2003
+--- Makefile.orig	Fri Sep 24 19:06:52 2004
++++ Makefile	Fri Oct  7 17:37:25 2005
 @@ -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.
@@ -51,7 +51,7 @@
  
  # (hopefully) end of configurable options
  
-@@ -52,55 +52,11 @@
+@@ -52,60 +52,16 @@
  endif
  endif
  
@@ -110,12 +110,19 @@
  
  MOUNT_DIR=src
  
+-BUILD_DEBUG_DIR=debug$(ARCH)
+-BUILD_RELEASE_DIR=release$(ARCH)
++BUILD_DEBUG_DIR=debug
++BUILD_RELEASE_DIR=release
+ CLIENT_DIR=$(MOUNT_DIR)/client
+ SERVER_DIR=$(MOUNT_DIR)/server
+ REF_SOFT_DIR=$(MOUNT_DIR)/ref_soft
 @@ -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)
++BASE_CFLAGS=-pipe -Dstricmp=strcasecmp -DDATADIR='\"${DATADIR}\"' -DLIBDIR='\"${LIBDIR}\"' $(CFLAGS)
  ifeq ($(HAVE_IPV6),YES)
  BASE_CFLAGS+= -DHAVE_IPV6
  ifeq ($(OSTYPE),FreeBSD)
@@ -151,7 +158,7 @@
 +AALDFLAGS=-L${PREFIX}/lib -laa
  
 -SDLCFLAGS=$(shell sdl-config --cflags)
-+SDLCFLAGS=$(shell sdl11-config --cflags)
++SDLCFLAGS=$(shell ${SDL_CONFIG} --cflags)
  ifeq ($(strip $(STATICSDL)),YES)
 -	SDLLDFLAGS += -L/usr/X11R6/lib$(_LIB) -Wl,-Bstatic $(SDLDIR)/libSDL.a
 +	SDLLDFLAGS += -L${X11BASE}/lib$(_LIB) -Wl,-Bstatic $(SDLDIR)/libSDL.a
@@ -160,7 +167,7 @@
  		-lXinerama
  else
 -	SDLLDFLAGS=$(shell sdl-config --libs)
-+	SDLLDFLAGS=$(shell sdl11-config --libs)
++	SDLLDFLAGS=$(shell ${SDL_CONFIG} --libs)
  endif
  
  ifeq ($(strip $(BUILD_JOYSTICK)),YES)
@@ -194,7 +201,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 $<
  
-@@ -224,10 +189,42 @@
+@@ -224,168 +189,54 @@
  
  .PHONY : targets build_debug build_release clean clean-debug clean-release clean2
  
@@ -232,14 +239,22 @@
  endif
 +
 +ifeq ($(strip $(BUILD_GAME)),YES)
-+ TARGETS += $(BUILDDIR)/game$(ARCH).$(SHLIBEXT)
++ TARGETS += $(BUILDDIR)/game.$(SHLIBEXT)
 +endif
 +
  ifeq ($(strip $(BUILD_CTFDLL)),YES)
-  TARGETS += $(BUILDDIR)/ctf/game$(ARCH).$(SHLIBEXT)
+- TARGETS += $(BUILDDIR)/ctf/game$(ARCH).$(SHLIBEXT)
++ TARGETS += $(BUILDDIR)/ctf/game.$(SHLIBEXT)
  endif
-@@ -240,152 +237,6 @@
-  TARGETS += $(BUILDDIR)/rogue/game$(ARCH).$(SHLIBEXT)
+ 
+ ifeq ($(strip $(BUILD_XATRIX)),YES)
+- TARGETS += $(BUILDDIR)/xatrix/game$(ARCH).$(SHLIBEXT)
++ TARGETS += $(BUILDDIR)/xatrix/game.$(SHLIBEXT)
+ endif
+ 
+ ifeq ($(strip $(BUILD_ROGUE)),YES)
+- TARGETS += $(BUILDDIR)/rogue/game$(ARCH).$(SHLIBEXT)
++ TARGETS += $(BUILDDIR)/rogue/game.$(SHLIBEXT)
  endif
  
 -ifeq ($(ARCH),axp)
@@ -404,6 +419,42 @@
  endif
  
  $(BUILDDIR)/quake2 : $(QUAKE2_OBJS) $(QUAKE2_LNX_OBJS) $(QUAKE2_AS_OBJS)
+@@ -821,7 +673,7 @@
+ 	$(BUILDDIR)/game/q_shared.o \
+ 	$(BUILDDIR)/game/m_flash.o
+ 
+-$(BUILDDIR)/game$(ARCH).$(SHLIBEXT) : $(GAME_OBJS)
++$(BUILDDIR)/game.$(SHLIBEXT) : $(GAME_OBJS)
+ 	$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(GAME_OBJS)
+ 
+ $(BUILDDIR)/game/g_ai.o :        $(GAME_DIR)/g_ai.c
+@@ -1000,7 +852,7 @@
+ 	$(BUILDDIR)/ctf/p_weapon.o \
+ 	$(BUILDDIR)/ctf/q_shared.o
+ 
+-$(BUILDDIR)/ctf/game$(ARCH).$(SHLIBEXT) : $(CTF_OBJS)
++$(BUILDDIR)/ctf/game.$(SHLIBEXT) : $(CTF_OBJS)
+ 	$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(CTF_OBJS)
+ 
+ $(BUILDDIR)/ctf/g_ai.o :       $(CTF_DIR)/g_ai.c
+@@ -1139,7 +991,7 @@
+ 	$(BUILDDIR)/xatrix/p_weapon.o \
+ 	$(BUILDDIR)/xatrix/q_shared.o
+ 
+-$(BUILDDIR)/xatrix/game$(ARCH).$(SHLIBEXT) : $(XATRIX_OBJS)
++$(BUILDDIR)/xatrix/game.$(SHLIBEXT) : $(XATRIX_OBJS)
+ 	$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(XATRIX_OBJS)
+ 
+ $(BUILDDIR)/xatrix/g_ai.o :        $(XATRIX_DIR)/g_ai.c
+@@ -1367,7 +1219,7 @@
+ 	$(BUILDDIR)/rogue/q_shared.o
+ 
+ 
+-$(BUILDDIR)/rogue/game$(ARCH).$(SHLIBEXT) : $(ROGUE_OBJS)
++$(BUILDDIR)/rogue/game.$(SHLIBEXT) : $(ROGUE_OBJS)
+ 	$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(ROGUE_OBJS)
+ 
+ $(BUILDDIR)/rogue/dm_ball.o :      $(ROGUE_DIR)/dm_ball.c
 @@ -1588,6 +1440,7 @@
  endif
  
diff -urN /usr/ports/games/quake2lnx/files/patch-src::game::g_phys.c quake2lnx/files/patch-src::game::g_phys.c
--- /usr/ports/games/quake2lnx/files/patch-src::game::g_phys.c	Tue Mar 15 16:32:31 2005
+++ quake2lnx/files/patch-src::game::g_phys.c	Wed Dec 31 21:00:00 1969
@@ -1,17 +0,0 @@
---- 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 -urN /usr/ports/games/quake2lnx/files/patch-src::linux::gl_glx.c quake2lnx/files/patch-src::linux::gl_glx.c
--- /usr/ports/games/quake2lnx/files/patch-src::linux::gl_glx.c	Tue Mar 15 16:32:31 2005
+++ quake2lnx/files/patch-src::linux::gl_glx.c	Wed Dec 31 21:00:00 1969
@@ -1,100 +0,0 @@
---- 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
-@@ -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;
- 
-   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 false;
-+    goto out;
-   }  
-   
-   for (i=0;i<pglob.gl_pathc;i++) {
-@@ -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");
-+    else if (read(joy_fd, &j, sizeof(struct joystick)) != -1) {
-       ri.Con_Printf(PRINT_ALL, "Using joystick dev %s\n", pglob.gl_pathv[i]);
-       return true;
-     }
-   }
-+out:
-   globfree(&pglob);
-   return false;
- }
- 
- 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;
-   }
- }
- 
diff -urN /usr/ports/games/quake2lnx/files/patch-src::linux::rw_in_svgalib.c quake2lnx/files/patch-src::linux::rw_in_svgalib.c
--- /usr/ports/games/quake2lnx/files/patch-src::linux::rw_in_svgalib.c	Tue Mar 15 16:32:31 2005
+++ quake2lnx/files/patch-src::linux::rw_in_svgalib.c	Wed Dec 31 21:00:00 1969
@@ -1,55 +0,0 @@
---- 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,7 +20,9 @@
- #include <termios.h>
- #include <sys/ioctl.h>
- #include <sys/stat.h>
-+#ifdef __linux__
- #include <sys/vt.h>
-+#endif
- #include <stdarg.h>
- #include <stdio.h>
- #include <signal.h>
-@@ -145,26 +147,22 @@
- 	// 84 to 86 not used
- 	scantokey[ 87] = K_F11;
- 	scantokey[ 88] = K_F12;
--	// 89 to 95 not used
--	scantokey[ 96] = K_KP_ENTER; //keypad enter
--	scantokey[ 97] = K_CTRL; //right
--	scantokey[ 98] = K_KP_SLASH;
--	scantokey[ 99] = K_F12; // print screen, bind to screenshot by default
--	scantokey[100] = K_ALT; // right
--
--	scantokey[101] = K_PAUSE; // break
--	scantokey[102] = K_HOME;
--	scantokey[103] = K_UPARROW;
--	scantokey[104] = K_PGUP;
--	scantokey[105] = K_LEFTARROW;
--	scantokey[106] = K_RIGHTARROW;
--	scantokey[107] = K_END;
--	scantokey[108] = K_DOWNARROW;
--	scantokey[109] = K_PGDN;
--	scantokey[110] = K_INS;
--	scantokey[111] = K_DEL;
--
--	scantokey[119] = K_PAUSE;
-+	scantokey[ 89] = K_KP_ENTER; //keypad enter
-+	scantokey[ 90] = K_CTRL; //right
-+	scantokey[ 91] = K_KP_SLASH;
-+	scantokey[ 92] = K_F12; // print screen, bind to screenshot by default
-+	scantokey[ 93] = K_ALT; // right
-+	scantokey[ 94] = K_HOME;
-+	scantokey[ 95] = K_UPARROW;
-+	scantokey[ 96] = K_PGUP;
-+	scantokey[ 97] = K_LEFTARROW;
-+	scantokey[ 98] = K_RIGHTARROW;
-+	scantokey[ 99] = K_END;
-+	scantokey[100] = K_DOWNARROW;
-+	scantokey[101] = K_PGDN;
-+	scantokey[102] = K_INS;
-+	scantokey[103] = K_DEL;
-+	scantokey[104] = K_PAUSE;
- 
- 	if (keyboard_init())
- 		Sys_Error("keyboard_init() failed");
diff -urN /usr/ports/games/quake2lnx/files/patch-src::linux::rw_linux.c quake2lnx/files/patch-src::linux::rw_linux.c
--- /usr/ports/games/quake2lnx/files/patch-src::linux::rw_linux.c	Tue Mar 15 16:32:31 2005
+++ quake2lnx/files/patch-src::linux::rw_linux.c	Wed Dec 31 21:00:00 1969
@@ -1,13 +0,0 @@
---- 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 -urN /usr/ports/games/quake2lnx/files/patch-src::linux::rw_svgalib.c quake2lnx/files/patch-src::linux::rw_svgalib.c
--- /usr/ports/games/quake2lnx/files/patch-src::linux::rw_svgalib.c	Wed Jun 18 06:21:21 2003
+++ quake2lnx/files/patch-src::linux::rw_svgalib.c	Wed Dec 31 21:00:00 1969
@@ -1,12 +0,0 @@
---- src/linux/rw_svgalib.c.orig	Thu Jun 12 18:41:01 2003
-+++ src/linux/rw_svgalib.c	Thu Jun 12 18:41:41 2003
-@@ -36,7 +36,9 @@
- #include <termios.h>
- #include <sys/ioctl.h>
- #include <sys/stat.h>
-+#ifdef __linux__
- #include <sys/vt.h>
-+#endif
- #include <stdarg.h>
- #include <stdio.h>
- #include <signal.h>
diff -urN /usr/ports/games/quake2lnx/files/patch-src::linux::rw_x11.c quake2lnx/files/patch-src::linux::rw_x11.c
--- /usr/ports/games/quake2lnx/files/patch-src::linux::rw_x11.c	Tue Mar 15 16:32:31 2005
+++ quake2lnx/files/patch-src::linux::rw_x11.c	Wed Dec 31 21:00:00 1969
@@ -1,102 +0,0 @@
---- 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
-@@ -446,7 +446,7 @@
- qboolean OpenJoystick(cvar_t *joy_dev) {
-   int i, err;
-   glob_t pglob;
--  struct js_event e;
-+  struct joystick j;
- 
-   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 false;
-+    goto out;
-   }  
-   
-   for (i=0;i<pglob.gl_pathc;i++) {
-@@ -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");
-+    else if (read(joy_fd, &j, sizeof(struct joystick)) != -1) {
-       ri.Con_Printf(PRINT_ALL, "Using joystick dev %s\n", pglob.gl_pathv[i]);
-       return true;
-     }
-   }
-+out:
-   globfree(&pglob);
-   return false;
- }
-@@ -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
- 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 -urN /usr/ports/games/quake2lnx/files/patch-src::linux::sys_linux.c quake2lnx/files/patch-src::linux::sys_linux.c
--- /usr/ports/games/quake2lnx/files/patch-src::linux::sys_linux.c	Tue Mar 15 16:32:31 2005
+++ quake2lnx/files/patch-src::linux::sys_linux.c	Wed Dec 31 21:00:00 1969
@@ -1,22 +0,0 @@
---- 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
-@@ -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 __ia64__
-+	const char *gamename = "gameia64.so";
- #else
- #error Unknown arch
- #endif
diff -urN /usr/ports/games/quake2lnx/files/patch-src::qcommon::files.c quake2lnx/files/patch-src::qcommon::files.c
--- /usr/ports/games/quake2lnx/files/patch-src::qcommon::files.c	Mon Jun 30 05:55:39 2003
+++ quake2lnx/files/patch-src::qcommon::files.c	Wed Dec 31 21:00:00 1969
@@ -1,14 +0,0 @@
---- src/qcommon/files.c.orig	Wed Oct  9 03:54:25 2002
-+++ src/qcommon/files.c	Sat Jun 28 12:30:57 2003
-@@ -898,7 +898,11 @@
- 	// basedir <path>
- 	// allows the game to run from outside the data tree
- 	//
-+#ifdef DEDICATED_ONLY
- 	fs_basedir = Cvar_Get ("basedir", ".", CVAR_NOSET);
-+#else
-+	fs_basedir = Cvar_Get ("basedir", "%%%%BASEDIR%%%%", CVAR_NOSET);
-+#endif
- 
- 	//
- 	// cddir <path>
diff -urN /usr/ports/games/quake2lnx/files/patch-src_game_g__phys.c quake2lnx/files/patch-src_game_g__phys.c
--- /usr/ports/games/quake2lnx/files/patch-src_game_g__phys.c	Wed Dec 31 21:00:00 1969
+++ quake2lnx/files/patch-src_game_g__phys.c	Mon Sep 26 16:57:46 2005
@@ -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 -urN /usr/ports/games/quake2lnx/files/patch-src_linux_gl__glx.c quake2lnx/files/patch-src_linux_gl__glx.c
--- /usr/ports/games/quake2lnx/files/patch-src_linux_gl__glx.c	Wed Dec 31 21:00:00 1969
+++ quake2lnx/files/patch-src_linux_gl__glx.c	Mon Sep 26 16:57:46 2005
@@ -0,0 +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
+@@ -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;
+ 
+   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 false;
++    goto out;
+   }  
+   
+   for (i=0;i<pglob.gl_pathc;i++) {
+@@ -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");
++    else if (read(joy_fd, &j, sizeof(struct joystick)) != -1) {
+       ri.Con_Printf(PRINT_ALL, "Using joystick dev %s\n", pglob.gl_pathv[i]);
+       return true;
+     }
+   }
++out:
+   globfree(&pglob);
+   return false;
+ }
+ 
+ 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;
+   }
+ }
+ 
diff -urN /usr/ports/games/quake2lnx/files/patch-src_linux_joystick.c quake2lnx/files/patch-src_linux_joystick.c
--- /usr/ports/games/quake2lnx/files/patch-src_linux_joystick.c	Wed Dec 31 21:00:00 1969
+++ quake2lnx/files/patch-src_linux_joystick.c	Tue Sep 27 20:22:10 2005
@@ -0,0 +1,11 @@
+--- src/linux/joystick.c.orig	Thu Jan 27 19:35:20 2005
++++ src/linux/joystick.c	Tue Sep 27 20:21:45 2005
+@@ -75,7 +75,7 @@
+   in_joystick = ri.Cvar_Get ("in_joystick", "1", CVAR_ARCHIVE);
+   if (in_joystick->value) {
+     joy_name = ri.Cvar_Get ("joy_name", "joystick", 0);
+-    joy_dev = ri.Cvar_Get ("joy_dev","/dev/js*",CVAR_ARCHIVE);
++    joy_dev = ri.Cvar_Get ("joy_dev","/dev/joy*",CVAR_ARCHIVE);
+     joy_advanced = ri.Cvar_Get ("joy_advanced","0",0);
+     joy_advaxisx = ri.Cvar_Get ("joy_advaxisx","4",0);
+     joy_advaxisy = ri.Cvar_Get ("joy_advaxisy","2",0);
diff -urN /usr/ports/games/quake2lnx/files/patch-src_linux_rw__in__svgalib.c quake2lnx/files/patch-src_linux_rw__in__svgalib.c
--- /usr/ports/games/quake2lnx/files/patch-src_linux_rw__in__svgalib.c	Wed Dec 31 21:00:00 1969
+++ quake2lnx/files/patch-src_linux_rw__in__svgalib.c	Mon Sep 26 16:57:46 2005
@@ -0,0 +1,55 @@
+--- 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,7 +20,9 @@
+ #include <termios.h>
+ #include <sys/ioctl.h>
+ #include <sys/stat.h>
++#ifdef __linux__
+ #include <sys/vt.h>
++#endif
+ #include <stdarg.h>
+ #include <stdio.h>
+ #include <signal.h>
+@@ -145,26 +147,22 @@
+ 	// 84 to 86 not used
+ 	scantokey[ 87] = K_F11;
+ 	scantokey[ 88] = K_F12;
+-	// 89 to 95 not used
+-	scantokey[ 96] = K_KP_ENTER; //keypad enter
+-	scantokey[ 97] = K_CTRL; //right
+-	scantokey[ 98] = K_KP_SLASH;
+-	scantokey[ 99] = K_F12; // print screen, bind to screenshot by default
+-	scantokey[100] = K_ALT; // right
+-
+-	scantokey[101] = K_PAUSE; // break
+-	scantokey[102] = K_HOME;
+-	scantokey[103] = K_UPARROW;
+-	scantokey[104] = K_PGUP;
+-	scantokey[105] = K_LEFTARROW;
+-	scantokey[106] = K_RIGHTARROW;
+-	scantokey[107] = K_END;
+-	scantokey[108] = K_DOWNARROW;
+-	scantokey[109] = K_PGDN;
+-	scantokey[110] = K_INS;
+-	scantokey[111] = K_DEL;
+-
+-	scantokey[119] = K_PAUSE;
++	scantokey[ 89] = K_KP_ENTER; //keypad enter
++	scantokey[ 90] = K_CTRL; //right
++	scantokey[ 91] = K_KP_SLASH;
++	scantokey[ 92] = K_F12; // print screen, bind to screenshot by default
++	scantokey[ 93] = K_ALT; // right
++	scantokey[ 94] = K_HOME;
++	scantokey[ 95] = K_UPARROW;
++	scantokey[ 96] = K_PGUP;
++	scantokey[ 97] = K_LEFTARROW;
++	scantokey[ 98] = K_RIGHTARROW;
++	scantokey[ 99] = K_END;
++	scantokey[100] = K_DOWNARROW;
++	scantokey[101] = K_PGDN;
++	scantokey[102] = K_INS;
++	scantokey[103] = K_DEL;
++	scantokey[104] = K_PAUSE;
+ 
+ 	if (keyboard_init())
+ 		Sys_Error("keyboard_init() failed");
diff -urN /usr/ports/games/quake2lnx/files/patch-src_linux_rw__linux.c quake2lnx/files/patch-src_linux_rw__linux.c
--- /usr/ports/games/quake2lnx/files/patch-src_linux_rw__linux.c	Wed Dec 31 21:00:00 1969
+++ quake2lnx/files/patch-src_linux_rw__linux.c	Mon Sep 26 16:57:46 2005
@@ -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 -urN /usr/ports/games/quake2lnx/files/patch-src_linux_rw__svgalib.c quake2lnx/files/patch-src_linux_rw__svgalib.c
--- /usr/ports/games/quake2lnx/files/patch-src_linux_rw__svgalib.c	Wed Dec 31 21:00:00 1969
+++ quake2lnx/files/patch-src_linux_rw__svgalib.c	Mon Sep 26 16:57:46 2005
@@ -0,0 +1,12 @@
+--- src/linux/rw_svgalib.c.orig	Thu Jun 12 18:41:01 2003
++++ src/linux/rw_svgalib.c	Thu Jun 12 18:41:41 2003
+@@ -36,7 +36,9 @@
+ #include <termios.h>
+ #include <sys/ioctl.h>
+ #include <sys/stat.h>
++#ifdef __linux__
+ #include <sys/vt.h>
++#endif
+ #include <stdarg.h>
+ #include <stdio.h>
+ #include <signal.h>
diff -urN /usr/ports/games/quake2lnx/files/patch-src_linux_rw__x11.c quake2lnx/files/patch-src_linux_rw__x11.c
--- /usr/ports/games/quake2lnx/files/patch-src_linux_rw__x11.c	Wed Dec 31 21:00:00 1969
+++ quake2lnx/files/patch-src_linux_rw__x11.c	Mon Sep 26 16:57:46 2005
@@ -0,0 +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
+@@ -446,7 +446,7 @@
+ qboolean OpenJoystick(cvar_t *joy_dev) {
+   int i, err;
+   glob_t pglob;
+-  struct js_event e;
++  struct joystick j;
+ 
+   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 false;
++    goto out;
+   }  
+   
+   for (i=0;i<pglob.gl_pathc;i++) {
+@@ -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");
++    else if (read(joy_fd, &j, sizeof(struct joystick)) != -1) {
+       ri.Con_Printf(PRINT_ALL, "Using joystick dev %s\n", pglob.gl_pathv[i]);
+       return true;
+     }
+   }
++out:
+   globfree(&pglob);
+   return false;
+ }
+@@ -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
+ 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 -urN /usr/ports/games/quake2lnx/files/patch-src_linux_sys__linux.c quake2lnx/files/patch-src_linux_sys__linux.c
--- /usr/ports/games/quake2lnx/files/patch-src_linux_sys__linux.c	Wed Dec 31 21:00:00 1969
+++ quake2lnx/files/patch-src_linux_sys__linux.c	Fri Oct  7 17:33:32 2005
@@ -0,0 +1,23 @@
+--- src/linux/sys_linux.c.orig	Sun Sep 12 15:26:29 2004
++++ src/linux/sys_linux.c	Fri Oct  7 17:32:46 2005
+@@ -215,19 +215,7 @@
+ 	char	name[MAX_OSPATH];
+ 	char	*path;
+ 	char	*str_p;
+-#if defined __i386__
+-	const char *gamename = "gamei386.so";
+-#elif defined __x86_64__
+-	const char *gamename = "gamex86_64.so";
+-#elif defined __alpha__
+-	const char *gamename = "gameaxp.so";
+-#elif defined __powerpc__
+-	const char *gamename = "gameppc.so";
+-#elif defined __sparc__
+-	const char *gamename = "gamesparc.so";
+-#else
+-#error Unknown arch
+-#endif
++	const char *gamename = "game.so";
+ 
+ 	setreuid(getuid(), getuid());
+ 	setegid(getgid());
diff -urN /usr/ports/games/quake2lnx/files/patch-src_linux_vid_so.c quake2lnx/files/patch-src_linux_vid_so.c
--- /usr/ports/games/quake2lnx/files/patch-src_linux_vid_so.c	Wed Dec 31 21:00:00 1969
+++ quake2lnx/files/patch-src_linux_vid_so.c	Tue Sep 27 19:29:18 2005
@@ -0,0 +1,34 @@
+--- src/linux/vid_so.c.orig	Fri Sep 24 19:11:44 2004
++++ src/linux/vid_so.c	Tue Sep 27 19:28:29 2005
+@@ -216,7 +216,6 @@
+ 	refimport_t	ri;
+ 	GetRefAPI_t	GetRefAPI;
+ 	char	fn[MAX_OSPATH];
+-	char	*path;
+ 	struct stat st;
+ 	extern uid_t saved_euid;
+ 	
+@@ -237,9 +236,7 @@
+ 	//regain root
+ 	seteuid(saved_euid);
+ 
+-	path = Cvar_Get ("basedir", ".", CVAR_NOSET)->string;
+-
+-	snprintf (fn, MAX_OSPATH, "%s/%s", path, name );
++	snprintf (fn, MAX_OSPATH, LIBDIR"/%s", name );
+ 	
+ 	if (stat(fn, &st) == -1) {
+ 		Com_Printf( "LoadLibrary(\"%s\") failed: %s\n", name, strerror(errno));
+@@ -490,11 +487,9 @@
+ qboolean VID_CheckRefExists (const char *ref)
+ {
+ 	char	fn[MAX_OSPATH];
+-	char	*path;
+ 	struct stat st;
+ 
+-	path = Cvar_Get ("basedir", ".", CVAR_NOSET)->string;
+-	snprintf (fn, MAX_OSPATH, "%s/ref_%s.so", path, ref );
++	snprintf (fn, MAX_OSPATH, LIBDIR"/ref_%s.so", ref );
+ 	
+ 	if (stat(fn, &st) == 0)
+ 		return true;
diff -urN /usr/ports/games/quake2lnx/files/patch-src_qcommon_files.c quake2lnx/files/patch-src_qcommon_files.c
--- /usr/ports/games/quake2lnx/files/patch-src_qcommon_files.c	Wed Dec 31 21:00:00 1969
+++ quake2lnx/files/patch-src_qcommon_files.c	Tue Sep 27 18:26:29 2005
@@ -0,0 +1,12 @@
+--- src/qcommon/files.c.orig	Sun Jan  2 00:38:12 2005
++++ src/qcommon/files.c	Tue Sep 27 18:25:41 2005
+@@ -912,7 +912,8 @@
+ 	//
+ 	// add baseq2 to search path
+ 	//
+-	FS_AddGameDirectory (va("%s/"BASEDIRNAME, fs_basedir->string) );
++	FS_AddGameDirectory(LIBDIR"/"BASEDIRNAME);
++	FS_AddGameDirectory(DATADIR"/"BASEDIRNAME);
+ 
+ 	//
+ 	// then add a '.quake2/baseq2' directory in home directory by default
diff -urN /usr/ports/games/quake2lnx/pkg-message quake2lnx/pkg-message
--- /usr/ports/games/quake2lnx/pkg-message	Tue Mar 15 16:32:30 2005
+++ quake2lnx/pkg-message	Wed Dec 31 21:00:00 1969
@@ -1,17 +0,0 @@
-===================================================
-
-    Install additional mission paks and mods in
-    ${DATADIR}/ directory.
-
-    You must also own full (registered) version
-    of Quake II, or rebuild the port with "make
-    -DWITH_SHAREWARE_DATA" to install demo ver-
-    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 -urN /usr/ports/games/quake2lnx/pkg-plist quake2lnx/pkg-plist
--- /usr/ports/games/quake2lnx/pkg-plist	Mon Mar 21 09:22:46 2005
+++ quake2lnx/pkg-plist	Fri Oct  7 17:47:12 2005
@@ -1,16 +1,20 @@
-@comment === EXECUTABLES ===
+%%SERVER%%bin/q2ded
 %%CLIENT%%bin/quake2
 %%SDLCLIENT%%bin/sdlquake2
-%%SERVER%%bin/q2ded
-@comment === RENDERERS ===
-%%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%%%%DATADIR%%/baseq2/game%%ARCH%%.so
+%%GAME%%%%LIBDIR%%/baseq2/game.so
+%%CTF%%%%LIBDIR%%/ctf/game.so
+%%ROGUE%%%%LIBDIR%%/rogue/game.so
+%%XATRIX%%%%LIBDIR%%/xatrix/game.so
+%%GLX%%%%LIBDIR%%/ref_glx.so
+%%SDLGL%%%%LIBDIR%%/ref_sdlgl.so
+%%SVGA%%%%LIBDIR%%/ref_soft.so
+%%AA%%%%LIBDIR%%/ref_softaa.so
+%%SDL%%%%LIBDIR%%/ref_softsdl.so
+%%X11%%%%LIBDIR%%/ref_softx.so
+%%PORTDOCS%%%%DOCSDIR%%/README
+%%PORTDOCS%%%%DOCSDIR%%/README.320
+%%PORTDOCS%%%%DOCSDIR%%/joystick.txt
+%%PORTDOCS%%%%DOCSDIR%%/quake2.3dfxgl
 %%QMAX%%%%DATADIR%%/baseq2/maxpak.pak
 %%RETEX%%%%DATADIR%%/baseq2/pak10.pak
 %%RETEX%%%%DATADIR%%/baseq2/pak11.pak
@@ -20,205 +24,9 @@
 %%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
-%%CTFMAPS%%%%DATADIR%%/ctf/pak0.pak
-@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%%
+%%CTF%%@dirrm %%LIBDIR%%/ctf
+%%GAME%%@dirrm %%LIBDIR%%/baseq2
+%%ROGUE%%@dirrm %%LIBDIR%%/rogue
+%%XATRIX%%@dirrm %%LIBDIR%%/xatrix
+@dirrm %%LIBDIR%%
--- quake2lnx.diff ends here ---



>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1128893739.0>