Commit Graph
19084 Commits
Author SHA1 Message Date
Ray Chason 12560f9b13 Add return value where needed. 2026-07-05 22:26:42 -04:00
Ray Chason af79ad629c MS-DOS: some optimizations for tile handling
* In both the 16 color and the VESA mode, the tileset image is loaded
      and split into individual tiles; the tiles are then processed into a
      form that is compatible with the video mode in use. For 16 color mode,
      a tile is processed each time it is displayed, leading to slow
      redrawing. For VESA mode, each tile is processed at startup, leading
      to long startup times. Both modes are changed so that the tile is
      processed once, when it is first displayed, and the result is cached.

    * Use memcpy when splitting the image into tiles.

    * Only load the tileset once. In 16 color mode, for reasons I do not
      understand, the gr_init function is called twice, leading to delay
      in startup. This does not happen in VESA mode.
2026-07-04 13:43:23 -04:00
nhmall 7c418cff6a follow-up: a compiler warning fix 2026-07-03 09:39:02 -04:00
nhmall ece0c3ce3c fixes5-0-1.txt entries for three pull requests 2026-07-03 08:45:04 -04:00
nhmall d912ab5e6a Merge branch 'start-time' of https://github.com/chasonr/NetHack into NetHack-5.0 2026-07-03 08:36:12 -04:00
nhmall 454ab83a36 Merge branch 'msdos-font-null-ptr' of https://github.com/chasonr/NetHack into NetHack-5.0 2026-07-03 08:35:32 -04:00
nhmall 9abb13dfcf Merge branch 'msdos-fonts' of https://github.com/chasonr/NetHack into NetHack-5.0 2026-07-03 08:34:53 -04:00
nhmall edb99dcf8f fixes5-0-1.txt catch-up; also fix some whitespace 2026-07-03 08:30:40 -04:00
Ray Chason b3fd7330ef Fix operator precedence 2026-07-03 00:24:17 -04:00
Ray Chason 1de1b531b3 Some optimizations of the glyph lookup
* src/glyphs.c: Don't produce names for swallow glyphs that can never
  appear. This speeds up the building of the glyph index in
  populate_glyphname_hash_indices.

* src/symbols.c: Build a sorted index for loadsyms so that it can be
  searched with bsearch.

Benchmarking results, using the MS-DOS port on an emulated 386SX at
16 MHz; times are as measured with clock() from the entry to main()
to the appearance of the "Who are you?" prompt:

* Unmodified:  48.5 seconds
* With the loadsyms index: 40.4 seconds
* With impossible swallow glyphs left unnamed: 34.5 seconds

These changes should also be helpful for the Amiga and Atari ST ports.
2026-07-02 23:08:42 -04:00
Ray Chason ae8982fe3e MS-DOS: Check font pointer for null
The 16 color mode loads the font specified in font_map, and accepts it
only if its size is 8 by 16 pixels. This change avoids a null
dereference if the font is not found.
2026-07-02 21:34:35 -04:00
Ray Chason 3384619431 MS-DOS: Add Extended2 symbols to the bundled fonts
This change adds U+2299, U+2601 and U+2980 to the bundled fonts, so
that all symbols specified in the Extended2 symbol set are available.

Also, a few more directives are added to the files, so that FontForge
can load them and display their contents.
2026-07-02 21:22:30 -04:00
nhmall 5e80fd3b93 wand of stasis when off level
Account for the time spent on other levels for
wand of stasis

Resolves #1608
2026-07-02 17:48:29 -04:00
nhmall aaf601ffc8 follow-up bit 2026-06-28 17:49:00 -04:00
nhmall bfa924bb0e replace hardcoded number with correct enum value 2026-06-28 17:46:17 -04:00
nhmall c918878299 follow-up: field name typo 2026-06-27 11:45:36 -04:00
nhmall 90aaeb53cd follow-up: zero out puzzling_criteria 2026-06-27 11:41:54 -04:00
nhmall ac3d71a82a give player an inkling of why corpses didn't stack
When corpses haven't stacked, and there is no player-discernable
reason why, provide some additional information in some cases,
but only when it is required.

Gender variance is the supported case in this commit.

