diff --git a/.gitignore b/.gitignore
index 2a2491053..0030d75a8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,6 +35,9 @@ Makefile
Debug/
Release/
binary/
+package/*
+vspackage/
+vsbinary/
build/
ipch/
lib/*
diff --git a/sys/windows/vs/NetHack.sln b/sys/windows/vs/NetHack.sln
index 39b247dce..732d87c12 100644
--- a/sys/windows/vs/NetHack.sln
+++ b/sys/windows/vs/NetHack.sln
@@ -85,6 +85,22 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hacklib", "hacklib\hacklib.
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fetchprereq", "FetchPrereq\fetchprereq.vcxproj", "{503AE687-C33A-45ED-93AA-83967E176D67}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", "package\package.vcxproj", "{0B53AF9B-E1A4-478B-9246-43A39E8B4027}"
+ ProjectSection(ProjectDependencies) = postProject
+ {0303A585-3F83-4BB7-AF6B-1E12C8FB54AC} = {0303A585-3F83-4BB7-AF6B-1E12C8FB54AC}
+ {096FD6BB-256A-4E68-9B09-2ACA7C606FF3} = {096FD6BB-256A-4E68-9B09-2ACA7C606FF3}
+ {1693F852-A207-4348-8223-222C2A7FEEEB} = {1693F852-A207-4348-8223-222C2A7FEEEB}
+ {2F35F228-6733-4FE5-9B46-B3AA10D4BC2E} = {2F35F228-6733-4FE5-9B46-B3AA10D4BC2E}
+ {503AE687-C33A-45ED-93AA-83967E176D67} = {503AE687-C33A-45ED-93AA-83967E176D67}
+ {609BC774-C6F8-4B2B-AA7D-5B3D0EA95751} = {609BC774-C6F8-4B2B-AA7D-5B3D0EA95751}
+ {63F9B82B-F589-4082-ABE5-D4F0682050AB} = {63F9B82B-F589-4082-ABE5-D4F0682050AB}
+ {642BC75D-ABAF-403E-8224-7C725FD4CB42} = {642BC75D-ABAF-403E-8224-7C725FD4CB42}
+ {93F10526-209E-41D7-BBEA-775787876895} = {93F10526-209E-41D7-BBEA-775787876895}
+ {BA3DD34C-04B7-40D0-B373-9329AA9E8945} = {BA3DD34C-04B7-40D0-B373-9329AA9E8945}
+ {BAA70D0F-3EC7-4D10-91F0-974F1F49308B} = {BAA70D0F-3EC7-4D10-91F0-974F1F49308B}
+ {CEC5D360-8804-454F-8591-002184C23499} = {CEC5D360-8804-454F-8591-002184C23499}
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@@ -189,6 +205,14 @@ Global
{503AE687-C33A-45ED-93AA-83967E176D67}.Release|Win32.Build.0 = Release|Win32
{503AE687-C33A-45ED-93AA-83967E176D67}.Release|x64.ActiveCfg = Release|x64
{503AE687-C33A-45ED-93AA-83967E176D67}.Release|x64.Build.0 = Release|x64
+ {0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Debug|Win32.Build.0 = Debug|Win32
+ {0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Debug|x64.ActiveCfg = Debug|x64
+ {0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Debug|x64.Build.0 = Debug|x64
+ {0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Release|Win32.ActiveCfg = Release|Win32
+ {0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Release|Win32.Build.0 = Release|Win32
+ {0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Release|x64.ActiveCfg = Release|x64
+ {0B53AF9B-E1A4-478B-9246-43A39E8B4027}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/sys/windows/vs/NetHackPackage.wapproj b/sys/windows/vs/NetHackPackage.wapproj
index 3bdcf8ce3..35fcd2217 100644
--- a/sys/windows/vs/NetHackPackage.wapproj
+++ b/sys/windows/vs/NetHackPackage.wapproj
@@ -112,25 +112,25 @@
-
+
NetHackW\nethackrc.template
-
+
NetHackW\Guidebook.txt
-
+
NetHackW\license
-
+
NetHackW\nhdat$(VERSION_MAJOR)$(VERSION_MINOR)$(PATCHLEVEL)
-
+
NetHackW\opthelp
-
+
NetHackW\symbols.template
-
+
NetHackW\sysconf.template
diff --git a/sys/windows/vs/dlb/afterdlb.proj b/sys/windows/vs/dlb/afterdlb.proj
index 967c181fb..515473a3a 100644
--- a/sys/windows/vs/dlb/afterdlb.proj
+++ b/sys/windows/vs/dlb/afterdlb.proj
@@ -7,10 +7,9 @@
-
+
-
-
+
diff --git a/sys/windows/vs/package/package.nmake b/sys/windows/vs/package/package.nmake
new file mode 100644
index 000000000..cfd363516
--- /dev/null
+++ b/sys/windows/vs/package/package.nmake
@@ -0,0 +1,129 @@
+# NetHack 3.7 package.nmake
+#==============================================================================
+#
+# The version of the game this Makefile was designed for
+NETHACK_VERSION="3.7.0"
+
+# A brief variation for use in macros
+NHV=$(NETHACK_VERSION:.=)
+NHV=$(NHV:"=)
+
+#
+# relative directories from root of NetHack tree.
+#
+
+#LIBSDIR=lib # libraries and external bits
+#SUBMSDIR=submodules # NetHack git submodules
+PACKAGESDIR=vspackage # put in vspackage to distinguish
+ROOTDIR=..\..\..\.. # root of NetHack tree relative to project file
+
+# Directories we might have to collect things from
+#
+INCL = $(ROOTDIR)\include # NetHack include files
+DAT = $(ROOTDIR)\dat # NetHack data files
+DOC = $(ROOTDIR)\doc # NetHack documentation files
+UTIL = $(ROOTDIR)\util # Utility source
+SRC = $(ROOTDIR)\src # Main source
+SSYS = $(ROOTDIR)\sys\share # Shared system files
+MSWSYS = $(ROOTDIR)\sys\windows # MS windows specific files
+TTY = $(ROOTDIR)\win\tty # window port files (tty)
+MSWIN = $(ROOTDIR)\win\win32 # window port files (win32)
+WCURSES = $(ROOTDIR)\win\curses # window port files (curses)
+WSHR = $(ROOTDIR)\win\share # Tile support files
+QT = $(ROOTDIR)\win\Qt # QT support files
+X11 = $(ROOTDIR)\win\X11 # X11 support files
+LIBDIR = $(ROOTDIR)\lib # libraries and external bits
+SUBMDIR = $(ROOTDIR)\submodules # NetHack git submodules
+SndWavDir = $(ROOTDIR)\sound\wav # sound files that get integrated
+
+# Directories we might place collected things
+#
+VSBINDIR=$(ROOTDIR)\vsbinary
+VSPACKAGEDIR = $(ROOTDIR)\vspackage
+
+
+
+default: packageall
+
+#===============================================================================
+# makefile rules
+#===============================================================================
+
+# Rules for files in dat
+{$(DAT)}.dat{$(VSBINDIR)}.dat:
+ copy /Y $< $@
+
+#===============================================================================
+# packaging
+#===============================================================================
+
+PKGFILES=Guidebook.txt license NetHack.exe NetHack.txt \
+ NetHackW.exe opthelp nhdat370 record symbols.template sysconf.template \
+ nethackrc.template
+FILESTOZIP=$(VSBINDIR)\Guidebook.txt $(VSBINDIR)\license \
+ $(VSBINDIR)\NetHack.exe $(VSBINDIR)\NetHack.txt $(VSBINDIR)\NetHackW.exe \
+ $(VSBINDIR)\opthelp $(VSBINDIR)\nhdat370 $(VSBINDIR)\record \
+ $(VSBINDIR)\symbols.template $(VSBINDIR)\sysconf.template $(VSBINDIR)\nethackrc.template
+DBGSYMS = NetHack.PDB NetHackW.PDB
+PDBTOZIP = ..\NetHack\symbols\$(Configuration)\$(Platform)\NetHack.PDB \
+ ..\NetHackW\symbols\$(Configuration)\$(Platform)\NetHackW.PDB
+MAINZIP = $(VSPACKAGEDIR)\nethack-$(NHV)-win-$(PlatformShortName).zip
+DBGSYMZIP = $(VSPACKAGEDIR)\nethack-$(NHV)-win-$(PlatformShortName)-debugsymbols.zip
+
+packageall: packagezip
+
+packagezip: showvar vsbindir vspackagedir $(FILESTOZIP) $(MAINZIP) $(DBGSYMZIP)
+ @echo NetHack Windows package created: $(MAINZIP)
+
+$(MAINZIP): $(FILESTOZIP)
+# if not exist $(VSPACKAGEDIR)\*.* mkdir $(VSPACKAGEDIR)
+ tar -a -cf $(MAINZIP) -C $(VSBINDIR) $(PKGFILES)
+
+$(DBGSYMZIP): $(PDBTOZIP)
+ tar -a -cf $(DBGSYMZIP) $(PDBTOZIP)
+
+$(VSBINDIR)\license: $(BinDir)\license
+ copy /Y $(BinDir)\license $@
+$(VSBINDIR)\Guidebook.txt: $(BinDir)\Guidebook.txt
+ copy /Y $(BinDir)\Guidebook.txt $@
+$(VSBINDIR)\NetHack.exe: $(BinDir)\NetHack.exe
+ copy /Y $(BinDir)\NetHack.exe $@
+$(VSBINDIR)\NetHack.txt: $(BinDir)\NetHack.txt
+ copy /Y $(BinDir)\NetHack.txt $@
+$(VSBINDIR)\NetHackW.exe: $(BinDir)\NetHackW.exe
+ copy /Y $(BinDir)\NetHackW.exe $@
+$(VSBINDIR)\opthelp: $(BinDir)\opthelp
+ copy /Y $(BinDir)\opthelp $@
+$(VSBINDIR)\nhdat$(NHV): $(BinDir)\nhdat$(NHV)
+ copy /Y $(BinDir)\nhdat$(NHV) $@
+$(VSBINDIR)\symbols.template: $(BinDir)\symbols.template
+ copy /Y $(BinDir)\symbols.template $@
+$(VSBINDIR)\nethackrc.template: $(BinDir)\nethackrc.template
+ copy /Y $(BinDir)\nethackrc.template $@
+$(VSBINDIR)\sysconf.template: $(BinDir)\sysconf.template
+ copy /Y $(BinDir)\sysconf.template $@
+$(VSBINDIR)\record:
+ -if not exist $(VSBINDIR)\record. goto>$(VSBINDIR)\record.
+
+showvar:
+ @echo BinDir=[$(BinDir)]
+ @echo Platform=[$(Platform)]
+ @echo PlatformShortName=[$(PlatformShortName)]
+ @echo Configuration=[$(Configuration)]
+
+vspackagedir:
+ @if not exist $(VSPACKAGEDIR)\*.* echo creating directory $(VSPACKAGEDIR:\=/)
+ @if not exist $(VSPACKAGEDIR)\*.* mkdir $(VSPACKAGEDIR)
+
+vsbindir:
+ @if not exist $(VSBINDIR)\*.* echo creating directory $(VSBINDIR:\=/)
+ @if not exist $(VSBINDIR)\*.* mkdir $(VSBINDIR)
+
+clean:
+# @if exist $(LIBDIR)\$(PDCDIST) rmdir /Q $(LIBDIR)\$(PDCDIST) /s
+# @if exist $(LIBDIR)\lua-$(LUA_VERSION) rmdir /Q $(LIBDIR)\lua-$(LUA_VERSION) /s
+# @if exist ..\..\..\..\include\nhlua.h del /Q ..\..\..\..\include\nhlua.h
+
+rebuild:
+# @if exist $(LIBDIR)\$(PDCDIST) echo nothing to do for lib\$(PDCDIST)
+# @if exist $(LIBDIR)\lua-$(LUA_VERSION) echo nothing to do for lib\lua-$(LUA_VERSION)
diff --git a/sys/windows/vs/package/package.vcxproj b/sys/windows/vs/package/package.vcxproj
new file mode 100644
index 000000000..716dd1699
--- /dev/null
+++ b/sys/windows/vs/package/package.vcxproj
@@ -0,0 +1,63 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+
+
+ 17.0
+ {0B53AF9B-E1A4-478B-9246-43A39E8B4027}
+ Win32Proj
+ 10.0.22621.0
+
+
+
+ Makefile
+ true
+
+
+ Makefile
+ false
+
+
+ Makefile
+ true
+
+
+ Makefile
+ false
+
+
+
+
+
+
+
+
+
+
+
+ pushd $(vsDir)package %26%26 nmake -F package.nmake BinDir="$(BinDir)\" Platform="$(Platform)" PlatformShortName="$(PlatformShortName)" Configuration="$(Configuration)" %26%26 popd
+ pushd $(vsDir)package %26%26 nmake -F package.nmake clean %26%26 popd
+ pushd $(vsDir)package %26%26 nmake -F package.nmake rebuild %26%26 popd
+
+
+
+
+