diff options
author | nia <nia@pkgsrc.org> | 2021-12-29 23:56:01 +0000 |
---|---|---|
committer | nia <nia@pkgsrc.org> | 2021-12-29 23:56:01 +0000 |
commit | 5ef0f82d41e42bbf4703e3dd86cd2589fecd0e7b (patch) | |
tree | f3a26cf684971bddf3f49dd8ace5d72a69f8dd48 /games/xchomp | |
parent | 68d8d2e4718c0083f32b42f1736f112583039d6b (diff) | |
download | pkgsrc-5ef0f82d41e42bbf4703e3dd86cd2589fecd0e7b.tar.gz |
games: add xchomp
Xchomp is a game closely patterned after Pac-Man(tm) that runs under the X
Window System, with several different mazes added.
This is strictly a keyboard-controlled game. The arcade game had very simple
controls -- one four-directional joystick. In xchomp, all control is through
the arrow keys.
Diffstat (limited to 'games/xchomp')
-rw-r--r-- | games/xchomp/DESCR | 6 | ||||
-rw-r--r-- | games/xchomp/Makefile | 16 | ||||
-rw-r--r-- | games/xchomp/PLIST | 2 | ||||
-rw-r--r-- | games/xchomp/distinfo | 15 | ||||
-rw-r--r-- | games/xchomp/patches/patch-Imakefile | 22 | ||||
-rw-r--r-- | games/xchomp/patches/patch-contact.c | 33 | ||||
-rw-r--r-- | games/xchomp/patches/patch-demo.c | 24 | ||||
-rw-r--r-- | games/xchomp/patches/patch-drivers.c | 101 | ||||
-rw-r--r-- | games/xchomp/patches/patch-main.c | 82 | ||||
-rw-r--r-- | games/xchomp/patches/patch-maze.c | 24 | ||||
-rw-r--r-- | games/xchomp/patches/patch-props.c | 78 | ||||
-rw-r--r-- | games/xchomp/patches/patch-resources.c | 106 | ||||
-rw-r--r-- | games/xchomp/patches/patch-status.c | 41 | ||||
-rw-r--r-- | games/xchomp/patches/patch-xchomp.h | 71 |
14 files changed, 621 insertions, 0 deletions
diff --git a/games/xchomp/DESCR b/games/xchomp/DESCR new file mode 100644 index 00000000000..d101fe15f2c --- /dev/null +++ b/games/xchomp/DESCR @@ -0,0 +1,6 @@ +Xchomp is a game closely patterned after Pac-Man(tm) that runs under the X +Window System, with several different mazes added. + +This is strictly a keyboard-controlled game. The arcade game had very simple +controls -- one four-directional joystick. In xchomp, all control is through +the arrow keys. diff --git a/games/xchomp/Makefile b/games/xchomp/Makefile new file mode 100644 index 00000000000..e7d7c95f7dd --- /dev/null +++ b/games/xchomp/Makefile @@ -0,0 +1,16 @@ +# $NetBSD: Makefile,v 1.1 2021/12/29 23:56:01 nia Exp $ + +DISTNAME= xchomp-pl1 +CATEGORIES= games +MASTER_SITES= https://ftp.gwdg.de/pub/x11/x.org/R5contrib/ + +MAINTAINER= pkgsrc-users@NetBSD.org +HOMEPAGE= http://vidalc.chez.com/xchomp/xchomp.html +COMMENT= Game for X11 closely patterned after Pac-Man + +WRKSRC= ${WRKDIR}/xchomp +USE_IMAKE= yes + +.include "../../x11/libX11/buildlink3.mk" +.include "../../x11/libXext/buildlink3.mk" +.include "../../mk/bsd.pkg.mk" diff --git a/games/xchomp/PLIST b/games/xchomp/PLIST new file mode 100644 index 00000000000..e78d93d3c4f --- /dev/null +++ b/games/xchomp/PLIST @@ -0,0 +1,2 @@ +@comment $NetBSD: PLIST,v 1.1 2021/12/29 23:56:01 nia Exp $ +bin/xchomp diff --git a/games/xchomp/distinfo b/games/xchomp/distinfo new file mode 100644 index 00000000000..683bf8524f6 --- /dev/null +++ b/games/xchomp/distinfo @@ -0,0 +1,15 @@ +$NetBSD: distinfo,v 1.1 2021/12/29 23:56:01 nia Exp $ + +BLAKE2s (xchomp-pl1.tar.gz) = 16fe81471aa1aa8bdd5fe2a51d9746ba980b4bab3adaaceeac04d13af2580744 +SHA512 (xchomp-pl1.tar.gz) = c5d40e97c8b14d96fe11e82d537128c0aa6ed12e9befb36a5432a84bf744cbce3e4bc6dbb068489974caa3235b5a1618a3fff9ddeede02a5c05083d1780b3d8f +Size (xchomp-pl1.tar.gz) = 33987 bytes +SHA1 (patch-Imakefile) = c5178798d35c9ebb8fff49d52cf6cea7d9e8e768 +SHA1 (patch-contact.c) = dbca9684d645d8b8bd4548c1011f764cd797f865 +SHA1 (patch-demo.c) = 9c7dadbd26a8788882617e93bc0ca1eb68e59467 +SHA1 (patch-drivers.c) = 38e484eca54a7dcf0ebe9735242c7971c6d0daed +SHA1 (patch-main.c) = 711c36ebb772f261ce9d9bac633393eb94ca62e4 +SHA1 (patch-maze.c) = da13497888aa34b8793f7620df7cc1c73b3f2178 +SHA1 (patch-props.c) = cce3ddb8abb68f13f0e6970a482eb7b5586defdd +SHA1 (patch-resources.c) = f2f11c68af575ed17e79e804409bc59e17684ae6 +SHA1 (patch-status.c) = e335db1e2fbce9c69be69890ba257c0532dafb4a +SHA1 (patch-xchomp.h) = 872c740b80e219a88891999fa2318f101da46d9d diff --git a/games/xchomp/patches/patch-Imakefile b/games/xchomp/patches/patch-Imakefile new file mode 100644 index 00000000000..4c6bf63b0a4 --- /dev/null +++ b/games/xchomp/patches/patch-Imakefile @@ -0,0 +1,22 @@ +$NetBSD: patch-Imakefile,v 1.1 2021/12/29 23:56:01 nia Exp $ + +Fix installation without a man page. +From FreeBSD Ports. + +--- Imakefile.orig 1994-03-18 05:16:10.000000000 +0000 ++++ Imakefile +@@ -2,7 +2,7 @@ + #include BandAidCompiler + #endif + +-DEFINES = -DX11 ++DEFINES = -DX11 -DFRAME_DELAY=40000 + INCLUDES = -I$(TOP) -I$(TOP)/X11 + DEPLIBS = $(DEPXLIB) + LOCAL_LIBRARIES = $(XLIB) +@@ -11,4 +11,4 @@ SYS_LIBRARIES = -lm + SRCS = contact.c demo.c drivers.c main.c maze.c props.c resources.c status.c + OBJS = contact.o demo.o drivers.o main.o maze.o props.o resources.o status.o + +-ComplexProgramTarget(xchomp) ++ComplexProgramTargetNoMan(xchomp) diff --git a/games/xchomp/patches/patch-contact.c b/games/xchomp/patches/patch-contact.c new file mode 100644 index 00000000000..4edb4decbaa --- /dev/null +++ b/games/xchomp/patches/patch-contact.c @@ -0,0 +1,33 @@ +$NetBSD: patch-contact.c,v 1.1 2021/12/29 23:56:01 nia Exp $ + +Add return types. from FreeBSD Ports. + +--- contact.c.orig 1994-03-18 05:13:16.000000000 +0000 ++++ contact.c +@@ -17,7 +17,7 @@ + * with which the player collided. In this case, it doesn't matter. + */ + /*ARGSUSED*/ +-die(dummy) ++void die(dummy) + int dummy; + { + register int xx = pac_x, yy = pac_y, i, dx, dy; +@@ -116,7 +116,7 @@ int dummy; + * of the eaten ghost, and then continues. The parameter is + * the array index of the eaten ghost. + */ +-eat(i) ++void eat(i) + int i; + { + register int xx = pac_x, yy = pac_y, j; +@@ -166,7 +166,7 @@ int i; + * The eyes are harmless; this is a no-op. + */ + /*ARGSUSED*/ +-noop(dummy) ++void noop(dummy) + int dummy; + { + } diff --git a/games/xchomp/patches/patch-demo.c b/games/xchomp/patches/patch-demo.c new file mode 100644 index 00000000000..ff3731eda24 --- /dev/null +++ b/games/xchomp/patches/patch-demo.c @@ -0,0 +1,24 @@ +$NetBSD: patch-demo.c,v 1.1 2021/12/29 23:56:01 nia Exp $ + +Add return types. from FreeBSD Ports. + +--- demo.c.orig 1994-03-18 05:12:23.000000000 +0000 ++++ demo.c +@@ -6,7 +6,7 @@ + * for the game. + */ + +-demo_seq() ++void demo_seq() + { + int i, xx, yy, direction, ascent, descent, len; + XCharStruct chars; +@@ -127,7 +127,7 @@ demo_seq() + if (event.xany.window != window) continue; + switch (event.type) { + case KeyPress: +- XLookupString(&event, &c_buf, 1, &last_key, &status); ++ XLookupString((XKeyEvent *) &event, &c_buf, 1, &last_key, &status); + if ((last_key == XK_q) || (last_key == XK_Q)) + do_exit(); + XFillRectangle(display, window, clearGC, 0, 0, WIN_WIDTH, diff --git a/games/xchomp/patches/patch-drivers.c b/games/xchomp/patches/patch-drivers.c new file mode 100644 index 00000000000..5005298c0ac --- /dev/null +++ b/games/xchomp/patches/patch-drivers.c @@ -0,0 +1,101 @@ +$NetBSD: patch-drivers.c,v 1.1 2021/12/29 23:56:01 nia Exp $ + +Add return types. from FreeBSD Ports. + +--- drivers.c.orig 1994-03-18 05:15:08.000000000 +0000 ++++ drivers.c +@@ -12,7 +12,7 @@ + * variables (pac_x, pac_y), the direction variables (pac_ix, pac_iy), + * and the clipping region (pac_region). + */ +-control_pac() ++void control_pac() + { + register int xx = pac_x, yy = pac_y, i, dx, dy; + register char *pc = md[yy >> 4] + (xx >> 4); +@@ -89,7 +89,7 @@ control_pac() + * eaten something which is not a ghost -- a dot, a power-dot, + * or the fruit. If so, the appropriate action is taken. + */ +-check_dots() ++void check_dots() + { + register char *pi; + register int i; +@@ -218,7 +218,7 @@ check_dots() + * The function below causes ghosts to follow the player around, with a bit + * of randomness thrown in as well. + */ +-follow(i) ++void follow(i) + register int i; + { + int xx = ghost_x[i], yy = ghost_y[i]; +@@ -289,7 +289,7 @@ register int i; + * at half speed. It is set up as the driver function during + * the ghost-eating periods of the game. + */ +-run(i) ++void run(i) + register int i; + { + int xx = ghost_x[i], yy = ghost_y[i]; +@@ -358,7 +358,7 @@ register int i; + * high speed. It is set up as the driver for ghosts which have + * been eaten. + */ +-go_home(i) ++void go_home(i) + register int i; + { + int xx = ghost_x[i], yy = ghost_y[i]; +@@ -459,14 +459,14 @@ register int i; + * They simply hover around in a circular pattern. Randomness is + * used to decide when the ghosts leave the box. + */ +-hover(i) ++void hover(i) + register int i; + { + register int yy = ghost_y[i] >> 4, xx = ghost_x[i] >> 4; + char *pc = md[yy] + xx; + register int *px = ghost_ix + i, *py = ghost_iy + i; + +- if (xx == door_x) ++ if (xx == door_x) { + if (yy == (door_y - 1)) { + + /* +@@ -490,6 +490,7 @@ register int i; + *px = 0, *py = (-2); + return; + } ++ } + + /* + * The rest of the function drives the ghost around the +@@ -514,14 +515,14 @@ register int i; + * the ghost-eating periods of the game -- they move at half + * speed. + */ +-hover2(i) ++void hover2(i) + register int i; + { + register int yy = ghost_y[i] >> 4, xx = ghost_x[i] >> 4; + char *pc = md[yy] + xx; + register int *px = ghost_ix + i, *py = ghost_iy + i; + +- if (xx == door_x) ++ if (xx == door_x) { + if (yy == (door_y - 1)) { + drive[i] = run; + run(i); +@@ -532,6 +533,7 @@ register int i; + *px = 0, *py = (-1); + return; + } ++ } + + if (*px > 0) { + if (pc[1]) *px = 0, *py = (-1); diff --git a/games/xchomp/patches/patch-main.c b/games/xchomp/patches/patch-main.c new file mode 100644 index 00000000000..4f3f799d24e --- /dev/null +++ b/games/xchomp/patches/patch-main.c @@ -0,0 +1,82 @@ +$NetBSD: patch-main.c,v 1.1 2021/12/29 23:56:01 nia Exp $ + +Add return types. +Allow FRAME_DELAY to be set from the command line. +from FreeBSD Ports. + +--- main.c.orig 1994-03-18 05:12:24.000000000 +0000 ++++ main.c +@@ -2,7 +2,7 @@ + #define EXTERN + #include "xchomp.h" + +-main(argc, argv) ++int main(argc, argv) + int argc; + char *argv[]; + { +@@ -10,6 +10,12 @@ char *argv[]; + int dummy; + XCharStruct chars; + unsigned long event_mask; ++ int fdelay = 0; ++ ++ /* User may set FRAME_DELAY from the command line */ ++ if (argc >= 2) { ++ fdelay = atoi(argv[1]); ++ } + + /* open the display */ + display = XOpenDisplay(NULL); +@@ -64,17 +70,18 @@ char *argv[]; + } + + /* go to it */ +- play_game(); ++ play_game(fdelay); + + /* exit */ + do_exit(); ++ return 0; + } + + + /* + * The following function contains the main game loop. + */ +-play_game() { ++void play_game(fdelay) { + register int i; + char c_buf; + XComposeStatus status; +@@ -166,7 +173,7 @@ play_game() { + if (event.xany.window != window) continue; + switch (event.type) { + case KeyPress: +- XLookupString(&event, &c_buf, 1, &last_key, &status); ++ XLookupString((XKeyEvent *) &event, &c_buf, 1, &last_key, &status); + if (last_key == XK_space) + if (!pause_seq()) + goto demo; +@@ -325,7 +332,11 @@ play_game() { + XSync(display, False); + + #ifdef FRAME_DELAY +- usleep(FRAME_DELAY); ++ if (fdelay > 0) { ++ usleep(fdelay); ++ } else { ++ usleep(FRAME_DELAY); ++ } + #endif + + } /* while */ +@@ -347,7 +358,7 @@ play_game() { + } + + +-do_exit() ++void do_exit() + { + destroy_regions(); + XUnmapWindow(display, window); diff --git a/games/xchomp/patches/patch-maze.c b/games/xchomp/patches/patch-maze.c new file mode 100644 index 00000000000..8251f790f3a --- /dev/null +++ b/games/xchomp/patches/patch-maze.c @@ -0,0 +1,24 @@ +$NetBSD: patch-maze.c,v 1.1 2021/12/29 23:56:01 nia Exp $ + +Add return types, from FreeBSD Ports. + +--- maze.c.orig 1994-03-18 05:13:16.000000000 +0000 ++++ maze.c +@@ -124,7 +124,7 @@ static mazedata mazes[] = { + "z---x---x---x---x---c" } }; + + +-read_maze(num) ++void read_maze(num) + int num; + { + int i, xx, yy; +@@ -259,7 +259,7 @@ int num; + * The function which follows is used at the beginning of each level to + * set up the initial parameters for all of the moving figures. + */ +-position_players() ++void position_players() + { + int i; + XRectangle ghost_rect[MAX_GHOSTS], pac_rect; diff --git a/games/xchomp/patches/patch-props.c b/games/xchomp/patches/patch-props.c new file mode 100644 index 00000000000..904ec6a2269 --- /dev/null +++ b/games/xchomp/patches/patch-props.c @@ -0,0 +1,78 @@ +$NetBSD: patch-props.c,v 1.1 2021/12/29 23:56:01 nia Exp $ + +Add return types, from FreeBSD Ports. + +--- props.c.orig 1994-03-18 05:13:17.000000000 +0000 ++++ props.c +@@ -9,7 +9,7 @@ + + + /* the get-ready sequence */ +-get_ready() ++void get_ready() + { + int xx, yy, i; + int direction, ascent, descent; +@@ -41,7 +41,7 @@ get_ready() + + + /* the game-over sequence */ +-game_over() ++void game_over() + { + int xx, yy; + int direction, ascent, descent; +@@ -64,7 +64,7 @@ game_over() + + + /* the end-of-level sequence -- the screen flashes a few times */ +-finish() ++void finish() + { + int i; + +@@ -115,7 +115,7 @@ Bool pause_seq() + if (event.xany.window != window) continue; + switch (event.type) { + case KeyPress: +- XLookupString(&event, &c_buf, 1, &last_key, &status); ++ XLookupString((XKeyEvent *) &event, &c_buf, 1, &last_key, &status); + if ((last_key == XK_q) || (last_key == XK_Q)) + do_exit(); + if ((last_key == XK_r) || (last_key == XK_R)) +@@ -136,7 +136,7 @@ Bool pause_seq() + } + + +-do_sleep(secs) ++void do_sleep(secs) + { + int i; + +@@ -147,7 +147,7 @@ do_sleep(secs) + } + + +-do_usleep(usecs) ++void do_usleep(usecs) + { + int i, d, r; + +@@ -164,7 +164,7 @@ do_usleep(usecs) + } + + +-check_normal_events() ++void check_normal_events() + { + char c_buf; + XEvent event; +@@ -175,7 +175,7 @@ check_normal_events() + if (event.xany.window != window) continue; + switch (event.type) { + case KeyPress: +- XLookupString(&event, &c_buf, 1, &last_key, &status); ++ XLookupString((XKeyEvent *) &event, &c_buf, 1, &last_key, &status); + if (last_key == XK_space) + if (!pause_seq()) + longjmp(jb_start, 1); diff --git a/games/xchomp/patches/patch-resources.c b/games/xchomp/patches/patch-resources.c new file mode 100644 index 00000000000..8696d07e55b --- /dev/null +++ b/games/xchomp/patches/patch-resources.c @@ -0,0 +1,106 @@ +$NetBSD: patch-resources.c,v 1.1 2021/12/29 23:56:01 nia Exp $ + +Add return types, from FreeBSD Ports. + +--- resources.c.orig 1994-03-18 05:12:25.000000000 +0000 ++++ resources.c +@@ -9,7 +9,7 @@ + * contexts. + */ + +-create_window(argc, argv) ++void create_window(argc, argv) + int argc; + char *argv[]; + { +@@ -39,7 +39,7 @@ char *argv[]; + } + + +-create_pac() ++void create_pac() + { + int i; + +@@ -127,7 +127,7 @@ create_pac() + } + + +-create_ghost() ++void create_ghost() + { + int i; + +@@ -164,7 +164,7 @@ create_ghost() + } + + +-create_maze_symbols() ++void create_maze_symbols() + { + int i; + Pixmap empty; +@@ -190,7 +190,7 @@ create_maze_symbols() + } + + +-create_maps() ++void create_maps() + { + powermap = XCreatePixmap(display, root, WIN_WIDTH, WIN_HEIGHT, depth); + save = XCreatePixmap(display, root, WIN_WIDTH, WIN_HEIGHT, depth); +@@ -199,8 +199,7 @@ create_maps() + } + + +- +-create_fruit() ++void create_fruit() + { + fruit_pix[0] = XCreatePixmapFromBitmapData(display, root, fcherry_bits, + GHOST_SIZE, GHOST_SIZE, 1, 0, 1); +@@ -261,7 +260,7 @@ create_fruit() + } + + +-create_GCs() ++void create_GCs() + { + XGCValues gcv; + unsigned long mask; +@@ -341,7 +340,7 @@ create_GCs() + } + + +-create_demo_images() ++void create_demo_images() + { + demo_mask[0] = XCreatePixmapFromBitmapData(display, root, bigc_bits, + 48, 48, 1, 0, 1); +@@ -380,7 +379,7 @@ create_demo_images() + } + + +-clear_maps() ++void clear_maps() + { + XFillRectangle(display, powermap, clearGC, 0, 0, WIN_WIDTH, WIN_HEIGHT); + XFillRectangle(display, save, clearGC, 0, 0, WIN_WIDTH, WIN_HEIGHT); +@@ -388,7 +387,7 @@ clear_maps() + } + + +-create_regions() ++void create_regions() + { + XRectangle full_rect; + int i; +@@ -411,7 +410,7 @@ create_regions() + } + + +-destroy_regions() ++void destroy_regions() + { + int i; + diff --git a/games/xchomp/patches/patch-status.c b/games/xchomp/patches/patch-status.c new file mode 100644 index 00000000000..be781034427 --- /dev/null +++ b/games/xchomp/patches/patch-status.c @@ -0,0 +1,41 @@ +$NetBSD: patch-status.c,v 1.1 2021/12/29 23:56:01 nia Exp $ + +Add return types, from FreeBSD Ports. + +--- status.c.orig 1994-03-18 05:12:46.000000000 +0000 ++++ status.c +@@ -8,7 +8,7 @@ + * score, the fruit level, and the number of lives remaining. + */ + +-print_score(incr) ++void print_score(incr) + long incr; + { + static char string[6]; +@@ -48,7 +48,7 @@ int num; + } + + +-display_level(slowly) ++void display_level(slowly) + Bool slowly; + { + int i, xx; +@@ -73,14 +73,14 @@ Bool slowly; + } + + +-display_title() ++void display_title() + { + XCopyPlane(display, title, window, fullcopyGC, 0, 0, TITLE_WIDTH, + TITLE_HEIGHT, 12 * GHOST_SIZE, WIN_HEIGHT + 1, 1); + } + + +-restore_status() ++void restore_status() + { + print_score(0L); + (void)set_lives(lives); diff --git a/games/xchomp/patches/patch-xchomp.h b/games/xchomp/patches/patch-xchomp.h new file mode 100644 index 00000000000..e4dcd4eed71 --- /dev/null +++ b/games/xchomp/patches/patch-xchomp.h @@ -0,0 +1,71 @@ +$NetBSD: patch-xchomp.h,v 1.1 2021/12/29 23:56:01 nia Exp $ + +Add return types, from FreeBSD Ports. + +--- xchomp.h.orig 1994-03-18 05:13:17.000000000 +0000 ++++ xchomp.h +@@ -6,6 +6,7 @@ + #include <signal.h> + #include <setjmp.h> + #include <string.h> ++#include <stdlib.h> + + #include <X11/Xlib.h> + #include <X11/Xutil.h> +@@ -74,7 +75,7 @@ EXTERN struct timeval st_delay; + typedef int intm[8]; + typedef char charm[BLOCK_WIDTH]; + typedef charm mazedata[BLOCK_HEIGHT]; +-typedef int (*funcptr)(); ++typedef void (*funcptr)(); + + EXTERN Atom DEC_icon_atom; + +@@ -136,6 +137,44 @@ EXTERN Bool dead, completed; + + EXTERN jmp_buf jb_start; + +-extern follow(), hover(), hover2(), run(), go_home(); +-extern die(), eat(), noop(); +-extern Bool pause_seq(); ++EXTERN void follow(int); ++EXTERN void run(int); ++EXTERN void go_home(int); ++EXTERN void hover(int); ++EXTERN void hover2(int); ++EXTERN void die(int); ++EXTERN void eat(int); ++EXTERN void noop(int); ++EXTERN Bool pause_seq(); ++ ++void do_exit(); ++void play_game(int); ++void destroy_regions(); ++void create_ghost(); ++void create_pac(); ++void create_fruit(); ++void create_maze_symbols(); ++void create_demo_images(); ++void create_GCs(); ++void create_window(int, char **); ++void create_maps(); ++void create_regions(); ++void demo_seq(); ++void display_title(); ++void print_score(long); ++void display_level(Bool); ++void clear_maps(); ++void read_maze(int); ++void position_players(); ++int set_lives(int); ++void get_ready(); ++void restore_status(); ++void control_pac(); ++void usleep(int); ++void do_sleep(int); ++void do_usleep(int); ++void game_over(); ++void finish(); ++void control_pac(); ++void check_dots(); ++void check_normal_events(); |