diff --git a/doc/fixes36.2 b/doc/fixes36.2 index f34840d67..f234f0776 100644 --- a/doc/fixes36.2 +++ b/doc/fixes36.2 @@ -1,4 +1,4 @@ -$NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.299 $ $NHDT-Date: 1554580624 2019/04/06 19:57:04 $ +$NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.300 $ $NHDT-Date: 1554841009 2019/04/09 20:16:49 $ This fixes36.2 file is here to capture information about updates in the 3.6.x lineage following the release of 3.6.1 in April 2018. Please note, however, @@ -574,6 +574,7 @@ tty: if eight_bit_tty option is set and current symbol set specifies DECgraphics handling, render line-drawing characters (in nethack's scheme, the 4th quarter of ASCII--mostly lower case letters--with 8th-bit forced on) instead of treating that subset as 8-bit characters +tty: enable blink attribute for status highlights (TERMLIB + !NO_TERMS config) unix: Makefile.src and Makefile.utl inadvertently relied on a 'gnu make' extension when using $(VERBOSEMAKE) to reduce build-time feedback; replace with $(QUIETCC) which operates the same but defaults to diff --git a/sys/winnt/Install.nt b/sys/winnt/Install.nt index f3fe944fc..8842ad861 100644 --- a/sys/winnt/Install.nt +++ b/sys/winnt/Install.nt @@ -1,11 +1,11 @@ - Copyright (c) NetHack Development Team 1990-2018 + Copyright (c) NetHack Development Team 1990-2019 NetHack may be freely redistributed. See license for details. ============================================================== Instructions for compiling and installing NetHack 3.6 on a Windows system (Windows 7/8.x/10 or later only. XP may work but is untested) ============================================================== - Last revision: $NHDT-Date: 1542545993 2018/11/18 12:59:53 $ + Last revision: $NHDT-Date: 1554784481 2019/04/09 04:34:41 $ Credit for the porting of NetHack to the Win32 Console Subsystem goes to the NT Porting Team started by Michael Allison. @@ -21,7 +21,8 @@ of the tty and graphical windows versions of NetHack 3.6.2. You can build a TTY version of NetHack and a Windows Graphical version. You can use one of the following build environments: - o A copy of Microsoft Visual Studio 2017 Community Edition + o A copy of Microsoft Visual Studio 2017 Community Edition or + a copy of Microsoft Visual Studio 2019 Community Edition OR @@ -65,6 +66,14 @@ of NetHack you wish to run. The Visual Studio 2017 NetHack solution file can be found here: win\win32\vs2017\NetHack.sln +You can use that same win\win32\vs2017\NetHack.sln with Visual Studio 2019, +but you may have to retarget the projects: + Windows SDK Version: 10.0.17763.0 [ There have been some reports of + difficulties if you instead choose + "10.0 (latest installed version)" ] + Platform Toolset: Upgrade to v142 + + Before executing the steps to build listed in the next paragraph, decide if you want to include optional curses window-port. See the note just below entitled "Optional curses window-port support." diff --git a/sys/winnt/Makefile.msc b/sys/winnt/Makefile.msc index 74e585aff..fbd1e9a20 100644 --- a/sys/winnt/Makefile.msc +++ b/sys/winnt/Makefile.msc @@ -1,4 +1,4 @@ -# NetHack 3.6 Makefile.msc $NHDT-Date: 1550344504 2019/02/16 19:15:04 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.152 $ */ +# NetHack 3.6 Makefile.msc $NHDT-Date: 1554784482 2019/04/09 04:34:42 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.153 $ */ # Copyright (c) NetHack PC Development Team 1993-2019 # #============================================================================== @@ -7,9 +7,8 @@ # NetHack 3.6.x Makefile for MS Visual Studio Visual C++ compiler # # Visual Studio Compilers Tested: -# - Microsoft Visual Studio 2010 Express, with the Platform SDK -# - Microsoft Visual Studio 2013 Express # - Microsoft Visual Studio 2017 Community Edition +# - Microsoft Visual Studio 2019 Community Edition # #============================================================================== # This is used for building two versions of NetHack: @@ -464,8 +463,8 @@ ccommon= -c -nologo -D"_CONSOLE" -D"_CRT_NONSTDC_NO_DEPRECATE" -D"_CRT_SECURE_NO -DHAS_STDINT_H -DHAS_INLINE $(CURSESDEF) \ -EHsc -fp:precise -Gd -GF -GS -Gy \ $(CL_RECENT) -WX- -Zc:forScope -Zc:wchar_t -Zi -cdebug= -analyze- -D"_DEBUG" -Gm -MTd -RTC1 -Od -crelease= -analyze- -D"_MBCS" -errorReport:prompt -Gm- -MT -O2 -Ot -Ox -Oy +cdebug= -analyze- -D"_DEBUG" -MTd -RTC1 -Od +crelease= -analyze- -D"_MBCS" -errorReport:prompt -MT -O2 -Ot -Ox -Oy lcommon= /NOLOGO /INCREMENTAL:NO diff --git a/sys/winnt/nhsetup.bat b/sys/winnt/nhsetup.bat index da3fb9e9d..a5c9ce75b 100755 --- a/sys/winnt/nhsetup.bat +++ b/sys/winnt/nhsetup.bat @@ -1,5 +1,5 @@ -@REM NetHack 3.6 nhsetup.bat $NHDT-Date: 1432512794 2015/05/25 00:13:14 $ $NHDT-Branch: master $:$NHDT-Revision: 1.33 $ */ -@REM Copyright (c) NetHack PC Development Team 1993-2017 +@REM NetHack 3.6 nhsetup.bat $NHDT-Date: 1554784485 2019/04/09 04:34:45 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.37 $ */ +@REM Copyright (c) NetHack PC Development Team 1993-2019 @REM NetHack may be freely redistributed. See license for details. @REM Win32 setup batch file, see Install.nt for details @REM @@ -58,15 +58,26 @@ echo MinGW Makefile copied ok. echo Done copying files. +echo Checking version of VC++ installed... +:vscheck2019 +SET REGTREE=HKLM\SOFTWARE\WOW6432Node\Microsoft\VisualStudio +@REM i can see your house from here... or at least your VC++ folder +set VCDir="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\" +if not defined VCDir goto :vscheck2017 +if not exist %VCDir% goto :vscheck2017 +if not "%VSCMD_VER%"=="16.0.0" goto :vscheck2017 +set MSVCVERSION=2019 +set MSVCPROJ=2017 +goto :fallback + :vscheck2017 SET REGTREE=HKLM\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\SxS\VS7 @REM i can see your house from here... or at least your VC++ folder -echo Checking version of VC++ installed... -echo Checking for VC2017 Community Edition... for /f "usebackq skip=2 tokens=1-2*" %%a IN (`reg query %REGTREE% /v 15.0`) do @set VCDir="%%c" if not defined VCDir goto :vscheck2015 if not exist %VCDir% goto :vscheck2015 set MSVCVERSION=2017 +set MSVCPROJ=2017 goto :fallback :vscheck2015 @@ -86,7 +97,7 @@ SET MSVCVERSION=2015 :fallback echo Using VS%MSVCVERSION%. -set SRCPATH=%WIN32PATH%\vs%MSVCVERSION% +set SRCPATH=%WIN32PATH%\vs%MSVCPROJ% echo NetHack VS%MSVCVERSION% project files are in %SRCPATH% goto :done diff --git a/win/curses/cursstat.c b/win/curses/cursstat.c index eac7c26c2..8b81839fe 100644 --- a/win/curses/cursstat.c +++ b/win/curses/cursstat.c @@ -680,7 +680,7 @@ boolean border; int i, fld, cap_and_hunger, time_and_score, cond_count; char *text; #ifdef STATUS_HILITES - char *p, savedch = '\0'; + char *p = 0, savedch = '\0'; int coloridx = NO_COLOR, attrmask = 0; #endif /* STATUS_HILITES */ int height_needed, height, width, x = 0, y = 0; diff --git a/win/tty/termcap.c b/win/tty/termcap.c index ead39d228..ca1e08b02 100644 --- a/win/tty/termcap.c +++ b/win/tty/termcap.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 termcap.c $NHDT-Date: 1553858473 2019/03/29 11:21:13 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.29 $ */ +/* NetHack 3.6 termcap.c $NHDT-Date: 1554841008 2019/04/09 20:16:48 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.30 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Pasi Kallinen, 2018. */ /* NetHack may be freely redistributed. See license for details. */ @@ -36,18 +36,10 @@ struct tc_lcl_data tc_lcl_data = { 0, 0, 0, 0, 0, 0, 0, FALSE }; STATIC_VAR char *HO, *CL, *CE, *UP, *XD, *BC, *SO, *SE, *TI, *TE; STATIC_VAR char *VS, *VE; -STATIC_VAR char *ME; -STATIC_VAR char *MR; -#if 0 -STATIC_VAR char *MB, *MH; -STATIC_VAR char *MD; /* may already be in use below */ -#endif +STATIC_VAR char *ME, *MR, *MB, *MH, *MD; #ifdef TERMLIB boolean dynamic_HIHE = FALSE; -#ifdef TEXTCOLOR -STATIC_VAR char *MD; -#endif STATIC_VAR int SG; STATIC_OVL char PC = '\0'; STATIC_VAR char tbuf[512]; @@ -177,7 +169,7 @@ int *wid, *hgt; Sprintf(hilites[i], "\033[0;3%dm", i); } } -#endif +#endif /* TEXTCOLOR */ *wid = CO; *hgt = LI; CL = "\033[2J"; /* last thing set */ @@ -284,14 +276,12 @@ int *wid, *hgt; KS = Tgetstr("ks"); /* keypad start (special mode) */ KE = Tgetstr("ke"); /* keypad end (ordinary mode [ie, digits]) */ MR = Tgetstr("mr"); /* reverse */ -#if 0 MB = Tgetstr("mb"); /* blink */ MD = Tgetstr("md"); /* boldface */ MH = Tgetstr("mh"); /* dim */ -#endif ME = Tgetstr("me"); /* turn off all attributes */ - if (!ME || (SE == nullstr)) - ME = SE; /* default to SE value */ + if (!ME) + ME = SE ? SE : nullstr; /* default to SE value */ /* Get rid of padding numbers for nh_HI and nh_HE. Hope they * aren't really needed!!! nh_HI and nh_HE are outputted to the @@ -309,9 +299,6 @@ int *wid, *hgt; AS = Tgetstr("as"); AE = Tgetstr("ae"); nh_CD = Tgetstr("cd"); -#ifdef TEXTCOLOR - MD = Tgetstr("md"); -#endif #ifdef TEXTCOLOR #if defined(TOS) && defined(__GNUC__) if (!strcmp(term, "builtin") || !strcmp(term, "tw52") @@ -849,8 +836,7 @@ cl_eos() /* free after Robert Viduya */ #undef delay_output #undef TRUE #undef FALSE -#define m_move curses_m_move /* Some curses.h decl m_move(), not used here \ - */ +#define m_move curses_m_move /* Some curses.h decl m_move(), not used here */ #include @@ -932,6 +918,7 @@ init_hilite() c = 6; while (c--) { char *work; + scratch = tparm(setf, ti_map[c].ti_color); work = (char *) alloc(strlen(scratch) + md_len + 1); Strcpy(work, MD); @@ -1171,19 +1158,30 @@ s_atr2str(n) int n; { switch (n) { + case ATR_BLINK: case ATR_ULINE: - if (nh_US) - return nh_US; + if (n == ATR_BLINK) { + if (MB && *MB) + return MB; + } else { /* Underline */ + if (nh_US && *nh_US) + return nh_US; + } /*FALLTHRU*/ case ATR_BOLD: - case ATR_BLINK: -#if defined(TERMLIB) && defined(TEXTCOLOR) - if (MD) + if (MD && *MD) return MD; -#endif - return nh_HI; + if (nh_HI && *nh_HI) + return nh_HI; + break; case ATR_INVERSE: - return MR; + if (MR && *MR) + return MR; + break; + case ATR_DIM: + if (MH && *MH) + return MH; + break; } return nulstr; } @@ -1194,14 +1192,19 @@ int n; { switch (n) { case ATR_ULINE: - if (nh_UE) + if (nh_UE && *nh_UE) return nh_UE; /*FALLTHRU*/ case ATR_BOLD: case ATR_BLINK: - return nh_HE; + if (nh_HE && *nh_HE) + return nh_HE; + /*FALLTHRU*/ + case ATR_DIM: case ATR_INVERSE: - return ME; + if (ME && *ME) + return ME; + break; } return nulstr; } @@ -1213,18 +1216,19 @@ term_attr_fixup(msk) int msk; { /* underline is converted to bold if its start sequence isn't available */ - if ((msk & (1 << ATR_ULINE)) && !nh_US) { + if ((msk & (1 << ATR_ULINE)) && (!nh_US || !*nh_US)) { msk |= (1 << ATR_BOLD); msk &= ~(1 << ATR_ULINE); } - /* blink is converted to bold unconditionally [why?] */ - if (msk & (1 << ATR_BLINK)) { + /* blink used to be converted to bold unconditionally; now depends on MB */ + if (msk & (1 << ATR_BLINK) && (!MB || !*MB)) { msk |= (1 << ATR_BOLD); msk &= ~(1 << ATR_BLINK); } - /* dim is ignored */ - if (msk & (1 << ATR_DIM)) + /* dim is ignored if its start sequence isn't available */ + if (msk & (1 << ATR_DIM) && (!MH || !*MH)) { msk &= ~(1 << ATR_DIM); + } return msk; } @@ -1235,8 +1239,8 @@ int attr; if (attr) { const char *astr = s_atr2str(attr); - if (*astr) - xputs(s_atr2str(attr)); + if (astr && *astr) + xputs(astr); } } @@ -1247,8 +1251,8 @@ int attr; if (attr) { const char *astr = e_atr2str(attr); - if (*astr) - xputs(e_atr2str(attr)); + if (astr && *astr) + xputs(astr); } } @@ -1317,6 +1321,6 @@ int color; #endif /* TEXTCOLOR */ -#endif /* TTY_GRAPHICS */ +#endif /* TTY_GRAPHICS && !NO_TERMS */ /*termcap.c*/