World for the Amiga version 1.02 (not called AmigaW*rld for obvious reasons...) This is Doug McDonald's text adventure game "WORLD". See the original ReadMe file below for a description. This version runs on any Amiga. World requires about 100K of memory. (200K if you copy the data file to a ram disk first, which makes for a faster game.) To run from the workbench: -------------------------- Only the files World, World.info and q1text.dat are required. Q1text.dat.info is optional. To run World, simply double click on the World icon. Q1text.dat must be in the same directory. Alternatively, you can double click on the q1text.dat icon. By selecting the q1text.dat icon and choosing 'Info' from the Workbench menu, you can enter the full path to the program World in the string gadget 'Default Tool'. (This is initially set to 'World:World'.) This way, you can drag (copy) q1text.dat to a ram disk, and double click on it there; World will then operate off of the ram disk, speeding up the game considerably. World looks for "WIN" in the tooltypes. It defaults to a 640 by 200 NEWCON: window. To change this, click once on the World icon, select "Info" from the menu, and change the tooltypes. Example: "WIN=NEWCON:0/0/640/400/WORLD" uses a 640 by 400 NEWCON: window. This is for interlaced screens only. "WIN=CON:0/0/640/200/WORLD" uses a 640 by 200 CON: window. Use this if you don't have Workbench 1.3 yet, or if you prefer to use ConMan, or if you just don't want to use the NEWCON: device. To run from the CLI: -------------------- (Note: I use a stack of at least 10000 to run World. I seriously doubt that this is actually necessary, but since I didn't write World, I don't really know its stack requirements. It's never crashed on me with the default stack of 4000. I feel safer using a large stack, though.) Only the files World and q1text.dat are required. 1>run World [-n][-c][-i][-N] [datafile] Options: -n Uses a NEWCON: window so you can use the arrow keys to scroll through previous commands, correct typing errors, etc. This is the default. -c Uses a CON: window. Use this option if you do not have Workbench 1.3 installed, or if you prefer to use conman, or if you simply don't want to use NEWCON:. -i For an interlaced workbench screen. Opens a 640 by 400 window. -N For a non-interlaced workbench screen. Opens a 640 by 200 window. This is the default. datafile Optional. Default is q1text.dat. Included so that you can copy q1text.dat to ram: and specify ram:q1text.dat on the command line. Since World accesses q1text.dat throughout the game, this speeds up the game considerably. Porting: -------- Porting to the Amiga only required recompiling on the Amiga. To do the window and workbench stuff, the file 'wbstuff.c' was added, and a few lines were added to 'world.c' and a few to helper.c. Don't worry about the messages about things overriding library symbols. It's supposed to do that. The lines added to 'world.c' and 'helper.c' are enclosed in #ifdef AMIGA #endif so it can be easily moved to another computer. Simply don't include the file 'wbstuff.c' if you port it to another computer. Enjoy, Eric Kennedy ejkst@cisunx.edu 1520 James St. Monroeville, PA 15146 (412) 823-5165 original README follows... ------------------------------------------------------------------ This is the portable "C" version of my text adventure game "WORLD". It is a large game in the flavor of Adventure or Zork, and about as large. It is, however, a "sci-fi" type game somewhat like the commercial Infocom games "Planetfall" or "Starcross", but much larger. The code is written to be quite portable. However, it does make a few assumptions. These are: 1. Seven bit ASCII 2. short int is at least 16 bits 3. It MAY assume 2's complement arithmetic; I'm not sure. 4. the read and write IO routines have to work for a second argument which is a pointer to short If your computer doesn't conform to those requirements, the program "vtxtcn" and the routine "speak" in "helper.c" will most definately need to be rewritten. There may be other problems as well, particularly if your machine sets the high bit of a char. The program has been tested and compiles and runs properly on the following systems: 1) VAX/VMS Digital CC compiler. No particular tricks are needed. 2) IBM PC-AT Xenix 1.00. It seems to be necessary to use the large memory model, although I'm not sure why since it runs on the same machine under DOS in the small model. 3) IBM PC under Microsoft C version 4.00. It works in the default small memory model if you compile with the -Os switch. Note that on this setup you MUST link the main program World with binmode.obj, provided by Microsoft, for it to work right. Vtxtcn and vcnvrt must NOT be linked with binmode.obj. This compiler generates a few harmless warning messages. You may need to use EXEMOD to increase the stack size. 4) VAX/4.3bsd Unix. No particular tricks needed. Instructions for generating world: Once you have unpacked all the files, compile (and link if necessary) the preprocessor "vtxtcn.c". Then execute it. It will create a few .inc files and the run-time text base file "q1text.dat". Then compile, (link) and execute "vcnvrt.c". It will generate more .inc files. These .inc files generate the actual game data which is compiled into the final game program "world". The main program, which contains seven files world.c, demons.c, helper.c, motion.c, parser.c, verbs1.c and verbs2.c is then compiled and, if necessary on your machine, linked. See above for possible special switches or link files for your machine. Special handling probably is not necessary for un-segmented Unix machines. Edit the file helper.c to change the pathname for the data file (q1text.dat), if desired. The output of the above compilation process is the game program which should be named "world". It and "q1text.dat" are all that is necessary to run the game. The game generates save-position files called "world.sav". A note on the file q1text.dat: this file is written as an array of shorts, rather than chars. It is so arranged, however, that if it is in fact considered as bytes, there are absolutely linefeeds or carriagereturns sent to it. Thus on a record oriented machine like the VAX/VMS, it is a single record. On the IBM-PC/DOS, no conversion from lf to lf/cr or vice versa is ever required. Save files, on the other hand, may accidentally contain any control characters, so on a system like DOS in which the normal text mode does conversions of lf to lf/cr pairs you must use the special binary mode. None of these considerations should apply to Unix. Bugs: There are no known bugs. However, some are certain to show up if it is compiled on different machines, or if players exercise parts of the code I haven't frequently played with. Please send them to me. There are Fortran versions of this game for the VAX, PDP-11, IBM-PC, and Apple Macintosh which implement a niftier user interface than this version. They will appear eventually (but not in source code) on various bulletin boards. The Mac version features the full Mac interface. No claim is made to the effect that this program is an example of "good" programming practice, whatever that may be. In particular, anyone who can untangle the spaghetti in scan() will be awarded 8 assorted kazoos and 4 Bronx cheers. Please don't cheat by reading the text file! Cheating by reading the code is only slightly more cowardly! Doug Mcdonald Department of Chemistry University of Illinois Urbana Ill. 61801 address: mcdonald@uiucuxe