diff options
Diffstat (limited to 'engines/glk/agt/config.h')
-rw-r--r-- | engines/glk/agt/config.h | 289 |
1 files changed, 289 insertions, 0 deletions
diff --git a/engines/glk/agt/config.h b/engines/glk/agt/config.h new file mode 100644 index 0000000000..0780e1a9a6 --- /dev/null +++ b/engines/glk/agt/config.h @@ -0,0 +1,289 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef GLK_AGT_CONFIG +#define GLK_AGT_CONFIG + +#include "glk/glk_api.h" +#include "common/stream.h" + +namespace Glk { +namespace AGT { + +/* + This file contains most of the configuration information + including the platform-dependent #define statements + It's in three major sections: + --Platform specific defines for various platforms, each + surrounded by "#ifdef <platform>" and "#endif" + --Various defaults + --Filename extensions + + Ideally, a port to a new platform should only need to modify this + file, the makefile, os_<whatever>.c, and possibly filename.c. (In + practice, you may also need to tweak the the high-level I/O code + in interface.c or the memory-allocation code in util.c. If you + find yourself needing to do more than that, get in touch with me.) */ + +#undef _WIN32 /* GARGLK */ + + +/* Default to PLAIN platform */ +/* At the moment, you can replace this with LINUX, HPUX, AMIGA, */ +/* MSDOS, SUN, or NEXT; some of these may require the correct os_... */ +/* file to work */ +/* (In particular, AMIGA requires David Kinder's os_amiga.c file) */ +/* The actual platform specific defines don't start until a few */ +/* lines down, past the #includes and the definition of global */ +#ifndef PLAIN +#define PLAIN +#endif + +/* ------------------------------------------------------------------- */ +/* PLATFORM SPECIFIC DEFINITIONS, ETC. */ +/* See agility.doc or porting.txt for more information. */ +/* Things you can currently define: */ +/* fix_ascii: 1=translate IBM character set, 0=don't */ +/* NEED_STR_CMP: define if strcasecmp() not defined on your system */ +/* NEED_STRN_CMP: define if strncasecmp() not defined on your system */ +/* HAVE_STRDUP: define if strdup() exists on your system */ +/* REPLACE_GETFILE: define if you replace the default get_user_file(). */ +/* REPLACE_MENU if you replace agt_menu(). */ +/* REPLACE_MAIN: define if you replace the default main(). */ +/* (replacements should be defined in the relevant os_<platform>.c file) */ +/* DA1,DA2,...DA6,DSS,pTTL: file name extensions for the various AGT + files */ +/* HAVE_SLEEP if your platform has the sleep() function */ +/* BUFF_SIZE is the maximum size of the buffer to use when reading + in files. Regardless, it will be made no bigger than the file + being read in and no smaller than the record size; thus setting + it to 0 will cause the smallest buffer to always be used and + setting this to 1MB will in practice always use a buffer the + sizs of the file. It defaults to 32K */ +/* CBUF_SIZE is the maximum size of the buffer used for reading in + the Master's Edition DA6 files; the size of the buffer in bytes + is twice this value (since an individual token is two bytes long). */ +/* DESCR_BUFFSIZE is the maximum size of the description text block before + the interpreter will read it from disk rather than storing it in + memory during play. At the moment this only affects AGX games; + original AGT games always use the disk. */ +/* DOHASH to use a hash table for dictionary searches; the only + reason not to have this would be memory */ +/* HASHBITS determines the size of the hash table: (2^HASHBITS)*sizeof(word); + the hash table must be at least as large as the dictionary. + In practice this means HASHBITS should be at least 12; + this is the current default. */ +/* MAXSTRUC The maximum size (in chars) which a single data structure can + be on this platform. This defaults to 1MB (i.e. no limit for + practical purposes). In practice I know of no game files that + require any structures bigger than about 30K. */ +/* LOWMEM Define this if you are low on memory. At the moment this + only saves a few K.*/ +/* PORTSTR Is the string describing this particular port. + e.g. #define PORTSTR "OrfDOS Port by R.J. Wright" */ +/* UNIX_IO if you have Unix-like low level file I/O functions. + (MS-DOS, for example, does). This speeds up the reading + of the large game data files on some platforms. If this is + defined, READFLAG, WRITEFLAG, and FILE_PERM also need to + be defined. (Giving the flags needed for opening a file for + reading or writing, and the file permissions to be given to newly + created files. */ +/* OPEN_AS_TEXT Define to cause text files to be opened as text files. */ +/* PREFIX_EXT Add filename extensions at the beginning of the name, + rather than at the end. */ +/* PATH_SEP, if defined, is a string containing all characters which + can be used to separate the path from the filename. */ +/* pathtest(s) is a macro that should check whether the given string + is an absolute path. If this is left undefined, then _all_ + paths will be treated as absolute. You don't need to define + this if you are replacing filename.c. */ +/* ------------------------------------------------------------------- */ + +/* force16 is used purely for debugging purposes, to make sure that + everything works okay even with 16-bit ints */ +/* #define force16 */ + +#define DOHASH + +/* + * The Glk port is very similar to plain ASCII, to give it the best + * chance at success on multiple Glk platforms. The only basic change + * is to turn off IBM character translations; Glk works in ISO 8859 + * Latin-1, which can offer slightly closer translation of the IBM + * code page 437 characters that the simpler mappings in the core + * AGiliTy code. The os_glk.c module handles the translations. + */ +#ifdef GARGLK +#define NEED_STR_CMP /* Inherited from PLAIN. */ +#define NEED_STRN_CMP /* Inherited from PLAIN. */ +#define BUFF_SIZE 0 /* Inherited from PLAIN. */ +#define CBUF_SIZE (5000L) /* Inherited from PLAIN. */ +#define INBUFF_SIZE (1024) /* Inherited from PLAIN. */ +#define fix_ascii 0 /* os_glk.c does translations. */ +#define MAXSTRUC (1024L*1024L) /* 32Kb from PLAIN is too small for + several games (including Soggy). */ +#define PORTSTR "Glk version" /* Identify ourselves discreetly. */ +#define REPLACE_GETFILE /* Override get_user_file. */ +#define REPLACE_MAIN /* Override main. */ +#define fnamecmp strcasecmp /* Case insensitive filename compare. */ +#undef PLAIN + +#endif + +/* PLAIN should always come last, giving everyone else a chance + to #undef it. */ +#ifdef PLAIN /* This should work if nothing else does */ +#define NEED_STR_CMP +#define NEED_STRN_CMP +#define BUFF_SIZE 0 +#define CBUF_SIZE (5000L) +#define INBUFF_SIZE (1024) /* Used by Magx */ +#define MAXSTRUC (32L*1024L) /* IIRC, 32K is the minimum required by + the ANSI standard */ +#define PORTSTR "Pure ANSI C version" +#endif + + +/* __GNUC__ */ + + +/* ------------------------------------------------------------------- */ +/* DEFAULTS FOR "PLATFORM SPECIFIC" DEFINES */ +/* ------------------------------------------------------------------- */ + +#ifdef __STRICT_ANSI__ +#define NEED_STR_CMP +#define NEED_STRN_CMP +#undef HAVE_STRDUP +#endif + +#ifndef fix_ascii +#define fix_ascii 1 /* Translate IBM character set by default */ +#endif + +#ifndef BUFF_SIZE +#ifdef LOWMEM +#define BUFF_SIZE 0 /* i.e. unbuffered */ +#else +#define BUFF_SIZE (32L*1024L) /* 32K */ +#endif +#endif /* BUFF_SIZE */ + +#ifndef MAXSTRUC +#define MAXSTRUC (1024L*1024L) +#endif + +#ifndef DESCR_BUFFSIZE +#define DESCR_BUFFSIZE 0 /* Always load descriptions from disk */ +#endif + +#ifndef HASHBITS +#ifdef LOWMEM +#define HASHBITS 12 /* 4K entries */ +#else +#define HASHBITS 13 /* 8K entries in hash table */ +#endif +#endif /* HASHBITS */ + +#ifndef fnamecmp /* Used to compare filenames */ +#define fnamecmp strcmp +#endif + +#ifndef fnamencmp /* Also used to compare filenames */ +#define fnamencmp strncmp +#endif + +/* If DOSFARDATA hasn't been defined, define it as the empty string. */ +#ifndef DOSFARDATA +#define DOSFARDATA +#endif + +/* ---------------------------------------------------------------------- */ +/* FILENAME EXTENSIONS */ +/* These are the various filename extensions for the different data files.*/ +/* ---------------------------------------------------------------------- */ + +/* The following are only used by the interpreter, agtout, and agt2agx */ +#ifndef DA1 +#define DA1 ".da1" /* General info (text file) */ +#define DA2 ".da2" /* Rooms */ +#define DA3 ".da3" /* Items */ +#define DA4 ".da4" /* Creatures */ +#define DA5 ".da5" /* Commands, headers */ +#define DA6 ".da6" /* Commands, code (Master's Ed only) */ +#define DSS ".d$$" /* Description strings */ +#define pHNT ".hnt" /* Popup hint file; not used yet. */ +#define pOPT ".opt" /* Interface specification file */ +#endif + +/* The following are only used by the Magx compiler */ +#ifndef pAGT +#define pAGT ".agt" +#define pDAT ".dat" +#define pMSG ".msg" +#define pCMD ".cmd" +#define pSTD ".std" +#define AGTpSTD "agt.std" /* Default error message file */ +#endif + +/* The following are used by both the interpreter and the compiler */ +#ifndef pAGX +#define pAGX ".agx" /* Extension for new Adventure Game eXecutable format */ +#define pTTL ".ttl" /* Title file */ +#define pINS ".ins" /* Instruction file */ +#define pVOC ".voc" /* Menu vocabulary file */ +#define pCFG ".cfg" /* Game configuration file */ +#define pEXT "." /* Separator between extension and base of filename */ +#endif + + +#ifndef pSAV +#define pSAV ".sav" /* Extension for save files */ +#endif + +#ifndef pSCR +#define pSCR ".scr" /* Script file */ +#endif + +#ifndef pLOG +#define pLOG ".log" /* LOG/REPLAY file */ +#endif + + + + + +/* Finally, two potentially platform dependent type defintions, + for binary and text files respectively. Don't change these + unless you are also changing filename.c */ + +typedef Common::Stream *genfile; +typedef char *file_id_type; /* i.e. the filename */ + +#define NO_FILE_ID NULL +#define BAD_TEXTFILE NULL +#define BAD_BINFILE NULL + +} // End of namespace AGT +} // End of namespace Glk + +#endif |