Wikia

Wikihack

Source:Global.h

2,032pages on
this wiki
Talk0

Below is the full text to include/global.h from NetHack 3.4.3. To link to a particular line, write [[global.h#line123]], for example.

1.    /*	SCCS Id: @(#)global.h	3.4	2003/08/31	*/
2.    /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
3.    /* NetHack may be freely redistributed.  See license for details. */
4.    
The NetHack General Public License applies to screenshots, source code and other content from NetHack.
5.    #ifndef GLOBAL_H
6.    #define GLOBAL_H
7.    
8.    #include <stdio.h>
9.    
10.   
11.   /* #define BETA	*/	/* if a beta-test copy	[MRS] */
12.   
13.   /*
14.    * Files expected to exist in the playground directory.
15.    */
16.   
17.   #define RECORD	      "record"	/* file containing list of topscorers */
18.   #define HELP	      "help"	/* file containing command descriptions */
19.   #define SHELP	      "hh"	/* abbreviated form of the same */
20.   #define DEBUGHELP     "wizhelp" /* file containing debug mode cmds */
21.   #define RUMORFILE     "rumors"	/* file with fortune cookies */
22.   #define ORACLEFILE    "oracles" /* file with oracular information */
23.   #define DATAFILE      "data"	/* file giving the meaning of symbols used */
24.   #define CMDHELPFILE   "cmdhelp" /* file telling what commands do */
25.   #define HISTORY       "history" /* file giving nethack's history */
26.   #define LICENSE       "license" /* file with license information */
27.   #define OPTIONFILE    "opthelp" /* file explaining runtime options */
28.   #define OPTIONS_USED  "options" /* compile-time options, for #version */
29.   
30.   #define LEV_EXT ".lev"		/* extension for special level files */
31.   
32.   
33.   /* Assorted definitions that may depend on selections in config.h. */
34.   
35.   /*
36.    * for DUMB preprocessor and compiler, e.g., cpp and pcc supplied
37.    * with Microport SysV/AT, which have small symbol tables;
38.    * DUMB if needed is defined in CFLAGS
39.    */
40.   #ifdef DUMB
41.   #ifdef BITFIELDS
42.   #undef BITFIELDS
43.   #endif
44.   #ifndef STUPID
45.   #define STUPID
46.   #endif
47.   #endif	/* DUMB */
48.   
49.   /*
50.    * type xchar: small integers in the range 0 - 127, usually coordinates
51.    * although they are nonnegative they must not be declared unsigned
52.    * since otherwise comparisons with signed quantities are done incorrectly
53.    */
54.   typedef schar	xchar;
55.   #ifndef SKIP_BOOLEAN
56.   typedef xchar	boolean;		/* 0 or 1 */
57.   #endif
58.   
59.   #ifndef TRUE		/* defined in some systems' native include files */
60.   #define TRUE	((boolean)1)
61.   #define FALSE	((boolean)0)
62.   #endif
63.   
64.   #ifndef STRNCMPI
65.   # ifndef __SASC_60		/* SAS/C already shifts to stricmp */
66.   #  define strcmpi(a,b) strncmpi((a),(b),-1)
67.   # endif
68.   #endif
69.   
70.   /* comment out to test effects of each #define -- these will probably
71.    * disappear eventually
72.    */
73.   #ifdef INTERNAL_COMP
74.   # define RLECOMP	/* run-length compression of levl array - JLee */
75.   # define ZEROCOMP	/* zero-run compression of everything - Olaf Seibert */
76.   #endif
77.   
78.   /* #define SPECIALIZATION */	/* do "specialized" version of new topology */
79.   
80.   
81.   #ifdef BITFIELDS
82.   #define Bitfield(x,n)	unsigned x:n
83.   #else
84.   #define Bitfield(x,n)	uchar x
85.   #endif
86.   
87.   #ifdef UNWIDENED_PROTOTYPES
88.   # define CHAR_P char
89.   # define SCHAR_P schar
90.   # define UCHAR_P uchar
91.   # define XCHAR_P xchar
92.   # define SHORT_P short
93.   #ifndef SKIP_BOOLEAN
94.   # define BOOLEAN_P boolean
95.   #endif
96.   # define ALIGNTYP_P aligntyp
97.   #else
98.   # ifdef WIDENED_PROTOTYPES
99.   #  define CHAR_P int
100.  #  define SCHAR_P int
101.  #  define UCHAR_P int
102.  #  define XCHAR_P int
103.  #  define SHORT_P int
104.  #  define BOOLEAN_P int
105.  #  define ALIGNTYP_P int
106.  # endif
107.  #endif
108.  #if defined(ULTRIX_PROTO) && !defined(__STDC__)
109.  /* The ultrix 2.0 and 2.1 compilers (on Ultrix 4.0 and 4.2 respectively) can't
110.   * handle "struct obj *" constructs in prototypes.  Their bugs are different,
111.   * but both seem to work if we put "void*" in the prototype instead.  This
112.   * gives us minimal prototype checking but avoids the compiler bugs.
113.   *
114.   * OBJ_P and MONST_P should _only_ be used for declaring function pointers.
115.   */
116.  #define OBJ_P void*
117.  #define MONST_P void*
118.  #else
119.  #define OBJ_P struct obj*
120.  #define MONST_P struct monst*
121.  #endif
122.  
123.  #define SIZE(x) (int)(sizeof(x) / sizeof(x[0]))
124.  
125.  
126.  /* A limit for some NetHack int variables.  It need not, and for comparable
127.   * scoring should not, depend on the actual limit on integers for a
128.   * particular machine, although it is set to the minimum required maximum
129.   * signed integer for C (2^15 -1).
130.   */
131.  #define LARGEST_INT	32767
132.  
133.  
134.  #ifdef REDO
135.  #define Getchar pgetchar
136.  #endif
137.  
138.  
139.  #include "coord.h"
140.  /*
141.   * Automatic inclusions for the subsidiary files.
142.   * Please don't change the order.  It does matter.
143.   */
144.  
145.  #ifdef VMS
146.  #include "vmsconf.h"
147.  #endif
148.  
149.  #ifdef UNIX
150.  #include "unixconf.h"
151.  #endif
152.  
153.  #ifdef OS2
154.  #include "os2conf.h"
155.  #endif
156.  
157.  #ifdef MSDOS
158.  #include "pcconf.h"
159.  #endif
160.  
161.  #ifdef TOS
162.  #include "tosconf.h"
163.  #endif
164.  
165.  #ifdef AMIGA
166.  #include "amiconf.h"
167.  #endif
168.  
169.  #ifdef MAC
170.  #include "macconf.h"
171.  #endif
172.  
173.  #ifdef __BEOS__
174.  #include "beconf.h"
175.  #endif
176.  
177.  #ifdef WIN32
178.  #ifdef WIN_CE
179.  #include "wceconf.h"
180.  #else
181.  #include "ntconf.h"
182.  #endif
183.  #endif
184.  
185.  /* Displayable name of this port; don't redefine if defined in *conf.h */
186.  #ifndef PORT_ID
187.  # ifdef AMIGA
188.  #  define PORT_ID	"Amiga"
189.  # endif
190.  # ifdef MAC
191.  #  define PORT_ID	"Mac"
192.  # endif
193.  # ifdef MSDOS
194.  #  ifdef PC9800
195.  #  define PORT_ID	"PC-9800"
196.  #  else
197.  #  define PORT_ID	"PC"
198.  #  endif
199.  #  ifdef DJGPP
200.  #  define PORT_SUB_ID	"djgpp"
201.  #  else
202.  #   ifdef OVERLAY
203.  #  define PORT_SUB_ID	"overlaid"
204.  #   else
205.  #  define PORT_SUB_ID	"non-overlaid"
206.  #   endif
207.  #  endif
208.  # endif
209.  # ifdef OS2
210.  #  define PORT_ID	"OS/2"
211.  # endif
212.  # ifdef TOS
213.  #  define PORT_ID	"ST"
214.  # endif
215.  # ifdef UNIX
216.  #  define PORT_ID	"Unix"
217.  # endif
218.  # ifdef VMS
219.  #  define PORT_ID	"VMS"
220.  # endif
221.  # ifdef WIN32
222.  #  define PORT_ID	"Windows"
223.  #  ifndef PORT_SUB_ID
224.  #   ifdef MSWIN_GRAPHICS
225.  #    define PORT_SUB_ID	"graphical"
226.  #   else
227.  #    define PORT_SUB_ID	"tty"
228.  #   endif
229.  #  endif
230.  # endif
231.  #endif
232.  
233.  #if defined(MICRO)
234.  #if !defined(AMIGA) && !defined(TOS) && !defined(OS2_HPFS)
235.  #define SHORT_FILENAMES		/* filenames are 8.3 */
236.  #endif
237.  #endif
238.  
239.  #ifdef VMS
240.  /* vms_exit() (sys/vms/vmsmisc.c) expects the non-VMS EXIT_xxx values below.
241.   * these definitions allow all systems to be treated uniformly, provided
242.   * main() routines do not terminate with return(), whose value is not
243.   * so massaged.
244.   */
245.  # ifdef EXIT_SUCCESS
246.  #  undef EXIT_SUCCESS
247.  # endif
248.  # ifdef EXIT_FAILURE
249.  #  undef EXIT_FAILURE
250.  # endif
251.  #endif
252.  
253.  #ifndef EXIT_SUCCESS
254.  # define EXIT_SUCCESS 0
255.  #endif
256.  #ifndef EXIT_FAILURE
257.  # define EXIT_FAILURE 1
258.  #endif
259.  
260.  #if defined(X11_GRAPHICS) || defined(QT_GRAPHICS) || defined(GNOME_GRAPHICS) || defined(MSWIN_GRAPHICS)
261.  # ifndef USE_TILES
262.  #  define USE_TILES		/* glyph2tile[] will be available */
263.  # endif
264.  #endif
265.  #if defined(AMII_GRAPHICS) || defined(GEM_GRAPHICS)
266.  # ifndef USE_TILES
267.  #  define USE_TILES
268.  # endif
269.  #endif
270.  
271.  
272.  #define Sprintf  (void) sprintf
273.  #define Strcat   (void) strcat
274.  #define Strcpy   (void) strcpy
275.  #ifdef NEED_VARARGS
276.  #define Vprintf  (void) vprintf
277.  #define Vfprintf (void) vfprintf
278.  #define Vsprintf (void) vsprintf
279.  #endif
280.  
281.  
282.  /* primitive memory leak debugging; see alloc.c */
283.  #ifdef MONITOR_HEAP
284.  extern long *FDECL(nhalloc, (unsigned int,const char *,int));
285.  extern void FDECL(nhfree, (genericptr_t,const char *,int));
286.  # ifndef __FILE__
287.  #  define __FILE__ ""
288.  # endif
289.  # ifndef __LINE__
290.  #  define __LINE__ 0
291.  # endif
292.  # define alloc(a) nhalloc(a,__FILE__,(int)__LINE__)
293.  # define free(a) nhfree(a,__FILE__,(int)__LINE__)
294.  #else	/* !MONITOR_HEAP */
295.  extern long *FDECL(alloc, (unsigned int));		/* alloc.c */
296.  #endif
297.  
298.  /* Used for consistency checks of various data files; declare it here so
299.     that utility programs which include config.h but not hack.h can see it. */
300.  struct version_info {
301.  	unsigned long	incarnation;	/* actual version number */
302.  	unsigned long	feature_set;	/* bitmask of config settings */
303.  	unsigned long	entity_count;	/* # of monsters and objects */
304.  	unsigned long	struct_sizes;	/* size of key structs */
305.  };
306.  
307.  
308.  /*
309.   * Configurable internal parameters.
310.   *
311.   * Please be very careful if you are going to change one of these.  Any
312.   * changes in these parameters, unless properly done, can render the
313.   * executable inoperative.
314.   */
315.  

Note that you *can* change COLNO and ROWNO in order to produce a NetHack that generates larger levels than normal. However, it is bones- and save- incompatible in a way that is NOT detected properly and will crash your game; and the panning mechanism which lets you play ordinary 80x21 games on a smaller screen does not work, so you will need an actually larger screen.

316.  /* size of terminal screen is (at least) (ROWNO+3) by COLNO */
317.  #define COLNO	80
318.  #define ROWNO	21
319.  
320.  #define MAXNROFROOMS	40	/* max number of rooms per level */
321.  #define MAX_SUBROOMS	24	/* max # of subrooms in a given room */
322.  #define DOORMAX		120	/* max number of doors per level */
323.  
324.  #define BUFSZ		256	/* for getlin buffers */
325.  #define QBUFSZ		128	/* for building question text */
326.  #define TBUFSZ		300	/* toplines[] buffer max msg: 3 81char names */
327.  				/* plus longest prefix plus a few extra words */
328.  
329.  #define PL_NSIZ		32	/* name of player, ghost, shopkeeper */
330.  #define PL_CSIZ		32	/* sizeof pl_character */
331.  #define PL_FSIZ		32	/* fruit name */
332.  #define PL_PSIZ		63	/* player-given names for pets, other
333.  				 * monsters, objects */
334.  
335.  #define MAXDUNGEON	16	/* current maximum number of dungeons */
336.  #define MAXLEVEL	32	/* max number of levels in one dungeon */
337.  #define MAXSTAIRS	1	/* max # of special stairways in a dungeon */
338.  #define ALIGNWEIGHT	4	/* generation weight of alignment */
339.  
340.  #define MAXULEV		30	/* max character experience level */
341.  
342.  #define MAXMONNO	120	/* extinct monst after this number created */
343.  #define MHPMAX		500	/* maximum monster hp */
344.  
345.  #endif /* GLOBAL_H */

Around Wikia's network

Random Wiki