aboutsummaryrefslogtreecommitdiff
path: root/games/fuhquake
diff options
context:
space:
mode:
authorSergey A. Osokin <osa@FreeBSD.org>2003-09-01 11:52:06 +0000
committerSergey A. Osokin <osa@FreeBSD.org>2003-09-01 11:52:06 +0000
commitaaba25b6be579a88f78743b40d24f6e5233400e2 (patch)
treefc83cf6b56b5a70f0de303f9593d3e491339c37e /games/fuhquake
parent05d67c5d60f65a99133a1ec9bcd028dcf59b1d66 (diff)
downloadports-aaba25b6be579a88f78743b40d24f6e5233400e2.tar.gz
ports-aaba25b6be579a88f78743b40d24f6e5233400e2.zip
Notes
Diffstat (limited to 'games/fuhquake')
-rw-r--r--games/fuhquake/Makefile35
-rw-r--r--games/fuhquake/distinfo3
-rw-r--r--games/fuhquake/files/patch-common.c11
-rw-r--r--games/fuhquake/files/patch-mp3_player.c21
-rw-r--r--games/fuhquake/files/patch-vid_glx.c15
-rw-r--r--games/fuhquake/files/patch-vid_x11.c131
-rw-r--r--games/fuhquake/pkg-message11
-rw-r--r--games/fuhquake/pkg-plist26
8 files changed, 227 insertions, 26 deletions
diff --git a/games/fuhquake/Makefile b/games/fuhquake/Makefile
index e081a4925d71..a6334e6ebe6b 100644
--- a/games/fuhquake/Makefile
+++ b/games/fuhquake/Makefile
@@ -7,6 +7,7 @@
PORTNAME= fuhquake
PORTVERSION= 0.28
+PORTREVISION= 1
CATEGORIES= games
MASTER_SITES= http://www.fuhquake.net/files/source/:src \
http://www.fuhquake.net/files/releases/:dat \
@@ -14,7 +15,16 @@ MASTER_SITES= http://www.fuhquake.net/files/source/:src \
DISTNAME= ${PORTNAME}-source-v${PORTVERSION}
DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:src \
${PORTNAME}-linux-v${PORTVERSION}${EXTRACT_SUFX}:dat \
- pak0.pak${EXTRACT_SUFX}:pak
+ pak0.pak:pak
+.if defined(WITH_SHAREWARE_DATA)
+DISTFILES+= q1-shareware-pak0.pak:pak
+PLIST_SUB+= SHAREWARE=""
+.else
+PLIST_SUB+= SHAREWARE="@comment "
+.endif
+
+EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} \
+ ${PORTNAME}-linux-v${PORTVERSION}${EXTRACT_SUFX}
MAINTAINER= danfe@regency.nsu.ru
COMMENT= An excellent QuakeWorld client
@@ -72,6 +82,12 @@ pre-everything::
.if !defined(WITHOUT_GLX)
@${ECHO_MSG} "Define WITHOUT_GLX to disable building of GLX client"
.endif
+.if defined(WITH_SHAREWARE_DATA)
+ @${ECHO_MSG} "Define WITH_SHAREWARE_DATA to install demo version game data"
+.endif
+.if !defined(WITHOUT_XMMS) && exists(${X11BASE}/lib/libxmms.so.3)
+ @${ECHO_MSG} "Define WITHOUT_XMMS to build without \`\`MP3 Player'' feature"
+.endif
.if !defined(WITH_OPTIMIZED_CFLAGS)
@${ECHO_MSG} "Define WITH_OPTIMIZED_CFLAGS to enable extra optimization options"
.endif
@@ -80,14 +96,17 @@ pre-everything::
.endif
MAKEFILE= ${FILESDIR}/Makefile
+USE_REINPLACE= yes
USE_ZIP= yes
-EXTRACT_BEFORE_ARGS+= -qo
WRKSRC= ${WRKDIR}/source
post-extract:
@${FIND} -E ${WRKDIR} -type f -iregex ".*\.(c|h|s|txt)" -exec ${FILESDIR}/fix^m.sh '{}' \;
@${CP} ${FILESDIR}/*.c ${WRKSRC}
+post-patch:
+ @${REINPLACE_CMD} -e 's|%%%%BASEDIR%%%%|${DATADIR}|' ${WRKSRC}/common.c
+
do-build:
.if !defined(WITHOUT_X11)
@(cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} clean x11)
@@ -105,11 +124,15 @@ do-install:
.for tgt in ${END_TARGETS}
${INSTALL_PROGRAM} ${WRKSRC}/${tgt} ${PREFIX}/bin
.endfor
- @${MKDIR} ${DATADIR}/qw
- @${MKDIR} ${DATADIR}/${PORTNAME}
+ @${MKDIR} ${DATADIR}/qw ${DATADIR}/${PORTNAME}
${INSTALL_DATA} ${WRKDIR}/qw/qwprogs.dat ${DATADIR}/qw
${INSTALL_DATA} ${WRKDIR}/qw/spprogs.dat ${DATADIR}/qw
- ${INSTALL_DATA} ${WRKDIR}/pak0.pak ${DATADIR}/${PORTNAME}
+ ${INSTALL_DATA} ${DISTDIR}/pak0.pak ${DATADIR}/${PORTNAME}
+.if defined(WITH_SHAREWARE_DATA)
+ @${MKDIR} ${DATADIR}/id1
+ ${INSTALL_DATA} ${DISTDIR}/q1-shareware-pak0.pak \
+ ${DATADIR}/id1/pak0.pak
+.endif
.if !defined(NOPORTDOCS)
@${MKDIR} ${DOCSDIR}
. for txt in benchmark config_manager crosshairs linux logitech mp3 \
@@ -120,6 +143,6 @@ do-install:
.endif
post-install:
- @${SED} -e 's#$${PREFIX}#${PREFIX}#g' ${PKGMESSAGE}
+ @${SED} -e 's|$${PREFIX}|${PREFIX}|g' ${PKGMESSAGE}
.include <bsd.port.mk>
diff --git a/games/fuhquake/distinfo b/games/fuhquake/distinfo
index c312d9c5eb48..46e7592cd5f9 100644
--- a/games/fuhquake/distinfo
+++ b/games/fuhquake/distinfo
@@ -1,3 +1,4 @@
MD5 (fuhquake-source-v0.28.zip) = 7e77a97a1e1524b289ffa6978ce5377e
MD5 (fuhquake-linux-v0.28.zip) = 72e99f8df1baab11e0492b7cee93fdd3
-MD5 (pak0.pak.zip) = eaedb54f2f0fabb1b621afb831185748
+MD5 (pak0.pak) = 2fa37c49cb1d3902d97cb82a1c96115a
+MD5 (q1-shareware-pak0.pak) = 5906e5998fc3d896ddaf5e6a62e03abb
diff --git a/games/fuhquake/files/patch-common.c b/games/fuhquake/files/patch-common.c
new file mode 100644
index 000000000000..34f60d192107
--- /dev/null
+++ b/games/fuhquake/files/patch-common.c
@@ -0,0 +1,11 @@
+--- common.c.orig Thu Aug 28 18:15:40 2003
++++ common.c Thu Aug 28 18:16:04 2003
+@@ -1512,7 +1512,7 @@
+ if ((i = COM_CheckParm ("-basedir")) && i < com_argc - 1)
+ Q_strncpyz (com_basedir, com_argv[i + 1], sizeof(com_basedir));
+ else
+- strcpy (com_basedir, ".");
++ strcpy (com_basedir, "%%%%BASEDIR%%%%");
+
+ for (i = 0; i < strlen(com_basedir); i++)
+ if (com_basedir[i] == '\\')
diff --git a/games/fuhquake/files/patch-mp3_player.c b/games/fuhquake/files/patch-mp3_player.c
index 986c0a1699f2..30218a638970 100644
--- a/games/fuhquake/files/patch-mp3_player.c
+++ b/games/fuhquake/files/patch-mp3_player.c
@@ -1,13 +1,26 @@
---- mp3_player.c.orig Wed May 21 17:18:36 2003
-+++ mp3_player.c Wed May 21 17:21:23 2003
-@@ -48,6 +48,7 @@
+--- mp3_player.c.orig Mon Sep 1 18:18:40 2003
++++ mp3_player.c Mon Sep 1 18:20:09 2003
+@@ -48,9 +48,10 @@
#ifdef __XMMS__
+#include <sys/signal.h>
#include <sys/wait.h>
- cvar_t mp3_dir = {"mp3_xmms_dir", "/usr/local/bin"};
+-cvar_t mp3_dir = {"mp3_xmms_dir", "/usr/local/bin"};
++cvar_t mp3_dir = {"mp3_xmms_dir", "/usr/X11R6/bin"};
+ cvar_t mp3_xmms_session = {"mp3_xmms_session", "0"};
+
+ #endif
+@@ -288,7 +289,7 @@
+ #define XMMS_COMMAND(Name, Param) \
+ void MP3_##Name##_f(void) { \
+ if (MP3_IsPlayerRunning()) { \
+- xmms_remote_##Param##(XMMS_SESSION); \
++ xmms_remote_##Param(XMMS_SESSION); \
+ } else { \
+ Com_Printf("%s\n", mp3_notrunning_msg); \
+ } \
@@ -769,7 +770,7 @@
#endif
diff --git a/games/fuhquake/files/patch-vid_glx.c b/games/fuhquake/files/patch-vid_glx.c
index 6c8185c62e47..ec2c6c6964de 100644
--- a/games/fuhquake/files/patch-vid_glx.c
+++ b/games/fuhquake/files/patch-vid_glx.c
@@ -1,5 +1,5 @@
---- vid_glx.c.orig Wed May 21 17:18:37 2003
-+++ vid_glx.c Mon Jun 2 20:04:34 2003
+--- vid_glx.c.orig Thu Aug 28 18:08:22 2003
++++ vid_glx.c Thu Aug 28 18:08:03 2003
@@ -20,7 +20,9 @@
#include <termios.h>
#include <sys/ioctl.h>
@@ -10,6 +10,17 @@
#include <stdarg.h>
#include <stdio.h>
#include <signal.h>
+@@ -284,8 +286,8 @@
+ case MotionNotify:
+ #ifdef WITH_DGA
+ if (dgamouse && _windowed_mouse.value) {
+- mouse_x = event.xmotion.x_root;
+- mouse_y = event.xmotion.y_root;
++ mouse_x += event.xmotion.x_root;
++ mouse_y += event.xmotion.y_root;
+ } else
+ #endif
+ {
@@ -601,8 +603,9 @@
#ifdef WITH_VMODE
// fullscreen
diff --git a/games/fuhquake/files/patch-vid_x11.c b/games/fuhquake/files/patch-vid_x11.c
new file mode 100644
index 000000000000..893e30d50a5a
--- /dev/null
+++ b/games/fuhquake/files/patch-vid_x11.c
@@ -0,0 +1,131 @@
+--- vid_x11.c.orig Mon Aug 25 21:01:40 2003
++++ vid_x11.c Mon Aug 25 21:10:09 2003
+@@ -21,7 +21,8 @@
+
+ #define _BSD
+
+-typedef unsigned short PIXEL;
++typedef unsigned short PIXEL16;
++typedef unsigned PIXEL24;
+
+ #include <ctype.h>
+ #include <sys/time.h>
+@@ -111,7 +112,8 @@
+ void (*vid_menukeyfn)(int key);
+ void VID_MenuKey (int key);
+
+-static PIXEL st2d_8to16table[256];
++static PIXEL16 st2d_8to16table[256];
++static PIXEL24 st2d_8to24table[256];
+ static int shiftmask_fl=0;
+ static long r_shift,g_shift,b_shift;
+ static unsigned long r_mask,g_mask,b_mask;
+@@ -132,8 +134,42 @@
+ shiftmask_fl = 1;
+ }
+
+-PIXEL xlib_rgb(int r,int g,int b) {
+- PIXEL p;
++PIXEL16 xlib_rgb16(int r,int g,int b) {
++ PIXEL16 p;
++
++ if (shiftmask_fl == 0)
++ shiftmask_init();
++ p = 0;
++
++ if (r_shift > 0) {
++ p = (r << (r_shift)) &r_mask;
++ } else if(r_shift<0) {
++ p = (r >> (-r_shift)) &r_mask;
++ } else {
++ p |= (r & r_mask);
++ }
++
++ if(g_shift>0) {
++ p |= (g << (g_shift)) &g_mask;
++ } else if(g_shift<0) {
++ p |= (g >> (-g_shift)) &g_mask;
++ } else {
++ p|=(g & g_mask);
++ }
++
++ if(b_shift > 0) {
++ p |= (b << (b_shift)) &b_mask;
++ } else if (b_shift < 0) {
++ p |= (b >> (-b_shift)) &b_mask;
++ } else {
++ p|=(b & b_mask);
++ }
++
++ return p;
++}
++
++PIXEL24 xlib_rgb24(int r,int g,int b) {
++ PIXEL24 p;
+
+ if (shiftmask_fl == 0)
+ shiftmask_init();
+@@ -169,20 +205,37 @@
+ void st2_fixup( XImage *framebuf, int x, int y, int width, int height) {
+ int xi,yi;
+ unsigned char *src;
+- PIXEL *dest;
++ PIXEL16 *dest;
+
+ if(x < 0 || y < 0)
+ return;
+
+ for (yi = y; yi < y + height; yi++) {
+ src = &framebuf->data [yi * framebuf->bytes_per_line];
+- dest = (PIXEL*)src;
++ dest = (PIXEL16 *)src;
+ for(xi = (x + width - 1); xi >= x; xi--) {
+ dest[xi] = st2d_8to16table[src[xi]];
+ }
+ }
+ }
+
++void st3_fixup( XImage *framebuf, int x, int y, int width, int height) {
++ int xi,yi;
++ unsigned char *src;
++ PIXEL24 *dest;
++
++ if(x < 0 || y < 0)
++ return;
++
++ for (yi = y; yi < y + height; yi++) {
++ src = &framebuf->data [yi * framebuf->bytes_per_line];
++ dest = (PIXEL24 *)src;
++ for(xi = (x + width - 1); xi >= x; xi--) {
++ dest[xi] = st2d_8to24table[src[xi]];
++ }
++ }
++}
++
+ // ========================================================================
+ // Tragic death handler
+ // ========================================================================
+@@ -564,8 +617,10 @@
+ int i;
+ XColor colors[256];
+
+- for (i = 0; i < 256; i++)
+- st2d_8to16table[i]= xlib_rgb(palette[i * 3], palette[i * 3 + 1], palette[i * 3 + 2]);
++ for (i = 0; i < 256; i++) {
++ st2d_8to24table[i]= xlib_rgb24(palette[i * 3], palette[i * 3 + 1], palette[i * 3 + 2]);
++ st2d_8to16table[i]= xlib_rgb16(palette[i * 3], palette[i * 3 + 1], palette[i * 3 + 2]);
++ }
+
+ if (x_visinfo->class == PseudoColor && x_visinfo->depth == 8) {
+ if (palette != current_palette)
+@@ -821,7 +876,9 @@
+
+ if (doShm) {
+ while (rects){
+- if (x_visinfo->depth != 8)
++ if (x_visinfo->depth == 24)
++ st3_fixup( x_framebuffer[current_framebuffer], rects->x, rects->y, rects->width, rects->height);
++ else if (x_visinfo->depth == 16)
+ st2_fixup( x_framebuffer[current_framebuffer], rects->x, rects->y, rects->width, rects->height);
+ if (!XShmPutImage(x_disp, x_win, x_gc,
+ x_framebuffer[current_framebuffer], rects->x, rects->y, rects->x, rects->y, rects->width, rects->height, True))
diff --git a/games/fuhquake/pkg-message b/games/fuhquake/pkg-message
index 48041f03ad08..aa4460a8574c 100644
--- a/games/fuhquake/pkg-message
+++ b/games/fuhquake/pkg-message
@@ -1,6 +1,15 @@
================================================
Install models, skins, maps, and mods in
- ${PREFIX}/share/fuhquake/
+ ${DATADIR}/ directory.
+
+ You must also have registered version of
+ Quake per to be able to legally copy the
+ PAK files (pak*.pak) from id1/ directory
+ to ${DATADIR}/id1/ from CDROM or Windows
+ installation. In case it is not an opt-
+ ion, you can rebuild the port with "make
+ -DWITH_SHAREWARE_DATA", and thus install
+ demo version (shareware) data files.
================================================
diff --git a/games/fuhquake/pkg-plist b/games/fuhquake/pkg-plist
index 793477bfff46..ba48e6db5c5b 100644
--- a/games/fuhquake/pkg-plist
+++ b/games/fuhquake/pkg-plist
@@ -1,21 +1,23 @@
%%X11%%bin/fuhquake-x11
%%GLX%%bin/fuhquake-glx
%%SVGA%%bin/fuhquake-svga
-%%PORTDOCS%%share/doc/fuhquake/benchmark.txt
-%%PORTDOCS%%share/doc/fuhquake/config_manager.txt
-%%PORTDOCS%%share/doc/fuhquake/crosshairs.txt
-%%PORTDOCS%%share/doc/fuhquake/fuhquake.txt
-%%PORTDOCS%%share/doc/fuhquake/linux.txt
-%%PORTDOCS%%share/doc/fuhquake/logitech.txt
-%%PORTDOCS%%share/doc/fuhquake/mp3.txt
-%%PORTDOCS%%share/doc/fuhquake/particles.txt
-%%PORTDOCS%%share/doc/fuhquake/pointing.txt
-%%PORTDOCS%%share/doc/fuhquake/rulesets.txt
-%%PORTDOCS%%share/doc/fuhquake/track.txt
-%%PORTDOCS%%@dirrm share/doc/fuhquake
+%%PORTDOCS%%%%DOCSDIR%%/benchmark.txt
+%%PORTDOCS%%%%DOCSDIR%%/config_manager.txt
+%%PORTDOCS%%%%DOCSDIR%%/crosshairs.txt
+%%PORTDOCS%%%%DOCSDIR%%/fuhquake.txt
+%%PORTDOCS%%%%DOCSDIR%%/linux.txt
+%%PORTDOCS%%%%DOCSDIR%%/logitech.txt
+%%PORTDOCS%%%%DOCSDIR%%/mp3.txt
+%%PORTDOCS%%%%DOCSDIR%%/particles.txt
+%%PORTDOCS%%%%DOCSDIR%%/pointing.txt
+%%PORTDOCS%%%%DOCSDIR%%/rulesets.txt
+%%PORTDOCS%%%%DOCSDIR%%/track.txt
+%%PORTDOCS%%@dirrm %%DOCSDIR%%
share/fuhquake/fuhquake/pak0.pak
+%%SHAREWARE%%share/fuhquake/id1/pak0.pak
share/fuhquake/qw/qwprogs.dat
share/fuhquake/qw/spprogs.dat
@dirrm share/fuhquake/qw
+%%SHAREWARE%%@dirrm share/fuhquake/id1
@dirrm share/fuhquake/fuhquake
@dirrm share/fuhquake