Apparently, " is part of an accented character in US(international) keyboard
layout (additional character specific to the language of an origin - for
example, left and right double quotation marks). The code did not handle it
too well since it maps to 2 ASCII characters instead of one (one of them is
so called "dead" character). We can ignore the dead character as a
workaround for this problem. The patch is attached.
<Someone>.
The patch is attached. Array bounds went unchecked in
the menu page operations (, \ ~) This resulted in
memory corruption.
The actual crash depends on your luck actually. It will
only crash if heap headers are corrupted, otherwise it
can go unnoticed. When you do "Du," the list page size
is 18 (on my screen) with only 2 items in the menu. The
program assigned count of -1 to 18 items in the array
of 2. Ka-boom. I put bounds checking code in several
places. The window size does not have anything to do
with it.
<Someone>.
- B1026 [confirmed] win32: setting multiple options
- bugfix: menu: set focus to the item and make it visible when it is
selected with accelerator key.
- increased menu font size by 1 point
- layout the main window on WM_MOVE message so the menu windows stays with
the main window (it was not changing the location before)
- got rid of WinCE specific define (ARM)
- handle all keyboard input via WM_KEYDOWN instead WM_CHAR
Files affected: config1.h mhmsg.h mhmain.c mhmenu.c mswproc.c resource.h
winhack.rc
Notes:
That overrides Yitzhak's mhmenu patch - I don't like the menu prompt on the
title bar since it can be null and in most cases it is. It looks much better
as a header column in the list and is displayed only if present.
I moved ARM-related (processor) defines to wceconf.h You cannot undef ARM
before windows.h is processed - ARM version won't compile.
.rc files are generated by IDE - you cannot edit them directly or your
changes will be gone next time the file is saved. If anything needs to be
added to winhack.rc file manually it has to be marked by the following
defines or via menu option View->Resource Includes:
#define APSTUDIO_READONLY_SYMBOLS
...
#undef APSTUDIO_READONLY_SYMBOLS
[...]
One of them deals with the patch you just sent, that changes the name but
does so more extensively, particularly, also in the Save dialog in
mhmain.c. Another is one of the changes to winhack.rc to make it compile
under Borland.
This also (beyond patches I sent): fixes no Options prompt bug, and fixes
up the menu bar (which I broke in one of my patches).
Tested on msc/bcc tty/win makefiles and vc ide.
B2001 <Someone> [reported] win32?: giant ant is black square
Where is the open doorway with the giant ant standing in it?
There used to be a closed door there, if I recall correctly.
[now there is just a black square]
I'm saving the level files at this point, and I will be saving
the game after I did that, in case you're interested in any save
files.
- added counting to the menu window. I changed the way it works in the TTY
port though ("you hear the rumble of distant thunder..." :) The count
applies to the currently selected item instead of being aplied to the item
to be selected (in other words a12 instead of 12a). It works better this
way in the graphical port since there is a notion of current menu item.
I also notes that the count is ignored for PICK_ONE menu - is this by
design?
- somebode mention that text is not scrollable by default - this is fixed.
- fixed player selection dialog to use initXXXX options
-----------------------
B1028 [reported] win32: popup window is too short
The text in the popup window's top line "What do you want to
call the ..." is cut off. Could the window be bigger, so you
can read the entire line?
Fixed.
---------------------
B1027 [reported] win32: select via traditional class char
In a shop (and perhaps elsewhere), I can autoselect a class of
items to drop: a for all types, b for coins, c for weapons, ...,
A for every item, B for blessed items, ... I like the new
possibilities, but I would like to be able to use the old way of
using ! for potions, ) for weapons, etc., as well.
Fixed.
---------------------
B1026 [reported] win32: setting multiple options
I want to set packorder and pickup_types. The first comes up
first, and I type in the order. Then comes the second, without
any hint what is asked of me. A little explanation here would
be appropriate, like "pick up what things automatically?" or
somesuch. When more than one option is set where extra input
is required, some explanation is useful.
Looking into. Apparently something end_menu() call is ignored by nethackw.
---------------------
B1025 [reported] win32: menu navigation
I press O. Now, when I press "a" to turn on "autodig", not only
is the mark set at "a", but there also appears a dotted
rectangle around option "A" (capitalized). Shouldn't this
rectangle also appear at "a"? Pressing "a" repeatedly toggles
the checkmark, but the rectangle switches between "A" and "a".
My CAPS LOCK is not set. The same goes for B, C, D, ... N,
by the way. Pressing "A" works the other way around: the first
press checks "A" and "rectangles" "a", the next unchecks "A"
and rectangles "A" as well.
Fixed.
---------------------
B1024 [reported] win32: no text in final window
After I clicked away the last screen with information
(challenges, I believe it was), I got an empty text screen, as
big as my screen, without any content. It looked like the text
screens that appear on the right, only it was larger and had
only a large OK button over the full width of the window, and
no cancel button. Why this window?
Fixed. The program did not set window text for RIP window.
---------------------
B1010 [known issue] win32: cosmetic
When I get my list of spells, the columns aren't properly
aligned: if the spell name is longer, the rest of the line
shifts right.
Fixed. Fixed-pitch font is used for menu window.
---------------------
B1004 [reported] win32: numeric keyboard Del/.-key
The Del/.-key on my numeric keyboard doesn't make me rest a turn
Fixed. Added rest on Del.
---------------------
B1003 [reported] win32: focus
When the window has the focus, the window bar isn't highlighted.
This is by design. Menu and text widnows are popup and the main
window is disabled when they are up.
These changes clean up build warnings and allow the resulting "NetHack"
Application icons to be dragged around freely in the Finder, as is expected
for Mac apps.
because there was an extraneous argv[1] that was
a repeat of the module name, but in quotation
marks. The processing in pcmain stops on the first
argument that doesn't start with '-' so my other
arguments got ignored.
argv[0] 0x00b40800 "C:\test\binary\nethackw.exe"
argv[1] 0x00b40878 ""C:\test\binary\nethackw.exe""
argv[2] 0x00b408f0 "-uwizard"
argv[3] 0x00b40938 "-D"
Fixes:
- menu shortcuts implemented
- most windows close on space (except for menus with
PICK_ANY style)
- "hilite_pet" option is implemented
- map scrolling is improved somewhat (it now scrolls if
the char is within 5 spaces from the edge of the map -
configurable by #define CLIPAROUND_MARGIN)
- added 3 winhack-specific options:
win32_map_mode:[tiles|ascii4x6|ascii6x8|ascii8x8
|ascii16x8|ascii7x12|ascii8x12|ascii15x12
|ascii12x16|ascii10x18|fit_to_screen]=20
win32_align_status:[left|top|right|bottom]
win32_align_message:[left|top|right|bottom]
Note: aligning status window to left or right edge of the screen does
not look good.
This was caused by character set incompatibility between message and map
windows. Apparently, Nethack is using IBM character set (CP 437) but fonts
were create for Windows ANSI codepage. I fixed most of it by changing
character set of the fonts except for the Rogue level. I had to make changes
to src/drawing.c for Rogue level since most of Windows fonts are not capable
of displaying control characters (char. code<0x20)
And of course, disabling IBMGraphics option fixes it all.
> There has been some feedback from others on the development team
> around the tiles:
> "The Rogue Level should ideally be text-mode. It freaks out the
> tiled-version-only players when they first get there, but that
> makes it a good reminder of NetHack's roots."
>
> The other supported tiled ports work this way too. They display
> regular ASCII characters on the Rogue level, just like Rogue did.
-Adds Rogue-level ascii support.
-Also removes unicode support.
Some other build script tweaks as well.
M. Allison
> marked as "placeholder." It is the tile for Neferet the Green,
> a green-colored wizard for the updated Wizard's quest.
It's not great, but the best I can do without her looking like some
sort of Zombie (most of the tiles try to follow rules - dark-green=zombie,
green=gnome, blue=dwarf, etc. in order that the player can recognize the
patterns, rather than concentrating too much on the details).