Import of Andrew Plotkin's C-translation of Dungeon 3.2B, using his

"glk" API, and including the gdt (game debugger tool) from the Fortran
version.
This commit is contained in:
pgoyette 2009-11-28 20:25:40 +00:00
parent 7e47729bdd
commit fe8152e66b
6 changed files with 123 additions and 0 deletions

11
games/dungeon/DESCR Normal file
View file

@ -0,0 +1,11 @@
Dungeon is a development prototype of the game ZORK(tm), which is
available commercially from Infocom, Inc, on most personal computers.
Copyright on the Dungeon sources is retained by Infocom, and commercial
use is strictly prohibited. ZORK(tm) is a trademark of Infocom, Inc.
This version is translated from the original dungeon-3.2b Fortran sources
to C by Andrew Plotkin <erkyrath@eblong.com>, and modified to use his
Glk API. (The dungeon debugger code was translated from Fortran to C by
Paul Goyette <pgoyette@whooppee.com> and included in this package as a
patch file.) The Fortran sources were themselves were translated from the
original MDL. Version 3.2B is the latest known version.

53
games/dungeon/Makefile Normal file
View file

@ -0,0 +1,53 @@
# $NetBSD: Makefile,v 1.1 2009/11/28 20:25:40 pgoyette Exp $
#
DISTNAME= dungeon-3.2b
DISTFILES= dungeon-gdt-glk.tar.gz \
glkterm-080.tar.gz
CATEGORIES= games
MASTER_SITES= http://eblong.com/zarf/glk/
MAINTAINER= pkgsrc-users@NetBSD.org
HOMEPAGE= http://eblong.com/zarf/glk/
COMMENT= Classic game of Dungeon
# There really isn't any license in any of the source code or in the
# accompanying documentation, but the sources of many versions have
# been freely made available for many years with the assumption that
# the "No commercial use" comment following the copyright statement
# implies a license to use in non-commercial applications. We'll adopt
# that implication here.
LICENSE= dungeon-license
RESTRICTED= No license to redistribute
NO_BIN_ON_CDROM= ${RESTRICTED}
NO_BIN_ON_FTP= ${RESTRICTED}
NO_SRC_ON_CDROM= ${RESTRICTED}
NO_SRC_ON_FTP= ${RESTRICTED}
WRKSRC= ${WRKDIR}/dungeon-gdt
DATADIR= ${PREFIX}/share/dungeon
MAKE_FLAGS+= DATADIR=${DATADIR}
PKG_OPTIONS_VAR= PKG_OPTIONS.dungeon
PKG_SUPPORTED_OPTIONS= dungeon-gdt
.include "../../mk/bsd.options.mk"
.if !empty(PKG_OPTIONS:Mdungeon-gdt)
MAKE_ENV+= GDT_FLAG=-DHAVE_GDT
.endif
# Before we build the game itself, we need to build the glkterm library
pre-build:
cd ${WRKDIR}/glkterm && env ${MAKE_ENV} ${MAKE_PROGRAM} ${MAKE_FLAGS}
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/dungeon ${DESTDIR}${PREFIX}/bin
${INSTALL_DATA_DIR} ${DESTDIR}${DATADIR}
${INSTALL_DATA} ${WRKSRC}/dundat ${DESTDIR}${DATADIR}/
.include "../../devel/ncurses/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"

3
games/dungeon/PLIST Normal file
View file

@ -0,0 +1,3 @@
@comment $NetBSD: PLIST,v 1.1 2009/11/28 20:25:40 pgoyette Exp $
bin/dungeon
share/dungeon/dundat

10
games/dungeon/distinfo Normal file
View file

@ -0,0 +1,10 @@
$NetBSD: distinfo,v 1.1 2009/11/28 20:25:40 pgoyette Exp $
SHA1 (dungeon-gdt-glk.tar.gz) = ec148735ae713566c9511057473fbd899d673a6a
RMD160 (dungeon-gdt-glk.tar.gz) = aed6e4a42c03be0a9bce2248dcab3370e1b1fbde
Size (dungeon-gdt-glk.tar.gz) = 262052 bytes
SHA1 (glkterm-080.tar.gz) = 8445929f9e00d773e3708aeae3bd3f602df2e97e
RMD160 (glkterm-080.tar.gz) = 57e317e816a8c233fd0f2fe24a7c8a54c223edbc
Size (glkterm-080.tar.gz) = 91260 bytes
SHA1 (patch-aa) = d12f8125b0bfe51dbbe942af8f1c77a90ff23f21
SHA1 (patch-ab) = d7d83456c67f39c75b9fa161b82257fdf10eb966

View file

@ -0,0 +1,24 @@
$NetBSD: patch-aa,v 1.1 2009/11/28 20:25:40 pgoyette Exp $
Use an explicit 32-bit data type.
--- ../glkterm/glk.h.orig 2009-11-20 14:08:17.000000000 -0800
+++ ../glkterm/glk.h 2009-11-20 13:06:19.000000000 -0800
@@ -17,8 +17,15 @@
/* You may have to edit the definition of glui32 to make sure it's really a
32-bit unsigned integer type, and glsi32 to make sure it's really a
32-bit signed integer type. If they're not, horrible things will happen. */
-typedef unsigned long glui32;
-typedef signed long glsi32;
+/*
+ * typedef unsigned long glui32;
+ * typedef signed long glsi32;
+ */
+
+#include <sys/inttypes.h>
+
+typedef uint32_t glui32;
+typedef int32_t glsi32;
/* These are the compile-time conditionals that reveal various Glk optional
modules. */

View file

@ -0,0 +1,22 @@
$NetBSD: patch-ab,v 1.1 2009/11/28 20:25:40 pgoyette Exp $
Remove an obsolete check that pointers fit into 32-bit data types. I
was unable to find any code remaining that depends on this, and at
least one program (dungeon!) works just fine without having had to do
any hashtable coding!
--- ../glkterm/main.c.orig 2009-11-20 14:08:33.000000000 -0800
+++ ../glkterm/main.c 2009-11-20 13:14:24.000000000 -0800
@@ -52,10 +52,12 @@
printf("Compile-time error: glui32 is not unsigned. Please fix glk.h.\n");
return 1;
}
+/*
if (sizeof(window_t *) > 4) {
printf("Compile-time error: Pointers cannot fit in a glui32. Start writing hashtable code.\n");
return 1;
}
+*/
/* Now some argument-parsing. This is probably going to hurt. */
startdata.argc = 0;