1 /* NetHack 3.6 wceconf.h $NHDT-Date: 1432512776 2015/05/25 00:12:56 $ $NHDT-Branch: master $:$NHDT-Revision: 1.22 $ */
2 /* Copyright (C) 2001 by Alex Kompel */
3 /* NetHack may be freely redistributed. See license for details. */
8 #pragma warning(disable : 4142) /* benign redefinition of type */
10 #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
14 /* Detect the target device */
15 #if defined(WIN32_PLATFORM_PSPC)
17 #define WIN_CE_POCKETPC
21 #elif defined(WIN32_PLATFORM_HPCPRO)
23 #elif defined(WIN32_PLATFORM_WFSP)
24 #define WIN_CE_SMARTPHONE
26 #error "Unsupported Windows CE platform"
29 /* #define SHELL /* nt use of pcsys routines caused a hang */
31 #define RANDOM /* have Berkeley random(3) */
32 #define TEXTCOLOR /* Color text */
34 #define EXEPATH /* Allow .exe location to be used as HACKDIR */
35 #define TRADITIONAL_GLYPHMAP /* Store glyph mappings at level change time */
37 #define PC_LOCKING /* Prevent overwrites of aborted or in-progress games */
38 /* without first receiving confirmation. */
40 #define SELF_RECOVER /* Allow the game itself to recover from an aborted \
43 #define NOTSTDC /* no strerror() */
48 * -----------------------------------------------------------------
49 * The remaining code shouldn't need modification.
50 * -----------------------------------------------------------------
52 /* #define SHORT_FILENAMES /* All NT filesystems support long names now
56 #undef MICRO /* never define this! */
59 #define NOCWD_ASSUMPTIONS /* Always define this. There are assumptions that \
60 it is defined for WIN32. \
61 Allow paths to be specified for HACKDIR, \
62 LEVELDIR, SAVEDIR, BONESDIR, DATADIR, \
63 SCOREDIR, LOCKDIR, CONFIGDIR, and TROUBLEDIR */
71 #define OPTIONS_USED "guioptions"
73 #define OPTIONS_USED "ttyoptions"
75 #define OPTIONS_FILE OPTIONS_USED
77 #define PORT_HELP "porthelp"
79 #define SAFERHANGUP /* Define SAFERHANGUP to delay hangup processing \
80 * until the main command loop. 'safer' because it \
81 * avoids certain cheats and also avoids losing \
82 * objects being thrown when the hangup occurs. \
85 #if defined(WIN_CE_POCKETPC)
86 #define PORT_CE_PLATFORM "Pocket PC"
87 #elif defined(WIN_CE_PS2xx)
88 #define PORT_CE_PLATFORM "Palm-size PC 2.11"
89 #elif defined(WIN_CE_HPCPRO)
90 #define PORT_CE_PLATFORM "H/PC Pro 2.11"
91 #elif defined(WIN_CE_SMARTPHONE)
92 #define PORT_CE_PLATFORM "Smartphone 2002"
96 #define PORT_CE_CPU "ARM"
98 #define PORT_CE_CPU "PPC"
100 #define PORT_CE_CPU "ALPHA"
102 #define PORT_CE_CPU "SH3"
104 #define PORT_CE_CPU "SH4"
106 #define PORT_CE_CPU "MIPS"
107 #elif defined(X86) || defined(_X86_)
108 #define PORT_CE_CPU "X86"
110 #error Only ARM, PPC, ALPHA, SH3, SH4, MIPS and X86 supported
113 #define RUNTIME_PORT_ID /* trigger run-time port identification since \
114 Makedefs is bootstrapped on a cross-platform. */
116 #include <string.h> /* Provides prototypes of strncmpi(), etc. */
118 #define strncmpi(a, b, c) _strnicmp(a, b, c)
122 #define strcmpi(a, b) _stricmp(a, b)
123 #define stricmp(a, b) _stricmp(a, b)
128 #define PATHLEN BUFSZ /* maximum pathlength */
129 #define FILENAME BUFSZ /* maximum filename length (conservative) */
131 #if defined(_MAX_PATH) && defined(_MAX_FNAME)
132 #if (_MAX_PATH < BUFSZ) && (_MAX_FNAME < BUFSZ)
135 #define PATHLEN _MAX_PATH
136 #define FILENAME _MAX_FNAME
142 #define rindex strrchr
145 /* Use the high quality random number routines. */
146 #define Rand() random()
148 #define Rand() rand()
151 #define FCMASK 0660 /* file creation mask */
152 #define regularize nt_regularize
153 #define HLOCK "NHPERM"
156 #define M(c) ((char) (0x80 | (c)))
157 /* #define M(c) ((c) - 128) */
161 #define C(c) (0x1f & (c))
165 #define FILENAME_CMP _stricmp /* case insensitive */
169 extern char levels
[], bones
[], permbones
[],
172 /* this was part of the MICRO stuff in the past */
173 extern const char *alllevels
, *allbones
;
174 extern char hackdir
[];
177 #define getlogin() ((char *) 0)
178 extern void NDECL(win32_abort
);
180 extern void FDECL(nttty_preference_update
, (const char *));
181 extern void NDECL(toggle_mouse_support
);
185 #define ALLOCA_HACK /* used in util/panic.c */
190 #pragma warning(disable : 4018) /* signed/unsigned mismatch */
191 #pragma warning(disable : 4305) /* init, conv from 'const int' to 'char' */
193 #pragma warning(disable : 4761) /* integral size mismatch in arg; conv \
196 #pragma warning(disable : 4102) /* unreferenced label */
201 #define NHSTR_BUFSIZE 255
203 #define NH_W2A(w, a, cb) \
204 (WideCharToMultiByte(CP_ACP, 0, (w), -1, (a), (cb), NULL, NULL), (a))
206 #define NH_A2W(a, w, cb) \
207 (MultiByteToWideChar(CP_ACP, 0, (a), -1, (w), (cb)), (w))
209 #define NH_W2A(w, a, cb) (strncpy((a), (w), (cb)))
211 #define NH_A2W(a, w, cb) (strncpy((w), (a), (cb)))
214 extern int FDECL(set_win32_option
, (const char *, const char *));
217 * 3.4.3 addition - Stuff to help the user with some common, yet significant
219 * Let's make it NOP for now
221 #define interject_assistance(_1, _2, _3, _4)
222 #define interject(_1)
224 /* Missing definitions */
225 extern int mswin_have_input();
226 #define kbhit mswin_have_input
228 #define getenv(a) ((char *) NULL)
232 #define freopen(a, b, c) fopen(a, b)
233 extern int isatty(int);
236 #ifndef _TIME_T_DEFINED
237 typedef __int64
time_t; /* time value */
238 #define _TIME_T_DEFINED /* avoid multiple def's of time_t */
243 int tm_sec
; /* seconds after the minute - [0,59] */
244 int tm_min
; /* minutes after the hour - [0,59] */
245 int tm_hour
; /* hours since midnight - [0,23] */
246 int tm_mday
; /* day of the month - [1,31] */
247 int tm_mon
; /* months since January - [0,11] */
248 int tm_year
; /* years since 1900 */
249 int tm_wday
; /* days since Sunday - [0,6] */
250 int tm_yday
; /* days since January 1 - [0,365] */
251 int tm_isdst
; /* daylight savings time flag - - NOT IMPLEMENTED */
256 extern struct tm
*__cdecl
localtime(const time_t *);
257 extern time_t __cdecl
time(time_t *);
258 extern time_t __cdecl
mktime(struct tm
*tb
);
265 #define rewind(stream) (void) fseek(stream, 0L, SEEK_SET)
270 extern int __cdecl
close(int);
271 extern int __cdecl
creat(const char *, int);
272 extern int __cdecl
eof(int);
273 extern long __cdecl
lseek(int, long, int);
274 extern int __cdecl
open(const char *, int, ...);
275 extern int __cdecl
read(int, void *, unsigned int);
276 extern int __cdecl
unlink(const char *);
277 extern int __cdecl
write(int, const void *, unsigned int);
278 extern int __cdecl
rename(const char *, const char *);
279 extern int __cdecl
access(const char *, int);
284 #define DeleteFile(a) unlink(a)
286 int chdir(const char *dirname
);
287 extern char *getcwd(char *buffer
, int maxlen
);
290 #define abort() (void) TerminateProcess(GetCurrentProcess(), 0)
292 #define strdup _strdup
296 #define S_IWRITE GENERIC_WRITE
297 #define S_IREAD GENERIC_READ
299 /* CE 2.xx is missing even more stuff */
300 #if defined(WIN_CE_PS2xx) || defined(WIN32_PLATFORM_HPCPRO)
301 #define ZeroMemory(p, s) memset((p), 0, (s))
303 extern int __cdecl
isupper(int c
);
304 extern int __cdecl
isdigit(int c
);
305 extern int __cdecl
isspace(int c
);
306 extern int __cdecl
isprint(int c
);
308 extern char *__cdecl
_strdup(const char *s
);
309 extern char *__cdecl
strrchr(const char *string
, int c
);
310 extern int __cdecl
_stricmp(const char *a
, const char *b
);
312 extern FILE *__cdecl
fopen(const char *filename
, const char *mode
);
313 extern int __cdecl
fscanf(FILE *f
, const char *format
, ...);
314 extern int __cdecl
fprintf(FILE *f
, const char *format
, ...);
315 extern int __cdecl
vfprintf(FILE *f
, const char *format
, va_list args
);
316 extern int __cdecl
fgetc(FILE *f
);
317 extern char *__cdecl
fgets(char *s
, int size
, FILE *f
);
318 extern int __cdecl
printf(const char *format
, ...);
319 extern int __cdecl
vprintf(const char *format
, va_list args
);
320 extern int __cdecl
puts(const char *s
);
321 extern FILE *__cdecl
_getstdfilex(int desc
);
322 extern int __cdecl
fclose(FILE *f
);
323 extern size_t __cdecl
fread(void *p
, size_t size
, size_t count
, FILE *f
);
324 extern size_t __cdecl
fwrite(const void *p
, size_t size
, size_t count
,
326 extern int __cdecl
fflush(FILE *f
);
327 extern int __cdecl
feof(FILE *f
);
328 extern int __cdecl
fseek(FILE *f
, long offset
, int from
);
329 extern long __cdecl
ftell(FILE *f
);
333 /* ARM - the processor; avoids conflict with ARM in hack.h */
338 /* leave - Windows CE defines leave as part of exception handling (__leave)
339 It conflicts with existing sources and since we don't use exceptions it is
346 #endif /* WCECONF_H */