diff --git a/Cross-compiling b/Cross-compiling
index 43155a024..285e824b5 100644
--- a/Cross-compiling
+++ b/Cross-compiling
@@ -369,10 +369,11 @@ Using the cross-compiler, build the following targets:
src/dlb.c, src/do.c, src/do_name.c, src/do_wear.c,
src/dog.c, src/dogmove.c, src/dokick.c,
src/dothrow.c, src/drawing.c, src/dungeon.c,
- src/eat.c, src/end.c, src/engrave.c, src/exper.c,
- src/explode.c, src/extralev.c, src/files.c,
- src/fountain.c, src/getpos.c, src/glyphs.c,
- src/hack.c, src/hacklib.c, src/insight.c,
+ src/earlyarg.c src/eat.c, src/end.c, src/engrave.c,
+ src/exper.c, src/explode.c, src/extralev.c,
+ src/files.c, src/fountain.c, src/getpos.c,
+ src/glyphs.c, src/hack.c, src/hacklib.c,
+ src/iactions.c, src/insight.c,
src/invent.c, src/isaac64.c, src/light.c,
src/lock.c, src/mail.c, src/makemon.c, src/mcastu.c,
src/mdlib.c, src/mhitm.c, src/mhitu.c, src/minion.c,
diff --git a/include/extern.h b/include/extern.h
index a3cc23213..cf20ca090 100644
--- a/include/extern.h
+++ b/include/extern.h
@@ -105,7 +105,6 @@ extern void stop_occupation(void);
extern void init_sound_disp_gamewindows(void);
extern void newgame(void);
extern void welcome(boolean);
-extern int argcheck(int, char **, enum earlyarg);
extern long timet_to_seconds(time_t);
extern long timet_delta(time_t, time_t);
@@ -920,6 +919,10 @@ extern void overview_stats(winid, const char *, long *, long *) NONNULLPTRS;
extern void remdun_mapseen(int);
extern const char *endgamelevelname(char *, int);
+/* ### earlyarg.c ### */
+
+extern int argcheck(int, char **, enum earlyarg);
+
/* ### eat.c ### */
extern void eatmupdate(void);
diff --git a/include/mcastu.h b/include/mcastu.h
index dd1e37420..a4491bf75 100644
--- a/include/mcastu.h
+++ b/include/mcastu.h
@@ -9,6 +9,8 @@
#define MONSPELL(def, lvl, flags) MCAST_##def
#elif defined(MCASTU_INIT)
#define MONSPELL(def, lvl, flags) { lvl, flags }
+#elif defined(DUMP_MCASTU_ENUM)
+#define MONSPELL(def, lvl, flags) { MCAST_##def, #def }
#endif
MONSPELL(PSI_BOLT, 0, MCF_HOSTILE|MCF_SIGHT),
diff --git a/src/allmain.c b/src/allmain.c
index 4e0021eaf..e63db5826 100644
--- a/src/allmain.c
+++ b/src/allmain.c
@@ -21,10 +21,6 @@ staticfn void do_positionbar(void);
staticfn void regen_pw(int);
staticfn void regen_hp(int);
staticfn void interrupt_multi(const char *);
-staticfn void debug_fields(char *);
-#ifndef NODUMPENUMS
-staticfn void dump_enums(void);
-#endif
#ifdef CRASHREPORT
#define USED_FOR_CRASHREPORT
@@ -960,221 +956,6 @@ interrupt_multi(const char *msg)
}
}
-/*
- * Argument processing helpers - for xxmain() to share
- * and call.
- *
- * These should return TRUE if the argument matched,
- * whether the processing of the argument was
- * successful or not.
- *
- * Most of these do their thing, then after returning
- * to xxmain(), the code exits without starting a game.
- *
- */
-
-static const struct early_opt earlyopts[] = {
- { ARG_DEBUG, "debug", 5, TRUE },
- { ARG_VERSION, "version", 4, TRUE },
- { ARG_SHOWPATHS, "showpaths", 8, FALSE },
-#ifndef NODUMPENUMS
- { ARG_DUMPENUMS, "dumpenums", 9, FALSE },
-#endif
- { ARG_DUMPGLYPHIDS, "dumpglyphids", 12, FALSE },
- { ARG_DUMPMONGEN, "dumpmongen", 10, FALSE },
- { ARG_DUMPWEIGHTS, "dumpweights", 11, FALSE },
-#ifdef WIN32
- { ARG_WINDOWS, "windows", 4, TRUE },
-#endif
-#if defined(CRASHREPORT)
- { ARG_BIDSHOW, "bidshow", 7, FALSE },
-#endif
-};
-
-#ifdef WIN32
-extern int windows_early_options(const char *);
-#endif
-
-/*
- * Returns:
- * 0 = no match
- * 1 = found and skip past this argument
- * 2 = found and trigger immediate exit
- */
-int
-argcheck(int argc, char *argv[], enum earlyarg e_arg)
-{
- int i, idx;
- boolean match = FALSE;
- char *userea = (char *) 0;
- const char *dashdash = "";
-
- for (idx = 0; idx < SIZE(earlyopts); idx++) {
- if (earlyopts[idx].e == e_arg){
- break;
- }
- }
- if (idx >= SIZE(earlyopts) || argc < 1)
- return 0;
-
- for (i = 0; i < argc; ++i) {
- if (argv[i][0] != '-')
- continue;
- if (argv[i][1] == '-') {
- userea = &argv[i][2];
- dashdash = "-";
- } else {
- userea = &argv[i][1];
- }
- match = match_optname(userea, earlyopts[idx].name,
- earlyopts[idx].minlength,
- earlyopts[idx].valallowed);
- if (match)
- break;
- }
-
- if (match) {
- const char *extended_opt = strchr(userea, ':');
-
- if (!extended_opt)
- extended_opt = strchr(userea, '=');
- switch(e_arg) {
- case ARG_DEBUG:
- if (extended_opt) {
- char *cpy_extended_opt;
-
- cpy_extended_opt = dupstr(extended_opt);
- debug_fields(cpy_extended_opt + 1);
- free((genericptr_t) cpy_extended_opt);
- }
- return 1;
- case ARG_VERSION: {
- boolean insert_into_pastebuf = FALSE;
-
- if (extended_opt) {
- extended_opt++;
- /* Deprecated in favor of "copy" - remove no later
- than next major version */
- if (match_optname(extended_opt, "paste", 5, FALSE)) {
- insert_into_pastebuf = TRUE;
- } else if (match_optname(extended_opt, "copy", 4, FALSE)) {
- insert_into_pastebuf = TRUE;
- } else if (match_optname(extended_opt, "dump", 4, FALSE)) {
- /* version number plus enabled features and sanity
- values that the program compares against the same
- thing recorded in save and bones files to check
- whether they're being used compatibly */
- dump_version_info();
- return 2; /* done */
- } else if (!match_optname(extended_opt, "show", 4, FALSE)) {
- raw_printf("-%sversion can only be extended with"
- " -%sversion:copy or :dump or :show.\n",
- dashdash, dashdash);
- /* exit after we've reported bad command line argument */
- return 2;
- }
- }
- early_version_info(insert_into_pastebuf);
- return 2;
- }
- case ARG_SHOWPATHS:
- return 2;
-#ifndef NODUMPENUMS
- case ARG_DUMPENUMS:
- dump_enums();
- return 2;
-#endif
- case ARG_DUMPGLYPHIDS:
- dump_glyphids();
- return 2;
- case ARG_DUMPMONGEN:
- dump_mongen();
- return 2;
- case ARG_DUMPWEIGHTS:
- dump_weights();
- return 2;
-#ifdef CRASHREPORT
- case ARG_BIDSHOW:
- crashreport_bidshow();
- return 2;
-#endif
-#ifdef WIN32
- case ARG_WINDOWS:
- if (extended_opt) {
- extended_opt++;
- return windows_early_options(extended_opt);
- }
- FALLTHROUGH;
- /*FALLTHRU*/
-#endif
- default:
- break;
- }
- };
- return 0;
-}
-
-/*
- * These are internal controls to aid developers with
- * testing and debugging particular aspects of the code.
- * They are not player options and the only place they
- * are documented is right here. No gameplay is altered.
- *
- * test - test whether this parser is working
- * ttystatus - TTY:
- * immediateflips - WIN32: turn off display performance
- * optimization so that display output
- * can be debugged without buffering.
- * fuzzer - enable fuzzer without debugger intervention.
- */
-staticfn void
-debug_fields(char *opts)
-{
- char *op;
- boolean negated = FALSE;
-
- while ((op = strchr(opts, ',')) != 0) {
- *op++ = 0;
- /* recurse */
- debug_fields(op);
- }
- if (strlen(opts) > BUFSZ / 2)
- return;
-
-
- /* strip leading and trailing white space */
- while (isspace((uchar) *opts))
- opts++;
- op = eos((char *) opts);
- while (--op >= opts && isspace((uchar) *op))
- *op = '\0';
-
- if (!*opts) {
- /* empty */
- return;
- }
- while ((*opts == '!') || !strncmpi(opts, "no", 2)) {
- if (*opts == '!')
- opts++;
- else
- opts += 2;
- negated = !negated;
- }
- if (match_optname(opts, "test", 4, FALSE))
- iflags.debug.test = negated ? FALSE : TRUE;
-#ifdef TTY_GRAPHICS
- if (match_optname(opts, "ttystatus", 9, FALSE))
- iflags.debug.ttystatus = negated ? FALSE : TRUE;
-#endif
-#ifdef WIN32
- if (match_optname(opts, "immediateflips", 14, FALSE))
- iflags.debug.immediateflips = negated ? FALSE : TRUE;
-#endif
- if (match_optname(opts, "fuzzer", 4, FALSE))
- iflags.fuzzerpending = TRUE;
- return;
-}
-
/* convert from time_t to number of seconds */
long
timet_to_seconds(time_t ttim)
@@ -1193,177 +974,4 @@ timet_delta(time_t etim, time_t stim) /* end and start times */
return (long) difftime(etim, stim);
}
-#if !defined(NODUMPENUMS)
-/* monsdump[] and objdump[] are also used in utf8map.c */
-
-#define DUMP_ENUMS
-#define UNPREFIXED_COUNT (5)
-struct enum_dump monsdump[] = {
-#include "monsters.h"
- { NUMMONS, "NUMMONS" },
- { NON_PM, "NON_PM" },
- { LOW_PM, "LOW_PM" },
- { HIGH_PM, "HIGH_PM" },
- { SPECIAL_PM, "SPECIAL_PM" }
-};
-struct enum_dump objdump[] = {
-#include "objects.h"
- { NUM_OBJECTS, "NUM_OBJECTS" },
-};
-
-#define DUMP_ENUMS_PCHAR
-static struct enum_dump defsym_cmap_dump[] = {
-#include "defsym.h"
- { MAXPCHARS, "MAXPCHARS" },
-};
-#undef DUMP_ENUMS_PCHAR
-
-#define DUMP_ENUMS_MONSYMS
-static struct enum_dump defsym_mon_syms_dump[] = {
-#include "defsym.h"
- { MAXMCLASSES, "MAXMCLASSES" },
-};
-#undef DUMP_ENUMS_MONSYMS
-
-#define DUMP_ENUMS_MONSYMS_DEFCHAR
-static struct enum_dump defsym_mon_defchars_dump[] = {
-#include "defsym.h"
-};
-#undef DUMP_ENUMS_MONSYMS_DEFCHAR
-
-#define DUMP_ENUMS_OBJCLASS_DEFCHARS
-static struct enum_dump objclass_defchars_dump[] = {
-#include "defsym.h"
-};
-#undef DUMP_ENUMS_OBJCLASS_DEFCHARS
-
-#define DUMP_ENUMS_OBJCLASS_CLASSES
-static struct enum_dump objclass_classes_dump[] = {
-#include "defsym.h"
- { MAXOCLASSES, "MAXOCLASSES" },
-};
-#undef DUMP_ENUMS_OBJCLASS_CLASSES
-
-#define DUMP_ENUMS_OBJCLASS_SYMS
-static struct enum_dump objclass_syms_dump[] = {
-#include "defsym.h"
-};
-#undef DUMP_ENUMS_OBJCLASS_SYMS
-
-#define DUMP_ARTI_ENUM
-static struct enum_dump arti_enum_dump[] = {
-#include "artilist.h"
- { AFTER_LAST_ARTIFACT, "AFTER_LAST_ARTIFACT" }
-};
-#undef DUMP_ARTI_ENUM
-
-#undef DUMP_ENUMS
-
-
-#ifndef NODUMPENUMS
-
-staticfn void
-dump_enums(void)
-{
- enum enum_dumps {
- monsters_enum,
- objects_enum,
- objects_misc_enum,
- defsym_cmap_enum,
- defsym_mon_syms_enum,
- defsym_mon_defchars_enum,
- objclass_defchars_enum,
- objclass_classes_enum,
- objclass_syms_enum,
- arti_enum,
- NUM_ENUM_DUMPS
- };
-
-#define dump_om(om) { om, #om }
- static const struct enum_dump omdump[] = {
- dump_om(LAST_GENERIC),
- dump_om(OBJCLASS_HACK),
- dump_om(FIRST_OBJECT),
- dump_om(FIRST_AMULET),
- dump_om(LAST_AMULET),
- dump_om(FIRST_SPELL),
- dump_om(LAST_SPELL),
- dump_om(MAXSPELL),
- dump_om(FIRST_REAL_GEM),
- dump_om(LAST_REAL_GEM),
- dump_om(FIRST_GLASS_GEM),
- dump_om(LAST_GLASS_GEM),
- dump_om(NUM_REAL_GEMS),
- dump_om(NUM_GLASS_GEMS),
- dump_om(MAX_GLYPH),
- };
-#undef dump_om
-
- static const struct enum_dump *const ed[NUM_ENUM_DUMPS] = {
- monsdump, objdump, omdump,
- defsym_cmap_dump, defsym_mon_syms_dump,
- defsym_mon_defchars_dump,
- objclass_defchars_dump,
- objclass_classes_dump,
- objclass_syms_dump,
- arti_enum_dump,
- };
-
- static const struct de_params {
- const char *const title;
- const char *const pfx;
- int unprefixed_count;
- int dumpflgs; /* 0 = dump numerically only, 1 = add 'char' comment */
- int szd;
- } edmp[NUM_ENUM_DUMPS] = {
- { "monnums", "PM_", UNPREFIXED_COUNT, 0, SIZE(monsdump) },
- { "objects_nums", "", 1, 0, SIZE(objdump) },
- { "misc_object_nums", "", 1, 0, SIZE(omdump) },
- { "cmap_symbols", "", 1, 0, SIZE(defsym_cmap_dump) },
- { "mon_syms", "", 1, 0, SIZE(defsym_mon_syms_dump) },
- { "mon_defchars", "", 1, 1, SIZE(defsym_mon_defchars_dump) },
- { "objclass_defchars", "", 1, 1, SIZE(objclass_defchars_dump) },
- { "objclass_classes", "", 1, 0, SIZE(objclass_classes_dump) },
- { "objclass_syms", "", 1, 0, SIZE(objclass_syms_dump) },
- { "artifacts_nums", "", 1, 0, SIZE(arti_enum_dump) },
- };
-
- const char *nmprefix;
- int i, j, nmwidth;
- char comment[BUFSZ];
-
- for (i = 0; i < NUM_ENUM_DUMPS; ++ i) {
- raw_printf("enum %s = {", edmp[i].title);
- for (j = 0; j < edmp[i].szd; ++j) {
- nmprefix = (j >= edmp[i].szd - edmp[i].unprefixed_count)
- ? "" : edmp[i].pfx; /* "" or "PM_" */
- nmwidth = 27 - (int) strlen(nmprefix); /* 27 or 24 */
- if (edmp[i].dumpflgs > 0) {
- Snprintf(comment, sizeof comment,
- " /* '%c' */",
- (ed[i][j].val >= 32 && ed[i][j].val <= 126)
- ? ed[i][j].val : ' ');
- } else {
- comment[0] = '\0';
- }
- raw_printf(" %s%*s = %3d,%s",
- nmprefix, -nmwidth,
- ed[i][j].nm, ed[i][j].val,
- comment);
- }
- raw_print("};");
- raw_print("");
- }
- raw_print("");
-}
-#undef UNPREFIXED_COUNT
-#endif /* NODUMPENUMS */
-
-void
-dump_glyphids(void)
-{
- dump_all_glyphids(stdout);
-}
-#endif /* !NODUMPENUMS */
-
/*allmain.c*/
diff --git a/src/earlyarg.c b/src/earlyarg.c
new file mode 100755
index 000000000..e0fd2a56b
--- /dev/null
+++ b/src/earlyarg.c
@@ -0,0 +1,416 @@
+/* NetHack 3.7 enumdmp.c $NHDT-Date: 1771213100 2026/02/15 19:38:20 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.286 $ */
+/* Copyright (c) Robert Patrick Rankin, 2012. */
+/* NetHack may be freely redistributed. See license for details. */
+
+#include "hack.h"
+
+staticfn void debug_fields(char *);
+#ifndef NODUMPENUMS
+staticfn void dump_enums(void);
+#endif
+
+/*
+ * Argument processing helpers - for xxmain() to share
+ * and call.
+ *
+ * These should return TRUE if the argument matched,
+ * whether the processing of the argument was
+ * successful or not.
+ *
+ * Most of these do their thing, then after returning
+ * to xxmain(), the code exits without starting a game.
+ *
+ */
+
+static const struct early_opt earlyopts[] = {
+ { ARG_DEBUG, "debug", 5, TRUE },
+ { ARG_VERSION, "version", 4, TRUE },
+ { ARG_SHOWPATHS, "showpaths", 8, FALSE },
+#ifndef NODUMPENUMS
+ { ARG_DUMPENUMS, "dumpenums", 9, FALSE },
+#endif
+ { ARG_DUMPGLYPHIDS, "dumpglyphids", 12, FALSE },
+ { ARG_DUMPMONGEN, "dumpmongen", 10, FALSE },
+ { ARG_DUMPWEIGHTS, "dumpweights", 11, FALSE },
+#ifdef WIN32
+ { ARG_WINDOWS, "windows", 4, TRUE },
+#endif
+#if defined(CRASHREPORT)
+ { ARG_BIDSHOW, "bidshow", 7, FALSE },
+#endif
+};
+
+#ifdef WIN32
+extern int windows_early_options(const char *);
+#endif
+
+/*
+ * Returns:
+ * 0 = no match
+ * 1 = found and skip past this argument
+ * 2 = found and trigger immediate exit
+ */
+int
+argcheck(int argc, char *argv[], enum earlyarg e_arg)
+{
+ int i, idx;
+ boolean match = FALSE;
+ char *userea = (char *) 0;
+ const char *dashdash = "";
+
+ for (idx = 0; idx < SIZE(earlyopts); idx++) {
+ if (earlyopts[idx].e == e_arg){
+ break;
+ }
+ }
+ if (idx >= SIZE(earlyopts) || argc < 1)
+ return 0;
+
+ for (i = 0; i < argc; ++i) {
+ if (argv[i][0] != '-')
+ continue;
+ if (argv[i][1] == '-') {
+ userea = &argv[i][2];
+ dashdash = "-";
+ } else {
+ userea = &argv[i][1];
+ }
+ match = match_optname(userea, earlyopts[idx].name,
+ earlyopts[idx].minlength,
+ earlyopts[idx].valallowed);
+ if (match)
+ break;
+ }
+
+ if (match) {
+ const char *extended_opt = strchr(userea, ':');
+
+ if (!extended_opt)
+ extended_opt = strchr(userea, '=');
+ switch(e_arg) {
+ case ARG_DEBUG:
+ if (extended_opt) {
+ char *cpy_extended_opt;
+
+ cpy_extended_opt = dupstr(extended_opt);
+ debug_fields(cpy_extended_opt + 1);
+ free((genericptr_t) cpy_extended_opt);
+ }
+ return 1;
+ case ARG_VERSION: {
+ boolean insert_into_pastebuf = FALSE;
+
+ if (extended_opt) {
+ extended_opt++;
+ /* Deprecated in favor of "copy" - remove no later
+ than next major version */
+ if (match_optname(extended_opt, "paste", 5, FALSE)) {
+ insert_into_pastebuf = TRUE;
+ } else if (match_optname(extended_opt, "copy", 4, FALSE)) {
+ insert_into_pastebuf = TRUE;
+ } else if (match_optname(extended_opt, "dump", 4, FALSE)) {
+ /* version number plus enabled features and sanity
+ values that the program compares against the same
+ thing recorded in save and bones files to check
+ whether they're being used compatibly */
+ dump_version_info();
+ return 2; /* done */
+ } else if (!match_optname(extended_opt, "show", 4, FALSE)) {
+ raw_printf("-%sversion can only be extended with"
+ " -%sversion:copy or :dump or :show.\n",
+ dashdash, dashdash);
+ /* exit after we've reported bad command line argument */
+ return 2;
+ }
+ }
+ early_version_info(insert_into_pastebuf);
+ return 2;
+ }
+ case ARG_SHOWPATHS:
+ return 2;
+#ifndef NODUMPENUMS
+ case ARG_DUMPENUMS:
+ dump_enums();
+ return 2;
+#endif
+ case ARG_DUMPGLYPHIDS:
+ dump_glyphids();
+ return 2;
+ case ARG_DUMPMONGEN:
+ dump_mongen();
+ return 2;
+ case ARG_DUMPWEIGHTS:
+ dump_weights();
+ return 2;
+#ifdef CRASHREPORT
+ case ARG_BIDSHOW:
+ crashreport_bidshow();
+ return 2;
+#endif
+#ifdef WIN32
+ case ARG_WINDOWS:
+ if (extended_opt) {
+ extended_opt++;
+ return windows_early_options(extended_opt);
+ }
+ FALLTHROUGH;
+ /*FALLTHRU*/
+#endif
+ default:
+ break;
+ }
+ };
+ return 0;
+}
+
+/*
+ * These are internal controls to aid developers with
+ * testing and debugging particular aspects of the code.
+ * They are not player options and the only place they
+ * are documented is right here. No gameplay is altered.
+ *
+ * test - test whether this parser is working
+ * ttystatus - TTY:
+ * immediateflips - WIN32: turn off display performance
+ * optimization so that display output
+ * can be debugged without buffering.
+ * fuzzer - enable fuzzer without debugger intervention.
+ */
+staticfn void
+debug_fields(char *opts)
+{
+ char *op;
+ boolean negated = FALSE;
+
+ while ((op = strchr(opts, ',')) != 0) {
+ *op++ = 0;
+ /* recurse */
+ debug_fields(op);
+ }
+ if (strlen(opts) > BUFSZ / 2)
+ return;
+
+
+ /* strip leading and trailing white space */
+ while (isspace((uchar) *opts))
+ opts++;
+ op = eos((char *) opts);
+ while (--op >= opts && isspace((uchar) *op))
+ *op = '\0';
+
+ if (!*opts) {
+ /* empty */
+ return;
+ }
+ while ((*opts == '!') || !strncmpi(opts, "no", 2)) {
+ if (*opts == '!')
+ opts++;
+ else
+ opts += 2;
+ negated = !negated;
+ }
+ if (match_optname(opts, "test", 4, FALSE))
+ iflags.debug.test = negated ? FALSE : TRUE;
+#ifdef TTY_GRAPHICS
+ if (match_optname(opts, "ttystatus", 9, FALSE))
+ iflags.debug.ttystatus = negated ? FALSE : TRUE;
+#endif
+#ifdef WIN32
+ if (match_optname(opts, "immediateflips", 14, FALSE))
+ iflags.debug.immediateflips = negated ? FALSE : TRUE;
+#endif
+ if (match_optname(opts, "fuzzer", 4, FALSE))
+ iflags.fuzzerpending = TRUE;
+ return;
+}
+
+#if !defined(NODUMPENUMS)
+/* monsdump[] and objdump[] are also used in utf8map.c */
+
+#define DUMP_ENUMS
+#define UNPREFIXED_COUNT (5)
+struct enum_dump monsdump[] = {
+#include "monsters.h"
+ { NUMMONS, "NUMMONS" },
+ { NON_PM, "NON_PM" },
+ { LOW_PM, "LOW_PM" },
+ { HIGH_PM, "HIGH_PM" },
+ { SPECIAL_PM, "SPECIAL_PM" }
+};
+struct enum_dump objdump[] = {
+#include "objects.h"
+ { NUM_OBJECTS, "NUM_OBJECTS" },
+};
+
+#define DUMP_ENUMS_PCHAR
+static struct enum_dump defsym_cmap_dump[] = {
+#include "defsym.h"
+ { MAXPCHARS, "MAXPCHARS" },
+};
+#undef DUMP_ENUMS_PCHAR
+
+#define DUMP_ENUMS_MONSYMS
+static struct enum_dump defsym_mon_syms_dump[] = {
+#include "defsym.h"
+ { MAXMCLASSES, "MAXMCLASSES" },
+};
+#undef DUMP_ENUMS_MONSYMS
+
+#define DUMP_ENUMS_MONSYMS_DEFCHAR
+static struct enum_dump defsym_mon_defchars_dump[] = {
+#include "defsym.h"
+};
+#undef DUMP_ENUMS_MONSYMS_DEFCHAR
+
+#define DUMP_ENUMS_OBJCLASS_DEFCHARS
+static struct enum_dump objclass_defchars_dump[] = {
+#include "defsym.h"
+};
+#undef DUMP_ENUMS_OBJCLASS_DEFCHARS
+
+#define DUMP_ENUMS_OBJCLASS_CLASSES
+static struct enum_dump objclass_classes_dump[] = {
+#include "defsym.h"
+ { MAXOCLASSES, "MAXOCLASSES" },
+};
+#undef DUMP_ENUMS_OBJCLASS_CLASSES
+
+#define DUMP_ENUMS_OBJCLASS_SYMS
+static struct enum_dump objclass_syms_dump[] = {
+#include "defsym.h"
+};
+#undef DUMP_ENUMS_OBJCLASS_SYMS
+
+#define DUMP_ARTI_ENUM
+static struct enum_dump arti_enum_dump[] = {
+#include "artilist.h"
+ { AFTER_LAST_ARTIFACT, "AFTER_LAST_ARTIFACT" }
+};
+#undef DUMP_ARTI_ENUM
+
+/* the enums are not part of hack.h for this one */
+#define MCASTU_ENUM
+enum mcast_spells {
+ #include "mcastu.h"
+};
+#undef MCASTU_ENUM
+
+#define DUMP_MCASTU_ENUM
+static struct enum_dump mcastu_enum_dump[] = {
+#include "mcastu.h"
+};
+#undef DUMP_MCASTU_ENUM
+
+#undef DUMP_ENUMS
+
+
+#ifndef NODUMPENUMS
+
+staticfn void
+dump_enums(void)
+{
+ enum enum_dumps {
+ monsters_enum,
+ objects_enum,
+ objects_misc_enum,
+ defsym_cmap_enum,
+ defsym_mon_syms_enum,
+ defsym_mon_defchars_enum,
+ objclass_defchars_enum,
+ objclass_classes_enum,
+ objclass_syms_enum,
+ arti_enum,
+ mcastu_enum,
+ NUM_ENUM_DUMPS
+ };
+
+#define dump_om(om) { om, #om }
+ static const struct enum_dump omdump[] = {
+ dump_om(LAST_GENERIC),
+ dump_om(OBJCLASS_HACK),
+ dump_om(FIRST_OBJECT),
+ dump_om(FIRST_AMULET),
+ dump_om(LAST_AMULET),
+ dump_om(FIRST_SPELL),
+ dump_om(LAST_SPELL),
+ dump_om(MAXSPELL),
+ dump_om(FIRST_REAL_GEM),
+ dump_om(LAST_REAL_GEM),
+ dump_om(FIRST_GLASS_GEM),
+ dump_om(LAST_GLASS_GEM),
+ dump_om(NUM_REAL_GEMS),
+ dump_om(NUM_GLASS_GEMS),
+ dump_om(MAX_GLYPH),
+ };
+#undef dump_om
+
+ static const struct enum_dump *const ed[NUM_ENUM_DUMPS] = {
+ monsdump, objdump, omdump,
+ defsym_cmap_dump, defsym_mon_syms_dump,
+ defsym_mon_defchars_dump,
+ objclass_defchars_dump,
+ objclass_classes_dump,
+ objclass_syms_dump,
+ arti_enum_dump,
+ mcastu_enum_dump,
+ };
+
+ static const struct de_params {
+ const char *const title;
+ const char *const pfx;
+ int unprefixed_count;
+ int dumpflgs; /* 0 = dump numerically only, 1 = add 'char' comment */
+ int szd;
+ } edmp[NUM_ENUM_DUMPS] = {
+ { "monnums", "PM_", UNPREFIXED_COUNT, 0, SIZE(monsdump) },
+ { "objects_nums", "", 1, 0, SIZE(objdump) },
+ { "misc_object_nums", "", 1, 0, SIZE(omdump) },
+ { "cmap_symbols", "", 1, 0, SIZE(defsym_cmap_dump) },
+ { "mon_syms", "", 1, 0, SIZE(defsym_mon_syms_dump) },
+ { "mon_defchars", "", 1, 1, SIZE(defsym_mon_defchars_dump) },
+ { "objclass_defchars", "", 1, 1, SIZE(objclass_defchars_dump) },
+ { "objclass_classes", "", 1, 0, SIZE(objclass_classes_dump) },
+ { "objclass_syms", "", 1, 0, SIZE(objclass_syms_dump) },
+ { "artifacts_nums", "", 1, 0, SIZE(arti_enum_dump) },
+ { "mcast_spells", "MCAST_", 0, 0, SIZE(mcastu_enum_dump) },
+ };
+
+ const char *nmprefix;
+ int i, j, nmwidth;
+ char comment[BUFSZ];
+
+ for (i = 0; i < NUM_ENUM_DUMPS; ++ i) {
+ raw_printf("enum %s = {", edmp[i].title);
+ for (j = 0; j < edmp[i].szd; ++j) {
+ nmprefix = (j >= edmp[i].szd - edmp[i].unprefixed_count)
+ ? "" : edmp[i].pfx; /* "" or "PM_" */
+ nmwidth = 27 - (int) strlen(nmprefix); /* 27 or 24 */
+ if (edmp[i].dumpflgs > 0) {
+ Snprintf(comment, sizeof comment,
+ " /* '%c' */",
+ (ed[i][j].val >= 32 && ed[i][j].val <= 126)
+ ? ed[i][j].val : ' ');
+ } else {
+ comment[0] = '\0';
+ }
+ raw_printf(" %s%*s = %3d,%s",
+ nmprefix, -nmwidth,
+ ed[i][j].nm, ed[i][j].val,
+ comment);
+ }
+ raw_print("};");
+ raw_print("");
+ }
+ raw_print("");
+}
+#undef UNPREFIXED_COUNT
+#endif /* NODUMPENUMS */
+
+void
+dump_glyphids(void)
+{
+ dump_all_glyphids(stdout);
+}
+#endif /* !NODUMPENUMS */
+
+/*allmain.c*/
diff --git a/sys/msdos/Makefile.GCC b/sys/msdos/Makefile.GCC
index 17d3a8bd8..782e1cd5c 100644
--- a/sys/msdos/Makefile.GCC
+++ b/sys/msdos/Makefile.GCC
@@ -276,27 +276,27 @@ VOBJ02 = $(O)ball.o $(O)bones.o $(O)botl.o $(O)calendar.o $(O)cfgfile
VOBJ03 = $(O)cmd.o $(O)coloratt.o $(O)date.o $(O)dbridge.o $(O)decl.o
VOBJ04 = $(O)detect.o $(O)dig.o $(O)display.o $(O)do.o $(O)do_name.o
VOBJ05 = $(O)do_wear.o $(O)dog.o $(O)dogmove.o $(O)dokick.o $(O)dothrow.o
-VOBJ06 = $(O)drawing.o $(O)dungeon.o $(O)eat.o $(O)end.o $(O)engrave.o
-VOBJ07 = $(O)exper.o $(O)explode.o $(O)extralev.o $(O)files.o $(O)fountain.o
-VOBJ08 = $(O)getpos.o $(O)glyphs.o $(O)getline.o $(O)hack.o $(O)hacklib.o
-VOBJ09 = $(O)insight.o $(O)invent.o $(O)isaac64.o $(O)lock.o $(O)mail.o
-VOBJ10 = $(O)main.o $(O)makemon.o $(O)mcastu.o $(O)mdlib.o $(O)mhitm.o
-VOBJ11 = $(O)mhitu.o $(O)minion.o $(O)mkmap.o $(O)mklev.o $(O)mkmaze.o
-VOBJ12 = $(O)mkobj.o $(O)mkroom.o $(O)mon.o $(O)mondata.o $(O)monmove.o
-VOBJ13 = $(O)monst.o $(O)mplayer.o $(O)mthrowu.o $(O)muse.o $(O)music.o
-VOBJ14 = $(O)o_init.o $(O)objects.o $(O)objnam.o $(O)options.o $(O)pickup.o
-VOBJ15 = $(O)pline.o $(O)polyself.o $(O)potion.o $(O)quest.o $(O)questpgr.o
-VOBJ16 = $(O)pager.o $(O)pray.o $(O)priest.o $(O)read.o $(O)rect.o
-VOBJ17 = $(O)region.o $(O)report.o $(O)restore.o $(O)rip.o $(O)rnd.o
-VOBJ18 = $(O)role.o $(O)rumors.o $(O)save.o $(O)selvar.o $(O)sfstruct.o
-VOBJ19 = $(O)shk.o $(O)shknam.o $(O)sit.o $(O)sounds.o $(O)sp_lev.o
-VOBJ20 = $(O)spell.o $(O)stairs.o $(O)steal.o $(O)steed.o $(O)symbols.o
-VOBJ21 = $(O)sys.o $(O)teleport.o $(O)strutil.o $(O)termcap.o $(O)timeout.o
-VOBJ22 = $(O)topl.o $(O)topten.o $(O)trap.o $(O)u_init.o $(O)uhitm.o
-VOBJ23 = $(O)utf8map.o $(O)vault.o $(O)track.o $(O)vision.o $(O)weapon.o
-VOBJ24 = $(O)were.o $(O)wield.o $(O)windows.o $(O)wintty.o $(O)wizard.o
-VOBJ25 = $(O)wizcmds.o $(O)worm.o $(O)worn.o $(O)write.o $(O)zap.o
-VOBJ26 = $(O)light.o $(O)dlb.o $(O)iactions.o $(REGEX)
+VOBJ06 = $(O)drawing.o $(O)dungeon.o $(O)earlyarg.o $(O)eat.o $(O)end.o
+VOBJ07 = $(O)engrave.o $(O)exper.o $(O)explode.o $(O)extralev.o $(O)files.o
+VOBJ08 = $(O)fountain.o $(O)getpos.o $(O)glyphs.o $(O)getline.o $(O)hack.o
+VOBJ09 = $(O)hacklib.o $(O)iactions.o $(O)insight.o $(O)invent.o $(O)isaac64.o
+VOBJ10 = $(O)lock.o $(O)mail.o $(O)main.o $(O)makemon.o $(O)mcastu.o
+VOBJ11 = $(O)mdlib.o $(O)mhitm.o $(O)mhitu.o $(O)minion.o $(O)mkmap.o
+VOBJ12 = $(O)mklev.o $(O)mkmaze.o $(O)mkobj.o $(O)mkroom.o $(O)mon.o
+VOBJ13 = $(O)mondata.o $(O)monmove.o $(O)monst.o $(O)mplayer.o $(O)mthrowu.o
+VOBJ14 = $(O)muse.o $(O)music.o $(O)o_init.o $(O)objects.o $(O)objnam.o
+VOBJ15 = $(O)options.o $(O)pickup.o $(O)pline.o $(O)polyself.o $(O)potion.o
+VOBJ16 = $(O)quest.o $(O)questpgr.o $(O)pager.o $(O)pray.o $(O)priest.o
+VOBJ17 = $(O)read.o $(O)rect.o $(O)region.o $(O)report.o $(O)restore.o
+VOBJ18 = $(O)rip.o $(O)rnd.o $(O)role.o $(O)rumors.o $(O)save.o
+VOBJ19 = $(O)selvar.o $(O)sfstruct.o $(O)shk.o $(O)shknam.o $(O)sit.o
+VOBJ20 = $(O)sounds.o $(O)sp_lev.o $(O)spell.o $(O)stairs.o $(O)steal.o
+VOBJ21 = $(O)steed.o $(O)symbols.o $(O)sys.o $(O)teleport.o $(O)strutil.o
+VOBJ22 = $(O)termcap.o $(O)timeout.o $(O)topl.o $(O)topten.o $(O)trap.o
+VOBJ23 = $(O)u_init.o $(O)uhitm.o $(O)utf8map.o $(O)vault.o $(O)track.o
+VOBJ24 = $(O)vision.o $(O)weapon.o $(O)were.o $(O)wield.o $(O)windows.o
+VOBJ25 = $(O)wintty.o $(O)wizard.o $(O)wizcmds.o $(O)worm.o $(O)worn.o
+VOBJ26 = $(O)write.o $(O)zap.o $(O)light.o $(O)dlb.o $(REGEX)
SOBJ = $(O)msdos.o $(O)pcsys.o $(O)tty.o $(O)unix.o \
$(O)video.o $(O)vidtxt.o $(O)pckeys.o
@@ -1389,6 +1389,7 @@ $(TARGETPFX)drawing.o: drawing.c $(CONFIG_H) ../include/color.h \
../include/objects.h ../include/wintype.h ../include/sym.h
$(TARGETPFX)dungeon.o: dungeon.c $(HACK_H) ../include/dgn_file.h \
../include/dlb.h
+$(TARGETPFX)earlyarg.o: earlyarg.c $(HACK_H)
$(TARGETPFX)eat.o: eat.c $(HACK_H)
$(TARGETPFX)end.o: end.c $(HACK_H) ../include/dlb.h
$(TARGETPFX)engrave.o: engrave.c $(HACK_H)
diff --git a/sys/unix/Makefile.src b/sys/unix/Makefile.src
index 861afc2d3..46dca7f71 100644
--- a/sys/unix/Makefile.src
+++ b/sys/unix/Makefile.src
@@ -517,7 +517,7 @@ HACK_H = ../src/hack.h-t
HACKCSRC = allmain.c alloc.c apply.c artifact.c attrib.c ball.c bones.c \
botl.c calendar.c cmd.c coloratt.c dbridge.c decl.c detect.c dig.c display.c \
dlb.c do.c do_name.c do_wear.c dog.c dogmove.c dokick.c dothrow.c \
- drawing.c dungeon.c eat.c end.c engrave.c exper.c explode.c \
+ drawing.c dungeon.c earlyarg.c eat.c end.c engrave.c exper.c explode.c \
extralev.c files.c fountain.c hack.c hacklib.c \
getpos.c glyphs.c iactions.c insight.c invent.c isaac64.c light.c \
lock.c mail.c makemon.c mcastu.c mdlib.c mhitm.c \
@@ -598,22 +598,21 @@ HOBJ = $(TARGETPFX)allmain.o $(TARGETPFX)alloc.o \
$(TARGETPFX)dlb.o $(TARGETPFX)do.o $(TARGETPFX)do_name.o \
$(TARGETPFX)do_wear.o $(TARGETPFX)dog.o $(TARGETPFX)dogmove.o \
$(TARGETPFX)dokick.o $(TARGETPFX)dothrow.o $(TARGETPFX)drawing.o \
- $(TARGETPFX)dungeon.o $(TARGETPFX)eat.o $(TARGETPFX)end.o \
- $(TARGETPFX)engrave.o $(TARGETPFX)exper.o $(TARGETPFX)explode.o \
- $(TARGETPFX)extralev.o $(TARGETPFX)files.o $(TARGETPFX)fountain.o \
- $(TARGETPFX)getpos.o $(TARGETPFX)glyphs.o $(TARGETPFX)hack.o \
- $(TARGETPFX)iactions.o \
- $(TARGETPFX)insight.o $(TARGETPFX)invent.o $(TARGETPFX)isaac64.o \
- $(TARGETPFX)light.o $(TARGETPFX)lock.o $(TARGETPFX)mail.o \
- $(TARGETPFX)makemon.o $(TARGETPFX)mcastu.o $(TARGETPFX)mdlib.o \
- $(TARGETPFX)mhitm.o $(TARGETPFX)mhitu.o $(TARGETPFX)minion.o \
- $(TARGETPFX)mklev.o $(TARGETPFX)mkmap.o $(TARGETPFX)mkmaze.o \
- $(TARGETPFX)mkobj.o $(TARGETPFX)mkroom.o $(TARGETPFX)mon.o \
- $(TARGETPFX)mondata.o $(TARGETPFX)monmove.o $(TARGETPFX)monst.o \
- $(TARGETPFX)mplayer.o $(TARGETPFX)mthrowu.o $(TARGETPFX)muse.o \
- $(TARGETPFX)music.o $(TARGETPFX)nhlua.o $(TARGETPFX)nhlsel.o \
- $(TARGETPFX)nhlobj.o $(TARGETPFX)nhmd4.o \
- $(TARGETPFX)objects.o $(TARGETPFX)o_init.o \
+ $(TARGETPFX)dungeon.o $(TARGETPFX)earlyarg.o $(TARGETPFX)eat.o \
+ $(TARGETPFX)end.o $(TARGETPFX)engrave.o $(TARGETPFX)exper.o \
+ $(TARGETPFX)explode.o $(TARGETPFX)extralev.o $(TARGETPFX)files.o \
+ $(TARGETPFX)fountain.o $(TARGETPFX)getpos.o $(TARGETPFX)glyphs.o \
+ $(TARGETPFX)hack.o $(TARGETPFX)iactions.o $(TARGETPFX)insight.o \
+ $(TARGETPFX)invent.o $(TARGETPFX)isaac64.o $(TARGETPFX)light.o \
+ $(TARGETPFX)lock.o $(TARGETPFX)mail.o $(TARGETPFX)makemon.o \
+ $(TARGETPFX)mcastu.o $(TARGETPFX)mdlib.o $(TARGETPFX)mhitm.o \
+ $(TARGETPFX)mhitu.o $(TARGETPFX)minion.o $(TARGETPFX)mklev.o \
+ $(TARGETPFX)mkmap.o $(TARGETPFX)mkmaze.o $(TARGETPFX)mkobj.o \
+ $(TARGETPFX)mkroom.o $(TARGETPFX)mon.o $(TARGETPFX)mondata.o \
+ $(TARGETPFX)monmove.o $(TARGETPFX)monst.o $(TARGETPFX)mplayer.o \
+ $(TARGETPFX)mthrowu.o $(TARGETPFX)muse.o $(TARGETPFX)music.o \
+ $(TARGETPFX)nhlua.o $(TARGETPFX)nhlsel.o $(TARGETPFX)nhlobj.o \
+ $(TARGETPFX)nhmd4.o $(TARGETPFX)objects.o $(TARGETPFX)o_init.o \
$(TARGETPFX)objnam.o $(TARGETPFX)options.o $(TARGETPFX)pager.o \
$(TARGETPFX)pickup.o $(TARGETPFX)pline.o $(TARGETPFX)polyself.o \
$(TARGETPFX)potion.o $(TARGETPFX)pray.o $(TARGETPFX)priest.o \
@@ -629,10 +628,10 @@ HOBJ = $(TARGETPFX)allmain.o $(TARGETPFX)alloc.o \
$(TARGETPFX)teleport.o $(TARGETPFX)timeout.o $(TARGETPFX)topten.o \
$(TARGETPFX)track.o $(TARGETPFX)trap.o $(TARGETPFX)u_init.o \
$(TARGETPFX)uhitm.o $(TARGETPFX)utf8map.o $(TARGETPFX)vault.o \
- $(TARGETPFX)vision.o $(TARGETPFX)weapon.o \
- $(TARGETPFX)were.o $(TARGETPFX)wield.o $(TARGETPFX)windows.o \
- $(TARGETPFX)wizard.o $(TARGETPFX)wizcmds.o $(TARGETPFX)worm.o \
- $(TARGETPFX)worn.o $(TARGETPFX)write.o $(TARGETPFX)zap.o \
+ $(TARGETPFX)vision.o $(TARGETPFX)weapon.o $(TARGETPFX)were.o \
+ $(TARGETPFX)wield.o $(TARGETPFX)windows.o $(TARGETPFX)wizard.o \
+ $(TARGETPFX)wizcmds.o $(TARGETPFX)worm.o $(TARGETPFX)worn.o \
+ $(TARGETPFX)write.o $(TARGETPFX)zap.o \
$(REGEXOBJ) $(RANDOBJ) $(SYSOBJ) $(WINOBJ) $(HINTOBJ) $(SNDLIBOBJ) \
$(TARGETPFX)version.o
@@ -1166,6 +1165,7 @@ $(TARGETPFX)drawing.o: drawing.c $(CONFIG_H) ../include/defsym.h \
../include/sym.h ../include/wintype.h
$(TARGETPFX)dungeon.o: dungeon.c $(HACK_H) ../include/dgn_file.h \
../include/dlb.h
+$(TARGETPFX)earlyarg.o: earlyarg.c $(HACK_H)
$(TARGETPFX)eat.o: eat.c $(HACK_H)
$(TARGETPFX)end.o: end.c $(HACK_H) ../include/dlb.h
$(TARGETPFX)engrave.o: engrave.c $(HACK_H)
diff --git a/sys/vms/Makefile.src b/sys/vms/Makefile.src
index 9cf3f465f..20ee1643f 100644
--- a/sys/vms/Makefile.src
+++ b/sys/vms/Makefile.src
@@ -149,7 +149,7 @@ HACK_H = $(SRC)hack.h-t
HACKCSRC = allmain.c alloc.c apply.c artifact.c attrib.c ball.c bones.c \
botl.c calendar.c cfgfiles.c cmd.c coloratt.c dbridge.c decl.c detect.c \
dig.c display.c dlb.c do.c do_name.c do_wear.c dog.c dogmove.c dokick.c \
- dothrow.c drawing.c dungeon.c eat.c end.c engrave.c exper.c \
+ dothrow.c drawing.c dungeon.c earlyarg.c eat.c end.c engrave.c exper.c \
explode.c extralev.c files.c fountain.c getpos.c glyphs.c hack.c \
hacklib.c iactions.c insight.c invent.c light.c lock.c \
mail.c makemon.c mcastu.c mhitm.c mhitu.c minion.c \
@@ -198,7 +198,7 @@ HOBJ1 = allmain.obj,alloc.obj,apply.obj,artifact.obj,attrib.obj, \
coloratt.obj,dbridge.obj,decl.obj,detect.obj,dig.obj,display.obj, \
dlb.obj,do.obj,do_name.obj,do_wear.obj
HOBJ2 = dog.obj,dogmove.obj,dokick.obj,dothrow.obj,drawing.obj, \
- dungeon.obj,eat.obj,end.obj,engrave.obj,exper.obj,explode.obj, \
+ dungeon.obj,earlyarg.obj,eat.obj,end.obj,engrave.obj,exper.obj,explode.obj, \
extralev.obj,files.obj,fountain.obj,getpos.obj,glyphs.obj,hack.obj, \
hacklib.obj,iactions.obj,insight.obj,invent.obj
HOBJ3 = light.obj,lock.obj,mail.obj,makemon.obj,mcastu.obj, \
@@ -519,6 +519,7 @@ dokick.obj : dokick.c $(HACK_H)
dothrow.obj : dothrow.c $(HACK_H)
drawing.obj : drawing.c $(HACK_H) $(INC)tcap.h
dungeon.obj : dungeon.c $(HACK_H) $(INC)dgn_file.h $(INC)dlb.h
+earlyarg.obj : earlyarg.c $(HACK_H)
eat.obj : eat.c $(HACK_H)
end.obj : end.c $(HACK_H) $(INC)dlb.h
engrave.obj : engrave.c $(HACK_H)
diff --git a/sys/vms/Makefile_src.vms b/sys/vms/Makefile_src.vms
index 473116e81..74f22ea55 100644
--- a/sys/vms/Makefile_src.vms
+++ b/sys/vms/Makefile_src.vms
@@ -117,10 +117,10 @@ HACK_H = $(addsuffix .h, $(addprefix $(INCL), $(CONFIGBASEH) $(HACKBASEH)))
HACKFILES := allmain alloc apply artifact attrib ball bones botl \
calendar cfgfiles cmd coloratt dbridge decl detect \
dig display dlb do do_name do_wear dog dogmove dokick \
- dothrow drawing dungeon eat end engrave exper explode extralev \
- files fountain getpos glyphs hack hacklib insight invent isaac64 \
- light lock mail makemon mcastu mdlib mhitm mhitu minion mklev \
- mkmap mkmaze mkobj mkroom mon \
+ dothrow drawing dungeon earlyarg eat end engrave exper explode \
+ extralev files fountain getpos glyphs hack hacklib iactions \
+ insight invent isaac64 light lock mail makemon mcastu mdlib mhitm \
+ mhitu minion mklev mkmap mkmaze mkobj mkroom mon \
mondata monmove monst mplayer mthrowu muse music \
nhlua nhlsel nhlobj objnam o_init objects \
options pager pickup pline polyself potion pray \
@@ -130,7 +130,7 @@ HACKFILES := allmain alloc apply artifact attrib ball bones botl \
sp_lev spell stairs steal steed strutil symbols sys teleport \
timeout topten track trap u_init utf8map \
uhitm vault version vision weapon were wield \
- windows wizard wizcmds worm worn write zap iactions
+ windows wizard wizcmds worm worn write zap
# the date file
DATEFILES = date
diff --git a/sys/windows/GNUmakefile b/sys/windows/GNUmakefile
index d4cbafead..3ea5c777b 100644
--- a/sys/windows/GNUmakefile
+++ b/sys/windows/GNUmakefile
@@ -1232,7 +1232,7 @@ COREOBJS = $(addsuffix .o, allmain alloc apply artifact attrib ball bones botl \
calendar cfgfiles cmd coloratt cppregex \
dbridge decl detect dig display dlb do do_name do_wear \
dog dogmove dokick dothrow drawing dungeon \
- eat end engrave exper explode extralev files fountain \
+ earlyarg eat end engrave exper explode extralev files fountain \
getpos glyphs hack iactions insight invent isaac64 light lock \
mail makemon mcastu mdlib mhitm mhitu minion mklev mkmap mkmaze mkobj mkroom \
mon mondata monmove monst mplayer mthrowu muse music \
diff --git a/sys/windows/Makefile.nmake b/sys/windows/Makefile.nmake
index dacee7775..9fd673698 100644
--- a/sys/windows/Makefile.nmake
+++ b/sys/windows/Makefile.nmake
@@ -650,66 +650,64 @@ PDCINCLCON=
# windowing-system specific
HACKCSRC = \
- $(SRC)allmain.c $(SRC)alloc.c $(SRC)apply.c $(SRC)artifact.c \
- $(SRC)attrib.c $(SRC)ball.c $(SRC)bones.c $(SRC)botl.c \
- $(SRC)calendar.c $(SRC)cmd.c $(SRC)coloratt.c $(SRC)dbridge.c \
- $(SRC)decl.c $(SRC)detect.c $(SRC)dig.c $(SRC)display.c \
- $(SRC)dlb.c $(SRC)do.c $(SRC)do_name.c $(SRC)do_wear.c \
- $(SRC)dog.c $(SRC)dogmove.c $(SRC)dokick.c $(SRC)dothrow.c \
- $(SRC)drawing.c $(SRC)dungeon.c $(SRC)eat.c $(SRC)end.c \
- $(SRC)engrave.c $(SRC)exper.c $(SRC)explode.c $(SRC)files.c \
- $(SRC)fountain.c $(SRC)getpos.c $(SRC)glyphs.c $(SRC)hack.c \
- $(SRC)iactions.c \
- $(SRC)insight.c $(SRC)invent.c $(SRC)isaac64.c $(SRC)light.c \
- $(SRC)lock.c $(SRC)mail.c $(SRC)makemon.c $(SRC)mcastu.c \
- $(SRC)mdlib.c $(SRC)mhitm.c $(SRC)mhitu.c $(SRC)minion.c \
- $(SRC)mklev.c $(SRC)mkmap.c $(SRC)mkmaze.c $(SRC)mkobj.c \
- $(SRC)mkroom.c $(SRC)mon.c $(SRC)mondata.c $(SRC)monmove.c \
- $(SRC)monst.c $(SRC)mplayer.c $(SRC)mthrowu.c $(SRC)muse.c \
- $(SRC)music.c $(SRC)nhlua.c $(SRC)nhlsel.c $(SRC)nhlobj.c \
- $(SRC)o_init.c $(SRC)objects.c $(SRC)objnam.c $(SRC)options.c \
- $(SRC)pager.c $(SRC)pickup.c $(SRC)pline.c $(SRC)polyself.c \
- $(SRC)potion.c $(SRC)pray.c $(SRC)priest.c $(SRC)quest.c \
- $(SRC)questpgr.c $(SRC)read.c $(SRC)rect.c $(SRC)region.c \
- $(SRC)restore.c $(SRC)rip.c $(SRC)rnd.c $(SRC)role.c \
- $(SRC)rumors.c $(SRC)save.c $(SRC)selvar.c\
- $(SRC)sfbase.c $(SRC)sfstruct.c \
- $(SRC)shk.c $(SRC)shknam.c $(SRC)sit.c $(SRC)sounds.c \
- $(SRC)sp_lev.c $(SRC)spell.c $(SRC)stairs.c $(SRC)steal.c \
- $(SRC)steed.c $(SRC)symbols.c $(SRC)sys.c $(SRC)teleport.c \
- $(SRC)timeout.c $(SRC)topten.c $(SRC)track.c $(SRC)trap.c \
- $(SRC)u_init.c $(SRC)uhitm.c $(SRC)utf8map.c $(SRC)vault.c \
- $(SRC)version.c $(SRC)vision.c $(SRC)weapon.c $(SRC)were.c \
- $(SRC)wield.c $(SRC)windows.c $(SRC)wizard.c $(SRC)worm.c \
- $(SRC)worn.c $(SRC)write.c $(SRC)zap.c
+ $(SRC)allmain.c $(SRC)alloc.c $(SRC)apply.c $(SRC)artifact.c \
+ $(SRC)attrib.c $(SRC)ball.c $(SRC)bones.c $(SRC)botl.c \
+ $(SRC)calendar.c $(SRC)cmd.c $(SRC)coloratt.c $(SRC)dbridge.c \
+ $(SRC)decl.c $(SRC)detect.c $(SRC)dig.c $(SRC)display.c \
+ $(SRC)dlb.c $(SRC)do.c $(SRC)do_name.c $(SRC)do_wear.c \
+ $(SRC)dog.c $(SRC)dogmove.c $(SRC)dokick.c $(SRC)dothrow.c \
+ $(SRC)drawing.c $(SRC)dungeon.c $(SRC)earlyarg.c $(SRC)eat.c \
+ $(SRC)end.c $(SRC)engrave.c $(SRC)exper.c $(SRC)explode.c \
+ $(SRC)files.c $(SRC)fountain.c $(SRC)getpos.c $(SRC)glyphs.c \
+ $(SRC)hack.c $(SRC)iactions.c $(SRC)insight.c $(SRC)invent.c \
+ $(SRC)isaac64.c $(SRC)light.c $(SRC)lock.c $(SRC)mail.c \
+ $(SRC)makemon.c $(SRC)mcastu.c $(SRC)mdlib.c $(SRC)mhitm.c \
+ $(SRC)mhitu.c $(SRC)minion.c $(SRC)mklev.c $(SRC)mkmap.c \
+ $(SRC)mkmaze.c $(SRC)mkobj.c $(SRC)mkroom.c $(SRC)mon.c \
+ $(SRC)mondata.c $(SRC)monmove.c $(SRC)monst.c $(SRC)mplayer.c \
+ $(SRC)mthrowu.c $(SRC)muse.c $(SRC)music.c $(SRC)nhlua.c \
+ $(SRC)nhlsel.c $(SRC)nhlobj.c $(SRC)o_init.c $(SRC)objects.c \
+ $(SRC)objnam.c $(SRC)options.c $(SRC)pager.c $(SRC)pickup.c \
+ $(SRC)pline.c $(SRC)polyself.c $(SRC)potion.c $(SRC)pray.c \
+ $(SRC)priest.c $(SRC)quest.c $(SRC)questpgr.c $(SRC)read.c \
+ $(SRC)rect.c $(SRC)region.c $(SRC)restore.c $(SRC)rip.c \
+ $(SRC)rnd.c $(SRC)role.c $(SRC)rumors.c $(SRC)save.c \
+ $(SRC)selvar.c $(SRC)sfbase.c $(SRC)sfstruct.c $(SRC)shk.c \
+ $(SRC)shknam.c $(SRC)sit.c $(SRC)sounds.c $(SRC)sp_lev.c \
+ $(SRC)spell.c $(SRC)stairs.c $(SRC)steal.c $(SRC)steed.c \
+ $(SRC)symbols.c $(SRC)sys.c $(SRC)teleport.c $(SRC)timeout.c \
+ $(SRC)topten.c $(SRC)track.c $(SRC)trap.c $(SRC)u_init.c \
+ $(SRC)uhitm.c $(SRC)utf8map.c $(SRC)vault.c $(SRC)version.c \
+ $(SRC)vision.c $(SRC)weapon.c $(SRC)were.c $(SRC)wield.c \
+ $(SRC)windows.c $(SRC)wizard.c $(SRC)worm.c $(SRC)worn.c \
+ $(SRC)write.c $(SRC)zap.c
# all .h files except date.h
HACKINCL = \
- $(INCL)align.h $(INCL)artifact.h $(INCL)artilist.h \
- $(INCL)attrib.h $(INCL)botl.h $(INCL)color.h \
- $(INCL)config.h $(INCL)config1.h $(INCL)context.h \
- $(INCL)coord.h $(INCL)cstd.h $(INCL)decl.h \
- $(INCL)defsym.h $(INCL)display.h $(INCL)dlb.h \
- $(INCL)dungeon.h $(INCL)engrave.h $(INCL)extern.h \
- $(INCL)flag.h $(INCL)fnamesiz.h $(INCL)func_tab.h \
- $(INCL)global.h $(INCL)warnings.h $(INCL)hack.h \
- $(INCL)lint.h $(INCL)mextra.h $(INCL)micro.h \
- $(INCL)mcastu.h \
- $(INCL)mfndpos.h $(INCL)mkroom.h $(INCL)monattk.h \
- $(INCL)mondata.h $(INCL)monflag.h $(INCL)monst.h \
- $(INCL)monsters.h $(INCL)nhmd4.h $(INCL)obj.h \
- $(INCL)objects.h $(INCL)objclass.h $(INCL)optlist.h \
- $(INCL)patchlevel.h $(INCL)pcconf.h $(INCL)permonst.h \
- $(INCL)prop.h $(INCL)rect.h $(INCL)region.h \
- $(INCL)savefile.h $(INCL)selvar.h $(INCL)sfprocs.h \
- $(INCL)sym.h $(INCL)rm.h $(INCL)sp_lev.h \
- $(INCL)spell.h $(INCL)sndprocs.h $(INCL)seffects.h \
- $(INCL)stairs.h $(INCL)sys.h $(INCL)tcap.h \
- $(INCL)timeout.h $(INCL)tradstdc.h $(INCL)trap.h \
- $(INCL)unixconf.h $(INCL)vision.h $(INCL)vmsconf.h \
- $(INCL)wintty.h $(INCL)wincurs.h $(INCL)winX.h \
- $(INCL)winprocs.h $(INCL)wintype.h $(INCL)you.h \
- $(INCL)youprop.h $(INCL)weight.h
+ $(INCL)align.h $(INCL)artifact.h $(INCL)artilist.h \
+ $(INCL)attrib.h $(INCL)botl.h $(INCL)color.h \
+ $(INCL)config.h $(INCL)config1.h $(INCL)context.h \
+ $(INCL)coord.h $(INCL)cstd.h $(INCL)decl.h \
+ $(INCL)defsym.h $(INCL)display.h $(INCL)dlb.h \
+ $(INCL)dungeon.h $(INCL)engrave.h $(INCL)extern.h \
+ $(INCL)flag.h $(INCL)fnamesiz.h $(INCL)func_tab.h \
+ $(INCL)global.h $(INCL)warnings.h $(INCL)hack.h \
+ $(INCL)lint.h $(INCL)mextra.h $(INCL)micro.h \
+ $(INCL)mcastu.h $(INCL)mfndpos.h $(INCL)mkroom.h \
+ $(INCL)monattk.h $(INCL)mondata.h $(INCL)monflag.h \
+ $(INCL)monst.h $(INCL)monsters.h $(INCL)nhmd4.h \
+ $(INCL)obj.h $(INCL)objects.h $(INCL)objclass.h \
+ $(INCL)optlist.h $(INCL)patchlevel.h $(INCL)pcconf.h \
+ $(INCL)permonst.h $(INCL)prop.h $(INCL)rect.h \
+ $(INCL)region.h $(INCL)savefile.h $(INCL)selvar.h \
+ $(INCL)sfprocs.h $(INCL)sym.h $(INCL)rm.h \
+ $(INCL)sp_lev.h $(INCL)spell.h $(INCL)sndprocs.h \
+ $(INCL)seffects.h $(INCL)stairs.h $(INCL)sys.h \
+ $(INCL)tcap.h $(INCL)timeout.h $(INCL)tradstdc.h \
+ $(INCL)trap.h $(INCL)unixconf.h $(INCL)vision.h \
+ $(INCL)vmsconf.h $(INCL)wintty.h $(INCL)wincurs.h \
+ $(INCL)winX.h $(INCL)winprocs.h $(INCL)wintype.h \
+ $(INCL)you.h $(INCL)youprop.h $(INCL)weight.h
LUA_FILES = $(DAT)asmodeus.lua $(DAT)baalz.lua $(DAT)bigrm-1.lua \
$(DAT)bigrm-10.lua $(DAT)bigrm-11.lua $(DAT)bigrm-12.lua \
@@ -861,31 +859,31 @@ COREOBJTTY = \
$(OTTY)dbridge.o $(OTTY)decl.o $(OTTY)detect.o $(OTTY)dig.o \
$(OTTY)display.o $(OTTY)do.o $(OTTY)do_name.o $(OTTY)do_wear.o \
$(OTTY)dog.o $(OTTY)dogmove.o $(OTTY)dokick.o $(OTTY)dothrow.o \
- $(OTTY)drawing.o $(OTTY)dungeon.o $(OTTY)eat.o $(OTTY)end.o \
- $(OTTY)engrave.o $(OTTY)exper.o $(OTTY)explode.o $(OTTY)extralev.o \
- $(OTTY)files.o $(OTTY)fountain.o $(OTTY)getpos.o $(OTTY)glyphs.o \
- $(OTTY)iactions.o \
- $(OTTY)hack.o $(OTTY)insight.o $(OTTY)invent.o $(OTTY)isaac64.o \
- $(OTTY)light.o $(OTTY)lock.o $(OTTY)mail.o $(OTTY)makemon.o \
- $(OTTY)mcastu.o $(OTTY)mhitm.o $(OTTY)mhitu.o $(OTTY)minion.o \
- $(OTTY)mklev.o $(OTTY)mkmap.o $(OTTY)mkmaze.o $(OTTY)mkobj.o \
- $(OTTY)mkroom.o $(OTTY)mon.o $(OTTY)mondata.o $(OTTY)monmove.o \
- $(OTTY)monst.o $(OTTY)mplayer.o $(OTTY)mthrowu.o $(OTTY)muse.o \
- $(OTTY)music.o $(OTTY)o_init.o $(OTTY)objects.o $(OTTY)objnam.o \
- $(OTTY)options.o $(OTTY)pager.o $(OTTY)pickup.o $(OTTY)pline.o \
- $(OTTY)polyself.o $(OTTY)potion.o $(OTTY)pray.o $(OTTY)priest.o \
- $(OTTY)quest.o $(OTTY)questpgr.o $(OTTY)read.o $(OTTY)rect.o \
- $(OTTY)region.o $(OTTY)report.o $(OTTY)restore.o $(OTTY)rip.o \
- $(OTTY)rnd.o $(OTTY)role.o $(OTTY)rumors.o $(OTTY)save.o \
- $(OTTY)selvar.o $(OTTY)sfbase.o $(OTTY)sfstruct.o $(OTTY)shk.o \
- $(OTTY)shknam.o $(OTTY)sit.o $(OTTY)sounds.o $(OTTY)sp_lev.o \
- $(OTTY)spell.o $(OTTY)stairs.o $(OTTY)steal.o $(OTTY)steed.o \
- $(OTTY)strutil.o $(OTTY)symbols.o $(OTTY)sys.o $(OTTY)teleport.o \
- $(OTTY)timeout.o $(OTTY)topten.o $(OTTY)track.o $(OTTY)trap.o \
- $(OTTY)u_init.o $(OTTY)uhitm.o $(OTTY)utf8map.o $(OTTY)vault.o \
- $(OTTY)vision.o $(OTTY)weapon.o $(OTTY)were.o $(OTTY)wield.o \
- $(OTTY)windows.o $(OTTY)wizard.o $(OTTY)wizcmds.o $(OTTY)worm.o \
- $(OTTY)worn.o $(OTTY)write.o $(OTTY)zap.o
+ $(OTTY)drawing.o $(OTTY)dungeon.o $(OTTY)earlyarg.o $(OTTY)eat.o \
+ $(OTTY)end.o $(OTTY)engrave.o $(OTTY)exper.o $(OTTY)explode.o \
+ $(OTTY)extralev.o $(OTTY)files.o $(OTTY)fountain.o $(OTTY)getpos.o \
+ $(OTTY)glyphs.o $(OTTY)iactions.o $(OTTY)hack.o $(OTTY)insight.o \
+ $(OTTY)invent.o $(OTTY)isaac64.o $(OTTY)light.o $(OTTY)lock.o \
+ $(OTTY)mail.o $(OTTY)makemon.o $(OTTY)mcastu.o $(OTTY)mhitm.o \
+ $(OTTY)mhitu.o $(OTTY)minion.o $(OTTY)mklev.o $(OTTY)mkmap.o \
+ $(OTTY)mkmaze.o $(OTTY)mkobj.o $(OTTY)mkroom.o $(OTTY)mon.o \
+ $(OTTY)mondata.o $(OTTY)monmove.o $(OTTY)monst.o $(OTTY)mplayer.o \
+ $(OTTY)mthrowu.o $(OTTY)muse.o $(OTTY)music.o $(OTTY)o_init.o \
+ $(OTTY)objects.o $(OTTY)objnam.o $(OTTY)options.o $(OTTY)pager.o \
+ $(OTTY)pickup.o $(OTTY)pline.o $(OTTY)polyself.o $(OTTY)potion.o \
+ $(OTTY)pray.o $(OTTY)priest.o $(OTTY)quest.o $(OTTY)questpgr.o \
+ $(OTTY)read.o $(OTTY)rect.o $(OTTY)region.o $(OTTY)report.o \
+ $(OTTY)restore.o $(OTTY)rip.o $(OTTY)rnd.o $(OTTY)role.o \
+ $(OTTY)rumors.o $(OTTY)save.o $(OTTY)selvar.o $(OTTY)sfbase.o \
+ $(OTTY)sfstruct.o $(OTTY)shk.o $(OTTY)shknam.o $(OTTY)sit.o \
+ $(OTTY)sounds.o $(OTTY)sp_lev.o $(OTTY)spell.o $(OTTY)stairs.o \
+ $(OTTY)steal.o $(OTTY)steed.o $(OTTY)strutil.o $(OTTY)symbols.o \
+ $(OTTY)sys.o $(OTTY)teleport.o $(OTTY)timeout.o $(OTTY)topten.o \
+ $(OTTY)track.o $(OTTY)trap.o $(OTTY)u_init.o $(OTTY)uhitm.o \
+ $(OTTY)utf8map.o $(OTTY)vault.o $(OTTY)vision.o $(OTTY)weapon.o \
+ $(OTTY)were.o $(OTTY)wield.o $(OTTY)windows.o $(OTTY)wizard.o \
+ $(OTTY)wizcmds.o $(OTTY)worm.o $(OTTY)worn.o $(OTTY)write.o \
+ $(OTTY)zap.o
OBJSTTY = $(MDLIBTTY) $(COREOBJTTY) $(REGEXTTY) $(RANDOMTTY)
@@ -925,31 +923,31 @@ COREOBJGUI = \
$(OGUI)dbridge.o $(OGUI)decl.o $(OGUI)detect.o $(OGUI)dig.o \
$(OGUI)display.o $(OGUI)do.o $(OGUI)do_name.o $(OGUI)do_wear.o \
$(OGUI)dog.o $(OGUI)dogmove.o $(OGUI)dokick.o $(OGUI)dothrow.o \
- $(OGUI)drawing.o $(OGUI)dungeon.o $(OGUI)eat.o $(OGUI)end.o \
- $(OGUI)engrave.o $(OGUI)exper.o $(OGUI)explode.o $(OGUI)extralev.o \
- $(OGUI)files.o $(OGUI)fountain.o $(OGUI)getpos.o $(OGUI)glyphs.o \
- $(OGUI)iactions.o \
- $(OGUI)hack.o $(OGUI)insight.o $(OGUI)invent.o $(OGUI)isaac64.o \
- $(OGUI)light.o $(OGUI)lock.o $(OGUI)mail.o $(OGUI)makemon.o \
- $(OGUI)mcastu.o $(OGUI)mhitm.o $(OGUI)mhitu.o $(OGUI)minion.o \
- $(OGUI)mklev.o $(OGUI)mkmap.o $(OGUI)mkmaze.o $(OGUI)mkobj.o \
- $(OGUI)mkroom.o $(OGUI)mon.o $(OGUI)mondata.o $(OGUI)monmove.o \
- $(OGUI)monst.o $(OGUI)mplayer.o $(OGUI)mthrowu.o $(OGUI)muse.o \
- $(OGUI)music.o $(OGUI)o_init.o $(OGUI)objects.o $(OGUI)objnam.o \
- $(OGUI)options.o $(OGUI)pager.o $(OGUI)pickup.o $(OGUI)pline.o \
- $(OGUI)polyself.o $(OGUI)potion.o $(OGUI)pray.o $(OGUI)priest.o \
- $(OGUI)quest.o $(OGUI)questpgr.o $(OGUI)read.o $(OGUI)rect.o \
- $(OGUI)region.o $(OGUI)report.o $(OGUI)restore.o $(OGUI)rip.o \
- $(OGUI)rnd.o $(OGUI)role.o $(OGUI)rumors.o $(OGUI)save.o \
- $(OGUI)selvar.o $(OGUI)sfbase.o $(OGUI)sfstruct.o $(OGUI)shk.o \
- $(OGUI)shknam.o $(OGUI)sit.o $(OGUI)sounds.o $(OGUI)sp_lev.o \
- $(OGUI)spell.o $(OGUI)stairs.o $(OGUI)steal.o $(OGUI)steed.o \
- $(OGUI)strutil.o $(OGUI)symbols.o $(OGUI)sys.o $(OGUI)teleport.o \
- $(OGUI)timeout.o $(OGUI)topten.o $(OGUI)track.o $(OGUI)trap.o \
- $(OGUI)u_init.o $(OGUI)uhitm.o $(OGUI)utf8map.o $(OGUI)vault.o \
- $(OGUI)vision.o $(OGUI)weapon.o $(OGUI)were.o $(OGUI)wield.o \
- $(OGUI)windows.o $(OGUI)wizard.o $(OGUI)wizcmds.o $(OGUI)worm.o \
- $(OGUI)worn.o $(OGUI)write.o $(OGUI)zap.o
+ $(OGUI)drawing.o $(OGUI)dungeon.o $(OGUI)earlyarg.o $(OGUI)eat.o \
+ $(OGUI)end.o $(OGUI)engrave.o $(OGUI)exper.o $(OGUI)explode.o \
+ $(OGUI)extralev.o $(OGUI)files.o $(OGUI)fountain.o $(OGUI)getpos.o \
+ $(OGUI)glyphs.o $(OGUI)iactions.o $(OGUI)hack.o $(OGUI)insight.o \
+ $(OGUI)invent.o $(OGUI)isaac64.o $(OGUI)light.o $(OGUI)lock.o \
+ $(OGUI)mail.o $(OGUI)makemon.o $(OGUI)mcastu.o $(OGUI)mhitm.o \
+ $(OGUI)mhitu.o $(OGUI)minion.o $(OGUI)mklev.o $(OGUI)mkmap.o \
+ $(OGUI)mkmaze.o $(OGUI)mkobj.o $(OGUI)mkroom.o $(OGUI)mon.o \
+ $(OGUI)mondata.o $(OGUI)monmove.o $(OGUI)monst.o $(OGUI)mplayer.o \
+ $(OGUI)mthrowu.o $(OGUI)muse.o $(OGUI)music.o $(OGUI)o_init.o \
+ $(OGUI)objects.o $(OGUI)objnam.o $(OGUI)options.o $(OGUI)pager.o \
+ $(OGUI)pickup.o $(OGUI)pline.o $(OGUI)polyself.o $(OGUI)potion.o \
+ $(OGUI)pray.o $(OGUI)priest.o $(OGUI)quest.o $(OGUI)questpgr.o \
+ $(OGUI)read.o $(OGUI)rect.o $(OGUI)region.o $(OGUI)report.o \
+ $(OGUI)restore.o $(OGUI)rip.o $(OGUI)rnd.o $(OGUI)role.o \
+ $(OGUI)rumors.o $(OGUI)save.o $(OGUI)selvar.o $(OGUI)sfbase.o \
+ $(OGUI)sfstruct.o $(OGUI)shk.o $(OGUI)shknam.o $(OGUI)sit.o \
+ $(OGUI)sounds.o $(OGUI)sp_lev.o $(OGUI)spell.o $(OGUI)stairs.o \
+ $(OGUI)steal.o $(OGUI)steed.o $(OGUI)strutil.o $(OGUI)symbols.o \
+ $(OGUI)sys.o $(OGUI)teleport.o $(OGUI)timeout.o $(OGUI)topten.o \
+ $(OGUI)track.o $(OGUI)trap.o $(OGUI)u_init.o $(OGUI)uhitm.o \
+ $(OGUI)utf8map.o $(OGUI)vault.o $(OGUI)vision.o $(OGUI)weapon.o \
+ $(OGUI)were.o $(OGUI)wield.o $(OGUI)windows.o $(OGUI)wizard.o \
+ $(OGUI)wizcmds.o $(OGUI)worm.o $(OGUI)worn.o $(OGUI)write.o \
+ $(OGUI)zap.o
OBJSGUI = $(MDLIBGUI) $(COREOBJGUI) $(REGEXGUI) $(RANDOMGUI)
@@ -2029,7 +2027,7 @@ cpu.tag:
! IF "$(TARGET_CPU)"=="x64"
@echo Windows x64 64-bit target build
! ELSE
-! IF "$(TARGET_CPU)"=="arm64"
+! IF "$(TARGET_CPU)"=="arm64"
@echo Windows arm64 64-bit target build
! ELSE
@echo Windows x86 32-bit target build
@@ -3250,6 +3248,7 @@ $(OTTY)drawing.o: drawing.c $(CONFIG_H) $(INCL)defsym.h \
$(INCL)sym.h $(INCL)wintype.h
$(OTTY)dungeon.o: dungeon.c $(HACK_H) $(INCL)dgn_file.h \
$(INCL)dlb.h
+$(OTTY)earlyarg.o: earlyarg.c $(HACK_H)
$(OTTY)eat.o: eat.c $(HACK_H)
$(OTTY)end.o: end.c $(HACK_H) $(INCL)dlb.h
$(OTTY)engrave.o: engrave.c $(HACK_H)
@@ -3630,6 +3629,7 @@ $(OGUI)drawing.o: drawing.c $(CONFIG_H) $(INCL)defsym.h \
$(INCL)sym.h $(INCL)wintype.h
$(OGUI)dungeon.o: dungeon.c $(HACK_H) $(INCL)dgn_file.h \
$(INCL)dlb.h
+$(OGUI)earlyarg.o: earlyarg.c $(HACK_H)
$(OGUI)eat.o: eat.c $(HACK_H)
$(OGUI)end.o: end.c $(HACK_H) $(INCL)dlb.h
$(OGUI)engrave.o: engrave.c $(HACK_H)
diff --git a/sys/windows/vs/NetHack/NetHack.vcxproj b/sys/windows/vs/NetHack/NetHack.vcxproj
index 72d8986b0..131a4cf05 100644
--- a/sys/windows/vs/NetHack/NetHack.vcxproj
+++ b/sys/windows/vs/NetHack/NetHack.vcxproj
@@ -113,6 +113,7 @@
+
diff --git a/sys/windows/vs/NetHackW/NetHackW.vcxproj b/sys/windows/vs/NetHackW/NetHackW.vcxproj
index ba3b21b1e..fce2d2a1d 100644
--- a/sys/windows/vs/NetHackW/NetHackW.vcxproj
+++ b/sys/windows/vs/NetHackW/NetHackW.vcxproj
@@ -135,6 +135,7 @@
+