Related to GitHub issue #1607.

This commit doesn't change the underlying mechanics to allow
the corpses to stack, but it does help the player understand
why that's the case in this instance.
2026-06-27 11:18:44 -04:00
nhmall 6fee8a4e78 yet another warning bit
In file included from ../include/hack.h:34,
                 from sp_lev.c:14:
In function ‘create_monster’,
    inlined from ‘lspo_monster’ at sp_lev.c:3386:5:
../include/rm.h:528:32: warning: array subscript -1 is below array bounds of ‘struct monst *[80][21]’ [-Warray-bounds=]
  528 |         if (!svl.level.monsters[x][y])                     \
      |              ~~~~~~~~~~~~~~~~~~^~~
sp_lev.c:2045:25: note: in expansion of macro ‘remove_monster’
 2045 |                         remove_monster(x, y);
      |                         ^~~~~~~~~~~~~~
../include/rm.h: In function ‘lspo_monster’:
../include/rm.h:476:19: note: while referencing ‘monsters’
  476 |     struct monst *monsters[COLNO][ROWNO];
      |                   ^~~~~~~~
In function ‘create_monster’,
    inlined from ‘lspo_monster’ at sp_lev.c:3386:5:
../include/rm.h:530:27: warning: array subscript -1 is below array bounds of ‘struct monst *[80][21]’ [-Warray-bounds=]
  530 |         svl.level.monsters[x][y] = (struct monst *) 0;     \
      |         ~~~~~~~~~~~~~~~~~~^~~
sp_lev.c:2045:25: note: in expansion of macro ‘remove_monster’
 2045 |                         remove_monster(x, y);
      |                         ^~~~~~~~~~~~~~
../include/rm.h: In function ‘lspo_monster’:
../include/rm.h:476:19: note: while referencing ‘monsters’
  476 |     struct monst *monsters[COLNO][ROWNO];
      |                   ^~~~~~~~
2026-06-26 15:21:19 -04:00
nhmall 2b2f949484 address another warning
sounds.c: In function ‘domonnoise’:
sounds.c:818:40: warning: array subscript [0, 1] is outside array bounds of ‘const char * const[2]’ [-Warray-bounds=]
  818 |                     verbl_msg = vampmsg[vampindex];
      |                                 ~~~~~~~^~~~~~~~~~~
