- 0 Talk
-
Source:Global.h
Redirected from Global.h
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 */