Merge branch 'NetHack-3.6.2'

This commit is contained in:
nhmall
2018-11-17 08:32:59 -05:00
26 changed files with 929 additions and 567 deletions

View File

@@ -345,6 +345,13 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/
argv++;
}
#ifdef WIN32
if (argcheck(argc, argv, ARG_WINDOWS) == 1) {
argc--;
argv++;
}
#endif
if (argc > 1 && !strncmp(argv[1], "-d", 2) && argv[1][2] != 'e') {
/* avoid matching "-dec" for DECgraphics; since the man page
* says -d directory, hope nobody's using -desomething_else

View File

@@ -1,5 +1,5 @@
# NetHack Makefile (VMS) - data files: special levels and other data.
# NetHack 3.6 Makefile.dat $NHDT-Date: 1524689428 2018/04/25 20:50:28 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.9 $
# NetHack 3.6 Makefile.dat $NHDT-Date: 1542388601 2018/11/16 17:16:41 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.10 $
# Copyright (c) 2015 by Mike Stephenson
# NetHack may be freely redistributed. See license for details.
@@ -26,10 +26,11 @@ UTILMARKER = $(UTL)util.timestamp;
# note: filespecs have enough punctuation to satisfy DELETE
MARKERS = spec_levs.timestamp;,quest_levs.timestamp;
VARDAT = data.;,rumors.;,quest.dat;,oracles.;,options.;
VARDAT = data.;,rumors.;,quest.dat;,oracles.;,options.;,\
engrave.;,epitaph.;,bogusmon.;
DUNGEON = dungeon.;
X11TILES= x11tiles.;
# note: the level lists need to be space separated
# note: the level lists need to be space separated for use as-is by $(LEVCOMP)
QUESTLEVS = Arch.des Barb.des Caveman.des Healer.des Knight.des \
Monk.des Priest.des Ranger.des Rogue.des Samurai.des Tourist.des \
Valkyrie.des Wizard.des
@@ -54,6 +55,12 @@ quest.dat : quest.dat;
@ $(NOOP)
oracles : oracles.;
@ $(NOOP)
engrave : engrave.;
@ $(NOOP)
epitaph : epitaph.;
@ $(NOOP)
bogusmon : bogusmon.;
@ $(NOOP)
options : options.;
@ $(NOOP)
x11tiles : $(X11TILES)
@@ -102,6 +109,9 @@ data.; : data.base $(MAKEDEFS)
rumors.; : rumors.tru rumors.fal $(MAKEDEFS)
$(RUN) $(MAKEDEFS) -r
engrave.; epitaph.; bogusmon.; : engrave.txt epitaph.txt bogusmon.txt
$(RUN) $(MAKEDEFS) -s
quest.dat; : quest.txt $(MAKEDEFS)
$(RUN) $(MAKEDEFS) -q

View File

@@ -1,5 +1,5 @@
# NetHack Makefile (VMS) - for building nethack itself.
# NetHack 3.6 Makefile.src $NHDT-Date: 1524689428 2018/04/25 20:50:28 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.29 $
# NetHack 3.6 Makefile.src $NHDT-Date: 1542388601 2018/11/16 17:16:41 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.31 $
# Copyright (c) 2011 by Robert Patrick Rankin
# NetHack may be freely redistributed. See license for details.
@@ -113,19 +113,22 @@ HACKCSRC = allmain.c alloc.c apply.c artifact.c attrib.c ball.c bones.c \
botl.c cmd.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 extralev.c \
files.c fountain.c hack.c hacklib.c invent.c light.c lock.c mail.c \
makemon.c mapglyph.c mcastu.c mhitm.c mhitu.c minion.c mklev.c mkmap.c \
files.c fountain.c hack.c hacklib.c invent.c light.c lock.c \
mail.c makemon.c mapglyph.c mcastu.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 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 restore.c rip.c rnd.c \
role.c rumors.c save.c shk.c shknam.c sit.c sounds.c sp_lev.c spell.c \
steal.c steed.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 \
priest.c quest.c questpgr.c read.c rect.c region.c restore.c \
rip.c rnd.c role.c \
rumors.c save.c shk.c shknam.c sit.c sounds.c sp_lev.c spell.c \
steal.c steed.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 worm.c worn.c write.c zap.c
# generated source files (tile.c is handled separately via WINxxxSRC)
GENCSRC = monstr.c vis_tab.c #tile.c
GENCSRC = vis_tab.c #tile.c
# .c files for this version (for date.h)
VERSOURCES = $(HACKCSRC) $(SYSSRC) $(WINSRC) $(RANDSRC) $(GENCSRC)
@@ -159,7 +162,7 @@ HOBJ2 = dog.obj,dogmove.obj,dokick.obj,dothrow.obj,drawing.obj, \
extralev.obj,files.obj,fountain.obj,hack.obj,hacklib.obj,invent.obj
HOBJ3 = light.obj,lock.obj,mail.obj,makemon.obj,mapglyph.obj,mcastu.obj, \
mhitm.obj,mhitu.obj,minion.obj,mklev.obj,mkmap.obj,mkmaze.obj, \
mkobj.obj,mkroom.obj,mon.obj,mondata.obj,monmove.obj,monstr.obj
mkobj.obj,mkroom.obj,mon.obj,mondata.obj,monmove.obj
HOBJ4 = mplayer.obj,mthrowu.obj,muse.obj,music.obj,o_init.obj,objnam.obj, \
options.obj,pager.obj,pickup.obj,pline.obj,polyself.obj, \
potion.obj,pray.obj,priest.obj,quest.obj,questpgr.obj,read.obj
@@ -260,10 +263,6 @@ $(INC)pm.h : $(MAKEDEFS)
$(CD) $(UTL)
$(MAKE)$(MAKEFLAGS) $(INC)pm.h
@ $(CD) $(SRC)
monstr.c : $(MAKEDEFS)
$(CD) $(UTL)
$(MAKE)$(MAKEFLAGS) $(SRC)monstr.c
@ $(CD) $(SRC)
# both vis_tab.h and vis_tab.c are made at the same time by makedefs
$(INC)vis_tab.h : vis_tab.c
$(TOUCH) $(INC)vis_tab.h
@@ -290,19 +289,20 @@ $(INC)date.h : $(VERSOURCES) $(HACK_H)
$(MAKE)$(MAKEFLAGS) $(INC)date.h
@ $(CD) $(SRC)
# special targets
# special targets (monstr.c is an obsolete generated source file)
clean :
- if f$search("*.*;-2").nes."" then purge/Keep=2
- if f$search("$(INC)*.*;-2").nes."" then purge/Keep=2 $(INC) /Exclude=*conf*.h
- if f$search("*.obj").nes."" then delete *.obj;*
- if f$search("*.h-t").nes."" then delete *.h-t;* !$(HACK_H),$(CONFIG_H)
- if f$search("monstr.c").nes."" then delete monstr.c;*
spotless : clean
- if f$search("*.*;-1).nes."" then purge
- if f$search("$(INC)*.*;-1").nes."" then purge $(INC)
- if f$search("$(SYSTEM)").nes."" then delete $(SYSTEM)
- if f$search("$(GAME)").nes."" then delete $(GAME)
- delete monstr.c;,vis_tab.c;,$(INC)vis_tab.h;,\
- delete vis_tab.c;,$(INC)vis_tab.h;,\
$(INC)pm.h;,$(INC)onames.h;,$(INC)date.h;
- if f$search("tile.c").nes."" then delete tile.c;
- if f$search("tclib.c").nes."" then delete tclib.c;
@@ -368,7 +368,6 @@ winstat.obj : $(X11)winstat.c $(HACK_H) $(INC)winX.h
wintext.obj : $(X11)wintext.c $(HACK_H) $(INC)winX.h $(INC)xwindow.h
winval.obj : $(X11)winval.c $(HACK_H) $(INC)winX.h
tile.obj : $(SRC)tile.c $(HACK_H)
monstr.obj : monstr.c $(CONFIG_H)
vis_tab.obj : vis_tab.c $(CONFIG_H) $(INC)vis_tab.h
# general code
allmain.obj : allmain.c $(HACK_H)

View File

@@ -1,5 +1,5 @@
# NetHack Makefile (VMS) - for utility programs.
# NetHack 3.6 Makefile.utl $NHDT-Date: 1524689428 2018/04/25 20:50:28 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.15 $
# NetHack 3.6 Makefile.utl $NHDT-Date: 1542388602 2018/11/16 17:16:42 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.16 $
# Copyright (c) 2011 by Robert Patrick Rankin
# NetHack may be freely redistributed. See license for details.
@@ -173,8 +173,6 @@ $(INC)onames.h : $(MAKEDEFS)
$(RUN) $(MAKEDEFS) -o
$(INC)pm.h : $(MAKEDEFS)
$(RUN) $(MAKEDEFS) -p
$(SRC)monstr.c : $(MAKEDEFS)
$(RUN) $(MAKEDEFS) -m
# both vis_tab.h and vis_tab.c are made at the same time by makedefs -z
$(INC)vis_tab.h : $(SRC)vis_tab.c
$(TOUCH) $(INC)vis_tab.h

View File

@@ -1,9 +1,9 @@
$ ! vms/install.com -- set up nethack 'playground'
$! $NHDT-Date: 1524689428 2018/04/25 20:50:28 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.10 $
$! $NHDT-Date: 1542388600 2018/11/16 17:16:40 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.11 $
$! Copyright (c) 2016 by Robert Patrick Rankin
$! NetHack may be freely redistributed. See license for details.
$ !
$ ! $NHDT-Date: 1524689428 2018/04/25 20:50:28 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.10 $
$ ! $NHDT-Date: 1542388600 2018/11/16 17:16:40 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.11 $
$ !
$ ! Use vmsbuild.com to create nethack.exe, makedefs, and lev_comp *first*.
$ !
@@ -26,10 +26,11 @@ $ if p2.nes."" then gameuic := 'p2'
$
$ ! note: all filespecs contain some punctuation,
$ ! to avoid inadvertent logical name interaction
$ play_files = "PERM.,RECORD.,LOGFILE.,PANICLOG."
$ play_files = "PERM.,RECORD.,LOGFILE.,XLOGFILE.,PANICLOG."
$ help_files = "HELP.,HH.,CMDHELP.,KEYHELP.,WIZHELP.,OPTHELP.," -
+ "HISTORY.,LICENSE."
$ data_files = "DATA.,RUMORS.,ORACLES.,OPTIONS.,QUEST.DAT,TRIBUTE."
$ data_files = "DATA.,RUMORS.,ORACLES.,OPTIONS.,QUEST.DAT,TRIBUTE.," -
+ "ENGRAVE.,EPITAPH.,BOGUSMON."
$ sysconf_file = "[.sys.vms]sysconf"
$ guidebook = "[.doc]Guidebook.txt"
$ invoc_proc = "[.sys.vms]nethack.com"
@@ -88,6 +89,8 @@ $ makedefs -r !rumors.tru + rumors.fal -> rumors
$ milestone "(oracles)"
$ makedefs -h !oracles.txt -> oracles
$ milestone "(dungeon preprocess)"
$ makedefs -s
$ milestone "(engrave, epitaph, bogusmon)"
$ makedefs -e !dungeon.def -> dungeon.pdf
$ milestone "(quest text)"
$ makedefs -q !quest.txt -> quest.dat

View File

@@ -1,6 +1,6 @@
$ ! vms/vmsbuild.com -- compile and link NetHack 3.6.* [pr]
$ version_number = "3.6.2"
$ ! $NHDT-Date: 1524689429 2018/04/25 20:50:29 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.17 $
$ ! $NHDT-Date: 1542411224 2018/11/16 23:33:44 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.19 $
# Copyright (c) 2018 by Robert Patrick Rankin
# NetHack may be freely redistributed. See license for details.
$ !
@@ -251,7 +251,6 @@ $ makedefs -p !pm.h
$ makedefs -o !onames.h
$ makedefs -v !date.h
$ milestone " (*.h)"
$ makedefs -m !../src/monstr.c
$ makedefs -z !../src/vis_tab.c, ../include/vis_tab.h
$ milestone " (*.c)"
$ set default [-.src]
@@ -269,7 +268,7 @@ $ c_list = "allmain,apply,artifact,attrib,ball,bones,botl,cmd,dbridge,detect" -
$ gosub compile_list
$ c_list = "hack,hacklib,invent,light,lock,mail,makemon,mapglyph,mcastu" -
+ ",mhitm,mhitu,minion,mklev,mkmap,mkmaze,mkobj,mkroom,mon,mondata" -
+ ",monmove,monstr,mplayer,mthrowu,muse,music,o_init,objnam,options" -
+ ",monmove,mplayer,mthrowu,muse,music,o_init,objnam,options" -
+ ",pager,pickup"
$ gosub compile_list
$ c_list = "pline,polyself,potion,pray,priest,quest,questpgr,read" -

View File

@@ -571,8 +571,6 @@ char ch;
break;
default:
// Temporary fix. Tty putstatusfield()
inverse = (console.current_nhattr[ATR_INVERSE] && iflags.wc_inverse);
console.attr = (inverse) ?
ttycolors_inv[console.current_nhcolor] :
@@ -1666,6 +1664,12 @@ void set_cp_map()
int count = MultiByteToWideChar(codePage, 0, &c, 1,
&console.cpMap[i], 1);
nhassert(count == 1);
// If a character was mapped to unicode control codes,
// remap to the appropriate unicode character per our
// code page 437 mappings.
if (console.cpMap[i] < 32)
console.cpMap[i] = cp437[console.cpMap[i]];
}
}

View File

@@ -44,3 +44,40 @@ void win10_init()
}
}
void win10_monitor_size(HWND hWnd, int * width, int * height)
{
HMONITOR monitor = MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST);
MONITORINFO info;
info.cbSize = sizeof(MONITORINFO);
BOOL success = GetMonitorInfo(monitor, &info);
nhassert(success);
*width = info.rcMonitor.right - info.rcMonitor.left;
*height = info.rcMonitor.bottom - info.rcMonitor.top;
}
int win10_monitor_dpi(HWND hWnd)
{
UINT monitorDpi = 96;
if (gWin10.Valid) {
monitorDpi = gWin10.GetDpiForWindow(hWnd);
if (monitorDpi == 0)
monitorDpi = 96;
}
monitorDpi = max(96, monitorDpi);
return monitorDpi;
}
double win10_monitor_scale(HWND hWnd)
{
return (double) win10_monitor_dpi(hWnd) / 96.0;
}
void win10_monitor_info(HWND hWnd, MonitorInfo * monitorInfo)
{
monitorInfo->scale = win10_monitor_scale(hWnd);
win10_monitor_size(hWnd, &monitorInfo->width, &monitorInfo->height);
}

View File

@@ -19,8 +19,19 @@ typedef struct {
GetDpiForWindowProc GetDpiForWindow;
} Win10;
typedef struct {
double scale; // dpi of monitor / 96
int width; // in pixels
int height; // in pixels
} MonitorInfo;
extern Win10 gWin10;
void win10_init();
int win10_monitor_dpi(HWND hWnd);
double win10_monitor_scale(HWND hWnd);
void win10_monitor_size(HWND hWnd, int * width, int * height);
void win10_monitor_info(HWND hWnd, MonitorInfo * monitorInfo);
#endif // WIN10_H
#endif // WIN10_H

View File

@@ -37,9 +37,13 @@
*
*/
/* runtime cursor display control switch */
boolean win32_cursorblink;
/* globals required within here */
HANDLE ffhandle = (HANDLE) 0;
WIN32_FIND_DATA ffd;
typedef HWND(WINAPI *GETCONSOLEWINDOW)();
static HWND GetConsoleHandle(void);
static HWND GetConsoleHwnd(void);
@@ -581,6 +585,25 @@ BOOL winos_font_support_cp437(HFONT hFont)
return allFound;
}
int
windows_early_options(window_opt)
const char *window_opt;
{
/*
* If you return 2, the game will exit before it begins.
* Return 1, to say the option parsed okay.
* Return 0, to say the option was bad.
*/
if (match_optname(window_opt, "cursorblink", 5, FALSE)) {
win32_cursorblink = TRUE;
return 1;
} else {
raw_printf(
"-%swindows:cursorblink is the only supported option.\n");
}
return 0;
}
#endif /* WIN32 */
/*winnt.c*/
/*winnt.c*/