From 629ac5b85f0d60b24828590de3430c52f42607dc Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Fri, 5 Feb 1999 00:51:02 +0100 Subject: [PATCH] rocksndiamonds-1.3.0 --- Makefile | 51 +++++++++++++++++------- README | 81 +++++++++++++++++++++++++++---------- src/Makefile | 110 +++++++++++++++++++-------------------------------- 3 files changed, 136 insertions(+), 106 deletions(-) diff --git a/Makefile b/Makefile index 4616aecb..3e80fafd 100644 --- a/Makefile +++ b/Makefile @@ -7,10 +7,42 @@ # configuration section # #-----------------------------------------------------------------------------# +# specify your favorite ANSI C compiler +CC = gcc + +# explicitely choose your platform, if defaults doesn't work right +# needed for SUN/Solaris; Linux and DOS work fine with auto detection +# PLATFORM = solaris +# PLATFORM = unix +# PLATFORM = dos + +# specify path to X11 on your system +# if undefined, use system defaults (works fine with Linux/gcc) +# X11_PATH = /usr/X11 + +# specify path to install game data (graphics, sounds, levels, scores) +# default is '.', so you can play without installing game data somewhere +# GAME_DIR = /usr/local/games + +# uncomment this if your system has no joystick include file +# JOYSTICK = -DNO_JOYSTICK + +# uncomment this if your system has no sound +# SOUNDS = -DNO_SOUNDS + +# choose if you want to allow many global score file entries for one player +# default is 'MANY_PER_NAME' +# when installing the game in a multi user environment, choose this +# SCORE_ENTRIES = ONE_PER_NAME +# when installing the game in a single user environment, choose this +# SCORE_ENTRIES = MANY_PER_NAME + #-----------------------------------------------------------------------------# -# you shouldn't need to change anything below # +# you should not need to change anything below # #-----------------------------------------------------------------------------# +.EXPORT_ALL_VARIABLES: + MAKE = make SRC_DIR = src @@ -20,19 +52,8 @@ MAKE_CMD = @$(MAKE) -C $(SRC_DIR) all: $(MAKE_CMD) +solaris: + $(MAKE_CMD) PLATFORM=solaris + clean: $(MAKE_CMD) clean - -backup: - ./Scripts/make_backup.sh - -dist-unix: - ./Scripts/make_dist_unix.sh . - -dist-dos: - ./Scripts/make_dist_dos.sh . - -dist: dist-unix dist-dos - -depend: - $(MAKE_CMD) depend diff --git a/README b/README index a16fd5ed..8843b3b4 100644 --- a/README +++ b/README @@ -1,9 +1,11 @@ + Welcome to - R O C K S ' N ' D I A M O N D S ' 9 8 - ------------------------------------------- + R O C K S ' N ' D I A M O N D S 1 . 3 . 0 + ----------------------------------------------- -A game for Unix/X11 by Holger Schemel, (c) 1995-98 by Holger Schemel. +A game for Unix/X11 by Holger Schemel, (c) 1995-99 by Holger Schemel. +DOS/Windows port by Guido Schulz. Introduction ============ @@ -12,7 +14,7 @@ Unix system with color X11. You need an 8-Bit color display or better. It will not work on black&white systems, and maybe not on gray scale systems. If you know the game "Boulderdash" (Commodore C64) or "Emerald Mine" -(Amiga), you know what "ROCKS'N'DIAMONDS" is about. +(Amiga) or "Supaplex" (PC), you know what "ROCKS'N'DIAMONDS" is about. Getting started @@ -20,7 +22,7 @@ Getting started Just 'cd' to the directory 'rocksndiamonds-*' (Unix) or 'rocks-*' (DOS) and type 'rocksndiamonds' (Linux) or 'rocks' (DOS/Windows)! This works only on Linux and DOS systems, because the included binary was -compiled for Linux (i386/libc5) (if you have the Unix package) and DOS +compiled for Linux (i386/glibc) (if you have the Unix package) and DOS (if you have the DOS/Windows package). If you have another Unix system like HPUX, NetBSD or SUN, you first have to type 'make' to compile it. @@ -28,7 +30,7 @@ This may be needed on Linux systems, too, depending on your kernel version, your libc version, your binary format, your processor, ... (The included binary was compiled on the following system: -AMD K6, kernel 2.0.35, libc5, gcc 2.7.2.1, ELF format) +AMD K6-2, kernel 2.2.1, glibc, gcc 2.7.2.3, ELF format) The Menues @@ -216,21 +218,58 @@ directory. To edit a level, you can use all three mouse buttons to draw in the level window. Click into the elements field with one of the three buttons -to remap it to the new element. Use the arrow widgets to scroll around in -the level. Use the 'flood fill' field to init exactly ony flood fill -operation in the level field (you will be prompted). Click on 'control -window' to switch to the control window. - -In the control window you can modify different parameters like the size -of the level playfield, the name of the level, the scores for different -elements and something like that. The four 3x3 field on the upper left -can be edited like the level field and indicate the 'contents' of smashed -crunchers (just try it out with some crunchers in one of your own levels). - -'Undo & Exit' leaves the level editor, throwing away all the changes you -have done to the level. -'Save & Exit' leveas the level editor and saves the new level (the old one -will be deleted). +to remap it to the new element. Use the scrollbars, arrow buttons or +cursor keys to scroll around in the level. Use the drawing functions by +selecting them from the toolbox field or pressing the corresponding key +(the key shortcuts for each gadget are displayed in the status line at +the bottom of the window when the mouse pointer is over the gadget). + +About the drawing functions: If you know the good old "Deluxe Paint" from +the Amiga, you will have no problems with the drawing functions -- even +the key shortcuts are mostly the same. If not, just try them out and you +will see what happens. ;-) + +Some notes: Most drawing functions have different behaviour when different +mouse buttons are pressed in the drawing area; normally, the left mouse +button is the 'foreground button' and the middle and right buttons are +some sort of 'background buttons', often with relation to the chosen +element mappings on this buttons. + +The '?' button brings you to the 'Element settings' page, where you can +see some information about the element and how many of them are included +in the current level. The contents of elements with content (some amoeba +and the Yam Yam (also know as cruncher) can have content) can be edited +by 'sticking' the page with the corresponding button on their page. +Yam Yam's can have up to eight content areas. + +The 'undo' button gives you the chance to undo up to 10 drawing operations. +The 'info' button brings you to the 'Level/Editor settings' page. +The 'save' button asks you to save the current level. +The 'clear' button clears the drawing area without asking. +The 'test' button lets you play your new level directly from the editor. +The 'exit' button asks you to exit the editor (if there are unsaved changes). + +In the 'Editor settings' section, you can give your level a new name +and type in your name which will be displayed as the level's author. +(On Unix systems, your login name will be taken as default.) +Then you can modify the level playfield size there, the available time +(set this to zero to get unlimited time for this level), the score you +get for each 10 seconds time that are left when reaching the exit, and +last but not least you can enter the number of emeralds the player has +to collect before the exit door opens. + +Another new button is the 'double speed' button that lets the player move +twice as fast as normally from start; the effect is the same as collecting +a speed pill during the game. + +In the 'Editor settings' section, you can make some modifications to the +behaviour of the 'random element placement' button (the dice): Choose if +the number you can enter means how many percent of the whole level are +filled with the element chosen as the random element, or if it should mean +the exact number of elements to be placed in the level field. +With the 'restrict' button on the left side you can force the random function +not to overwrite level elements other than the element chosen in the content +field on the right side. The Tape Recorder diff --git a/src/Makefile b/src/Makefile index 37352916..965c0588 100644 --- a/src/Makefile +++ b/src/Makefile @@ -3,64 +3,59 @@ # (c) 1995-98 Holger Schemel, aeglos@valinor.owl.de # #=============================================================================# -#-----------------------------------------------------------------------------# -# configuration section # -#-----------------------------------------------------------------------------# - -# change this to your favorite ANSI C compiler -CC = gcc - -# on Solaris and similar systems, you'll need to uncomment this -# EXTRA_LIBS = -lnsl -lsocket +ifndef PLATFORM # platform not defined -- try auto detection +ifdef COMSPEC +PLATFORM = dos +else +PLATFORM = unix +endif +endif -# specify X11 library path on your system -XLIB_PATH = /usr/X11/lib +ifdef X11_PATH # path to X11 specified by top level Makefile +XINC_PATH = $(X11_PATH)/include +XLIB_PATH = $(X11_PATH)/lib +X11_INCL = -I$(XINC_PATH) +X11_LIBS = -L$(XLIB_PATH) +endif -# change this to the directory where you want to install game data like levels +ifndef GAME_DIR # path to game data not defined -- try '.' GAME_DIR = . +endif -# uncomment this if your system has no joystick include file -# JOYSTICK = -DNO_JOYSTICK - -# uncomment this if your system has no sound -# SOUNDS = -DNO_SOUNDS - -# choose if you want to allow many global score file entries for one player -# when installing the game in a multi user environment, choose this -# SCORE_ENTRIES = ONE_PER_NAME -# when installing the game in a single user environment, choose this +ifndef SCORE_ENTRIES # number of score entries per player undefined SCORE_ENTRIES = MANY_PER_NAME +endif + -# The XPM-Library is no longer needed to build this program, -# but is used to load graphics if XPM_INCLUDE_FILE is defined, -# because the GIF loading routines are still a bit beta. -# If you want to use the Xpm library, convert the GIF files to Xpm -# files (and you need corresponding mask files in xbm format). +# The Xpm library is no longer needed to build this program, +# but is used to load graphics if XPM_INCLUDE_FILE is defined. +# If you want to use the Xpm library, convert the PCX files to XPM +# files (and you need corresponding mask files in X11 Bitmap format). # XPM_INCLUDE_FILE = -DXPM_INCLUDE_FILE="" # EXTRA_X11_LIBS = -lXpm -#-----------------------------------------------------------------------------# -# you shouldn't need to change anything below # -#-----------------------------------------------------------------------------# -ifdef COMSPEC -PLATFORM = dos -else -PLATFORM = unix -endif +ifeq ($(PLATFORM),dos) # DOS / Windows -ifeq ($(PLATFORM),unix) -RM = rm -f -PROGNAME = ../rocksndiamonds -LIBS = -L$(XLIB_PATH) $(EXTRA_X11_LIBS) -lX11 -lm $(EXTRA_LIBS) -else RM = del PROGNAME = ..\rocks.exe LIBS = -lm -lalleg + +else # Unix + +RM = rm -f +PROGNAME = ../rocksndiamonds + +ifeq ($(PLATFORM),solaris) +EXTRA_LIBS = -lnsl -lsocket -R$(XLIB_PATH) +endif + +INCL = $(X11_INCL) +LIBS = $(X11_LIBS) $(EXTRA_X11_LIBS) -lX11 -lm $(EXTRA_LIBS) + endif -CPP = $(CC) -E CONFIG_GAME_DIR = -DGAME_DIR="\"$(GAME_DIR)\"" CONFIG_SCORE_ENTRIES = -D$(SCORE_ENTRIES) @@ -68,30 +63,12 @@ CONFIG_SCORE_ENTRIES = -D$(SCORE_ENTRIES) CONFIG = $(CONFIG_GAME_DIR) $(SOUNDS) $(JOYSTICK) \ $(CONFIG_SCORE_ENTRIES) $(XPM_INCLUDE_FILE) -# DEBUG = -DDEBUG -g -Wall -ansi -pedantic -# DEBUG = -DDEBUG -g -Wall -# DEBUG = -O3 -Wall -ansi -pedantic -DEBUG = -O3 -Wall -# DEBUG = -O3 - -# SYSTEM = -Aa -D_HPUX_SOURCE -Dhpux # for HP-UX (obsolete) -# SYSTEM = -DSYSV -Ae # for HP-UX -# INCL = -I/usr/include/X11R5 # for HP-UX and others -# INCL = -I/usr/local/X11/include # for SunOS and others -# LIBS = -L/usr/lib/X11R5 -lXpm -lX11 -lm -# # for HP-UX and others -# LIBS = -L/usr/local/X11/lib -lXpm -lX11 -lm -lsocket -R/usr/local/X11/lib -# # for SunOS and others - -# LIBS = -L/usr/X11R6/lib -lXpm -lX11 -lm -# LIBS = -L/usr/X11R6/lib -lX11 -lm +# OPTIONS = -DDEBUG -g -Wall # only for debugging purposes +OPTIONS = -O3 -# LIBS = -L/usr/X11R6/lib $(EXTRA_X11_LIBS) -lX11 -lm $(EXTRA_LIBS) +# SYSTEM = -DSYSV -Ae # maybe needed for HP-UX -# LIBS = -L$(XLIB_PATH) $(EXTRA_X11_LIBS) -lX11 -lm $(EXTRA_LIBS) - -# CFLAGS = -O2 $(CONFIG) $(SYSTEM) -CFLAGS = $(DEBUG) $(CONFIG) $(SYSTEM) $(INCL) +CFLAGS = $(OPTIONS) $(SYSTEM) $(INCL) $(CONFIG) SRCS = main.c \ init.c \ @@ -146,10 +123,3 @@ $(PROGNAME): $(OBJS) clean: $(RM) *.o $(RM) $(PROGNAME) - -depend: - for i in $(SRCS); do $(CPP) $(CFLAGS) -M $$i; done > .depend - -ifeq (.depend,$(wildcard .depend)) -include .depend -endif -- 2.34.1