ports/56085: games/fuhquake port updated
Alexey Dokuchaev
danfe at regency.nsu.ru
Thu Aug 28 15:40:28 UTC 2003
>Number: 56085
>Category: ports
>Synopsis: games/fuhquake port updated
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: maintainer-update
>Submitter-Id: current-users
>Arrival-Date: Thu Aug 28 08:40:23 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator: Alexey Dokuchaev
>Release: FreeBSD 4.8-STABLE i386
>Organization:
CNIT NSU
>Environment:
System: FreeBSD regency.nsu.ru 4.8-STABLE FreeBSD 4.8-STABLE #0: Fri Aug 8 20:27:14 NOVST 2003 root at regency.nsu.ru:/usr/obj/usr/src/sys/REGENCY i386
>Description:
This update of games/fuhquake does the following (`-' means bug fixed, `+'
means feature/knob added):
+ Allows fuhquake to be run from any directory per kris' suggestion;
+ Adds WITH_SHAREWARE_DATA knob. Coupled with provious `+', this
makes fuhquake playable right after install, yet allows it to be
distributed on CDROM (since shareware data cannot be included,
one must explicitly define this knob);
- Properly utilizes EXTRACT_ONLY in Makefile;
- Removes EXTRACT_BEFORE_ARGS from Makefile since it's no longer
needed (kris made a commit regarding this to bsd.port.mk four
weeks ago);
+ Tells user about WITHOUT_XMMS knob, when XMMS bits are found;
- Fixes palette problems on 24-bit depth with x11-renderer;
- Fixes DGA mouse behavior on higher mouse rates when GLX-rendered.
>How-To-Repeat:
N/A
>Fix:
Two new patch files (patch-common.c and patch-vid_x11.c):
=== start of patch-common.c ===
--- 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] == '\\')
==== end of patch-common.c ====
* * *
=== start of patch-common.c ===
--- 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))
==== end of patch-common.c ====
* * *
And this is the main diff:
%%%
diff -ur fuhquake.orig/Makefile fuhquake/Makefile
--- fuhquake.orig/Makefile Thu Aug 28 22:33:38 2003
+++ fuhquake/Makefile Thu Aug 28 21:59:10 2003
@@ -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 @@
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 at regency.nsu.ru
COMMENT= An excellent QuakeWorld client
@@ -72,6 +82,12 @@
.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 @@
.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 @@
.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 @@
.endif
post-install:
- @${SED} -e 's#$${PREFIX}#${PREFIX}#g' ${PKGMESSAGE}
+ @${SED} -e 's|$${PREFIX}|${PREFIX}|g' ${PKGMESSAGE}
.include <bsd.port.mk>
diff -ur fuhquake.orig/distinfo fuhquake/distinfo
--- fuhquake.orig/distinfo Thu Aug 28 22:33:38 2003
+++ fuhquake/distinfo Thu Aug 28 22:29:42 2003
@@ -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 -ur fuhquake.orig/files/patch-vid_glx.c fuhquake/files/patch-vid_glx.c
--- fuhquake.orig/files/patch-vid_glx.c Thu Aug 28 22:33:38 2003
+++ fuhquake/files/patch-vid_glx.c Thu Aug 28 18:09:00 2003
@@ -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 -ur fuhquake.orig/pkg-message fuhquake/pkg-message
--- fuhquake.orig/pkg-message Thu Aug 28 22:33:38 2003
+++ fuhquake/pkg-message Mon Aug 25 16:16:42 2003
@@ -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 -ur fuhquake.orig/pkg-plist fuhquake/pkg-plist
--- fuhquake.orig/pkg-plist Thu Aug 28 22:33:38 2003
+++ fuhquake/pkg-plist Thu Aug 28 21:41:29 2003
@@ -14,8 +14,10 @@
%%PORTDOCS%%share/doc/fuhquake/track.txt
%%PORTDOCS%%@dirrm share/doc/fuhquake
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
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list