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. */
148 # define Rand() random()
150 # define Rand() rand()
154 #define FCMASK 0660 /* file creation mask */
155 #define regularize nt_regularize
156 #define HLOCK "NHPERM"
159 #define M(c) ((char) (0x80 | (c)))
160 /* #define M(c) ((c) - 128) */
164 #define C(c) (0x1f & (c))
168 #define FILENAME_CMP _stricmp /* case insensitive */
172 extern char levels[], bones[], permbones[],
175 /* this was part of the MICRO stuff in the past */
176 extern const char *alllevels, *allbones;
177 extern char hackdir[];
180 #define getlogin() ((char *) 0)
181 extern void NDECL(win32_abort);
183 extern void FDECL(nttty_preference_update, (const char *));
184 extern void NDECL(toggle_mouse_support);
188 #define ALLOCA_HACK /* used in util/panic.c */
193 #pragma warning(disable : 4018) /* signed/unsigned mismatch */
194 #pragma warning(disable : 4305) /* init, conv from 'const int' to 'char' */
196 #pragma warning(disable : 4761) /* integral size mismatch in arg; conv \
199 #pragma warning(disable : 4102) /* unreferenced label */
204 #define NHSTR_BUFSIZE 255
206 #define NH_W2A(w, a, cb) \
207 (WideCharToMultiByte(CP_ACP, 0, (w), -1, (a), (cb), NULL, NULL), (a))
209 #define NH_A2W(a, w, cb) \
210 (MultiByteToWideChar(CP_ACP, 0, (a), -1, (w), (cb)), (w))
212 #define NH_W2A(w, a, cb) (strncpy((a), (w), (cb)))
214 #define NH_A2W(a, w, cb) (strncpy((w), (a), (cb)))
217 extern int FDECL(set_win32_option, (const char *, const char *));
220 * 3.4.3 addition - Stuff to help the user with some common, yet significant
222 * Let's make it NOP for now
224 #define interject_assistance(_1, _2, _3, _4)
225 #define interject(_1)
227 /* Missing definitions */
228 extern int mswin_have_input();
229 #define kbhit mswin_have_input
231 #define getenv(a) ((char *) NULL)
235 #define freopen(a, b, c) fopen(a, b)
236 extern int isatty(int);
239 #ifndef _TIME_T_DEFINED
240 typedef __int64 time_t; /* time value */
241 #define _TIME_T_DEFINED /* avoid multiple def's of time_t */
246 int tm_sec; /* seconds after the minute - [0,59] */
247 int tm_min; /* minutes after the hour - [0,59] */
248 int tm_hour; /* hours since midnight - [0,23] */
249 int tm_mday; /* day of the month - [1,31] */
250 int tm_mon; /* months since January - [0,11] */
251 int tm_year; /* years since 1900 */
252 int tm_wday; /* days since Sunday - [0,6] */
253 int tm_yday; /* days since January 1 - [0,365] */
254 int tm_isdst; /* daylight savings time flag - - NOT IMPLEMENTED */
259 extern struct tm *__cdecl localtime(const time_t *);
260 extern time_t __cdecl time(time_t *);
261 extern time_t __cdecl mktime(struct tm *tb);
268 #define rewind(stream) (void) fseek(stream, 0L, SEEK_SET)
273 extern int __cdecl close(int);
274 extern int __cdecl creat(const char *, int);
275 extern int __cdecl eof(int);
276 extern long __cdecl lseek(int, long, int);
277 extern int __cdecl open(const char *, int, ...);
278 extern int __cdecl read(int, void *, unsigned int);
279 extern int __cdecl unlink(const char *);
280 extern int __cdecl write(int, const void *, unsigned int);
281 extern int __cdecl rename(const char *, const char *);
282 extern int __cdecl access(const char *, int);
287 #define DeleteFile(a) unlink(a)
289 int chdir(const char *dirname);
290 extern char *getcwd(char *buffer, int maxlen);
293 #define abort() (void) TerminateProcess(GetCurrentProcess(), 0)
295 #define strdup _strdup
299 #define S_IWRITE GENERIC_WRITE
300 #define S_IREAD GENERIC_READ
302 /* CE 2.xx is missing even more stuff */
303 #if defined(WIN_CE_PS2xx) || defined(WIN32_PLATFORM_HPCPRO)
304 #define ZeroMemory(p, s) memset((p), 0, (s))
306 extern int __cdecl isupper(int c);
307 extern int __cdecl isdigit(int c);
308 extern int __cdecl isspace(int c);
309 extern int __cdecl isprint(int c);
311 extern char *__cdecl _strdup(const char *s);
312 extern char *__cdecl strrchr(const char *string, int c);
313 extern int __cdecl _stricmp(const char *a, const char *b);
315 extern FILE *__cdecl fopen(const char *filename, const char *mode);
316 extern int __cdecl fscanf(FILE *f, const char *format, ...);
317 extern int __cdecl fprintf(FILE *f, const char *format, ...);
318 extern int __cdecl vfprintf(FILE *f, const char *format, va_list args);
319 extern int __cdecl fgetc(FILE *f);
320 extern char *__cdecl fgets(char *s, int size, FILE *f);
321 extern int __cdecl printf(const char *format, ...);
322 extern int __cdecl vprintf(const char *format, va_list args);
323 extern int __cdecl puts(const char *s);
324 extern FILE *__cdecl _getstdfilex(int desc);
325 extern int __cdecl fclose(FILE *f);
326 extern size_t __cdecl fread(void *p, size_t size, size_t count, FILE *f);
327 extern size_t __cdecl fwrite(const void *p, size_t size, size_t count,
329 extern int __cdecl fflush(FILE *f);
330 extern int __cdecl feof(FILE *f);
331 extern int __cdecl fseek(FILE *f, long offset, int from);
332 extern long __cdecl ftell(FILE *f);
336 /* ARM - the processor; avoids conflict with ARM in hack.h */
341 /* leave - Windows CE defines leave as part of exception handling (__leave)
342 It conflicts with existing sources and since we don't use exceptions it is
349 #endif /* WCECONF_H */