Fabularium incorporates some or all of the following libraries, subject to the below licences:
--AdvSys is copyright (c) 2009 David Betz. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - * The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --
-================================================= -AGILITY: THE (MOSTLY) UNIVERSAL AGT INTERPRETER -Version 1.1.1 -================================================= - - This is an interpreter for game files created with Malmberg and -Welch's _Adventure Game Toolkit_. AGiliTy is universal in the sense -that it understands and interprets most of the many versions of the -AGT game file format (unlike the original interpreters which were -only intended to run the game file format associated with them) and -also in that it is written in ANSI C and so should be straightforward -to port to other systems. - - It is *not* a port of the original interpreters but rather a -completely new interpreter built around the game file format; while it -follows the original interpreters on most things, there are some -differences which are described below. - - ----------- - CONTENTS ----------- - INTRODUCTION - ACKNOWLEDGMENTS - AGT AND AGX GAME FILES - AGT VERSIONS SUPPORTED - DIFFERENCES BETWEEN AGILITY AND THE ORIGINAL INTERPRETERS - LIST OF SPECIAL VERBS - CONFIGURATION FILES - DEBUGGING OPTIONS - AGT GAME LIST - - --------------- - INTRODUCTION --------------- - For general information on AGT, I recommend Jay Goemmer's web page -at http://www.ltlink.com/~jgoemmer/agt.html. - - The most recent release of this program can be found at the -Interactive Fiction archive: - ftp://ftp.ifarchive.org/if-archive/programming/agt/agility/ - - This software is copyright 1996-1999,2001 by Robert Masenten. -This program is free software; you can redistribute it and/or modify -it under the terms of version 2 of the GNU General Public License, -as published by the Free Software Foundation. - This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - For information on compiling and porting this program, see the file -'porting.txt'. A list of known bugs is in the file 'buglist' and a -list of changes from earlier versions is in 'changes.txt'. (If this is -with an executable and not the source version, some of these files may not -be present). - - Send comments and bug reports to Robert Masenten at: - rcm-math@pacbell.net - - - ------------------ - ACKNOWLEDGMENTS ------------------ -Thanks to the following people: - *Jay Goemmer, who has sent me pages and pages of comments and bug -reports. - *David Kinder, responsible for the both the Amiga and Windows ports and -a source of much valuable feedback. - *David Youd, who has uncovered many subtle and complex bugs in both -AGiliTy and Magx. - *Mitch Mlinar, who has contributed several patches. - *Jan-Erik Karlsson, for his bug report/patch. - *Everyone else who has sent me suggestions and bug reports, including -Audrey De Lisle (responsible for the red smoke), David Doherty, Al -Golden, John Hartnup, Walter Isaac, Sami Kivela, Alexander Lehmann, -Grant E. Metcalf, Paul Mikell, Adam Myrow, Olav Nielsen, D.J. Picton, -Kevin Soucy, Ben Straub, "Grand Moff Tarkin", Adam Thornton, Mark -Tilford, David Turpin, and Gil Williamson. - *Volker Blasius, maintainer of the Interactive Fiction Archive at -ftp.ifarchive.org. - *Robert Pelak, who suggested the name "AGiliTy". - *All of the other people on rai-f who suggested names for my interpreter. - - ------------------------- - AGT AND AGX GAME FILES ------------------------- - Games in the AGT format can be found at the Interactive Fiction archive: - ftp://ftp.ifarchive.org/if-archive/games/agt - - AGT games are recognizable by having several different files with -names like 'MYGAME.D$$', 'MYGAME.DA1', 'MYGAME.DA2', ... , -'MYGAME.DA6', 'MYGAME.TTL', etc. They also usually come with a DOS -runtime interpreter (usually called RUN.EXE or MRUN.EXE), which can be -deleted without affecting AGiliTy. (DOS users might want to keep it -around 'just in case', depending on how much hard drive space is -available) - - AGiliTy also has its own file format (with extension "AGX", which -stands for "Adventure Game eXecutable"); existing AGT games can be -converted into this format using the utility agt2agx which comes with -AGiliTy. They can also be created from AGT source code by using the -Magx compiler, available in - ftp://ftp.ifarchive.org/if-archive/programming/agt/magx/ - - The new format takes all of the various AGT files (MYGAME.DA1, -MYGAME.DA2, MYGAME.DA3, MYGAME.DA4, MYGAME.DA5, MYGAME.DA6, MYGAME.TTL, -MYGAME.INS, MYGAME.VOC, MYGAME.D$$, MYGAME.OPT, and parts of -MYGAME.CFG) and puts all of the data in one file (MYGAME.AGX). - Aside from the reduction in directory clutter, it has the -following advantages: - 1)It's smaller; for large games the new format can save over 100K - (The most extreme case I've run across so far is Shades of Gray: - 790K vs. 568K uncompressed or 273K vs. 148K ZIPed) - 2)It loads more quickly since it's closer in structure to AGiliTy's - internal format. (In particular, the interpreter doesn't need to - build the dictionary or convert metacommand opcodes into a common - format). - 3)It's more portable. For example, there are platforms out there that - can't handle the 'D$$' extension. - - ------------------------- - AGT VERSIONS SUPPORTED ------------------------- - AGiliTy understands the following versions of AGT (which includes -every AGT game at ftp.ifarchive.org that I know of): - --1.0 - --1.18 - --the early "Classic AGT": e.g. 1.19, 1.2, 1.21 - --"Classic AGT", both big and small: e.g. 1.3, 1.32, 1.35, 1.5, 1.7 - --the "Even Bigger 1.32" used by _Cosmoserve_ - --the "Chemically Altered 1.32" used by _Shades of Gray_, - --Menichelli's 1.82[untested] and 1.83 - --Both known "proto-Master's Edition" 1.5 variants - --The proto-Master's Edition 1.6 variant used by Pork. - --Both Master's Edition 1.0 variants. - --The Master's Edition 1.5/1.51, 1.55, and 1.56/1.6/1.7. - - _The Pyramids of Mars_ and _Cliff Diver_ require configuration -options to be set; they use variant interpreters that are supported -but can't be detected by the interpreter. - In particular, _Pyramids_ needs the ALT_ANY option and -_Cliff Diver_ requires the IRUN option. - - _Klaustrophobia_ is now supported. Use AGiliTy to play each of the -chapters as usual. To switch between chapters, just SAVE at the end -of one chapter and RESTORE at the beginning of the next (the -game will tell you when to switch chapters; however, use SAVE instead -of DONE1 or DONE2). This is still experimental and so I'd appreciate -any feedback on how well it works (or doesn't work, as the case may -be). - Unlike the MS-DOS programs that _Klaustrophobia_ originally used for -this, AGiliTy doesn't check that you've actually reached the end of the -previous chapter; be warned that if you switch chapters before the game -tells you to, things may break. - There is also no way for AGiliTy to support the intermission or -endgame text from the original game: these are all printed out -by DOS programs rather than by the AGT interpreter. - - ------------------------------------------------------------ - DIFFERENCES BETWEEN AGILITY AND THE ORIGINAL INTERPRETERS ------------------------------------------------------------ - --Disambiguation is done on the normal command entry line rather than -having a special prompt. - --When asked "Which object do you mean?", it is possible to reply -ANY, EITHER, BOTH, or ALL, as well as giving the name of an object. - --LISTEXIT ON, LISTEXIT OFF will turn automatic listing of exits on or -off (in AGT there is a LIST EXITS command, so some AGT games don't list -exits to rooms). - --OOPS, UNDO, and RESTART are supported (at least on systems with -enough memory). - --Adjective-only matches are accepted by the parser. - --The parser is capable of intelligent disambiguation. - --It is is also able to expand ALL and ALL EXCEPT (when appropriate -options are set). - --Some more multiple word verbs are automatically recognized (for -example, GET IN is automatically translated into ENTER). - --Some built-in verbs have additional synonyms. (In particular, -standard one-letter abbreviations are supported: X for EXAMINE, Z for -WAIT) - --Game-specific synonyms are given a higher priority by the parser than -the generic built-in synonyms. - --The standard error messages are different than the original (except -in Master's Edition games where most of the standard error messages -are included in the game file) - --SCRIPT output is sent to a file rather than to the printer. - --AGiliTy has an extended AGILDEBUG debugging verb and supports more -detailed metacommand tracing output. - --AGiliTy uses a different save file format. - --COLORS is not supported, although on some systems equivalent -functionality is supported in the configuration file. - --The special title screen effects of the Shades of Gray and Cosmoserve97 -interpreters aren't duplicated. - --Graphics, sound, and fonts are not supported on all platforms. - - ------------------------ - LIST OF SPECIAL VERBS ------------------------ -These are all of the special verbs recognized by the interpreter: -SCORE Print out your score. -NOTIFY Turn score notification on and off -INSTRUCTIONS or INS Display the instructions for the game. -INTRODUCTION or INTRO Repeat the introduction of the game. -VIEW-Views an illustration. (Not supported on all platforms.) -BRIEF Don't print room descriptions for rooms you've seen. -VERBOSE Print room descriptions even for rooms you've already seen. -LIST EXITS List the exits from a room. -LISTEXIT ON,OFF Turn on/off automatic listing of exits. -SCRIPT Start sending a transcript to a file. -UNSCRIPT Stop creating a transcript. -SOUND ON, OFF Turn sound on/off. -LOG Start sending all of your commands to a file. -REPLAY Replay your commands from a file, one every - seconds. -REPLAY FAST Replay your commands from a file without waiting for you - to read the scrolling text. -REPLAY STEP Replay your commands from a file, one for every keypress. -AGILDEBUG Access debugging commands. -MENU Toggle menu mode on or off. -OOPS Correct a word you just mistyped; must be the first command on - a line. -UNDO Undo your last move; must be the first command on a line. -SAVE Save the game. -RESTORE Restore the game. -RESTART Restart the game. -QUIT Quit - - ---------------------- - CONFIGURATION FILES ---------------------- - The interpreter gets configuration information from as many as three -places: the global configuration file (containing things that you want -to apply to every game you play), the game-specific configuration -file (usually with an extension '.cfg'), and, in the case of AGX-format -games, the game file itself. - Options in the game-specific file override options specified from -the other two sources; options in the AGX file override those in the -global file. - - The following configuration options are supported on all platforms. -Other options may be supported on your particular system; see -appropriate platform-specific documentation for information. - Each option should be on a separate line in the configuration file. -Lines starting with '#' will be treated as comments and ignored. -Options can be negated by prefixing them with 'NO_' so that, for -example, DEBUG would become NO_DEBUG. - -General options: - VERBOSE Start the game in VERBOSE mode - DEBUG Allow the use of AGILDEBUG for pre-Master's games (For - Master's Edition games, this decision is based on the DEBUG - flag in the game file itself) - DEFAULT_ERRORS Cause AGiliTy to use its own internal defaults - for standard error messages even if the game file defines its own. - (Recommended for most Master's Edition games.) - PATH Gives a space-separated search path for AGT games. [Not supported - on all platforms.] - TONE Enables the *tone* action token, which allows games to make - annoying beeps on some platforms. The only game I might recommend - enabling this for is _CosmoServe_ which has some interesting - sound effects. Not all platforms support this command. - INPUT_BOLD Makes the input line bold. (This doesn't work on all platforms) - IBM_CHAR Try to use the IBM character set; don't translate them. - If your platform doesn't support the IBM character set, this is - likely to produce garbage. - NO_ERROR Supress GAME ERROR messages during play. Some poorly written - AGT games contain bad metacommands, out-of-range tokens, or other - problems; this option will supress the messages reporting these - sorts of problems. - SMART_DISAMBIG This turns on smart disambiguation. This works better - with some games than others. - EXPAND_ALL This turns on ALL and ALL EXCEPT expansion in the parser (by - default, expanding them is the responsibility of the individual - verb execution routines); see remarks on SMART_DISAMBIG: both of these - options use the same engine and so they are likely to work or fail - together. If you're using this, you'll probably also want to set - FIX_MULTINOUN. - IGNORE_SIZE Ignore weight and size limits on how much the player can - carry. (There remain limits on the size and weight of any - individual object.) - -Game specific options - (Many of these are more useful to game authors than game players.) - PROPER_CREATURE Treat all creature names as proper nouns. - (In particular, this will cause them to be capitalized and to - not have "the" appear in front of them.) Use of DEFAULT_ERRORS - is recommended with this option. - ROOMTITLE Print the room title in bold before the room description - in pre-Master's games. (Master's Edition games do this - automatically) - IRUN Print error messages in first person. This should be set for - _Cliff Diver_. - NO_BLOCK_HOSTILE Allow the player to leave a room containing a hostile - creature if they go back the way they came. - NO_GET_HOSTILE Prevents the player from picking up objects in a room - containing a hostile creature. (Intended to be used with - NO_BLOCK_HOSTILE) - NO_OBJECT_NOTES Turns off notes after object description, - such as '[providing light]'. - CONST_TIME Increment time at a constant rate instead of randomly. - SLASH_BOLD If set the slash character toggles bold on and off. - (This should be set automatically for 1.8x games, but you may still - need to set it explicitly for version 1.82 ) - PRONOUN_SUBS Do $you$-style substitutions even in game-author - defined messages. - ALT_ANY This scans the ANY metacommands *with* the - metacommands rather than before them. Should be set for - _Pyramids of Mars_ and not for any other games I know of. - CHECK_GRAMMAR Print out error messages if the player enters a verb - with too many objects. (For example, "N KEY"). - FORCE_LOAD Force AGX game to load even if interpreter isn't of the - right version. Don't use this unless you know what you're - doing: Magx doesn't assign minimum version numbers without - reason. - PURE_AFTER Causes LOOK and other end-of-turn actions to take place - after AFTER commands. (This is on by default for Master's - Edition games.) - FIXED_FONT - Force system to use a fixed-pitch font. - NO_FIXED_FONT - Allow the system to use proportional fonts. - -Technical options: These are fine tuning. - FIX_METAVERB Don't run ANY metacommands when executing a metaverb. - FIX_MULTINOUN Only advance one turn when manipulating multiple nouns, - rather than a turn for each noun. - PURE_ANSWER Require AND-connected answers to be in the right order. - (The Master's Edition documentation claims order doesn't - matter, but with the actual interpreters it does) - -Parse Options: These are all pretty technical. - PURE_DUMMY Allow dummy verbs to be run by typing "dummy_verb3" - PURE_SUBNAME Allow subroutines to be run by typing "subroutine3" - PURE_SYNONYM Treat synonyms exactly as nouns. - ADJ_NOUN Don't pick noun matches over adjective-only matches. - -------------------- - DEBUGGING OPTIONS -------------------- - With AGILDEBUG you can access various debugging commands. You can -move objects around; change the values of flags, variables and -counters; list objects in the game; examine and edit objects; and turn -metacommand tracing on or off. - - (Note: You can change almost all of the fields associated with -an object using the View/Edit Object option; be warned that many of -them are not SAVEd or RESTOREd since they can't be changed during -normal play. If you change one of these and then RESTORE or UNDO, it -will stay changed. Conversely, if you make a change, save, quit, and -restore, the changed value will not be preserved. The fields having -this behavior are marked.) - - When metacommand tracing is on, every metacommand that is run will -be displayed. You can turn off tracing of ANY metacommands and tracing -of metacommands during disambiguation (the latter is off by default). - - In addition, AGiliTy has a test mode which automatically reads a -log file from .LOG (or equivalent) and writes a script to - .SCR. In this mode, the random number generator is forced to -be non-random, allowing for automated testing of games. - To use this, you create a LOG file (either by hand, by using the -'-c' option, or by using LOG-- note that this log file needs to -include everything from the very beginning, including the key hit at -the end of the title screen, so if using the LOG command you'll need -to add a line or two at the beginning.) - Run AGiliTy in test mode once to get the script. Copy the script -to some other file. Then, whenever you make a change to your game -file, rerun AGiliTy and compare the new script with the old one. -(There are programs that will do this automatically and just print -out the lines that have changed.) - - ---------------- - AGT GAME LIST ---------------- - Here is a list of a few of the better or more popular AGT games, -along with their filename in ftp://ftp.ifarchive.org/if-archive/games/agt/; -it is in no way exhaustive. - I've also included references to reviews in issues of SPAG and -XYZZYnews; these can be found in if-archive/magazines/SPAG and -if-archive/magazines/XYZZYnews respectively. - - -Shades of Gray (soggy97.zip) by Mark Baker, Steve Bauman, Belisana - Magnificent, Mike Laskey, Judith Pintar, "Hercules", and Cindy Yans - Widely considered to be the best AGT game ever written. This is a - 'real life' game that is concerned more with the protagonist's - ideals and mental state than with "adventuring". You open the game - with amnesia and need to figure out who you are and recover your - memory. To say more would give too much away. It's a bit uneven (it - was written by a team of seven people) and it opens with an - arbitrary puzzle that's a potental show-stopper, but overall this is - an excellent game. - SPAG 2, 8; XYZZY 11(interview with one of the authors) - - -Cosmoserve (cosmos97.zip) Judith Pintar - Another strong AGT game. In it, you take the role of R.J. Wright, - free-lance programmer/plumber, who is trying to finish a program - that is due the next morning. You will need to log on to Cosmoserve - and interact with the other users in order to be able to do this. - It has a clever interface that really captures both the DOS - command-line and life online pre-GUI. This is, however, a game - you'll have to play through several times to win since it requires - tight timing to be in all of the right places at the right times. - SPAG 5; XYZZY 1, 11(interview with the author) - - -The Jeweled Arena (tja.zip) David S. Raley - This game is divided into four chapters; in each chapter you are - a different person (although the first and third chapters share the - same main character). Games like this often suffer from a lack of - unity; this game, however, holds together quite well. In part, this - is because all of the chapters take place in a single, large, - setting: the city of Kumeran. You can visit locations multiple times, as - different characters. Locations that are unimportant in one chapter - may be of great importance in a later chapter. In general, the world - has a lot of depth, from diaries of the main characters to newspaper - articles to books on law. On the other hand, it could have used some - more beta-testing. There are several guess-the-verb puzzles and a quite - a few bugs; most of the bugs are just amusing, but at least one (in - chapter 3) can cause the game to become silently unwinnable for no - obvious reason if you do a certain action in the wrong place. - - -Pastoral Pitfalls (pp20.zip) Guy Marquardt - In this game you are the pastor of a Lutheran church; you need to - make it through the day fufilling all of your responsibilities - (which include visiting the sick, teaching a confirmation class, - preparing a sermon, and still finding time to pray) I haven't - finished this game, but the parts I've seen I've liked. The game - seems to have been well tested; it's mostly free of guess-the-verb - problems and bugs. It feels very open; you have a lot of freedom - in what order to do things (although some care is needed so you don't - run out of time). - XYZZY 9(preview) - - -The Multi-Dimensional Thief (mdthief1.zip) Joel Finch - [Summary/review by Audrey De Lisle] - You are a thief desiring to become a member of the Thieves' Guild. - The test for this is to find the way out of the house. This seems - rather easy, but it's not. One feature is a visit to OZ; another - feat is done while quite small. The amazing machine is fun to use - and you must learn how to use it to get in an otherwise closed room. - You can order things from a catalog and part of the game is to - figure out which items you need. I would recommend this game to - those who like a little humor with their puzzles. - [There is also a non-AGT version of this game.] - SPAG 2, 4, 9 - -
-AGiliTy, notes for the Glk version ----------------------------------- - -(General information can be found in readme.agility) - - -Introduction ------------- - -This is a port of the AGiliTy interpreter to Glk. The complete interface -lives in the single file - - os_glk.c - -The main test and development system for the port is Linux, with Xglk as the -Glk library. - -Glk AGiliTy is configured to be as close as possible to the pure ANSI build. -This is because Glk is a cross-platform I/O library, so using pure ANSI gives -it the best chance of working on multiple Glk libraries. - - -Acknowledgments ---------------- - -Thanks to Robert Masenten, rcm-math@pacbell.net, for answering several queries -about porting AGiliTy to Glk, and for writing AGiliTy in the first place; Ben -Hines, bhines@alumni.ucsd.edu, for the Mac-specific portions of the Glk -porting code; and Andrew Plotkin,-, for Glk, and for -putting me straight on a couple of the finer points of Glk operation. - - -Running Games -------------- - -The interpreter understands both standard AGT game files and "AGX format" -(AGiliTy file format) game files. Standard AGT games are distributed as a -collection of files, with different extensions (".d$$", ".da1", ".da2" and so -on). AGiliTy games use the extension ".agx". - -Give the name of the game to run at the system prompt. For example, if the -game is held in files "cosmos.d$$", "cosmos.da1", and so on, use - - glkagil cosmos - -If several builds of Glk AGiliTy are available, linked with a selection of Glk -libraries, they will be named appropriately, for example xagil, termagil, and -cheapagil. - -The interpreter prefers that filename extensions be lower-case, that is, -".da1", ".da2", ".agx", and so on, rather than ".DA1", ".DA2", and ".AGX". If -you are unpacking AGT files from ZIP archives, you may need to use unzip's '-L' -option to make sure that filename are extracted correctly. - -Having said that, there's a minor GLK-specific patch in the core AGiliTy -interpreter (filename.c, for what it's worth) that retries a file with an -uppercase extension if the expected lowercase name is not found. That should -help with archives unpacked without the '-L' option. Running a game then -becomes - - glkagil COSMOS - -Glk AGiliTy takes a small liberty with the C runtime on exit. It might cause -some problems, such as a core dump or abort, when the program exits on an -error condition. If you find that this happens on your system, you can either -rebuild to avoid this, as described below, or set a value for the environment -variable GLKAGIL_CLEAN_EXIT. - -As well as standard AGiliTy command line options, there are a number of Glk -Agility specific command line options that you can specify, to vary the way -that the game looks: - - -gf Force Glk to use only a fixed width font - -gp Allow Glk to use only a proportional font - -ga Try to use a suitable Glk font automatically - -gd Delay for the full period in Glk - -gh Delay for approximately half the period in Glk - -gn Turn off all game delays in Glk - -gr Turn off Glk text replacement - -gx Turn off Glk abbreviation expansions - -gs Display a short status window in Glk - -gl Display an extended status window in Glk - -gc Turn off Glk command escapes in games - -gD Turn on Glk port module debug tracing - -g# Test for clean exit (Glk module debugging only) - -See below for further information about what these options mean. - - -Compiling ---------- - -To compile Glk AGiliTy for Linux, first unpack the source files. You might -need to use the -a argument to unzip in order to convert text files for your -system. - -Edit Makefile.glk so that it has the right path to the Glk library you wish to -build with. If you want to build the IFP plugin, also edit the parts of -Makefile.glk that have paths to IFP components. - -To build a standalone version of Glk AGiliTy, use - - make -f Makefile.glk glkagil - -To build the IFP plugin, use - - make -f Makefile.glk agility-1.1.1.so - -To clean up and delete everything in the case of a build error, use - - make -f Makefile.glk clean - -Glk AGiliTy contains a few non-ANSI/ISO artifacts that might cause problems on -non-Linux systems: - - Fdopen(), dup(), and file descriptors, used to open save and restore - files, are not portable. You can turn off these features by defining - GLK_ANSI_ONLY in Makefile.glk. - - At times the module may indirectly call exit() from within an - atexit() handler. This is "undefined" in ANSI. The Linux and SVR4 - C runtime libraries behave well, but if you find it causes problems - (for example, an occasional core dump or abort on exit) you can turn - it off by defining GLK_CLEAN_EXIT in Makefile.glk. - -See the comments in the source for Glk AGiliTy for more information on these, -and the information on "-g#" later on in this readme file for details on how -to check for problems with exit() and atexit(). - -For building on the Mac platform, Ben Hines has supplied a set of Code-Warrior -and application specific settings in a resource file, for use with the Mac Glk -library. You should find this file in the source distribution under the name - - os_glk_MacResFile.hqx - -The source of Glk AGiliTy has changed somewhat since Ben created this resource -file, so it may, or may not, currently be fully functional. - - -Configuration -------------- - -Glk AGiliTy opens no global configuration file, and takes no special -configuration options. - -If you need to set options that can't be set with AGiliTy command-line flags, -you'll need to create a special file called .cfg alongside the other AGT -game files, or edit any existing .cfg. Glk AGiliTy will find this file. - - -Status Lines ------------- - -Glk AGiliTy displays a status window at the top of its display, providing the -Glk library it is using supports separate windows. The status window can show -either one or two lines, for normal or extended status. - -The first line of status is the standard information printed by the core -interpreter or the game, normally the location, and the game score and/or time. -The second line shows a list of exits available, and if in a game delay, a -waiting indicator. - -You can use the "-gs" option to select a short status display, and "-gl" to -select an extended status display. - -Where the Glk library does not support separate windows, Glk AGiliTy will -print the status line in "[...]" brackets at the beginning of any game output, -but only when it has changed since the last game turn. It will also only -print the short status display; to get a list of exits, use the AGiliTy -"listexits" command. - - -Expanding Abbreviations ------------------------ - -Many IF games systems allow a player to use single character abbreviations for -selected common commands, for example, 'x' for 'examine', 'l' for look, and so -on. - -AGiliTy expands many of these in the same way, but it's not completely -consistent with other well-known systems. To try to help with this, Glk -AGiliTy will automatically expand a selection of single character commands, -before passing the expanded string to the game as input. It expands a command -only if the first word of the command is a single letter, and one of the -following: - - 'c' -> "close" 'g' -> "again" 'i' -> "inventory" - 'k' -> "attack" 'l' -> "look" 'p' -> "open" - 'q' -> "quit" 'r' -> "drop" 't' -> "take" - 'x' -> "examine" 'y' -> "yes" 'z' -> "wait" - -If you want to suppress abbreviation expansion, you can prefix your input with -a single quote character (like putting literal strings into a spreadsheet). -If you do this, the Glk interface will strip the quote, then pass the rest of -the string to the main interpreter without any more changes. So for example, - - 'x something - -will pass the string "x something" back to the game, whereas - - x something - -will pass "examine something" back to the game. - -You can turn off abbreviation expansions with the command line option '-gx'. - - -Game Text Output ----------------- - -AGT games generally presume they are running on fixed width font, 80x25 IBM PC -displays. They expect to have this screen width on many occasions, and use -spaces, IBM box-drawing and other code page 437 characters, and other DOS -'tricks' to achieve certain effects with output text, creating line breaks as -needed. - -In comparison, Glk's basic text model is that the output library should take -care of text formatting. It behaves best when using a proportional font, and -sticks rigidly to ISO-8859 Latin 1 character encoding which, while it has -international characters in it, does not have box drawing characters. - -This leads to somewhat of a mismatch of requirements and capabilities for the -Glk version of AGiliTy. While Glk will work with fixed width fonts, it does -not necessarily offer any form of attributes or color for such fonts, making -the output appear one-dimensional and lifeless. On the other hand, the -assumption in games and the interpreter is that the font is fixed width, and -the screen is 80 columns wide. - -To attempt to smooth over this, Glk AGiliTy will try to guess whether a chunk -of game output text needs to be displayed in a fixed width font, or if it will -look okay when rendered in a proportional one. This is akin to a form of -"screen scrape": Glk AGiliTy buffers all of the text that the game outputs, -then runs over it with a set of functions that try to re-paragraph the text, -identify any tables or other areas that are likely to be sensitive to font -width, and finally print it out through Glk in what is hopefully an improved -format. - -Doing this involves some guesswork on the part of Glk AGiliTy, but in testing, -it seems to work well enough. - -You can use the "-ga" option to let Glk AGiliTy automatically select what -appears to be a suitable font for output, "-gf" to force it to always use a -fixed width font, or "-gp" to force it to always use a proportional font (if -the Glk library has one). You can also control it while in a game using the -"glk fonts" command. - -Note that some games _do_ hint at the type of font they can be used with, -though most don't. A game may tell the interpreter - - 1) that a fixed width font is required, or - 2) that a proportional font is acceptable, or - 3) nothing - -In the third case, the interpreter does not know whether a proportional font -can be used, or not. The majority of AGT games seem to fall into the third -case, and the interpreter rarely knows the font requirements of a game. - -Any game which does tell the interpreter what font it can use will cause Glk -AGiliTy to use that font style on startup, and ignore any value set with the -"-g" command line option. You may still however alter the font control with -"glk fonts" while in a game. - -In Glk libraries that have only fixed width fonts (for example, Glkterm, for -ncurses), you will see much less difference in the display with the different -values for font control, but it may still be useful if the text mode display -differs widely from AGT's anticipated 80x25 dimension. - -Since many games rely on there being 80 columns of display width, Glk AGiliTy -also offers a command to query the current display width. The command to use -is - - glk width - -entered at the game's ">" prompt. This prints the approximate width of the -display window (actually, it prints the width of the status window, but -assuming the fonts in use in each window are approximately the same, the result -will usually be close enough). Some Glk libraries are not able to return a -window width. - -In general, where a game has a strong requirement for fixed width font text, -80 columns or more of display width will probably be fine. - - -Message Replacements --------------------- - -Because Glk AGiliTy buffers all game output, and scans the buffer for ways to -try to improve text formatting, it can also replace some of the standard -AGiliTy interpreter messages with ones that stand out a little better in a Glk -display. - -For example, games usually start up with a message something like: - - This game is being executed by - AGiliTy: The (Mostly) Universal AGT Interpreter version 1.1.1 - Copyright (C) 1996-99,2001 by Robert Masenten - Glk version - -Glk AGiliTy will replace this with more or less the same text, but using -heading and emphasized text. It handles only a few messages in this way, -typically LISTEXIT, VERBOSE, and BRIEF responses, game title pages, and the -AGiliTy information page header. - -To turn this feature off, use the '-gr' command line option. - - -Game Delays ------------ - -In AGT games that use delays, these delays can become tiresome. By default, -Glk AGiliTy will delay for approximately half the time that the game specifies. - -You can vary this behavior with command line options: use "-gd" to make all -delays full length; "-gh" to make all delays short, approximately half length; -and "-gn" to turn off delays altogether. You can also change the delay mode -with "glk delays" while in a game. - -When the game is delaying, Glk AGiliTy displays a "Waiting..." indicator on -the right hand side of the second line of any status window. - -You can cancel a game delay by pressing the space bar while the "Waiting..." -indicator is active. This will stop the delay immediately, and also suppress -any further delays the game requests until it issues the next input line -prompt or requests other keyboard input. - -A few games might not play correctly with delays turned off, so you should -take a little care with this option. For example, a game could clear the -screen, print a message, delay for a short time, clear the screen again, and -continue. With delays turned off, Glk AGiliTy will not get the chance to -display the message. - -Glk AGiliTy will not implement game delays if the Glk library does not support -timers. - - -Interpreting Commands Locally ------------------------------ - -Glk AGiliTy will handle special commands if they are prefixed with the string -'glk'. It understands the following special commands: - - help Prints help on Glk special commands - summary Prints all current Glk settings - version Prints the Glk library and Glk port version - numbers - license Prints the Glk port license - - script on Starts recording the game text output sent - to the main game window - script off Turns off game text recording - inputlog on Starts recording input lines typed by the - player - inputlog off Stops recording input lines - readlog on Reads an input log file as if it had been - typed by a player; reading stops automatic- - ally at the end of the file - abbreviations on Turn abbreviation expansion on - abbreviations off Turn abbreviation expansion off - glk fonts auto, or - glk fonts automatic Let Glk AGiliTy determine the appropriate - font for a paragraph automatically - glk fonts fixed Print all output in a fixed width font - glk fonts variable, or - glk fonts proportional Print all output in a proportional font - width Print the approximate display width; AGT - games may expect at least 80 characters - statusline extended Show a two line, extended status display - statusline short Show a single line, short status display - replacements on Replace selected interpreter paragraphs with - improved formatted alternatives - replacements off Don't replace selected interpreter paragraphs - delays full [or on] Make all delays full length - delays short [or half] Make all delays approximately half length - delays none [or off] Turns off delays altogether - commands off Turn of Glk special commands; once off, there - is no way to turn them back on - -You can abbreviate these commands, as long as the abbreviation you use is -unambiguous. - -If for some reason you need to pass the string "glk" to the interpreter, you -can, as with abbreviations above, prefix it with a single quote character. - -You can turn off local command handling with the command line option '-gc'. - -If both abbreviation expansion and local command handling are turned off, there -is no need to use single quotes to suppress special interpreter features. - - -Transcripts and Input Logs --------------------------- - -AGiliTy games can themselves set up transcripts and input logs. However, the -meta-verbs to set them up can occasionally conflict with commands in the game. -It may therefore be more convenient to use Glk commands to create these logs. - -Any Glk AGiliTy transcript or input log is in addition to those that may be -set up by the main AGiliTy interpreter, so although not wildly useful, it's -possible to create two transcripts and input logs at the same time. - - -Glk AGiliTy Debug Options -------------------------- - -The command line option "-gD" turns on debugging in the AGiliTy Glk I/O module. -The output is really only useful when debugging Glk AGiliTy. - -The command line option "-g#" tests for clean program exit. Glk AGiliTy takes -a couple of liberties with the ANSI rules for exit handler functions. For -most systems, these don't cause any problems, but for some they might. - -To test to see if your system is affected, run Glk AGiliTy with "-g#". The -program will exit straight away, and if it exits cleanly (no core dumps or -other ugly program termination), everything is fine. Otherwise, you should -either recompile with GLK_CLEAN_EXIT defined, or set environment variable -GLKAGIL_CLEAN_EXIT to "true". - - --- - -Simon Baldwin, simon_baldwin@yahoo.com -
-This software is copyright 1996-1999,2001 by Robert Masenten. - -This program is free software; you can redistribute it and/or modify -it under the terms of version 2 of the GNU General Public License, -as published by the Free Software Foundation. - - This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - - You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --
- - Welcome to the - ALAN ADVENTURE LANGUAGE - 3.0beta5 - 2015-06-23 - - -THE NEWS IN SHORT: - -Alan is a tool to create text adventure games, interactive fiction, -text-based simulations for teaching or other similar types of -interactive software. - -This is the third beta version (v3.0beta5) of Alan V3. Alan v3 -features many new enhancements especially object orientation. - -This package contains at least the compiler and the interpreter. It -might also, depending on the distribution package, include the manual, -the source for the Saviour game, a converter program which takes an -Alan v2 source file and outputs a V3 version of the same source, the -source and binary for a sample game. Read the particulars in the -readme for your platform. If it does not you can find most of that at -the Alan webspace: - - http://www.alanif.se - -The changes between versions is described in the file CHANGES, which -should also be included. - - - -THE LONG STORY: - -The Alan System is one of the most easy-to-use tools to create -interactive fiction, aka. adventure games. The Alan System is based on -a special purpose computer language designed to be easy to use for -people more interested in authoring and designing games. The system -consists of a compiler, which compiles Alan source to a compact and -portable form, and an interpreter that interprets such a form to allow -playing of the game. - -The Alan System is register-ware. To use Alan for authoring and -distributing your games all you need to do is to register. Registration -can be done with a simple email to thomas@alanif.se. - -Alan V3 has been evolving for a number of years and is now feature -complete. It is stable enough to use for production type work, but -will be released as a non-beta when enough beta test experience show -that it is mature enough. You can help! Report any problem and -suggestions. You can visit - - http://wwww.alanif.se - -to find out more about Alan V3. - -You can also find the legacy v2.8 version there. It should now be -considered completely obsolete and you should only look at it if are -looking to run some old game. Otherwise you should *really* look at -V3. Alan may also be found at - - http://www.ifarchive.org - -and its mirrors. - -For complete copying conditions refer to the file COPYING in the -distribution or the corresponding appendix in the manual. - -If you have any problems don't hesitate to contact the author at the -following email address: - - thomas@alanif.se - -Or join the Alan mailing list, which you can find at the Alan Home -Pages - - http://www.alanif.se - -All communication is welcome! Happy Authoring! - -Thomas Nilefalk -thomas@alanif.se --
-The Alan System is distributed under the Artistic License 2.0 for which the full text -follows. The intent of this licensing is that the Copyright Holder retain some -control over the development of the Alan System, while still keeping it available as open -source and free software. - -In practical terms this means that the licensing is choosen so that it should be possible to -- freely distribute games produced with the Alan system, including for profit -- re-distribute compiled versions of the Alan system, including together with a game which is - not open source or free, provided there is no charge for the Alan system -- redistribute compiled and/or source versions of the original Alan system (the Standard Version) -- aquire the source code for the Standard Version -- modify the source code for private use -- re-distribute compiled and/or source of a Modified Version provided they are done so under a - compatible license with appropriate attribution *and* that the modification is discribed and - made available, preferably by returning it to the Copyright Holder so that it can be merged - into the Standard Version --
-Version 0.2b, Treaty of Babel Revision 7 -This is the source code for babel, the Treaty of Babel analysis tool. - -Most of this code is (c) 2006 by L. Ross Raszewski - -The following files are public domain: -zcode.c -glulx.c -executable.c -level9.c -magscrolls.c -agt.c -hugo.c -advsys.c -misc.c -alan.c -adrift.c -treaty.h -treaty_builder.h - -The following files are Copyright (C) 1999, 2000, 2002 Aladdin Enterprises: -md5.c -md5.h - -And are used in accordance with their licenses. - -All other files are (c) 2006 by L. Ross Raszewski and are released under -the Creative Commons Attribution 2.5 License. - -To view a copy of this license, visit -http://creativecommons.org/licenses/by/2.5/ or send a letter to - -Creative Commons, -543 Howard Street, 5th Floor, -San Francisco, California, 94105, USA. --
-Bebek is a Java port of Campbell Wild's ADRIFT 5 Runner. - -Many thanks to Campbell for releasing the source code -of the Runner into the public domain in early 2018; it has -been my pleasure to port it to Java and I hope that Fabularium -users will enjoy playing their ADRIFT 5 games on Android devices. - -Bebek is still in beta. While it should be fairly stable now, I -have not made any serious attempts to optimise the code yet, so -expect it to run significantly slower than SCARE. - -Bug reports welcome: email tcowperapps@gmail.com. - - -- Tim Cadogan-Cowper, 2018 --
-Copyright 2018 Tim Cadogan-Cowper. - -Bebek is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License, version -2 or 3, as published by the Free Software Foundation. - -Bebek is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. --
-BOCFEL(6) BSD Games Manual BOCFEL(6) - -NAME - bocfel — Z-machine interpreter ⟨http://bocfel.org/⟩ - -SYNOPSIS - bocfel [-cCdDefgGhkmprstUxXyY] [-a eval_stack_size] [-A call_stack_size] - [-E escape_string] [-l username] [-n number] [-N version] - [-R replay_filename] [-S record_filename] [-T transcript_filename] - [-u slots] [-z seed] [-Z device] file - bocfel -i file - bocfel -v - -DESCRIPTION - bocfel is a Z-machine interpreter. It fully supports versions 1-5, 7, - and 8 of the Z-machine, with extremely limited support for version 6. It - can read stories stored in Blorb files, but has no support for associated - graphics, if any exist. - - The following options are available: - - -a eval_stack_size - The Z-machine contains an evaluation stack which games use as a - sort of scratch space when performing calculations. By default - the size of this stack is set at 16384, which should be suffi‐ - cient for any game. The entire stack is allocated at once, so if - you are on a system with a small amount of memory, setting this - to a smaller value will cause less memory to be allocated. - - The maximum value is limited only by system memory. Each evalua‐ - tion stack entry takes two bytes. If you ever encounter a “stack - overflow” message with the default size, please let me know. - - -A call_stack_size - The Z-machine allows games to call routines in order to get work - done; these routines can call other routines, and so on. Infor‐ - mation about these routines is placed onto the call stack, which - by default has a size of 1024. This means that no more than 1024 - routines can be active at any single time. This value should be - much more than sufficient for any game. As with the evaluation - stack, memory for the call stack is allocated at one time, so - machines with small amounts of memory can reduce this value to - reduce memory consumption. - - The maximum value allowable by the Z-machine is 65535. Each call - stack entry takes between 40 and 50 bytes. - - -c If the Glk implementation being used is Gargoyle, or if Glk is - not being used at all, support for colors is provided. This - option disables color support entirely. - - -C Do not read the configuration file $HOME/.bocfelrc. Settings in - the configuration file take precedence over those specified on - the command line, so if you want to override the configuration - file, use this option. - - -d Many Glk implementations allow timed input as used by games such - as Border Zone. This option disables timed input and informs - games that timed input is not available. - - -D If Gargoyle is being used, sound effects are supported. This - option disables sound effects and informs games that sound - effects are not available. - - -e Turn on ANSI escapes in the transcript. If this option is - enabled, all user input in the transcript can be decorated with - ANSI escape sequences so it stands out. See the -E option. - - -E escape_string - If the -e option is used, this sets the escape string that will - be used when highlighting user input in the transcript. ^[[ is - written, then escape_string, then ^[[0m. By default “1m” is used - as the escape string, providing bold text. - - -f Many Glk implementations allow a fixed-width font to be selected. - This option disables fixed-width fonts and informs games that - fixed-width fonts are not available. The game might still be dis‐ - played using a fixed-width font (e.g. if you are playing in a - terminal), but the game has no way of knowing this. - - -F Glk does not allow the mixing of text styles, so it is not possi‐ - ble to request, for example, both fixed-width and reverse video. - If both styles are requested, fixed-width takes precedence. How‐ - ever, if bocfel is being run in a terminal (with, for example, - the glktermw Glk implementation), the font will be fixed at all - times. The -F flag tells bocfel to assume that the current font - is always fixed, allowing other styles to be applied simultane‐ - ously. See the puzzle pieces in Graham Nelson's Jigsaw for an - example of how this can be useful. - - See also the STYLES section. Note that Gargoyle does allow the - mixing of styles, so this option does nothing under Gargoyle. - - -g Disable the character graphics font. See the CHARACTER GRAPHICS - FONT section below. - - -G Select an alternative style of box drawing characters. - - Most characters in the graphics font map fairly well to Unicode - equivalents, but a few box drawing characters do not. Two meth‐ - ods for drawing the missing characters are provided, each with - pros and cons. A description of the differences is not suffi‐ - cient, so it is recommended that you try Beyond Zork both with - and without this option, paying attention to the map connections. - See also the CHARACTER GRAPHICS FONT section below. - - -h Display a short help message then exit. - - -i Print out the ID of the specified game and exit. This ID is used - to uniquely identify a game and is adapted from the Treaty of - Babel standard. Game IDs can be used in the configuration file - to set options for specific games. See the CONFIGURATION FILE - section for more information. - - -k The Z-machine has a concept of “terminating keys”. When enabled, - these keys, in addition to Enter, terminate input immedately. - Beyond Zork, for example, uses this so that F1 automatically exe‐ - cutes “look around”, F2 does “inventory”, and so on. However, - Beyond Zork also claims the up arrow, which means that history - browsing, in Glk implementations that support it, might not be - able to be initiated with the up arrow. This option disables the - use of terminating keys. Note that not all Glk implementations - support terminating keys. - - -l username - Set the username by writing up to 8 bytes to the location 0x38 in - the story file. This is not officially part of the Z-machine, but - is at least used by Hollywood Hijinx, where a username starting - with either “DA” or “TOMAS” enables the debugging command “flush - 33” which moves you to a junction room which leads to various - other locations, allowing puzzles to be bypassed. - - -m Disable meta commands. See META COMMANDS below for more informa‐ - tion. - - -n number - Z-machine interpreters are able to inform games what platform - they are running on by setting an interpreter number in the range - 1 to 11. The following are the valid values (taken from Graham - Nelson's Z-Machine Standards Document 1.0): - - 1. DECSystem-20 - 2. Apple IIe - 3. Macintosh - 4. Amiga - 5. Atari ST - 6. IBM PC - 7. Commodore 128 - 8. Commodore 64 - 9. Apple IIc - 10. Apple IIgs - 11. Tandy Color - - By and large this value is meaningless. Some Infocom games do - make small use of this information: Trinity, for example, has a - “print emphasized” routine that is used to print emphasized - (which generally means italicized) text; on any machine but the - Atari, however, this routine makes sure not to print punctuation - in italics. Beyond Zork makes what is probably the most visible - use of the interpreter number, using it to decide how to deal - with character graphics. See section 16 of the Z-Machine - Standards Document 1.0 for more information. By default, the - interpreter version is set to 1 becuase this causes Beyond Zork - to prompt the user about the machine he is using, allowing him to - select whether or not character graphics are used. - - I do not recommend setting this to 11. At least Beyond Zork - assumes that the largest it will be is 10, and setting it to 11 - can cause an out-of-bounds memory access. The instance I have - seen of this is not fatal, but there may be other instances that - are. - - -N version - Even more meaningless than the interpreter number is the inter‐ - preter version. This, as far as has been determined, is never - used except when the user asks a game to either report its ver‐ - sion or to verify its disk image. In these cases, the version is - simply printed out, nothing more. This is a single character and - there is no real reason to change it. The default is C. - - -p bocfel includes patches to work around some known bugs in games. - This flag disables such patches. - - -r Play back a command record (see -s) as soon as the game begins. - Some games provide a way to play back a record (typically through - the REPLAY verb in Inform-based games, and #comm in some Infocom - games), but this option is useful to start playback before you - have an opportunity to call REPLAY, or if the game provides no - way to play back such a record. - - Command records must be UTF-8. - - See also the META COMMANDS section. - - -R replay_filename - When command-record playback is enabled, you will be prompted for - a filename. This prompt can be bypassed by providing a filename - here. - - -s Turn on command recording. This records every keystroke the - player makes, and (hopefully) creates a record that is suitable - for playback either by using -r or through a game command. Some - games provide this functionality themselves (typically through - the RECORDING verb in Inform-based games, and #reco in some Info‐ - com games), but this option is useful to start recording before - you have an opportunity to call RECORDING, or if the game pro‐ - vides no way to start such a record. - - Command records are always written in UTF-8. - - See also the META COMMANDS section. - - -S record_filename - When command recording is enabled, you will be prompted for a - filename. This prompt can be bypassed by providing a filename - here. - - -t Turn on transcripting. This records both the output of the game - and user input. If the chosen transcript file exists, it will be - appended to, not overwritten. This way you can easily continue a - transcript every time you come back to a game. - - Transcripts are always written in UTF-8. - - See also the -y option and the META COMMANDS section. - - -T transcript_filename - When transcripting is enabled, you will be prompted for a file‐ - name. This prompt can be bypassed by providing a filename here. - - -u slots - Some games provide the ability to undo a turn. In fact, some - games allow multiple turns to be undone. This option controls how - many save slots are available. Unlike the stacks (see -a and -A), - save slots are dynamic, meaning that unless a game provides sup‐ - port for undo, no memory will be used. However, games that do - support undo will typically take a snapshot each turn, causing - memory to be allocated. The size of each snapshot depends on the - game and the current state of play. Memory usage is minimized as - much as possible: at the beginning of Anchorhead, for example, - each slot takes up roughly 900 bytes. As the game progresses, - though, the size of a save slot inevitably will increase: near - the end of Anchorhead, my save slots were taking up roughly 4500 - bytes. - - Note that Inform-based games (at least by default) do not support - multiple undo; two non-V6 Infocom games, to my knowledge, do: - Sherlock and Beyond Zork. However, bocfel includes the ability - to perform multiple undo regardless of whether the game provides - support for it. See the META COMMANDS section for more informa‐ - tion. - - The default value is 100. A value of zero disables undo, and a - negative value provides unlimited undo. This is probably a bad - idea. - - -U One of the ways that undo slots (see -u) save memory is to use - compression. On modern machines the compression time is minuscule - and not noticeable. On slower systems, however, it is possible - that the compression will be noticeable. This option disables - compression, but be aware that without compression, the size - really balloons: save slots in Anchorhead, with compression, take - up about 900 bytes on game startup. Without compression they - take up over 40000 bytes. - - -v Display version information and show which compile-time options - are set. - - -x Many games include abbreviations for commonly-used commands: x - for EXAMINE, g for AGAIN, z for WAIT, and o for OOPS. Some early - Infocom games, however, do not provide these. For these Infocom - games, x, g, z, and o are mapped to their respective commands, - providing convenient shortcuts for games that don't provide them. - If a game requires one of these letters for its own use, these - abbreviations can be turned off with -x. - - -X The Tandy corporation licensed some Infocom games, but apparently - The Witness was too scary for them, so some words were changed so - as not to offend their ridiculously delicate sensibilities. If - you want to laugh at Tandy's insecurities, this flag will turn on - their censorship. In addition to the mangling of The Witness, a - few other games unnecessarily add mention of Tandy in the output - of the VERSION command. - - -y When transcripting is turned on and an existing file is selected, - that file is appended to rather than overwritten. This option - causes the file to be overwritten. - - -Y In almost all games, either the game's UNDO command or the /undo - meta command will work. However, if you encounter a game where - undo appears broken, try using this option. It will instruct - bocfel to ignore the game's undo code, instead using only its own - undo handling. This might work if the game's undo handling is - subpar, either by design or by accident. Note that if this - option is active, /undo must be used instead of the game's UNDO - command. - - -z seed - Provide a seed to the pseudo-random number generator, causing it - to yield predictable values. This option is probably only of use - to game authors who are doing testing. - - -Z device - Provide a device from which a seed for the pseudo-random number - generator is read. This is meant to be used with special files - such as /dev/urandom, although it can be used with any file from - which at least 32 bits can be read. The -z option overrides this - option. - -CONFIGURATION FILE - bocfel allows to you control its behavior through a configuration file. - This obviates the need to provide command-line arguments each time you - start a game, as well as allowing customization based on which game is - being played. - - The configuration file is located in $HOME/.bocfelrc, and a general out‐ - line is as follows: - - enable_escape = 1 - disable_color = 1 - - [1-990831-d8b4] - disable_color = 0 - - [57-871221] - int_number = 1 - - The first lines are general, and apply to all games. The bracketed lines - start a new group based on the ID contained in the brackets (see the -i - option). Thus disable_color is set to zero only for 1-990831-d8b4, and - int_number is set to 1 only for 57-871221. Comments begin with a # and - continue to the end of the line. Trailing whitespace is ignored. - - The following are all the possible options, which are hopefully - self-explanatory: - - eval_stack_size (n) - call_stack_size (n) - disable_color (b) - disable_timed (b) - enable_escape (b) - escape_string (s) - disable_fixed (b) - assume_fixed (b) - disable_graphics_font (b) - enable_alt_graphics (b) - disable_term_keys (b) - username (s) - disable_meta_commands (b) - max_saves (n) - disable_undo_compression (b) - int_number (n) - int_version (c) - disable_patches (b) - replay_on (b) - replay_name (s) - record_on (b) - record_name (s) - transcript_on (b) - transcript_name (s) - disable_abbreviations (b) - enable_censorship (b) - overwrite_transcript (b) - override_undo (b) - random_seed (n) - random_device (s) - - The parenthesized character describes the type of argument: b is a bool‐ - ean (1 is true, 0 is false), c is a character, n is a number, and s is a - string. These all correspond to possible command-line arguments. - - In addition to analogs to the command-line arguments, there are a couple - of other options that can be set through the configuration file. One is - “cheat”: see the CHEATING section below. The other is fine-grained con‐ - trol over colors in Gargoyle; this does not apply to any other build - types. - - At the most basic, there are 8 colors that the Z-machine can use, corre‐ - sponding to ANSI colors: black, red, green, yellow, blue, magenta, cyan, - and white. The syntax for setting these is: - - color_red = 0xc23621 - - The color is specified as a 24-bit RGB value, 8 bits per color. The - above is thus 0xc2 red, 0x36 green, and 0x21 blue. The value must be - specified in hexadecimal, with an optional leading 0x. - -STYLES - The Z-machine allows for different text styles to be selected: these are - emphasized (typically italicized or underlined), bold, and reverse video. - In addition, a fixed-width font can be selected. Glk does not guarantee - the appearance of styles; it only allows you to select from a list of - uses, rather than appearances. The following Glk styles are how bocfel - maps the Z-machine's text styles: - - Italic (or emphasized) uses the Emphasized style. Bold uses the Sub‐ - header style. Reverse video uses the Alert style. Fixed-width uses the - Preformatted style. - - These were chosen because they map appropriately in the glktermw Glk - implementation. If your Glk implementation does not render these styles - in a manner you like, consult its documentation to see if it is possible - to change the appearance of the various Glk styles. - - Gargoyle, although a Glk implementation, does not have these issues. The - combination of styles is possible, and the appearance of styles can be - guaranteed. - -CHARACTER GRAPHICS FONT - Beyond Zork can make use of a character graphics font. This font is used - for drawing the interactive map, arrows, and runes. Most of the runes and - arrows have Unicode equivalents and can be displayed if you have a font - that contains these characters. Unicode also includes box-drawing charac‐ - ters which can be used to approximate the map in Beyond Zork. These are - not perfect, but they are not terrible. - - The -g option disables the character graphics font, but unfortunately the - ability to tell a game that a particular font is unavailable postdates - Infocom, so this flag will not prevent Beyond Zork from trying to use it. - Instead, Beyond Zork makes use of the interpreter number (see -n) to - decide whether to use character graphics. If you are using a font that - does not provide the necessary Unicode characters, you will want to run - Beyond Zork without the character graphics font. This is easily accom‐ - plished by answering “No” when the game asks you if you are using a - VT-220 (this only happens when the interpreter number is set to 1, which - is the default). - - If the character font is disabled with -g and a game tries to use it any‐ - way (as is the case with Beyond Zork), the output will appear garbled, - but only for that font. Anything the game prints out in a normal font - will look fine. - - See section 16 of the Z-Machine Standards Document 1.0 for more informa‐ - tion. - -META COMMANDS - bocfel includes support for “meta commands”, which are commands inter‐ - preted by bocfel itself instead of the game. These are introduced with a - slash (‘/’), chosen in an attempt to not clash with game commands. These - meta commands can be entered at any point the game requests user input, - e.g. on each turn. They are as follows, and are case sensitive: - - /undo Undo a turn. This is similar to the UNDO command some - games provide, but has two distinct advantages: it - works even in games that do not provide undo, and it - provides multiple undo even in games which do not sup‐ - port multiple undo. - - /scripton Start a transcript. - - /scriptoff Stop a transcript. - - /recon Start a command record. - - /recoff Stop a command record. - - /replay Replay a command record. - - /save Save the game. This creates save files that are incom‐ - patible with those created by SAVE, so they should only - be restored with /restore. bocfel has built-in protec‐ - tion to prevent a file saved with a normal SAVE command - from being confused with one saved by /save, and vice - versa. - - Because it creates non-standard save files, this com‐ - mand should be avoided unless it is absoulutely neces‐ - sary, e.g. if the game has disabled saving. It was - added to bocfel solely for the case of such anti-social - games. - - /restore Restore a game saved by /save. Do not attempt to use - /restore to restore games saved with a normal SAVE com‐ - mand. - - /ps Push a save state onto the in-memory stack. - - This is meant to serve as an alternative to on-disk - save files for when you are trying something dangerous - in a game. In such a case, there is generally no need - for a save file to be stored on the disk because the - save state is not meant to be persistent: it only needs - to last long enough to be restored in the same session. - - Because a stack is used, /ps can be used multiple - times, allowing you to jump backward as many times as - there are states. The maximum number of states stored - is 25. Once this number of states is reached, each new - state causes the oldest state to be dropped. - - /ps [description] - Identical to /ps, except that when the save state is - displayed by /ls, the supplied description is shown - rather than the time of the save. - - Please note that at the current time, any characters - which are not printable ASCII characters will be - replaced with a question mark. - - /pop Restore the last-stored in-memory save state, as cre‐ - ated by /ps, removing it from the stack. - - /pop [slot] - Restore the specified in-memory save slot. [slot] must - correspond to one of the slot numbers shown by /ls. - The specified save, as well as any newer saves, will be - removed from the stack. - - /drop Drop the last-stored in-memory save state, as created - by /ps, removing it from the stack. - - /drop [slot] - Drop the specified in-memory save slot. [slot] must - correspond to one of the slot numbers shown by /ls. - The specified save, as well as any newer saves, will be - removed from the stack. - - /drop all Drop all in-memory save slots, removing them from the - stack. - - /ls List all available in-memory save states. Each state - is shown either as a string representing the time when - the state was saved, or, if it was supplied, the - description passed to /ps. The last-listed state, - which is marked with an asterisk, is the default state - which will be restored with /pop. - - /status Display the status line. This only works for V1, V2, - and V3 games, and is meant to be used either in non-Glk - mode, or if the Glk implementation being used does not - support windows (e.g. cheapglk). - - /disable Disable meta commands for the remainder of the session. - This is useful if the game itself expects input to - start with a slash character. - - /say [command] - Pretend like [command] was typed. As with /disable, - this is meant for games which expect input to start - with a slash character. - - /debug [...] - Perform a debugging operation; see META DEBUG COMMANDS. - - Please note that /save and /restore are experimental. - - Mixing in-memory saves with undo can have odd effects. For example, if a - save state is pushed, and undo is then called multiple times, returning - to a point which occurred before the /ps call, popping the save state - will still jump to the /ps save position, effectively cancelling the undo - calls. The undo states will not be recreated. Similarly, if undo is - called right after /pop, it will succeed, but will not undo the /pop - call. Instead, the effect is the same as if undo had been called on the - turn before /pop was called. This is because meta commands are not con‐ - sidered game commands and thus do not cause undo states to be stored. - -META DEBUG COMMANDS - The /debug command starts a debugging operation. For some debugging - operations, an address is expected. This is either an absolute address, - specified in hexadecimal with an optional leading 0x, or it is a global - variable. Global variables have the syntax Gxx, where xx is a hexadeci‐ - mal value in the range [00, ef], corresponding to global variables 0 to - 239. - - The debug commands are as follows: - - change start - Begin a “change” operation. This tracks word-sized - memory addresses, allowing you to see if the values at - any addresses have increased or decreased since the - last check. This is primarily useful for cheating (see - CHEATING), helping, for example, to determine which - memory address is used to track hunger or thirst. - - change dec Display a list of all memory addresses which have - decreased since the last change operation (either a - change start, change inc, or change dec. Values are - treated as signed words, so a change from 0 to 65535 is - considered a decrease from 0 to -1. - - change inc Display a list of all memory addresses which have - decreased since the last change operation. - - scan start Begin a “scan” operation. This tracks word-sized mem‐ - ory addresses, checking if particular addresses have - specific values over time. As with “change” opera‐ - tions, this is useful mainly for cheating. An example - would be tracking which memory address holds the amount - of money being carried. If you have $50, you can scan - all addresses for the value 50. After spending $5, - scan all addresses for 45. Repeat until only one - address matches and that is likely where the money - count is being stored. - - scan [N] Scan all memory addresses for the value N, which is a - signed decimal integer (hexadecimal if a leading 0x is - used, octal if a leading 0 is used). The total number - of matching addresses (constrained by previous scan - operations) is then printed. - - scan show Display all addresses matching all previous scan crite‐ - ria. This is a separate operation because initial - scans will potentially match thousands of addresses. - - print [address] - Print the word (as both signed decimal and unsigned - hexadecimal) at address. - - freeze [address] [value] - Freeze a 16-bit value in memory; this is analogous to - the freeze configuration variable (see CHEATING). - address is the address to freeze, and value is the - value it should be frozen to. value can be decimal, - hexadecimal, or octal, with a leading 0x signifying - hexadecimal and a leading 0 signifying octal. - - Please note that it is possible for bocfel to be built - without cheating support, so this and related commands - might not work. - - unfreeze [address] - Unfreeze the 16-bit value which is frozen at address; - the address is parsed identically as for freeze. It is - not an error to unfreeze an unfrozen value. - - show_freeze - Display all frozen values. - - watch [address] - Report any changes to the 16-bit word at address. - - Please note that it is possible for bocfel to be built - without watch support, so this and related commands - might not work. - - watch all Watch every address for changes. This will likely pro‐ - duce a lot of output. - - unwatch [address] - Stop watching address for changes. It is not an error - to stop watching an address which is not being watched. - - unwatch all - Stop watching all addresses which are currently being - watched. - - show_watch Display all watched-for values. - -SOUND EFFECTS - Currently, sound effects are only available when Gargoyle is used as the - Glk implementation. The sound effects should be bundled in a Blorb file. - If the story file itself is stored in a Blorb file, that file is used to - find the sound effects. Otherwise, a separate Blorb file must exist and - be named as follows: if the story file is /foo/bar/sherlock.z5, then the - Blorb file must be /foo/bar/sherlock.blb. Sound effect support is exper‐ - imental and does not currently conform fully to the Z-machine standard. - Bleeps are not supported, nor is section 9.4.4, nor is the hack regarding - The Lurking Horror mentioned in the Remarks section. - -CHEATING - There is extremely rudimentary support for “cheating”. bocfel is able to - freeze certain areas of memory so that they always report the same value. - The idea behind this is to prevent hunger and thirst counters from forc‐ - ing you to eat and drink. - - Cheating is available through the configuration file as well as through - meta debug commands (see META DEBUG COMMANDS for information on using - meta debug commands to cheat). - - When the configuration file is used, cheats are treated like any other - configuration variable. The syntax is as follows: freeze:address:value. - - This causes the word (an unsigned 16-bit value) at address address to - always contain the value value; value can be decimal, hexadecimal, or - octal, with a leading 0x signifying hexadecimal and a leading 0 signify‐ - ing octal. - - Example: - - cheat = freeze:0xabcd:0 - cheat = freeze:G00:0 - - Visit http://bocfel.org/cheats/ for a list of a few cheats for some Info‐ - com games. More cheats are potentially discoverable using meta debug - commands (see the META DEBUG COMMANDS section). A more detailed explana‐ - tion of how to figure out cheats is beyond the scope of this document. - - Please note that it is possible for bocfel to be built without support - for cheating, in which case these cheats will silently do nothing. The - -v option can be used to determine whether this is the case. - -SEE ALSO - iconv(1), fizmo(6), frotz(6), nitfol(6) - -STANDARDS - bocfel is believed to comply fully with version 1.1 of The Z-machine - Standards Document; see - http://www.inform-fiction.org/zmachine/standards/z1point0/index.html - and .: - http://ifarchive.org/if-archive/infocom/interpreters/specification/ZSpec11.txt - -AUTHORS - Chris Spiegel-- -BSD December 6, 2017 BSD -
-Copyright 2010-2012 Chris Spiegel. - -Bocfel is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License, version -2 or 3, as published by the Free Software Foundation. - -Bocfel is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. --
-The Gargoyle Glk library is copyright 2009 Tor Andersson. It is released under the terms of the GNU General Public License. --
-Git is an interpreter for the Glulx virtual machine. Its homepage is here: - -http://ifarchive.org/indexes/if-archiveXprogrammingXglulxXinterpretersXgit.html - -Git's main goal in life is to be fast. It's about five times faster than Glulxe, -and about twice as fast as Frotz (using the same Inform source compiled for the -Z-machine). It also tries to be reasonably careful with memory: it's possible to -trade speed off against memory by changing the sizes of Git's internal buffers. - -I wrote Git because I want people to be able to write huge games or try out -complicated algorithms without worrying about how fast their games are going to -run. I want to play City of Secrets on a Palm without having to wait ten seconds -between each prompt. - -Have fun, and let me know what you think! - - Iain Merrick (Original author) - iain@diden.net - - David Kinder (Current maintainer) - davidk@davidkinder.co.uk - --------------------------------------------------------------------------------- - -* Credits - -Andrew Plotkin invented Glulx, so obviously Git wouldn't exist without him. I -also reused some code from his Glulxe interpreter (glkop.c and search.c), which -saved me a lot of time and let me concentrate on the more interesting stuff. - -Many thanks are due to John Cater, who not only persuaded me to use source -control, but let me use his own CVS server. John also provided lots of useful -advice and encouragement, as did Sean Barrett. - -Thanks also to Joe Mason, Adam Thornton, Simon Baldwin and Joonas Pihlaja who -were among the first to try it out and complain that it wasn't working. Joonas -also gets special brownie points for trying out more bizarre boundary cases than -I realised existed in the first place. - -Tor Andersson was apparently the first person to use setmemsize, since he also -explained why it didn't work and contributed a fix. Thanks, Tor! - -David Kinder has done a stellar job of maintaining the code recently. Thanks -also to Eliuk Blau for tracking down bugs in the memory management opcodes. - --------------------------------------------------------------------------------- - -* Version History - -1.3.4 2015-06-13 Performance improvements from Peter De Wachter, which give - approximately a 15% speed increase. - -1.3.3 2014-03-15 Added acceleration functions 8 through 13, which work - correctly when the Inform 6 compiler setting NUM_ATTR_BYTES - is changed, contributed by Andrew Plotkin. - -1.3.2 2013-03-26 A further fix to glkop.c, following the similar fix added to - Glulxe 0.5.1. - Increased the default undo buffer size in all ports to 2Mb. - -1.3.1 2012-11-09 Further fixes to glkop.c, following similar fixes added to - Glulxe 0.5.0. - -1.3.0 2011-12-16 Fixed a bug in glkop.c dispatching, to do with arrays - of opaque objects, following a similar fix in Glulxe. - Fixed a problem with the memory heap not being sorted - correctly on restore, contributed by Brady Garvin. - -1.2.9 2011-08-28 Fixed a bug in glkop.c dispatching, to do with optional - array arguments, following a similar fix in Glulxe. - Glk array and string operations are now checked for memory - overflows (though not for ROM writing), following a similar - fix in Glulxe. - -1.2.8 2010-08-25 Fixed a problem with 'undo' when compiled as 64 bit, - contributed by Ben Cressey. - Fixed a sign problem for the @fceil opcode, following a - similar fix in Glulxe. - -1.2.7 2010-08-20 Floating point opcode support (VM spec 3.1.2). - Restart does not now discard undo information, so that a - restart can be undone. - -1.2.6 2010-02-09 Imported fix for retained Glk array handling from Glulxe. - -1.2.5 2009-11-21 Fixes for problems shown by Andrew Plotkin's glulxercise test - cases, from David Kinder. - -1.2.4 2009-04-02 More David Kinder! Accelerated opcode support (VM spec 3.1.1). - -1.2.3 2009-02-22 David Kinder and Eliuk Blau fixed some memory management bugs. - Added a regression test (thanks to Emily Short for assistance) - Switched to MIT-style license (see above). - -1.2.2 2009-01-21 malloc & mfree contributed by the most excellent David Kinder. - -1.2.1 2008-09-14 Support for 64-bit machines, contributed by Alexander Beels. - Fix for crashing bug in RESTORE, contributed by David Kinder. - Non-Unicode display bug fix, contributed by Jeremy Bernstein. - -1.2 2008-01-06 Minor version increment for VM spec 3.1. - Implemented mzero and mcopy, but not malloc and mfree (yet). - -1.1.3 2006-10-04 Fixed a bug in the cache logic that broke the game Floatpoint. - Added some other caching tweaks and put in a few more asserts. - -1.1.2 2006-08-22 streamnum in filter I/O mode no longer prints a garbage char. - Merged in David Kinder's updated Windows startup code. - -1.1.1 2006-08-17 Wow, over a year since the last update. - Rolled in Tor Andersson's fix for setmemsize. - -1.1 2004-12-22 Minor version increment because we now implement VM spec 3.0. - Implemented new Unicode opcodes and string types. - -1.0.6 2004-12-10 Random number generator now handles random(0) correctly. - Code cache now tracks the number of function calls properly. - Fixed a bug that could hang the terp when the cache filled up. - -1.0.5 2004-05-31 Random number generator is now initialised properly. - Some source files had Mac line-endings, now fixed. - Version number is now set in the Makefile, not in git.h. - Merged David Kinder's Windows Git code into main distribution. - -1.0.4 2004-03-13 Fixed a silly bug in direct threading mode that broke stkroll. - Memory access bounds checking has been tightened up slightly. - aload and astore now work correctly with negative offsets. - Rewrote the shift opcodes a bit more defensively. - Implemented the "verify" opcode. - Code in RAM is no longer cached by default. - Adding some special opcodes to control the code cache. - Bad instructions are now caught in the terp, not the compiler. - Now passes all of Joonas' indirect string decoding tests. - -1.0.3 2004-01-22 No longer hangs when using streamnum in the "filter" I/O mode. - setstringtbl opcode now works correctly. - -1.0.2 2003-10-25 Stupid bug in 1.0.1 -- gitWithStream() was broken and wasn't - able to load Blorb files. Now it's *really* fixed. - -1.0.1 2003-10-23 Fixed a bug where strings were printed as "[string]" - Fixed a bug in tailcall - Implemented setmemsize - Implemented protect - Moved git_init_dispatch() call out of startup code, into git.c - Added divide-by-zero check - Compiler now stops when it finds a 'quit' or 'restart' - Added gitWithStream() as a workaround for xglk - -1.0 2003-10-18 First public release --
-(MIT LICENCE) -Copyright (c) 2003 Iain Merrick - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --
-The MIT License - -Copyright (c) 1999-2016, Andrew Plotkin - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. --
-NOTES ON GLK HUGO ------------------ - -This is a port of Hugo to Glk, the multi-platform interface layer designed -by Andrew Plotkin, which enables Hugo to run on platforms to which it has -not been directly ported. - -Because Glk does not itself support all of Hugo's features, the limitations -of Glk Hugo on various platforms may include any or all of: - - - No graphics display - - No sound or music - - No colored text - - No arbitrary window positioning - - Main display limited to a proportional font - - Windows limited to fixed-fonts - -However, most Hugo games should work, since Glk Hugo makes every attempt to -gracefully work around these features even if they are used. - -ADDITIONAL NOTES: - -- With mouse-based versions of Glk, it may be possible to change the window -focus by clicking in a different window. If you are unable to type a -command when Glk Hugo seems to be waiting for one, try clicking on the input -window to restore focus. - - ------ -Kent Tessman -January 23, 1999 --
-HUGO LICENSE - December 19, 2003 --------------------------------- - -Copyright (c) 2003 by Kent Tessman -The General Coffee Company Film Productions - - -1. Definitions - -"Copyright Holder" refers to Kent Tessman. - -"End User" refers to a user of the Software. - -"End User Program" refers to a computer program created by an End -User, written using the Hugo Programming Language and compiled using -the Hugo Compiler. - -"Hugo" refers to the Hugo Interactive Fiction Development System, created -by the Copyright Holder. - -"Hugo Programming Language" refers to the Hugo programming language and -its characteristic syntax. - -"Hugo Source Code" refers to the human-readable source code of the -Software. - -"License" refers to this license. - -"Software" refers to the Hugo Compiler, the Hugo Engine, the Hugo -Debugger, the Hugo Library, and any other related programs or files. - - -2. Ownership and Grant of Rights - -2.1 Hugo is the property of the Copyright Holder. The Copyright Holder -retains its copyright in the Software, without limitation. - -2.2 The Copyright Holder grants to the End User the right to use the -Software solely for the purposes of: - - (a) running programs created with the Software; and - - (b) creating End User Programs. - -2.3 End User Programs are the property of the End User. - - -3. Provision of the Hugo Source Code - -3.1 The Copyright Holder has made available to the End User the Hugo -Source Code for the purposes of: - - (a) porting the Software to operating systems for which the - Software is not yet available; and - - (b) investigating the functionality of the Software. - -3.2 In no way does the Copyright Holder's act of making available the -Hugo Source code reduce or otherwise affect in any way its rights in -the Hugo Source Code. - - -4. Modification and Distribution - -4.1 Distribution of the Software or the Hugo Source Code, in whole or -in part, in a modified form without the express written consent of the -Copyright Holder is prohibited. - -4.2 Distribution of the Software or the Hugo Source Code, in whole or -in part, for profit or other commercial intent or monetary transaction -without the express written consent of the Copyright Holder is -prohibited. - -4.3 This License must be distributed with any distribution of the -Software or the Hugo Source Code. - - -5. Warranty - -The Software and the Hugo Source Code are provided "as is" without -warranty of any kind, either expressed or implied, including but not -limited to the implied warranties of merchantability and fitness for a -particular purpose. In no event shall the Copyright Holder or The -General Coffee Company Film Productions or any other related or -unrelated party be liable to the End User or any other individual or -entity for damages arising out of the use or inability to use these or -other programs. Use of the Software indicates acceptance of these -terms. --
Website -
- --Inform Release Notes - -Inform Compiler 6.34, 6.33, 6.32, 6.31, 6.30 -Inform Library 6/11 - -Introduction - -This is a maintenance release of the Inform system for creating adventure -games, intended to address issues that have arisen since the 6.21 compiler and -6/10 library files were released in 1999, and subsequently since the 6.30 -compiler was released in 2004. The focus is primarily on fixing problems, but a -small number of enhancements are included. - -Although just about all known bugs are fixed, the approach to enhancing Inform -is more conservative. The selection of suggestions to implement has been -governed by three factors: - - * avoidance of changes which might cause existing games to misbehave; - - * minimisation of features which would require updates to the Inform -Designer’s Manual; - - * essential simplicity. With Graham Nelson’s permission, this release has -been produced by a volunteer taskforce, whose enthusiasm has been tempered by a -certain lack of familiarity with the internals of Inform. Thus, we have -concentrated on ‘safe’ changes; the implementation of some good ideas has been -postponed until we are more confident that we know what we’re doing. - -Having said that, this release does incorporate one major advance. It is based -on Andrew Plotkin’s bi-platform — Z-machine and Glulx — compiler and library -files, which were in turn derived from the the 6.21 compiler and 6/10 library. -The result is that the two Virtual Machine (VM) strands have merged into a -single compiler and library which, although continuing by default to produce -Z-code, can alternatively generate code for the Glulx VM if you supply the -G -compiler switch. There’s more on this topic in Support for Glulx. Before that, -though, we’ll summarise the changes to the compiler and to the library files. - -If you’ve translated the 6/10 library into another language, you may find -Information for translators helpful. - -Acknowledgements - -Far too many people contributed towards this release — reporting and resolving -bugs, making helpful suggestions, providing support and facilities, testing, -and so on — for their names to be individually listed. So instead, this is a -general thank-you to everybody who has made this release happen, and specific -ones to Graham for permitting it in the first place, and to Andrew for his -pioneering work on Glulx. There are, naturally, sure to be imperfections in the -release, and these should be reported through the Inform bug tracker. --
-The compiler and standard library for Inform6 are licensed under -1) The traditional Inform license as described by the DM4, or -2) The Artistic License 2.0. - -The user is free to choose which license to accept, i.e., free to choose -either set of terms and conditions. - -Here is the relevant bit from the Inform Designer's Manual, 4th edition: - - Copyright on Inform, the program and its source code, its example - games and documentation (including this book) is retained by Graham - Nelson, who asserts the moral right to be identified as the author - under the Copyrights, Designs and Patents Act 1988. Having said - this, I am happy for it to be freely distributed to anybody who wants - a copy, provided that: (a) distributed copies are not substantially - different from those archived by the author, (b) this and other - copyright messages are always retained in full, and (c) no profit is - involved. (Exceptions to these rules must be negotiated directly - with the author.) However, a story file produced with the Inform - compiler (and libraries) then belongs to its author, and may be sold - for profit if desired, provided that its game banner contains the - information that it was compiled by Inform, and the Inform version - number. - -* The license status of the contributed material (demos, include, tutor) is - what it says in each file. --
Website -
- -- - Level 9 Interpreter v5.1 - An interpreter for Level 9 games in any format, - including Spectrum snapshots. - - Copyright (c) 1996-2011 Glen Summers and contributors. - Contributions from David Kinder, Alan Staniforth, - Simon Baldwin, Dieter Baron and Andreas Scherrer. - - Level9 is released under the terms of the GNU General - Public License. See the file COPYING that is included - with this program for details. - - -Introduction ------------- - -During the 1980s a small British company called Level 9, run by two brothers -(Mike and Pete Austin), produced a series of text adventure games for a -variety of computers. These games received considerable critical acclaim and -are probably the best text adventures written for the small cassette based 8 -bit computers common in Britain in the 80s. - -Level 9 wrote their games using a custom designed system known as "A-Code", -which evolved from games on the 8 bit computers such as the Acorn BBC Model -B, the Sinclair Spectrum and the Commodore 64 to the (then new) 16 bit -machines such as the Amiga and the Atari ST. - -From disassembly of Level 9 games there are thought to be four variants of -A-Code, which are detailed below, and all of which are supported by this -interpreter. Thanks go to Paul David Doherty for analysing the games and -producing the table which follows. - - v1 This was used for the earliest games. Spectrum v1 games had - black text on a grey background. Games known to be released in - this format: - - Colossal Adventure - Adventure Quest - Dungeon Adventure - Snowball - Lords of Time - - v2 These releases were made between 1984 and 1985 (and usually say - so in the initial copyright message). This version introduced - the yellow text on a black background which became standard. - Games in this format were: - - Adventure Quest - Dungeon Adventure - Lords of Time - Snowball - Return to Eden - Erik the Viking - Emerald Isle - Red Moon - - v3 This format, dated 1986, was used by the largest number of - releases. These were: - - Worm in Paradise - The Price of Magick - The Secret Diary of Adrian Mole - The Growing Pains of Adrian Mole - The Archers - The Jewels of Darkness Trilogy (Colossal Adventure, - Adventure Quest and Dungeon Adventure released as - one package) - The Silicon Dreams Trilogy - (Snowball, Return to Eden and Worm in Paradise) - - v4 This was used for the Time and Magick Trilogy (Lords of Time, - Red Moon and The Price of Magick), and all Level 9's new games - from 1987 onwards: - - Knight Orc - Gnome Ranger - Ingrid's Back - Lancelot - Scapeghost - - -Supported Formats ------------------ - -On several machines (such as the Amiga) Level 9 games were distributed as -an interpreter plus a data file, usually called "gamedata.dat" or something -similar. These games can be played with this interpreter simply by loading -the "gamedata.dat" file. - -For the Amiga (and some other formats) the v4 games were released in three -parts, each in a separate data file: - - gamedat1.dat - gamedat2.dat - gamedat3.dat - -Starting the first game gives a menu from which you can choose which part or -game to play. For this to work the files must have the same basic structure -with a number in it somewhere, e.g. file names - - TimeAndMagick1.dat - TimeAndMagick2.dat - TimeAndMagick3.dat - -will work. - -On other (especially older and smaller) computers the games were distributed -as a single file containing both an interpreter and the game data. Level9 -can cope with these files as well, as it automatically searches files for -valid Level 9 games. This however requires that the file not be compressed -in any way. For example, there are several Spectrum snapshots of Level 9 -games available which this interpreter can play, but these snapshots must -be in an uncompressed format (e.g. SNA). Commonly snapshots are available in -the compressed Z80 format, but these files can be converted to SNA using the -widely available conversion program "SPConv". Version 1.06 or higher of -"SPConv" is recommended. - -Paul David Doherty has written "L9Cut", which can extract Level 9 games from -many different formats. L9Cut can also remove copy protection from Level 9 -games. L9Cut can be downloaded from - - http://www.ifarchive.org/indexes/if-archiveXlevel9Xtools.html - -This program has been tested on files obtained from releases for the Amiga, -Atari ST, IBM PC, C-64, Spectrum, Atari 800, BBC, Amstrad CPC, Apple 2, -Apple Mac and MSX computers. - - -Graphics --------- - -The first games from Level 9 were text only, but later games included line- -drawn graphics, and then bitmap graphics for the last games. These graphics -are supported by some versions of the interpreter (The 32-bit DOS version -does support graphics, while the 16-bit DOS version does not.). - -On some platforms the line-drawn graphics were placed into separate files -(For example, in the Amiga release of "Jewels of Darkness" the game is in -"gamedata.dat" and the graphics in "picture.dat".). In order to show these -pictures the graphics file can be passed as a second command line argument -when starting the interpreter. If no graphics file is specified in this -way, the interpreter will look for a file with the same name as the game -data, but with a file extension of ".pic", ".cga" or ".hrc" (the latter -two being used for graphics files in MS-DOS Level 9 releases). - -If no line-drawn graphics file is specified, Level 9 will search the given -game data file for graphics data. This is useful when the game data is a -Spectrum SNA snapshot or a similar memory dump of an emulator. - -The last Level 9 games use bitmap graphics. The interpreter can display the -bitmap graphics from C64, Amiga, Atari ST, MS-DOS, Apple Macintosh, BBC B, -Amstrad CPC and Spectrum +3 versions of the games (though for the last three, -there is currently no way to extract the A-code game data in a usable form). - -The graphics files contain a number somewhere in the file name, and there -may also be a title picture with a different file name. The interpreter -searches for suitably named graphics files using the following rules. In -all cases copy the graphics and title files to the same directory as the -game. - -Amiga, Macintosh and some Atari ST - The graphics file name is just the number (e.g. "1", "2", etc.). - The title file is called "title". - -Later Atari ST - The graphics file name is the number with a "squ" file extension - (e.g. "1.squ", "2.squ", etc.). The title file is just one of the - normal graphics files. - -MS-DOS - The graphics file name is the number with a "pic" file extension - (e.g. "1.pic", "2.pic", etc.). The title file is just one of the - normal graphics files. - -C64 - The graphics file name is "pic" followed by the number (e.g. - "pic1", "pic2", etc.). The title file is called "title mpic". - -BBC B "Lancelot" - As for C64, except that the title file is called "title". - -BBC B except "Lancelot" - The graphics file name is "P.Pic" followed by the number (e.g. - "P.Pic1", "P.Pic2", etc.). The title file is called "P.Title". - -Amstrad CPC and Spectrum +3 - All but the first graphic are contained in a single file called - "allpics.pic". The first graphics file is "1.pic" and the title - file is "title.pic". - - -Meta Commands -------------- - -Level9 supports several meta commands, which can be entered on the input -line. These commands are handled by the interpreter rather than being passed -to the game. They are: - - #save Saves out a game position directly, bypassing any - prompting (such as for disk changes). - - #restore Loads in a saved position directly, bypassing any - protection code within the game. - - #quit Quits the current game. - - #cheat Tries to bypass the copy protection code which asks for - a specific word. This is done by trying every word in - the game's dictionary. On a slow machine, this can take - a long time. - - #dictionary Lists the game dictionary. Press a key to stop the - listing and return to the input line. - - #picture If graphics are available, shows the picture specified - as a number after the picture command, e.g. "#picture 520". - - #seed Sets the seed of the random number generator to the value - given, e.g. "#seed 42". This will make randomness within - the game predictable, which is useful for testing. - - #play Prompts the user for a text file from which to read - further input from. Input lines are read from the file - until the end is reached, at which point the game reverts - to asking the user for input. - -The 32-bit DOS version of Level 9 also supports several hotkeys. Press -Alt-H when playing a game to view a list of the available hotkeys. - - -History -------- - - v5.1 The bitmap graphics from the US Macintosh release of Lancelot - now display correctly. - - v5.0 V1 games are also now supported. - The input logic now correctly handles commas and full stops - in the user's input for v3 or later games. - The input logic now allows hyphens and apostrophes to be - input, which is needed for some v2 games. - The dictionary listing for v2 games no longer has junk on the - end. - The graphics detection algorithm has been improved, so that it - now correctly finds graphics in all known games. - A difference in the logic between the v2 and v3 line-drawn - graphics has been implemented, which corrects the scaling for - some v2 graphics. - Added #seed and #play meta commands. - - v4.1 Corrected a bug that made Lancelot unplayable. - BBC B bitmaps are now shown as they appeared on the original - computer. - - v4.0 Implemented support for bitmap graphics. - - v3.0 Implemented support for line-drawn graphics. - Fixed a problem with v4 detection that stopped some versions of - Scapeghost running correctly. - Implemented an opcode used by the disk based versions of - Time and Magick, which now means that saving from these games - works. - The interpreter now gives you a reasonable amount of time to - enter the Lenslok code in protected games, and also tells you - what the code should be. - - v2.0 Revised the description of v4 games to include all the post-1987 - games, which are now supported. - V2 games are also now supported. - Added meta commands. - - v1.0 First release. - - -Credits -------- - -The Level9 interpreter was originally written by Glen Summers. The changes for -version 3.0 were made by David Kinder with additional code from Alan Staniforth -and Simon Baldwin. - -For version 4.0, David Kinder integrated the various bitmap decoders, but all -the difficult work was done by Alan Staniforth and Dieter Baron. Alan also -supplied the BBC B bitmap changes for version 4.1. - -David and Andreas Scherrer worked on version 5.0 to integrate script playback -from Andreas' .NET port of the interpreter. Andreas created a test harness to -play through all the games, and David and Andreas then worked through the -problems this showed up. Andreas also put much effort into painstakingly -checking all the graphics in the games, which revealed several issues. - -Help, testing and information on the various Level 9 formats was provided by -Paul David Doherty. Testing of the fix for Lancelot in version 4.1 was -performed by Guido Mureddu. - -If you have any comments or queries, contact David Kinder. -Web: http://www.davidkinder.co.uk/ -Email: davidk.kinder@virgin.net - - -The Interactive Fiction Archive -------------------------------- - -If you have access to the Internet and are interested in text adventures, -then you can find all sorts of programs and information at The Interactive -Fiction Archive: - - http://www.ifarchive.org/ - -The latest version of this program can always be found on this site, in - - http://www.ifarchive.org/indexes/if-archiveXlevel9XinterpretersXlevel9.html --
-Level 9 Interpreter, Glk Notes ------------------------------- - - -Introduction ------------- - -This is a port of the Level 9 interpreter to Glk. The complete interface -lives in the single file - - glk.c - -The main test and development system for the port is Linux, with Xglk as the -Glk library. - - -Acknowledgements ----------------- - -Thanks to Alan Staniforth for considerable help with getting the some of the -source for the base interpreter together, and for his hints on how to cover -the porting requirements, and to David Kinder for a complete reality check on -the port progress, and also for the Level 9 interpreter. - -Thanks also to Ben Hinesfor the Mac code, which, if -I have transcribed it correctly from earlier work with AGiliTy, should permit -this port to run on Mac platforms with Glk. - - -Running Games -------------- - -The interpreter understands game files that use the "Spectrum snapshot" format. -A file in this format usually has the extension ".sna" or ".SNA". - -Give the name of the game file to run at the system prompt. For example - - glklevel9 colossal.sna - -If the game has an external line drawing graphics file, make sure that the file -lives in the same directory as the game file, and has the same base name with -the extension ".pic", or is named "picture.dat". The Glk interpreter will -find this file automatically, if it exists, and use it to create game pictures. -Line drawn graphics are not always held in an external graphics file; a game -may l hold its graphics internally, in which case no addtional files are -required. - -If the game has external bitmap pictures, these will normally appear as -multiple files with ".pic", ".squ", ".picN", or ".title" extensions. As with -line drawn graphics, ensure that these files are in the same directory as the -main game file, so that the Glk interpreter can find them. - -If there are no graphics files, the interpreter will run in text only mode. It -will also do this if it cannot open the graphics files, or if the files do not -seem to contain usable game graphics. - -There are a few command line options that you can also add, to vary the way -that the game looks: - - -np Don't display game pictures initially - -ni Don't intercept 'quit', 'restart', 'save', and 'restore' - -ne Don't add an extra prompt on line input - -nl Don't attempt to detect infinite loops in games - -na Don't expand single-letter abbreviations - -nc Don't attempt to interpret selected commands locally - -See below for further information about what these options mean. - - -Intercepting Game Commands --------------------------- - -Some Level 9 games are written for cassette tape based microprocessor systems, -and the way in which they save, restore, and restart games generally reflects -this. Additionally, there's often no straightforward way to quit from a game. - -To try to make things a bit more convenient for a player, Glk Level 9 traps the -following command words in its interface: - - quit, restart, save, restore, and load (synonym for restore) - -When it sees one of these entered on an input line, it tries to handle the -command itself. In the case of "quit" and "restart", it will confirm that you -want to end the current game. - -In the case of "save" and "restore", Glk Level 9 will try to handle saving or -loading game state to or from system files using the Level 9 interpreter -internal routines, rather than the ones built into the game itself. This -bypasses the inconvenient "Lenslok" check built into some games, and also works -round a couple of possible Level 9 interpreter bugs. - -If you prefix a command with a single quote, Glk Level 9 will not try to handle -the command itself, but will remove the quote, and pass the remaining string -to the game without change. - -You can turn off command interception with the command line option '-ni'. - - -Extra Prompting ---------------- - -Early Level 9 games generally output a prompt something like - - What now? - -However, it's not always printed when the game is expecting line input. Simply -leaning on the Return key will scroll the game with no prompting, and the -Adrian Mole games offer no prompt at all when not in menu modes. - -Some later Level 9 games begin with the "What now?" (or "What gnow?"), then -switch to issuing a "> " prompt later on. - -To try to make it a little clearer to see what's going on, the Glk Level 9 will -add it's own "> " prompt when the game is expecting line input, but only when -it determines that the game has not already issued its own prompt. - -You can turn this off with the '-ne' option. - - -Displaying Pictures -------------------- - -Level 9 games may contain graphics, and while not essential to the game, they -can enhance the experience of playing. - -Unfortunately, Glk does not provide a method to directly display an image -bitmap, so Glk Level 9 needs to adopt some tricks to get a picture to display. -The end result is that, on Linux Xglk at least, it can take several seconds to -render a complete picture. - -To reduce the problems caused by a game pausing for several seconds for a -picture, Glk Level 9 does its picture rendering using a background "thread". -This draws in the complete picture over a series of smaller image updates, -while at the same time still allowing game play. To speed up picture -rendering, Glk Level 9 also goes to considerable effort to try to minimize the -amount of Glk graphics operations it uses. - -If you move to a location with a new picture before the current one has been -fully rendered, Glk Level 9 will simply start working on the newer picture. - -Most Level 9 games accept the "graphics" and "text" commands, which turn -pictures on and off respectively. It is also possible to turn off pictures -directly in Glk, for games that don't support these two commands. - -You can use the "-np" option to turn off pictures. Glk Level 9 also will not -show pictures if the Glk library does not support both graphics and timers, if -there are no graphics files, built in graphics, or bitmaps, or if the -interpreter cannot open graphics files successfully. See below for further -notes about displaying pictures. - - -Game Infinite Loop Checking ---------------------------- - -Some Level 9 games can enter an infinite loop if they have nothing better to -do. For example, at then end of Adrian Mole, you have the option to play the -last part again. If you decline, the game will spin in a tight loop which -does nothing. - -Because it's hard to break into this loop without killing the interpreter -completely, Glk Level 9 notes how much work the interpreter is doing over time. -If it notices that the interpreter has neither printed anything nor asked for -input for five seconds or so, it assumes that the game is in an infinite loop, -and offers you the chance to stop the game. - -In the unlikely event that this check triggers with a game that is not in an -infinite loop, you can turn off the option with "-nl". - - -Status Line ------------ - -Level 9 games do not print a status line, so Glk Level 9 will use the status -window, a separate window above the main window created by Glk libraries that -support separate windows, to display the game's name and version details. + BABEL 0.2B
+ + ++- 'x something ++Version 0.2b, Treaty of Babel Revision 7 +This is the source code for babel, the Treaty of Babel analysis tool. -For other Glk libraries, Glk Level 9 will print the game's name in "[...]" -brackets above the standard game output following each turn, but only when the -game name has changed since the last turn (that is, in multi-file games). +Most of this code is (c) 2006 by L. Ross Raszewski +The following files are public domain: +zcode.c +glulx.c +executable.c +level9.c +magscrolls.c +agt.c +hugo.c +advsys.c +misc.c +alan.c +adrift.c +treaty.h +treaty_builder.h -Expanding Abbreviations ------------------------ +The following files are Copyright (C) 1999, 2000, 2002 Aladdin Enterprises: +md5.c +md5.h -Many IF games systems allow a player to use single character abbreviations for -selected common commands, for example, 'x' for 'examine', 'l' for look, and so -on. Not all Level 9 games offer this feature, however. +And are used in accordance with their licenses. -To try to help the player, Glk Level 9 will automatically expand a selection -of single character commands, before passing the expanded string to the game as -input. It expands a command only if the first word of the command is a single -letter, and one of the following: +All other files are (c) 2006 by L. Ross Raszewski and are released under +the Creative Commons Attribution 4.0 International (CC BY 4.0). - 'c' -> "close" 'g' -> "again" 'i' -> "inventory" - 'k' -> "attack" 'l' -> "look" 'p' -> "open" - 'q' -> "quit" 'r' -> "drop" 't' -> "take" - 'x' -> "examine" 'y' -> "yes" 'z' -> "wait" +To view a copy of this license, visit +http://creativecommons.org/licenses/by/4.0/ or send a letter to -If you want to suppress abbreviation expansion, you can prefix your input with -a single quote character (like putting literal strings into a spreadsheet). -If you do this, Glk Level 9 will strip the quote, then pass the rest of the -string to the main interpreter without any more changes. So for example, +Creative Commons, +543 Howard Street, 5th Floor, +San Francisco, California, 94105, USA. ++GARGOYLE
+ + +++ ++Gargoyle contains several components, aggregated together to form a package. Parts of this package are distributed under the terms of the GNU General Public License (GPL). Redistribution of this package is freely allowed, provided that the terms of the GPL are adhered to, including the requirement that the source code for all GPL licensed parts of this package be available from the same location as any binary package. -will pass the string "x something" back to the game, whereas +The Gargoyle Glk library is copyright 2009 Tor Andersson. It is released under the terms of the GNU General Public License. - x something +AdvSys is copyright (c) David Michael Betz. It is released under the terms of the BSD license. -will pass "examine something" back to the game. +AGiliTy is copyright (c) Robert Masenten. It is released under the terms of the GNU General Public License. -You can turn off abbreviation expansions with the command line option '-na'. +Alan is copyright (c) Thomas Nilsson. It is released under the terms of the Artistic License 2.0. +Bocfel is copyright (c) Chris Spiegel. It is released under the terms of the GNU General Public License. -Interpreting Commands Locally ------------------------------ +Frotz is copyright (c) Stefan Jokisch. It is released under the terms of the GNU General Public License. -Glk Level 9 will handle special commands if they are prefixed with the string -'glk'. It understands the following special commands: +Geas is copyright (c) Mark Tilford and David Jones. It is released under the terms of the GNU General Public License. - help Prints help on Glk special commands - summary Prints all current Glk settings - version Prints the Glk library and Glk port version numbers - license Prints the Glk port license - - script on Starts recording the game text output sent to the - main game window - script off Turns off game text recording - inputlog on Starts recording input lines typed by the player - inputlog off Stops recording input lines - readlog on Reads an input log file as if it had been typed by - a player; reading stops automatically at the end of - the file - abbreviations on Turn abbreviation expansion on - abbreviations off Turn abbreviation expansion off - graphics on Turn on Glk graphics - graphics off Turn off Glk graphics (see below) - loopchecks on Turn game infinite loop checking on - loopchecks off Turn game infinite loop checking off - locals on Turn local interception of 'quit', 'restart', - 'save' and 'restore' on - locals off Turn local interception of 'quit', etc. off - prompts on Turn extra "> " prompting on - prompts off Turn extra "> " prompting off - commands off Turn of Glk special commands; once off, there is no - way to turn them back on +Git is copyright (c) Iain Merrick. It is released under the terms of the MIT License. -You can abbreviate these commands, as long as the abbreviation you use is -unambiguous. +Glulxe is copyright (c) Andrew Plotkin. -If for some reason you need to pass the string "glk" to the interpreter, you -can, as with abbreviations above, prefix it with a single quote character. - -You can turn off local command handling with the command line option '-nc'. - -If all of abbreviation expansion, local command handling, and game command -interceptions are turned off, there is no need to use single quotes to suppress -special interpreter features. +Hugo is copyright (c) Kent Tessman. It is released with permission under the terms of the Simplified 2-Clause BSD license. +JACL is copyright (c) Stuart Allen. It is released under the terms of the GNU General Public License. -Multi-file Games ----------------- - -Some Level 9 games come in multiple files, for example +Level 9 is copyright (c) Glen Summers, David Kinder, Alan Staniforth, Simon Baldwin and Dieter Baron. It is released under the terms of the GNU General Public License. - gamedat1.sna - gamedat2.sna - ... - -and so on. Once a game part is finished, the Level 9 interpreter queries the -Glk interface for the next file. When this happens, both for disk and for -tape based games, the interface will try to generate the appropriate file name -for the next game part, by incrementing the last digit found in the file's -name. The interpreter will then look in the same directory for the new file -name. +Magnetic is copyright (c) Niclas Karlsson, David Kinder, Stefan Meier and Paul David Doherty. It is released under the terms of the GNU General Public License. -If this method fails, then you will need to run the separate game parts -manually. Alternatively, rename the files so that they match this pattern. +Nitfol is copyright (c) Evin Robertson. It is released under the terms of the GNU General Public License. +SCARE is copyright (c) Simon Baldwin. It is released under the terms of the GNU General Public License. -Keyboard Polling ----------------- - -Some Level 9 games use the standard home microprocessor system method of -waiting for a keypress, using a tight spin loop that samples the keyboard until -a key is detected. The Adrian Mole games use this keyboard sampling both for -scroll pausing, and for their main menu selections, with something like: - - for each line in the output paragraph - print the line - while (os_readchar() shows a key is pressed) - ; - endwhile - endfor - selection = return value from os_readchar() - while (selection shows no key is pressed) - selection = return value from os_readchar() - handle selection... - -This means that os_readchar() _must_ be implemented according to the notes in -Level 9's porting.txt. That is, it must poll the keyboard for key presses, -and return the key code if a key is pressed, or zero if no key is currently -pressed. - -If os_readchar() waits for a key press on each call, Adrian Mole games will -wait for a key press after each output line, which is not what we want. On the -other hand, if it doesn't wait for a key press at the menu selection point, the -interpreter will consume all the available system CPU time, which is also very -undesirable on a multi-tasking operating system. - -To solve this, Glk Level 9 uses two different techniques, and which it chooses -depends on whether the Glk library it is linked with has timers. - -If the Glk library has timers, then on each call to os_readchar(), Glk Level 9 -starts a timeout for a short period, then waits for either a key press event, -or a timeout. If it receives a key press, it returns the code, otherwise it -returns zero. This lets games run correctly. Continually cycling through the -Glk timeout is fast enough to be acceptable to a player, but the timeout -provides good protection against spinning wildly in a tight loop. - -If the Glk library does not have timers, then the interface will return zero -for some large number of consecutive calls, then wait until a character is -entered. Since the initial number is large, this allows the game to progress, -generally, to the point where it needs a key press to continue at all. The -only thing that might show slightly odd behaviour is the DEMO mode of Adrian -Mole games. - -Also, this type of character polling cannot be used with reading input logs. -So the Glk "readlog" command does not function with Adrian Mole games. - -To pretend that no key was pressed, when the interface is in fact waiting for -a key press, you can type Control-U. The Glk interface will return this to -the game as a zero. - -Games that rarely, or never, use line input, but continually poll for input -using os_readchar(), are difficult to stop. To help with this, Glk Level 9 -offers Control-C as as way to quit the game, with a confirmation as for "quit" -above. Note that Control-C will only work when the game is using os_readchar() -(that is, most of the time for Adrian Mole games, and occasionally, if ever, -in other games). For normal line input, use "quit" as described above. +ScottFree is copyright (c) Alan Cox. It is released under the terms of the GNU General Public License. -Control-C is turned off by the command line option "-nc". +TADS is copyright (c) Michael J. Roberts. It is released under the terms of the GNU General Public License. +The Linux Libertine fonts are copyright (c) Philipp H. Poll. They are released under the terms of the SIL Open Font License. -A Few Last Words on Graphics ----------------------------- +The Liberation fonts are copyright (c) Red Hat, Inc. They are released under the terms of the Liberation License. -When turning graphics on and off with Glk commands, you should pay special -attention to whether graphics are turned on or off in the game. In order for -graphics to be displayed, they must be turned on both in the game AND in Glk. -Turning off graphics in Glk is a little more permanent than turning them off -in a game; in fact, some games don't seem to allow you to turn off graphics -within the game at all. +The Noto Serif fonts are copyright (c) 2012, Google Inc. They are released under the terms of the SIL Open Font License (OFL), version 1.1. -Why a secondary Glk way to turn off pictures? Well, Level 9 games don't always -behave the same way with the "graphics" and "text" commands, so a control -inside Glk Level 9 itself gives a more consistent way to turn graphics on and -off. The command +The Go Mono fonts are copyright (c) 2016 Bigelow & Holmes Inc. They are released under the terms of the 3-clause BSD license. - glk graphics - -with no on/off argument, prints out a brief information about the current state -of a game's graphics. In practice, it's probably best to stick to just one -method of turning graphics on and off -- either the game's own way, or the -'glk graphics' command if the former is not available. - -Glk Level 9 does not display all of the line drawn graphics correctly in a -handful of games. Games known to not display all graphics fully correctly are -"Erik the Viking" (Spectrum, v2), "Return to Eden" (Spectrum48, v3), and -"Price of Magik" (Spectrum48, v3). - - --- - -Simon Baldwin, simon_baldwin@yahoo.com +The authors assume no liability for damages or loss of revenue resulting from the use of any of the software herein. The software is supplied "as is" and carries no warranty, actual or implied.INFORM 6.34 (6.12 LIBRARY)
+Website +
@@ -3568,386 +674,6 @@-Level 9 Interpreter v5.1 +The compiler and standard library for Inform6 are licensed under +1) The traditional Inform license as described by the DM4, or +2) The Artistic License 2.0. -An interpreter for Level 9 games in any format, -including Spectrum snapshots. +The user is free to choose which license to accept, i.e., free to choose +either set of terms and conditions. + +Here is the relevant bit from the Inform Designer's Manual, 4th edition: -Copyright (c) 1996-2011 Glen Summers and contributors. -Contributions from David Kinder, Alan Staniforth, -Simon Baldwin, Dieter Baron and Andreas Scherrer. + Copyright on Inform, the program and its source code, its example + games and documentation (including this book) is retained by Graham + Nelson, who asserts the moral right to be identified as the author + under the Copyrights, Designs and Patents Act 1988. Having said + this, I am happy for it to be freely distributed to anybody who wants + a copy, provided that: (a) distributed copies are not substantially + different from those archived by the author, (b) this and other + copyright messages are always retained in full, and (c) no profit is + involved. (Exceptions to these rules must be negotiated directly + with the author.) However, a story file produced with the Inform + compiler (and libraries) then belongs to its author, and may be sold + for profit if desired, provided that its game banner contains the + information that it was compiled by Inform, and the Inform version + number. -Level9 is released under the terms of the GNU General -Public License Version 2. See the file COPYING that is included -with this program for details. +* The license status of the contributed material (demos, include, tutor) is + what it says in each file.LINUX LIBERTINE AND BIOLINUM FONTS 5.3.0
- Website -
- --Magnetic Scrolls Interpreter, Glk Notes ---------------------------------------- - - -Introduction ------------- - -This is a port of the Magnetic Scrolls interpreter to Glk. The complete -interface lives in the single file - - glk.c - -The main test and development system for the port is Linux, with Xglk as the -Glk library. - - -Acknowledgments ---------------- - -Thanks to David Kinder for hints and tips on how to go about the port, and of -course to Niclas Karlsson and his collaborators for the underlying Magnetic -Scrolls interpreter, which looks like it probably wasn't a lot of fun to work -on at times. - -Thanks also to Ben Hines-for the Mac code. I've -copied in from AGiliTy with, I think, the appropriate modifications, but it's -untested at present. - - -Running Games -------------- - -The interpreter understands game files that use the "Magnetic Scrolls" data -format. A file in this format usually has the extension ".MAG" or ".mag", and -has "MaSc" in its first four data bytes. - -Give the name of the game file to run at the system prompt. For example - - glkmagnetic GUILD.MAG - -If the game has an associated graphics file, normally a file that has the -extension ".GFX" or ".gfx", make sure that it is in the same directory as the -main data file, and has the same base name. For example, the matching graphics -file for "GUILD.MAG" is "GUILD.GFX". The Glk interpreter will find this file -automatically, if it exists, and use it to create game pictures. - -The game may also have an associated hints file, with the extension ".HNT" or -".hnt". Like the graphics file, make sure it is in the same directory as other -game files, and with the same base name, and the Glk interpreter will find the -file automatically. Hints files apply only to the later Magnetic Windows -games, so not all the games you find will have them. Also, hints for several -games may be combined into a single file, so you might need to copy, or link, -a file such as "COLL.HNT" to "CCORRUPT.HNT" to match with a "CCORRUPT.MAG" -file. - -If there is no graphics file, the interpreter will run in text only mode. It -will also do this if it cannot open the graphics file, or if the file does not -seem to contain game graphics. - -If there is no hints file, the interpreter will not be able to display game -hints, but will otherwise run normally. - -As a short cut, you can omit the game extension, so for example - - xmagnetic GUILD - -will run GUILD.MAG, and also use pictures from GUILD.GFX, and hints from -GUILD.HNT, if either or both are available. - -Because of the way the Glk interpreter looks for files, you should make sure -that the games are held in files with ".MAG" or ".mag" extensions, and any -associated graphics and hints are held in files with ".GFX" or ".gfx" and -".HNT" or ".hnt" extensions respectively. Games held in files with other -extensions may not work. - -There are a few command line options that you can add to vary the way that -the game looks: - - -np Don't display game pictures initially - -ng Don't automatically gamma correct game picture colours - -nx Don't animate game pictures - -ne Don't add an extra prompt on line input - -na Don't expand single-letter abbreviations - -nc Don't attempt to interpret selected commands locally - -See below for further information about what these options mean. - - -Extra Prompting ---------------- - -Magnetic Scrolls games always prompt with ">" when they are expecting input. -However, Magnetic Windows ones are sometimes strangely silent, for example -after receiving an empty line, they don't issue a second prompt. - -To try to make it a little clearer to see what's going on, Glk Magnetic will -add its own ">" prompt when the game is expecting line input, but only when it -determines that the game has not already issued its own prompt. - -You can turn this off with the '-ne' option. - - -Displaying Pictures -------------------- - -Magnetic Scrolls games generally come with attractive graphics, and while not -essential to the game, they do enhance the experience of playing. - -Unfortunately, Glk does not provide a method to directly display an image -bitmap, so Glk Magnetic needs to adopt some tricks to get a picture to display. -The end result is that, on Linux Xglk at least, it can take several seconds to -render a complete picture. - -To reduce the problems caused by a game pausing for several seconds for a -picture, Glk Magnetic does its picture rendering using a background "thread". -This draws in the complete picture over a series of smaller image updates, -while at the same time still allowing game play. To speed up picture -rendering, Glk Magnetic also goes to considerable effort to try to minimize -the amount of Glk graphics operations it uses. - -If you move to a location with a new picture before the current one has been -fully rendered, Glk Magnetic will simply start working on the newer picture. - -Most Magnetic Windows and Magnetic Scrolls games accept the "graphics" command, -which toggles pictures on and off. Magnetic Scrolls games usually start with -graphics enabled, but for some reason Magnetic Windows games tend to start -with graphics disabled. To get pictures, type "graphics" as more or less the -first game command. - -You can use the "-np" option to turn off pictures. Glk Magnetic also will not -show pictures if the Glk library does not support both graphics and timers, if -there is no suitable ".GFX" or ".gfx" graphics file, or if the interpreter -cannot open the graphics file successfully. See below for further notes about -displaying pictures. - - -Animated Pictures ------------------ - -Some of the pictures in later Magnetic Windows games are animated, and Glk -Magnetic will animate those pictures. - -Animations stretch the bitmap display capabilities of Glk even further than -static pictures do. Glk Magnetic uses several optimizations to try to reduce -the graphics load on the system, and in particular animates only the portions -of a picture that change between frames. As a result, pictures with modest -animations work well; pictures with large animated areas may however not -display as effectively. Fortunately, most of the animated pictures in -Magnetic Windows games don't require large graphics repaints between frames. - -The speed and smoothness of animations will probably also depend on the CPU -speed of your system, and on the graphics card, in particular any graphics -acceleration, available. - -As with static pictures, Glk Magnetic interleaves animation frames with game -play using a background "thread", if necessary breaking individual animation -frames into pieces so that that game play is not interrupted for too long. - -You can use the "-nx" option to turn off picture animation. Glk Magnetic will -then display just the static portions of a game's pictures. - - -Gamma Colour Corrections ------------------------- - -Some of the Magnetic Scrolls pictures look fine without gamma corrections. On -the other hand, others, in particular those in "Corruption", and several from -"Wonderland", can look very dark if not corrected. - -To try to adjust for this, Glk Magnetic will apply an automatic gamma -correction to each picture. It selects a suitable gamma based on analyzing the -colours that the picture uses, and choosing one that gives reasonable colour -contrast. - -There are two levels of automatic gamma correction: 'normal' and 'high'. In -normal mode, the gamma correction is half of that needed to completely even -out the contrast between picture colours, offering a reasonable balance between -the amount of picture brightening and garish or faded colours. In high mode, -the gamma correction is that needed to fully even out the contrast between -picture colours. Use "glk gamma" when in a game to switch between these modes, -or to turn gamma correction off altogether. - -You can use the "-ng" option to turn off gamma colour corrections. In this -case, all pictures are displayed using their original colour palette. - - -Game Hints ----------- - -Where a game comes with hints (Wonderland, and the "collection" games), Glk -Magnetic will try to display them if possible. - -For Glk libraries that support separate windows, Glk Magnetic shows hints in a -pair of windows which overlay the main game text window. The upper hint -window gives a menu of hint topics. The lower one shows the game hints one at -a time. - -For Glk libraries that don't support separate windows, Glk Magnetic shows hints -in the main game window, using the best formatting it can arrange. - -Glk Magnetic will not show hints if there is no suitable ".HNT" or ".hnt" hints -file, or if the interpreter cannot open the hints file successfully. - - -Status Line ------------ - -Magnetic Scrolls games print a status line, and Glk Magnetic will display this -in a separate window above the main window, for Glk libraries that support -separate windows. - -For other Glk libraries, Glk Magnetic will print the status line in "[...]" -brackets above the standard game output following each turn, but only when the -status line has changed since the last turn. - -Note that Magnetic Windows games generally do not print a status line. For -these games, Glk Magnetic will instead try to identify the game's title, and -display it, if identifiable, on the status line. - - -Expanding Abbreviations ------------------------ - -Many IF games systems allow a player to use single character abbreviations for -selected common commands, for example, 'x' for 'examine', 'l' for look, and so -on. Not all Magnetic Scrolls games offer this feature, however. - -To try to help the player, Glk Magnetic will automatically expand a selection -of single character commands, before passing the expanded string to the game -as input. It expands a command only if the first word of the command is a -single letter, and one of the following: - - 'c' -> "close" 'g' -> "again" 'i' -> "inventory" - 'k' -> "attack" 'l' -> "look" 'p' -> "open" - 'q' -> "quit" 'r' -> "drop" 't' -> "take" - 'x' -> "examine" 'y' -> "yes" 'z' -> "wait" - -If you want to suppress abbreviation expansion, you can prefix your input with -a single quote character (like putting literal strings into a spreadsheet). -If you do this, the Glk interface will strip the quote, then pass the rest of -the string to the main interpreter without any more changes. So for example, - - 'x something - -will pass the string "x something" back to the game, whereas - - x something - -will pass "examine something" back to the game. - -You can turn off abbreviation expansions with the command line option '-na'. - - -Interpreting Commands Locally ------------------------------ - -Glk Magnetic will handle special commands if they are prefixed with the string -'glk'. It understands the following special commands: - - help Prints help on Glk special commands - summary Prints all current Glk settings - version Prints the Glk library and Glk port version numbers - license Prints the Glk port license - - undo Undoes the prior game move - script on Starts recording the game text output sent to the - main game window - script off Turns off game text recording - inputlog on Starts recording input lines typed by the player - inputlog off Stops recording input lines - readlog on Reads an input log file as if it had been typed by - a player; reading stops automatically at the end of - the file - abbreviations on Turn abbreviation expansion on - abbreviations off Turn abbreviation expansion off - graphics on Turn on Glk graphics - graphics off Turn off Glk graphics (see below) - gamma normal Set automatic gamma colour correction mode to normal - gamma high Set automatic gamma colour correction mode to high - gamma off Turn automatic gamma colour correction off - animations off Turn picture animation off - animations on Turn picture animation on - prompts on Turn extra "> " prompting on - prompts off Turn extra "> " prompting off - commands off Turn of Glk special commands; once off, there is no - way to turn them back on - -You can abbreviate these commands, as long as the abbreviation you use is -unambiguous. To improve compatibility with other IF games systems, Glk -Magnetic also recognizes the single word command "undo" as being equivalent -to "glk undo". - -If for some reason you need to pass the string "glk" to the interpreter, you -can, as with abbreviations above, prefix it with a single quote character. - -You can turn off local command handling with the command line option '-nc'. - -If both abbreviation expansion and local command handling are turned off, there -is no need to use single quotes to suppress special interpreter features. - - -A Few Last Words on Graphics ----------------------------- - -When turning graphics on and off with Glk commands, you should pay special -attention to whether graphics are turned on or off in the game. In order for -graphics to be displayed, they must be turned on both in the game AND in Glk. -Turning off graphics in Glk is a little more permanent than turning them off -in a game. In some games, turning graphics off seems to mean do not display -new pictures, but leave the current picture on the display; turning off -graphics in Glk closes the graphics display window completely. - -What can also be confusing is the tendency of Magnetic Windows games to display -a picture automatically only on your first visit to a game location, unless in -'verbose' mode. On subsequent visits, a "look" command is needed to redisplay -the picture. This appears not to happen with Magnetic Scrolls games. - -Why an additional Glk way to turn off pictures? Well, the Magnetic Windows and -Magnetic Scrolls games don't always behave the same way with the "graphics" -command, so a control inside Glk Magnetic itself gives a more consistent way -to turn graphics on and off. The command - - glk graphics - -with no on/off argument, prints out a brief information about the current state -of a game's graphics. In practice, it's probably best to stick to just one -method of turning graphics on and off -- either the game's own way, or the -'glk graphics' command. - - --- - -Simon Baldwin, simon_baldwin@yahoo.com -
-Magnetic - Magnetic Scrolls Interpreter. - -Written by Niclas Karlsson-, - David Kinder , - Stefan Meier and - Paul David Doherty - -Copyright (C) 1997-2008 Niclas Karlsson - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -GLK Port --------- - -Thanks to David Kinder for hints and tips on how to go about the port, and of -course to Niclas Karlsson and his collaborators for the underlying Magnetic -Scrolls interpreter, which looks like it probably wasn't a lot of fun to work -on at times. - -Thanks also to Ben Hines for the Mac code. I've -copied in from AGiliTy with, I think, the appropriate modifications, but it's -untested at present. - --- Simon Baldwin, simon_baldwin@yahoo.com -
- -SCARE is secondary clone of jAsea, Mark J. Tilford's Java GPL clone of the -Adrift Runner. - -It aims to provide an ANSI/ISO C core Adrift interpreter, capable of running -Adrift version 4.00, version 3.90, and version 3.80 games, and portable enough -to run on Linux, Windows, DOS, Macintosh, Amiga, or any platform that offers -an ANSI/ISO C compiler. - -For details on building SCARE, please see the file BUILDING. For details on -porting SCARE to various input/output schemes, please see PORTING. For -details on running Adrift games in SCARE, please see RUNNING. For details on -the game debugger in SCARE, please see DEBUGGER. For details on SCARE's test -suite, please see TESTING. For details on compatibility with the Adrift -Runner, please see FEATURES. - -SCARE is based on jAsea. For more information on jAsea, please visit - - http://sourceforge.net/projects/jasea - -SCARE also contains copious code from Zlib, to the point where it actually -carries around a full copy of the Zlib source within it. Zlib is - - Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - -The SCARE source code is released under the GPL. The ubiquitous COPYING file -contains everything you need to know on that. - -SCARE's home on the Web is in the IF Archive, under programming/adrift. - -Thanks to Jan-Erik Karlsson for work on SCARE for Amiga; Uli Kusterer for work -on the Macintosh SCARE build; Thomas Payerle for slogging through the Adrift -version 3.90 TAF file format; Rik Snel for his work to uncovering the TAF file -obfuscation used by Adrift versions 3.90 and 3.80; David Kinder for the -Windows specific Glk startup code; Emily Short for uncovering bugs that only -showed up well into a couple of games; Robert Goodwin, Richard Otter, Eric -Mayer, Todd Watson, Nick Rogers, and Sam Trenholme for miscellaneous bug -reports; and David Whyld for bug reports and detailed game walkthroughs for -reference and testing. - -And, of course, to Mark J. Tilford who started this whole thing in the first -place with jAsea, providing almost all of the Adrift reverse engineering that -SCARE uses. Without jAsea, there would be no SCARE. - -Simon Baldwin, simon_baldwin@yahoo.com --
-SCARE is secondary clone of jAsea, Mark J. Tilford's Java GPL clone of the -Adrift Runner. - -It aims to provide an ANSI/ISO C core Adrift interpreter, capable of running -Adrift version 4.00, version 3.90, and version 3.80 games, and portable enough -to run on Linux, Windows, DOS, Macintosh, Amiga, or any platform that offers -an ANSI/ISO C compiler. - -For details on building SCARE, please see the file BUILDING. For details on -porting SCARE to various input/output schemes, please see PORTING. For -details on running Adrift games in SCARE, please see RUNNING. For details on -the game debugger in SCARE, please see DEBUGGER. For details on SCARE's test -suite, please see TESTING. For details on compatibility with the Adrift -Runner, please see FEATURES. - -SCARE is based on jAsea. For more information on jAsea, please visit - - http://sourceforge.net/projects/jasea - -SCARE also contains copious code from Zlib, to the point where it actually -carries around a full copy of the Zlib source within it. Zlib is - - Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - -The SCARE source code is released under the GNU General Public Licence -Version 2. The ubiquitous COPYING file contains everything you need -to know on that. - -SCARE's home on the Web is in the IF Archive, under programming/adrift. - -Thanks to Jan-Erik Karlsson for work on SCARE for Amiga; Uli Kusterer for work -on the Macintosh SCARE build; Thomas Payerle for slogging through the Adrift -version 3.90 TAF file format; Rik Snel for his work to uncovering the TAF file -obfuscation used by Adrift versions 3.90 and 3.80; David Kinder for the -Windows specific Glk startup code; Emily Short for uncovering bugs that only -showed up well into a couple of games; Robert Goodwin, Richard Otter, Eric -Mayer, Todd Watson, Nick Rogers, and Sam Trenholme for miscellaneous bug -reports; and David Whyld for bug reports and detailed game walkthroughs for -reference and testing. - -And, of course, to Mark J. Tilford who started this whole thing in the first -place with jAsea, providing almost all of the Adrift reverse engineering that -SCARE uses. Without jAsea, there would be no SCARE. - -Simon Baldwin, simon_baldwin@yahoo.com --
Website -
- --This is my second serious production edition of the Scott Adams game -player. It needs curses (or an equivalent - eg pccurses. A non-curses -port should be easy too), and an ANSI C compiler. - -This code has been tested on a SUN3(SunOS 4.1.1) and on a Pyramid 9820 in -the att universe. - - -Operation ---------- - -ScottFree reads and executes TRS80 format Scott Adams datafiles. It is -possible to run other formats either by writing a loader for that format or -a convertor to TRS80 format. Remember the Scott Adams games are still -copyright - you need to buy or obtain the games legally for use with this -interpreter. Some Scott Adams material is available fairly freely . Dec 1980 -Byte contains a game driver and also a program to write a version of Pirate -Adventure. A PC-SIG disk contains Adventureland in BASIC with a database in -DATA statements. The file 'Definition' in this archive explains the TRS80 -format as I believe it exists. Much of this definition comes from P.D.Doherty -who provided a lot of information. - -ScottFree should run all the Scott Adams, Brian Howarth and some other -Adventure International games. (Gremlins and Supergran have a compressed -action table, Robin Of Sherwood and Seas Of Blood have both a compressed -action table and compressed text. Seas Of Blood won't run straight off due -to the bizarre Fighting Fantasy (tm) combat system built into it.) - -Command Options ---------------- - -ScottFree [flags]-[save-file] - -Specifying save-file causes a restore of the save to take place. - -The flags are - --d Debugging info on load --i Generate 'I am' type messages (default) --y Generate 'You are', 'You are carrying' type messages for games that - use these instead (eg Robin Of Sherwood) --s Generate authentic Scott Adams driver light messages rather than - other driver style ones (Light goes out in %d turns..) --t Generate TRS80 style display (terminal width is 64 characters; a - line <-----------------> is displayed after the top stuff; objects - have periods after them instead of hyphens - - -Statement Of Copyright/License ------------------------------- - -This software is supplied subject to the GNU software copyleft (version 2) -available from GNU or for FTP from prep.ai.mit.edu. All material in this -program was developed by Swansea University Computer Society without -disassembly of any other game drivers, only of game databases as permitted -by EEC law (for purposes of compatibility). It is your responsibility not -to transfer this software to any country where such reverse engineering is -not permitted. This software license does not include any rights with -regards to the Scott Adams games themselves. These games are copyright and -you should obtain them from a legal source. - -The following information sources were used to produce the game driver: - -PC-SIG disk of Adventureland: - This gives the Adventureland database as well as about 80% of the -full interpreter system. The core of the gamedriver was written using this -as a reference to the game code. - -Byte Dec 1980: - This contains a good article about Scott and his games, as well as -a TRS80 driver and datafile writer for the 'Pirate Adventure' game. This -filled in some more answers as well as bits of the TRS80 data format - -P.D.Doherty: - Many thanks go to him for figuring out a load more actions, testing, -hunting for games which used unknown actions and for writing a Scott Adams -database to readable text convertor. This helped resolve several other -actions. - - -Changes 1.14 ------------- - -o Bit flag 16 support -o Lamp behaviour flag '-p' for prehistoric databases which don't use - bit 16 -o Light out messages don't appear when the lamp is elsewhere. -o Automatic get/drop has synonym support. - -Changes 1.13 ------------- - -o Darkness is now done like the actual Scott driver seems to do it, - using bit flag 15. Fixes problems in The Count -o Display problem with 4.4BSD curses fixed (added a wmove() call) -o Can't TAKE ALL in a dark room. - -Changes 1.12a -------------- - -o Merged in some fixes by Steve Rice - (Variables for terminal size, wrong wraparound due to bug in Look(), - TRS80 style option) -o Updated PC version. - -Changes 1.12 ------------- - -o Merged in some fixes by Antoine Sabot-Durand - (Redraw in dark rooms, darkness flag testing, Action 74 bug). - 'Pirate Adventure' should now work. -o Added some comments -o Added a makefile -o Fixed several missing redraws. - -Changes 1.11 ------------- - -o Major bug in file reading routines fixed. This should now read - _ALL_ the Scott Adams files without you having to add spaces. -o Knows about the use of // in item texts and correctly handles it. -o Uses unsigned char for the location of an item so that it correctly - behaves like the spectrum editions on wrapping. This makes a lot - more of the Brian Howarth material work. -o Rewrote the awful OutBuf() function to be a bit neater. -o Messed up the neat OutBuf() function by supporting old BSD curses - too. Linux people and 386BSD people should now be in luck, as - should any old BSD4.x users. -o TAKE ALL/DROP ALL. Emulates Brian Howarth driver including the - number of moves bug. - NOTE:: TAKE ALL/DROP ALL count as one move. In some games that - give limited moves for things this makes it easier or enables - you to do things you should not be able to. The Brian Howarth - games all have this feature and should be fine. -o Started work on an Xview version - don't expect it just yet. -o Fixed a major cockup in the execution rules for lines. Robin Of - Sherwood lets you out of the cell without killing you at last. -o Place item -> location failed with some compilers (most), now - made portable. -o WAIT action refreshes display first -o Redraws any pending display changes before the status table -o Option flags tidied up. - -Changes 1.10 ------------- - -o Action 75 added (dunno how it was missed) -o Corrected second Byte year reference - -Changes 1.9 ------------ - -o Inventory short cut -o Swap room flag/location now fixed. This should make Claymorgue work - correctly (ha!). -o Corrected Byte reference from 1990 to 1980. - -Changes 1.8 ------------ - -o Move location action sets the redraw flag -o Driver ignored last line of table (now fixed) -o Save/Load implemented. -o N,E,S,W,U,D shortcuts added. I will add the item ones once I've - loaded a few more fake saves into the genuine Brian Howarth driver - to figure out how it works. - -To Do ------ - -o Tidy up TAKE ALL/DROP ALL. They match the Spectrum version - - which appears to be buggy. Also note that using GET ALL / DROP ALL - with older games _MAY_BREAK_THINGS_. Maybe this should be a flagged - option. -
-This software is supplied subject to the GNU software copyleft (version 2) -available from GNU or for FTP from prep.ai.mit.edu. All material in this -program was developed by Swansea University Computer Society without -disassembly of any other game drivers, only of game databases as permitted -by EEC law (for purposes of compatibility). It is your responsibility not -to transfer this software to any country where such reverse engineering is -not permitted. This software license does not include any rights with -regards to the Scott Adams games themselves. These games are copyright and -you should obtain them from a legal source. - -The following information sources were used to produce the game driver: - -PC-SIG disk of Adventureland: - This gives the Adventureland database as well as about 80% of the -full interpreter system. The core of the gamedriver was written using this -as a reference to the game code. - -Byte Dec 1980: - This contains a good article about Scott and his games, as well as -a TRS80 driver and datafile writer for the 'Pirate Adventure' game. This -filled in some more answers as well as bits of the TRS80 data format - -P.D.Doherty: - Many thanks go to him for figuring out a load more actions, testing, -hunting for games which used unknown actions and for writing a Scott Adams -database to readable text convertor. This helped resolve several other -actions. --
-TADS 2 FREEWARE SOURCE CODE LICENSE - -The TADS 2 source code is Copyright 1991, 2003 by Michael J. Roberts. - -The author hereby grants you permission to use, copy, and -distribute this software, if you agree to the following conditions: - - 1. You must include this license and the copyright notice with - all copies. - 2. You may not require or collect a fee for copies of this - software, or any part of this software, that you give to - other people. - 3. You may not include this software with any other software - for which a fee is collected. - 4. You may not modify this software except as permitted below - (see "derivative works"), and each copy you make and - distribute must be a full and complete copy of the software - you originally received. - 5. Anyone to whom you give a copy of this software receives - all of the same permissions that you did under this license - and is subject to all of the same restrictions. - 6. You are not allowed to create derivative works, which are - works that contain or are based on all or part of this work, - except under the conditions described below. - 7. Any derivative works are subject to this same license. - - -Derivative Works ----------------- - -This source code is distributed for the specific purpose of -facilitating the creation of versions of TADS on various computers and -operating systems. All other derivative works are prohibited without -the written permission of the author. Please contact the author if -you have any questions about this or if you'd like permission to -create a derived work. - -If you port TADS to a new platform, the author does grant permission -for you to distribute your ported version - I encourage it, in fact. -We ask that you provide your contact information in any distribution -package you create, so that users of your version will know how to -contact you if they have any questions relating specifically to your -version. - ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -TADS 3 FREEWARE SOURCE CODE LICENSE - -The TADS 3 source code is Copyright 1998, 2012 by Michael J. Roberts. - -The author hereby grants you permission to use, copy, and distribute -this software, if you agree to the following conditions: - - 1. You must include this license and the copyright notice with - all copies. - 2. You may not require or collect a fee for copies of this - software, or any part of this software, that you give to - other people. - 3. You may not include this software with any other software - for which a fee is collected. - 4. You may not modify this software except as permitted below - (see "derivative works"), and each copy you make and - distribute must be a full and complete copy of the software - you originally received. - 5. Anyone to whom you give a copy of this software receives - all of the same permissions that you did under this license - and is subject to all of the same restrictions. - 6. You are not allowed to create derivative works, which are - works that contain or are based on all or part of this work, - except under the conditions described below. - 7. Any derivative works are subject to this same license. - - -Derivative Works ----------------- - -This source code is distributed for the specific purpose of porting -TADS, so that you can run the software on any system of your choosing. -All other derivative works are prohibited without the written -permission of the author. I want to avoid the creation of variations -on the system, because it leads to confusion on the part of users if -there are multiple incompatible flavors floating around. However, if -you have a specific idea in mind, I'd be happy to at least consider -it. Please contact the author if you have any questions about this or -if you would like permission to create a derived work. - -If you port TADS to a new platform, the author does grant permission -for you to distribute your ported version - I encourage it, in fact. -I ask that you include your contact information in any distribution -package you create, so that users of your version will know how to -contact you if they have any questions relating specifically to your -version. - ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -FROBTADS LICENSE - -Copyright (c) Nikos Chantziaras. - -This software is distributed under the terms and conditions of the -"TADS 3 FREEWARE SOURCE CODE LICENSE". The text of this license can be -found in tads3/LICENSE.TXT, as included in the packaging of this file. - -Note to distributors and packagers: - -The license does not permit distribution of this software if a fee is -collected for this service, nor inclusion of this software with other -software for which a fee is collected without the maintainer's -permission. - --
Special thanks to:
@@ -5455,4 +1741,4 @@