add some foundational work for uplifts

Be able to carry out uplifts during minor release
lifetimes.

Document a way to be able to uplift struct content
without incrementing EDITLEVEL and breaking existing savefiles.
Use the mechanics outlined to uplift the contents instead, where
it is feasible to do so. The uplift is currently one-way only. An
uplifted savefile cannot be used with an earlier build of NetHack
, one built with a lower SAVEFILE_REVISION_LEVEL, than the one which
wrote the savefile.

The final byte (byte 79) of the 80 critical bytes in the savefile,
of which 10 are reserved for future expansion and not currently
used, will now be used for holding the savefile revision level
(SAVEFILE_REVISION_LEVEL in include/patchlevel.h) at the time
the savefile was written.

That leaves 9 of the bytes available for future use.
This commit is contained in:
nhmall
2026-05-27 16:14:20 -04:00
parent e352048612
commit ce31feb231
21 changed files with 526 additions and 117 deletions
+3
View File
@@ -978,6 +978,9 @@ struct instance_globals_u {
/* decl.c */
boolean unweapon;
/* revision.c */
int uplift_needed_rev0_to_rev1;
/* role.c */
struct Role urole; /* player's role. May be munged in role_init() */
struct Race urace; /* player's race. May be munged in role_init() */
+9
View File
@@ -2754,6 +2754,15 @@ void restore_msghistory(NHFILE *);
extern void rest_adjust_levelflags(void);
extern void moves_to_relative_time(long *);
extern void relative_time_to_moves(long *);
extern boolean revision_increment(int, int, uchar *);
/* ### revision.c ### */
extern boolean revision_increment(int, int, uchar *);
#ifdef DEMO_UPLIFTS
void uplift_mystruct_rev0_to_mystruct(struct mystruct_rev0 *rev0,
struct mystruct *rev1);
#endif /* DEMO_UPLIFTS */
/* ### rip.c ### */
+8
View File
@@ -43,6 +43,14 @@
#define COPYRIGHT_BANNER_C nomakedefs.copyright_banner_c
#define COPYRIGHT_BANNER_D " See license for details."
/*
* SAVEFILE_REVISION_LEVEL
* Increment this if there has been a change to a data structure
* that the source code is prepared to handle and convert properly.
* The SAVEFILE_REVISION_LEVEL value needs to fit into an unsigned byte.
*/
#define SAVEFILE_REVISION_LEVEL 0x00
/*
* If two or more successive releases have compatible data files, define
* this with the version number of the oldest such release so that the
+228
View File
@@ -0,0 +1,228 @@
/* NetHack 5.0 revision.h $NHDT-Date: 1706213796 2024/01/25 20:16:36 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.116 $ */
/* Copyright (c) Michael Allison, 2026. */
/* NetHack may be freely redistributed. See license for details. */
/*
* Supporting revisions to NetHack structs via incemental
* uplifts, rather than incrementing EDITLEVEL and breaking
* savefile compatibility.
*
* Here is the contrived example struct we'll use for
* this document:
*
* The old revision: The new revision:
*
* struct mystruct { struct mystruct {
* int field1; int field1;
* int field2; int field2;
* char field3; char field3;
* long field4; long field4;
* }; int newfielda;
* int newfieldb;
* };
*
* Steps (using mystruct as an example name)
*
* 1. Paste an exact copy of the struct declaration as it is/was
* in the previous revision into include/revision.h, shrouded by
* #if defined(MYSTRUCT_REV0), and tack a '_rev0' suffix onto the
* name of the struct. For example,
*
* #if defined(MYSTRUCT_REV0)
* struct mystruct_rev0 {
* int field1;
* int field2;
* char field3;
* long field4;
* };
*
* That goes just ahead of this existing placeholder:
*
* #elif defined(XXX_REV0)
*
* 2. Place a comment ahead of the mystruct_rev0 declaration
* that explains what has changed, and why the revision
* is required.
*
* 3. Immediately following the revised struct declaration in the
* original header file where it is located, add the following:
*
* #define MYSTRUCT_REV0
* #include "revision.h"
* #undef MYSTRUCT_REV0
*
* 4. In include/savefile.h, add a new prototype for a function
* to read the previous revision from the savefile, ideally
* immediately following the prototype for the current active
* one that hasn't got the '_rev0' suffix:
*
* extern void sfi_mystruct(NHFILE *, struct mystruct *,
* const char *);
* extern void sfi_mystruct_rev0(NHFILE *, struct mystruct_rev0 *,
* const char *);
*
* 5. Also in include/savefile.h, in the '#if NH_C < 202300L' block,
* add an entry below the one that should already exist for the
* struct that hasn't got the '_rev0' suffix:
*
* #define Sfi_mystruct(a,b,c) sfi_rm(a, b, c)
* #define Sfi_mystruct_rev0(a, b, c) sfi_mystruct_rev0(a, b, c)
*
* 6. Also in include/savefile.h, in the '#define sfi(nhfp, dt, tag)'
* generic function definition, add an entry below the one
* that should already exist for the struct name that hasn't
* got the '_rev0' suffix:
*
* struct mystruct * : sfi_rm, \
* struct mystruct_rev0 * : sfi_rm_rev0, \
*
* 7. Also in include/savefile.h, a little further down in the
* 'Sfi_' macro defininitions, add one below the existing
* one for the struct without the '_rev0' suffix:
*
* #define Sfi_mystruct(a,b,c) sfi(a, b, c)
* #define Sfi_mystruct_rev0(a, b, c) sfi(a, b, c)
*
* Only the input 'Sfi_' is required, because the old revision
* will never be written out to a file, only read in from a
* a file, so no 'Sfo_' is needed.
*
* 8. In include/sfmacros.h, add a new entry below the existing
* entry that exists without the '_rev0' suffix:
*
* SF_C(struct, mystruct)
* SF_C(struct, mystruct_rev0)
*
* 9. In include/sfprocs.h, add a new SF_PROTO_C entry below the
* existing entry that already exists without the '_rev0' suffix:
*
* SF_PROTO_C(struct, mystruct);
* SF_PROTO_C(struct, mystruct_rev0);
*
* 10. Also in include/sfprocs.h, add a new SF_ENTRY_C entry below the
* entry that already exists without the '_rev0' suffix:
*
* SF_ENTRY_C(struct, mystruct);
* SF_ENTRY_C(struct, mystruct_rev0);
*
* 11. In src/sfbase.c, add a prototype for a 'norm_ptrs' stub function
* below the entry that already exists without the '_rev0' suffix:
*
* void norm_ptrs_mystruct(struct mystruct *d_mystruct);
* void norm_ptrs_mystruct_rev0(struct mystruct_rev0 *d_mystruct);
*
* 12. Also in src/sfbase.c, add a 'norm_ptrs' stub function below the
* stub function that already exists without the '_rev0' suffix:
*
* void
* norm_ptrs_mystruct(struct mystruct *d_mystruct UNUSED)
* {
* }
*
* void
* norm_ptrs_mystruct_rev0(struct mystruct_rev0 *d_mystruct_rev0 UNUSED)
* {
* }
*
* 13. In src/sfstruct.c, add entries to the 'historical' section below the
* existing entry that doesn't have a '_rev0' suffix. You need an 'sfo_'
* entry and an 'sfi_' entry here, because they have to match function
* pointers in another struct. The 'sfo_' function will not be called
* from anywhere.
*
* historical_sfo_rm,
* historical_sfo_rm_rev0,
* ...
* historical_sfi_rm,
* historical_sfi_rm_rev0,
*
* 14. In the C source file where the 'Sfi_' call is made for your struct,
* the current code likely has a line for reading the struct from
* a file, similar the one shown below for the mystruct example:
*
* Sfi_mystruct(nhfp, &svl.mystruct, "mystruct-example");
*
* That single line will need to modified to become a code block similar
* to this, so that the uplift function will get called:
*
* if (!gu.uplift_needed_rev0_to_rev1) {
* Sfi_mystruct(nhfp, &svl.mystruct, "mystruct-example");
* } else {
* struct mystruct_rev0 old_mystruct;
*
* Sfi_mystruct_rev0(nhfp, &old_mystruct, "mystruct-example");
* uplift_mystruct_rev0_to_mystruct(&old_mystruct, &svl.mystruct);
* }
* }
*
* 15. Shortly after the reading of the struct by the 'Sfi_' function,
* if the newer revision of the struct added some new fields, new code
* will be needed to initialize the new fields to sane values.
* There is no data for the new fields in the exising savefile.
*
* if (gu.uplift_needed_rev0_to_rev1 == 1) {
* svl.mystruct.newfielda = sanevalue1;
* svl.mystruct.newfieldb = sanevalue2;
* }
*
* 16. In include/extern.h, add a prototype to the ' ### revision.c ###'
* section for the supporting uplift function:
*
* extern void uplift_mystruct_rev0_to_mystruct(struct mystruct_rev0 *,
* struct mystruct *);
*
* 17. Add the uplift function to src/revision.c. It needs to do
* field-by-field copies of the fields that exist in the old
* revision and the new revision. For now, it likely needs to
* be handcrafted using your knowledge of the struct's old
* and new revisions.
*
* Be sure that any new fields present in the newer revision
* of the struct get set to sane values or initialized to
* zero. Do whatever suits those fields best, based on your
* knowledge of the struct.
*
* void
* uplift_mystruct_rev0_to_mystruct(struct mystruct_rev0 *rev0,
* struct mystruct *rev1)
* {
* rev1->field1 = rev0->field1;
* rev1->field2 = rev0->field2;
* rev1->field3 = rev0->field3;
* rev1->field4 = rev0->field4;
*
* rev1->newfielda = 0; // new field
* rev1->newfieldb = 42; // new field
* }
*
*/
#if defined(MYSTRUCT_REV0)
#ifdef DEMO_UPLIFTS
/*
* struct mystruct_rev0
*
* This is the predecessor for 'struct mystruct'
* Revisions to 'struct mystruct' that 'struct mystruct_rev0' does not have:
* int newfielda;
* int newfieldb;
*
* The uplift function is:
* void uplift_mystruct_rev0_to_mystruct(struct *mystruct_rev0,
* struct *mystruct);
*/
struct mystruct_rev0 {
int field1;
int field2;
char field3;
long field4;
};
#endif /* DEMO_UPLIFTS */
#elif defined(XXX_REV0)
#else
#error Unproductive inclusion of revision.h
#endif
/* revision.h */
+13 -1
View File
@@ -184,6 +184,10 @@ extern void sfi_int(NHFILE *, int *, const char *);
extern void sfi_unsigned(NHFILE *, unsigned *, const char *);
extern void sfi_long(NHFILE *, long *, const char *);
extern void sfi_ulong(NHFILE *, ulong *, const char *);
#ifdef DEMO_UPLIFTS
extern void sfi_mystruct(NHFILE *, struct mystruct *, const char *);
extern void sfi_mystruct_rev0(NHFILE *, struct mystruct_rev0 *, const char *);
#endif
#if NH_C < 202300L
#define Sfo_aligntyp(a,b,c) sfo_aligntyp(a, b, c)
#define Sfo_any(a,b,c) sfo_any(a, b, c)
@@ -315,6 +319,10 @@ extern void sfi_ulong(NHFILE *, ulong *, const char *);
#define Sfi_unsigned(a, b, c) sfi_unsigned(a, b, c);
#define Sfi_xint8(a, b, c) sfi_xint8(a, b, c);
#define Sfi_xint16(a, b, c) sfi_xint16(a, b, c);
#ifdef DEMO_UPLIFTS
#define Sfi_mystruct(a, b, c) sfi_mystruct(a, b, c)
#define Sfi_mystruct_rev0(a, b, c) sfi_mystruct_rev0(a, b, c)
#endif
#else
#define sfo(nhfp, dt, tag) \
@@ -553,7 +561,7 @@ extern void sfi_ulong(NHFILE *, ulong *, const char *);
#define Sfi_dest_area(a,b,c) sfi(a, b, c)
#define Sfi_levelflags(a,b,c) sfi(a, b, c)
#define Sfi_rm(a,b,c) sfi(a, b, c)
#define Sfi_cemetery(a,b,c) sfi(a, b, c)
#define Sfi_cemetery(a,b,c) sfi_cemetery(a, b, c)
#define Sfi_damage(a,b,c) sfi(a, b, c)
#define Sfi_stairway(a,b,c) sfi(a, b, c)
#define Sfi_obj(a,b,c) sfi(a, b, c)
@@ -575,6 +583,10 @@ extern void sfi_ulong(NHFILE *, ulong *, const char *);
#define Sfi_unsigned(a, b, c) sfi(a, b, c)
#define Sfi_xint8(a, b, c) sfi(a, b, c)
#define Sfi_xint16(a, b, c) sfi(a, b, c)
#ifdef DEMO_UPLIFTS
#define Sfi_mystruct(a, b, c) sfi(a, b, c)
#define Sfi_mystruct_rev0(a, b, c) sfi(a, b, c)
#endif
#endif
/* not in _Generic */
+4
View File
@@ -49,6 +49,10 @@ SF_C(struct, s_level)
SF_C(struct, trap)
SF_C(struct, you)
SF_C(union, any)
#ifdef DEMO_UPLIFTS
SF_C(struct, mystruct)
SF_C(struct, mystruct_rev0)
#endif
SF_A(aligntyp)
SF_A(boolean)
+8
View File
@@ -68,6 +68,10 @@ SF_PROTO_C(struct, trap);
SF_PROTO_C(struct, version_info);
SF_PROTO_C(struct, you);
SF_PROTO_C(union, any);
#ifdef DEMO_UPLIFTS
SF_PROTO_C(struct, mystruct);
SF_PROTO_C(struct, mystruct_rev0);
#endif
SF_PROTO(int16);
SF_PROTO(int32);
SF_PROTO(int64);
@@ -149,6 +153,10 @@ struct sf_procs {
SF_ENTRY_C(struct, version_info);
SF_ENTRY_C(struct, you);
SF_ENTRY_C(union, any);
#ifdef DEMO_UPLIFTS
SF_ENTRY_C(struct, mystruct);
SF_ENTRY_C(struct, mystruct_rev0);
#endif
SF_ENTRY(aligntyp);
SF_ENTRY(boolean);
+2
View File
@@ -770,6 +770,8 @@ static const struct instance_globals_u g_init_u = {
FALSE, /* update_all */
/* decl.c */
FALSE, /* unweapon */
/* revision.c */
0, /* uplift_needed_rev0_to_rev1 */
/* role.c */
UNDEFINED_ROLE, /* urole */
UNDEFINED_RACE, /* urace */
+6
View File
@@ -30,6 +30,7 @@ staticfn int restlevelfile(xint8);
staticfn void rest_bubbles(NHFILE *);
staticfn void restore_gamelog(NHFILE *);
staticfn void reset_oattached_mids(boolean);
/* these ones are declared non-static in extern.h if SFCTOOL is defined */
staticfn boolean restgamestate(NHFILE *);
staticfn void rest_bubbles(NHFILE *);
@@ -900,6 +901,11 @@ dorecover(NHFILE *nhfp)
restlevelstate();
program_state.something_worth_saving = 1; /* useful data now exists */
if (gu.uplift_needed_rev0_to_rev1 == 1) {
/* they've all been uplifted now */
gu.uplift_needed_rev0_to_rev1 = 0;
}
if (!wizard && !discover)
(void) delete_savefile();
if (Is_rogue_level(&u.uz))
+89
View File
@@ -0,0 +1,89 @@
/* NetHack 5.0 revision.c $NHDT-Date: 1736530208 2025/01/10 09:30:08 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.234 $ */
/*-Copyright (c) Michael Allison, 2026. */
/* NetHack may be freely redistributed. See license for details. */
#include "hack.h"
boolean revision_increment(
int file_rev_level,
int file_critical_byte_count,
uchar *csc)
{
if (file_rev_level == 0 && SAVEFILE_REVISION_LEVEL == 1) {
/*
* Revision 1
* We set a flag gu.uplift_needed_rev0_to_rev1 for use by restore routines.
*
*/
gu.uplift_needed_rev0_to_rev1 = 1;
if (csc[file_critical_byte_count - 1] == 0)
/* below may not be necessary, or even useful */
csc[file_critical_byte_count - 1] = SAVEFILE_REVISION_LEVEL;
return TRUE;
}
return FALSE;
}
#ifdef DEMO_UPLIFTS
/* original revision 0 is in include/revision.h */
/* revision 1 */
struct mystruct {
int field1;
int field2;
char field3;
long field4;
int newfielda;
int newfieldb;
};
void
uplift_mystruct_rev0_to_mystruct(struct mystruct_rev0 *rev0,
struct mystruct *rev1)
{
rev1->field1 = rev0->field1;
rev1->field2 = rev0->field2;
rev1->field3 = rev0->field3;
rev1->field4 = rev0->field4;
rev1->newfielda = 0; // new field
rev1->newfieldb = 0; // new field
}
void
read_mystruct(struct mystruct *ms)
{
#ifdef SAVEFILE_REVISION_LEVEL
#if (SAVEFILE_REVISION_LEVEL == 0)
Sfi_mystruct(nhfp, ms, "mystruct-example");
#elif (SAVEFILE_REVISION_LEVEL == 1)
#define MYSTRUCT_REV0
#include "revision.h"
#undef MYSTRUCT_REV0
if (!gu.uplift_needed_rev0_to_rev1) {
Sfi_mystruct(nhfp, ms, "mystruct-example");
} else {
struct mystruct_rev0 old_mystruct;
Sfi_mystruct_rev0(nhfp, &old_mystruct, "mystruct-example");
uplift_mystruct_rev0_to_mystruct(&old_mystruct, ms);
}
/* this could be elsewhere in some other sourcefile for example,
* where it is needed */
if (gu.uplift_needed_rev0_to_rev1 == 1) {
/* Provide suitable starting values for fields that were not
* present in the previous revision that was read */
ms->newfielda = 0; // new field in Rev. 1
ms->newfieldb = 42; // new field in Rev. 1
}
#endif
#endif /* SAVEFILE_REVISION_LEVEL */
}
#endif /* DEMO_UPLIFTS */
/*revision.c*/
+15
View File
@@ -743,6 +743,10 @@ void norm_ptrs_version_info(struct version_info *d_version_info);
void norm_ptrs_vlaunchinfo(union vlaunchinfo *d_vlaunchinfo);
void norm_ptrs_vptrs(union vptrs *d_vptrs);
void norm_ptrs_you(struct you *d_you);
#ifdef DEMO_UPLIFTS
void norm_ptrs_mystruct(struct mystruct *d_mystruct);
void norm_ptrs_mystruct_rev0(struct mystruct_rev0 *d_mystruct_rev0);
#endif
void
norm_ptrs_any(union any *d_any UNUSED)
@@ -1038,6 +1042,17 @@ norm_ptrs_rm(struct rm *d_rm UNUSED)
{
}
#ifdef DEMO_UPLIFTS
void
norm_ptrs_mystruct(struct mystruct *d_mystruct UNUSED)
{
}
void
norm_ptrs_mystruct_rev0(struct mystruct_rev0 *d_mystruct_rev0 UNUSED)
{
}
#endif
void
norm_ptrs_s_level(struct s_level *d_s_level UNUSED)
{
+8 -1
View File
@@ -194,7 +194,6 @@ struct sf_structlevel_procs historical_sfo_procs = {
historical_sfo_version_info,
historical_sfo_you,
historical_sfo_any,
historical_sfo_aligntyp,
historical_sfo_boolean,
historical_sfo_coordxy,
@@ -219,6 +218,10 @@ struct sf_structlevel_procs historical_sfo_procs = {
historical_sfo_xint8,
historical_sfo_char,
historical_sfo_bitfield,
#ifdef DEMO_UPLIFTS
historical_sfo_mystruct,
historical_sfo_mystruct_rev0,
#endif
}
};
@@ -295,6 +298,10 @@ struct sf_structlevel_procs historical_sfi_procs = {
historical_sfi_xint8,
historical_sfi_char,
historical_sfi_bitfield,
#ifdef DEMO_UPLIFTS
historical_sfi_mystruct,
historical_sfi_mystruct_rev0,
#endif
}
};
+11 -2
View File
@@ -607,7 +607,7 @@ struct critical_sizes_with_names critical_sizes[] = {
{ (uchar) sizeof(struct objclass), "struct objclass" },
{ (uchar) sizeof(struct oextra), "struct oextra" },
{ (uchar) sizeof(struct q_score), "struct q_score" },
{ (uchar) sizeof(struct rm), "struct rm" },
{ (uchar) sizeof(struct rm), "struct rm" }, /* [61] */
{ (uchar) sizeof(struct spell), "struct spell" },
{ (uchar) sizeof(struct stairway), "struct stairway" },
{ (uchar) sizeof(struct s_level), "struct s_level" },
@@ -660,7 +660,7 @@ struct critical_sizes_with_names critical_sizes[] = {
{ 0, "" },
{ 0, "" },
{ 0, "" },
{ 0, "" },
{ (uchar) SAVEFILE_REVISION_LEVEL, "savefile_revision_level" },
};
uchar cscbuf[SIZE(critical_sizes)];
@@ -780,6 +780,15 @@ compare_critical_bytes(NHFILE *nhfp, int *idx_1st_mismatch, unsigned long utdfla
Sfi_uchar(nhfp, &cscbuf[i], "critical_sizes");
}
for (i = 1; i < cnt; ++i) {
if (cscbuf[i] != critical_sizes[i].ucsize && i == cnt - 1) {
/* SAVEFILE_REVISION_LEVEL mismatch; attempt to deal with it */
int file_rev_level = cscbuf[i];
if (revision_increment(file_rev_level,
file_csc_count,
cscbuf))
continue;
}
if (cscbuf[i] != critical_sizes[i].ucsize) {
const char *dm = datamodel(0), *dmfile;
+11 -11
View File
@@ -288,18 +288,18 @@ VOBJ14 = $(O)muse.o $(O)music.o $(O)o_init.o $(O)objects.o $(O)objnam.
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)
VOBJ18 = $(O)revision.o $(O)rip.o $(O)rnd.o $(O)role.o $(O)rumors.o
VOBJ19 = $(O)save.o $(O)selvar.o $(O)sfstruct.o $(O)shk.o $(O)shknam.o
VOBJ20 = $(O)sit.o $(O)sounds.o $(O)sp_lev.o $(O)spell.o $(O)stairs.o
VOBJ21 = $(O)steal.o $(O)steed.o $(O)symbols.o $(O)sys.o $(O)teleport.o
VOBJ22 = $(O)strutil.o $(O)termcap.o $(O)timeout.o $(O)topl.o $(O)topten.o
VOBJ23 = $(O)trap.o $(O)u_init.o $(O)uhitm.o $(O)utf8map.o $(O)vault.o
VOBJ24 = $(O)track.o $(O)vision.o $(O)weapon.o $(O)were.o $(O)wield.o
VOBJ25 = $(O)windows.o $(O)wintty.o $(O)wizard.o $(O)wizcmds.o $(O)worm.o
VOBJ26 = $(O)worn.o $(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
SOBJ = $(O)msdos.o $(O)pcsys.o $(O)tty.o $(O)unix.o \
$(O)video.o $(O)vidtxt.o $(O)pckeys.o
VVOBJ = $(O)version.o
+43 -43
View File
@@ -514,21 +514,21 @@ HACK_H = ../src/hack.h-t
# all .c that are part of the main NetHack program and are not operating- or
# windowing-system specific. Do not include date.c in this list.
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 earlyarg.c eat.c end.c engrave.c exper.c explode.c \
extralev.c files.c fountain.c hack.c hacklib.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 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 \
mhitu.c minion.c mklev.c mkmap.c mkmaze.c mkobj.c mkroom.c mon.c \
mondata.c monmove.c monst.c mplayer.c mthrowu.c muse.c music.c \
nhlua.c nhlsel.c nhlobj.c nhmd4.c o_init.c objects.c objnam.c \
options.c pager.c pickup.c pline.c polyself.c potion.c pray.c \
priest.c quest.c questpgr.c read.c rect.c region.c report.c restore.c \
rip.c rnd.c role.c rumors.c save.c selvar.c sfbase.c sfstruct.c \
shk.c shknam.c sit.c sounds.c sp_lev.c spell.c stairs.c steal.c steed.c \
strutil.c symbols.c sys.c teleport.c \
timeout.c topten.c track.c trap.c u_init.c utf8map.c \
priest.c quest.c questpgr.c read.c rect.c region.c report.c \
restore.c revision.c rip.c rnd.c role.c rumors.c save.c selvar.c \
sfbase.c sfstruct.c shk.c shknam.c sit.c sounds.c sp_lev.c \
spell.c stairs.c steal.c steed.c strutil.c symbols.c sys.c \
teleport.c timeout.c topten.c track.c trap.c u_init.c utf8map.c \
uhitm.c vault.c version.c vision.c weapon.c were.c wield.c \
windows.c wizard.c wizcmds.c worm.c worn.c write.c zap.c
@@ -567,14 +567,13 @@ HACKINCL ?= align.h artifact.h artilist.h attrib.h botl.h \
color.h config.h config1.h context.h coord.h cstd.h decl.h \
defsym.h display.h dlb.h dungeon.h engrave.h extern.h flag.h \
fnamesiz.h func_tab.h global.h warnings.h hack.h lint.h mextra.h \
mcastu.h \
micro.h mfndpos.h mkroom.h monattk.h mondata.h monflag.h monst.h \
monsters.h nhmd4.h obj.h objects.h objclass.h optlist.h patchlevel.h \
pcconf.h permonst.h prop.h rect.h region.h savefile.h selvar.h sym.h \
rm.h sp_lev.h spell.h sndprocs.h seffects.h stairs.h sys.h \
tcap.h timeout.h tradstdc.h trap.h unixconf.h vision.h vmsconf.h \
wintty.h wincurs.h winX.h winprocs.h wintype.h you.h youprop.h \
weight.h
mcastu.h micro.h mfndpos.h mkroom.h monattk.h mondata.h monflag.h \
monst.h monsters.h nhmd4.h obj.h objects.h objclass.h optlist.h \
patchlevel.h pcconf.h permonst.h prop.h rect.h region.h revision.h \
savefile.h selvar.h sym.h rm.h sp_lev.h spell.h sndprocs.h \
seffects.h stairs.h sys.h tcap.h timeout.h tradstdc.h trap.h \
unixconf.h vision.h vmsconf.h wintty.h wincurs.h winX.h winprocs.h \
wintype.h you.h youprop.h weight.h
HSOURCES ?= $(HACKINCL) dgn_file.h
@@ -617,20 +616,20 @@ HOBJ ?= $(TARGETPFX)allmain.o $(TARGETPFX)alloc.o \
$(TARGETPFX)potion.o $(TARGETPFX)pray.o $(TARGETPFX)priest.o \
$(TARGETPFX)quest.o $(TARGETPFX)questpgr.o $(TARGETPFX)read.o \
$(TARGETPFX)rect.o $(TARGETPFX)region.o $(TARGETPFX)report.o \
$(TARGETPFX)restore.o $(TARGETPFX)rip.o $(TARGETPFX)rnd.o \
$(TARGETPFX)role.o $(TARGETPFX)rumors.o $(TARGETPFX)save.o \
$(TARGETPFX)selvar.o $(TARGETPFX)sfbase.o $(TARGETPFX)sfstruct.o \
$(TARGETPFX)shk.o $(TARGETPFX)shknam.o $(TARGETPFX)sit.o \
$(TARGETPFX)sounds.o $(TARGETPFX)sp_lev.o $(TARGETPFX)spell.o \
$(TARGETPFX)stairs.o $(TARGETPFX)symbols.o $(TARGETPFX)sys.o \
$(TARGETPFX)steal.o $(TARGETPFX)steed.o $(TARGETPFX)strutil.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)restore.o $(TARGETPFX)revision.o $(TARGETPFX)rip.o \
$(TARGETPFX)rnd.o $(TARGETPFX)role.o $(TARGETPFX)rumors.o \
$(TARGETPFX)save.o $(TARGETPFX)selvar.o $(TARGETPFX)sfbase.o \
$(TARGETPFX)sfstruct.o $(TARGETPFX)shk.o $(TARGETPFX)shknam.o \
$(TARGETPFX)sit.o $(TARGETPFX)sounds.o $(TARGETPFX)sp_lev.o \
$(TARGETPFX)spell.o $(TARGETPFX)stairs.o $(TARGETPFX)symbols.o \
$(TARGETPFX)sys.o $(TARGETPFX)steal.o $(TARGETPFX)steed.o \
$(TARGETPFX)strutil.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 \
$(REGEXOBJ) $(RANDOBJ) $(SYSOBJ) $(WINOBJ) \
$(HINTOBJ) $(SNDLIBOBJ) $(UUIDOBJ) \
$(TARGETPFX)version.o
@@ -907,19 +906,19 @@ $(HACK_H): $(CONFIG_H) ../include/align.h ../include/artilist.h \
../include/decl.h ../include/defsym.h ../include/display.h \
../include/dungeon.h ../include/engrave.h ../include/flag.h \
../include/hack.h ../include/lint.h ../include/mextra.h \
../include/mcastu.h \
../include/mkroom.h ../include/monattk.h ../include/mondata.h \
../include/monflag.h ../include/monst.h ../include/monsters.h \
../include/nhlua.h ../include/obj.h ../include/objclass.h \
../include/objects.h ../include/permonst.h ../include/prop.h \
../include/quest.h ../include/rect.h ../include/region.h \
../include/mcastu.h ../include/mkroom.h ../include/monattk.h \
../include/mondata.h ../include/monflag.h ../include/monst.h \
../include/monsters.h ../include/nhlua.h ../include/obj.h \
../include/objclass.h ../include/objects.h \
../include/permonst.h ../include/prop.h ../include/quest.h \
../include/rect.h ../include/region.h ../include/revision.h \
../include/rm.h ../include/savefile.h ../include/sfprocs.h \
../include/seffects.h ../include/selvar.h \
../include/skills.h ../include/sndprocs.h ../include/spell.h \
../include/stairs.h ../include/sym.h ../include/sys.h \
../include/timeout.h ../include/trap.h ../include/vision.h \
../include/weight.h ../include/winprocs.h \
../include/wintype.h ../include/you.h ../include/youprop.h
../include/seffects.h ../include/selvar.h ../include/skills.h \
../include/sndprocs.h ../include/spell.h ../include/stairs.h \
../include/sym.h ../include/sys.h ../include/timeout.h \
../include/trap.h ../include/vision.h ../include/weight.h \
../include/winprocs.h ../include/wintype.h ../include/you.h \
../include/youprop.h
touch $(HACK_H)
#
$(TARGETPFX)cppregex.o: ../sys/share/cppregex.cpp $(CONFIG_H)
@@ -1256,6 +1255,7 @@ $(TARGETPFX)rect.o: rect.c $(HACK_H)
$(TARGETPFX)region.o: region.c $(HACK_H)
$(TARGETPFX)report.o: report.c $(HACK_H) ../include/dlb.h ../include/nhmd4.h
$(TARGETPFX)restore.o: restore.c $(HACK_H) ../include/tcap.h
$(TARGETPFX)revision.o: revision.c $(HACK_H)
$(TARGETPFX)rip.o: rip.c $(HACK_H)
$(TARGETPFX)rnd.o: rnd.c $(HACK_H) ../include/isaac64.h
$(TARGETPFX)role.o: role.c $(HACK_H)
+12 -11
View File
@@ -157,12 +157,12 @@ HACKCSRC = allmain.c alloc.c apply.c artifact.c attrib.c ball.c bones.c \
monmove.c monst.c mplayer.c mthrowu.c muse.c music.c o_init.c \
objects.c objnam.c options.c pager.c pickup.c pline.c polyself.c \
potion.c pray.c priest.c quest.c questpgr.c read.c rect.c \
region.c report.c restore.c rip.c rnd.c role.c rumors.c save.c \
selvar.c sfstruct.c shk.c shknam.c sit.c sounds.c sp_lev.c \
spell.c stairs.c steal.c steed.c strutil.c sys.c teleport.c \
timeout.c topten.c track.c trap.c u_init.c uhitm.c vault.c \
version.c vision.c weapon.c were.c wield.c windows.c wizard.c \
wizcmds.c worm.c worn.c write.c zap.c
region.c report.c restore.c revision.c rip.c rnd.c role.c \
rumors.c save.c selvar.c sfstruct.c shk.c shknam.c sit.c sounds.c \
sp_lev.c spell.c stairs.c steal.c steed.c strutil.c sys.c \
teleport.c timeout.c topten.c track.c trap.c u_init.c uhitm.c \
vault.c version.c vision.c weapon.c were.c wield.c windows.c \
wizard.c wizcmds.c worm.c worn.c write.c zap.c
#-# generated source files (vis_tab.c is gone; tile.c is handled separately
#-# via WINxxxSRC)
@@ -180,11 +180,11 @@ HACKINCL = align.h artifact.h artilist.h attrib.h botl.h \
fnamesiz.h func_tab.h global.h warnings.h hack.h lint.h mextra.h \
micro.h mkroom.h monattk.h mondata.h monflag.h monst.h monsters.h \
mfndpos.h nhmd4.h obj.h objects.h objclass.h optlist.h patchlevel.h \
pcconf.h permonst.h prop.h rect.h region.h savefile.h selvar.h sym.h \
rm.h sp_lev.h spell.h sndprocs.h seffects.h stairs.h sys.h \
tcap.h timeout.h tradstdc.h trap.h unixconf.h vision.h vmsconf.h \
wintty.h wincurs.h winX.h winprocs.h wintype.h you.h youprop.h \
weight.h
pcconf.h permonst.h prop.h rect.h region.h revision.h savefile.h \
selvar.h sym.h rm.h sp_lev.h spell.h sndprocs.h seffects.h \
stairs.h sys.h tcap.h timeout.h tradstdc.h trap.h unixconf.h \
vision.h vmsconf.h wintty.h wincurs.h winX.h winprocs.h wintype.h \
you.h youprop.h weight.h
#HSOURCES = $(HACKINCL) date.h onames.h pm.h
@@ -575,6 +575,7 @@ read.obj : read.c $(HACK_H)
rect.obj : rect.c $(HACK_H)
region.obj : region.c $(HACK_H)
restore.obj : restore.c $(HACK_H) $(INC)tcap.h
revision.obj : revision.c $(HACK_H)
rip.obj : rip.c $(HACK_H)
rnd.obj : rnd.c $(HACK_H)
role.obj : role.c $(HACK_H)
+2 -1
View File
@@ -102,7 +102,7 @@ CONFIGBASEH := color config config1 patchlevel tradstdc hacklib integer \
HACKBASEH := hack lint align dungeon wintype sym defsym \
mkroom artilist objclass objects youprop \
prop permonst monattk monflag monsters \
mondata context rm botl rect region trap \
mondata context rm botl rect region revision trap \
display vision seffects selvar sndprocs stairs decl \
quest spell obj engrave you attrib monst \
mextra skills timeout flag winprocs sys
@@ -800,6 +800,7 @@ $(TARGETPFX)rect.obj: rect.c $(HACK_H)
$(TARGETPFX)region.obj: region.c $(HACK_H)
$(TARGETPFX)report.obj: report.c $(HACK_H)
$(TARGETPFX)restore.obj: restore.c $(HACK_H) $(INCL)tcap.h
$(TARGETPFX)revision.obj: revision.c $(HACK_H)
$(TARGETPFX)rip.obj: rip.c $(HACK_H)
$(TARGETPFX)rnd.obj: rnd.c $(HACK_H) $(INCL)isaac64.h
$(TARGETPFX)role.obj: role.c $(HACK_H)
+3 -3
View File
@@ -800,8 +800,8 @@ HACK_H = $(CONFIG_H) ../include/align.h ../include/artilist.h \
../include/nhlua.h ../include/obj.h ../include/objclass.h \
../include/objects.h ../include/permonst.h ../include/prop.h \
../include/quest.h ../include/rect.h ../include/region.h \
../include/rm.h ../include/savefile.h ../include/sfprocs.h \
../include/seffects.h ../include/selvar.h \
../include/revision.h ../include/rm.h ../include/savefile.h \
../include/sfprocs.h ../include/seffects.h ../include/selvar.h \
../include/skills.h ../include/sndprocs.h ../include/spell.h \
../include/stairs.h ../include/sym.h ../include/sys.h \
../include/timeout.h ../include/trap.h ../include/vision.h \
@@ -1238,7 +1238,7 @@ COREOBJS = $(addsuffix .o, allmain alloc apply artifact attrib ball bones botl \
mon mondata monmove monst mplayer mthrowu muse music \
nhlobj nhlsel nhlua windsound o_init objects objnam options \
pager pickup pline polyself potion pray priest quest questpgr \
random read rect region report restore rip rnd role rumors \
random read rect region report restore revision rip rnd role rumors \
save sfbase sfstruct shk shknam sit selvar sounds sp_lev \
spell stairs steal steed strutil \
symbols sys teleport timeout topten track trap u_init uhitm utf8map \
+45 -42
View File
@@ -671,17 +671,17 @@ HACKCSRC = \
$(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)rect.c $(SRC)region.c $(SRC)restore.c $(SRC)revision.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 = \
@@ -700,15 +700,16 @@ HACKINCL = \
$(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)region.h $(INCL)revision.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 \
@@ -873,17 +874,17 @@ COREOBJTTY = \
$(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)restore.o $(OTTY)revision.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)
@@ -936,17 +937,17 @@ COREOBJGUI = \
$(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)restore.o $(OGUI)revision.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)
@@ -3328,6 +3329,7 @@ $(OTTY)rect.o: rect.c $(HACK_H)
$(OTTY)region.o: region.c $(HACK_H)
$(OTTY)report.o: report.c $(HACK_H) $(INCL)dlb.h $(INCL)nhmd4.h
$(OTTY)restore.o: restore.c $(HACK_H) $(INCL)tcap.h
$(OTTY)revision.o: revision.c $(HACK_H)
$(OTTY)rip.o: rip.c $(HACK_H)
$(OTTY)rnd.o: rnd.c $(HACK_H) $(INCL)isaac64.h
$(OTTY)role.o: role.c $(HACK_H)
@@ -3708,6 +3710,7 @@ $(OGUI)rect.o: rect.c $(HACK_H)
$(OGUI)region.o: region.c $(HACK_H)
$(OGUI)report.o: report.c $(HACK_H) $(INCL)dlb.h $(INCL)nhmd4.h
$(OGUI)restore.o: restore.c $(HACK_H) $(INCL)tcap.h
$(OGUI)revision.o: revision.c $(HACK_H)
$(OGUI)rip.o: rip.c $(HACK_H)
$(OGUI)rnd.o: rnd.c $(HACK_H) $(INCL)isaac64.h
$(OGUI)role.o: role.c $(HACK_H)
+3 -1
View File
@@ -234,6 +234,7 @@
<ClCompile Condition="Exists('$(PDCURSES)')" Include="$(WinCursDir)curswins.c" />
<ClCompile Condition="Exists('$(FMODINCDIR)\fmod.h') And Exists('$(FMODLIBLIB)') And Exists('$(FMODLIBDLL)')" Include="$(FMODSRC)" />
<ClCompile Include="$(SrcDir)sfbase.c" />
<ClCompile Include="$(SrcDir)revision.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(IncDir)align.h" />
@@ -312,6 +313,7 @@
<ClInclude Include="$(IncDir)sfprocs.h" />
<ClInclude Include="$(IncDir)savefile.h" />
<ClInclude Include="$(IncDir)sfmacros.h" />
<ClInclude Include="$(IncDir)revision.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="$(WinWin32Dir)NetHack.rc" />
@@ -332,4 +334,4 @@
<Target Name="AfterRebuild">
<MSBuild Projects="afternethack.proj" Targets="Build" Properties="Configuration=$(Configuration)" />
</Target>
</Project>
</Project>
+3 -1
View File
@@ -281,6 +281,7 @@
<ClCompile Include="$(WinWin32Dir)mswproc.c" />
<ClCompile Include="$(WinWin32Dir)NetHackW.c" />
<ClCompile Include="$(SrcDir)sfbase.c" />
<ClCompile Include="$(SrcDir)revision.c" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="$(WinWin32Dir)NetHackW.rc" />
@@ -386,6 +387,7 @@
<ClInclude Include="$(IncDir)sfprocs.h" />
<ClInclude Include="$(IncDir)savefile.h" />
<ClInclude Include="$(IncDir)sfmacros.h" />
<ClInclude Include="$(IncDir)revision.h" />
<ClInclude Include="..\resource.h" />
</ItemGroup>
<ItemGroup>
@@ -409,4 +411,4 @@
<Target Name="AfterRebuild">
<MSBuild Projects="$(vsDir)NetHack\afternethack.proj" Targets="Build" Properties="Configuration=$(Configuration)" />
</Target>
</Project>
</Project>