sounds.c:786:38: note: while referencing ‘vampmsg’
  786 |             static const char *const vampmsg[] = {
      |                                      ^~~~~~~
2026-06-26 15:11:42 -04:00
nhmall c40bf4658d more warning cleanup
The use of strncat and eos(buf) together was odd anyway.
2026-06-26 14:56:26 -04:00
nhmall e3407a923f address some compiler complaints 2026-06-26 12:30:36 -04:00
nhw_cron 5911ee19d0 This is cron-daily v1-May-7-2026. 005guidebook updated: doc/Guidebook.txt 2026-06-23 21:36:13 -04:00
Kevin Nowaczyk e381605bba Remove wintype.h include from hack.h
Removed unnecessary second include for wintype.h
2026-06-23 18:18:59 -07:00
nhkeni 2c58864b1c CRASHREPORTURL should have been updated at 5.0.0 release 2026-06-23 19:14:54 -04:00
nhmall e6b5338441 some windows build updates 2026-06-21 14:18:00 -04:00
nhkeni 1fa60f7536 Add a new T-shift slogan. 2026-06-21 14:10:51 -04:00
nhmall 186d9524de missed a line in this file 2026-06-20 20:02:31 -04:00
nhkeni 7c694ad785 Remove deprecated option --version:paste
This should have been deleted before the 5.0.0 release.
2026-06-20 19:43:26 -04:00
nhmall 6808e87869 yet more 3.7 cleanup 2026-06-20 18:55:28 -04:00
nhmall 6399e0070b dat/*.lua 3.7 vestiges 2026-06-20 18:35:38 -04:00
nhmall 198ac655e5 more 3.7 vestiges
A little later than this probably should have been committed.
2026-06-20 18:26:43 -04:00
nhkeni f5724ff9e6 fixes entry for my previous commit 2026-06-20 17:57:48 -04:00
nhkeni 39434c9a2c Merge branch 'NetHack-5.0' of https://rodney.nethack.org:20040/git/NHsource into NetHack-5.0 2026-06-20 17:50:30 -04:00
G. Branden Robinson d7ce2410b0 fixes5-0-1.txt update 2026-06-20 15:31:53 -04:00
nhmall f5f87c7ee9 missed version bit 2026-06-20 11:18:14 -04:00
nhkeni 11dc617483 Merge branch 'NetHack-5.0' of https://rodney.nethack.org:20040/git/NHsource into NetHack-5.0 2026-06-19 20:59:55 -04:00
nhkeni 10d87c4b9d nhgitset: Deprecate PRE and POST hooks.
nhgitset version 6
prepare for future phases to get rid of those hooks
fix some minor bugs
2026-06-19 20:44:46 -04:00
Patric Mueller bb040cc2e1 Merge branch 'ars3niy-curses256' into NetHack-5.0
Closes #1561
2026-06-19 16:36:53 +02:00
Doktor L 08ac68b754 Use 256 colours in curses window port
Only glyphs that are customised via config can have colours different
from the basic 16. For such glyphs, when curses supports 256 colours,
use them.
2026-06-19 16:36:27 +02:00
Doktor L 19c87585fa Create curses colour pairs for 256 colours
Keep only 8 background colours but if curses supports 256 colours and
256*8 colours pairs, create colours pairs for 256 foregrounds rather
than just 16.
2026-06-19 16:36:27 +02:00
Doktor L 7036f902d2 Pass base-256 colour index to curses_putch
And to its inner function write_char
2026-06-19 16:36:27 +02:00
Doktor L f3d292e111 Combine three arguments of curses_putch into one
It will need another parameter for 256-colour support. To avoid having
too many arguments, put glyph colour, background colour and attributes
into a struct and, since to curses library all of that is attributes
that are handled by same function, call the struct "gryph attributes".

curses_putch was also declared in two different headers, remove one of
those declarations.
2026-06-19 16:36:27 +02:00
Doktor L 24adb1c592 curses: use existing background parameter for pile
The blue background colour for piles was implemented by changing glyph
colour to curses colour pair with the desired background, and then
passed to curses_putch which takes character and background colour and
makes curses colour pair out of them once again.

Pass blue background to curses_putch instead and let it create curses
colour pair just once.
2026-06-19 16:36:27 +02:00
nhmall 43ae611d64 fixes5-0-1.txt entries following pull request 2026-06-19 10:20:50 -04:00
nhmall 33e2f54e7c Merge branch 'correct-regions-with-ball-travel' of https://github.com/copperwater/NetHack into NetHack-5.0 2026-06-19 10:17:40 -04:00
nhmall 04963ecf81 follow-up: add a general catch for "says" 2026-06-19 10:08:42 -04:00
nhmall 8705d12046 Merge branch 'shopkeeper-voice-respects-deaf' of https://github.com/copperwater/NetHack into NetHack-5.0 2026-06-19 10:07:11 -04:00
copperwater 7a23470c33 Fix: thrown ball travel did not check for regions
This is an issue that we discovered in TNNT last year when we added a
custom region with effects that trigger upon entry: it was possible to
bypass those effects by entering the region via a thrown iron ball.

This can be demonstrated by creating a poison gas cloud and then
dragging oneself inside the cloud behind a thrown ball: you land in the
cloud and are surrounded by poisonous gas, but are unharmed by it.

This commit fixes the iron ball code to call in_out_region when
appropriate, which handles the side effects of entering and exiting
regions in addition to preventing travel into or out of a hypothetical
region that blocks entry or exit.
2026-06-19 09:35:23 -04:00
copperwater b54c38c65b Fix: a shopkeeper msg was printed even when deaf
The message in question is '[shopkeeper] says "You be careful with my
[item]!"' when you wield a shop-owned item, but it was being printed
even when the hero is deaf.

Following other examples of shopkeeper dialogue, the correct thing to do
here is not to suppress the message if deaf but instead provide some
nonverbal feedback, so that is what I did.
2026-06-19 09:12:57 -04:00