OSDN Git Service

finalize changelog
[jnethack/source.git] / include / pcconf.h
1 /* NetHack 3.6  pcconf.h        $NHDT-Date: 1457207019 2016/03/05 19:43:39 $  $NHDT-Branch: chasonr $:$NHDT-Revision: 1.19 $ */
2 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
3 /*-Copyright (c) Michael Allison, 2006. */
4 /* NetHack may be freely redistributed.  See license for details. */
5
6 #ifndef PCCONF_H
7 #define PCCONF_H
8
9 #define MICRO /* always define this! */
10
11 #ifdef MSDOS /* some of this material is MS-DOS specific */
12
13 /*
14  *  Automatic Defines:
15  *
16  *     __GO32__ is defined automatically by the djgpp port of gcc.
17  *     __DJGPP__ is defined automatically by djgpp version 2 and above.
18  *     _MSC_VER is defined automatically by Microsoft C.
19  *     __BORLANDC__ is defined automatically by Borland C.
20  *     __SC__ is defined automatically by Symantec C.
21  *      Note: 3.6.x was not verified with Symantec C.
22  */
23
24 #define CONFIG_FILE "defaults.nh"
25 #define GUIDEBOOK_FILE "Guidebook.txt"
26  
27 /*
28  *  The following options are somewhat configurable depending on
29  *  your compiler.
30  */
31
32 /*
33  *  For pre-V7.0 Microsoft Compilers only, manually define OVERLAY here.
34  */
35
36 /*#define OVERLAY */ /* Manual overlay definition (MSC 6.0ax only) */
37
38 #ifndef __GO32__
39 #define MFLOPPY /* Support for floppy drives and ramdisks by dgk */
40 #endif
41
42 #define SHELL /* via exec of COMMAND.COM */
43
44 #ifdef __BORLANDC__
45 #define PCMUSIC /* Music option, enable very basic pc speaker music notes */
46 #endif
47
48 /*
49  * Screen control options
50  *
51  * You may uncomment:
52  *                     ANSI_DEFAULT
53  *                or   TERMLIB
54  *                or   ANSI_DEFAULT and TERMLIB
55  *                or   NO_TERMS
56  */
57
58 /* # define TERMLIB */ /* enable use of termcap file /etc/termcap */
59                        /* or ./termcap for MSDOS (SAC) */
60                        /* compile and link in Fred Fish's termcap library, */
61                        /* enclosed in TERMCAP.ARC, to use this */
62
63 /* # define ANSI_DEFAULT */ /* allows NetHack to run without a ./termcap */
64
65 #define NO_TERMS /* Allows Nethack to run without ansi.sys by linking */
66                  /* screen routines into the .exe     */
67
68 #ifdef NO_TERMS     /* if NO_TERMS select one screen package below */
69 #define SCREEN_BIOS /* Use bios calls for all screen control */
70 /* #define SCREEN_DJGPPFAST */ /* Use djgpp fast screen routines        */
71 #endif
72
73 /* # define PC9800 */ /* Allows NetHack to run on NEC PC-9800 machines */
74 /* Yamamoto Keizo */
75
76 /*
77  * PC video hardware support options (for graphical tile support)
78  *
79  * You may uncomment any/all of the options below.
80  *
81  */
82 #ifndef SUPPRESS_GRAPHICS
83 #if (defined(SCREEN_BIOS) || defined(SCREEN_DJGPPFAST)) && !defined(PC9800)
84 #ifdef USE_TILES
85 #define SCREEN_VGA /* Include VGA         graphics routines in the build */
86 #define SCREEN_VESA
87 #endif
88 #endif
89 #else
90 #undef NO_TERMS
91 #undef SCREEN_BIOS
92 #undef SCREEN_DJGPPFAST
93 #undef SCREEN_VGA
94 #undef SCREEN_VESA
95 #undef TERMLIB
96 #define ANSI_DEFAULT
97 #endif
98
99 #define RANDOM /* have Berkeley random(3) */
100
101 #define MAIL /* Allows for fake mail daemon to deliver mail */
102              /* in the MSDOS version.  (For AMIGA MAIL see  */
103              /* amiconf.h).     In the future this will be the */
104              /* hook for mail reader implementation.        */
105
106 /* The following is needed for prototypes of certain functions */
107
108 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__SC__)
109 #include <process.h> /* Provides prototypes of exit(), spawn()      */
110 #endif
111
112 #if defined(_MSC_VER) && (_MSC_VER >= 7)
113 #include <sys/types.h>
114 #include <stdlib.h>
115 #ifdef strcmpi
116 #undef strcmpi
117 #endif
118 #include <string.h> /* Provides prototypes of strncmpi(), etc.     */
119 #include <conio.h>
120 #include <io.h>
121 #include <direct.h>
122 #define SIG_RET_TYPE void(__cdecl *)(int)
123 #define M(c) ((char) (0x80 | (c)))
124 #define vprintf printf
125 #define vfprintf fprintf
126 #define vsprintf sprintf
127 #endif
128
129 #if defined(__BORLANDC__) && defined(STRNCMPI)
130 #include <string.h> /* Provides prototypes of strncmpi(), etc.     */
131 #endif
132
133 #if defined(__DJGPP__)
134 #define _NAIVE_DOS_REGS
135 #include <stdlib.h>
136 #include <string.h> /* Provides prototypes of strncmpi(), etc.     */
137 #ifndef M
138 #define M(c) ((char) (0x80 | (c)))
139 #endif
140 #endif
141
142 /*
143  * On the VMS and unix, this option controls whether a delay is done by
144  * the clock, or whether it is done by excess output.  On the PC, however,
145  * there is always a clock to use for the delay.  The TIMED_DELAY option
146  * on MSDOS (without the termcap routines) is used to determine whether to
147  * include the delay routines in the code (and thus, provides a compile time
148  * method to turn off napping for visual effect).  However, it is also used
149  * in the music code to wait between different notes.  So it is needed in that
150  * case as well.
151
152  * Whereas on the VMS and unix, flags.nap is a run-time option controlling
153  * whether there is a delay by clock or by excess output, on MSDOS it is
154  * simply a flag to turn on or off napping for visual effects at run-time.
155  */
156
157 #define TIMED_DELAY /* enable the `timed_delay' run-time option */
158
159 #ifdef PCMUSIC
160 #define TIMED_DELAY /* need it anyway */
161 #endif
162 #define NOCWD_ASSUMPTIONS /* Allow paths to be specified for HACKDIR,      \
163                              LEVELDIR, SAVEDIR, BONESDIR, DATADIR,         \
164                              SCOREDIR, LOCKDIR, CONFIGDIR, and TROUBLEDIR. \
165                              */
166
167 #endif /* MSDOS configuration stuff */
168
169 #define PATHLEN 64  /* maximum pathlength */
170 #define FILENAME 80 /* maximum filename length (conservative) */
171 #ifndef MICRO_H
172 #include "micro.h" /* contains necessary externs for [os_name].c */
173 #endif
174
175 /* ===================================================
176  *  The remaining code shouldn't need modification.
177  */
178
179 #ifndef SYSTEM_H
180 #if !defined(_MSC_VER)
181 #include "system.h"
182 #endif
183 #endif
184
185 #ifdef __DJGPP__
186 #include <unistd.h> /* close(), etc. */
187 /* lock() in io.h interferes with lock[] in decl.h */
188 #define lock djlock
189 #include <io.h>
190 #undef lock
191 #include <pc.h> /* kbhit() */
192 #define PC_LOCKING
193 #define HOLD_LOCKFILE_OPEN
194 #define SELF_RECOVER /* NetHack itself can recover games */
195 #endif
196
197 #ifdef MSDOS
198 #ifndef EXEPATH
199 #define EXEPATH /* HACKDIR is .exe location if not explicitly defined */
200 #endif
201 #endif
202
203 #if defined(_MSC_VER) && defined(MSDOS)
204 #if (_MSC_VER >= 700) && !defined(FUNCTION_LEVEL_LINKING)
205 #ifndef MOVERLAY
206 #define MOVERLAY /* Microsoft's MOVE overlay system (MSC >= 7.0) */
207 #endif
208 #endif
209 #define PC_LOCKING
210 #endif
211
212 /* Borland Stuff */
213 #if defined(__BORLANDC__)
214 #if defined(__OVERLAY__) && !defined(VROOMM)
215 /* __OVERLAY__ is automatically defined by Borland C if overlay option is on
216  */
217 #define VROOMM /* Borland's VROOMM overlay system */
218 #endif
219 #if !defined(STKSIZ)
220 #define STKSIZ 5 * 1024 /* Use a default of 5K stack for Borland C      */
221                         /* This macro is used in any file that contains */
222                         /* a main() function.                           */
223 #endif
224 #define PC_LOCKING
225 #endif
226
227 #ifdef PC_LOCKING
228 #define HLOCK "NHPERM"
229 #endif
230
231 #ifndef index
232 #define index strchr
233 #endif
234 #ifndef rindex
235 #define rindex strrchr
236 #endif
237
238 #ifndef AMIGA
239 #include <time.h>
240 #endif
241
242 /* the high quality random number routines */
243 #ifndef USE_ISAAC64
244 # ifdef RANDOM
245 #  define Rand() random()
246 # else
247 #  define Rand() rand()
248 # endif
249 #endif
250
251 #ifndef TOS
252 #define FCMASK 0660 /* file creation mask */
253 #endif
254
255 #include <fcntl.h>
256
257 #ifdef MSDOS
258 #define TEXTCOLOR                /* */
259 #define PORT_HELP "msdoshlp.txt" /* msdos port specific help file */
260 #endif
261
262 /* Sanity check, do not modify these blocks. */
263
264 /* OVERLAY must be defined with MOVERLAY or VROOMM */
265 #if (defined(MOVERLAY) || defined(VROOMM))
266 #ifndef OVERLAY
267 #define OVERLAY
268 #endif
269 #endif
270
271 #if defined(FUNCTION_LEVEL_LINKING)
272 #define OVERLAY
273 #endif
274
275 #if defined(OVERLAY) && !defined(MOVERLAY) && !defined(VROOMM) \
276     && !defined(FUNCTION_LEVEL_LINKING)
277 #define USE_TRAMPOLI
278 #endif
279
280 #if defined(MSDOS) && defined(NO_TERMS)
281 #ifdef TERMLIB
282 #if defined(_MSC_VER) || defined(__SC__)
283 #pragma message("Warning -- TERMLIB defined with NO_TERMS in pcconf.h")
284 #pragma message("           Forcing undef of TERMLIB")
285 #endif
286 #undef TERMLIB
287 #endif
288 #ifdef ANSI_DEFAULT
289 #if defined(_MSC_VER) || defined(__SC__)
290 #pragma message("Warning -- ANSI_DEFAULT defined with NO_TERMS in pcconf.h")
291 #pragma message("           Forcing undef of ANSI_DEFAULT")
292 #endif
293 #undef ANSI_DEFAULT
294 #endif
295 /* only one screen package is allowed */
296 #if defined(SCREEN_BIOS) && defined(SCREEN_DJGPPFAST)
297 #if defined(_MSC_VER) || defined(__SC__)
298 #pragma message("Warning -- More than one screen package defined in pcconf.h")
299 #endif
300 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__SC__)
301 #if defined(SCREEN_DJGPPFAST)
302 #if defined(_MSC_VER) || defined(__SC__)
303 #pragma message("           Forcing undef of SCREEN_DJGPPFAST")
304 #endif
305 #undef SCREEN_DJGPPFAST /* Can't use djgpp fast with other compilers anyway \
306                            */
307 #endif
308 #else
309 /* djgpp C compiler     */
310 #if defined(SCREEN_BIOS)
311 #undef SCREEN_BIOS
312 #endif
313 #endif
314 #endif
315 #define ASCIIGRAPH
316 #ifdef TEXTCOLOR
317 #define VIDEOSHADES
318 #endif
319 /* SCREEN_8514, SCREEN_VESA are only placeholders presently - sub VGA instead
320  */
321 #if defined(SCREEN_8514)
322 #undef SCREEN_8514
323 #define SCREEN_VGA
324 #endif
325 /* Graphical tile sanity checks */
326 #ifdef SCREEN_VGA
327 #define SIMULATE_CURSOR
328 #define POSITIONBAR
329 /* Select appropriate tile file format, and map size */
330 #define PLANAR_FILE
331 #define SMALL_MAP
332 #endif
333 #endif /* End of sanity check block */
334
335 #if defined(MSDOS) && defined(DLB)
336 #define FILENAME_CMP stricmp /* case insensitive */
337 #endif
338
339 #if defined(_MSC_VER) && (_MSC_VER >= 7)
340 #pragma warning(disable : 4131)
341 #pragma warning(disable : 4135)
342 #pragma warning(disable : 4309)
343 #pragma warning(disable : 4746)
344 #pragma warning(disable : 4761)
345 #endif
346
347 #ifdef TIMED_DELAY
348 #ifdef __DJGPP__
349 #define msleep(k) (void) usleep((k) *1000)
350 #endif
351 #ifdef __BORLANDC__
352 #define msleep(k) delay(k)
353 #endif
354 #ifdef __SC__
355 #define msleep(k) (void) usleep((long)((k) *1000))
356 #endif
357 #endif
358
359 #endif /* PCCONF_H */