summaryrefslogtreecommitdiff
path: root/games/xdoom
diff options
context:
space:
mode:
authorgarbled <garbled>1998-08-28 12:53:03 +0000
committergarbled <garbled>1998-08-28 12:53:03 +0000
commitfb41fc720d17bb3a1e488a5301cd8ec034cbd348 (patch)
tree296ffa408a97c46ee412fcf1b1b81a5dd876e8f6 /games/xdoom
parentc169bb99944880a05db12bd903309a10a0ff373e (diff)
downloadpkgsrc-fb41fc720d17bb3a1e488a5301cd8ec034cbd348.tar.gz
xdoom-1.10: a 3D shoot-em-up for 8-bit X11 displays.
Many thanks to Matthias Drochner for giving me his framework on the pkg as a starting point.
Diffstat (limited to 'games/xdoom')
-rw-r--r--games/xdoom/Makefile36
-rw-r--r--games/xdoom/files/md54
-rw-r--r--games/xdoom/patches/patch-aa17
-rw-r--r--games/xdoom/patches/patch-ab461
-rw-r--r--games/xdoom/patches/patch-ac12
-rw-r--r--games/xdoom/patches/patch-ad12
-rw-r--r--games/xdoom/pkg/COMMENT1
-rw-r--r--games/xdoom/pkg/DESCR10
-rw-r--r--games/xdoom/pkg/PLIST4
9 files changed, 557 insertions, 0 deletions
diff --git a/games/xdoom/Makefile b/games/xdoom/Makefile
new file mode 100644
index 00000000000..0a562748340
--- /dev/null
+++ b/games/xdoom/Makefile
@@ -0,0 +1,36 @@
+# $NetBSD: Makefile,v 1.1 1998/08/28 12:53:03 garbled Exp $
+
+DISTNAME= linuxdoom-1.10
+PKGNAME= xdoom-1.10
+CATEGORIES= games x11
+MASTER_SITES= ftp://ftp.idsoftware.com/idstuff/source/
+MASTER_SITES+= ftp://ftp.idsoftware.com/idstuff/doom/
+DISTFILES= doomsrc.zip doom-1.8.wad.gz
+
+MAINTAINER= root@garbled.net
+HOMEPAGE= http://www.idsoftware.com/archives/doomarc.html
+
+BUILD_DEPENDS= unzip:../../archivers/unzip
+
+EXTRACT_CMD= unzip
+EXTRACT_BEFORE_ARGS= -qo
+EXTRACT_ONLY= doomsrc.zip
+USE_X11= yes
+USE_GMAKE= yes
+
+post-extract:
+ (cd ${WRKDIR}; tar xzf linuxdoom-1.10.src.tgz)
+
+post-patch:
+ @${MV} ${WRKSRC}/i_sound.c foo
+ @${SED} -e 's@XXXPREFIXXXX@${PREFIX}@' <foo> ${WRKSRC}/i_sound.c
+ @${MV} ${WRKSRC}/d_main.c foo
+ @${SED} -e 's@XXXPREFIXXXX@${PREFIX}@' <foo> ${WRKSRC}/d_main.c
+ @${RM} -f foo
+
+do-install:
+ ${INSTALL_PROGRAM} ${WRKSRC}/linux/linuxxdoom ${PREFIX}/bin/xdoom
+ ${MKDIR} ${PREFIX}/share/doom
+ ${GUNZIP_CMD} -c ${DISTDIR}/doom-1.8.wad.gz > ${PREFIX}/share/doom/doom1.wad
+
+.include "../../mk/bsd.pkg.mk"
diff --git a/games/xdoom/files/md5 b/games/xdoom/files/md5
new file mode 100644
index 00000000000..bfe4328e32a
--- /dev/null
+++ b/games/xdoom/files/md5
@@ -0,0 +1,4 @@
+$NetBSD: md5,v 1.1 1998/08/28 12:53:04 garbled Exp $
+
+MD5 (doomsrc.zip) = 80b3fe460c59ca7bb809c56eec876515
+MD5 (doom-1.8.wad.gz) = 1dec41ad1850bd3574ef65dd21b8f5af
diff --git a/games/xdoom/patches/patch-aa b/games/xdoom/patches/patch-aa
new file mode 100644
index 00000000000..498b4e64ce6
--- /dev/null
+++ b/games/xdoom/patches/patch-aa
@@ -0,0 +1,17 @@
+$NetBSD: patch-aa,v 1.1 1998/08/28 12:53:04 garbled Exp $
+--- Makefile.orig Mon Dec 22 12:55:36 1997
++++ Makefile Fri Aug 28 05:16:43 1998
+@@ -6,9 +6,10 @@
+ #
+ CC= gcc # gcc or g++
+
+-CFLAGS=-g -Wall -DNORMALUNIX -DLINUX # -DUSEASM
+-LDFLAGS=-L/usr/X11R6/lib
+-LIBS=-lXext -lX11 -lnsl -lm
++CFLAGS=-g -Wall -DNORMALUNIX # -DUSEASM
++CFLAGS+= -I$(X11BASE)/include
++LDFLAGS=-Wl,-R$(X11BASE)/lib -L$(X11BASE)/lib
++LIBS=-lXext -lX11 -lm
+
+ # subdirectory for objects
+ O=linux
diff --git a/games/xdoom/patches/patch-ab b/games/xdoom/patches/patch-ab
new file mode 100644
index 00000000000..f08e7fb7708
--- /dev/null
+++ b/games/xdoom/patches/patch-ab
@@ -0,0 +1,461 @@
+$NetBSD: patch-ab,v 1.1 1998/08/28 12:53:05 garbled Exp $
+*** 1.1.1.1 1998/07/03 16:32:29
+--- d_net.h 1998/07/03 16:33:37
+***************
+*** 80,84 ****
+ {
+ // Supposed to be DOOMCOM_ID?
+! long id;
+
+ // DOOM executes an int to execute commands.
+--- 80,84 ----
+ {
+ // Supposed to be DOOMCOM_ID?
+! int id;
+
+ // DOOM executes an int to execute commands.
+Index: doomtype.h
+===================================================================
+RCS file: /ca1/div/cvsroot/extern/doom/doomtype.h,v
+retrieving revision 1.1.1.1
+diff -c -2 -r1.1.1.1 doomtype.h
+*** 1.1.1.1 1998/07/03 16:32:16
+--- doomtype.h 1998/07/15 21:12:05
+***************
+*** 47,51 ****
+ // Max pos 32-bit int.
+ #define MAXINT ((int)0x7fffffff)
+- #define MAXLONG ((long)0x7fffffff)
+ #define MINCHAR ((char)0x80)
+ #define MINSHORT ((short)0x8000)
+--- 47,50 ----
+***************
+*** 53,57 ****
+ // Max negative 32-bit integer.
+ #define MININT ((int)0x80000000)
+- #define MINLONG ((long)0x80000000)
+ #endif
+
+--- 52,55 ----
+Index: info.h
+===================================================================
+RCS file: /ca1/div/cvsroot/extern/doom/info.h,v
+retrieving revision 1.1.1.1
+diff -c -2 -r1.1.1.1 info.h
+*** 1.1.1.1 1998/07/03 16:32:20
+--- info.h 1998/07/03 16:33:41
+***************
+*** 1148,1157 ****
+ {
+ spritenum_t sprite;
+! long frame;
+! long tics;
+ // void (*action) ();
+ actionf_t action;
+ statenum_t nextstate;
+! long misc1, misc2;
+ } state_t;
+
+--- 1148,1157 ----
+ {
+ spritenum_t sprite;
+! int frame;
+! int tics;
+ // void (*action) ();
+ actionf_t action;
+ statenum_t nextstate;
+! int misc1, misc2;
+ } state_t;
+
+Index: m_bbox.h
+===================================================================
+RCS file: /ca1/div/cvsroot/extern/doom/m_bbox.h,v
+retrieving revision 1.1.1.1
+diff -c -2 -r1.1.1.1 m_bbox.h
+*** 1.1.1.1 1998/07/03 16:32:20
+--- m_bbox.h 1998/07/03 16:33:42
+***************
+*** 24,28 ****
+ #define __M_BBOX__
+
+! #include <values.h>
+
+ #include "m_fixed.h"
+--- 24,28 ----
+ #define __M_BBOX__
+
+! #include "doomtype.h"
+
+ #include "m_fixed.h"
+Index: m_swap.h
+===================================================================
+RCS file: /ca1/div/cvsroot/extern/doom/m_swap.h,v
+retrieving revision 1.1.1.1
+diff -c -2 -r1.1.1.1 m_swap.h
+*** 1.1.1.1 1998/07/03 16:32:29
+--- m_swap.h 1998/07/15 21:08:17
+***************
+*** 34,40 ****
+ #ifdef __BIG_ENDIAN__
+ short SwapSHORT(short);
+! long SwapLONG(long);
+ #define SHORT(x) ((short)SwapSHORT((unsigned short) (x)))
+! #define LONG(x) ((long)SwapLONG((unsigned long) (x)))
+ #else
+ #define SHORT(x) (x)
+--- 34,40 ----
+ #ifdef __BIG_ENDIAN__
+ short SwapSHORT(short);
+! int SwapLONG(int);
+ #define SHORT(x) ((short)SwapSHORT((unsigned short) (x)))
+! #define LONG(x) ((int)SwapLONG((unsigned int) (x)))
+ #else
+ #define SHORT(x) (x)
+Index: i_net.c
+===================================================================
+RCS file: /ca1/div/cvsroot/extern/doom/i_net.c,v
+retrieving revision 1.1.1.1
+diff -c -2 -r1.1.1.1 i_net.c
+*** 1.1.1.1 1998/07/03 16:32:18
+--- i_net.c 1998/07/15 21:11:38
+***************
+*** 51,69 ****
+
+
+-
+- // For some odd reason...
+- #define ntohl(x) \
+- ((unsigned long int)((((unsigned long int)(x) & 0x000000ffU) << 24) | \
+- (((unsigned long int)(x) & 0x0000ff00U) << 8) | \
+- (((unsigned long int)(x) & 0x00ff0000U) >> 8) | \
+- (((unsigned long int)(x) & 0xff000000U) >> 24)))
+-
+- #define ntohs(x) \
+- ((unsigned short int)((((unsigned short int)(x) & 0x00ff) << 8) | \
+- (((unsigned short int)(x) & 0xff00) >> 8))) \
+-
+- #define htonl(x) ntohl(x)
+- #define htons(x) ntohs(x)
+-
+ void NetSend (void);
+ boolean NetListen (void);
+--- 51,54 ----
+***************
+*** 74,78 ****
+ //
+
+! int DOOMPORT = (IPPORT_USERRESERVED +0x1d );
+
+ int sendsocket;
+--- 59,63 ----
+ //
+
+! int DOOMPORT = (IPPORT_RESERVED +0x1d );
+
+ int sendsocket;
+Index: i_sound.c
+===================================================================
+RCS file: /ca1/div/cvsroot/extern/doom/i_sound.c,v
+retrieving revision 1.1.1.1
+diff -c -2 -r1.1.1.1 i_sound.c
+*** 1.1.1.1 1998/07/03 16:32:18
+--- i_sound.c 1998/07/15 20:05:49
+***************
+*** 42,47 ****
+--- 42,49 ----
+ #include <sys/ioctl.h>
+
++ #ifdef LINUX
+ // Linux voxware output.
+ #include <linux/soundcard.h>
++ #endif
+
+ // Timer stuff. Experimental.
+Index: i_video.c
+===================================================================
+RCS file: /ca1/div/cvsroot/extern/doom/i_video.c,v
+retrieving revision 1.1.1.1
+diff -c -2 -r1.1.1.1 i_video.c
+*** 1.1.1.1 1998/07/03 16:32:18
+--- i_video.c 1998/07/15 20:40:59
+***************
+*** 37,41 ****
+ // Had to dig up XShm.c for this one.
+ // It is in the libXext, but not in the XFree86 headers.
+! #ifdef LINUX
+ int XShmGetEventBase( Display* dpy ); // problems with g++?
+ #endif
+--- 37,41 ----
+ // Had to dig up XShm.c for this one.
+ // It is in the libXext, but not in the XFree86 headers.
+! #if defined(LINUX) || defined (__NetBSD__)
+ int XShmGetEventBase( Display* dpy ); // problems with g++?
+ #endif
+***************
+*** 47,51 ****
+
+ #include <netinet/in.h>
+! #include <errnos.h>
+ #include <signal.h>
+
+--- 47,51 ----
+
+ #include <netinet/in.h>
+! #include <errno.h>
+ #include <signal.h>
+
+Index: m_menu.c
+===================================================================
+RCS file: /ca1/div/cvsroot/extern/doom/m_menu.c,v
+retrieving revision 1.1.1.1
+diff -c -2 -r1.1.1.1 m_menu.c
+*** 1.1.1.1 1998/07/03 16:32:21
+--- m_menu.c 1998/07/03 16:33:58
+***************
+*** 530,534 ****
+ continue;
+ }
+! count = read (handle, &savegamestrings[i], SAVESTRINGSIZE);
+ close (handle);
+ LoadMenu[i].status = 1;
+--- 530,534 ----
+ continue;
+ }
+! count = read (handle, savegamestrings[i], SAVESTRINGSIZE);
+ close (handle);
+ LoadMenu[i].status = 1;
+Index: m_misc.c
+===================================================================
+RCS file: /ca1/div/cvsroot/extern/doom/m_misc.c,v
+retrieving revision 1.1.1.1
+diff -c -2 -r1.1.1.1 m_misc.c
+*** 1.1.1.1 1998/07/03 16:32:21
+--- m_misc.c 1998/07/03 16:33:58
+***************
+*** 227,231 ****
+ char* name;
+ int* location;
+! int defaultvalue;
+ int scantranslate; // PC scan code hack
+ int untranslated; // lousy hack
+--- 227,231 ----
+ char* name;
+ int* location;
+! long defaultvalue;
+ int scantranslate; // PC scan code hack
+ int untranslated; // lousy hack
+***************
+*** 255,260 ****
+ // UNIX hack, to be removed.
+ #ifdef SNDSERV
+! {"sndserver", (int *) &sndserver_filename, (int) "sndserver"},
+! {"mb_used", &mb_used, 2},
+ #endif
+
+--- 255,260 ----
+ // UNIX hack, to be removed.
+ #ifdef SNDSERV
+! {"sndserver", (int *) &sndserver_filename, (long) "sndserver"},
+! {"mb_used", &mb_used, 12},
+ #endif
+
+***************
+*** 286,299 ****
+ {"usegamma",&usegamma, 0},
+
+! {"chatmacro0", (int *) &chat_macros[0], (int) HUSTR_CHATMACRO0 },
+! {"chatmacro1", (int *) &chat_macros[1], (int) HUSTR_CHATMACRO1 },
+! {"chatmacro2", (int *) &chat_macros[2], (int) HUSTR_CHATMACRO2 },
+! {"chatmacro3", (int *) &chat_macros[3], (int) HUSTR_CHATMACRO3 },
+! {"chatmacro4", (int *) &chat_macros[4], (int) HUSTR_CHATMACRO4 },
+! {"chatmacro5", (int *) &chat_macros[5], (int) HUSTR_CHATMACRO5 },
+! {"chatmacro6", (int *) &chat_macros[6], (int) HUSTR_CHATMACRO6 },
+! {"chatmacro7", (int *) &chat_macros[7], (int) HUSTR_CHATMACRO7 },
+! {"chatmacro8", (int *) &chat_macros[8], (int) HUSTR_CHATMACRO8 },
+! {"chatmacro9", (int *) &chat_macros[9], (int) HUSTR_CHATMACRO9 }
+
+ };
+--- 286,299 ----
+ {"usegamma",&usegamma, 0},
+
+! {"chatmacro0", (int *) &chat_macros[0], (long) HUSTR_CHATMACRO0 },
+! {"chatmacro1", (int *) &chat_macros[1], (long) HUSTR_CHATMACRO1 },
+! {"chatmacro2", (int *) &chat_macros[2], (long) HUSTR_CHATMACRO2 },
+! {"chatmacro3", (int *) &chat_macros[3], (long) HUSTR_CHATMACRO3 },
+! {"chatmacro4", (int *) &chat_macros[4], (long) HUSTR_CHATMACRO4 },
+! {"chatmacro5", (int *) &chat_macros[5], (long) HUSTR_CHATMACRO5 },
+! {"chatmacro6", (int *) &chat_macros[6], (long) HUSTR_CHATMACRO6 },
+! {"chatmacro7", (int *) &chat_macros[7], (long) HUSTR_CHATMACRO7 },
+! {"chatmacro8", (int *) &chat_macros[8], (long) HUSTR_CHATMACRO8 },
+! {"chatmacro9", (int *) &chat_macros[9], (long) HUSTR_CHATMACRO9 }
+
+ };
+Index: m_swap.c
+===================================================================
+RCS file: /ca1/div/cvsroot/extern/doom/m_swap.c,v
+retrieving revision 1.1.1.1
+diff -c -2 -r1.1.1.1 m_swap.c
+*** 1.1.1.1 1998/07/03 16:32:31
+--- m_swap.c 1998/07/15 20:56:48
+***************
+*** 43,47 ****
+
+ // Swapping 32bit.
+! unsigned long SwapLONG( unsigned long x)
+ {
+ return
+--- 43,47 ----
+
+ // Swapping 32bit.
+! unsigned int SwapLONG( unsigned int x)
+ {
+ return
+Index: p_setup.c
+===================================================================
+RCS file: /ca1/div/cvsroot/extern/doom/p_setup.c,v
+retrieving revision 1.1.1.1
+diff -c -2 -r1.1.1.1 p_setup.c
+*** 1.1.1.1 1998/07/03 16:32:23
+--- p_setup.c 1998/07/03 16:34:02
+***************
+*** 534,538 ****
+
+ // build line tables for each sector
+! linebuffer = Z_Malloc (total*4, PU_LEVEL, 0);
+ sector = sectors;
+ for (i=0 ; i<numsectors ; i++, sector++)
+--- 534,538 ----
+
+ // build line tables for each sector
+! linebuffer = Z_Malloc (total*sizeof(line_t*), PU_LEVEL, 0);
+ sector = sectors;
+ for (i=0 ; i<numsectors ; i++, sector++)
+Index: r_data.c
+===================================================================
+RCS file: /ca1/div/cvsroot/extern/doom/r_data.c,v
+retrieving revision 1.1.1.1
+diff -c -2 -r1.1.1.1 r_data.c
+*** 1.1.1.1 1998/07/03 16:32:24
+--- r_data.c 1998/07/15 20:54:12
+***************
+*** 42,47 ****
+ #include "r_sky.h"
+
+! #ifdef LINUX
+ #include <alloca.h>
+ #endif
+
+--- 42,49 ----
+ #include "r_sky.h"
+
+! #if 0
+ #include <alloca.h>
++ #else
++ #include <stdlib.h>
+ #endif
+
+***************
+*** 479,490 ****
+ }
+ numtextures = numtextures1 + numtextures2;
+!
+! textures = Z_Malloc (numtextures*4, PU_STATIC, 0);
+! texturecolumnlump = Z_Malloc (numtextures*4, PU_STATIC, 0);
+! texturecolumnofs = Z_Malloc (numtextures*4, PU_STATIC, 0);
+! texturecomposite = Z_Malloc (numtextures*4, PU_STATIC, 0);
+! texturecompositesize = Z_Malloc (numtextures*4, PU_STATIC, 0);
+! texturewidthmask = Z_Malloc (numtextures*4, PU_STATIC, 0);
+! textureheight = Z_Malloc (numtextures*4, PU_STATIC, 0);
+
+ totalwidth = 0;
+--- 481,492 ----
+ }
+ numtextures = numtextures1 + numtextures2;
+! textures = Z_Malloc (numtextures*sizeof(texture_t*), PU_STATIC, 0);
+! texturecolumnlump = Z_Malloc (numtextures*sizeof(short*), PU_STATIC, 0);
+! texturecolumnofs = Z_Malloc (numtextures*sizeof(unsigned short*),
+! PU_STATIC, 0);
+! texturecomposite = Z_Malloc (numtextures*sizeof(byte*), PU_STATIC, 0);
+! texturecompositesize = Z_Malloc (numtextures*sizeof(int), PU_STATIC, 0);
+! texturewidthmask = Z_Malloc (numtextures*sizeof(int), PU_STATIC, 0);
+! textureheight = Z_Malloc (numtextures*sizeof(fixed_t), PU_STATIC, 0);
+
+ totalwidth = 0;
+***************
+*** 640,644 ****
+ length = W_LumpLength (lump) + 255;
+ colormaps = Z_Malloc (length, PU_STATIC, 0);
+! colormaps = (byte *)( ((int)colormaps + 255)&~0xff);
+ W_ReadLump (lump,colormaps);
+ }
+--- 642,646 ----
+ length = W_LumpLength (lump) + 255;
+ colormaps = Z_Malloc (length, PU_STATIC, 0);
+! colormaps = (byte *)( ((long)colormaps + 255)&~0xffL);
+ W_ReadLump (lump,colormaps);
+ }
+Index: r_draw.c
+===================================================================
+RCS file: /ca1/div/cvsroot/extern/doom/r_draw.c,v
+retrieving revision 1.1.1.1
+diff -c -2 -r1.1.1.1 r_draw.c
+*** 1.1.1.1 1998/07/03 16:32:24
+--- r_draw.c 1998/07/03 16:34:04
+***************
+*** 462,466 ****
+
+ translationtables = Z_Malloc (256*3+255, PU_STATIC, 0);
+! translationtables = (byte *)(( (int)translationtables + 255 )& ~255);
+
+ // translate just the 16 green colors
+--- 462,466 ----
+
+ translationtables = Z_Malloc (256*3+255, PU_STATIC, 0);
+! translationtables = (byte *)(( (long)translationtables + 255 )& ~255L);
+
+ // translate just the 16 green colors
+Index: w_wad.c
+===================================================================
+RCS file: /ca1/div/cvsroot/extern/doom/w_wad.c,v
+retrieving revision 1.1.1.1
+diff -c -2 -r1.1.1.1 w_wad.c
+*** 1.1.1.1 1998/07/03 16:32:27
+--- w_wad.c 1998/07/15 20:22:25
+***************
+*** 35,39 ****
+--- 35,43 ----
+ #include <fcntl.h>
+ #include <sys/stat.h>
++ #if 0
+ #include <alloca.h>
++ #else
++ #include <stdlib.h>
++ #endif
+ #define O_BINARY 0
+ #endif
+Index: z_zone.c
+===================================================================
+RCS file: /ca1/div/cvsroot/extern/doom/z_zone.c,v
+retrieving revision 1.1.1.1
+diff -c -2 -r1.1.1.1 z_zone.c
+*** 1.1.1.1 1998/07/03 16:32:29
+--- z_zone.c 1998/07/15 20:44:56
+***************
+*** 193,198 ****
+ memblock_t* base;
+
+ size = (size + 3) & ~3;
+!
+ // scan through the block list,
+ // looking for the first free block
+--- 193,202 ----
+ memblock_t* base;
+
++ #ifdef __alpha
++ size = (size + 7) & ~7;
++ #else
+ size = (size + 3) & ~3;
+! #endif
+!
+ // scan through the block list,
+ // looking for the first free block
diff --git a/games/xdoom/patches/patch-ac b/games/xdoom/patches/patch-ac
new file mode 100644
index 00000000000..76d38b8e738
--- /dev/null
+++ b/games/xdoom/patches/patch-ac
@@ -0,0 +1,12 @@
+$NetBSD: patch-ac,v 1.1 1998/08/28 12:53:05 garbled Exp $
+--- d_main.c.orig Fri Aug 28 04:27:47 1998
++++ d_main.c Fri Aug 28 04:28:42 1998
+@@ -577,7 +577,7 @@
+ char *doomwaddir;
+ doomwaddir = getenv("DOOMWADDIR");
+ if (!doomwaddir)
+- doomwaddir = ".";
++ doomwaddir = "XXXPREFIXXXX/share/doom";
+
+ // Commercial.
+ doom2wad = malloc(strlen(doomwaddir)+1+9+1);
diff --git a/games/xdoom/patches/patch-ad b/games/xdoom/patches/patch-ad
new file mode 100644
index 00000000000..588bff70c40
--- /dev/null
+++ b/games/xdoom/patches/patch-ad
@@ -0,0 +1,12 @@
+$NetBSD: patch-ad,v 1.1 1998/08/28 12:53:05 garbled Exp $
+--- i_sound.c.orig Fri Aug 28 04:29:07 1998
++++ i_sound.c Fri Aug 28 04:30:33 1998
+@@ -747,7 +747,7 @@
+ getenv("DOOMWADDIR"),
+ sndserver_filename);
+ else
+- sprintf(buffer, "%s", sndserver_filename);
++ sprintf(buffer, "XXXPREFIXXXX/bin/%s", sndserver_filename);
+
+ // start sound process
+ if ( !access(buffer, X_OK) )
diff --git a/games/xdoom/pkg/COMMENT b/games/xdoom/pkg/COMMENT
new file mode 100644
index 00000000000..134a9a70900
--- /dev/null
+++ b/games/xdoom/pkg/COMMENT
@@ -0,0 +1 @@
+a 3D shoot-em-up for 8-bit X11 displays.
diff --git a/games/xdoom/pkg/DESCR b/games/xdoom/pkg/DESCR
new file mode 100644
index 00000000000..9ddbc38f53c
--- /dev/null
+++ b/games/xdoom/pkg/DESCR
@@ -0,0 +1,10 @@
+DOOM is a lightning-fast virtual reality adventure where you're the
+toughest space trooper ever to suck vacuum. Your mission is to shoot
+your way through a monster-infested holocaust. Living to tell the tale if
+possible.
+
+The gameplay for DOOM is quite simple. This is not a cumbersome
+adventure game, but an action-oriented slugathon. You don't need the
+reflexes of a hyperactive eight-year-old to win, either--using your wits is
+IMPORTANT. To escape DOOM, you need both brains and the killer
+instinct.
diff --git a/games/xdoom/pkg/PLIST b/games/xdoom/pkg/PLIST
new file mode 100644
index 00000000000..118927af836
--- /dev/null
+++ b/games/xdoom/pkg/PLIST
@@ -0,0 +1,4 @@
+@comment $NetBSD: PLIST,v 1.1 1998/08/28 12:53:06 garbled Exp $
+bin/xdoom
+share/doom/doom1.wad
+@dirrm share/doom