1/* SCCS Id: @(#)config.h 3.4 2003/12/06 */ 2/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3/* NetHack may be freely redistributed. See license for details. */ 4 5#ifndef CONFIG_H /* make sure the compiler does not see the typedefs twice */ 6#define CONFIG_H 7 8 9/* 10 * Section 1: Operating and window systems selection. 11 * Select the version of the OS you are using. 12 * For "UNIX" select BSD, ULTRIX, SYSV, or HPUX in unixconf.h. 13 * A "VMS" option is not needed since the VMS C-compilers 14 * provide it (no need to change sec#1, vmsconf.h handles it). 15 */ 16 17#define UNIX /* delete if no fork(), exec() available */ 18 19/* #define MSDOS */ /* in case it's not auto-detected */ 20 21/* #define OS2 */ /* define for OS/2 */ 22 23/* #define TOS */ /* define for Atari ST/TT */ 24 25/* #define STUPID */ /* avoid some complicated expressions if 26 your C compiler chokes on them */ 27/* #define MINIMAL_TERM */ 28 /* if a terminal handles highlighting or tabs poorly, 29 try this define, used in pager.c and termcap.c */ 30/* #define ULTRIX_CC20 */ 31 /* define only if using cc v2.0 on a DECstation */ 32/* #define ULTRIX_PROTO */ 33 /* define for Ultrix 4.0 (or higher) on a DECstation; 34 * if you get compiler errors, don't define this. */ 35 /* Hint: if you're not developing code, don't define 36 ULTRIX_PROTO. */ 37 38#include "config1.h" /* should auto-detect MSDOS, MAC, AMIGA, and WIN32 */ 39 40 41/* Windowing systems... 42 * Define all of those you want supported in your binary. 43 * Some combinations make no sense. See the installation document. 44 */ 45#define TTY_GRAPHICS /* good old tty based graphics */ 46/* #define X11_GRAPHICS */ /* X11 interface */ 47/* #define QT_GRAPHICS */ /* Qt interface */ 48/* #define GNOME_GRAPHICS */ /* Gnome interface */ 49/* #define MSWIN_GRAPHICS */ /* Windows NT, CE, Graphics */ 50 51/* 52 * Define the default window system. This should be one that is compiled 53 * into your system (see defines above). Known window systems are: 54 * 55 * tty, X11, mac, amii, BeOS, Qt, Gem, Gnome 56 */ 57 58/* MAC also means MAC windows */ 59#ifdef MAC 60# ifndef AUX 61# define DEFAULT_WINDOW_SYS "mac" 62# endif 63#endif 64 65/* Amiga supports AMII_GRAPHICS and/or TTY_GRAPHICS */ 66#ifdef AMIGA 67# define AMII_GRAPHICS /* (optional) */ 68# define DEFAULT_WINDOW_SYS "amii" /* "amii", "amitile" or "tty" */ 69#endif 70 71/* Atari supports GEM_GRAPHICS and/or TTY_GRAPHICS */ 72#ifdef TOS 73# define GEM_GRAPHICS /* Atari GEM interface (optional) */ 74# define DEFAULT_WINDOW_SYS "Gem" /* "Gem" or "tty" */ 75#endif 76 77#ifdef __BEOS__ 78#define BEOS_GRAPHICS /* (optional) */ 79#define DEFAULT_WINDOW_SYS "BeOS" /* "tty" */ 80#ifndef HACKDIR /* override the default hackdir below */ 81# define HACKDIR "/boot/apps/NetHack" 82#endif 83#endif 84 85#ifdef QT_GRAPHICS 86# define DEFAULT_WC_TILED_MAP /* Default to tiles if users doesn't say wc_ascii_map */ 87# define USER_SOUNDS /* Use sounds */ 88# ifndef __APPLE__ 89# define USER_SOUNDS_REGEX 90# endif 91# define USE_XPM /* Use XPM format for images (required) */ 92# define GRAPHIC_TOMBSTONE /* Use graphical tombstone (rip.ppm) */ 93# ifndef DEFAULT_WINDOW_SYS 94# define DEFAULT_WINDOW_SYS "Qt" 95# endif 96#endif 97 98#ifdef GNOME_GRAPHICS 99# define USE_XPM /* Use XPM format for images (required) */ 100# define GRAPHIC_TOMBSTONE /* Use graphical tombstone (rip.ppm) */ 101# ifndef DEFAULT_WINDOW_SYS 102# define DEFAULT_WINDOW_SYS "Gnome" 103# endif 104#endif 105 106#ifdef MSWIN_GRAPHICS 107# ifdef TTY_GRAPHICS 108# undef TTY_GRAPHICS 109# endif 110# ifndef DEFAULT_WINDOW_SYS 111# define DEFAULT_WINDOW_SYS "mswin" 112# endif 113# define HACKDIR "\\nethack" 114#endif 115 116#ifndef DEFAULT_WINDOW_SYS 117# define DEFAULT_WINDOW_SYS "tty" 118#endif 119 120#ifdef X11_GRAPHICS 121/* 122 * There are two ways that X11 tiles may be defined. (1) using a custom 123 * format loaded by NetHack code, or (2) using the XPM format loaded by 124 * the free XPM library. The second option allows you to then use other 125 * programs to generate tiles files. For example, the PBMPlus tools 126 * would allow: 127 * xpmtoppm <x11tiles.xpm | pnmscale 1.25 | ppmquant 90 >x11tiles_big.xpm 128 */ 129/* # define USE_XPM */ /* Disable if you do not have the XPM library */ 130# ifdef USE_XPM 131# define GRAPHIC_TOMBSTONE /* Use graphical tombstone (rip.xpm) */ 132# endif 133#endif 134 135 136/* 137 * Section 2: Some global parameters and filenames. 138 * Commenting out WIZARD, LOGFILE, NEWS or PANICLOG removes that 139 * feature from the game; otherwise set the appropriate wizard 140 * name. LOGFILE, NEWS and PANICLOG refer to files in the 141 * playground. 142 */ 143 144#ifndef WIZARD /* allow for compile-time or Makefile changes */ 145# ifndef KR1ED 146# define WIZARD "wizard" /* the person allowed to use the -D option */ 147# else 148# define WIZARD 149# define WIZARD_NAME "wizard" 150# endif 151#endif 152 153#define LOGFILE "logfile" /* larger file for debugging purposes */ 154#define NEWS "news" /* the file containing the latest hack news */ 155#define PANICLOG "paniclog" /* log of panic and impossible events */ 156 157/* 158 * If COMPRESS is defined, it should contain the full path name of your 159 * 'compress' program. Defining INTERNAL_COMP causes NetHack to do 160 * simpler byte-stream compression internally. Both COMPRESS and 161 * INTERNAL_COMP create smaller bones/level/save files, but require 162 * additional code and time. Currently, only UNIX fully implements 163 * COMPRESS; other ports should be able to uncompress save files a 164 * la unixmain.c if so inclined. 165 * If you define COMPRESS, you must also define COMPRESS_EXTENSION 166 * as the extension your compressor appends to filenames after 167 * compression. 168 */ 169 170//#ifdef UNIX 171#if 0 172/* path and file name extension for compression program */ 173#define COMPRESS "/usr/bin/compress" /* Lempel-Ziv compression */ 174#define COMPRESS_EXTENSION ".Z" /* compress's extension */ 175/* An example of one alternative you might want to use: */ 176/* #define COMPRESS "/usr/local/bin/gzip" */ /* FSF gzip compression */ 177/* #define COMPRESS_EXTENSION ".gz" */ /* normal gzip extension */ 178#endif 179 180#ifndef COMPRESS 181# define INTERNAL_COMP /* control use of NetHack's compression routines */ 182#endif 183 184/* 185 * Data librarian. Defining DLB places most of the support files into 186 * a tar-like file, thus making a neater installation. See *conf.h 187 * for detailed configuration. 188 */ 189#define DLB /* not supported on all platforms */ 190 191/* 192 * Defining INSURANCE slows down level changes, but allows games that 193 * died due to program or system crashes to be resumed from the point 194 * of the last level change, after running a utility program. 195 */ 196//#define INSURANCE /* allow crashed game recovery */ // No insurance in RefOS. 197 198#ifndef MAC 199//# define CHDIR /* delete if no chdir() available */ 200#endif 201 202# ifndef HACKDIR 203#define HACKDIR "/fileserv/" 204# endif 205 206#ifdef CHDIR 207/* 208 * If you define HACKDIR, then this will be the default playground; 209 * otherwise it will be the current directory. 210 */ 211# ifndef HACKDIR 212# define HACKDIR "/usr/games/lib/nethackdir" 213# endif 214 215/* 216 * Some system administrators are stupid enough to make Hack suid root 217 * or suid daemon, where daemon has other powers besides that of reading or 218 * writing Hack files. In such cases one should be careful with chdir's 219 * since the user might create files in a directory of his choice. 220 * Of course SECURE is meaningful only if HACKDIR is defined. 221 */ 222/* #define SECURE */ /* do setuid(getuid()) after chdir() */ 223 224/* 225 * If it is desirable to limit the number of people that can play Hack 226 * simultaneously, define HACKDIR, SECURE and MAX_NR_OF_PLAYERS. 227 * #define MAX_NR_OF_PLAYERS 6 228 */ 229#endif /* CHDIR */ 230 231 232 233/* 234 * Section 3: Definitions that may vary with system type. 235 * For example, both schar and uchar should be short ints on 236 * the AT&T 3B2/3B5/etc. family. 237 */ 238 239/* 240 * Uncomment the following line if your compiler doesn't understand the 241 * 'void' type (and thus would give all sorts of compile errors without 242 * this definition). 243 */ 244/* #define NOVOID */ /* define if no "void" data type. */ 245 246/* 247 * Uncomment the following line if your compiler falsely claims to be 248 * a standard C compiler (i.e., defines __STDC__ without cause). 249 * Examples are Apollo's cc (in some versions) and possibly SCO UNIX's rcc. 250 */ 251/* #define NOTSTDC */ /* define for lying compilers */ 252 253#include "tradstdc.h" 254 255/* 256 * type schar: small signed integers (8 bits suffice) (eg. TOS) 257 * 258 * typedef char schar; 259 * 260 * will do when you have signed characters; otherwise use 261 * 262 * typedef short int schar; 263 */ 264#ifdef AZTEC 265# define schar char 266#else 267typedef signed char schar; 268#endif 269 270/* 271 * type uchar: small unsigned integers (8 bits suffice - but 7 bits do not) 272 * 273 * typedef unsigned char uchar; 274 * 275 * will be satisfactory if you have an "unsigned char" type; 276 * otherwise use 277 * 278 * typedef unsigned short int uchar; 279 */ 280#ifndef _AIX32 /* identical typedef in system file causes trouble */ 281typedef unsigned char uchar; 282#endif 283 284/* 285 * Various structures have the option of using bitfields to save space. 286 * If your C compiler handles bitfields well (e.g., it can initialize structs 287 * containing bitfields), you can define BITFIELDS. Otherwise, the game will 288 * allocate a separate character for each bitfield. (The bitfields used never 289 * have more than 7 bits, and most are only 1 bit.) 290 */ 291#define BITFIELDS /* Good bitfield handling */ 292 293/* #define STRNCMPI */ /* compiler/library has the strncmpi function */ 294 295/* 296 * There are various choices for the NetHack vision system. There is a 297 * choice of two algorithms with the same behavior. Defining VISION_TABLES 298 * creates huge (60K) tables at compile time, drastically increasing data 299 * size, but runs slightly faster than the alternate algorithm. (MSDOS in 300 * particular cannot tolerate the increase in data size; other systems can 301 * flip a coin weighted to local conditions.) 302 * 303 * If VISION_TABLES is not defined, things will be faster if you can use 304 * MACRO_CPATH. Some cpps, however, cannot deal with the size of the 305 * functions that have been macroized. 306 */ 307 308/* #define VISION_TABLES */ /* use vision tables generated at compile time */ 309#ifndef VISION_TABLES 310# ifndef NO_MACRO_CPATH 311# define MACRO_CPATH /* use clear_path macros instead of functions */ 312# endif 313#endif 314 315/* 316 * Section 4: THE FUN STUFF!!! 317 * 318 * Conditional compilation of special options are controlled here. 319 * If you define the following flags, you will add not only to the 320 * complexity of the game but also to the size of the load module. 321 */ 322 323/* dungeon features */ 324#define SINKS /* Kitchen sinks - Janet Walz */ 325/* dungeon levels */ 326#define WALLIFIED_MAZE /* Fancy mazes - Jean-Christophe Collet */ 327#define REINCARNATION /* Special Rogue-like levels */ 328/* monsters & objects */ 329#define KOPS /* Keystone Kops by Scott R. Turner */ 330#define SEDUCE /* Succubi/incubi seduction, by KAA, suggested by IM */ 331#define STEED /* Riding steeds */ 332#define TOURIST /* Tourist players with cameras and Hawaiian shirts */ 333/* difficulty */ 334#define ELBERETH /* Engraving the E-word repels monsters */ 335/* I/O */ 336#define REDO /* support for redoing last command - DGK */ 337#if !defined(MAC) 338# define CLIPPING /* allow smaller screens -- ERS */ 339#endif 340 341#ifdef REDO 342# define DOAGAIN '\001' /* ^A, the "redo" key used in cmd.c and getline.c */ 343#endif 344 345#define EXP_ON_BOTL /* Show experience on bottom line */ 346/* #define SCORE_ON_BOTL */ /* added by Gary Erickson (erickson@ucivax) */ 347 348/* 349 * Section 5: EXPERIMENTAL STUFF 350 * 351 * Conditional compilation of new or experimental options are controlled here. 352 * Enable any of these at your own risk -- there are almost certainly 353 * bugs left here. 354 */ 355 356/*#define GOLDOBJ */ /* Gold is kept on obj chains - Helge Hafting */ 357/*#define AUTOPICKUP_EXCEPTIONS */ /* exceptions to autopickup */ 358 359/* End of Section 5 */ 360 361#define NO_SIGNAL // No signals in RefOS. 362 363#include "global.h" /* Define everything else according to choices above */ 364 365#endif /* CONFIG_H */ 366